記事"OpenCL:パラレルワールドへの橋渡し"についてのディスカッション

 

新しい記事 OpenCL:パラレルワールドへの橋渡し はパブリッシュされました:

2012年1月下旬、MetaTrader 5の開発を支援するソフトウェア開発企業はMQL5でのOpenCLのネイティブサポートを発表しました。本稿では解説例を用いてMQL5 環境におけるOpenCL のプログラミング基礎を記述し、処理スピードを上げるプログラムのシンプルな最適化例を提供します。

Article 'OpenCL: The Bridge to Parallel Worlds'

作者: Sceptic Philozoff

 

ありがとうございます!

OpenCLに関する記事をずっと待っていました。

これから読みます。:)

 
たくさんのブカフ :)でも、ブカフはとても必要で役に立つ。ありがとう!
 
joo: OpenCLに関する記事をずっと待っていた。

読むつもりだ。:)

おそらくあまり必要ないでしょう。あなたはすでにすべてを知っているはずです。

次の記事では、ハードウェアに関することがたくさん出てくるでしょう。

 
でも、この規格を特殊化に適応させることはもちろん必要です。恐らく、6つ目のザースターの次のリリースで可能になると思いますが、もっと早くこの機能が欲しいですね......。
 
GKS: スイッチを入れるにはまだ早すぎる。

何を有効にするには早すぎるのか、明確にしてください。OpenCLの場合は、すでに有効になっています。実験はすべてMetaEditor 5で直接行った。

追伸:主なことは、OCLを通して、コーダーが以前はアクセスできなかったものにアクセスできるということです。これらは

- (S)SSExはVisual Studioに含めることができますが、OCLなしではMQL 5に含めることはできません(dllはカウントしていません)。

- ディスクリートGPUでの計算へのアクセス。MQL5でシングルコアでできることを、dllのようなトリックなしでさらに高速化する。

 
Mathemat:

1.あまり必要ないでしょう。このようなことをする方法はすでに知っているはずだ。

2.次の記事では、ハードウェアに関することがたくさん出てくるので、真剣になる。

1.必要だ。

2.素晴らしい!

なぜCPU上でのOCLプログラムの実行を「エミュレーション」と呼ぶのですか? CPUは、GPUと並んで、デバイスに対応するドライバがあり、すべてのプロセッサコアがロードされていれば、OCLプログラムが動作することができるデバイスの1つに過ぎません。

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
joo: なぜCPU上でOCLプログラムを実行する ことを "エミュレーション "と呼ぶのですか?

なぜなら、それがエミュレーションであり、遅いエミュレーションだからだ。CPUでは(Intelのおかげで、明示的に禁止しなければベクトル化を探す賢いコンパイラがある)並列化は(S)SSEx命令とおそらく依存関係の解析によって行われるが、GPUにはSIMDエンジンに関するより多くの可能性がある。GPUはSIMDエンジンに関連する多くの可能性を持っています。そして、より広いバスとより高速なメモリ、特にローカルメモリとプライベートメモリがあります。

ハードウェアについて。主な推奨事項はAMDハードウェアに適用される。しかし、それらの多くは、用語を少し修正した上で、NVidiaハードウェアにも適用されます。

 
Mathemat:

それはエミュレーションであり、遅いエミュレーションだからだ。CPUでは(Intelのおかげで、明示的に禁止しなければベクトル化を探す賢いコンパイラがある)、並列化は(S)SSEx命令と、おそらく依存関係の解析によって行われる。GPUはSIMDエンジンに関連する多くの可能性を持っています。そして、より広いバスとより高速なメモリ、特にローカルメモリとプライベートメモリがあります。

ハードウェアについて。主な推奨事項はAMDハードウェアに適用されます。しかし、その多くは、用語を若干変更した上で、NVidiaハードウェアにも適用されます。

OpenCL(Open Computing Language)は、CPU、GPU、その他のプロセッサを横断する汎用並列プログラミングのためのオープンなロイヤリティフリーの標準であり、ソフトウェア開発者にこれらの異種処理プラットフォームのパワーへのポータブルで効率的なアクセスを提供します。

参照 - GPU用のOCLと他のデバイス用のエミュレーション・モードについては言及されていません。OpenCLは、2つ以上の演算コアを持ち、OCLをサポートしているデバイス 上で並列計算を行うための汎用プログラミング言語です。GPU用にカスタマイズされたCUDAやATI Streamではない。

それに、CPU上での並列化やOCL計算はGPUよりも速い場合もある。計算の速度は、処理されるデータ量と計算の "厳しさ "に直接依存する(入力設定にも依存する)ので、GPUで速くなることもあれば、CPUで速くなることもある。

 
joo:

OpenCL(Open Computing Language)は、CPU、GPU、その他のプロセッサを横断する汎用並列プログラミングのためのオープンなロイヤリティフリーの標準であり、ソフトウェア開発者にこれらの異種処理プラットフォームのパワーへのポータブルで効率的なアクセスを提供する。

参照 - GPU用のOCLと他のデバイス用のエミュレーション・モードについては言及されていません。OpenCLは、2つ以上の演算コアを持ち、OCLをサポートしているデバイス 上で並列計算を行うための汎用プログラミング言語です。GPU用に設計されたCUDAやATI Streamではありません。

CPUはデバイスと見なされているので、ある面では正しいかもしれない。しかし、むしろこれはエミュレーションに近いというデータもある。たとえば、CPUの場合、バッファをデバイスメモリに書き込むCLBufferWrite()は、CPUにはグローバルメモリが1つしかないため、「1ティックだけ」行われるのではないかという疑惑があります。ただし、CPUにはキャッシュもあるが、それがどうなっていて、どう動作するのかはわからない。

それに、CPUでの並列化やOCL計算の方がGPUよりも速い場合もある。

そう、例えばdot( )のスカラー積がCPUの方が速いという ようなケースはある。しかし、Core 2 Duoとリンク先のカードよりも高性能なグラフィックカードの比較であれば、どちらが速いかは推測の域を出ない。特にアルゴリズムの最適化に気をつければ。CPUとGPUでは、何を言っても違うのだから。

 
Mathemat:

何を有効にするのが早いのか、明確にしてください。OpenCLの場合は、すでに有効になっています。実験はすべてMetaEditor 5で直接行った。

追伸:主なことは、OCLを通して、コーダーが以前はアクセスできなかったものにアクセスできるということです。これらは以下の通りです:

- (S)SSExはVisual Studioに含めることができますが、OCLなしではMQL 5に含めることができません(dllはカウントしていません)。

- ディスクリートGPUでの計算へのアクセス。MQL5でシングルコアでできることを、dllのようなトリックなしでさらに高速化する。

クラウド・コンピューティングへの適応という意味だが、各プロセッサ・コアが、多くのコンピューターとネットワーク接続されたグラフィック・アクセラレーターの多くの「ハングリーミツバチ」によって支援されていると想像すると、本当にクールで速くなるだろう。

仕事の半分は終わったので、あとはクラウド用にスイッチを入れるだけだ......。