是否可以模拟GPU以进行CUDA/OpenCL单元测试?

问题描述:

我想开发一个可以在CPU或GPU上运行的算法库。 GPU可以是Nvidia(然后算法将使用CUDA)或不算(然后该算法将使用OpenCL)。是否可以模拟GPU以进行CUDA/OpenCL单元测试?

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

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

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

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

在下面的链接:

GPU Emulator for CUDA programming without the hardware

他们展示一个解决方案,但仅针对CUDA,不为OpenCL和他们提出的软件“GPUOcelot”不再积极维护。

+0

在CPU上性能会明显下降,但是我需要知道是否有方法来测试算法是否正常工作,并且在没有安装GPU时它是正确编程的。在单元测试中有模拟数据库正在监听的库,例如fakemongo https://github.com/fakemongo模拟一个mongodb数据库列表来测试你的sql函数是否正确。 – Rob

+0

[用于CUDA编程的GPU仿真器没有硬件]的可能重复(http://*.com/questions/3087361/gpu-emulator-for-cuda-programming-without-the-hardware) –

+1

在该链接中,他们只会说关于cuda(而不是关于opencl)以及他们提出的解决方案是一种不积极维护的软件。 – Rob

这取决于你在模拟上的意思。你无法模拟GPU的速度。

GPU在架构上与CPU有很大不同,有很多工作线程(1000s,10000s,...),这就是我们使用它的原因。即使并行化代码,CPU也只能有少量线程。他们也有不同的指令集。

然而,您可以使用专用软件模拟执行,例如适用于NVIDIA GPU的NVEmulate和适用于AMD的OpenCL Emulator-Debugger

相关问题:GPU Emulator for CUDA programming without the hardware,其中接受的答案建议gpuocelot用于CUDA仿真。

+0

非常感谢,这就是我一直在寻找的东西。我在我的电脑中安装了GPU,但有时我更喜欢使用不带gpu的旧笔记本电脑在我的沙发上编码,我需要知道该代码是否正常工作。 – Rob

+1

@Rob在这种情况下,你可能想给rCUDA一看。它允许您从没有GPU的节点访问远程GPU。请参阅:http://www.rcuda.net/index.php/what-s-rcuda.html –