OpenCL:MQL5での内部実装テスト - ページ 3

 
Renat:
明があります。
...
2) OpenCL 1.1 以上はdouble 型を サポートしているため、これをサポートします。OpenCL 1.0バージョンはfloatでしか動作しないため、その精度は金融計算には到底適さない

旧世代のカードはダブルオペレーションに対応していないものが多いのですが、新しいドライバをインストールしてみてください。
1.1でもfloatがサポートされることを望みます。 一般的にはfloatは十分ではありませんが、多くの特殊なケースでは非常に十分です。また、特に並列計算の場合、余分なメモリは高価になりがちです。
 
Graff:
この夏、JavaDevの スクリプトをテストしていたとき、グラフィックカードがdoubleをサポートして いないのに、floatでは動くという 問題に遭遇しました。ドライバでは直せない、カードを変えなければならない :(
グラフィックスカードがサポートされていない場合は、すべてのプロセッサコアが使用されます。
 

Catalyst Centre 12を設置、以前は11でした。すでに結果を得ている(赤色で表示)。

ドロップダウン・リストの「0」から「1」を「弄る」だけで、ATIのアイコンが表示されました。今回のスタートダッシュで再び消えることはなかった。ソフトの小さな不具合があるようです...。

 
WChas:
カッコイイ!私はMSI R6970 - 1536スレッド(エージェント)とGigabyte HD5870(1600プロセッサー)を持っています。BOINCマネージャでは、それらをcrossfairで結合せずに使用することができます(2枚目のカードの出力を1つ接続するか、2枚目のモニタの出力の1つを接続するだけです)。質問:クロスファイアなしで両方使うことは可能でしょうか?

まだわからない。それよりも、デバイスを選択するプログラム自体に依存し、コード内の各カードを明示的に使用する必要があります。

後日、最初のベータ版をリリースする際に確認します。

 
MetaDriver:
1.1 floatもまだサポートされているのでしょうか? 一般的なケースではfloatは十分ではありませんが、多くの特殊なケースでは非常に十分です。また、特に並列計算の 場合、余分なメモリは非常に高価になりがちです。
OpenCL 1.1では、もちろんfloatがサポートされています。
 
WChas:
私の理解が正しければ、1GPUは1つの非常に強力なエージェントですか?その場合、CPUエージェントは(ビデオに対して速度が遅いため)無効化できるのでしょうか?

CPUコアは、MQL5環境ではホストプラットフォームとして使用されるため、いかなる方法でも無効にすることはできません。

CPUコアの「ワークホース」に対して、GPUコアは「高度に専門化した蜂の群れ」であることを理解することが重要です。GPUコアは、決して従来のCPUのコアの代用にはなりません。

もしEA開発者がタスクを何百、何千もの独立したスレッドに並列化できれば、GPUは10倍から100倍のスピードアップを実現します。しかし、ほとんどのシングルタスク(取引や指標など)では、計算が逐次的に行われるため、効率的に処理を並列化する機会がありません。また、通常のGPUで倍精度の実数値を使用すると、floatで達成した最高値の半分の速度になるとのことです。ダブルのスピード・ドロップダウンに関する興味深いリンクがあります。http://www.gpgpu.ru/node/901

私たち自身は、doubleやfloatに関するいくつかのタスクの計算のための小さな研究を公開するために、異なるクラスのカードを購入する予定です。私たち自身は、何が得られるかに興味があるのです。

ここでは、異なるデバイスでfloatとdoubleを使った計算速度を少し調べてみました(フルレポート:http://agora.guru.ru/hpc-h/files/017_Krivov_NvidiaGpuComparision.pdf)。Teslaの倍速はfloatのピークスピードの2倍、GeForce 480 GTXなどの一般的なカードでは10倍近くも遅いことがわかりますね。実際には、通常の4~8コアのCPUで、SSE2-4とAVXを積極的に使って二重演算を行えば、さらに良い結果が得られるということです。


取引戦略オプティマイザーの逐次テストでは100倍(限界100-1000倍以上)、遺伝学では10倍(限界10-20-50-100-200倍)のスピードアップを、並列テスト実行のネイティブな考え方とMQL5 Cloud Networkにより 実現することが出来ました。しかし、1つのタスクの中で並列処理を行う場合、すべての努力は、数百または数千の独立したシンプルなコアにタスクをインテリジェントに分配できるGPUプログラマの肩にかかります。


もう一つニュアンスがあります。コンピュータで複数のエージェントを使用する場合、GPUの使用権を割り当てるのは1人のエージェントだけであることがほとんどです。あるいは、実際の物理的なGPUデバイスがいくつかある場合は、エージェント開始時にエージェント間で分配されます。

要は、1つの物理デバイスを複数のエージェントに分けるのは不合理で、共有した結果、性能が非線形に低下してしまうということです。つまり、1つのGPUに4つのエージェントを搭載すると、1つのGPUに1つのエージェントを搭載するよりも何倍も性能が悪くなってしまうのです。当社の社内テストでは、このような結果が出ています。

より詳細なテストを行い、結果を最大化するための解決策を考えていきます。

Кофигурацыя системы на базе Tesla C2050/C2070 (C2075) | GPGPU.ru
  • www.gpgpu.ru
Здравствуйте! Возникла задача внедрения GPU-Computing для решения задач численного моделирования (симуляция и оптимизация фабрик полупроводников с помощью эвристик, докторская работа). Считать действительно много, и есть довольно хороший потенциал для распараллеливания расчетов, никакой роботы с видео, рендерингом и прочим. Помогите, пожалуйста...
 
 
 
分かりやすい説明ありがとうございます。
Renat:

........

Strategy Trading Optimizerの逐次検索では100倍(限界100-1000倍以上)、Geneticsでは10倍(限界10-20-50-100-200倍)の高速化を、並列テストランとMQL5 Cloud Networkという ネイティブな考え方で実現しています。しかし、1つのタスクの中での並列処理となると、数百、数千の独立した単純なコアにタスクを合理的に分配できるGPUプログラマーの肩に、すべての努力がかかることになります。

........

私個人としては、オプティマイザーでの高速化が重要です。なので、必要なアップデート+各種ビデオカードの性能表を楽しみにしています。
 

MQL4.comのOpenCLスレッドから再掲載しています。

https://www.mql5.com/ru/forum/137422/page6

そんな単純な話じゃないんです。

OpenCL 1.0はダブルフロートで問題なく動作し、すべてのメーカーがサポートする「オープンなオプション」ですが、それでもすべての古い地図には対応していません。

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/

「オプションの倍精度浮動小数点と半浮動小数点

OpenCL 1.0では、オプションの拡張機能として倍精度および半浮動小数点のサポートが追加されました。倍精度 データ型は,IEEE-754 の倍精度記憶形式を確認する必要がある。

倍精度を 使用したいアプリケーションは、カーネルコードで倍精度データ型を宣言する前に、#pragma OPENCL EXTENSION cl_khr_fp64 : enable 指令を含める必要があります。これにより、組み込みのベクトルおよびスカラーデータ型のリストが拡張され、次のようになります......」とある。

Strategy Testerでは動作しますが、OpenCL 1.0 Expert Advisorでは動作 しません。Rinatが言うように、「そこにはダブルフロートがない」からではなく、すでに述べたように、OpenCL 1.0にはセーフスレッドがなく、MT4-5にはスレッドがないためです。

OpenCL(とCUDA)は一般に混乱が多い。何がしたいんだ?結局、鉄とラジオの技術者たちは、番組の概念を変えることを目指したのだ。鉄のような考え方をしているのです。

プログラム、つまりMTやDLL、Expert Advisorは、手動でプラットフォーム(AMD、Nvidia、Intel)を選択しなければならず、コンピュータ上でいくつかの異なることができ、OpenCLカーネルを実行し、コンピュータがマルチGPUを持っていれば手動でDEVICEを選択します。OpenCLのプラットフォーム自動選択機能はまだない。Rinatは「最強を自動選択する」と話していますが、どうなんでしょう。ここに示した例では、プラットフォームの選択も、デバイス(GPU、CPU)の選択もありません。

さらに、複数のGPUやGPU+CPUでのタスクを自動的に並列化するOpenCLの規格はまだ存在しません。AMDのドライバ/SDKのいくつかのバージョンでは、このような自動プロビジョニングを導入していましたが、いくつかの問題があり、当分の間、AMDはこの機能をオフにしています。

結論:MT4-5でOpenCLプログラムを開発し有効にするには、手作業が 必要であり、自動的または「オプションで再コンパイル」によって動作するわけではありません。 そのため、実運用では多くの失速を招くことになります。それは微妙な仕事であり、重要なことは、残念ながらそれはユダヤ人指向のプログラミングであり、それは間違っている、と私は繰り返すことを許します。 CUDAやOpenCLの並列プログラムのデバッグは、鉄の革命家が想定していたよりもはるかに困難であることが判明したのです。Nvidiaは、2011年秋のCUDAカンファレンスをキャンセルしました。ドライバの問題と、デバッグの遅延に関する多くの苦情が原因です。そこで、最新のToolkitにさらに1000もの新機能 を追加したわけだが、最も単純なプログラムが実行されなかったり、割り込みで実行されたりしたら、どうしたらいいのだろう。結局、OpenCLやCUDAの内部機構については、記述ツールの半分も触れていないのです。

ドライバやソフトウェアの互換性によりハングアップしたビデオカードのGPU速度(単位:GigaFLOPS)はゼロです。

OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум
  • www.mql5.com
OpenCl и инструменты для него. Отзывы и впечатления. - MQL4 форум