Я пишу программу, которая читает огромный файл (3x280 ГБ) и выполняет процедуру подбора данных в файле. Довольно удобно параллелизировать такую программу, где это легко сделать с помощью OpenMP.Открывает ли OpenMP частные объекты?
Я не понимаю, как частные переменные принимаются в OpenMP. Как мы все знаем, obcejts fstream не копируются и интуитивно, что помешало мне использовать его как частный объект. Поэтому читатель файла был разделен.
У меня возникла некоторая проблема позже, и я подумал о том, чтобы попытаться сделать так, чтобы частные пользователи ... и угадайте, что? это сработало!!! Как это возможно? если объект не копируется, как OpenMP может использовать разные копии одного и того же объекта для каждого ядра?
Это как моя программа выглядит следующим образом:
fstream dataReaderX(Dirs[0].c_str(), ios::in | ios::binary);
fstream dataReaderY(Dirs[1].c_str(), ios::in | ios::binary);
fstream dataReaderZ(Dirs[2].c_str(), ios::in | ios::binary);
#pragma omp parallel num_threads(cpus_num) shared(...) private(...,dataReaderX,dataReaderY,dataReaderZ)
{
...
}
Спасибо.