いくつかのポイント:
1)ArrayFireはジュリア・インターフェース(https://github.com/JuliaGPU/ArrayFire.jl)とGPUプラットフォームを使用するのは簡単です。 NVIDIAとAMD GPUの両方で動作します。
2)ArrayFireを超えるものが必要な場合は、NVIDIA独自のCUDA C言語によるNVIDIAカードのサポートが一般的に増えています。 Julia hereのすべてのGPUパッケージの一覧が表示されます。お分かりのように、OpenCLよりもCUDAの方が多く、NVIDIAまたはAMDのどちらでも動作するカーネルを作成するCバージョンです。しかし、あなたがこの道を行くなら、C言語で自分自身のカーネルを書く必要があるでしょう。
私の意見では、CUDA Cは、コアの中で作業を分散するという特定の側面を自動的に処理する、効率的な方法で。 CUDA Cは確かに科学的コンピューティングで広く使用されているようです。
しかし、私はオープンCLではできないことはあまりないと思うし、おそらくそれを使って何かをする方法を学ぶのはそれほど難しくありません。さらに、OpenCLは、GPU以外の広範な高性能プラットフォーム(例えば、IntelのXeon Phiでのプログラミング)にも適用可能であるという利点も有する。
3)浮動小数点演算のために単精度または倍精度で作業する必要があるかどうかに注意する必要があります。どちらのメーカーからもGPUを選ぶときには大きな違いがあります。たとえば、NVIDIAには、倍精度演算(主にテスラ線だけでなく、タイタンブラックも)を行うように特別に設計されたGPUがいくつかあります。これ以外のNVIDIA GPUを選択すると、倍精度のパフォーマンスが1/32になります。 AMDチップは、単精度と倍精度との間で比較的同等の性能を発揮します。私は、NVIDIAカードがより価値のあるユースケースと、AMDがよりコスト効率の良いものがあると推測しています。
4)GPUは非常に高価になることがあります(ただし、Ebayなどでよく使用されるオプションがよくあります)。彼らの喜びは、CPUよりもはるかに速いオーダーで(特定の)計算を行うことができるということです。しかし、この優位性を得るためには、しばしば数千ドルを費やすことになります(特に、強力なGPUをサポートするために新しいシステムを購入する必要がある場合、多くの基本コンシューマーグレードのコンピュータはよく)。可能であれば、あなたが必要とするものを正確に把握するために、最初にいくつかの試作を行うことが、実際にあなたのアドバンテージになるでしょう。たとえば、NVIDIAにはhereに適用できるテストプログラムがあります。私はそれを使用したことがないので、私は多くのことを言うことはできません。 AMDにはおそらく同様のものがあります。また、GPUが利用可能な会社や研究機関と提携している場合、またはコンピュータにssh接続して試用できる友人がいる場合は、事前に必要なものを把握するのに非常に役立ちます時間。
5)異なるカードを見るときは、1ドルあたりのフロップ数(希望の精度レベル)だけでなく、どれだけのGPU RAMが必要か、複数のGPU間、GPUとCPU間の通信をいかに効率的にサポートするかという潜在的な問題があります。私が知る限り、これらのGPU-GPUとCPU-CPU計算のゴールドスタンダードは新しいNVIDIA P100カードです。これは超高価ですが、現在はNVIDIAから購入した$ 100k +システム(そのうちの8個)の一部としてのみ利用可能です。今年の終わりには、P100は他のメーカーから入手可能でなければなりません。彼らはCPUとGPUの間の転送速度に関して信じられないほどのことをすることができますが、そのためには多額の費用がかかりますし、探しているものすべてが単なるドル当たりのフロップだとすれば、
精巧な答えをありがとう。あなたは多かれ少なかれ私の印象を確認しました。私はそれが提供するより良いサポートのために私は安価なNVIDIAに行くと思う。 – InkPen
@InkPenええ、特に単精度を求めたいのであれば、NVIDIAには素晴らしいパフォーマンスをもたらす新しい低価格のもの(GTX 1080)があります。それはただ単精度を必要とする人々の私に嫉妬を与える! –