首页 > 解决方案 > 如何编写可在任何 GPU 上运行的 GPU 并行化程序?

问题描述

我曾与 Halide 和 Cuda 合作过。但是,像 CUDA 这样的技术只能在 NVIDIA GPU 上运行。OpenCL 也可以在 AMD 卡上运行,但据我所知,还没有真正的一体化解决方案。

但是像 Matlab 这样的软件可以在任何操作系统上运行,与其中的 GPU 无关。我相信 Matlab 使用并行化技术来加速矩阵的计算(或者至少我希望如此)。

那么,如何编写一款可以使用 GPU 进行并行计算的软件,而无需为每种可能的 GPU 类型编写单独的软件呢?或者这实际上是唯一的出路?

我不打算在短期内编写这样的应用程序,我只是在参加了有关该主题的课程后变得好奇。

标签: parallel-processingcudagpuopencl

解决方案


您似乎对 matlab 支持任何将 cuda 用于 nividea gpus 的 gpu 是错误的,
请参阅:https
://www.mathworks.com/solutions/gpu-computing.html 和:https ://www.mathworks.com/matlabcentral/答案/336084-will-matlab-support-amd-gpu-in-future

回答你的问题

似乎有两个选项是:

OpenCL:https ://www.khronos.org/opencl/

DirectCompute/compute-shader:https ://docs.microsoft.com/en-us/windows/win32/direct3d11/direct3d-11-advanced-stages-compute-shader

OpenCL 是跨平台的,而 DirectCompute 仅是 Windows 并且基于 DirectX 构建


推荐阅读