私はOpenclプログラミングが初めてです。opencl をよりよく学習するために、いくつかのチュートリアルを読んだ後、単純なパターン マッチング カーネル関数の開発を開始しました。しかし、私はいくつかの疑問があります:
まず、カーネル関数内でグローバル変数を宣言しました。すべての作業項目が各変数の 1 つのコピーを共有するということですか?
次に、標準の C ライブラリ、特に使用方法を教えてください。「文字列.h」。
__kernel void matchPatterns_V1(__global char *strings, __global char *patterns, __global int *matchCount,
int strCount, int strLength, int patCount, int patLength) {
int id = get_global_id(0);
int rowIndex = id*strLength;
int i, matches = 0;
__global char *pos = strings;
__global char *temp = strings;
__global char *pat = patterns;
for(i = 0; i < patCount; i++)
{
temp = &strings[rowIndex];
pat = &patterns[i*patLength];
while(pos != '\0') {
pos = StrStr(temp, pat);
if(pos != '\0') {
matches++;
temp = pos + patLength;
}
}
}
matchCount[id] = matches;
}
要約すると、各作業項目には、変数「pos」、「temp」、および「pat」の独自のコピーがありますか?
最高の書籍やチュートリアル サイトの提案など、Opencl の学習に関するアドバイスは大歓迎です。