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

 
Mathemat:
そして再起動。同じことですが、OpenCL-ZはCPUをデバイスとして見ていないのです。全く何も見えていない。
説得力がない。 OpenCLのスクリプトを走らせたりして。 OpenCL-Zは真偽の判断基準にはならない。
 
MetaDriver: 説得力がない 何らかのOpenCLスクリプトを実行する。 OpenCL-Zは真偽の判断基準にはならない。

はい、試しましたが、MT5には起動時にOpenCLに関するそのような行もありません。以前はあって、OpenCLのコード実行を保証するものでした。

fyords :あなたのアンインストーラーを使って いますよ。レジストリのクリーンアップもPROで

また、デバイスマネージャでカーネルプロセッサを削除してから再起動すると、Windowsが新しいCPUドライバを入れるので、もしかしたらOpenCLが起動するかもしれません。

最終手段として試してみる。レジストリを経由するようなソフトは嫌いです。

おお、新鮮なアイデアですね。ディスパッチャからカーネルを削除する方法は?

joo: セーフモードにして、レジストリにあるOpenCLに関する記述のあるブランチを手動で削除してみてください。その後、通常モードに戻り、再度ドライバをインストールしてください。

へへ、もう消えちゃったよ...。

P.S. ようやくアップしました。

 
Mathemat:
...

おお、新鮮なアイデアですね。また、マネージャーからコアをアンインストールするにはどうすればよいのでしょうか?

...

いつものように右クリック->カーネルをアンインストールすると、再起動を要求されます - いいえ、すべてのカーネルをアンインストールしてから再起動する必要があります。

万歳同志!!! :)

 
fyords: いつものようにカーネルを右クリック→アンインストールすると、再起動を要求されます - いいえ、すべてのカーネルをアンインストールしてから再起動してください。

このカーネルはマネージャーのどこにあるのか、どのようなプロセスなのか。

はい、了解しました。しかし、そうはならなかった。どうして全部消してしまったのか、理解できない。おそらく、AMD APP SDKをWindowsからではなく、AMDインストーラー自体でアンインストールしたためだと思いますが...。

 
Mathemat:
また、このカーネルはデバイスマネージャのどこにあるのか、どのプロセスなのか?
デバイスマネージャで(マイコンピュータで マウスを 右クリック→管理→デバイス マネージャ)。
 

ランニング_テイスト_マンド。まあ私は過去最高のタイム(480のバッファを持つ)です。

2012.03.22 01:31:21    Tast_Mand_ (EURUSD,H1)    54741 msec

バッファーを増やしても、ドロップは発生しない。石は少し暖まり、両方のコアが100%であるにもかかわらず、まだ20ワットを食べています。

 

Mathemat:

...それでも20ワット食うのか...。

私の記憶が間違っていなければ、Pentium G840 @ 2.8 GHzを 搭載していますね。いつから20ワットも食うようになったんだ?65ワットではありませんか?
 
fyords: 私の記憶が間違っていなければ、Pentium G840 @ 2.8 GHzを 搭載していますね。では、いつから20Wを食うようになったのか?65ワットではありませんか?

はい、その通りです。CPUBurnやLinPackでは、最大で40ワット程度まで絞り出すことができました。

インテルは、最悪のケースで消費される電力をTDPと定めています。通常の用途で25ワット以上消費するのを見たことがない。そして今、端末はほぼ100%かかり、石は徐々に暖まり(最大コア温度は54と57)、48000バッファでタスクをこなしている状態です。

2 jooAndrei、このコードはあなたのコードと同等だと思いますか、そうではありませんか?

"__kernel void MFractal(                                    \r\n"
"                       __global int *out                   \r\n"
"                      )                                    \r\n"
"  {                                                        \r\n"
"   int i = get_global_id(0);                               \r\n"
"   for(int u=0;u<100000000;u++)                            \r\n"
"   {                                                       \r\n"
"    out[i]+=u;                                             \r\n"
"    bool b=(out[i]<=10000);                                \r\n"
"    out[i]*=(int)b;                                        \r\n"
"   }                                                       \r\n"
"   out[i]+= i;                                             \r\n"
"  }                                                        \r\n";
 
Mathemat:

2 jooAndrei、このコードはあなたのコードと同等だと思いますか、そうではありませんか?

そうみたいですね。

私はトリッキーな構造(目で見て判断しにくい)を使わないようにしているので、よく分かりませんが、おそらく、コードのスピードが速くなるかもしれないので、何の意味もないでしょう。

ループの繰り返しごとに変数bが再宣言されるため、おそらくあなたのコードはより遅くなるはずです。

 
joo: ループの繰り返しごとに変数bが再宣言されるので、おそらくあなたのコードはより遅くなるはずです。

はい、20%ほど遅くなりました。

ループの外側に宣言を入れてみました。少しは時間が短くなったが、それでも以前よりはゆっくりとしたペースで進むことができた。不思議なもので、ifを解消したのですが...。

理由: