将CPU端的函数改为GPU端函数(因为这个代码将被_global_限

CPU端代码如下:

bool canMerge(string str1,string str2,int &pos){
unsigned int p1 = 0, p2 = 0;
while(p1 < str1.size() && str1[p1] == str2[p2])
p1++,p2++;
pos = p1;//记录第一次不同的位置
p1++,p2++;
while(p1 < str1.size() && str1[p1] == str2[p2])//看是否只有一个地方不同
p1++,p2++;
if (p1 == str1.size())
return true;
return false;
}

如何将上述CPU端的函数改为GPU端函数(因为这个代码将被_global_限定符的内核函数调用)?
是直接在CPU端的函数的前面直接加上_device_ ??

楼主您好:

将一段CPU代码改成GPU代码,不是简单的在前面加上__global__就可以了事的,
您至少需要注意一下方面:
(1)所有原代码掉用的函数都需要有GPU版本(例如您的string类的size()方法)
(2)访存必须满足GPU的元素类型对齐

以及,这仅仅表示可以运行。
为了能发挥出GPU的性能,您还需要考虑是否贵代码可以在GPU上并行化,等等。

这是一个系统而复杂的工作,绝不是简单的加上__global__,CPU版本就变成了GPU版本。
请楼主三思。

感谢您来访。

非常感谢版主的指点