Matrix CUBLAS或支持的库,以及初学者阅读的重点

Matrix CUBLAS或支持的库,以及初学者阅读的重点,matrix,cuda,cublas,Matrix,Cuda,Cublas,我正试图利用GPU(nVidia Quadro NVS140M)的强大功能来加速我项目中的一些矩阵计算。我正在阅读一些文档(编程指南、最佳实践指南和参考手册),但不确定应该关注哪些部分。如果我能在这方面得到一些建议,那就太好了 另外,我想知道是否有第三方维护的SDK,例如CuBLAS.net,可以在我坚持使用CuBLAS提供的有助于我实现项目目标的功能之前简化CuBLAS开发过程。再次感谢您的评论。CUDA工具包和SDK下载附带的大多数文档通常都是关于CUDA的,而不是专门针对CuBLAS的。如

我正试图利用GPU(nVidia Quadro NVS140M)的强大功能来加速我项目中的一些矩阵计算。我正在阅读一些文档(编程指南、最佳实践指南和参考手册),但不确定应该关注哪些部分。如果我能在这方面得到一些建议,那就太好了


另外,我想知道是否有第三方维护的SDK,例如CuBLAS.net,可以在我坚持使用CuBLAS提供的有助于我实现项目目标的功能之前简化CuBLAS开发过程。再次感谢您的评论。

CUDA工具包和SDK下载附带的大多数文档通常都是关于CUDA的,而不是专门针对CuBLAS的。如果您只想使用CUBLAS,那么从
CUBLAS\u Library\u 2.3.pdf
文件开始——您不需要编写自己的CUDA内核。如果您已经在使用CPU BLAS,那么CuBLAS应该不难找到。(如果不是,那么考虑在CUBLAS之前尝试一个优化的CPU,因为它会更容易编程)。 如果您是在.NET上编写代码,那么使用CuBLAS最简单的方法可能是通过平台调用CuBLAS.dll。确保清楚哪些阵列在主机(CPU)内存中,哪些在设备(GPU)内存中

请记住,CUDA和CuBLAS并不是神奇的子弹。性能取决于许多因素(尤其是通过PCIe总线的传输),简单地将CUBLAS调用交换为CPU-BLAS调用可能不会给您带来加速。为了提高性能,您可能必须对自己的代码进行更大的更改。您提到的其他指南对于理解CUDA体系结构及其瓶颈非常有用


编辑:我不清楚用户代码和内核代码之间的界限。CUBLAS是一个预构建、优化的CUDA内核库。如果您只需要BLAS功能,则不需要编写自己的内核。相反,只需调用CUBLAS函数。在进行性能调整时,您不需要调整CUBLAS内核,但可能需要更改调用它们的方式、时间以及使用内存的方式,以尽量减少通过PCI express总线的传输次数。

我已经在使用Intel Math Kernel Library,据我所知,它是一个CPU BLAS。我可能需要使用CUDA内核等对算法进行一些修改。