0
私はむしろOpenMPで新しいです。私は物事をスピードアップするためにOpenMPスレッドを使って大きな行列のすべての要素をベクトルに書きたいと思っています。OpenMPを使用して行列の要素をベクターに書き込む
私は単純に次のことをやっている私のシリアルコードで:
m=1
DO k=1,n_lorentz
DO i=1,n_channels
DO p=1,n_lorentz
DO j=1,n_channels
vector(m) = Omega(j,p,i,k)
m=m+1
END DO
END DO
END DO
END DO
今、私は並列にベクターにオメガの要素を記述するためにOMPループを使用したい:
!$OMP PARALLEL DO PRIVATE(k,i,p,j)
! bla bla
!$OMP END PARALLEL DO
問題は、現在のベクトルインデックスを追跡する方法です。この場合、シリアルコードのm
パラメータが異なるスレッドによって増分され、結果的に全体が混乱するためです。
ありがとうございます!これは確かに仕事をしています:) – Cooliofan