CUDA学习日记9

来源:互联网 发布:淘宝实木家具骗局真缘 编辑:程序博客网 时间:2024/06/05 22:59

1. CPU/GPU并发性

解析:CPU/GPU并发性指CPU在已经发送一些请求给GPU后能够继续处理的能力。其实,CPU/GPU并发性最重要

用处就是隐藏来自GPU请求任务的开销。


2. cudaError_t cudaThreadSynchronize(void);

解析:阻止直到设备上所有请求任务执行完毕。cudaThreadSynchronize()返回一个错误,如果其中一个任务失败。


3. cudaError_t cudaThreadExit(void);

解析:清除主机调用的线程中所有runtime相关的资源。任何后来的API将重新初始化runtime。


4. cudaError_t cudaStreamCreate(cudaStream_t* stream);

解析:创建一个流。


5. cudaError_t cudaStreamQuery(cudaStream_t stream);

解析:返回cudasuccess,如果所有流中的操作完成。返回cudaErrorNotReady,如果不是。


6. cudaError_t cudaStreamSyncronize(cudaStream_t stream);

解析:阻止直到设备上完成流中的所有操作。


7. cudaError_t cudaStreamDestroy(cudaStream_t stream);

解析:销毁一个流。


8. cudaError_t cudaEventCreate(cudaEvent_t* event);

解析:创建一个事件。


9. cudaError_t cudaEventRecord(cudaEvent_t event, CUstream stream);

解析:记录一个事件。如果stream是非零的,当流中所有的操作完毕,事件被记录;否则,当CUDA context中所有

的操作完毕,事件被记录。由于这个操作是异步的,必须使用cudaEventQuery和/或cudaEventSyncronize 来决定何

时事件被真的记录了。


10. cudaError_t cudaEventQuery(cudaEvent_t event);

解析:返回cudaSuccess,如果事件被真的记录了。返回cudaErrorNotReady,如果不是。


11. cudaError_t cudaEventSyncronize(cudaEvent_t event);

解析:阻止直到事件被真的记录了。如果cudaEventRecord()在这个事件中没有被调用,函数返回

cudaErrorInvalidValue。


12. cudaError_t cudaEventDestroy(cudaEvent_t event);

解析:销毁一个事件。


13. cudaError_t cudaEventElapsedTime(float* time, cudaEvent_t start, cudaEvent_t end);

解析:计算两个事件之间花费的时间(millisecond)。如果事件未被记录,函数返回cudaErrorInvalidValue。


14. cudaError_t cudaGetDeviceCount(int* count);

解析:返回计算兼容性大于等于1.0的设备数量到指针*count。


15. cudaError_t cudaSetDevice(int dev);

解析:记录dev作为设备在哪个活动的主机线程中执行设备代码。


16. cudaError_t cudaGetDevice(int* dev);

解析:返回设备在哪个活动的主机线程中执行设备代码到指针*dev。


17. cudaError_t cudaGetDeviceProperties(struct cudaDeviceProp* prop, int dev);

解析:返回设备dev的属性到指针*prop。


18. cudaError_t cudaChooseDevice(int* dev, const struct cudaDeviceProp* prop);

解析:返回设备的哪些属性最匹配*prop到指针*dev。


19. CUDA Runtime API

解析:

(1)低级API(cuda_runtime_api.h)是C接口类型的,不需要nvcc编译。

(2) 高级API(cuda_runtime.h )是C++接口类型的,基于低级API之上的,可直接使用C++代码,并被任何的

C++编译器编译。高级API还有一些CUDA特定的包,它们需要nvcc编译。

说明:CUDA Runtime API和CUDA Driver API提供了设备管理,线程管理,流管理,事件管理,内存管理,纹理引

用管理,执行控制,OpenGL互操作性,Direct3D互操作性,错误处理等函数。


参考文献:

[1] NVIDIA CUDA编程指南

1 0