2009-10-11 57 views
1

我试图利用GPU(nVidia Quadro NVS140M)的力量加快我的项目中的一些矩阵计算。我正在阅读一些文档(编程指南,最佳实践指南和参考手册),但不确定我应该关注哪些部分。如果我能在这方面得到一些建议,那将是非常好的。CUBLAS或支持的库,并强调为初学者阅读

此外,我想知道是否有第三方维护的SDK,如CuBLAS.net,可能会简化cublas开发过程,然后再坚持使用Cublas提供的功能,以帮助我实现我的目标项目。再次,提前感谢评论。

回答

2

CUDA工具包&下载的大多数文档都是关于CUDA的,通常不是CuBLAS。如果您打算使用CuBLAS,则从CUBLAS_Library_2.3.pdf文件开始 - 您不需要编写自己的CUDA内核。如果您已经在使用CPU BLAS,那么CuBLAS应该不会难以拿起。 (如果你不是,那么考虑在CuBLAS之前尝试一个优化的CPU,因为编程更容易)。

如果您使用.NET进行编码,那么使用CuBLAS最简单的方法可能是通过对cublas.dll的平台调用调用。请务必保持阵列位于主机(CPU)内存中,并且位于设备(GPU)内存中。

请记住,CUDA & CuBLAS不是神奇的子弹。性能取决于很多因素(特别是跨PCIe总线的传输),并且只需交换CPU-BLAS调用的CUBLAS调用可能无法让您加速。您可能必须对自己的代码进行更实质性的更改才能获得性能改进。您提到的其他指南对于理解CUDA体系结构及其瓶颈非常有用。

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

+0

根据我的理解,我已经在使用Intel Math Kernel Library,这是一款CPU BLAS。我可能需要使用CUDA内核等修改算法。 – stanigator 2009-10-11 19:22:58