我正在使用最新版本的CUDA 5.5,新的CUBLAS有一种有状态的味道,每个函数都需要一个,例如:
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
一样尽可能多地重用此句柄实例是一个好的做法,还是说性能影响非常小,通过具有短寿命的句柄实例来降低代码复杂性更加合理,因此会不断地创建/销毁它?
cublasCreate()
[...]在主机上分配硬件资源”,因此可能在调用时存在一些开销。 - Vitality