CUDA C关键字
__global__
:定义函数为设备(device)函数,在显卡上执行并且只能由主机(host)调用;
__device__
:定义函数为设备函数,在显卡上执行并且只能由设备函数调用;
__host__
:定义函数为主机函数,在主机上执行并且只能由主机函数调用;
注:函数默认定义为主机函数;定义函数时,__device__
、__host__
可同时使用,此时函数生成两个复本,一个在显卡上执行,另一个在主机上执行。
CUDA API
cudaMalloc
:与Malloc
相似,用于动态显存分配,语法:
cudaMalloc(void **devPtr, size_t size);
cudaMemcpy
:与Memcpy
相似,将一块内存中的值复制到主机内存或显存中,语法:
cudaMemcpy(void *dst, const void *src, size_t count, cudaMemcpyKind kind);
指针dst
、src
指向主机或显卡内存地址;kind
表示复制类型,包括主机到设备、主机到主机、设备到主机、设备到设备。
注意:kind
要与dst
、src
一致。
cudaFree
:与free
相似,用于显存释放,语法:
cudaFree(void **devPtr);
cudaDeviceSynchronize
:核调用(kernel launch)采用异步方式,cudaDeviceSynchronize()
阻塞
语法:
cudaDeviceSynchronize(void);
cudaGetDeviceCount
语法:
cudaGetDeviceCount(int *count);