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

 
Mathemat:

さて、いよいよお待たせしました。実験の準備ができたら、Intel OpenCL Runtime をインストールします(リンク先の 説明)。

スクリプトを何も変更せずに実行し、前の同僚と同じように「Experts」タブからログを投稿してください。スクリプトはあなたのgemで実行するのに3分ほどかかりますが、我慢してください。同時に、最もクールなベアボーンSandy Bridgeの石でOpenCLがどのように動作するのかを確認します。

根気がない人、自分の能力を超えていると思う人も、悪気はないんです。

追伸:このスクリプトの目的は、ディスクリートビデオドラゴンなしで、素のCPUがどんなことができるかを見ることです。Intel Runtimeを適切に挿入することで、このスクリプトは200前後、あるいはそれよりもわずかに高い加速度を持つようになるのではないでしょうか。

インテル® OpenCL® Runtimeが正しくインストールされているかどうか、疑わしい点があります。

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1347.164383561644

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==0.9316 at 10253 pass

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 4


 
casinonsk:

Intel OpenCL Runtimeが正しくインストールされているか疑問があります。

2012.04.23 00:17:51 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 295029 ms

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==0.9316 at 10253 pass

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 00:12:56 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 219 ms

CLContextCreate()の引数に0以外を設定したのでしょう。何も変えるなと言っただろ!私たちは、あなたの双頭のビデオドラゴンの能力をすでに知っています。でも、何本も持っているような気もします。

私の概算では、CLContextCreate(0)の時点で、CPU時間=180000ms、GPU時間=900msという数字になるはずです(概算)。そんなCPUなのに、最初のランタイムが 妙に高いんですね。他のタスクに負荷がかかっていたのでは?

添付したスクリプトをそのまま実行してください - コードは 何も変更せず 、1文字も 変更しないでください。

追伸:もちろん、device = 0はCPUではなく、他のものに対応しているのかもしれません。では、実験してください(0から3まで)。最も高い GPU の時間は、理論上、むき出しの CPU、つまりホストに対応するはずです。

 
Mathemat:

CLContextCreate()の引数に0を設定せず、別のものを設定しています。何も変えるなと言っただろ!私たちは、あなたの双頭のビデオドラゴンの能力をすでに知っています。でも、いくつも持っているようですね。

私の概算では、CLContextCreate(0)の時点で、CPU時間=180000ms、GPU時間=900msのオーダーになるはずです(概算)。そんなCPUなのに、最初のランタイムが 妙に高いんですね。他のタスクに負荷がかかっていたのでは?

添付したスクリプトを、何も変更せず、1文字も 変更せず、そのまま実行してもらえますか?

追伸:もちろん、device = 0はCPUではなく、他のものに対応しているのかもしれません。では、実験してください(0から3まで)。最も高い GPU の時間は、理論上、むき出しの CPU、つまりホストに対応するはずです。

パラメータは変えていない!そのまま走らせた。

ビデオによると、はい、2x590です。

CLContextCreate(0)1,2,3 で再度試してみましたが、結果は前回と同じです。

Intel OpenCL Runtimeに 問題がある可能性があります。

 
casinonsk:

パラメータを変更しなかった!そのままスタート。

CLContextCreate(0)1,2,3 で再度実行しても、結果は前と同じです。

結果はすべて同じ?信じられない...まあ、このスクリプトは素のCPUでGPU時間=219msはありえないんですけどね。せいぜい800ms程度だろうが、200ms程度ではダメだ。

以下は、私の典型的な結果です(CPUはPentium G840です)。

2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CpuTime/GpuTime = 88.40817091454272
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Result on Cpu МахResult==1.05116 at 7785 pass
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:23:09    ParallelTester_00-01x (EURUSD,H1)    CPU time = 235873 ms
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Result on Gpu МахResult==1.05116 at 7785 pass
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:19:13    ParallelTester_00-01x (EURUSD,H1)    GPU time = 2668 ms
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    OpenCL init OK!
2012.04.22 22:19:10    ParallelTester_00-01x (EURUSD,H1)    CLGetInfoInteger() returned 1

よし、次に行こう。

 
Mathemat:

結果はすべて同じなのか?信じられない...まあ、このスクリプトは素のCPUでGPU時間=219msはありえないんですけどね。せいぜい800ms程度で、200ms程度ではダメでしょう。

OK、忘れてください。

CLContextCreate(0)で再チャレンジしてみたところ

 2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CpuTime/GpuTime = 1265.405982905983

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Result on Cpu МахResult==1.48772 at 2051 pass

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:27:15 ParallelTester_00-01x__3 (EURUSD,H1) CPU time = 296105 ms

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Result on Gpu МахResult==1.48772 at 2051 pass

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) Соunt indicators = 16; Count history bars = 144000; Count pass = 12800

2012.04.23 01:22:19 ParallelTester_00-01x__3 (EURUSD,H1) GPU time = 234 ms

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) OpenCL init OK!

2012.04.23 01:22:18 ParallelTester_00-01x__3 (EURUSD,H1) CLGetInfoInteger() returned 5


 
casinonsk: CLContextCreate(0)で再試行したところです。

CPUではなくディスクリート・カードであることは明らかで、エミュレーションでこのような高速化はほとんど不可能です。しかも、持っている端末の数がすでに5台というのが不気味です。

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

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

面白い結果が出ました ))な るほど、デバイスの総数ではなく、現在の数ですね

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0

計算中ではありますが、準備が整い次第、掲載させていただきます。

ちなみに、CLGetInfoInteger() もCL_DEVICE_COUNTもヘルプには存在しない。

PS.結果

2012.04.22 22:02:51     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 0
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 11357 ms
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:03:03     ParallelTester_00-01 x_cycle (EURUSD,M30)        OpenCL init OK! Device number = 1
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        GPU time = 998 ms
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:03:04     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Gpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CPU time = 428706 ms
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Соunt indicators = 16; Count history bars = 144000; Count pass = 12800
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        Result on Cpu МахResult==1.68487 at 9198 pass
2012.04.22 22:10:13     ParallelTester_00-01 x_cycle (EURUSD,M30)        CpuTime/GpuTime = 429.565130260521
 
fyords: ちなみに、ヘルプにはCLGetInfoInteger()もCL_DEVICE_COUNTも出てきません。

PS.結果

ヘルプを更新してください、あなたのものは古くなっています。

2.あなたは

2012.03.04 22:27:16     Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 295.73)
2012.03.04 22:27:16     Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2812 MHz, 2048 Mb, version 2.0)

最初の11357msはホスト(素のCPU)、2番目の998msはグラフィックカードのことである可能性が非常に高い。ホストでの利得のオーダーは、おおまかに言って、AMD OpenCLで達成された加速度(4コアのAthlon IIで約38倍)とかなり一致する。本当はもっと少ないのですが、50〜60に近いところで、もっと多いはずです。メモリが非常に遅くなっている可能性が高いです。

CpuTime/GpuTimeの数値は、もちろん、最後に計算されたデバイスに対してのみ計算されます。

 
Mathemat:

1.ヘルプを更新してください、あなたのは明らかに時代遅れです。

2.CpuTime/GpuTimeの数値は、もちろん、最後に計算されたデバイスに対してのみ計算されます。

1.手動で更新しました全てあります、ありがとうございます、しかし、ヘルプはターミナルとメタエディターと一緒に更新されていないのでしょうか?

2.はい、でもやっぱり、いいですね)。

 
papaklass:

このハードウェアでは、ホストが OpenCL デバイスであることは、ほぼ明らかです。一方で、先ほど(51ページ)、どうしてあんなに高い結果が出たのか不思議です。

2012.04.08 13:28:01     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       OpenCL init OK!
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       GPU time = 7145 ms
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:28:08     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Gpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CPU time = 422888 ms
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 4096
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       Result on Cpu МахResult==3.86669 at 1682 pass
2012.04.08 13:35:11     ParallelTester_00-02-s16x7x3k (EURUSD,H1)       CpuTime/GpuTime = 59.18656403079076

なぜかコード挿入 でカーソルが出せない。そして、私が誰かを引用しても、同じように無意味なことです。フォーラムのバグでしょうか?

フォーラムエンジンのバグである可能性が高いですが、必ずしもそうとは限りません。いつもはHTMLバーをクリックして、最後のタグの後に数文字を手動で挿入しています。そして、投稿のビジュアル編集モードに戻る。