2013-11-25 83 views
11

仅使用NVIDIA CUDA Toolkit,是否可以在同一节点上编译CUDA程序而无需具备支持CUDA的设备?我可以在没有cuda设备的情况下编译cuda程序吗

+6

是的。 'nvcc'编译器驱动程序与设备的物理存在无关,所以即使没有支持CUDA的GPU,也可以进行编译。遵循相同的基本原理,当节点托管不同体系结构的GPU时,可以为体系结构编译CUDA代码。当然,在这两种情况下,您将无法成功运行代码。请记住,设备仿真已经有一段时间了,所以如果你没有支持CUDA的设备,你可以尝试gpuocelot(但我没有任何经验)。 – JackOLantern

+0

@RobertCrovella感谢您的澄清。我已将该评论转换为完整答案。请随时编辑它或添加评论,如果我失去了一些东西。 – JackOLantern

回答

13

您的问题的答案是YES。

nvcc编译器驱动程序与设备的物理存在无关,所以即使没有支持CUDA的GPU,您也可以编译CUDA代码。不过要注意的是,正如Robert Crovella所说,CUDA驱动程序库libcuda.so(适用于Windows的cuda.lib)附带了NVIDIA驱动程序,而不是CUDA工具包安装程序。这意味着需要驱动程序API(其入口点前缀为cu,参见CUDA C编程指南附录H)的代码需要强制安装“最近”驱动程序,而不需要NVIDIA GPU,单独运行驱动程序安装程序与--help命令行切换。

遵循相同的基本原理,当节点托管不同体系结构的GPU时,可以为体系结构编译CUDA代码。例如,您可以在托管GT 210(计算能力1.2)的计算机上编译GeForce GT 540M(计算能力2.1)的代码。

当然,在这两种情况下(没有GPU或不同架构的GPU),您将无法成功运行代码。

对于CUDA的早期版本,可以在仿真模式下编译代码,并在CPU上运行编译后的代码,但设备仿真自一段时间以来不推荐使用。如果您没有支持CUDA的设备,但想要运行CUDA代码,则可以尝试使用gpuocelot(但我对此没有任何经验)。

相关问题