2013-08-20 4 views
5

デスクトップi7-4770k @ 4GHzのコアのピークGFLOPSは4GHz * 8(AVX)*(4FMA)* 4コア= 512 GFLOPSです。しかし、最新のIntel IGP(Iris Pro 5100/5200)のピークは800 GFLOPSを超えています。したがって、一部のアルゴリズムはIGP上でさらに高速に実行されます。コアとIGPを一緒に組み合わせる方が良いでしょう。さらに、IGPはより多くのシリコンを食べ続けます。 Iris Pro 5100は現在、シリコンの30%以上を占めています。 Intelのデスクトップ・プロセッサーがどの方向を向いているかは明らかです。OpenCLを使用しないIntel IGP(Iris Pro 5200)ハードウェアプログラミング

しかし、私が知っている限り、インテルIGPは、OpenCL/OpenGLを除いてプログラマーによってほとんど無視されています。私は、OpenCLを使わずにインテルHDグラフィックスハードウェアをどのように計算(SGEMMなど)することができるのか興味がありますか?

追加されたコメント: LinuxでのHDグラフィックスおよびOpenCLに関するIntelのサポートはありません。私はbeignetを見つけました。これはオープンソースで、少なくともIvy Bridge HDグラフィックス用にLinuxにサポートを追加しようとしています。私はそれを試していない。おそらく、Beignetを開発している人々は、OpenCLなしでHDグラフィックスハードウェアをプログラミングする方法を知っているでしょう。

+0

注:[GFLOPs/s](https://en.wikipedia.org/wiki/FLOPS)ではなく[GFLOPS](https://en.wikipedia.org/wiki/FLOPS)です。また、なぜ8(AVX)*(4 FMA)を掛けているのですか? –

+0

GLOPSに変更しました。 FMAは乗算と加算を同時に行い、2の1つのファクタを与えます。ハスウェルは2つのFMA命令を同時に実行することができ、2つの別のファクタを与えます。各FMAは、別の係数8(単一の浮動小数点)を与える1つのAVX命令を実行できます。 –

+0

GLSLプログラミングですか? DirectCompute? PTX? –

答えて

4

ビデオカードにデータをコピーして戻すためにパフォーマンスが低下することに注意してください。これは考慮する必要があります。 AMDは、同じダイ上のCPUとGPU用に統一されたメモリを持つAPUチップをリリースすることに近づきつつあります。これは、この問題を緩和するための道のりです。

CUDAとOpenCLより前にGPUが使用していた方法は、DirectXまたはOpenGLを利用してテクスチャとして操作するメモリを表現する方法でした。私たちはもうそれをする必要はありません良さをありがとう!

AMDは実際にAPU/OpenCLモデルを採用していますので、パフォーマンスのトレードオフがあれば、より多くのプログラムがOpenCLを介してGPUを活用する必要があります。現在のところ、GPUコンピューティングは、ウェブブラウジングやワードプロセッシングには必要ない高性能コンピューティングやナンバー・クランチングに特化したちょっとしたニッチ市場です。

+0

年前私は680x0のアセンブリで(私はCSから物理に切り替えた)Amigaハードウェア、ブリッタなどをプログラミングしました。 CPU以外のハードウェアは、メモリマップドレジスタを介してプログラムされていました。インテルIGPには何か似たものがあるべきですか? OpenCLはビデオドライバを経由します。ハードウェアに直接書き込むことができ、仲介者をスキップできるようになったような気がします。 –

+2

なぜホイールを再発明するのですか? OpenCLはあなたのニーズをどのように満たしていませんか?高性能の組み込みソリューションをお探しの場合は、ボードに内蔵されたRadeon GPUを搭載したAMDのmobosを使用しますか? – Austin

+0

OpenCLはベンダーのデバイスドライバを使用します。 Intelがx86をプログラムするためのデバイスドライバ(各OS用)を出すのを待たなければならないと想像してください。誰もそれを我慢しないだろう!前回チェックしたとき、HD 4000のOpenCLドライバはLinuxに対応していませんでした。多分今はそうです。ベンダーはデバイスドライバのサポートをやめることもできます(NvidiaはOpenCLのサポートに長い間間違いがあります)。 IGPはデスクトッププロセッサの将来に見えるので、x86上でSIMDを実行するためにintrinsicsのようなものを使うのと同じように、C++でプログラムすることは可能であるはずです。 –

4

ベンダーが低レベルのISAを使用してプログラムできるようにすることは、もはや意味がありません。

  1. 非常に難しく、ほとんどのプログラマーはそれを使用しません。
  2. 今後のリビジョンでISAを調整しないようにします。

したがって、プログラマは言語(OpenCLではC99など)を使用し、ランタイムはユーザーのマシンでISA固有の最適化を行います。

AMDがVLIWベクタマシンからスカラーマシンに切り替え、既存のカーネルがまだ実行されていた(ほとんどの場合、より高速に実行されました)。あなたがISAを直接書いたのなら、これを行うことはできませんでした。

+0

ええ、私はそれについて考えました。しかし、x86コアではそうではありません。これは、大部分の人々が、特に別個のGPUを使用している場合、シリコンの大部分(および計算の可能性)を無駄にしていることを意味します。しかしインテルはこれをデスクトップユーザーに強制している。私はむしろより多くのx86コアを持っていました。唯一のオプションはOpenCLとそのドライバです。私はインテルのOpenCL HDドライバがLinux上で動作するとは思わない。私はまだ疲れていない[beignet](http://cgit.freedesktop.org/beignet/)。さらに、インテルの最新のOpenCL SDKは、[windows](http://software.intel.com/en-us/vcsource/tools/opencl-sdk)でのみ動作します。 –

+0

また、Linuxベースの小さなソリューションを探しているなら、まともな統合GPUを搭載した安価なAMDハードウェアをお勧めします。 AMDはこの時点でLinuxをサポートする上で最高のようだ。 – Austin

+0

AMDがスカラーマシンに切り替えたという記述は正しいですか?私はあなたがAMDがVLIWからスーパースカラーマシンに切り替わったことを意味すると思います。 –

1

openclを使用せずにアイリスのようなコプロセッサをプログラミングするのは、ハンドルなしで車を運転するのと同じです。

OpenCLは、アイリスが理論的性能を達成するのに必要な並列性を公開するように設計されています。 100以上のスレッドやプロセスを生成し、パフォーマンスを期待することはできません。同時に同じことをするスレッドのブロックを似たようなメモリアドレスに置くことは、この問題の要点です。

あなたは、その目標を達成するためにopenclよりも優れたパラダイムを考えることができます。あなたがするまでは、openclを学ぶことをお勧めします。あなたがパイソンにいるならば。 pyopenclは始めるのに最適な場所です。

関連する問題