我使用的是最新版本的CUDA 5.5,新的CUBLAS具有有狀態的品味,其中每個功能都需要cublasHandle_t
例如,我們應該在不同的調用中重用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
或對性能的影響是如此之小,它更有意義具有短住手柄,以降低代碼的複雜性實例,並因此不斷創建/銷燬它?
多個cuBLAS句柄的創建/銷燬可能會因不需要的上下文同步而中斷併發。 – JackOLantern
此外,從cuBLAS庫用戶指南,''cublasCreate()''分配主機上的硬件資源「,所以也許有一些開銷在它的調用。 – JackOLantern
這也值得從文檔中複製:_「由於cublasCreate分配一些內部資源,通過調用cublasDestroy釋放這些資源將隱式調用cublasDeviceSynchronize,因此建議最小化cublasCreate/cublasDestroy的出現次數。」_ – Allan