3

ここが質問するのに適切な場所かどうかは本当にわかりません。さまざまな種類のハードウェアのさまざまなプログラミング モデルに興味があります。

このように始まります。NVIDIA CUDA で行っていたいくつかの作業を紹介していました。GPU をコプロセッサーとして使用する際の主な問題の 1 つは、ホストと GPU の間でデータを転送する必要があるという事実です。その後、何人かの人々が 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 チップと比べてどうだったのでしょうか?
4

3 に答える 3

2

AMD / Intelチップのグラフィックコアを利用するようにプログラムをどのように作成しますか?

OpenCLですが、Intelがグラフィックコアを使用する作業を行ったとは思いません。

これらのグラフィックコアは実際にホストメモリに直接アクセスできますか?

はい。ただし、いくつか注意点があります。

  1. ホストメモリへの帯域幅はPCI-eよりも優れていますが、GPUがグラフィックスメモリに必要な帯域幅ほどではありません(3〜4倍の違い)。
  2. OpenCLは、状況によってはデータの独自のコピーを必要とする場合があります。GPUの場合、これは発生する必要があります(Host Mem-> Graphics Mem)。APUの場合、発生しないことを確認する必要があります。これは、私が理解しているように、バッファをどのように割り当てるかにかかっています。

基本的に、妥協の条件を変更しました。以前は、起動コスト(データをグラフィックスメモリにコピーする)が十分に大きかったため、GPUに何かを送信する際に価値があるように作業項目を十分に大きくする必要がありました。そのコストは下がっています(コピーなし)が、コアのパフォーマンスは低くなっています(コアの数が少なく、メモリ帯域幅が低くなっています)。

これは興味深い開発であり、おそらくより多くの状況でGPGPU技術を価値のあるものにしますが、そのような大きな利益はありません。ただし、利益は依然として大きくなります。

SPおよびDPFLOPSで、これらのチップのパフォーマンスの種類に関する情報はありますか?

私はマーケティングの数字を繰り返すのが嫌いですが、AMDA8-3850の見出しの数字は480GFLOPSです

CUDAから来て、NVIDIA GPUのプログラミングと問題の他のチップとの間にどのような類似点を見つけることができますか?

私はCUDAを使用したことがないので、他の誰かが答えたいと思うかもしれませんが、私の理解では、CUDAとOpenCLは多くの同じ概念(メモリモデル、カーネルなど)を持っていますが、CUDAはOpenCLのパーティーにいくつかのものをもたらしますしません(C ++-isms)

次に、NvidiaとAMDの間にはアーキテクチャ上の違いがあります。主な違いは、Nvidiaのコアがスケーラーであり、AMDがベクトルであるため、AMDで最高のパフォーマンスを得るには、ベクトル化されたコードを作成する必要があります。

于 2011-11-25T11:53:42.537 に答える
1

私はCUDAの経験しかありません。答えはその経験と、簡単に検索したいくつかのことに基づいています(いくつかの答えも知りたいと思っていました)。

  1. 同じように書かれていると思います。それらすべてで OpenCL を使用でき、ハードウェアの実装に違いがありますが、同じ原則に従います。

  2. AMD と Intel がどうなるかはわかりませんが、そうです。CUDAでできます。マップされたページロック ホスト メモリを使用すると、ホスト上のメモリにカーネルから直接アクセスできます。NVIDIA システムが統合されている場合、NVIDIA はこの方法でメモリを使用することを推奨しています (CUDA C プログラミング ガイドのセクション 5.3.1)。

  3. はい。Intel については、11 ページの Intel HD Graphics DirectX Developer's Guide (Sandy Bridge)を確認してください (Intel HD3000 では最大 125GFlops)。AMD の場合、 AMD Radeon HD6990など、各カードの仕様ページに値を記載しています。おそらくどこかで比較を見つけることができます。

  4. 前述したように、プログラミング モデルは似ていると思いますが、OpenCL にはカーネル、ホストとデバイスのメモリ、およびスレッドとワーキング グループの識別子の概念もあります (ほんの一例です)。パフォーマンスを最大化するには、特定のアーキテクチャについてある程度知っておく必要がありますが、同様のアプローチを使用してすべてを処理できます。

  5. わからない...

于 2011-11-25T10:57:06.537 に答える
-1

Bigdata を使用して OpenCL で作業を行いました。

AMD/Intel チップのグラフィックス コアを利用するために、プログラムはどのように作成されますか?

OpenCL は、異種環境で動作する低レベルのプログラミング モデルです。次のようなシステムですべての計算リソースを使用するように構築されています。CPU、GPU、APU、FPGA など。OpenCL コード プログラムは、GPU および CPU のコアで実行されるカーネルとも呼ばれます。

Intel は主に GPU ではなくプロセッサで知られていますが、Intel GMA やその後の Intel HD Graphics のように、かなり長い間 GPU も提供しています。

于 2016-12-27T11:35:16.060 に答える