cuda Toolkit 10.2 + VS2015 C++ cuda GPU运算步骤

cuda Toolkit 10.2 + VS2015 C++ cuda

GPU运算步骤

 

包含头文件

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

 

1. GPU 内存申请

  • cudaError_t cudaStatus = cudaMalloc(void **p, size_t s)

2. 内存拷贝 host memory -> Gpu Buffer

  • cudaStatus = cudaMemcpy(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind)  //cudaMemcpyHostToDevice

    enum __evice_builtin__ cudaMemcpyKind
        {
            cudaMemcpyHostToHost          =   0,      /**< Host   -> Host */
            cudaMemcpyHostToDevice        =   1,      /**< Host   -> Device */
            cudaMemcpyDeviceToHost        =   2,      /**< Device -> Host */
            cudaMemcpyDeviceToDevice      =   3,      /**< Device -> Device */
            cudaMemcpyDefault             =   4       /**< Direction of the transfer is inferred from the pointer values. Requires unified virtual addressing */
        };

     

3. 调用 kernel 方法

  • addKernel <<<1, size >>>(dev_c, dev_a, dev_b);

  • __global__ void addKernel(int *c, const int *a, const int *b)
    {
    	int i = threadIdx.x + blockIdx.x;
    	printf("blockIdx.x %d threadIdx.x %d \n", blockIdx.x, threadIdx.x);
    	printf("i == %d \n", i);
    
    
    	c[i] = a[i] + b[i];
    }

     

4. 内存拷贝 Gpu Buffer->Host memory

  • cudaMemcpy(void *dst, const void *src, size_t count, enum cudaMemcpyKind kind);  // cudaMemcpyDeviceToHost

5. 设备重置

  • cudaStatus = cudaDeviceReset();

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值