cuBLAS中的Create()和Destroy()
2.4.1. cublasCreate()
cublasStatus_t
cublasCreate(cublasHandle_t *handle)
此函数初始化 cuBLAS 库并创建一个指向包含 cuBLAS 库上下文的不透明结构的句柄。 它在主机和设备上分配硬件资源,并且必须在进行任何其他 cuBLAS 库调用之前调用。 cuBLAS 库上下文与当前的 CUDA 设备相关联。 要在多个设备上使用该库,需要为每个设备创建一个 cuBLAS 句柄。 此外,对于给定的设备,可以创建具有不同配置的多个 cuBLAS 手柄。 因为 cublasCreate()
分配了一些内部资源,调用 cublasDestroy()
释放这些资源会隐式调用 cublasDeviceSynchronize()
,建议尽量减少 cublasCreate()/cublasDestroy()
的出现次数。 对于从不同线程使用相同设备的多线程应用程序,推荐的编程模型是为每个线程创建一个 cuBLAS 句柄,并在线程的整个生命周期中使用该 cuBLAS 句柄。
Return Value | Meaning |
---|---|
CUBLAS_STATUS_SUCCESS | 初始化成功 |
CUBLAS_STATUS_NOT_INITIALIZED | CUDA™ 运行时初始化失败 |
CUBLAS_STATUS_ALLOC_FAILED | 资源无法分配 |
CUBLAS_STATUS_INVALID_VALUE | handle == NULL |
2.4.2. cublasDestroy()
cublasStatus_t
cublasDestroy(cublasHandle_t handle)
此函数释放 cuBLAS 库使用的硬件资源。 这个函数通常是最后一次调用 cuBLAS 库的特定句柄。 因为 cublasCreate()
分配了一些内部资源,调用 cublasDestroy()
释放这些资源会隐式调用 cublasDeviceSynchronize()
,建议尽量减少 cublasCreate()/cublasDestroy()
的出现次数。
Return Value | Meaning |
---|---|
CUBLAS_STATUS_SUCCESS | 关闭成功 |
CUBLAS_STATUS_NOT_INITIALIZED | 库未初始化 |