cuda基础

CUDA项目配置

(1)打开vs,创建一个空win32程序,即cuda_test项目。

(2)选择cuda_test,点击右键–>生成依赖项–>生成自定义,选择CUDA10.0。

(3)右键源文件文件夹->添加->新建项->选择CUDA C/C++File,取名cuda_main。

(4)点击cuda_main.cu的属性,在配置属性–>常规–>项类型–>选择“CUDA C/C++”。

(5)包含目录配置:

  右键点击项目属性–>属性–>配置属性–>VC++目录–>包含目录

  添加包含目录:$(CUDA_PATH)\include

(6)库目录配置

  VC++目录–>库目录

  添加库目录:$(CUDA_PATH)\lib\x64

(7)依赖项

扫描二维码关注公众号,回复: 7343874 查看本文章

  配置属性–>链接器–>输入–>附加依赖项

  添加库文件:cublas.lib;cuda.lib;cudadevrt.lib;cudart.lib;cudart_static.lib;OpenCL.lib

将CPU及其系统的内存称为主机host,将GPU及其内存称为设备device.

CUDA C需要使用某种语法将一个函数标记为“设备代码”,CADA C提供了与C在语言级别上的集成,使得设备调用看起来非常像主机函数调用。尖括号表示要将一些参数传递给运行时系统,告诉运行时如何启动设备代码。

CUDA编程模式

   1. 定义需要在 device 端执行的核函数。( 函数声明前加 _golbal_ 关键字 )

       2. 在显存中为待运算的数据以及需要存放结果的变量开辟显存空间。( cudaMalloc 函数实现 )

       3. 将待运算的数据传输进显存。( cudaMemcpy,cublasSetVector 等函数实现 )

       4. 调用 device 端函数,同时要将需要为 device 端函数创建的块数线程数等参数传递进 <<<>>>。( 注: <<<>>>下方编译器可能显示语法错误,不用管 )

       5. 从显存中获取结果变量。( cudaMemcpy,cublasGetVector 等函数实现 )

       6. 释放申请的显存空间。( cudaFree 实现 )

函数声明

1. __device__

    表明此函数只能在 GPU 中被调用,在 GPU 中执行。这类函数只能被 __global__ 类型函数或 __device__ 类型函数调用。

    2. __global__

    表明此函数在 CPU 上调用,在 GPU 中执行。这也是以后会常提到的 "内核函数",有时为了便于理解也称 "device" 端函数。

    3. __host__

    表明此函数在 CPU 上调用和执行,这也是默认情况。
  内核函数配置运算符 <<<>>> - 这个运算符在调用内核函数的时候使用,一般情况下传递进三个参数:

    1. 块数

    2. 线程数

    3. 共享内存大小 (此参数默认为0 )

  内核函数中的几个系统变量 - 这几个变量可以在内核函数中使用,从而控制块与线程的工作:

    1. gridDim:块数

    2. blockDim:块中线程数

    3. blockIdx:块编号 (0 - gridDim-1)

    4. threadIdx:线程编号 (0 - blockDim-1)

猜你喜欢

转载自www.cnblogs.com/larry-xia/p/11574203.html