Kon*_*rad 2 directory parallel-processing for-loop openmp
我有一段代码可以在某个目录中的文件中搜索模式。重点是如何并行化它。我的第一个版本:
DIR * dptr = opendir(DIRNAME);
struct dirent *dir;
while(dir = readdir(dptr)) != NULL) {
// searching in dir -> d_name;
}
Run Code Online (Sandbox Code Playgroud)
所以我将 while 转换为 for:
#pragma omp parallel
#pragma omp for
for(;(dir = readdir(dptr)) !=NULL;) {
// searching
}
Run Code Online (Sandbox Code Playgroud)
但现在我有一个错误:
“预期在‘;’之前进行迭代声明或初始化 token.for(;(dir = readdir(dptr)) !=NULL;) "
您知道如何使用适当的 for 循环组织遍历目录中的每个文件吗?
小智 5
OpenMPparallel for指令在线程之间分割迭代向量。为了做到这一点,它需要所谓的canonical形式的循环。即for(statement; expression; expression),您不能跳过循环的一部分。此外,boundexpression应为以下形式之一:less-expr (<), more-expr (>)及其等价形式:less-equal-expr (<=), more-equal (>=)。
因此,要修复您的代码,您需要
for在循环中编写初始化程序和增量ne-expr (!=)