__global__ :主机调用,声明设备函数,在设备上(gpu)执行
__device__ :设备上执行并从设备上调用
__host__:其他主机调用的主机函数
cudaMalloc,设备上分配内存
cudaMemcpy。别存复制到主机或设备上
cudaFree,释放内存
cudaGetLastError(); 可以获取启动gpu内核错误
cudaDeviceSynchronize(),等待所有核完成工作,返回任何中间的错误,注意这里很重要的一点是这里会等待device完成操作,因为启动内核等操作是异步操作,执行完内核启动后主动权交给cpu,不加这句话,控制台程序会直接结束,看不到异步处理结果。
cudaThreadSynchronize(); 这里也是等待线程结束
cudaStreamSynchronize()和上面的两个函数类似,这个函数带有一个参数,cuda流ID,它只阻塞那些cuda流ID等于参数中指定ID的那些cuda例程,对于那些流ID不等的例程,还是异步执行的。
cudaGetDeviceCount(&devicecount) 表示 获取所有device数量
cudaSetDevice(index) 表示选择device
cudaError_t cudaStatus; cuda的错误类型
cudaDeviceProp device_Property; 这里可以看到很多device属性信息,例如显存 频率等等
利用:cudaGetDeviceProperties(&device_Property, idindex);