【发布时间】:2017-03-20 14:21:45
【问题描述】:
我想开发一个包含可在 CPU 或 GPU 上运行的算法的库。 GPU 可以是 Nvidia(那么算法将使用 CUDA)也可以不是(那么该算法将使用 OpenCL)。
我想在这个项目中模拟 GPU,因为可能:
我将使用不同的计算机来开发软件,其中一些没有 GPU。
软件最终会在有或没有GPU的服务器上执行,必须执行并通过单元测试。
有没有办法模拟 GPU 以进行单元测试?
在以下链接中:
GPU Emulator for CUDA programming without the hardware
他们展示了一个解决方案,但仅适用于 CUDA,而不适用于 OpenCL,并且他们提出的“GPUOcelot”软件不再得到积极维护。
【问题讨论】:
-
在 CPU 上的性能显然会更差,但我需要知道是否有一种方法可以测试该算法是否有效,并且在未安装 GPU 时是否正确编程。在单元测试中,有一些库可以模拟数据库正在监听,例如 fakemongo github.com/fakemongo 模拟 mongodb 数据库监听以测试您的 sql 函数是否正确。
-
在那个链接中,他们只谈论 cuda(而不是 opencl),他们提出的解决方案是一个没有积极维护的软件。
-
使用 GPUOcelot 或其他功能性 GPU 模拟器可能会成为单元测试的问题,因为这些模拟器无法完全模拟 GPU 的并行性。因此,一些明显不正确且同步中断的代码将在模拟器中执行而不会出错。它肯定会比没有单元测试要好,但肯定比常规单元测试差。
标签: unit-testing cuda opencl gpu emulation