私は fortran と gfortran が初めてです。式の配列全体が並列で計算されることを学びましたが、計算はコンピューターの 1 つのコアでしか行われないことがわかりました。
次のコードを使用します。
program prueba_matrices
implicit none
integer, parameter :: num = 5000
double precision, dimension(1:num,1:num) :: A, B, C
double precision, dimension (num*num) :: temp
integer :: i
temp = (/ (i/2.0, i=1,num*num) /)
A = reshape(temp, (/ num, num/) )
B = reshape(temp, (/ num, num/) )
C = matmul(A , B)
end program prueba_matrices
私は次のように準拠します。
gfortran prueba_matrices.f03 -o prueba_gfortran
そして、gnome-system-monitor によってリアルタイムで生成されたグラフを見ると、コアが 1 つしか機能していないことがわかります。行を計算に置き換えると
C = matmul(A , B)
為に
C = A * B
同じ動作が得られます。
私は何を間違っていますか?