我在寫一個讀取大文件(3x280 GB)的程序,並對文件中的數據進行擬合過程。並行這樣一個程序非常方便,在OpenMP中很容易完成。OpenMP是否複製私人對象?
我不明白的是在OpenMP中如何使用私有變量。衆所周知,fstream的對象是不可複製的,並且是直覺性的,這阻止了我將它用作私人對象。所以文件的讀者是共享的。
我後來得到了一些問題,我想嘗試fstreams作爲私人,...並猜測是什麼?有效!!!這怎麼可能?!如果對象不可複製,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)
{
...
}
謝謝。