1

我想在 mac 上编译 CUDA 代码,但让它在 Windows 上可执行。

有没有办法设置 nvcc CUDA 交叉编译器?

问题是由于旅行,我的桌面窗口将有一段时间无法访问,但是我不想浪费时间等待我回来编译代码。如果我必须等待,那么调试代码并确保它编译正确等等都是浪费时间。不过,我的 mac 没有配备支持 cuda 的硬件。

4

1 回答 1

7

简短的回答是,不,这是不可能的。

这是一个常见的误解,但nvcc实际上并不是编译器。它是一个编译器驱动程序,它严重依赖主机 C++ 编译器来引导主机和设备代码的编译。要为 Windows 编译 CUDA,您必须使用 Microsoft C++ 编译器。该编译器无法在 Linux 或 OS X 上运行,因此无法交叉编译到 Windows 目标,除非您在 Windows 主机上进行编译(例如,可以进行 32/64 位交叉编译)。

其他两个 CUDA 平台同样不兼容,尽管需要 gcc 进行编译,因为后端不同(Linux 是 elf 平台,OS X 是 mach 平台),所以即使 OS X 和 Linux 之间的交叉编译也是不可能的。

如果在 OS X 平台上编译是目标,您有两个选择

  1. 安装 OS X 工具包。即使您的硬件没有兼容的 GPU,您仍然可以安装工具包并编译代码。
  2. 在虚拟 Windows 安装(或物理训练营安装)中安装 Windows 工具包和 Visual Studio,并在 Mac 上的 Windows 中编译代码。同样,您不需要 NVIDIA 兼容的硬件来执行此操作。

如果您想在没有 CUDA GPU 的情况下运行代码,您可以研究非商业 ( GPU Ocelot ) 和商业 ( PGI CUDA-x86 ) 选项。

于 2012-05-14T11:27:30.047 回答