欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【GPU高性能编程CUDA实战】第3章_CUDA_C简介

程序员文章站 2022-07-12 20:10:01
...

第三章 CUDA C简介


代码地址:
ZhangXinNan/CUDA-by-Example-source-code-for-the-book-s-examples-

3.2 第一个程序

3.2.1 hello world

代码:hello_world.cu

  • 主机(host):CPU及系统的内存称为主机。
  • 设备(device):GPU及其内存称为设备。
  • 核函数(kernel):GPU上运行的函数称为核函数。

3.2.2 核函数调用

代码:simple_kernel.cu

__global__ :告诉编译器,函数应该编译为在设备而不是在主机上运行。

3.2.3 传递参数

代码:simple_kernel_params.cu

  • cudaMolloc() CUDA运行时在设备上分配内存
  • cudaFree() 释放cudaMolloc()分配的内存
  • cudaMemcpy() 访问设备上的内存

【注】
(1)不能为主机代码中使用cudaMalloc()分配的指针进行内存读写操作。
(2)主机指针只能访问主机代码中的内存,设备指针只能访问设备代码中的内存。

3.3 查询设备

代码:enum_gpu.cu

  • cudaGetDeviceCount() 获得CUDA设备的数量。
  • cudaDeviceProp 结构体,设备的相关属性。
  • cudaGetDeviceProperties() 查询设备的相关信息

输出:

   --- General Information for device 0 ---
Name:  GeForce GTX 1070
Compute capability:  6.1
Clock rate:  1695000
Device copy overlap:  Enabled
Kernel execution timeout :  Enabled
   --- Memory Information for device 0 ---
Total global mem:  0
Total constant Mem:  65536
Max mem pitch:  2147483647
Texture Alignment:  512
   --- MP Information for device 0 ---
Multiprocessor count:  16
Shared mem per mp:  49152
Registers per mp:  65536
Threads in warp:  32
Max threads per block:  1024
Max thread dimensions:  (1024, 1024, 64)
Max grid dimensions:  (2147483647, 65535, 65535)

3.4 设备属性的使用

代码:set_gpu.cu
输出:

ID of current CUDA device:  0
ID of CUDA device closest to revision 1.3:  0
  • cudaChooseDevice() 选择满足条件的某个设备
  • cudaSetDevice() 所有的设备操作执行在这个设备上。
相关标签: CUDA