我试图驾驭GPU(的NVIDIA Quadro NVS140M)的能力,加快在我的项目的一些矩阵计算。我读通过一些文档(编程指南,最佳实践指南和参考手册),但不知道哪部分(S)我应该重点关注。这将是巨大的,如果我可以在此得到一些建议。

另外,我想知道是否有第三方的SDK维护,如CuBLAS.net,之前我坚持提供,这将有助于我实现我的目标与我的项目CUBLAS的功能,可以简化CUBLAS开发过程。再次,由于预先的意见。

有帮助吗?

解决方案

大多数随附CUDA工具包和SDK下载的文件是约CUDA通常,不特别CUBLAS。与CUBLAS_Library_2.3.pdf文件开始,如果你只是要使用CUBLAS - 你不需要编写自己的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总线传输的数量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top