OpenClとそのためのツール。レビューとインプレッション - ページ 5

 
Mathemat:

素晴らしい!MQLとC/C++を比較する根拠となるでしょう。私は事実を述べただけ です。それにしても、なんで私がトーマスの信者にならなきゃいけないの?

神経にもう少し差があるかもしれない、そこは論外です。

ついでに、あなたの「事実だけ」も見てみたいです。

私の「事実だけ」はあと少しです。「ほぼ」-昔のテストのソースを掘り出したからです。ちょっと更新して、テスト結果付きのソースをここに表にして載せますね。

 
joo: ついでに、あなたの『事実だけ』も見てみたい。

ここです。ページの2番目の投稿をご覧ください。

ところで、あなたはすでに私の投稿にリンクを貼って返信していますね。上記のC言語のコードは、MQL4で簡単に作り直すことができます。添付ファイルをご覧ください。

ファイル:
pi.mq4  1 kb
 
Mathemat:

ここです。ページの2番目の投稿をご覧ください。

ところで、すでに私の投稿にリンクを貼って返信してくださっていますね。上記のC言語のコードは、MQL4用に簡単に作り直すことができます。添付ファイルをご覧ください。

このスレッドを読んでいる人がリンクを飛ぶ必要がないように、テスト結果の表を作ってここに投稿してください。
 
AlexEro:

このベヒーモスの写真のリンクをプライベートメッセージで送りました - 専門学校生のデジタル*****主義に迎合するためではありません。

さあ、信じてください。あなたの写真では、ここでの彼らの数は何パーセントも変わりません。どうぞ、投稿してください。

しかし、それはいつまで続くのでしょうか?良い意味で、このようなリグには良い冷却装置、例えば次の写真のような水冷装置を取り付けるべきでしょう。

 
joo:
このスレッドを読んでいる人がリンクを飛ぶ必要がないように、テスト結果を表にしてここに書き込んでください。

テーブルではありません。写真を2枚ほど。

コンパイル設定を変えた場合のparallelpi_x.cppプログラムのテストです。MQL4との比較では、1番目の結果である6.723秒だけが重要です。 ここではアクセラレータ(SSE*、IPP、OML)は使用されていません。

しかし、もし誰かが、アクセラレータをオンにしたときに結果がどのように変化するかを見て みたいなら、以下の添付ファイルに、コンパイル済みの.exeファイルと必要な並列ライブラリのアーカイブを用意しました。必要なのは、それらを1つのディレクトリにまとめて、コマンドラインから実行することです。

もちろん、この結果は、グラフィックスカードアレイ上のモンスターとの競合を意味するものではありません。

同じプログラムをMQL4で書き直したものです。


結果は、22.98秒、つまり3.4倍となりました。しかし、そこではアレイを使った仕事はなく、我々にとっては決定的なことかもしれません。スクリプトのコードを添付します。

ファイル:
release.zip  278 kb
pi_1.mq4  1 kb
 
joo:

MQL5はMQL4と比較して20倍高速化されています。

C++はMQL5より6倍速い(自動的に並列実行するライブラリを使用した場合)。

合計:20*6=120回

GPUによる計算を利用すれば、さらに高速になります。

TOTAL: 10/120=0.083c.

というようなものです。

そこで、ファンファーレ!4つのコンパイラが競い合うようにリングに上がっている。をコンパイルしてください。

まあ、それはもちろん冗談ですが。しかし、真面目な話、6つのテストが書かれているのです。その結果は下表のとおりです。そして、コメントはさらに低くなっています。:)

#テスト
商品説明
実行ファイル名
テスト結果, s
1
Ex5スクリプトとEx5ライブラリ
1 MLP MQL コンパイラ.ex5
97.2
2
Ex5スクリプトとC++DLLライブラリ、MSコンパイラ、すべての最適化無効
2 MLP MSコンパイラ nonOpt.ex5
42.6
3
Ex5スクリプトとC++DLLライブラリ、MSコンパイラ、すべての最適化機能
3 MLP MSコンパイラ Opt.ex5
27.1
4
Ex5 スクリプトと C++ DLL ライブラリ、Intel コンパイラ、すべての最適化を含む
4 MLPインテルコンパイラ.ex5
12.5
5
Ex4スクリプトとEx4ライブラリ
5 MLP MQL4 コンパイラ.ex4
669.6
6
Ex4スクリプトおよびC++ dllライブラリ、Intelコンパイラ、すべての最適化機能有効
6 MLP MQL4 インテルコンパイラ.ex4
10.7




テスト用の重い計算として、4層のニューラルネットワークMLP 80-100-100-10を使用し、プラグインライブラリex4、ex5、dllとして設計されています。

ということがわかります。

- ex5ライブラリとex4ライブラリの接続結果は、6.8倍の差がある(1回と5回のテスト)。

- 接続されたeX5ライブラリとインテルコンパイラのDLLライブラリの結果が7.8倍異なる(1テストと4テスト)。

- eX4ライブラリとインテルコンパイラのDLLライブラリの接続結果は62.5倍異なる(テスト5と6)。

結論

もちろん、MQL4とMQL5で20倍も違うというのは、ちょっと大げさでしたね。このような違いは、2次元配列を多用した場合に発生します(この数字が頭に浮かんだのを覚えています)が、私はその特定の機能のために特別にテストを調整するのが面倒なので(その上、「重い」計算の典型例には対応しません - 典型例はテストで示されます)、私の言葉を信じるか自分でテストをしてください。したがって、MQL4とMQL5の速度差は6.8倍、MQL4とC++の速度差は62.5倍という話になります。

そして、この事実に落胆する--アハト!- このDLLを呼び出したMQL4スクリプトは、同じDLLを呼び出したMQL5スクリプトよりも高速に動作 するのですが...。どういう意味ですか?- 確認し、何度か実行しましたが、エラーはありませんでした。開発者は、MT5はMT4に比べてDLLの呼び出しが最適化されていると言っているようです。ビルドの特殊性(MT5 574とMT4 409)でテストが正確でないのか、それとも...。どうだろう。


それを必要とする人は、グリッド(4または6テストのコンパイルされたDL - 非常に高速なグリッド)を使用することができます、ソースが添付されています。各層のニューロン数は設定可能です。しかし、オプティマイザ(4と5の両方)は64以上のパラメータをサポートしておらず、さらに大きなステップを使用しなければならないので、このモンスター(テストのように、80-100-100-10、最適化するパラメータは19210!)は、標準の手段では訓練できず、カスタム最適化アルゴリズムを使用しなければなりません。ちなみに、このために(これだけではありませんが)、4ステップと5ステップのカスタムオプティマイザーを使って、0ステップでもパラメータを無制限にトレーニングできる有料ツールを作ることにしました(もちろん、ショップに 置く予定です)。

ファイル:
tests_mlp.zip  71 kb
 

説得力がありますね、じゅ、とても説得力さえあります。ただ、2点ほどあります。

まず、MSでコンパイルした場合、最良の結果(オプション3)でも、オプション1に比べて4倍弱の改善となります。

次に、Intelの全部入りコンパイラがMSより2倍以上優れているとは思えません。インテルでより最適化が可能になったということですね。

いずれにせよ、印象的でした。テーブルが最後まで埋まるのを待ちます。

このビデオカードアレイが何のためにあるのかがわかったよ。

 
Mathemat:

次に、Intelの全部入りコンパイラがMSの2倍以上の性能を持っているとは思えません。つまり、Intelはより多くの最適化を有効にしているわけです。

どれがあるんだろう......全部コンパイラの機能を全部使わないで使っても意味がない。魚は一番深いところを見るし、プログラマーは一番いいコンパイラを探す。その意味で、MQのコンパイラはカスタマイズされていないので、最適なチューニングが施されていると考えてよいでしょう。
 

と、この事実に落胆したアクトゥン!-DLLを呼び出すMQL4スクリプトは、同じDLLを呼び出すMQL5スクリプトより高速に動作 します...どういう意味ですか?- 確認し、何度か実行しましたが、エラーはありませんでした。開発者は、MT5はMT4に比べてDLLの呼び出しが最適化されていると言っているようです。ビルドの特殊性(MT5 574とMT4 409)でテストが正確でないのか、それとも...。どうだろう。



ありがとうございます。とても図解的でわかりやすいですね。

個々のパーセンテージをあまり比較しない方がいいのでしょうね : なぜなら、サスペンドされた コンピュータのCPU速度(まあ、メガヘルツMHz、ギガヘルツ、GHzでとらえるなら)は ...はゼロである。

速度差が10〜20%程度になると、プログラムや環境の信頼性、エラー処理などに気を配るのが理にかなっていると思います。例えば、MSCで作られたDLLを使う場合、複雑なterminal.exeプロセスの環境とMSVCRT.DLLの初期化ブロックの環境で動作しなければならず、バージョンによって異なる場合があるので、MSVCRT.DLLとのリンク方法やバージョンに注意しなければならないなどです。DLLでの通常のエラー処理のために、MetaTraderは例外の連鎖を構築(監視)し、それ自体がシステム全体を遅くしてDLLを呼び出したりします。

ニューロンの速度について。

FANNニューラルネットワークライブラリをOpenCLに翻訳し、平均的なGTX 285カードで20倍の加速を主張する人がいます。

"私の現在のGPU(GeForce 9500 GT)では、通常版とOpenCL版でほぼ同じ速度が出ています。現在、GTX 285を発注しているのですが、少なくとも10倍は速くなるはずです。GTX 480などの最新のGPUを搭載すれば、私の2.26GHz Nehalem Mac Proよりも少なくとも20倍は速くなると予想しています。"

...

"うん、新しいカード(GTX 285)はカーネルを20倍くらい速く走らせるんだ。"

http://leenissen.dk/fann/forum/viewtopic.php?f=2&t=658&start=0

http://leenissen.dk/fann/wp/

 

もちろん、ほとんどの人が経験済みです。

mql5.comを見ないマニアックなB4ファンのために :OpenCL: MQL5での内部実装テスト

しかし、もう少しである。

他のプラットフォームを利用しているオートトレーダーにとって、非常に魅力的なものになるのではないでしょうか。