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

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

我想在这个项目中模拟GPU,因为可能:

>我将使用不同的计算机来开发软件,其中一些没有GPU.
>该软件最终将在具有GPU或不具有GPU的服务器中执行,并且必须执行并传递单元测试.

有没有办法模拟GPU进行单元测试?

在以下链接中:

GPU Emulator for CUDA programming without the hardware

他们展示了一个解决方案,但仅针对CUDA,而不是针对OpenCL,他们建议的软件“GPUOcelot”不再被主动维护.

最佳答案
这取决于你在仿真上的意思.您无法模拟GPU的速度.

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

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

相关问题:GPU Emulator for CUDA programming without the hardware,接受的答案建议使用gpuocelot进行CUDA仿真.

转载注明原文:单元测试 – 是否可以模拟GPU以进行CUDA / OpenCL单元测试? - 代码日志