! transposemat.f90 -- ! Transpose a big matrix, check CPU usage program Console4 implicit none double precision,allocatable,dimension(:,:):: P,PP integer(kind=8) :: tclock1, tclock2, clock_rate real(kind=8) :: elapsed_time, cputime1, cputime2 integer nstate integer :: i, j ! nstate=60720 nstate=60720 allocate(P(nstate,nstate),PP(nstate,nstate)) ! Trick to get the physical memory close to the processor !$omp parallel do do j = 1,nstate do i = 1,nstate pp(i,j) = 1.0d0 enddo enddo !$omp end parallel do !$omp parallel do do j = 1,nstate do i = 1,nstate p(i,j) = 0.0d0 enddo enddo !$omp end parallel do write(*,*) "1" call system_clock(tclock1) call cpu_time(cputime1) !$omp parallel do do j = 1,nstate do i = 1,nstate p(i,j) = pp(j,i) enddo enddo !$omp end parallel do call system_clock(tclock2, clock_rate) call cpu_time(cputime2) elapsed_time = float(tclock2 - tclock1) / float(clock_rate) write(*,*) elapsed_time write(*,*) cputime2-cputime1 end program Console4