我是 Opencl 编程的新手。为了更好地学习opencl,在花了一些时间阅读了一些教程之后,我开始开发一个简单的模式匹配内核函数。但我有一些疑问:
首先,我在内核函数中声明了全局变量。这是否意味着每个工作项共享每个变量的一个副本?
其次,我如何使用标准 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 的建议,包括对最佳书籍/教程网站的建议。