CUDA编程的基础步骤学习--------------DAY-1

[关于CUDA编程的学习——Day-1]

记录了楼主本人在CUDA学习中的一些感受,如果有任何问题请指正

  1. CUDA编程的模式
    总体上学习完感觉CUDA编程和C++编程类似。不过对于CPU和GPU的变量使用部分有所不同。

  2. CUDA编程的基础步骤
    首先必然是头文件添加

    #include <cuda_runtime_api.h>
    #include <device_launch_parameters.h>
    #include <device_functions.h>
    

可以简单的分成4步

  1. 定义变量
const int num = 16;

float *InputGpu;//GPU中计算用到的变量
float Input[num];//模拟CPU中现在所使用的变量
for (int i = 0; i < num; i++) 
{
	Input[i] = i;
}
  1. 将变量导入GPU中
//将InputGPU存到显存中,为后边计算做准备
cudaMalloc((void**)&InputGpu, num*sizeof(float));
  1. 将所要计算的变量赋值给GPU
//将所需计算的Input赋值给已经拷贝到GPU中的InputGPU
cudaMemcpy(InputGpu, Input, num * sizeof(float), cudaMemcpyHostToDevice);
  1. 设计一个计算用的核函数
//这里是设计了一个赋值的核函数,会将InputGpu其中所有的数值赋值为1
//因为CUDA其实是每个线程负责一个数的计算所以‘threadIdx.x’是用来获取当前计算的数值的位置
__global__ void kernel(float *InputGpu, int num)
{
	int Local = threadIdx.x;
	if(Local<num)
		InputGpu[Local] = 1;
}
  1. 在主函数中调用核函数进行计算
//启用1个block,num个thread.
kernel<< <1, num >> > (InputGpu,  num);
  1. 计算结束,需要将结果从GPU中拷贝回CPU中
float Output[num];
cudaMemcpy(Output, InputGpu, num * sizeof(float), cudaMemcpyDeviceToHost);
  1. 这样一个CUDA计算的基础步骤就是完成了,最后输出来看一下结果
for (int i = 0; i < num; i++)
{
	printf("%.0f ", Output[i]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值