我想在 mac 上编译 CUDA 代码,但让它在 Windows 上可执行。
有没有办法设置 nvcc CUDA 交叉编译器?
问题是由于旅行,我的桌面窗口将有一段时间无法访问,但是我不想浪费时间等待我回来编译代码。如果我必须等待,那么调试代码并确保它编译正确等等都是浪费时间。不过,我的 mac 没有配备支持 cuda 的硬件。
我想在 mac 上编译 CUDA 代码,但让它在 Windows 上可执行。
有没有办法设置 nvcc CUDA 交叉编译器?
问题是由于旅行,我的桌面窗口将有一段时间无法访问,但是我不想浪费时间等待我回来编译代码。如果我必须等待,那么调试代码并确保它编译正确等等都是浪费时间。不过,我的 mac 没有配备支持 cuda 的硬件。
简短的回答是,不,这是不可能的。
这是一个常见的误解,但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 平台上编译是目标,您有两个选择
如果您想在没有 CUDA GPU 的情况下运行代码,您可以研究非商业 ( GPU Ocelot ) 和商业 ( PGI CUDA-x86 ) 选项。