DLLを使わずにMetaTrader 5で直接OpenCLを使ってできることは次のとおりです。 - ページ 5

 
Renat Fatkhullin:

このような背景から、AMDが有利に見えるのは、明らかに速い数式計算(マイニングファームは通常AMDで構築されている)だけでなく、オープンスタンダードという戦略(一般に公開し、多くのプロモーションを行っている)にもよる。AMDのカードにOpenCL 2.0が導入されたことで、この仕様はCUDAの能力に非常に近くなり、今ではCUDAのための土台作りの意味が全く なくなってしまいました。

7年ほど前にCUDAで遊んでいて、今でもCUDAがゲームを支配していると思っていたのですが、これは有益な情報ですね。

質問ですが、最近のOpenCLデバッガはどうなのでしょうか?MT5端末のことではなく、MT5端末全般のことを指しています。今のところ、Visual Studioの プラグインとしてのIntelのデバッガと、同じ会社のスタンドアロンデバッガ(depricated)しか見たことがありません。しかし、そのために用意されているのが、インテルのプロセッサーと内蔵グラフィックスであることは間違いないようだ。私は並列コードのデバッグ方法を全く理解しておらず、私にとってはまだブラックボックスでしかありません。

 

CUDAで作業できるのは、自分自身か、Nvidiaカードの存在を明示的に要求できる特定の分野だけです。

そうですね、昔はCUDAの方が機能が多かったんです。しかし、AMDのハードウェアはOpenCL 2.0と新バージョンのOpenCL 2.1を備えており、ベンダーロックインの下に座っている意味はありません。特に、そのベンダーも機能を削っている場合はなおさらです。

最大限のカバーという意味では、通常のプロセッサーでも問題なく動作するOpenCLしか選択肢はありません。つまり、GPUの存在を無条件に要求したり、GPU用とCPU用の2バージョンのコードを書く必要はないのです。一度書いたOpenCLのコードは、異なるコンフィギュレーションで動作します。

CUDA/OpenCLは専用のデバッガでないとデバッグできません。ここに奇跡はありえない。

 
Renat Fatkhullin:

例えるなら

if((cl_ctx=CLContextCreate())==INVALID_HANDLE)

CPUが使用可能なデバイスがある構成では、「OpenCL not found」と表示される

それ以外は。

if((cl_ctx=CLContextCreate(CL_USE_ANY))==INVALID_HANDLE)

せいぞうば

*問題は、デフォルトのデバイス選択です

 

このような引用をすべて排除して、きれいな形で提供することはできないでしょうか? 認識や創造をする上で厄介なのです。

また、ニューラルネットワークについては、標準的なクラスを 用意し、wellslabのようにopcl instantly)を使用することが可能である。

"#define HL1Count "             + (string)hl1NeuronCount + "                     \r\n"
          "#define HL2Count "             + (string)hl2NeuronCount + "                     \r\n"
          //------------------------------------------------------------------------------------
          "#define NeuronSensitivity  "   + (string)NeuronSensitivity_P + "                \r\n"
          //------------------------------------------------------------------------------------
          "#define sampleCount "          + (string)sampleCount + "                        \r\n"
          //------------------------------------------------------------------------------------
          "#define signalCount "          + (string)signalCount + "                        \r\n"
          //------------------------------------------------------------------------------------
          "#define StrArrSaSize "         + (string)(sizeof(ArrSample) / sizeof(float)) + "\r\n"
          "typedef struct{float C[StrArrSaSize];} ArrSa;                                   \r\n"
          //------------------------------------------------------------------------------------
          "#define StrArrWeSize "         + (string)(sizeof(ArrWe) / sizeof(float)) + "    \r\n"
          "typedef struct{float C[StrArrWeSize];} ArrWe;                                   \r\n"
          //------------------------------------------------------------------------------------
          "#define StrArrCrSize "         + (string)(sizeof(ArrCr) / sizeof(float)) + "    \r\n"
          "typedef struct{float C[StrArrCrSize];}ArrCr;                                    \r\n"
          //------------------------------------------------------------------------------------
          "#define Spread "               + (string)(Spread_P * Point()) + "               \r\n"
          //------------------------------------------------------------------------------------
          "#define Point "                + (string)Point() + "                            \r\n"
          "#define SL "                   + (string)(StopLoss_P * Point()) + "             \r\n"
          "#define TP "                   + (string)(TakeProfit_P * Point()) + "           \r\n"
          //------------------------------------------------------------------------------------
          "                                                                                \r\n"
          "__kernel void Work(__global ArrSa *Sample,                                      \r\n"
          "                   __global ArrWe *Weights,                                     \r\n"
          "                   __global ArrCr *Result)                                      \r\n"
          "{                                                                               \r\n"
          "  int thread       = get_global_id(0);                                          \r\n"
          "                                                                                \r\n"
          "  //------------------Переменные нейронной сети---------------------------------\r\n"
 
Maxim Dmitrievsky:

このような引用をすべて排除して、きれいな形で提供することはできないでしょうか? 認識や創造をする上で厄介なのです。

また、ニューラルネットワークについては、標準的なクラスを 用意し、wellslabのようにopcl instantly)を使用することが可能である。

まあ、いいんじゃない?いいですか、MQLが知らない具体的な機能はひとつもないんです。OCLのこの機能をMQLで書いてデバッグして、あとは全部固めただけです。OCLでコード変換器を作ってもいいかもしれませんが、自分では特にやる意味はないと思っています。MQはやるかもしれないけど、どうだろうね。
 
Renat Fatkhullin:

MQL5コードのGPU計算だけでなく、ターミナルのグラフィカルな機能のデモも行っています。

スクリプトとしてのソースコード全文を添付します。OpenCL 1.2での不具合は修正されました。

刺繍のやり方も知っています。しかもタイプライターで...。(c)この取引端末は 何のためにあるのか?
 
エージェントはクラウド化されるのか?
 
GKS:
エージェントはクラウド化されるのか?
いいえ
 
 

しかし!OCLや一般的な並列化の手段には大きな問題があります。なぜ並列計算の 例ではとても人気が波のシミュレーション、その破壊とピラミッドに落ちるボール、すなわち、小さな断片に分割し、独自のプロセッサ上で計算することができますすべてのものです。

fora/bearの場合は、もちろん、ニューラルネットワーク、各種フーリエ変換、ウェーブレット、フィルタなどですが、これらはすべて完全に並列化されています。しかし、全く並列化できない線形アルゴリズムも存在する。原則として、次のアルゴリズムのステップの結果が前のステップの結果に基づく場合である。

かっこいいビデオカードを2枚買えば、テスターですべてうまくいくだろうと思っている人のために書きました。