int num = 0;
char tmp_string[32000];
if(l_length * lsize > 32000){
if (l_length * lsize % 32000 == 0) {
num = l_length * lsize / 32000;
} else{
num = l_length * lsize / 32000 + 1;
}
...
if ( (l_length * lsize) % num == 0) {
size = l_length * lsize / num;
} else{
size = l_length * lsize / num + 1;
}
} else {
num = 1;
size = l_length * lsize;
}
for (y = 0; y < num; y++) {
if (size % lsize == 0) {
tmp_size = size / lsize;
} else {
tmp_size = size / lsize + 1;
}
.....find the matched pattern code.....
}
.....find the matched pattern between divided string.....
此代码是在字符串中查找匹配模式的一部分。(KMP算法)
我想一次只使用32000字节的字符串。
因此,如果字符串的大小大于32000,我将它们拆分并计算“num”,这是循环的数量。 (例如,当大小为64000时,我必须运行该函数两次以搜索整个字符串)
lsize是线程号(实际上使用openCL),l_length是每个线程将搜索的分割字符串的大小。
问题是必须搜索某些字符串,因为在分割功能期间会丢失大小。 (例如,size = l_length * lsize / num&amp;&amp; tmp_size = size / lsize)
我尝试更改代码但找不到每个线程的适当长度。 (找到分割字符串之间的模式的另一个代码已经存在。)
我该如何解决?