我编写了一个程序,用于计算与openMP并行计算的文件数据
让我们说:
./foobar input.txt
我正在修改我的程序的方式,它会在很多文件上执行相同的计算:
./foobar input1.txt input2.txt input3.txt
我的问题是:
假设两者之间的效率更高: 准备好每个文件(大小可以达到百兆字节)并在每个文件上并行计算,
for (i = O; i < numberOfFile; i++)
calculationOn(filename[i]); // the calculation program run in parallel
或让每个线程并行读取它自己的文件并对其进行处理?
#pragma omp parallel for private(i)
for(i = 0; i < numberOfFile; i++)
calculationOn(filename[i]);
感谢您的回复!
答案 0 :(得分:1)
如果您有很多文件并且每个文件的输出独立于所有其他文件,那么您根本不需要OpenMP。只需使用GNU Parallel等工具在多个处理器上并行运行整个程序,即可获得线性加速。在这些情况下,对参数的OpenMP循环可能非常浪费;就程序员时间而言,就是这样。