【问题标题】:Can I compile a cuda program without having a cuda device我可以在没有 cuda 设备的情况下编译 cuda 程序吗
【发布时间】:2013-11-25 07:25:57
【问题描述】:

是否可以在同一节点上没有支持 CUDA 的设备而仅使用 NVIDIA CUDA Toolkit...来编译 CUDA 程序?

【问题讨论】:

  • 是的。 nvcc 编译器驱动程序与设备的物理存在无关,因此即使没有支持 CUDA 的 GPU,您也可以编译。遵循相同的原理,当您的节点托管不同架构的 GPU 时,您可以为架构编译 CUDA 代码。当然,在这两种情况下,您都无法成功运行代码。请记住,设备仿真已经被弃用了一段时间,所以如果您没有支持 CUDA 的设备,您可以尝试 gpuocelot(但我没有任何经验)。
  • @RobertCrovella 感谢您的澄清。我已将评论转换为完整答案。如果我遗漏了什么,请随时编辑或添加 cmets。
  • @RobertCrovella cuda 环境的最大部分提供了一个“存根”libcuda.so,因此无需找到驱动程序就可以编译。在这些情况下要容易得多。它通常位于 lib*/stubs/ 文件夹中,因此只需将此路径添加到库搜索路径即可解决问题。

标签: cuda compilation


【解决方案1】:

您的问题的答案是肯定的。

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(但我对此没有任何经验)。

【讨论】:

  • 大多数 cuda 工具包都为 libcuda.so 提供了一个 stub 库,这样您就不需要找到驱动程序。它通常位于lib*/stubs/ 文件夹中。
  • 8 年前,情况并非如此。
猜你喜欢
  • 1970-01-01
  • 2012-09-14
  • 2018-05-23
  • 2013-06-04
  • 2019-05-29
  • 2019-08-14
  • 2020-12-05
  • 1970-01-01
  • 2016-08-14
相关资源
最近更新 更多