我想知道openacc和openmp之间的主要区别是什么.MPI,cuda和opencl怎么样?我理解openmp和mpi之间的区别,特别是关于共享和分布式内存的部分它们是否允许混合gpu-cpu处理设置?
我在C中编写了一个小文本匹配程序,它基本上检查某些字符串中是否存在少量字符(以char数组的形式).它现在正在工作,我有一个像这样的代码块:
if (c == 'A') return 1;
else if (c == 'B') return 1;
else if (c == 'C') return 1;
....
....
else if (c == 'Z') return 1;
else return 0;
Run Code Online (Sandbox Code Playgroud)
上面的块是否更快?或者这会更快?
if (c == 'A' || c == 'B' || c == 'C' ||....|| c == 'Z') return 1;
else return 0;
Run Code Online (Sandbox Code Playgroud)
快速,我的意思是字面上快,即如果我从程序的开始直到结束运行一个简单的计时器,这可能会缩短执行时间?
我知道C中的字符串基本上是一个字符数组.
我正在尝试一个指针数组,指针链接到字符串
我基本上想要打印出来,而不依赖'\n'来排序它
12345
abcde
67890
fghij
Run Code Online (Sandbox Code Playgroud)
这是我的代码 - >
char *array1 = "12345";
char *array2 = "abcde";
char *array3 = "67890";
char *array4 = "fghij";
char *array_2d[3];
array_2d[0] = &array1;
array_2d[1] = &array2;
array_2d[2] = &array3;
array_2d[3] = &array4;
int i,j;
for(i = 0; i<3 ; i++ ) {
for(j = 0; j<3 ; j++) {
printf("%c", array_2d[i][j]);
}
}
Run Code Online (Sandbox Code Playgroud)
我可能会犯错误,所以任何线索都会受到赞赏
我发现openmp不支持while循环(或者至少不太喜欢它们).而且也不喜欢'!='运算符.
我有这段代码.
int count = 1;
#pragma omp parallel for
while ( fgets(buff, BUFF_SIZE, f) != NULL )
{
len = strlen(buff);
int sequence_counter = segment_read(buff,len,count);
if (sequence_counter == 1)
{
count_of_reads++;
printf("\n Total No. of reads: %d \n",count_of_reads);
}
count++;
}
Run Code Online (Sandbox Code Playgroud)
关于如何管理这个的任何线索?我在某处读到(包括stackoverflow的另一篇文章)我可以使用管道.那是什么 ?以及如何实施它?