OpenCL:MQL5での内部実装テスト - ページ 50 1...434445464748495051525354555657...70 新しいコメント Rashid Umarov 2012.04.08 13:37 #491 Mathemat: これがトリックの正体です。CLContextCreate()内の引数は、少なくとも1つの外部GPUが存在する場合、明示的にCPUを選択することができません。こんなはずじゃなかった -https://www.mql5.com/ru/docs/opencl/clcontextcreateパラメータ 装置 [in] システム内のOpenCLデバイスの数(順不同)。CL_USE_ANY - 利用可能なあらゆるOpenCL対応デバイスを使用可能。 CL_USE_GPU_ONLY- OpenCLエミュレーションを無効にして、OpenCL専用デバイス(ビデオカード)のみを使用可能。 Документация по MQL5: Работа с OpenCL / CLContextCreate www.mql5.com Работа с OpenCL / CLContextCreate - Документация по MQL5 Sceptic Philozoff 2012.04.08 13:53 #492 Rosh: こんなはずじゃなかった -https://www.mql5.com/ru/docs/opencl/clcontextcreateそう思います、そうであってはならないのです。しかし、この番号をどこで取得し、そして選択するのか。https://www.mql5.com/ru/docs/opencl/clgetinfointeger? しかし、プロパティはデバイスの数であるCL_DEVICE_COUNTのみ です。私のシステムには1つある、だから1が返ってくるのだ。 Документация по MQL5: Работа с OpenCL / CLGetInfoInteger www.mql5.com Работа с OpenCL / CLGetInfoInteger - Документация по MQL5 Renat Fatkhullin 2012.04.08 13:56 #493 最新の619ビルドにアップグレードし、プログラムを再コンパイルすることを忘れないでください。このビルドでは、OpenCLの初期化原則が変更されています。 Rashid Umarov 2012.04.08 14:05 #494 Mathemat:そう思います、そうであってはならないのです。しかし、この数字をどこから得て、そして選ぶのでしょうか。 CL_USE_GPU_ONLYを指定してみると、ビデオカードが取られ、番号が不要になります。 Sceptic Philozoff 2012.04.08 14:17 #495 Rosh: CL_USE_GPU_ONLYを指定すると、ビデオカードが取られ、番号が不要になるので試してみるとよいでしょう。 これは理解できる。しかし、CPU-ディスクリートグラフィックカードを指定したい。どうすればいいのか? Sceptic Philozoff 2012.04.08 17:26 #496 すごい!では、HD4200はOpenCLのデバイスではないのですね。本当に純粋なCPUエミュレーションが行われているようですね。好きです!i3に教えられたらどうしよう...。 i3のMT5でAMD APP SDKが正常に動作しない理由を漠然と考え始めている:すべてのコアが本物ではないこと、AMDにはハイパートレーディングの技術がないこと。おそらく、そのためにドライバーがおかしな形で挿入しているのでしょう。それとも、MT5では、形式的には認識しているが、実際には何の役にも立たないという仕掛けなのでしょうか? Vladimir Gomonov 2012.04.08 17:40 #497 Mathemat: ここにコツがあります。CLContextCreate()内の引数は、少なくとも1つの外部GPUが存在する場合、明示的にCPUを選択することができません。これは、CPU(私の場合はデバイス1)上です。2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) CpuTime/GpuTime = 74.73506433823529 2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Result on Cpu МахResult==4.54091 at 2233 pass 2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 21:03:01 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) CPU time = 325247 ms 2012.04.08 20:57:36 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Result on Gpu МахResult==4.54091 at 2233 pass 2012.04.08 20:57:36 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 20:57:36 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) GPU time = 4352 ms 2012.04.08 20:57:32 ParallelTester_00-02-(16 x7x3) (USDJPY,M30) OpenCL init OK! CLContextCreate(device)パラメータを スクリプトパラメータに引き込みました。 すべてのオプションを突き合わせることができます。// もしかしたら、まだ秘密の組み合わせがあるのかも?:)) ファイル: ParallelTester_00-02-316x7x3j.ex5 28 kb Sceptic Philozoff 2012.04.08 18:12 #498 2012.04.08 22:01:08 Terminal CPU: GenuineIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CpuTime/GpuTime = 26.95192501511792 2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Cpu МахResult==4.98137 at 1628 pass 2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CPU time = 267417 ms 2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Gpu МахResult==4.98137 at 1628 pass 2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) GPU time = 9922 ms 2012.04.08 22:01:22 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) OpenCL init OK!ありがとうございます、知りませんでした...。3倍のコアを搭載しているので、74.735/26.952~2.77と、3対1くらいの比率になるとは思っていました。コアが増えるということは、それだけ利得が増えるということですからね。AMDはここでもベイルアウトしましたね〜コア数の関係で!でも、他の人はどうなんでしょうね。例えば、i5のSandy Bridgeを持っている人とか?それに、もし誰かがブルドーザーeを持っていたら、すごくかっこいいかも...。とはいえ、FPUの問題なので、そうならないかもしれませんが。 テストの操作ログ - アルゴリズム取引、自動売買ロボット Andrey Dik 2012.04.08 19:24 #499 MetaDriver:そして今回のテストでは、なぜか私のアイロンがあなたのアイロンを破ってしまったのです。2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CpuTime/GpuTime = 161.0007722007722 2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Cpu МахResult==4.85831 at 2497 pass 2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CPU time = 208496 ms 2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Gpu МахResult==4.85831 at 2497 pass 2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096 2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 1295 ms2012.04.09 01:06:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!そして、OpenCL CPUでのテストです(4コア全てに100%負荷がかかっています)。2012.04.09 01:11:15 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 68547 ms2012.04.09 01:10:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!GPUは480個、CPUは4個、その差は120倍、つまり120倍もの計算が一度にできるのに、CPUはGPUに68547/1295=52.9倍しか遅れをとっていないのです。つまり、CPUのスレッドはGPUのスレッドよりも高速ですが、GPUはより多くの同時タスクを実行できるため勝っているだけなのです。正しく理解できているか? CPUのスケーリングは100%よりずっと少ない(約76%)、代わりに4倍の3倍加速のみ208496/68547=3.04もっとも、このテストの仕様が影響しているのかもしれませんが。 テストの操作ログ - アルゴリズム取引、自動売買ロボット Sceptic Philozoff 2012.04.08 19:46 #500 MDは このテストをCPU上で、グラフィックカードなしで、つまり直接CPUエミュレーションを選択して投稿しただけです。私の理解では、最初のテストはグラフィックカードで行います。そして、あなたのOpenCLをエミュレートしたグラフィックカードの結果(あなたの2つ目のテスト)は、私のものと比べても怪しく低いようです(私は「GPU」で10秒程度でした)。 もし私が何か誤解していたら、訂正してください。 1...434445464748495051525354555657...70 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これがトリックの正体です。CLContextCreate()内の引数は、少なくとも1つの外部GPUが存在する場合、明示的にCPUを選択することができません。
こんなはずじゃなかった -https://www.mql5.com/ru/docs/opencl/clcontextcreate
パラメータ
装置
[in] システム内のOpenCLデバイスの数(順不同)。CL_USE_ANY - 利用可能なあらゆるOpenCL対応デバイスを使用可能。 CL_USE_GPU_ONLY- OpenCLエミュレーションを無効にして、OpenCL専用デバイス(ビデオカード)のみを使用可能。
そう思います、そうであってはならないのです。しかし、この番号をどこで取得し、そして選択するのか。
https://www.mql5.com/ru/docs/opencl/clgetinfointeger? しかし、プロパティはデバイスの数であるCL_DEVICE_COUNTのみ です。
私のシステムには1つある、だから1が返ってくるのだ。
そう思います、そうであってはならないのです。しかし、この数字をどこから得て、そして選ぶのでしょうか。
CL_USE_GPU_ONLYを指定してみると、ビデオカードが取られ、番号が不要になります。
すごい!では、HD4200はOpenCLのデバイスではないのですね。
本当に純粋なCPUエミュレーションが行われているようですね。好きです!
i3に教えられたらどうしよう...。
i3のMT5でAMD APP SDKが正常に動作しない理由を漠然と考え始めている:すべてのコアが本物ではないこと、AMDにはハイパートレーディングの技術がないこと。おそらく、そのためにドライバーがおかしな形で挿入しているのでしょう。
それとも、MT5では、形式的には認識しているが、実際には何の役にも立たないという仕掛けなのでしょうか?
ここにコツがあります。CLContextCreate()内の引数は、少なくとも1つの外部GPUが存在する場合、明示的にCPUを選択することができません。
これは、CPU(私の場合はデバイス1)上です。
CLContextCreate(device)パラメータを スクリプトパラメータに引き込みました。 すべてのオプションを突き合わせることができます。
// もしかしたら、まだ秘密の組み合わせがあるのかも?:))
2012.04.08 22:01:08 Terminal CPU: GenuineIntel Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 8040 Mb, version 2.0 (sse2))
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CpuTime/GpuTime = 26.95192501511792
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Cpu МахResult==4.98137 at 1628 pass
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:05:59 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) CPU time = 267417 ms
2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Result on Gpu МахResult==4.98137 at 1628 pass
2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 22:01:32 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) GPU time = 9922 ms
2012.04.08 22:01:22 ParallelTester_00-02-316x7x3j_080412 (EURUSD,H1) OpenCL init OK!
ありがとうございます、知りませんでした...。
3倍のコアを搭載しているので、74.735/26.952~2.77と、3対1くらいの比率になるとは思っていました。コアが増えるということは、それだけ利得が増えるということですからね。AMDはここでもベイルアウトしましたね〜コア数の関係で!
でも、他の人はどうなんでしょうね。例えば、i5のSandy Bridgeを持っている人とか?
それに、もし誰かがブルドーザーeを持っていたら、すごくかっこいいかも...。とはいえ、FPUの問題なので、そうならないかもしれませんが。
そして今回のテストでは、なぜか私のアイロンがあなたのアイロンを破ってしまったのです。
2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CpuTime/GpuTime = 161.0007722007722
2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Cpu МахResult==4.85831 at 2497 pass2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:09:36 ParallelTester_00-02-316x7x3j (EURUSD,H1) CPU time = 208496 ms
2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Result on Gpu МахResult==4.85831 at 2497 pass
2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.09 01:06:08 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 1295 ms
2012.04.09 01:06:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!
そして、OpenCL CPUでのテストです(4コア全てに100%負荷がかかっています)。
2012.04.09 01:11:15 ParallelTester_00-02-316x7x3j (EURUSD,H1) GPU time = 68547 ms
2012.04.09 01:10:07 ParallelTester_00-02-316x7x3j (EURUSD,H1) OpenCL init OK!
GPUは480個、CPUは4個、その差は120倍、つまり120倍もの計算が一度にできるのに、CPUはGPUに68547/1295=52.9倍しか遅れをとっていないのです。つまり、CPUのスレッドはGPUのスレッドよりも高速ですが、GPUはより多くの同時タスクを実行できるため勝っているだけなのです。正しく理解できているか?
CPUのスケーリングは100%よりずっと少ない(約76%)、代わりに4倍の3倍加速のみ208496/68547=3.04
もっとも、このテストの仕様が影響しているのかもしれませんが。
MDは このテストをCPU上で、グラフィックカードなしで、つまり直接CPUエミュレーションを選択して投稿しただけです。私の理解では、最初のテストはグラフィックカードで行います。
そして、あなたのOpenCLをエミュレートしたグラフィックカードの結果(あなたの2つ目のテスト)は、私のものと比べても怪しく低いようです(私は「GPU」で10秒程度でした)。
もし私が何か誤解していたら、訂正してください。