OpenMP справляется со многими файлами - PullRequest
0 голосов
/ 21 октября 2011

Я написал программу, которая вычисляет вычисления параллельно с 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 Ответ

1 голос
/ 21 октября 2011

Если у вас очень много файлов и вывод для каждого файла не зависит от всех остальных файлов, то вам вообще не нужен OpenMP. Просто запустите всю программу параллельно на нескольких процессорах с помощью инструмента, подобного GNU Parallel , чтобы получить линейное ускорение. Цикл OpenMP над аргументами в этих случаях, вероятно, довольно расточительный; с точки зрения времени программиста, то есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...