From 0049bb863360cbefbdc3f8cc3763a0d11b0b2789 Mon Sep 17 00:00:00 2001 From: Xin Li <lxin@kth.se> Date: Fri, 6 Jul 2018 20:11:11 +0200 Subject: [PATCH] double precision in fortran --- intro_lab/pi.f90 | 14 +++++++------- intro_lab/solutions/pi_loop.f90 | 14 +++++++------- intro_lab/solutions/pi_spmd_final.f90 | 18 +++++++++--------- intro_lab/solutions/pi_spmd_simple.f90 | 18 +++++++++--------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/intro_lab/pi.f90 b/intro_lab/pi.f90 index 964bce7..4f4e1de 100644 --- a/intro_lab/pi.f90 +++ b/intro_lab/pi.f90 @@ -16,22 +16,22 @@ use omp_lib implicit none -integer*8 :: num_steps = 100000000 -real*8 step +integer(kind=8) :: num_steps = 100000000 +real(kind=8) step integer i -real*8 x, pi, raw_sum -real*8 start_time, run_time +real(kind=8) x, pi, raw_sum +real(kind=8) start_time, run_time step = 1.0D0 / num_steps start_time = OMP_GET_WTIME() -raw_sum = 0.0 +raw_sum = 0.0D0 do i = 1, num_steps - x = (i-0.5)*step - raw_sum = raw_sum + 4.0/(1.0+x*x) + x = (i-0.5D0)*step + raw_sum = raw_sum + 4.0D0/(1.0D0+x*x) enddo pi = step * raw_sum diff --git a/intro_lab/solutions/pi_loop.f90 b/intro_lab/solutions/pi_loop.f90 index a8215ee..91f5d83 100755 --- a/intro_lab/solutions/pi_loop.f90 +++ b/intro_lab/solutions/pi_loop.f90 @@ -13,13 +13,13 @@ implicit none integer, parameter :: MAX_THREADS = 4 -integer*8 :: num_steps = 100000000 +integer(kind=8) :: num_steps = 100000000 -real*8 step +real(kind=8) step integer i, num_threads -real*8 x, pi, raw_sum -real*8 start_time, run_time +real(kind=8) x, pi, raw_sum +real(kind=8) start_time, run_time step = 1.0D0 / num_steps @@ -28,7 +28,7 @@ do num_threads = 1, MAX_THREADS call OMP_SET_NUM_THREADS(num_threads) start_time = OMP_GET_WTIME() - raw_sum = 0.0 + raw_sum = 0.0D0 !$omp parallel @@ -38,8 +38,8 @@ do num_threads = 1, MAX_THREADS !$omp do private(x) reduction(+:raw_sum) do i = 1, num_steps - x = (i-0.5)*step - raw_sum = raw_sum + 4.0/(1.0+x*x) + x = (i-0.5D0)*step + raw_sum = raw_sum + 4.0D0/(1.0D0+x*x) enddo !$omp end do diff --git a/intro_lab/solutions/pi_spmd_final.f90 b/intro_lab/solutions/pi_spmd_final.f90 index 6336dca..f21b2ea 100755 --- a/intro_lab/solutions/pi_spmd_final.f90 +++ b/intro_lab/solutions/pi_spmd_final.f90 @@ -18,15 +18,15 @@ implicit none integer, parameter :: MAX_THREADS = 4 -integer*8 :: num_steps = 100000000 -real*8 step +integer(kind=8) :: num_steps = 100000000 +real(kind=8) step integer i, num_threads -real*8 pi, full_sum, partial_sum -real*8 start_time, run_time +real(kind=8) pi, full_sum, partial_sum +real(kind=8) start_time, run_time integer thread_id -real*8 x +real(kind=8) x step = 1.0D0 / num_steps @@ -34,20 +34,20 @@ do num_threads = 1, MAX_THREADS call OMP_SET_NUM_THREADS(num_threads) start_time = OMP_GET_WTIME() - full_sum = 0.0 + full_sum = 0.0D0 !$omp parallel private(thread_id, partial_sum, i, x) thread_id = OMP_GET_THREAD_NUM() + 1 - partial_sum = 0.0 + partial_sum = 0.0D0 !$omp single print '(" num_threads = ", i0)', num_threads !$omp end single do i = thread_id, num_steps, num_threads - x = (i+0.5)*step - partial_sum = partial_sum + 4.0/(1.0+x*x) + x = (i-0.5D0)*step + partial_sum = partial_sum + 4.0D0/(1.0D0+x*x) enddo !$omp critical diff --git a/intro_lab/solutions/pi_spmd_simple.f90 b/intro_lab/solutions/pi_spmd_simple.f90 index 89eb737..737ca1b 100755 --- a/intro_lab/solutions/pi_spmd_simple.f90 +++ b/intro_lab/solutions/pi_spmd_simple.f90 @@ -18,16 +18,16 @@ implicit none integer, parameter :: MAX_THREADS = 4 -integer*8 :: num_steps = 100000000 -real*8 step +integer(kind=8) :: num_steps = 100000000 +real(kind=8) step integer i, num_threads -real*8 pi, full_sum -real*8 start_time, run_time -real*8, dimension(1:MAX_THREADS) :: partial_sum +real(kind=8) pi, full_sum +real(kind=8) start_time, run_time +real(kind=8), dimension(1:MAX_THREADS) :: partial_sum integer thread_id -real*8 x +real(kind=8) x step = 1.0D0 / num_steps @@ -39,15 +39,15 @@ do num_threads = 1, MAX_THREADS !$omp parallel private(thread_id, i, x) thread_id = OMP_GET_THREAD_NUM() + 1 - partial_sum(thread_id) = 0.0 + partial_sum(thread_id) = 0.0D0 if (thread_id == 1) then print '(" num_threads = ", i0)', num_threads endif do i = thread_id, num_steps, num_threads - x = (i+0.5)*step - partial_sum(thread_id) = partial_sum(thread_id) + 4.0/(1.0+x*x) + x = (i-0.5D0)*step + partial_sum(thread_id) = partial_sum(thread_id) + 4.0D0/(1.0D0+x*x) enddo !$omp end parallel -- GitLab