OpenMP並列セクションIEのセクションごとにスレッド数を設定することが可能である場合、私は疑問に思う:openmpの各セクションのスレッド数を設定しますか?
real*8 :: x
real*4 :: y
integer*8 :: ii
integer*4 ** jj
x = 0.0d0
y = 0.0
!$OMP PARALLEL
!$OMP SECTIONS
!$OMP SECTION NUM_THREADS(3)
do ii=1,100000000000
x=x+(cos(sin(tan(ii*1.0d0)))**(x/ii)
end do
!$OMP SECTION NUM_THREADS(1)
do jj=1,10000
x=x+exp(jj*0.001)
end do
!$OMP END SECTIONS
!$OMP END PARALLEL
このコードは、16.0のifortでは動作しませんが、1つは何ができる何か他のものがある場合、私はちょうど疑問に思います..?
EDIT:セクションあたりのスレッド数を設定しようとするとエラーが発生します(コンパイル時)...セクションごとに異なるスレッド数を指定したいと思います。
EDIT 2:エラーメッセージ= 2×
エラー#5082:構文エラー、見出さ 'NUM_THREADS' "< "END-OF-STATEMENT">" のいずれかを期待。 2つの
!OMP SECTION NUM_THREADS(i)
文恩赦性急令状で
...今では私たちは、それは問題が何であるか疑いの余地なく明らかだ知るために必要なものを私たちに語ったこと
*「このコードは機能しません」*とは何ですか?それは全く何も言わない。間違った結果?彼らはどのように見えるのですか?なぜ彼らは間違っていますか?いくつかのエラーメッセージ?彼らはどのように見えるのですか?あなたのコンパイルコマンドはどのように見えますか?タイトル(スレッド数の設定)と共通するのは何ですか? –
@Vladimir F - すばやい返信をいただきありがとうございます - 私の編集がより明確になることを願っています –
このコードは何をしようとしていますか?それは 'x'に競合条件があり、「セクション」のポイントは2つのセクションを並行して実行することです。これも間違っています。 reduce節を持つ並列の2つのomp forループを欲しいだけではありませんか? (最初のループにはループ依存関係があるので、簡単に並列化できません!) –