私はスレッドの多様性で実行する必要がある最適化するコードを用意しています。私が持っているforループでさまざまなスケジューリング手法を使っていくつかのテストを実行した後、スレッドを1つしか持っていないときに動的スケジューリングを実行するのがベストだと結論づけました。それはopenMPでも可能ですか? 条件に応じてOpenMPプラグマを選択してください
は、私は、次のような何かをできるようにしたい、より正確には:誰も私を助けることができる場合if(omp_get_max_threads()>1)
#pragma omp parallel for .... scheduling(guided)
else
#pragma omp parallel for .... scheduling(dynamic)
for(.....){
...
}
が、私はそれをお願い申し上げます。もう1つの解決策は、forループを2回記述し、if条件を使用することです。しかし、可能ならばそれを避けたい。
...:そして、あなたが将来的にそれを変更する必要がある場合は、このコードを変更する必要がある唯一の場所があるでしょう – Mysticial
それは私が最後にも意味していたものです。私の悪い、私は少し疲れています。私はそれが一つの解決策であることを知っていますが、コードの複雑さとサイズも増加します。それが私の最後の手段です。 – gkaran89
私は@Mysticialが正しいアイデアを持っていると思います。 #pragmaは通常、コンパイル時に発生することを制御します。したがって、 'for'ループのために生成されるコードは、2つの間で異なる可能性があります。実行時条件を使用して#pragmaを単独で選択します。 –