我编写了一个使用cudaMalloc / cudaMemcpy在设备上分配矩阵和 vector 的应用程序。矩阵是按列定义的。我想使用cublas库中的函数(cublasSgemv)现在将它们相乘。看来,我将不得不使用cudaMalloc分配矩阵和 vector 的重复项,并使用cublasSetMatrix / cublasSetVector从主机对其进行初始化,以便使用cublas API函数。显然,复制所有这些内存将是昂贵的。

据我了解,cublasSetMatrix / cublasSetVector函数只是cudaMemCpy的轻包装。我想知道是否可以将指针传递给使用cudaMemCpy初始化的数组到cublas API函数?或者,是否有可能以API可以识别的方式轻轻地包装数组,从而避免所有内存重复?

最佳答案

是的,您可以使用cudaMemcpy代替cublasGet / SetMatrix。 CUBLAS也将与之合作。

关于cuda - 使用cudaMemCpy代替cublasSetMatrix和cublasSetVector,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19737616/

10-09 13:16