执行 openCL 的 cuda 包装器
A cuda wrapper to execute openCL
我参与了一个必须进行 gpu 编程的项目,我的限制之一是在 nvidia 设备(因此在 CUDA 中)上进行。
但我无法访问配备 nvidia gpu 的设备。
所以我想知道是否存在任何包装器可以让我编写 CUDA 代码但作为 openCL 代码执行以使其在 amd gpu 上运行?
ps:如果我不必在 windows 系统上这样做,gpuocelot 可能很适合。
你可以看看GPU Ocelot。根据其网站:
Ocelot currently allows CUDA programs to be executed on NVIDIA GPUs, AMD GPUs, and x86-CPUs at full speed without recompilation.
"CUDA" 约束是真实的吗?因为 NVIDIA 硬件上的 GPU 编程并不一定意味着 CUDA。您还有其他可能的解决方案,例如:
- OpenCL 你已经提到过,它使用起来非常复杂和麻烦,但是它为你打开了很多可能的后端。
- Thrust which permits you to target NVIDIA GPUs with a CUDA back-end, or CPUs with an OpenMP and a TBB back-end.
- OpenACC with the PGI compiler which permits (AFAIK) to target both NVIDIA and AMD GPUs.
如果是我,代码允许,我会尝试使用 Thrust 进行开发。但这取决于你。
我参与了一个必须进行 gpu 编程的项目,我的限制之一是在 nvidia 设备(因此在 CUDA 中)上进行。 但我无法访问配备 nvidia gpu 的设备。
所以我想知道是否存在任何包装器可以让我编写 CUDA 代码但作为 openCL 代码执行以使其在 amd gpu 上运行?
ps:如果我不必在 windows 系统上这样做,gpuocelot 可能很适合。
你可以看看GPU Ocelot。根据其网站:
Ocelot currently allows CUDA programs to be executed on NVIDIA GPUs, AMD GPUs, and x86-CPUs at full speed without recompilation.
"CUDA" 约束是真实的吗?因为 NVIDIA 硬件上的 GPU 编程并不一定意味着 CUDA。您还有其他可能的解决方案,例如:
- OpenCL 你已经提到过,它使用起来非常复杂和麻烦,但是它为你打开了很多可能的后端。
- Thrust which permits you to target NVIDIA GPUs with a CUDA back-end, or CPUs with an OpenMP and a TBB back-end.
- OpenACC with the PGI compiler which permits (AFAIK) to target both NVIDIA and AMD GPUs.
如果是我,代码允许,我会尝试使用 Thrust 进行开发。但这取决于你。