File: openmp_66.f90

package info (click to toggle)
lfortran 0.60.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,416 kB
  • sloc: cpp: 173,406; f90: 80,491; python: 17,586; ansic: 9,610; yacc: 2,356; sh: 1,401; fortran: 895; makefile: 38; javascript: 15
file content (24 lines) | stat: -rw-r--r-- 611 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program openmp_66
  implicit none
  integer, parameter :: N = 100
  integer :: i, sum_expected, sum_actual

  sum_actual = 0
  sum_expected = (N*(N+1)) / 2  ! sum from 1 to N

  !$omp parallel do private(i)
  do i = 1, N
    !$omp atomic
    sum_actual = sum_actual + i
    !$omp end atomic
  end do
  !$omp end parallel do

  if (sum_actual /= sum_expected) then
    print *, 'Error: Incorrect result from atomic addition.'
    print *, 'Expected:', sum_expected, ' Got:', sum_actual
    error stop
  else
    print *, 'Test passed: atomic addition is correct. Sum =', sum_actual
  end if
end program openmp_66