OpenMPを使用して、各スレッドがグリッドのサブセクションで動作する2dグリッドでの演算を並列化したいと考えています。OpenMP For Loop Range
サブセクションを処理する関数f(lower,upper,grid)
を想定します(下位と上位はグリッドの軸の1つを参照します)。
lower
とupper
を明示的に計算することなくf
を呼び出すことができるかどうかという疑問はありますか?
たとえば、forループがあると、OpenMPはスレッド間で自動的にループを分割します。 OpenMPで範囲を分割し、その範囲のチャンクをf
に割り当てる方法はありますか?
ありがとうございます!
アップデート:私はループのために持っていた場合
は、明確にする:
#pragma omp parallel for
for(int i=0;i<50;i++)
のOpenMPがループのために分けるでしょう。私が知りたいことは、forループがどのように分割されたかを知ることに似ています。
OpenMPに2Dワークセットを動的にスケジュールするように依頼していますか? – Mysticial
2Dデータには複雑な計算がいくつか含まれているため、単純な 'for'のアプリケーション(' collapse')は実現できません。私は、OpenMPが、その境界が何であるかを見ることができるような方法で、ループの「下位」境界と上限の境界を動的に分割したいと思います。 – Richard
OpenMPがどのように範囲を把握しているのかわかりません(どちらも理解できません...)?ある時点で、ある種の範囲を与える必要があります。 – Mysticial