GPU CUDA相关函数

2022-12-05 01:10:53 浏览数 (1)

gpu信息获取

cuda api:

cudaGetDeviceCount(int device_count): 获取gpu设备块数

cudaSetDevice(int device_id):设置gpu_id

cudaMalloc(), cudaStreamCreate

stream

在Stream的帮助下,CUDA程序可以有效地将内存读取和数值运算并行,从而提升数据的吞吐量。

cuda 并行性表现主要在两个层面上:

Kernel level

Grid level

cuda stream指一堆异步的cuda操作, 按照host代码调用顺序在device上执行。

所有的cuda操作(kernel执行和数据传输)都会显式或隐式运行于stream上

  • 隐式声明和显式声明

异步且基于stream的kernel执行和数据传输能够实现以下几种类型的并行:

· Host运算操作和device运算操作并行

· Host运算操作和host到device的数据传输并行

· Host到device的数据传输和device运算操作并行

· Device内的运算并行

所有stream的执行都是异步的, 必要的时候需要做同步操作

cudaStreamSynchronize

//基本函数

cudaStream_t stream//定义流

cudaStreamCreate(cudaStream_t * s)//创建流

cudaStreamDestroy(cudaStream_t s)//销毁流

//显性同步

cudaStreamSynchronize()//同步单个流:等待该流上的命令都完成

cudaDeviceSynchronize()//同步所有流同步:等待整个设备上流都完成

cudaStreamWaitEvent()//通过某个事件:等待某个事件结束后执行该流上的命令

cudaStreamQuery()//查询一个流任务是否完成

//回调

cudaStreamAddCallback()//在任何点插入回调函数

//优先级

cudaStreamCreateWithPriority()

cudaDeviceGetStreamPriorityRange()

以上代码定义了两个流,每个流有三个命令,见注释

同一个流内顺序执行,流与流间异步执行

0 人点赞