質問: 異なるハードウェアのプログラミングモデル これが正しい場所かどうかは本当に分かりません。私は、さまざまなタイプのハードウェアの異なるプログラミングモデルに興味があります。 このように始まり、NVIDIA CUDAを使って作業していたことを発表していました。 GPUをコプロセッサとして使用する際の主な問題の1つは、ホストとの間でデータをやりとりする必要があるということです。その後、いくつかの人々がAMDの「APU」と、グラフィックス・コアが通常のCPUコアと同じダイ上にあるということについて私に質問しました。 Intel/AMD CPU + GPUチップに専用NVIDIAカードと同数のグラフィックス・コアが含まれないことを指摘して、私はこの質問を避けました。 問題は、プログラミングモデルがAMD APUやIntel Sandy/Ivy Bridgeチップのためにどのようなものか分かりません。 私の質問は次のとおりです: 1. プログラムはどのようにAMD/Intelチップ上のグラフィックスコアを利用するように書かれていますか? 2. これらのグラフィックスコアは本当にホストメモリに直接アクセスできますか? 3. SPおよびDP FLOPSでのこれらのチップのパフォーマンスの種類に関する情報はありますか? 4. CUDAから来て、NVIDIA GPUと他のチップのプログラミングの間には、どのような類似点がありますか? 5. CellプロセッサのSPEはメモリにどのようにアクセスしましたか、またはプログラミングモデルはどのようにこれらのIntel/AMDチップと今日比較されましたか?
回答: > プログラムはどのようにしてAMD/Intelチップのグラフィックスコアを活用するように書かれていますか? > > OpenCL、しかし、私はインテルが仕事をしたとは思わないグラフィックスコアを使用する。 > これらのグラフィックスコアは本当にホストメモリに直接アクセスできますか? > > はい、ただし、いくつかの注意点があります。 1. Whilst the bandwidth to host memory is better than over PCI-e, it's not as much as a GPU has to graphics memory (3-4x difference). 2. OpenCL might require it's own copy of the data in some circumstances. For a GPU this has to happen (Host Mem -> Graphics Mem), for an APU you want to try to make sure it doesn't. This pretty much comes down to how you allocate your buffers as I understand it. 基本的には、妥協の条件を変更しました。以前は、GPUに何かを送信している間に作業項目を十分に大きくする必要があるほど、起動コスト(グラフィックスメモリへのデータのコピー)が十分に重要であった。そのコストは今下がりました(コピーなし)が、コアのパフォーマンスは低くなりました(それらの数は少なく、メモリ帯域幅は小さくなりました)。 GPGPUのテクニックをより多くの状況で価値のあるものにする興味深い開発ですが、そのような**巨大な**という利益はありません。しかし、利益はまだ大きくなります。 > SPおよびDP FLOPSでのこれらのチップのパフォーマンスの種類に関する情報はありますか? > > I'm loathed to repeat marketing numbers, but an AMD A8-3850 has a headline figure of 480 GFLOPS > CUDAから来て、NVIDIA GPUと他のチップのプログラミングの間に、どのような類似点があるのでしょうか? > > 私はCUDAを使用していないので、他の人が答えたいと思うかもしれませんが、CUDAとOpenCLは同じ概念(メモリモデル、カーネルなど)をたくさん持っていますが、CUDAはOpenCL does not(C ++ - isms) 次に、NVIDIAのコアがスケーラであり、AMDがベクタなので、NVIDIAとAMDのアーキテクチャ上の違いがあります。したがって、AMDで最高のパフォーマンスを得るには、ベクター化されたコードを書く必要があります。