У меня нет опыта работы с openmp на C ++, и я хотел бы узнать, как правильно решить мою проблему.У меня есть 30 файлов, которые должны обрабатываться независимо одной и той же функцией.Каждый раз, когда функция активируется, генерируется новый выходной файл (от out01.txt до out30.txt) с сохранением результатов.У меня 12 процессоров на моей машине, и я хотел бы использовать 10 для этой проблемы.
Мне нужно изменить код, чтобы дождаться обработки всех 30 файлов для выполнения других подпрограмм в C ++.В данный момент я не могу заставить свой код дождаться выполнения всей области действия omp, а затем переместить вторую функцию.
Ниже приведен черновик моего кода.
int W = 10;
int i = 1;
ostringstream fileName;
int th_id, nthreads;
omp_set_num_threads(W);
#pragma omp parallel shared (nFiles) private(i,fileName,th_id)
{
#pragma omp for schedule(static)
for ( i = 1; i <= nFiles; i++)
{
th_id = omp_get_thread_num();
cout << "Th_id: " << th_id << endl;
// CALCULATION IS PERFORMED HERE FOR EACH FILE
}
}
// THIS is the point where the program should wait for the whole block to be finished
// Calling the second function ...