Memory CUDA与CuBlas内存管理

Memory CUDA与CuBlas内存管理,memory,cuda,cublas,Memory,Cuda,Cublas,我注意到我可以使用cudamaloc()或cublasalloc()函数分配的矩阵的内存块来调用cublas函数。使用cudamaloc()而不是cublasalloc()分配的数组的矩阵传输速率和计算速度较慢,尽管使用cudamaloc()分配的数组还有其他优点。为什么会这样?如果能听到一些评论,那就太好了 cublasAlloc本质上是一个围绕cudamaloc()的包装器,所以应该没有区别,您的代码中还有其他变化吗?在处理浮点、双精度或两者时,您看到了这一点吗?这可能是一个对齐问题(cud

我注意到我可以使用cudamaloc()或cublasalloc()函数分配的矩阵的内存块来调用cublas函数。使用cudamaloc()而不是cublasalloc()分配的数组的矩阵传输速率和计算速度较慢,尽管使用cudamaloc()分配的数组还有其他优点。为什么会这样?如果能听到一些评论,那就太好了

cublasAlloc
本质上是一个围绕
cudamaloc()
的包装器,所以应该没有区别,您的代码中还有其他变化吗?

在处理浮点、双精度或两者时,您看到了这一点吗?这可能是一个对齐问题(
cudaAlloc()
接受一个
elemSize
参数,但
cudamaloc()
没有)。在这两种情况下,我都使用浮点。我没有在double中看到这一点,因为我不需要在我的应用程序中使用double。我会同时和cudaAlloc联系顺便说一句,Gabriel,你的意思是“cublasAlloc()”而不是“cudaAlloc()”?是的,那是个打字错误。如果你在浮动中看到了这一点,那么我不知道该怎么说性能差异。如果你只是想优化,请查看cublas的2D对齐
螺距
mallocs(你需要适当地使用BLAS中的
lda
ldb
术语)。这可能会大大加快速度。当然也有固定的内存。