OpenMP处理许多文件

时间:2011-10-21 12:41:38

标签: file file-io openmp

我编写了一个程序,用于计算与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]);

感谢您的回复!

1 个答案:

答案 0 :(得分:1)

如果您有很多文件并且每个文件的输出独立于所有其他文件,那么您根本不需要OpenMP。只需使用GNU Parallel等工具在多个处理器上并行运行整个程序,即可获得线性加速。在这些情况下,对参数的OpenMP循环可能非常浪费;就程序员时间而言,就是这样。