1. ホーム
  2. c++

[解決済み] OpenMPでlockを使うには?

2022-02-19 01:41:19

質問

私は2つのコアで動作する2つのC++コードを持っています。どちらも同じファイルに書き込んでいます。

OpenMPを使用して、クラッシュしないことを確認する方法は?

どのように解決するのですか?

を使用する必要があります。 OMP_SET_LOCK / OMP_UNSET_LOCK 関数を使用します。 https://hpc.llnl.gov/tuts/openMP/#OMP_SET_LOCK

基本的には

omp_lock_t writelock;

omp_init_lock(&writelock);

#pragma omp parallel for
for ( i = 0; i < x; i++ )
{
    // some stuff
   omp_set_lock(&writelock);
    // one thread at a time stuff
    omp_unset_lock(&writelock);
    // some stuff
}

omp_destroy_lock(&writelock);

pthreadsセマフォやsysvセマフォなどのほとんどのロックルーチンは、特定のAPIコールは異なるものの、この種のロジックで動作します。