저는 fortran과 gfortran을 처음 보았습니다. 전체 식 배열은 병렬로 계산된다는 것을 알았지 만 계산은 내 컴퓨터의 한 핵심에서만 발생합니다.전체 배열 표현식을 사용할 수 있습니까?
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
이 같은 complie :
내가 다음 코드를 사용하여 그놈 시스템 모니터에서 실시간으로 생성되는 그래프를보고,
gfortran prueba_matrices.f03 -o prueba_gfortran
을, 나는 볼 수있다 하나의 핵심 작업입니다. 내가
C = A * B
의 계산으로 라인
C = matmul(A , B)
를 대체 할 경우이 같은 동작을 얻을 수 있습니다.
내가 뭘 잘못하고 있니?
@HighPerformanceMark : 저는 그가 배열이 아닌 병렬 처리를 테스트하고 있다고 생각합니다. –
gfortran이 전체 배열 표현식을 병렬로 실행한다는 그 진술을 어디서 보았습니까? –
@HighPerformanceMark : 네, 두 문장이 같지 않다는 것을 압니다. KyleKanos가 말했듯이, 나는 병렬화를 테스트하고 있습니다. –