为 CPU 编译 cuda 代码

Posted

技术标签:

【中文标题】为 CPU 编译 cuda 代码【英文标题】:Compile cuda code for CPU 【发布时间】:2014-03-23 16:36:23 【问题描述】:

我正在研究 cuda 5.5,但我没有任何 Nvidia GPU。在旧版本的 nvcc 中有一个标志 --multicore 来。 在新版本的nvcc中,有什么选项??我在 Linux 上工作。

【问题讨论】:

感谢您澄清“Linux”。你真的需要一个 GPU。但下一个最好的事情是 Ocelot:试试看。我不熟悉“--multicore”,而且我在 NVCC 页面上的任何地方都没有看到它,所以我无法帮助你。但我认为你最好的选择是 1) 真正的 GPU,或 2) 像 CUDA-Waste 或 Ocelot 这样的模拟器。恕我直言... 【参考方案1】:

CUDA 工具包至少从 CUDA 4.0 开始不支持在没有 GPU 的情况下运行 cuda 代码的能力。

如果你只是想编译代码,请参考this question。

如果您想运行使用 CUDA 5.5 编译的 CUDA 代码,您将需要支持 CUDA 的 GPU。

如果您愿意使用较旧的 CUDA 工具包,您可以安装各种模拟器之一,例如 this one。

或者您可以安装一个非常旧的(例如 ~ CUDA 3.0)cuda 工具包,它能够在 CPU 上运行 CUDA 代码。

【讨论】:

确实知道...如何在 CPU 上运行内核? CPU是不是一定要有超线程之类的? 我认为你的意思是像 avx512 这样的东西。【参考方案2】:

理想情况下,您可以访问与 CUDA 兼容的 NVidia GPU。

但除此之外,这里有一个模拟器可能会有所帮助:

https://code.google.com/p/cuda-waste/

如果你有Linux盒子,你也可以试试Ocelot:

http://gpuocelot.gatech.edu/faq/

【讨论】:

我的问题是内存数量。当最好的 gpu 锁定在 16Gb 时,可以在 cpu 上获得 24Tb。【参考方案3】:

在当前版本的 CUDA 中,程序在 GPU 上运行时直接进行调试。这远远优于使用模拟器进行调试的旧版本 CUDA。在当前版本的 CUDA 中,调试工具也更加强大。

因此,如果希望编写任何 CUDA 代码,支持 CUDA 的 GPU 卡将在您需要调试时立即为您带来投资回报。

您可以花很少的钱购买一张旧卡。检查features of each of the compute capabilities 以确定您愿意返回多远。

还有一些在线网站可以让您测试 CUDA 代码。 NVIDIA 有CUDA test drive 程序。 Intro to Parallel Programming course at Udacity 包含一个用于编码分配的在线 CUDA 编译器。

【讨论】:

这不仅仅是投资回报!任何严肃的应用程序都应该有测试,并且您希望能够在任何机器上运行测试,即使它速度较慢。 @dashesy 如果您因为没有 GPU 而无法在 GPU 上测试实际性能,那么您就错过了 CUDA 的主要目标,即改进它。 测试不仅仅是为了性能(基准测试),我们还需要测试应用程序的正确性以避免回归。单元测试、A/B 测试、...

以上是关于为 CPU 编译 cuda 代码的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 是不是使用 nvcc 编译 cuda 代码?

python常用代码

CUDA 计算能力 1.0 比 3.5 快

如何知道 CAFFE 代码是使用 GPU 还是 CUDA 代码运行?

如何在未安装 CUDA 工具包的机器上运行已编译的 CUDA 代码?

使用cmake和3.5计算功能编译CUDA代码