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

 
Ashes: 役に立たなかった。

何をしたのか、具体的に教えてください。AMDのAPP SDKを倒したところから始まっています。

ところで、ParallelTester_00-01xスクリプトのCLContextCreate()関数に 0というパラメータを挿入していないかもしれません(ホスト(CPU)上で実行される可能性がある)。私の記事には書かれていませんでしたが。

 
Mathemat:
何をしたのか、具体的に教えてください。AMDのAPP SDKをパクったところから始まって。

適切なSetup.exe、Uninstallを実行し、AMD APP SDKをアンインストールします。リブートされました。

Intel OCL (intel_ocl_sdk_1.5_x64_setup.exe) をインストール、RunTimeのみ。リブートされました。

MT5を実行 - 結果が出ない。ご助言によりレジストリを修正しました。MT5をリロードした - がっかり。

mql5さんの アドバイスに従ってパスを追加し、引用符の有無、x64、x32で試して みました。レジスタの各修正後、私のMT5を再び使用し、私の使用 - 同じ古い卵、片側のビューのみ。

これでHKEY_LOCAL_MACHINEは以下のようになります。

(初期設定)REG_SZ (値は割り当てられない)

C:\Program Files (x86)\IntelOpenCL SDK1.5bin↵ REG_DWORD 0x00000000 (0)

 
Ashes: 現在、HKEY_LOCAL_MACHINEは以下のような状態になっています。

(初期設定)REG_SZ (値は割り当てられない)

C:\Program Files (x86)\IntelOpenCL SDK 1.5bin╱x86╱intelocl.dll REG_DWORD 0x00000000 (0)

中を見たことがありますか?例えば私は、このパスに何も持っていません(しかし、私はランタイムだけをダウンロードしてインストールしました、多分それはない理由です)。

そして2つ目は、フルパスなしでintelocl.dllを作ったところです。どうせランタイムインストール時に登録されたんだろうけど。

追伸:フルパスで実験してみました。Metatraderは、フルパス(両方)のOpenCLを見ません。しかし、intelocl.dllという名前だけにすると、コンピュータを再起動しなくても、すべてがすぐに見えるようになるのです。

システム内に存在する同名の2つのファイルから「正しい」ファイルを選択する方法がわからない。

その経過をここで報告してください。それでも面白い、ニュアンスがあるのかもしれませんね。私自身、今までずっと悩んできて、結果的に「ごちゃごちゃ」してしまいましたが、とても気に入っています。

追伸:ちなみに、Intelのリソースにいたとき、Intel SDKを完全にアンインストールしてから再インストールすることを勧められた。つまり、単にアンインストールするだけでなく、system32とsysWOW64ディレクトリに入ってinteloclに関連するものをすべて削除すること。intelocl*.dll、opencl*.dllなどのファイルです。この辺りは、http://software.intel.com/en-us/forums/intel-opencl-sdk/。 見つけたら、より正確なリンクを投げます。

お役立ちリンク: http://software.intel.com/en-us/articles/opencl-release-notes/

そして、ここ - 特に有用です: http://software.intel.com/en-us/forums/showthread.php?t=102023&o=a&s=lr, そこにUri Levy (Intel) のアドバイスが本当に役に立つかもしれません。とにかく、タンバリンゲームであることに変わりはない。

 
MetaDriver(p. 53):

これは、CPU(私の場合はデバイス1)上です。

CLContextCreate(device)パラメータをスクリプトパラメータに引き込みました。 オプションを全てつつくことができます。

面白いのは、これだ。

630ビルドのこのスクリプトは、なぜかそのように実行されないのです。メッセージはなく、ループに入り、石を100%まで読み込みます。そして、合理的な時間を超えることはありません。でも、すでにインテルのランタイムは持っています。

 
Mathemat:

面白いのは、その方法です。

630ビルドのこのスクリプトは、なぜかそのように実行されないのです。メッセージはなく、ループに入り、石を100%ロードします。そして、合理的な時間を超えることはありません。でも、すでにインテルのランタイムは持っています。

再コンパイルすると、正常に動作するようになりました。

2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 326.6
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==4.15901 at 208 pass
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:33:21     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40825 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==4.15901 at 208 pass
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 125 ms
2012.04.21 00:32:40     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

ファイル:
 
MetaDriver: 再コンパイルしましたら、正常に動作するようになりました。

それはCPUに搭載されているのか!まあ、もしそうなら怖いけど...。

興奮するのが早かった。実行してみたが、意味がなかった。 EAのログに一度も書き込みがない。スクリプトが始まってすぐに岩盤全体を埋め尽くしたが。つまり、何かを叩いたが、CLContextCreate() にたどり着けなかった(たどり着けば何か言うはずなんだけどな)。

これは新しいことです。AMD SDKでコンパイルされたコードをIntelランタイムが理解できないようです。OCL_Deviceに0と-1の両方を設定しました。効果なし。

一般的に、プラットフォームを選べないのは不便です。それができればいいんですけどね。再インストールはもう嫌だ。

 
Mathemat:

それはCPUに搭載されているのか!まあ、もしそうなら怖いけど...。

いいえ、GPUにです。しかし、OpenCLのデバイスは選択可能です。ここでCPUに。

2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CpuTime/GpuTime = 74.28571428571429
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Cpu МахResult==3.53209 at 36 pass
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:20:18     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       CPU time = 40560 ms
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Result on Gpu МахResult==3.53209 at 36 pass
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       Соunt inticators = 16; Count history bars = 50000; Count pass = 512
2012.04.21 06:19:38     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       GPU time = 546 ms
2012.04.21 06:19:37     ParallelTester_00-02-{16 x7x3} (EURUSD,M1)       OpenCL init OK!

興奮するのが早かった。実行してみたが、意味がなかった。 EAのログに一度も書き込みがない。しかし、スクリプトが起動してすぐに岩盤全体を埋め尽くしてしまう。つまり、何かを叩いても、CLContextCreate()にたどり着かないのです(もしそうなら、何かを言うはずですよね?)。

何か新しいものを。IntelのランタイムがAMD SDKでコンパイルされたコードを理解できないようなのです。OCL_Deviceに0と-1の両方を設定しました。効果なし。

一般的に、プラットフォームが選択できないのは不便です。そのような機会があることが望ましいと思います。再インストールはもう嫌だ。

やばい、ランサムウェアだ(笑)

では、ソースコードです。好きなように使ってください。

AMD SDKではコンパイルできません。少なくともOCLのコードではそうなっています。OCLプログラムは、mqlコードの実行中にコンパイルされます。OCLスナップインからのEX5ファイルは、mql/ocl-driverのブリッジ関数のみをコンパイルしています。ドライバのメーカーによって異なるマシンコードにコンパイルされているとは思えません。この点については、開発者にしかわからないことですが。

ファイル:
 
MetaDriver: AMD SDKでコードがコンパイルされない。
理解できます、私の話し方が悪かったのです(まあ、私はコーダー・プロではないのですが)。しかし、それでもOpenCLの「ライブラリ」ベンダー(APIではなく内部関数そのもの)に依存する。
 
Mathemat:

そちらで確認されましたか?私などは、このパスにそのようなものはありません(でも、ランタイムをダウンロードしてインストールしただけなので、それが理由かもしれません)。

そして2つ目は、フルパスなしでintelocl.dllを作ったところです。どうせランタイムのインストール時に登録されたんだろうけど。

...

裸の "intelocl.dll "は、最初にチェックされたものの一つである。x64とx86の両方のフォルダにその名前のファイルがあります。

 
Ashes: 裸の "intelocl.dll "は、最初にチェックされたものの一つである。x64とx86の両方のフォルダにその名前のファイルがあります。

その時、どうしたらいいのかわからない。サポートチームが ヒントをくれるまで、解決策を探して自分を苦しめていたんだ。おそらく完全な解決策ではないでしょうが、私のパソコンではうまくいきました。

おそらく最初に学ぶべきは、以前のSDKの痕跡をきれいに消す方法でしょう。