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

 
Mathemat:

ああ、MD、素のCPUでそんなに頑張ってないのか。インテルが全盛だけどね...。

おいおい、せっかくいいグラフィックカード持ってるのに。

一度アンインストールして真っ暗闇の中でWindowsが不適切なドライバでひっかけてしまい、視界1%の状況でAMD APP SDKを入れ直したことがあります。 楽しかったなあ...。:)) 百回目のボタンを全て押す.........................。
 
MetaDriver: ああ、でもドライバーが曲がっているかもしれないから、触るのは怖いな。
面白いことに、ネイティブドライバでさえも曲がっているんですよ。Intel用もAMD用も。ただの成長不良であることを祈ろう。
 

このピュアCPUでのOpenCLは、MQL5だけなのか、それとも他の言語でも加速されるのか、教えてください。

MQL5 + OpenCL VSC++ + フルコンパイラ最適化 の比較はされましたか?

かっこいいのはOpenCLではなく、MQL5自体に最適化が施されていないことなのではと思います。

追伸:i7 2700Kを持っているので、きれいなCPUでテストしてみます(いつになるやら)。

 
Mathemat:
面白いことに、IntelとAMDの両方で、ネイティブドライバさえも曲がっているのです。ただの成長不良であることを祈ろう
ええ、まあ、2、3年後にはこんなことにならないように、すべてがうまくいくようにと願っています。当面は、このようなものをきちんとプログラミングできるようになることが先決ですが......。:)
 
hrenfx:

このピュアCPUでのOpenCLは、MQL5だけなのか、それとも他の言語でも加速されるのか、教えてください。

MQL5 + OpenCL VSC++ + フルコンパイラ最適化 の比較はされましたか?

かっこいいのはOpenCLではなく、MQL5自体に最適化が施されていないことなのではと思います。

追伸:i7 2700Kを持っているので、(現地に行ったら)きれいなCPUでテストしてみようと思っています。

いや、してない。

がんばれーいいものですね。

基本的には、せいぜい10分程度でC++にコードが移植されます(素のCPUでカウント)。 C++でOpenCLを使う方法 私は入門書で見ただけで、試したことがありません。 実は、試してみたかったのです。

 
hrenfx: クールなのはOpenCLではなく、MQL5自体の最適化不足ではないかとの疑念があります。

そう、論理的なのです。先日、ixbtのフォーラムで、同じ意見のCPUアナリストとディスカッションをしたんです。ここで 議論が始まりました(ニックネームはtamehtaM です)。私の無能さを蹴らないでください。しかし、フェリドは 、IGPが存在しないか、あるいは弱すぎるのに、IGPについて語ることが多すぎるという印象もあります。

このスレッドの最初の投稿は、Intel OpenCL ランタイムを正しくインストールする方法をまだ知らないときに書いたものです。実際、正しく設定できたかどうか、まだ自信がありません。しかし、AMD APP SDKに比べれば、すでに3倍くらいは良くなっています。

加速度の数値が痛いほど大きいのは確かです。そして、最適化が現れると、明らかに低くなるはずです。

興味深いことに、これらの最適化を行っていない場合でも、5番目の方が4番目よりも高速です。

また、加速度そのものはメインではありません。メインはランタイムの絶対値です。絶対に悪くならない。正確には、これ以上悪くならないようにすることです。

 
Mathemat:

これは明らかにCPUではなくディスクリートカードです。このようなスピードアップは、エミュレーションではほとんど達成できません。しかも、端末の数がすでに5台というのは、本当に不気味です。

もしよろしければ、少し修正したコードを実行していただき、その結果をここに投稿してください。コード上では、OpenCLの各デバイスの計算はループに入れられ(高速になるはず)、一番長いx86の計算は一度だけ実行されます。長くなりますが、スクリプト自体は一度だけ実行されます。

私は、すでにあなたを退屈させていることに気づいています。しかし、いずれにせよ、サポートチームにとっては良い情報でしょう。

その結果がこちらです。

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Cpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CPU time = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Gpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU時間=687ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!デバイス番号=4
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Gpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU時間=234ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!デバイス番号=3
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Gpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) GPU時間=234ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!デバイス番号=2
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Gpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU時間=234ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!デバイス番号=1
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Gpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) Count indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) GPU時間=234ms
2012.04.23 21:37:54 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!デバイス番号 = 0

 
casinonsk:

その結果がこちらです。

2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CpuTime/GpuTime = 439.0727802037846
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Cpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:42:58 ParallelTester_00-01x_cycle (EURUSD,H1) CPU time = 301643 ms
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Gpuでの結果 MachResult==1.41575 at 7544 pass
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) Social indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.23 21:37:56 ParallelTester_00-01x_cycle (EURUSD,H1) GPU時間=687ms
2012.04.23 21:37:55 ParallelTester_00-01x_cycle (EURUSD,H1) OpenCL init OK!デバイス番号=4

これで、デバイス=4が裸のCPUであることが明らかになったわけです。そして、 GPU時間=687msと、かなり安定しています。うまくいきましたね。

CPU時間の実行時間が長いのが理解できない。コア周波数がかなり低い(2.8GHz)状態で235000ms程度です。

メモリが少ないか、非常に遅いか、CPUが何かひどくリソースを消費するタスクによって恒常的に過負荷になっているかのいずれかである。はっきりしないんです。時間比率の数値が不自然に高い。

 
Mathemat:

これではっきりしたわけですが、デバイス=4は素のCPUです。そして、 GPU時間=687msと、かなり安定しています。うまくいきましたね。

わからないのは、実行時間CPU 時間が長い理由です。コア周波数がかなり低い(2.8GHz)場合、約235000msになります。

メモリが少ないか、非常に遅いか、CPUが何かひどくリソースを消費するタスクによって恒常的に過負荷になっているかのいずれかである。はっきりしないんです。時間比率の数値が不自然に高い。

Expert Advisorは最適化中で、コアに少し負荷がかかっています。

16Gbメモリ

 
casinonsk: Expert Advisorは最適化中で、コアは少し負荷がかかっています。

そうすれば、すべてがクリアになります。最適化が終了したら、同じスクリプトを実行してみてください。おそらく全コアに負荷がかかっているのでしょう。

何もないときに、むき出しの最上位CPUを見るのは非常に面白い。