我想开发一个可以在CPU或GPU上运行的算法库。 GPU可以是Nvidia(然后算法将使用CUDA)或不(那么算法将使用OpenCL)。
我想在这个项目中模拟GPU,因为可能:
我将使用不同的计算机来开发软件,其中一些没有GPU。
该软件最终将在可以拥有GPU的服务器中执行,并且必须执行并通过单元测试。
有没有办法模拟GPU进行单元测试?
在以下链接中:
GPU Emulator for CUDA programming without the hardware
他们展示了一个解决方案,但仅针对CUDA,而不是针对OpenCL,他们建议的软件“GPUOcelot”不再被主动维护。
答案 0 :(得分:4)
这取决于你在仿真上的意思。您无法模拟GPU的速度。
GPU在架构上与CPU非常不同,有很多工作线程(1000s,10000s,......),这就是我们使用它的原因。即使并行化代码,CPU也只能有几个线程。他们也有不同的指令集。
然而,您可以使用特殊软件模拟执行,例如NVIDIA GPU为NVEmulate,AMD为OpenCL Emulator-Debugger。
相关问题:GPU Emulator for CUDA programming without the hardware,其中接受的答案建议使用gpuocelot进行CUDA仿真。