4

我正在考虑购买一张 GPU 卡来在 Julia 中试验 GPU 计算。正如我现在所看到的,基本上有两种选择:NVIDIA 或 AMD 芯片组。

我的问题是:是否有与 Julia 一起使用的推荐选项?由于我是 GPU 计算的新手,我更关注易用性而不是性能,所以我可以想象当前用作 GPU 接口的 Julia 包基本上决定了答案。

我使用基于 Windows 7 的系统。任何帮助表示赞赏。

4

1 回答 1

10

几点:

1) ArrayFire 是一个非常易于使用的 GPU 平台,带有 Julia 接口 ( https://github.com/JuliaGPU/ArrayFire.jl )。它适用于 NVIDIA 和 AMD GPU。

2) 如果您想要超越 ArrayFire 中的内容,那么通常可以通过 NVIDIA 专有的 CUDA C 语言对 NVIDIA 卡提供更多支持。您可以在此处查看 Julia 的所有 GPU 包的列表。正如您将看到的,其中更多用于 CUDA,而不是用于 OpenCL,后者是用于编写可在 NVIDIA 或 AMD 上运行的内核的 C 版本。但是,要知道,如果你走这条路,你需要开始用 C 编写你自己的内核。

在我看来,CUDA C 具有一些方便的自动化功能,可以自动以有效的方式处理在内核之间分配工作的某些方面。CUDA C 似乎更普遍地用于科学计算。

但是,我认为在开放式 CL 中没有什么是不能完成的,而且学习如何用它来做事可能并不太难。此外,OpenCL 还具有适用于 GPU 以外的各种高性能平台的优势(例如,在 Intel 的 Xeon Phi 上编程)。

3)您应该注意是否需要以单精度或双精度进行浮点运算。从任一制造商处选择 GPU 时,这会产生很大的不同。例如,NVIDIA 有一些专门设计用于执行双精度运算的 GPU(主要是 Tesla 系列,也有 Titan Black)。如果您选择除此以外的 NVIDIA GPU,则双精度性能将是单精度性能的 1/32。AMD 芯片往往不太专业,在单精度和双精度之间表现得更相似。我认为在某些用例中 NVIDIA 卡会更有价值,而在其他用例中 AMD 会更具成本效益。

4) GPU 可能会变得非常昂贵(尽管在 Ebay 等上经常有相当不错的使用选项)。他们的快乐在于他们可以在比 CPU 快几个数量级的时间内完成(某些)计算。但是,要获得这种优势,您通常至少要花费数千美元(特别是如果您需要购买新系统来支持强大的 GPU,因为许多基本的消费级计算机根本不支持它们)出色地)。如果可能的话,首先做一些试验工作以确定你需要什么确实对你有利。例如,NVIDIA 有一个测试程序,您可以在这里申请. 我从来没有使用过它,所以我不能说太多。AMD可能有类似的东西。或者,如果您隶属于具有可用 GPU 的公司或研究机构,或者如果您有朋友让您通过 ssh 连接到他们的计算机并试用它们,那么这可能有助于提前确定您需要什么时间。

5) 在查看不同的卡时,您不仅要特别注意它们每美元提供多少次失败(在您所需的精度级别),还要注意您需要多少 GPU 内存,以及潜在的问题它们支持多个 GPU 之间以及 GPU 和 CPU 之间的通信的效率如何。据我所知,这些 GPU-GPU 和 CPU-CPU 计算的黄金标准是新的 NVIDIA P100 卡。这是超级、超级昂贵的,而且现在只能作为从 NVIDIA 购买的 10 万美元以上系统(其中有 8 个)的一部分提供。到今年年底,P100 应该可以从其他制造商处获得。他们可以在 CPU 和 GPU 之间的传输速度方面做出令人难以置信的事情,但要为此付出高昂的代价,如果你愿意,他们将无法证明这个价格是合理的。

于 2016-07-06T17:05:46.127 回答