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

 
MetaDriver:

...

--

512を作って見てください。プログラムをパクることを怖がらないでください。:)出来上がったら、ここに投稿してください。

よっしゃー512パス、144000バーの場合。

PK      0       po_00-02 (GBPJPY,M5)    23:38:29        OpenCL init OK.
LS      0       po_00-02 (GBPJPY,M5)    23:38:30        Generation 001 (512 passes, 1186 ms) : MaxResult==81.21127; Average Result==24.14348
PR      0       po_00-02 (GBPJPY,M5)    23:38:32        Generation 002 (512 passes, 1170 ms) : MaxResult==88.56933; Average Result==45.67882
RF      0       po_00-02 (GBPJPY,M5)    23:38:33        Generation 003 (512 passes, 1170 ms) : MaxResult==100.78146; Average Result==66.20171
RF      0       po_00-02 (GBPJPY,M5)    23:38:34        Generation 004 (512 passes, 1170 ms) : MaxResult==107.30714; Average Result==82.67181
RG      0       po_00-02 (GBPJPY,M5)    23:38:35        Generation 005 (512 passes, 1170 ms) : MaxResult==115.61784; Average Result==93.52664
DG      0       po_00-02 (GBPJPY,M5)    23:38:36        Generation 006 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==100.41042
CG      0       po_00-02 (GBPJPY,M5)    23:38:37        Generation 007 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==103.95667
JF      0       po_00-02 (GBPJPY,M5)    23:38:39        Generation 008 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==105.85167
NI      0       po_00-02 (GBPJPY,M5)    23:38:40        Generation 009 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==106.22531
MI      0       po_00-02 (GBPJPY,M5)    23:38:41        Generation 010 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==106.33067
GH      0       po_00-02 (GBPJPY,M5)    23:38:42        Generation 011 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==106.23798
DK      0       po_00-02 (GBPJPY,M5)    23:38:43        Generation 012 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==106.02062
PK      0       po_00-02 (GBPJPY,M5)    23:38:44        Generation 013 (512 passes, 1170 ms) : MaxResult==116.37332; Average Result==105.62199
CJ      0       po_00-02 (GBPJPY,M5)    23:38:44        Optimization finished. Best result == 116.37332 at 13 generation.
RM      0       po_00-02 (GBPJPY,M5)    23:38:44        Total time of optimization == 15 sec 226 ms

まあ、そして60が最適なら、一般的にクールだ。

FG      0       po_00-02 (GBPJPY,M5)    23:39:44        OpenCL init OK.
OO      0       po_00-02 (GBPJPY,M5)    23:39:44        Generation 001 (60 passes, 312 ms) : MaxResult==91.27985; Average Result==38.30907
RN      0       po_00-02 (GBPJPY,M5)    23:39:44        Generation 002 (60 passes, 312 ms) : MaxResult==94.08679; Average Result==48.68662
DR      0       po_00-02 (GBPJPY,M5)    23:39:45        Generation 003 (60 passes, 296 ms) : MaxResult==108.52215; Average Result==58.43468
IS      0       po_00-02 (GBPJPY,M5)    23:39:45        Generation 004 (60 passes, 312 ms) : MaxResult==129.80438; Average Result==65.32684
DP      0       po_00-02 (GBPJPY,M5)    23:39:45        Generation 005 (60 passes, 297 ms) : MaxResult==144.99834; Average Result==73.78468
MQ      0       po_00-02 (GBPJPY,M5)    23:39:46        Generation 006 (60 passes, 297 ms) : MaxResult==144.99834; Average Result==79.96281
QF      0       po_00-02 (GBPJPY,M5)    23:39:46        Generation 007 (60 passes, 312 ms) : MaxResult==152.74852; Average Result==85.70296
EG      0       po_00-02 (GBPJPY,M5)    23:39:46        Generation 008 (60 passes, 312 ms) : MaxResult==152.74852; Average Result==87.95421
PD      0       po_00-02 (GBPJPY,M5)    23:39:46        Generation 009 (60 passes, 296 ms) : MaxResult==152.74852; Average Result==89.29836
CE      0       po_00-02 (GBPJPY,M5)    23:39:47        Generation 010 (60 passes, 312 ms) : MaxResult==152.74852; Average Result==87.88991
OI      0       po_00-02 (GBPJPY,M5)    23:39:47        Generation 011 (60 passes, 296 ms) : MaxResult==152.74852; Average Result==85.3231
HK      0       po_00-02 (GBPJPY,M5)    23:39:47        Generation 012 (60 passes, 312 ms) : MaxResult==152.74852; Average Result==81.60567
IH      0       po_00-02 (GBPJPY,M5)    23:39:48        Generation 013 (60 passes, 297 ms) : MaxResult==152.74852; Average Result==77.38504
QI      0       po_00-02 (GBPJPY,M5)    23:39:48        Generation 014 (60 passes, 312 ms) : MaxResult==152.74852; Average Result==76.46695
EM      0       po_00-02 (GBPJPY,M5)    23:39:48        Optimization finished. Best result == 152.74852 at 14 generation.
PO      0       po_00-02 (GBPJPY,M5)    23:39:48        Total time of optimization == 4 sec 290 ms

//---

つまり、このスレッドで紹介されている最弱のノートパソコンでは、このような結果になるのです。だから、とても期待できる。

//---

残念ながら、jooの 記事やニューラルネットワークにも手をつけておらず、一方でOpenCLも掘り下げて いないため、自由に論じることができません。コードの一行一行を理解しないと、あれもこれも使えない。すべてを知りたい。)))トレーディングプログラムのエンジンはまだ完成していません。やることが多すぎて、もう頭がグルグルしています。)))

 

CountBarsを30倍(4,320,000)に増やし、石の負荷に対する耐性をテストすることにしました。

どうでもいいことですが、動作して、暖かくなっても、あまり汗をかかない。温度は徐々に上昇しているが、すでに飽和状態に達している。

赤い線が温度、緑の線がコアの負荷です。


だからこそ、私はインテルのSandy Bridge仕様が大好きなのです。「グリーン」なのです。確かにグラフィックはイマイチですが、Ivy Bridgeがどうなるかは...。
 
Mathemat:

...

だから、私はインテルのSandy Bridgeモデルが大好きなのです。「グリーン」なのです。ああ、グラフィックはイマイチだけど、Ivy Bridgeが どうなるか......。

ああ(苦笑)。これが本当のストレステストです。:)私のは今頃死んでいるかもしれませんね。

その後、なんとHaswell、そして少し遅れてRockwellが...。)))

 

OpenCLによるバーンズリー・シダの実装例。

計算はカオスゲームアルゴリズム(例)に基づき、スレッドIDに依存する生成基数を持つ乱数生成器を用い、get_global_id(0) を返すことでユニークな軌跡を生成している。

IFS fern OpenCL

スケールを大きくすると、画質を維持するために必要な点数は2次関数的に増加するため、この実装では、各カーネルインスタンスが可視領域内に収まる固定数の点を描画することを想定しています。

推定スレッド数は191行目で指定されています。

   uint  work  []={500};

は、233 行目にある点数です。

   float pointsneeded=float(MathRound(1500+scale));

アップデイト

IFS-fern.mq5 - CPUアナログ

scale=1000の場合。


Chaos game - Wikipedia, the free encyclopedia
Chaos game - Wikipedia, the free encyclopedia
  • en.wikipedia.org
In mathematics, the term chaos game, as coined by Michael Barnsley,1 originally referred to a method of creating a fractal, using a polygon and an initial point selected at random inside it.2 The fractal is created by iteratively creating a sequence of points, starting with the initial random point, in which each point in the sequence is a...
ファイル:
 
美しい。
 

16x7x3層のニューロンを作りました。 実は一昨日作って今日デバッグしました。 その前にCPUでチェックすると結果が合わなかったのですが、その理由は少なくとも今は眠いので書きません 。:)

時間的特性:

2012.03.08 04:46:13 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  CpuTime/GpuTime = 776.72 18045112782
2012.03.08 04:46:13 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  Result on Cpu МахResult==1.06443 at 1004 pass
2012.03.08 04:46:13 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 04:46:13 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  CPU time = 206608 ms
2012.03.08 04:42:46 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  Result on Gpu МахResult==1.06443 at 1004 pass
2012.03.08 04:42:46 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 04:42:46 ParallelTester_00-02-(16 x7x3) (EURUSD,M30)  GPU time = 266 ms

明日は、このグリッドのオプティマイザーを作り、実データをロードして、MT5-testerで検証可能なリアルな計算でテスターを仕上げ、グリッドのMLP+cl-codeを生成して、最適化に取り組む予定です。

欲張りなのでソースコードは掲載しませんが、手持ちのハードウェアでテストしたい方のためにex5を同梱しています。

ファイル:
 
MetaDriver: 欲張りなのでソースコードはアップロードしませんが、自分のハードウェアでテストしたい人のためにex5を添付します。

プーチン政権下と同じように安定しています。

2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    CpuTime/GpuTime = 24.08037178786222
2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Result on Cpu МахResult==1.09311 at 771 pass
2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    CPU time = 176172 ms
2012.03.08 05:35:26    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Result on Gpu МахResult==1.09311 at 771 pass
2012.03.08 05:35:26    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 05:35:26    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    GPU time = 7316 ms
2012.03.08 05:35:18    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    OpenCL init OK!


ちなみに、CPUランタイムでは、あなたのシステムと私のシステム(Pentium G840ベース)の差はそれほど大きくありません。

あなたのRAMは速いですか?私は1333MHzです。

もうひとつ、計算時にCPUの両コアに 負荷がかかるのは面白いですね。最後に負荷が急激に下がるのは、計算が終わった後です。それはどういうことでしょうか?


 
Mathemat:

プーチン政権下並みの安定感です。

2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    CpuTime/GpuTime = 24.08037178786222
2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Result on Cpu МахResult==1.09311 at 771 pass
2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 05:38:22    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    CPU time = 176172 ms
2012.03.08 05:35:26    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Result on Gpu МахResult==1.09311 at 771 pass
2012.03.08 05:35:26    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    Соunt inticators = 16; Count history bars = 144000; Count pass = 1024
2012.03.08 05:35:26    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    GPU time = 7316 ms
2012.03.08 05:35:18    ParallelTester_00-02-j16x7x3z (EURUSD,H1)    OpenCL init OK!


1.ところで、あなたのシステムと私のシステム(Pentium G840ベース)のCPU実行 時間の違いに注目してください。

2.RAMは高速ですか?私は1333MHzです。

1.暇つぶしにオーバークロックの復旧をしているのですが、以前、本当にひどいクラッシュ(後でドライブの電源コードが抜けていたことが判明)があり、奇跡を求めてマザーボードの「メモリーOK」ボタンを押しました。その後、やはり動作せず、CMOSの設定だけがデフォルトにリセットされました。 今は、プロセッサを再び3840MHzにオーバークロックしたので、よりスマートに動作するようになりました。

2.まだ、解明できない。:)特に、レナトがリンクを示したベンチマークでは、1600MHzと表示されている。メモリ自体は2GHzなのに、Windowsは1033MHzとまで表示される :)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))1866まで引っ張る母

 
Mathemat:

もうひとつ、CPUで計算するときに両方のコアに 負荷がかかっているのが面白いですね。最後に負荷が急激に下がるのは、計算が終わった後です。それはどういうことでしょうか。

ということは、GPUには全く関係ないのでは? ドライバはアップしていますが。私の唯一の説明は、計算がCPU-OpenCLで行われ、もちろん利用可能なすべてのコアで、ベクトルSSE命令を使用しているだけだということです。:)

2つ目のバリエーションは、CPUと同時にカウントするというものです。 この(CPU-LPU)対応がドライバでどのように実装されているかは分かりませんが、原理的にはopentCL処理の起動もこのようなバリエーションを排除するものではありません。

これはどちらかというと、私の憶測です。あるいは、今流行の「IMHO」と書いてもいいかもしれません。;)

 
MetaDriver: 唯一の説明は、OpenCL CPUで利用可能なすべてのコアとベクトルSSE命令を使って計算している、ということです、当然ですが。:)

そうでしょうか。特に私は2コアしか持っていないので。では、25倍の利益はどこから来るのでしょうか?

Intel MathKernel LibraryやIntel Performance Primitives(ダウンロードしてません)があれば可能ですが......。場合によってはでも、何百メガの重さがあるので、ありえないですよね。

Googleがどう言い出すか見ものですね。

数学: また、面白いことに、私のCPUの計算では、両方のコアが ロードされています。

いや、OpenCLを使わない純粋なCPUの計算という意味です。各コアが同程度の負荷値を持つ100%弱の負荷である。しかし、OpenCLのコードを実行すると100%になり、これはGPUの動作で簡単に説明できます。