私は、主に配列に対する何千億回もの操作の繰り返しの中央ループで構成される物理シミュレーションをコーディングしています。これらの操作は他の操作とは独立しているため (実際には配列は途中で変更されます)、研究室の 4 コアまたは 8 コアのコンピューターで実行できるように、コードを並列化することを考えています。似たようなことをするのは初めてで、openmp を見るように勧められました。私はそれを使っていくつかのおもちゃのプログラムをコーディングし始めましたが、それがどのように機能するかについて本当に確信が持てず、ドキュメンテーションは私にとって非常に不可解です. たとえば、次のコード:
int a = 0;
#pragma omp parallel
{
a++;
}
cout << a << endl;
私のコンピューター(4コアCPU)で起動すると、4になることもあれば、3または2になることもあります。すべてのコアが命令を実行するのを待たないためですか?私の場合、何回の反復が行われたかを知る必要があるからです。最終的に何が欲しいかを考慮して、openmp以外のものを探す必要がありますか?