を行うネストされた:OpenMPの一部にParallelising私はサブルーチンで次の操作を実行しようとしたとき、私は任意のスピードアップを取得しないループのFortran
!$ call omp_set_num_threads(threadno)
call system_clock(x1)
!$OMP PARALLEL do private(i), reduction(+:total)
do i = 1,m
total = 0.d0
call result(a,l,b,qm,q,en) !here l is input for subroutine and en is output
qm(:,i) = q
qtv(i) = qt
mean = sum(q)/size(q)
do i2 = 1,k
total = total + ((mean-q(i2))**2)/(a+b)
end do
qvv(i1) = total
end do
call system_clock(x2)
print *, x2-x1
!$OMP END PARALLEL do
@HighPerformanceMarkがロードされます。mは、サブルーチンの入力として設定されます。私は時間にcpu_timeを使用し、スレッドは入力として設定されています。 –
スレッドが20個あり、壁時計の時間が20倍短縮されている場合、CPU_TIMEはどのくらいでしょうか? 1/20または同じCPU時間? – Holmz
@Holmz 1/20の時間? –