最近在做一个关于用OpenCL来处理字符串匹配的小程序,
导师给出的题目是这样的,首先生成一个长度尽可能大的随机字符串(由ATCG这四个字符组成),然后设定1000个长度在2-10之间的随机字符串(也是由ATCG四个字符组成,然后将每个字符小字符串与大字符串去匹配,返回匹配项的下标值。
由于笔者才疏学浅,所以刚开始用于测试的算法是自己写的最笨的穷举法:
由于要和cpu比较运行时间,所以在主程序中:
char* X=(char*)malloc(10000*seizeof(char)); //动态分配大字符串的空间
char**Y=(char**)malloc(1000*seizeof(clar*));//动态分配指向小字符串指针的空间
for(int i=0;i<1000;i++)
{
Y[i]=(char*)malloc(11*seizeof(char)); //动态分配每个小字符串的空间
}
分配空间后,就给他们随机赋值,这里代码省略,
接下来就是匹配代码(返回匹配项代码省略):
void PipeiCPU(char **Y,char *X)
{
int i=0;