我参与了一个必须进行 GPU 编程的项目,我的限制之一是在 nvidia 设备上进行(因此在 CUDA 中)。 但我无法访问配备 nvidia gpu 的设备。
所以我想知道是否存在任何包装器可以让我编写 CUDA 代码但作为 openCL 代码执行以使其在 amd gpu 上工作?
ps:如果我不必在 Windows 系统上这样做,gpuocelot 就可以很好地适应。
最佳答案
“CUDA”约束是真实的吗?因为NVIDIA硬件上的GPU编程并不一定意味着CUDA。您还有其他可能的解决方案,例如:
- OpenCL你已经提到过,它使用起来相当复杂和麻烦,但它为你打开了很多可能的后端。
- Thrust这允许您target NVIDIA GPUs with a CUDA back-end, or CPUs with an OpenMP and a TBB back-end .
- OpenACC使用 PGI 编译器,它允许(据我所知)以 both NVIDIA and AMD GPUs 为目标.
如果是我并且代码允许的话,我会尝试使用 Thrust 进行开发。但这取决于你。
关于cuda - 执行 openCL 的 cuda 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32628707/