...........
while(limit/(cl_BufLength-1)>0)
{
for(int i=0;i<CountLine;i++)
{
dOut[i]=EmaBuffer[i].B[limit]; // переписываем начальные значения Ema
// в промежуточный массив, поскольку напрямую с указанного смещения
// загрузить в буфер невозможно.
}
CLBufferWrite(cl_Mem_Out,dOut,0,CountLine*sizeof(double)); // загружаем в gpufor(int i=1;i<cl_BufLength;i++)
{
dIn[i]=price[limit-i]; // переписываем цены
// То же самое с ценами.
}
CLBufferWrite(cl_Mem_In,dIn); // загружаем в gpu
CLExecute(cl_Krn,1,kOfs,kWork);
.........
..........
エキゾチックなものは必要ない。 ただ、ここと同じであってほしい。
int ArrayCopy( voiddst_array[], // куда копируем voidsrc_array[], // откуда копируем intdst_start=0, // с какого индекса пишем в приемник intsrc_start=0, // с какого индекса копируем из источника intcnt=WHOLE_ARRAY// сколько элементов );
int ArrayCopy( voiddst_array[], // куда копируем voidsrc_array[], // откуда копируем intdst_start=0, // с какого индекса пишем в приемник intsrc_start=0, // с какого индекса копируем из источника intcnt=WHOLE_ARRAY// сколько элементов );
ああ、わかったよ、より複雑なアルゴリズムやメモリオーバーランを避けるために
//Выполняет OpenCL программу.bool CLExecute(int kernel, // хендл на кернел OpenCLuint work_dim, // размерность пространства задач constuint& global_work_offset[], // начальное смещение индексовconstuint& global_work_size[] // общее количество индексов
);
コードが追加されます。
コードが追加されます。
ありがとうございます。では、足りないのは、ハンドルの有効性をチェックする機能です。
CL関数から受け取るのはポインタの値だけで、ポインタそのものではないので、ポインタを別の場所に保存すると、無効なプロセス(コンテキスト、バッファ、プログラム、カーネルであっても)を削除しようとする事態が発生します。
機能を必要とします。
また、ビジョンはCPUよりも少ないメモリしか持たないが、同時に存在するすべてのコンテキストは同じメモリを使用するため、プログラムによってデバイスのメモリサイズを取得する必要がある。
負荷をかけるために、標準的なmqlの手段でカードの温度(とCPUも)を取得するのは良いことだと思います。
// ちょっと暴れてしまったので...。:)
OpenCLオブジェクトのプロパティの取得は、近日公開予定です。
また、ハンドルチェックも実施します。
1. OpenCLには、GPUの温度や負荷を取得する機能がない。
2. OpenCLオブジェクトのプロパティの取得は、近日中に利用可能になる予定です。
3.ハンドルチェックも実施する予定です。
1. 知っている。OpenCLを通す必要はなく、システムを通す必要があります。 アイデアは、機能をネイティブにすること(mql5プログラムからDLLを呼び出すことなく)だけです。
ここでは、優れた機能を紹介します。
TerminalInfoInteger
mql5プログラムの対応する環境プロパティの値を整数値で返す。
端末情報文字列
mql5プログラムの対応する環境プロパティの値を文字列で返します。
MQL5InfoInteger
実行中のmql5プログラムの対応するプロパティの整数型値を返す
MQL5InfoString
起動したmql5-programの対応するプロパティの文字列型の値を返します。
追加するのは論理的でいいと思います。
SystemInfoInteger であるため
システム情報文字列
コア数、オペレーティングシステムの名前とサイズ、メモリ量(合計)、使用可能(空き)メモリ量(RAMとディスクスペース)など、システム環境に関する必要なすべての情報へのアクセスを提供するものである。
結局、端末は何もない永遠の空間では機能しないのです。それ以外は、とても砂っぽい感じです。
2, 3.
4.必ず通常のバッファアクセス(cl_Read/WriteBuffer)を行い、両方の開始オフセット(mql-arrayのオフセットとcl-bufferのオフセットの両方)を指定すること。そうしないと、ほとんどすべての配列を2回コピーする必要があります - 本当に必要ですか?無から有に書き換える時間を無駄にするためにOpenCLで書いているわけではありません。それはフェアじゃない。:)
...
4. 通常のバッファアクセス(cl_Read/WriteBuffer)が既にあることを確認し、両方の開始オフセット(mql-array offsetとcl-buffer offsetの両方)を指定します。そうしないと、ほとんどすべての配列を2回コピーする必要があります - 本当に必要ですか?無から有に書き換える時間を無駄にするためにOpenCLで書いているわけではありません。それはフェアじゃない。:)
その意味を具体的に教えてください。
今のところ、おっしゃるようなシチュエーションには遭遇していません。
その意味を具体的に教えてください。
何のためにあるのか、私はまだおっしゃるような場面に遭遇したことがないのです。
問題ありません。最近の事例を紹介します。江間家をつくる。
エキゾチックなものは必要ない。 ただ、ここと同じであってほしい。
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
問題ありません。最近の事例を紹介します。絵馬の家づくり
エキゾチックなものは必要ない、ここみたいなのがいいんです。
int ArrayCopy(
void dst_array[], // куда копируем
void src_array[], // откуда копируем
int dst_start=0, // с какого индекса пишем в приемник
int src_start=0, // с какого индекса копируем из источника
int cnt=WHOLE_ARRAY // сколько элементов
);
ああ、わかったよ、より複雑なアルゴリズムやメモリオーバーランを避けるために
で、コピーの段階でオフセットできるようにしたい。
100000個の要素をコピーして、998000個のシフトをするのは嫌だ。なぜなら、同じデータを何度もコピーするのではなく、すでに用意されているCLバッファから、新しいシフトを付けて新しいタスクに取り込むことができるからです。
SZY CLバッファのデータの一部を再割り当て、または上書きすることで、新たにtickから受信したデータを全データを購入することなく追加できるのも良いですね。実時間ではほとんど役に立ちませんが、テスターでは役に立ちます。