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 && tmp_size = size/lsize)
我试图更改代码,但找不到每个线程的适当长度。(另一种用于查找分割字符串之间模式的代码已经存在。)
我该如何解决?