你知道为什么这段代码不能并行运行吗

下面是我当前的代码,正如标题所说,我认为它将并行运行。我在Mac上工作,在终端上使用bash。代码是用C语言编写的,我正在尝试使用openmp。它的编译和运行没有任何错误,但我不相信它是并行运行的。

为了更容易理解,解释代码。第一个块只是一堆变量的声明。下一个块是for循环,它在终端中运行命令。

第一个命令是运行一个具有四个参数的可执行程序:一个双精度、一个固定整数、一个字符串和另一个固定整数。double依赖于您所在的for循环的哪个迭代。

第二个、第三个、第四个和第五个命令都处理可执行程序输出的重命名和移动文件。这样就完成了for循环。我希望这个for循环能够并行运行,因为每次迭代大约需要30秒。

一旦在four循环之外,就会移动在每个循环中写入的文件。我意识到写入文件的顺序可能有问题,但只有当它实际上是并行运行时,这才是一个问题!

代码语言:javascript复制#include

#include

int main(){

int spot;

double th;

char command[50];

char path0[] = "/home/path0";

char path1[] = "/home/path1";

char path2[] = "/home/path2";

char path3[] = "/home/path3";

#pragma omp parallel for private(command,path)

for (th=0.004, spot =0; th<1; th += 0.005, spot++) {

sprintf(command, "./program %lf 19 %s 418", th, path0);

system(command);

sprintf(command, "mv fileA.ppm a.%04d.ppm", spot);

system(command);

sprintf(command, "mv a.%04d.ppm %s", spot, path1);

system(command);

sprintf(command, "mv fileB.ppm b.%04d.ppm", spot);

system(command);

sprintf(command, "mv b.%04d.ppm %s", spot, path2);

system(command);

}

sprintf(command, "mv FNums.txt %s", path3);

system(command);

return(0);

}感谢你们能提供的见解和帮助。


国足备战!中超联赛再度暂停,全力支持4场关键世预赛!
牛肉饼的做法