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

 

何かうまくいかないんです。初期化行は問題ありません。

2012.04.01 05:52:01    Terminal    CPU: GenuineIntel  Intel(R) Pentium(R) CPU G840 @ 2.80GHz with OpenCL 1.2 (2 units, 2793 MHz, 7912 Mb, version 2.0 (sse2))


(AMDのOpenCL1.1と1.2を重ねました)。しかし、現在、テストを 実行すると、次のような結果が得られます。

2012.04.01 06:06:49    ParallelTester_00-01x (EURUSD,H1)    OpenCL not found.


その前に、Intel Graphics Driverを新しいバージョンに更新し、AMD Driverを独自インストールでダウンさせ、再度インストールしました。

私は今、何を間違えているのだろう?

追伸:まもなくIvyが登場し、Intel HD 4000とともに、Intelが統合グラフィックスで何ができるかを実際に示すことに なるでしょう。グラフィックを見て ください。

Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
Сравнение между Intel Ivy Bridge и Sandy Bridge в различных бенчмарках
  • 2011.11.30
  • gagadget.com
Стали доступны утекшие в сеть слайды, где с демонстрируется разница между процессорами Intel Ivy Bridge и Sandy Bridge в бенчмарках. Если быть точным, то сравниваются модели Core i7-3770 и Core i7-2600 (i7-3770K и i7-2600K по какой-то причине не были использованы).
 
Mathemat:

私は今、何を間違えているのだろう?

テストを再コンパイルしてください、それで解決するはずです。
 
Mathemat:

さて、私は何を間違えているのでしょうか?
CLCreateContext の bool use_gpu パラメータを int device (デバイス番号) に変更しました。 コードを修正します。
 
mql5:
新しいビルドでは、CLContextCreate 関数のパラメータが変更され、bool use_gpu の代わりに int device が使用されます。 with device>=0 は、一連の OpenCL デバイスの番号として使用されます with device==OPENCL_DEVICE_ANY (-1) は、すべての利用可能デバイスから自動的に選択されます with device==OPENCL_DEVICE_GPU (-2) は、すべての利用可能 GPU デバイスから自動的に選択されま す。





その方法をコードで教えていただけませんか? CLContextCreate( OPENCL_DEVICE_ANY ) を呼び出し、コンパイル時の結果を取得します。

'OPENCL_DEVICE_ANY' - undeclared identifier    ParallelTester_00-01x.mq5    145    31


ビルド619。

そして2つ目の質問ですが、最新のヘルプはどこにあるのでしょうか?

追伸:引数を-1にしたらすぐに動きました。OPENCL_DEVICE_ANY定数はまだ宣言されていません :)

 
ビルド619では、これらの定数はCL_DEVICE_ANY/CL_DEVICE_GPUに名前が変更されています。

しかし、将来のビルドではCL_USE_ANY/CL_USE_GPU_ONLYになる予定です。
 

私は、i3-2120でOpenCLがどのように動作するかを確認することにしました(私のコンピュートではなく、システムにはディスクリートビデオはありません)。AMD APP SDKをインストールし、OpenCL-Zが全てを検出しました。端末が初期化中に行を表示した。

2012.04.02 03:59:47    Terminal    CPU: GenuineIntel  Intel(R) Core(TM) i3-2120 CPU @ 3.30GHz with OpenCL 1.1 (4 units, 3310 MHz, 8039 Mb, version 2.0)


この投稿に添付されたMetaDriverの コードで確認し、619ビルドの最新の変更で少し修正しました(最初のテストはこちらを ご覧ください)。結果

2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 0.741385550890401
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:43    ParallelTester_00-01x (EURUSD,H1)    CPU time = 20483 ms
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==0.79567 at 734 pass
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1280
2012.04.02 04:00:22    ParallelTester_00-01x (EURUSD,H1)    GPU time = 27628 ms
2012.04.02 03:59:55    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!


GPU」での実行時には、プロセッサの4つのスレッドがすべて100%フル稼働していました。

加速度を得るために必要なことは何ですか?Pentium G840ベースのシステム(こちらもディスクリートビデオなし)では、25倍もの速さだった。

追伸:サービスデスクにメッセージを送りましたが、これはむしろ私の問題だと思うのですが...。どうやら目をつぶってAMD APP SDKのインストールとアンインストールを正しく行う方法を学んだようですが、すべての落とし穴に手をつけたわけではなさそうです。Intel OpenCL Runtimeがシステムにインストールされているにもかかわらず、ターミナルでOpenCLデバイスとして認識されない。

P.P.S.判明!他にもこんなものを掘り出しました(https://www.mql5.com/ru/forum/6042/page25)

Ashes: 2012.03.05 17:43:16 Terminal CPU: GenuineIntel(R) Core(TM) i3-2100 CPU@ 3.10GHz with OpenCL 1.1 (4 units, 3092 MHz, 4008 Mb, version 2.0).

2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) CpuTime/GpuTime = 0.734767766287369
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD,M1) Cpuでの結果 MachResult==1.27347 at 1125 pass
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) インティケータ数 = 16; ヒストリーバー数 = 144000; パス数 = 1280
2012.03.05 17:45:23 ParallelTester_00-01x (EURUSD, M1) CPU時間=21309ms
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD,M1) Gpuでの結果 MachResult==1.27347 at 1125 pass
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) インティケータ数 = 16; ヒストリーバー数 = 144000; パス数 = 1280
2012.03.05 17:45:02 ParallelTester_00-01x (EURUSD, M1) GPU時間=29001ms
2012.03.05 17:44:33 ParallelTester_00-01x (EURUSD,M1) OpenCL init OK!

:(((

もしかしたら、私は「間違ったシステムの手榴弾」を持っているのでは?(AMD SDKのバージョンという意味です)

CPUだってi3-2120とほぼ同じだし...。
ファイル:
 

やはり、GPU+OpenCLは素晴らしいツールですね。

2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CpuTime/GpuTime = 728.1857142857143
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Cpuでの結果 MachResult==3.78654 at 50 pass
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) インティケータ数 = 16; ヒストリーバー数 = 50,000; パス数 = 1280
2012.04.08 00:41:22 ParallelTester_00-02-(16x7x3) (USDJPY,M30) CPU time = 101946 ms
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) Gpuでの結果 MachResult==3.78654 at 50 pass
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) インティケータ数 = 16; ヒストリーバー数 = 50,000; パス数 = 1280
2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU時間=140ms

 
MetaDriver:

やはり、GPU+OpenCLは素晴らしいツールですね。

2012.04.08 00:39:40 ParallelTester_00-02-(16x7x3) (USDJPY,M30) GPU時間=140ms

GPUの計算時間があまり小さくならないようなテストにすることを提案します。いずれにせよ、140msという値は、特にGetTickCount()の 測定誤差が数十ミリ秒であることを考えると、あまりにも信頼性の低い値であると思います。

MD さん、それは私が嫉妬しているんですよ。

 
Mathemat:

GPUの計算時間があまり小さくならないようなテストにした方がいいと思います。

CPUを待つ忍耐力がない :)森に入れば入るほど、GPUは冷える...。
 
MigVRN:
CPUを待つ忍耐力はない :)森に入れば入るほど、GPUは冷える...。

同じく。:)

でも、4096バチで走らせると、CPUが5分でカウントしてくれるんです。