【问题标题】:How to write a GPU parallelization program that will run on any GPU? [closed]如何编写可在任何 GPU 上运行的 GPU 并行化程序? [关闭]
【发布时间】:2020-04-02 23:28:30
【问题描述】:

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

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

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

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

【问题讨论】:

  • 写在SYCL 并等待几年。或者在HIP 试试运气,三分之二。
  • @FelipeGutierrez 我不这么认为。这就是我在帖子中所说的,它只对 NVIDIA 和 AMD 有真正的支持。
  • @tera 但它还能在你认为的任何 GPU 上运行吗?
  • 为什么我的投票失败了?这是一个很好的问题。如果还没有涵盖所有 GPU 的解决方案,这不会使它成为一个无用的问题。

标签: parallel-processing cuda gpu opencl


【解决方案1】:

你似乎错了 matlab 支持任何 gpu 它使用 cuda 为 nividea gpus
见:https://www.mathworks.com/solutions/gpu-computing.html
和:https://www.mathworks.com/matlabcentral/answers/336084-will-matlab-support-amd-gpu-in-future

回答你的问题

这两个选项似乎是:

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

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

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

【讨论】:

  • 但这适用于任何现代(比如 2015+)GPU 吗?
  • 现代 GPU 应该适用于两者。也许对于 directComptute,您不能使用 2015 年以来的卡的最新版本。OpenCL 还支持其他多核设备,例如 CPU、DSP、FPGA。
  • 我应该补充一下,有专门的硬件无法使用,但 Matlab 可能也不支持它们。
  • OpenGL 也支持计算。
  • @FelipeGutierrez 是的,但据我所知,DirectCompute 不是跨平台的吗?
猜你喜欢
  • 1970-01-01
  • 2010-09-17
  • 2020-08-22
  • 2013-09-06
  • 2016-02-04
  • 2021-04-06
  • 2016-10-14
  • 2014-04-14
  • 2022-07-15
相关资源
最近更新 更多