В конце января 2012 года компания-разработчик терминала MetaTrader 5 анонсировала нативную поддержку OpenCL в MQL5. В статье на конкретном примере изложены основы программирования на OpenCL в среде MQL5 и приведены несколько примеров "наивной" оптимизации программы по быстродействию.
ML 0 Startup 07:18:59 access rights to common directory successfully checked
OF 0 Startup 07:18:59 Service start initialized
QL 0 Startup 07:18:59 Create startup thread
ER 0 Startup 07:18:59 Thread successfully created
DE 0 Startup 07:18:59 MetaTester 5 x64 build 756 (25 Jan 2013)
JP 0 Server 07:18:59 MetaTester 5 started on 0.0.0.0:2000
RK 0 OpenCL 07:18:59 Device #0: GPU NVIDIA Corporation Tesla T10 Processor with OpenCL 1.0 (30 units, 1440 MHz, 4095 Mb, version 307.45)
QJ 0 Startup 07:18:59 initialization finished
IO 0 Startup 07:18:59 Startup thread finished successfully
IK 0192.168.1.13207:19:12 login (build 756)
MG 0 Network 07:19:1238680 bytes of group info loaded
NN 0 Network 07:19:121490 bytes of tester parameters loaded
CG 0 Network 07:19:12708 bytes of input parameters loaded
EM 0 Network 07:19:12817 bytes of symbols list loaded
MK 0 Tester 07:19:12 expert file added: Experts\OpenCLExpert.ex5. 8322 bytes loaded
MR 0 Network 07:19:12224 bytes of optimized inputs info loaded
GG 0 Tester 07:19:12 successfully initialized
CQ 0 Network 07:19:1222 Kb of total initialization data received
DJ 0 Tester 07:19:12 Intel Core i7-2600 @ 3.40 GHz, 16366 MB
CM 0 Tester 07:19:12 optimization pass 1 started
LD 0 Symbols 07:19:12 EURUSD: symbol to be synchronized
HO 0 Symbols 07:19:12 EURUSD: symbol synchronized, 3304 bytes of symbol info received
NJ 0 History 07:19:12 EURUSD: load 15 Kb of history data to synchronize
FR 0 History 07:19:12 EURUSD: history synchronized from2012.01.02 to 2013.01.29
KP 0 History 07:19:12 EURUSD,H1: contains 6210 bars of beginning data from2012.01.0200:00 to 2012.12.3119:00
DD 0 History 07:19:12 EURUSD,H1: history cache reserved for estimated 6754 bars
LE 0 History 07:19:12 EURUSD,H1: history begins from2012.01.0200:00
HM 0 Tester 07:19:121 : passed within 297 ms
KF 0 Tester 07:19:12273 Mb memory used
問題のあるエージェントを見つけるために、エラーメッセージを 特別に拡張しました。ステップバイステップで、それらを取り除いていきます。
私たちは貿易の仕事をしているので、需要と供給という言葉を聞いたことがあるかもしれない。
多分、エージェントの供給が多すぎて、クラウドの需要が少ないのでしょう。
MQはサプライヤーからいくら手数料を取っているのですか?
ビルド756にアップグレードした後、ログインとそれに伴う「リソースを売る」チェックボックスがリセットされた。
サービスを再起動しようとしても再起動しないことが判明しました。
タスクマネージャーでプロセスを終了させなければなりませんでしたが、再起動だけが起こりました。
OpenCLにも問題が残っている:
RL 0 Startup 14:47:50 Create startup thread
FR 0 Startup 14:47:50 Thread successfully created
CE 0 Startup 14:47:50 MetaTester 5 x64 build 756 (25 Jan 2013)
JP 0 Server 14:47:50 MetaTester 5 started on 0.0.0.0:2001
GE 0 OpenCL 14:47:50 initialize
PD 2 Agent 14:47:50 OpenCLの初期化はクリティカルエラーのためスキップされました。
EK 2 Agent 14:47:50 OpenCLはターミナルの次回起動時に初期化されます。
DO 0 Startup 14:47:50 initialisation finished
NK 0 Startup 14:47:50 Startup thread finished successfully
LO 0 Network 14:49:50 Network 14:49:50 connected to 1.agents.mql5.com
ビルド756にアップグレードした後、ログインとそれに伴う「リソースを売る」チェックボックスがリセットされた。
サービスを再起動しようとしても再起動しないことが判明しました。
タスクマネージャーでプロセスを終了させなければなりませんでしたが、再起動だけが起こりました。
OpenCLにも問題があります:
次のビルドでは、サービス・モードで動作しているときのOpenCLのサポートを 改善し(いくつかのバグを修正しました)、クラウド上のOpenCLデバイスの統計へのアクセスをオープンにし、ネットワークで実際にOpenCLを使用できるようにする予定です。
結果はまだ予測できませんが、リリース後にわかるでしょう。
NVIDIA Teslaを例に、OpenCLのスタートアップと初期化がサービスエージェントでどのように見えるかを示します:
次のビルドからは、誰もがこの機能を使えるようになります。NVIDIA Teslaを例に、OpenCLのスタートアップと初期化がサービスエージェントでどのように見えるかを示します:
次のビルドからは、誰もがこれを使えるようになります。コンピューティングに特化したGPUのすべて==、あるいは本当にすべて?
ビデオドライバの外でAPIを提供するGPUです。これらはTeslaのような特殊なコンピュートカードです。
一部のドライバ(AMD/ATI)では、CPUをOpenCLデバイスとして使用することができます。私たちは現在、エージェントで作業する際にこれらを有効にするよう取り組んでいます。そのようなデバイスの性能は低いかもしれませんが、OpenCLを広く利用できるようになることが重要です。
ビデオドライバの外でAPIを提供するGPU。これらはテスラのような特殊なコンピューティングカードだ。
今のところ、一般ユーザーにとって未来はない。つまり、まったく。
比較してみよう。ダブルのパフォーマンス
7970 -- 0.95 TFlops
k20x -- 1.3 TFlops.
では、値段に注目 )))
7970 -- 400
k20 -- 3200 (!) k20xは非現実的なコストがかかる。
どうやら、エージェントをサービスとして組織化するというあなたの判断は間違っていたようだ。