我正在使用最新版本的CUDA 5.5,新的CUBLAS具有状态,每个功能都需要cublasHandle_t
,例如
cublasHandle_t handle;
cublasCreate_v2(&handle);
cublasDgemm_v2(handle, A_trans, B_trans, m, n, k, &alpha, d_A, lda, d_B, ldb, &beta, d_C, ldc);
cublasDestroy_v2(handle);
尽可能多地重用此句柄实例是一种好习惯,如某种Session
或性能影响如此之小以至于通过使用短生命句柄来降低代码复杂性更有意义实例,因此不断创建/销毁它?
答案 0 :(得分:6)
我认为这是一个好习惯,有两个原因:
答案 1 :(得分:1)
正如CUDA工具包在here
中所述应用程序必须通过调用cublasCreate()函数初始化 cuBLAS库上下文的句柄。然后,将上下文显式传递给每个后续库函数调用。一旦应用程序完成使用该库,它必须将函数cublasDestory()调用释放与cuBLAS库上下文关联的资源。