是否可以为CUDA / OpenCL单元测试目的而仿真GPU?

Rob*_*Rob 5 unit-testing cuda gpu emulation opencl

我想开发一种可以在CPU或GPU上运行的算法的库。GPU可以是Nvidia(然后该算法将使用CUDA)或不是(那么该算法将使用OpenCL)。

我想在这个项目中模拟GPU,因为也许:

  • 我将使用不同的计算机来开发软件,其中一些没有GPU。

  • 该软件最终将在具有或没有GPU的服务器中执行,并且必须执行并通过单元测试。

有没有一种方法可以仿真GPU以进行单元测试?

在以下链接中:

无需硬件即可进行CUDA编程的GPU仿真器

他们展示了一个解决方案,但仅适用于CUDA,不适用于OpenCL,他们提出的“ GPUOcelot”软件也不再得到积极维护。

pla*_*cel 5

这取决于您对仿真的含义。您无法模拟GPU的速度。

GPU在结构上与CPU截然不同,具有许多工作线程(1000、10000,...),这就是我们使用它的原因。即使并行化代码,CPU也只能有几个线程。他们也有不同的指令集。

但是,您可以使用特殊软件来模拟执行,例如用于NVIDIA GPU的NVEmulate和用于AMD的OpenCL Emulator-Debugger

一个相关的问题:不带硬件的用于CUDA编程的GPU仿真器,其中可接受的答案建议使用gpuocelot进行CUDA仿真。

  • 在这种情况下,@ Rob可能会让您看一下rCUDA。它允许您从没有GPU的节点访问远程GPU。请参阅:http://www.rcuda.net/index.php/what-s-rcuda.html (2认同)