我在我的桌面上用 CUDA 开发算法,以后应该在服务器上运行。
是否可以使用最近的低端卡(如计算能力 2.1)来获得所有不错的调试和分析功能,然后使用高端卡(具有相同的 cc)将代码放在服务器上?我是否只需要调整线程/网格尺寸,或者它会改变一切™。
示例:我将在Quadro 600上进行开发,服务器将使用Tesla C2075。
我在我的桌面上用 CUDA 开发算法,以后应该在服务器上运行。
是否可以使用最近的低端卡(如计算能力 2.1)来获得所有不错的调试和分析功能,然后使用高端卡(具有相同的 cc)将代码放在服务器上?我是否只需要调整线程/网格尺寸,或者它会改变一切™。
示例:我将在Quadro 600上进行开发,服务器将使用Tesla C2075。
存在一些问题,例如内存带宽不同(根据您的链接,Quadro 上为 25.6 GiB/s,Tesla 上为 148 GiB/s),或者 SM 的数量不同(驱动程序可以在 SM 之间以不同的方式分配块)。然而,在大多数情况下,这种小的差异并不重要。
如果服务器安装了多个 GPU,那么您需要更改代码以在多 GPU 上运行,以充分利用服务器的功能。虽然相同的代码可以正常运行,但在一张卡上。
如果服务器上只有一张卡;一般的经验法则是,您无需更改任何代码行即可利用更强大的 GPU 的功能,因为驱动程序会自动在 SM 之间分配负载。