代码之家  ›  专栏  ›  技术社区  ›  SmacL

利用GPU的最佳方法

  •  1
  • SmacL  · 技术社区  · 7 年前

    我有一小部分代码处理大型数据集,我已经使用OpenMP并行化了这些数据集,并希望使用GPU进一步提高性能。该程序是C++,在VS2015下开发,专门运行在Windows上,并且需要支持7位以上的64位版本,因为各种各样的GPU是可行的。到目前为止,我一直在关注的技术包括AMP、OpenCL、HLSL和CUDA。已经提出的问题,例如 this with an informative answer by Ade Miller ,让我问一下AMP是否是最简单的选择。我不喜欢CUDA,因为它限制了我所支持的硬件,并且在当前通过 following book . 因此,我有以下问题:

    OpenCL在这里是一个好方法吗? other posts 建议它可能也在出去的路上?

    如果我在想支持最广泛的GPU的同时使用OpenCL,我是否更适合使用1.x版本的OpenCL?我之所以这样问是因为使用最新版本的CUDASDK下载的opencl.dll是1.9。我必须下载Intel SDK for Opencl才能获得2.x版本。

    如果我使用Opencl,我必须用我的应用程序分发什么(假设Opencl.dll是最低限度的),是否存在任何许可问题?大多数卡的默认驱动程序是否支持opencl,如果支持的话,是哪个版本?

    关于上面的内容,我真的更喜欢AMP吗,因为它适用于任何Directx11或更好的产品?

    (如果上面的话题有点离题,很抱歉,如果有人认为这是可能的话,他们可以让我找一个更好的论坛来问这些问题)

    1 回复  |  直到 7 年前
        1
  •  2
  •   Artyom    7 年前

    Opencl是一个很好的方法吗,正如其他帖子所暗示的那样,它可能也即将推出?

    OpenCL似乎是支持最广泛的GPU计算平台。由Nvidia、AMD和Intel支持。也适用于大多数移动平台。它还提供大量的库:viennacl、clblast、clblast、boost compute等。

    如果我在想支持最广泛的GPU的同时使用OpenCL,我是否更适合使用1.x版本的OpenCL?

    是的,目前最安全的是坚持1.2——事实上,这已经足够了。

    所有主要的桌面GPU供应商(Intel、AMD、Nvidia)至少支持Opencl 1.2。 实际上,只有Nvidia没有发布官方的2.0支持——它仍然处于测试阶段。

    还要注意,一些旧的GPU也只支持Opencl 1.2。

    推荐文章