diff options
Diffstat (limited to 'final/testsuite/fortran/par_section_private.f')
-rw-r--r-- | final/testsuite/fortran/par_section_private.f | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/final/testsuite/fortran/par_section_private.f b/final/testsuite/fortran/par_section_private.f new file mode 100644 index 0000000..fd0ac0e --- /dev/null +++ b/final/testsuite/fortran/par_section_private.f @@ -0,0 +1,86 @@ +<ompts:test> +<ompts:testdescription>Test which checks the parallel section private clause.</ompts:testdescription> +<ompts:ompversion>2.0</ompts:ompversion> +<ompts:directive>omp parallel section private</ompts:directive> +<ompts:dependences>omp critical</ompts:dependences> +<ompts:testcode> + INTEGER FUNCTION <ompts:testcode:functionname>par_section_private</ompts:testcode:functionname>() + IMPLICIT NONE + INTEGER sum, sum0, known_sum, i + sum = 7 + sum0 = 0 +!$omp parallel sections<ompts:check>private(sum0,i)</ompts:check><ompts:crosscheck>private(i)</ompts:crosscheck> +!$omp section + sum0 = 0 + DO i=1, 399 + sum0 = sum0 + i + END DO +!$omp critical + sum = sum + sum0 +!$omp end critical +!$omp section + sum0 = 0 + DO i=400, 699 + sum0 = sum0 + i + END DO +!$omp critical + sum = sum + sum0 +!$omp end critical +!$omp section + sum0 = 0 + DO i=700, 999 + sum0 = sum0 + i + END DO +!$omp critical + sum = sum + sum0 +!$omp end critical +!$omp end parallel sections + known_sum = (999*1000)/2+7 + IF ( known_sum .eq. sum ) then + <testfunctionname></testfunctionname> = 1 + ELSE + <testfunctionname></testfunctionname> = 0 + END IF + END +</ompts:testcode> +</ompts:test> + + integer function crschk_par_section_private() + implicit none + integer sum, sum0, known_sum, i + sum = 7 + sum0 = 0 +!$omp parallel sections private(i) +!$omp section + sum0 = 0 + do i=1, 399 + sum0 = sum0 + i + end do +!$omp critical + sum = sum + sum0 +!$omp end critical +!$omp section + sum0 = 0 + do i=400, 699 + sum0 = sum0 + i + end do +!$omp critical + sum = sum + sum0 +!$omp end critical +!$omp section + sum0 = 0 + do i=700, 999 + sum0 = sum0 + i + end do +!$omp critical + sum = sum + sum0 +!$omp end critical +!$omp end parallel sections + known_sum = (999*1000)/2+7 + if ( known_sum .eq. sum ) then + crschk_par_section_private = 1 + else + crschk_par_section_private = 0 + end if + end + |