我编写了一个应用程序,它使用 cudaMalloc/cudaMemcpy 在设备上分配一个矩阵和一个向量。矩阵被定义为列优先。我现在想使用 cublas 库 (cublasSgemv) 中的一个函数将它们相乘。看来我必须使用 cudaMalloc 分配矩阵和向量的副本,并使用 cublasSetMatrix/cublasSetVector 从主机初始化它们才能使用 cublas API 函数。显然,复制所有这些内存将是昂贵的。
据我了解,cublasSetMatrix/cublasSetVector 函数只是 cudaMemCpy 的轻包装。我想知道是否可以将指向用 cudaMemCpy 初始化的数组的指针传递给 cublas API 函数?或者,是否有可能以 API 能够识别的方式轻轻包装数组,这样我就可以避免所有的内存重复?