答えは、ハードウェアの性質とアプリケーション/ワークロードによって異なります。マルチノード クラスタ (最も一般的) または大きな共有メモリ マシンを使用していますか? あなたがクラスターユーザーであると仮定すると、(より可能性が高い) 分散メモリクロスノード並列処理とノード間共有メモリ並列処理 (SMP) のために MPI または Fortran coarray を使用する必要があります。
共有メモリの並列処理により、ノード上のコア数に比例して (Xeon では最大 32 倍)、コプロセッサではさらに高速化できます。分散メモリ並列処理により、ノード数に比例して速度が向上します。最近では、適切なパフォーマンスを得るために、両方のタイプ (または実際には 3 つのタイプすべて) の並列処理を使用する必要があります。階層のように考えることができます: 1.MPI または coarray が一番上にあり、2.共有メモリのスレッド化が中間にあり、3.ベクトル化が最も内側のレベルにあります。
さて、あなたの質問から、SMP マルチコア スレッドの並列処理レベルについて主に話しているように思えます。これは、-parallel 自動並列化が動作する場所です。auto-par に大きな魔法を期待しないでください。よりスケーラブルな並列処理を実現したい場合は、fortran OpenMP または MPI for shared memory を試す必要があります。ほとんどの場合、OpenMP をお勧めします。多くの場合、プログラミングが簡単で、パフォーマンスが向上します。しかし。それはあなた次第であり、並列処理の 3 つのレベルすべてについて、より大きく考える必要があります。3 つのレベルすべてに対処する予定の場合、おそらく最適な組み合わせは (インテル fortran のユーザーとして満足しているので) 1. 第 1 レベルの MPI + 2. SMP レベルの OpenMP + 3. 第 3 レベルの OpenMP 4.0 プラグマ simd による自動ベクトル化です。CoArray の専門家ではありませんが、1.MPI の代わりになるかもしれません。
古典的なクラスター ハードウェアを扱っていない場合、私の答えはあまり意味がありません。