我编写了一个应用程序,它使用cudaMalloc / cudaMemcpy在设备上分配矩阵和向量。矩阵定义为列主要。我想使用cublas库(cublasSgemv)中的函数将这些函数现在相乘。看来我必须使用cudaMalloc分配矩阵和向量的副本,并使用cublasSetMatrix / cublasSetVector从主机初始化它们,以便使用cublas API函数。显然,重复所有这些内存将是昂贵的。
据我所知,cublasSetMatrix / cublasSetVector函数只是cudaMemCpy的轻量包装器。我想知道是否有可能将指针传递给使用cudaMemCpy初始化的数组到cublas API函数?或者,是否可以以API将识别的方式轻轻地包装数组,以便我可以避免所有的内存重复?
答案 0 :(得分:3)
是的,您可以使用cudaMemcpy而不是cublasGet / SetMatrix。 CUBLAS也将使用它。