+2018-03-25 Thomas Koenig <tkoenig@gcc.gnu.org>
+
+ PR fortran/84381
+ * testsuite/libgomp.fortran/aligned1.f03: Replace non-standard
+ call abort by STOP n.
+ * testsuite/libgomp.fortran/alloc-comp-1.f90: Likewise.
+ * testsuite/libgomp.fortran/alloc-comp-2.f90: Likewise.
+ * testsuite/libgomp.fortran/alloc-comp-3.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable1.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable10.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable11.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable12.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable2.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable3.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable4.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable5.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable6.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable7.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable8.f90: Likewise.
+ * testsuite/libgomp.fortran/allocatable9.f90: Likewise.
+ * testsuite/libgomp.fortran/appendix-a/a.18.1.f90: Likewise.
+ * testsuite/libgomp.fortran/appendix-a/a.19.1.f90: Likewise.
+ * testsuite/libgomp.fortran/associate1.f90: Likewise.
+ * testsuite/libgomp.fortran/associate2.f90: Likewise.
+ * testsuite/libgomp.fortran/associate3.f90: Likewise.
+ * testsuite/libgomp.fortran/cancel-do-1.f90: Likewise.
+ * testsuite/libgomp.fortran/cancel-do-2.f90: Likewise.
+ * testsuite/libgomp.fortran/cancel-parallel-1.f90: Likewise.
+ * testsuite/libgomp.fortran/cancel-sections-1.f90: Likewise.
+ * testsuite/libgomp.fortran/cancel-taskgroup-2.f90: Likewise.
+ * testsuite/libgomp.fortran/character1.f90: Likewise.
+ * testsuite/libgomp.fortran/character2.f90: Likewise.
+ * testsuite/libgomp.fortran/collapse1.f90: Likewise.
+ * testsuite/libgomp.fortran/collapse2.f90: Likewise.
+ * testsuite/libgomp.fortran/collapse3.f90: Likewise.
+ * testsuite/libgomp.fortran/collapse4.f90: Likewise.
+ * testsuite/libgomp.fortran/crayptr1.f90: Likewise.
+ * testsuite/libgomp.fortran/crayptr2.f90: Likewise.
+ * testsuite/libgomp.fortran/crayptr3.f90: Likewise.
+ * testsuite/libgomp.fortran/declare-simd-1.f90: Likewise.
+ * testsuite/libgomp.fortran/declare-simd-3.f90: Likewise.
+ * testsuite/libgomp.fortran/declare-target-2.f90: Likewise.
+ * testsuite/libgomp.fortran/depend-1.f90: Likewise.
+ * testsuite/libgomp.fortran/depend-2.f90: Likewise.
+ * testsuite/libgomp.fortran/depend-3.f90: Likewise.
+ * testsuite/libgomp.fortran/do1.f90: Likewise.
+ * testsuite/libgomp.fortran/do2.f90: Likewise.
+ * testsuite/libgomp.fortran/doacross1.f90: Likewise.
+ * testsuite/libgomp.fortran/doacross2.f90: Likewise.
+ * testsuite/libgomp.fortran/doacross3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/array_sections-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/array_sections-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/async_target-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/async_target-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/declare_target-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/declare_target-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/declare_target-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/declare_target-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/declare_target-5.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/device-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/device-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/device-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-5.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-6.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-7.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/simd-8.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target-5.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-5.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-6.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_data-7.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_update-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/target_update-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/task_dep-1.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/task_dep-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/task_dep-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/task_dep-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/task_dep-5.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/teams-2.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/teams-3.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/teams-4.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/teams-5.f90: Likewise.
+ * testsuite/libgomp.fortran/examples-4/teams-6.f90: Likewise.
+ * testsuite/libgomp.fortran/lastprivate1.f90: Likewise.
+ * testsuite/libgomp.fortran/lastprivate2.f90: Likewise.
+ * testsuite/libgomp.fortran/lib1.f90: Likewise.
+ * testsuite/libgomp.fortran/lib2.f: Likewise.
+ * testsuite/libgomp.fortran/lib3.f: Likewise.
+ * testsuite/libgomp.fortran/lib4.f90: Likewise.
+ * testsuite/libgomp.fortran/lock-1.f90: Likewise.
+ * testsuite/libgomp.fortran/lock-2.f90: Likewise.
+ * testsuite/libgomp.fortran/nested1.f90: Likewise.
+ * testsuite/libgomp.fortran/nestedfn1.f90: Likewise.
+ * testsuite/libgomp.fortran/nestedfn2.f90: Likewise.
+ * testsuite/libgomp.fortran/nestedfn3.f90: Likewise.
+ * testsuite/libgomp.fortran/nestedfn4.f90: Likewise.
+ * testsuite/libgomp.fortran/nestedfn5.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_atomic1.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_atomic2.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_atomic3.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_atomic4.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_atomic5.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_cond1.f: Likewise.
+ * testsuite/libgomp.fortran/omp_cond2.f: Likewise.
+ * testsuite/libgomp.fortran/omp_cond3.F90: Likewise.
+ * testsuite/libgomp.fortran/omp_cond4.F90: Likewise.
+ * testsuite/libgomp.fortran/omp_parse1.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_parse2.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_parse3.f90: Likewise.
+ * testsuite/libgomp.fortran/omp_parse4.f90: Likewise.
+ * testsuite/libgomp.fortran/openmp_version-1.f: Likewise.
+ * testsuite/libgomp.fortran/openmp_version-2.f90: Likewise.
+ * testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95: Likewise.
+ * testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95: Likewise.
+ * testsuite/libgomp.fortran/pointer1.f90: Likewise.
+ * testsuite/libgomp.fortran/pointer2.f90: Likewise.
+ * testsuite/libgomp.fortran/pr25162.f: Likewise.
+ * testsuite/libgomp.fortran/pr25219.f90: Likewise.
+ * testsuite/libgomp.fortran/pr27395-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr27395-2.f90: Likewise.
+ * testsuite/libgomp.fortran/pr27416-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr27916-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr27916-2.f90: Likewise.
+ * testsuite/libgomp.fortran/pr28390.f: Likewise.
+ * testsuite/libgomp.fortran/pr29629.f90: Likewise.
+ * testsuite/libgomp.fortran/pr32550.f90: Likewise.
+ * testsuite/libgomp.fortran/pr33880.f90: Likewise.
+ * testsuite/libgomp.fortran/pr34020.f90: Likewise.
+ * testsuite/libgomp.fortran/pr35130.f90: Likewise.
+ * testsuite/libgomp.fortran/pr42162.f90: Likewise.
+ * testsuite/libgomp.fortran/pr46753.f90: Likewise.
+ * testsuite/libgomp.fortran/pr48894.f90: Likewise.
+ * testsuite/libgomp.fortran/pr49792-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr49792-2.f90: Likewise.
+ * testsuite/libgomp.fortran/pr63938-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr63938-2.f90: Likewise.
+ * testsuite/libgomp.fortran/pr65597.f90: Likewise.
+ * testsuite/libgomp.fortran/pr66199-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr71014.f90: Likewise.
+ * testsuite/libgomp.fortran/pr81304.f90: Likewise.
+ * testsuite/libgomp.fortran/pr81841.f90: Likewise.
+ * testsuite/libgomp.fortran/pr84418-1.f90: Likewise.
+ * testsuite/libgomp.fortran/pr84418-2.f90: Likewise.
+ * testsuite/libgomp.fortran/procptr1.f90: Likewise.
+ * testsuite/libgomp.fortran/recursion1.f90: Likewise.
+ * testsuite/libgomp.fortran/reduction1.f90: Likewise.
+ * testsuite/libgomp.fortran/reduction2.f90: Likewise.
+ * testsuite/libgomp.fortran/reduction3.f90: Likewise.
+ * testsuite/libgomp.fortran/reduction4.f90: Likewise.
+ * testsuite/libgomp.fortran/reduction5.f90: Likewise.
+ * testsuite/libgomp.fortran/reduction6.f90: Likewise.
+ * testsuite/libgomp.fortran/reference1.f90: Likewise.
+ * testsuite/libgomp.fortran/reference2.f90: Likewise.
+ * testsuite/libgomp.fortran/retval1.f90: Likewise.
+ * testsuite/libgomp.fortran/retval2.f90: Likewise.
+ * testsuite/libgomp.fortran/sharing1.f90: Likewise.
+ * testsuite/libgomp.fortran/sharing2.f90: Likewise.
+ * testsuite/libgomp.fortran/simd1.f90: Likewise.
+ * testsuite/libgomp.fortran/simd2.f90: Likewise.
+ * testsuite/libgomp.fortran/simd3.f90: Likewise.
+ * testsuite/libgomp.fortran/simd4.f90: Likewise.
+ * testsuite/libgomp.fortran/simd5.f90: Likewise.
+ * testsuite/libgomp.fortran/simd6.f90: Likewise.
+ * testsuite/libgomp.fortran/simd7.f90: Likewise.
+ * testsuite/libgomp.fortran/stack.f90: Likewise.
+ * testsuite/libgomp.fortran/strassen.f90: Likewise.
+ * testsuite/libgomp.fortran/tabs1.f90: Likewise.
+ * testsuite/libgomp.fortran/tabs2.f: Likewise.
+ * testsuite/libgomp.fortran/target1.f90: Likewise.
+ * testsuite/libgomp.fortran/target2.f90: Likewise.
+ * testsuite/libgomp.fortran/target3.f90: Likewise.
+ * testsuite/libgomp.fortran/target4.f90: Likewise.
+ * testsuite/libgomp.fortran/target5.f90: Likewise.
+ * testsuite/libgomp.fortran/target6.f90: Likewise.
+ * testsuite/libgomp.fortran/target7.f90: Likewise.
+ * testsuite/libgomp.fortran/target8.f90: Likewise.
+ * testsuite/libgomp.fortran/task1.f90: Likewise.
+ * testsuite/libgomp.fortran/task2.f90: Likewise.
+ * testsuite/libgomp.fortran/task3.f90: Likewise.
+ * testsuite/libgomp.fortran/task4.f90: Likewise.
+ * testsuite/libgomp.fortran/taskgroup1.f90: Likewise.
+ * testsuite/libgomp.fortran/taskloop1.f90: Likewise.
+ * testsuite/libgomp.fortran/taskloop2.f90: Likewise.
+ * testsuite/libgomp.fortran/taskloop3.f90: Likewise.
+ * testsuite/libgomp.fortran/taskloop4.f90: Likewise.
+ * testsuite/libgomp.fortran/threadprivate1.f90: Likewise.
+ * testsuite/libgomp.fortran/threadprivate2.f90: Likewise.
+ * testsuite/libgomp.fortran/threadprivate3.f90: Likewise.
+ * testsuite/libgomp.fortran/threadprivate4.f90: Likewise.
+ * testsuite/libgomp.fortran/udr1.f90: Likewise.
+ * testsuite/libgomp.fortran/udr10.f90: Likewise.
+ * testsuite/libgomp.fortran/udr11.f90: Likewise.
+ * testsuite/libgomp.fortran/udr12.f90: Likewise.
+ * testsuite/libgomp.fortran/udr13.f90: Likewise.
+ * testsuite/libgomp.fortran/udr14.f90: Likewise.
+ * testsuite/libgomp.fortran/udr15.f90: Likewise.
+ * testsuite/libgomp.fortran/udr2.f90: Likewise.
+ * testsuite/libgomp.fortran/udr3.f90: Likewise.
+ * testsuite/libgomp.fortran/udr4.f90: Likewise.
+ * testsuite/libgomp.fortran/udr5.f90: Likewise.
+ * testsuite/libgomp.fortran/udr6.f90: Likewise.
+ * testsuite/libgomp.fortran/udr7.f90: Likewise.
+ * testsuite/libgomp.fortran/udr8.f90: Likewise.
+ * testsuite/libgomp.fortran/udr9.f90: Likewise.
+ * testsuite/libgomp.fortran/vla1.f90: Likewise.
+ * testsuite/libgomp.fortran/vla2.f90: Likewise.
+ * testsuite/libgomp.fortran/vla3.f90: Likewise.
+ * testsuite/libgomp.fortran/vla4.f90: Likewise.
+ * testsuite/libgomp.fortran/vla5.f90: Likewise.
+ * testsuite/libgomp.fortran/vla6.f90: Likewise.
+ * testsuite/libgomp.fortran/vla7.f90: Likewise.
+ * testsuite/libgomp.fortran/vla8.f90: Likewise.
+ * testsuite/libgomp.fortran/workshare1.f90: Likewise.
+ * testsuite/libgomp.fortran/workshare2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/abort-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/abort-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/asyncwait-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/asyncwait-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/asyncwait-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/atomic_capture-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/atomic_rw-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/atomic_update-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/c2.pl: Likewise.
+ * testsuite/libgomp.oacc-fortran/clauses-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-5.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-6.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-7.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/collapse-8.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/combined-directives-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/combined-reduction.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/data-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/data-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/data-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/data-4-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/data-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/declare-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/declare-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/declare-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/declare-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/declare-5.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/default-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/firstprivate-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/gang-static-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/host_data-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/if-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop-2.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop-data-2.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop-data-enter-exit-2.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop-data-enter-exit.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop-data-update.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop-data.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/kernels-loop.f95: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-10.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-2.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-3.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-32-1.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-32-2.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-5.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-6.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-7.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/lib-8.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/map-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/nested-function-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/nested-function-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/nested-function-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/non-scalar-data.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/openacc_version-1.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/openacc_version-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/par-reduction-2-1.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/par-reduction-2-2.f: Likewise.
+ * testsuite/libgomp.oacc-fortran/parallel-reduction.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/pointer-align-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/pr70643.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/pr81352.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/pr83920.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/pr84028.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/private-variables.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/pset-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-5.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-6.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-7.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/reduction-8.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-3.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-4.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-5.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-7.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/routine-9.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/subarrays-1.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/subarrays-2.f90: Likewise.
+ * testsuite/libgomp.oacc-fortran/update-1.f90: Likewise.
+
2018-03-20 Richard Biener <rguenther@suse.de>
* testsuite/libgomp.graphite/force-parallel-4.c: XFAIL one
# Plugins for offload execution, Makefile.am fragment.
#
-# Copyright (C) 2014-2017 Free Software Foundation, Inc.
+# Copyright (C) 2014-2018 Free Software Foundation, Inc.
#
# Contributed by Mentor Embedded.
#
end do
call foo (p, q, c_loc (r(1)), s)
do i = 1, 1024
- if (p(i) /= i * i + 3 * i + 2) call abort
+ if (p(i) /= i * i + 3 * i + 2) STOP 1
p(i) = i
end do
call bar (p, q, c_loc (r(1)), s)
do i = 1, 1024
- if (p(i) /= i * i + 3 * i + 2) call abort
+ if (p(i) /= i * i + 3 * i + 2) STOP 2
end do
! Attempt to create 64-byte aligned allocatable
do i = 1, 64
end do
call baz (p, c)
do i = 1, 1024
- if (p(i) /= i * i + 5 * i + 2) call abort
+ if (p(i) /= i * i + 5 * i + 2) STOP 3
end do
end if
end
type (dl), intent (in) :: obj
integer, intent (in) :: val, cl1, cu1, cl2, cu2
logical, intent (in) :: c, f
- if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) call abort
+ if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) STOP 1
if (c) then
- if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) call abort
- if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) call abort
+ if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) STOP 2
+ if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) STOP 3
end if
if (val /= 0) then
- if (obj%a /= val .or. obj%b /= val) call abort
- if (obj%d /= val .or. obj%e /= val) call abort
+ if (obj%a /= val .or. obj%b /= val) STOP 4
+ if (obj%d /= val .or. obj%e /= val) STOP 5
if (c) then
- if (any (obj%c /= val)) call abort
+ if (any (obj%c /= val)) STOP 6
end if
if (f) then
- if (obj%f /= val) call abort
+ if (obj%f /= val) STOP 7
end if
end if
end subroutine ver_dl
integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
logical, intent (in) :: h, k, c, f
integer :: i, j
- if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) call abort
+ if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) STOP 8
if (h) then
- if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) call abort
+ if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) STOP 9
do i = hl, hu
call ver_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
end do
end do
if (k) call ver_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
if (val /= 0) then
- if (obj%g /= val .or. obj%i /= val) call abort
+ if (obj%g /= val .or. obj%i /= val) STOP 10
end if
end subroutine ver_dt
subroutine alloc_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
type (dl), intent (in) :: obj
integer, intent (in) :: val, cl1, cu1, cl2, cu2
logical, intent (in) :: c, f
- if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) call abort
+ if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) STOP 1
if (c) then
- if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) call abort
- if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) call abort
+ if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) STOP 2
+ if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) STOP 3
end if
if (val /= 0) then
- if (obj%a /= val .or. obj%b /= val) call abort
- if (obj%d /= val .or. obj%e /= val) call abort
+ if (obj%a /= val .or. obj%b /= val) STOP 4
+ if (obj%d /= val .or. obj%e /= val) STOP 5
if (c) then
- if (any (obj%c /= val)) call abort
+ if (any (obj%c /= val)) STOP 6
end if
if (f) then
- if (obj%f /= val) call abort
+ if (obj%f /= val) STOP 7
end if
end if
end subroutine ver_dl
integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
logical, intent (in) :: h, k, c, f
integer :: i, j
- if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) call abort
+ if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) STOP 8
if (h) then
- if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) call abort
+ if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) STOP 9
do i = hl, hu
call ver_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
end do
end do
if (k) call ver_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
if (val /= 0) then
- if (obj%g /= val .or. obj%i /= val) call abort
+ if (obj%g /= val .or. obj%i /= val) STOP 10
end if
end subroutine ver_dt
subroutine alloc_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
logical, parameter :: T = .true.
logical :: l
!$omp parallel private (x, y, z)
- if (allocated (x) .or. allocated (y) .or. allocated (z)) call abort
+ if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 11
!$omp end parallel
!$omp parallel firstprivate (x, y, z)
- if (allocated (x) .or. allocated (y) .or. allocated (z)) call abort
+ if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 12
!$omp end parallel
l = F
!$omp parallel sections lastprivate (x, y, z) firstprivate (l)
!$omp section
if (.not. l) then
- if (allocated (x) .or. allocated (y) .or. allocated (z)) call abort
+ if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 13
end if
!$omp section
if (.not. l) then
- if (allocated (x) .or. allocated (y) .or. allocated (z)) call abort
+ if (allocated (x) .or. allocated (y) .or. allocated (z)) STOP 14
end if
allocate (x, y, z(-3:-3,2:3))
call alloc_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
!$omp section
!$omp end parallel sections
- if (.not.allocated (x) .or. .not.allocated (y)) call abort
- if (.not.allocated (z)) call abort
- if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) call abort
- if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) call abort
+ if (.not.allocated (x) .or. .not.allocated (y)) STOP 15
+ if (.not.allocated (z)) STOP 16
+ if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) STOP 17
+ if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) STOP 18
call ver_dt (x, 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
call ver_dt (y, 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
type (dl), intent (in) :: obj
integer, intent (in) :: val, cl1, cu1, cl2, cu2
logical, intent (in) :: c, f
- if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) call abort
+ if ((c .neqv. allocated (obj%c)) .or. (f .neqv. allocated (obj%f))) STOP 1
if (c) then
- if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) call abort
- if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) call abort
+ if (lbound (obj%c, 1) /= cl1 .or. ubound (obj%c, 1) /= cu1) STOP 2
+ if (lbound (obj%c, 2) /= cl2 .or. ubound (obj%c, 2) /= cu2) STOP 3
end if
if (val /= 0) then
- if (obj%a /= val .or. obj%b /= val) call abort
- if (obj%d /= val .or. obj%e /= val) call abort
+ if (obj%a /= val .or. obj%b /= val) STOP 4
+ if (obj%d /= val .or. obj%e /= val) STOP 5
if (c) then
- if (any (obj%c /= val)) call abort
+ if (any (obj%c /= val)) STOP 6
end if
if (f) then
- if (obj%f /= val) call abort
+ if (obj%f /= val) STOP 7
end if
end if
end subroutine ver_dl
integer, intent (in) :: val, hl, hu, cl1, cu1, cl2, cu2
logical, intent (in) :: h, k, c, f
integer :: i, j
- if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) call abort
+ if ((h .neqv. allocated (obj%h)) .or. (k .neqv. allocated (obj%k))) STOP 8
if (h) then
- if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) call abort
+ if (lbound (obj%h, 1) /= hl .or. ubound (obj%h, 1) /= hu) STOP 9
do i = hl, hu
call ver_dl (obj%h(i), val, c, cl1, cu1, cl2, cu2, f)
end do
end do
if (k) call ver_dl (obj%k, val, c, cl1, cu1, cl2, cu2, f)
if (val /= 0) then
- if (obj%g /= val .or. obj%i /= val) call abort
+ if (obj%g /= val .or. obj%i /= val) STOP 10
end if
end subroutine ver_dt
subroutine alloc_dl (obj, val, c, cl1, cu1, cl2, cu2, f)
logical, parameter :: F = .false.
logical, parameter :: T = .true.
logical :: l
- if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) call abort
- if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) call abort
+ if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) STOP 11
+ if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) STOP 12
call ver_dt (x(2), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
call ver_dt (x(n), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
call ver_dt (y(3), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
call ver_dt (y(4), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
!$omp parallel private (z)
- if (allocated (z)) call abort
+ if (allocated (z)) STOP 13
!$omp end parallel
!$omp parallel firstprivate (z)
- if (allocated (z)) call abort
+ if (allocated (z)) STOP 14
!$omp end parallel
l = F
!$omp parallel sections lastprivate (z) firstprivate (l)
!$omp section
if (.not. l) then
- if (allocated (z)) call abort
+ if (allocated (z)) STOP 15
end if
!$omp section
if (.not. l) then
- if (allocated (z)) call abort
+ if (allocated (z)) STOP 16
end if
allocate (z(-3:-3,2:3))
call alloc_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
!$omp section
!$omp end parallel sections
- if (.not.allocated (z)) call abort
- if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) call abort
- if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) call abort
+ if (.not.allocated (z)) STOP 17
+ if (lbound (z, 1) /= -3 .or. ubound (z, 1) /= -3) STOP 18
+ if (lbound (z, 2) /= 2 .or. ubound (z, 2) /= 3) STOP 19
call ver_dt (z(-3,2), 5, F, 0, 0, T, T, -1, -1, -1, -1, T)
call ver_dt (z(-3,3), 23, T, 0, 1, T, T, 2, 2, 2, 2, F)
call ver_dt (x(n - 1), 0, F, 0, 0, F, F, 0, 0, 0, 0, F)
call alloc_dt (z(-3,2), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
call alloc_dt (z(-3,3), 15, F, 0, 0, T, T, 2, 2, 2, 2, T)
!$omp parallel firstprivate (x, y, z)
- if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) call abort
- if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) call abort
+ if (lbound (x, 1) /= 2 .or. ubound (x, 1) /= 4) STOP 20
+ if (lbound (y, 1) /= 3 .or. ubound (y, 1) /= 4) STOP 21
call ver_dt (x(n - 1), 5, T, 1, 2, F, T, 2, 3, -2, -2, F)
call alloc_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
call ver_dt (x(n - 1), 4, T, -3, -1, T, T, -1, -1, 2, 3, T)
logical :: k, l
b(:, :) = 16
l = .false.
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 1
!$omp parallel private (a, b) reduction (.or.:l)
l = l.or.allocated (a)
allocate (a(3, 6))
deallocate (a)
l = l.or.allocated (a)
!$omp end parallel
- if (allocated (a).or.l) call abort
+ if (allocated (a).or.l) STOP 2
allocate (a(6, 3))
a(:, :) = 3
- if (.not.allocated (a)) call abort
+ if (.not.allocated (a)) STOP 3
l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
- if (l) call abort
+ if (l) STOP 4
!$omp parallel private (a, b) reduction (.or.:l)
l = l.or..not.allocated (a)
a(3, 2) = 1
b(3, 2) = 1
!$omp end parallel
- if (l.or..not.allocated (a)) call abort
+ if (l.or..not.allocated (a)) STOP 5
!$omp parallel firstprivate (a, b) reduction (.or.:l)
l = l.or..not.allocated (a)
l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
a(:, :) = omp_get_thread_num ()
b(:, :) = omp_get_thread_num ()
!$omp end parallel
- if (any (a.ne.3).or.any (b.ne.16).or.l) call abort
+ if (any (a.ne.3).or.any (b.ne.16).or.l) STOP 6
k = .true.
!$omp parallel do firstprivate (a, b, k) lastprivate (a, b) &
!$omp & reduction (.or.:l)
a(:, :) = i + 2
b(:, :) = i
end do
- if (any (a.ne.38).or.any (b.ne.36).or.l) call abort
+ if (any (a.ne.38).or.any (b.ne.36).or.l) STOP 7
deallocate (a)
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 8
allocate (a (0:1, 0:3))
a(:, :) = 0
!$omp parallel do reduction (+:a) reduction (.or.:l) &
a(modulo (i, 2), i / 2) = a(modulo (i, 2), i / 2) + i
a(i / 4, modulo (i, 4)) = a(i / 4, modulo (i, 4)) + i
end do
- if (l) call abort
+ if (l) STOP 9
do i = 0, 1
do j = 0, 3
- if (a(i, j) .ne. (5*i + 3*j)) call abort
+ if (a(i, j) .ne. (5*i + 3*j)) STOP 10
end do
end do
end
integer :: i
!$omp declare reduction (foo : integer : omp_out = omp_out + omp_in) &
!$omp & initializer (omp_priv = 0)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 1
allocate (a, b(6:9), c(3, 8:9))
a = 0
b = 0
c = 0
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 2
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 3
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 4
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 5
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 6
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 7
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 8
!$omp parallel do reduction (+:a, b, c)
do i = 1, 10
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 9
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 10
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 11
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 12
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 13
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 14
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 15
a = a + i
b = b + 2 * i
c = c + 3 * i
end do
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) call abort
+ if (.not.allocated (a)) STOP 16
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 17
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 18
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 19
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 20
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 21
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 22
+ if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) STOP 23
a = 0
b = 0
c = 0
!$omp parallel do reduction (foo : a, b, c)
do i = 1, 10
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 24
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 25
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 26
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 27
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 28
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 29
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 30
a = a + i
b = b + 2 * i
c = c + 3 * i
end do
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) call abort
+ if (.not.allocated (a)) STOP 31
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 32
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 33
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 34
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 35
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 36
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 37
+ if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) STOP 38
a = 0
b = 0
c = 0
!$omp simd reduction (+:a, b, c)
do i = 1, 10
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 39
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 40
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 41
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 42
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 43
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 44
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 45
a = a + i
b = b + 2 * i
c = c + 3 * i
end do
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) call abort
+ if (.not.allocated (a)) STOP 46
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 47
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 48
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 49
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 50
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 51
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 52
+ if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) STOP 53
a = 0
b = 0
c = 0
!$omp simd reduction (foo : a, b, c)
do i = 1, 10
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 54
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 55
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 56
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 57
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 58
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 59
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 60
a = a + i
b = b + 2 * i
c = c + 3 * i
end do
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) call abort
+ if (.not.allocated (a)) STOP 61
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 62
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 63
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 64
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 65
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 66
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 67
+ if (a /= 55 .or. any (b /= 110) .or. any (c /= 165)) STOP 68
end
integer, allocatable, save :: a, b(:), c(:,:)
integer :: p
!$omp threadprivate (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 1
call omp_set_dynamic (.false.)
call omp_set_num_threads (4)
!$omp parallel num_threads (4)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 2
!$omp end parallel
allocate (a, b(6:9), c(3, 8:9))
a = 4
b = 5
c = 6
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 3
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 4
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 5
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 6
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 7
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 8
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 9
!$omp parallel num_threads (4) copyin (a, b, c) private (p)
p = omp_get_thread_num ()
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 4 .or. any (b /= 5) .or. any (c /= 6)) call abort
+ if (.not.allocated (a)) STOP 10
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 11
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 12
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 13
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 14
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 15
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 16
+ if (a /= 4 .or. any (b /= 5) .or. any (c /= 6)) STOP 17
deallocate (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 18
allocate (a, b(p:9), c(3, p:7))
a = p
b = p
c = p
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= (10 - p)) call abort
- if (lbound (b, 1) /= p .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= (3 * (8 - p))) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= (8 - p)) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= p .or. ubound (c, 2) /= 7) call abort
- if (a /= p .or. any (b /= p) .or. any (c /= p)) call abort
+ if (.not.allocated (a)) STOP 19
+ if (.not.allocated (b) .or. size (b) /= (10 - p)) STOP 20
+ if (lbound (b, 1) /= p .or. ubound (b, 1) /= 9) STOP 21
+ if (.not.allocated (c) .or. size (c) /= (3 * (8 - p))) STOP 22
+ if (size (c, 1) /= 3 .or. size (c, 2) /= (8 - p)) STOP 23
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 24
+ if (lbound (c, 2) /= p .or. ubound (c, 2) /= 7) STOP 25
+ if (a /= p .or. any (b /= p) .or. any (c /= p)) STOP 26
!$omp end parallel
!$omp parallel num_threads (4) copyin (a, b, c)
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 10) call abort
- if (lbound (b, 1) /= 0 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 24) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 8) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 0 .or. ubound (c, 2) /= 7) call abort
- if (a /= 0 .or. any (b /= 0) .or. any (c /= 0)) call abort
+ if (.not.allocated (a)) STOP 27
+ if (.not.allocated (b) .or. size (b) /= 10) STOP 28
+ if (lbound (b, 1) /= 0 .or. ubound (b, 1) /= 9) STOP 29
+ if (.not.allocated (c) .or. size (c) /= 24) STOP 30
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 8) STOP 31
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 32
+ if (lbound (c, 2) /= 0 .or. ubound (c, 2) /= 7) STOP 33
+ if (a /= 0 .or. any (b /= 0) .or. any (c /= 0)) STOP 34
!$omp end parallel
deallocate (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 35
!$omp parallel num_threads (4) copyin (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 36
!$omp end parallel
end
integer, allocatable :: a, b(:), c(:,:)
logical :: l
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 1
!$omp parallel private (a, b, c, l)
l = .false.
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 2
!$omp single
allocate (a, b(6:9), c(3, 8:9))
c = 6
!$omp end single copyprivate (a, b, c)
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 4 .or. any (b /= 5) .or. any (c /= 6)) call abort
+ if (.not.allocated (a)) STOP 3
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 4
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 5
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 6
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 7
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 8
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 9
+ if (a /= 4 .or. any (b /= 5) .or. any (c /= 6)) STOP 10
!$omp single
deallocate (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 11
allocate (a, b(0:4), c(3, 2:7))
a = 1
b = 2
c = 3
!$omp end single copyprivate (a, b, c)
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 5) call abort
- if (lbound (b, 1) /= 0 .or. ubound (b, 1) /= 4) call abort
- if (.not.allocated (c) .or. size (c) /= 18) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 6) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 2 .or. ubound (c, 2) /= 7) call abort
- if (a /= 1 .or. any (b /= 2) .or. any (c /= 3)) call abort
+ if (.not.allocated (a)) STOP 12
+ if (.not.allocated (b) .or. size (b) /= 5) STOP 13
+ if (lbound (b, 1) /= 0 .or. ubound (b, 1) /= 4) STOP 14
+ if (.not.allocated (c) .or. size (c) /= 18) STOP 15
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 6) STOP 16
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 17
+ if (lbound (c, 2) /= 2 .or. ubound (c, 2) /= 7) STOP 18
+ if (a /= 1 .or. any (b /= 2) .or. any (c /= 3)) STOP 19
!$omp single
l = .true.
deallocate (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 20
allocate (a, b(2:6), c(3:5, 3:8))
a = 7
b = 8
c = 9
!$omp end single copyprivate (a, b, c)
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 5) call abort
+ if (.not.allocated (a)) STOP 21
+ if (.not.allocated (b) .or. size (b) /= 5) STOP 22
if (l) then
- if (lbound (b, 1) /= 2 .or. ubound (b, 1) /= 6) call abort
+ if (lbound (b, 1) /= 2 .or. ubound (b, 1) /= 6) STOP 23
else
- if (lbound (b, 1) /= 0 .or. ubound (b, 1) /= 4) call abort
+ if (lbound (b, 1) /= 0 .or. ubound (b, 1) /= 4) STOP 24
end if
- if (.not.allocated (c) .or. size (c) /= 18) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 6) call abort
+ if (.not.allocated (c) .or. size (c) /= 18) STOP 25
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 6) STOP 26
if (l) then
- if (lbound (c, 1) /= 3 .or. ubound (c, 1) /= 5) call abort
- if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 8) call abort
+ if (lbound (c, 1) /= 3 .or. ubound (c, 1) /= 5) STOP 27
+ if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 8) STOP 28
else
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 2 .or. ubound (c, 2) /= 7) call abort
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 29
+ if (lbound (c, 2) /= 2 .or. ubound (c, 2) /= 7) STOP 30
end if
- if (a /= 7 .or. any (b /= 8) .or. any (c /= 9)) call abort
+ if (a /= 7 .or. any (b /= 8) .or. any (c /= 9)) STOP 31
!$omp end parallel
end
integer :: n
logical :: l
!$omp threadprivate (a)
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 1
call omp_set_dynamic (.false.)
l = .false.
!$omp parallel num_threads (4) reduction(.or.:l)
l = l.or..not.allocated (a)
l = l.or.size(a).ne.12.or.size(a,1).ne.3.or.size(a,2).ne.4
!$omp end parallel
- if (l.or.any(a.ne.6)) call abort ()
+ if (l.or.any(a.ne.6)) STOP 1
!$omp parallel num_threads (4) copyin (a) reduction(.or.:l) private (b)
l = l.or.allocated (b)
l = l.or..not.allocated (a)
deallocate (b)
l = l.or.allocated (b)
!$omp end parallel
- if (n.lt.0 .or. n.ge.4) call abort
- if (l.or.any(a.ne.(n + 36))) call abort
+ if (n.lt.0 .or. n.ge.4) STOP 2
+ if (l.or.any(a.ne.(n + 36))) STOP 3
!$omp parallel num_threads (4) reduction(.or.:l)
deallocate (a)
l = l.or.allocated (a)
!$omp end parallel
- if (l.or.allocated (a)) call abort
+ if (l.or.allocated (a)) STOP 4
end
integer :: i
logical :: l
l = .false.
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 1
!$omp parallel private (a) reduction (.or.:l)
allocate (a (-7:-5))
l = l.or..not.allocated (a)
logical :: k, l
b(:, :) = 16
l = .false.
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 1
!$omp task private (a, b) shared (l)
l = l.or.allocated (a)
allocate (a(3, 6))
l = l.or.allocated (a)
!$omp end task
!$omp taskwait
- if (allocated (a).or.l) call abort
+ if (allocated (a).or.l) STOP 2
allocate (a(6, 3))
a(:, :) = 3
- if (.not.allocated (a)) call abort
+ if (.not.allocated (a)) STOP 3
l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
- if (l) call abort
+ if (l) STOP 4
!$omp task private (a, b) shared (l)
l = l.or..not.allocated (a)
a(3, 2) = 1
b(3, 2) = 1
!$omp end task
!$omp taskwait
- if (l.or..not.allocated (a)) call abort
+ if (l.or..not.allocated (a)) STOP 5
!$omp task firstprivate (a, b) shared (l)
l = l.or..not.allocated (a)
l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
b(:, :) = 8
!$omp end task
!$omp taskwait
- if (any (a.ne.3).or.any (b.ne.16).or.l) call abort
+ if (any (a.ne.3).or.any (b.ne.16).or.l) STOP 6
end
a = a + 2
!$omp end sections
!$omp end parallel
- if (any (a.ne.3)) call abort
+ if (any (a.ne.3)) STOP 1
deallocate (a)
end
else if (i .gt. 1 .and. i .lt. 9) then
j = 7
end if
- if (c(i) .ne. j) call abort
+ if (c(i) .ne. j) STOP 1
j = 179 - modulo (i, 11)
if (i .gt. 1 .and. i .lt. 9) j = i
- if (d(i) .ne. j) call abort
+ if (d(i) .ne. j) STOP 2
end do
deallocate (a, b, c, d)
end
deallocate (a)
l = l .or. allocated (a)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end
integer, save, allocatable :: a(:, :)
logical :: l
!$omp threadprivate (a)
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 1
l = .false.
!$omp parallel copyin (a) num_threads (4) reduction(.or.:l)
l = l.or.allocated (a)
!$omp end parallel
- if (l.or.allocated (a)) call abort
+ if (l.or.allocated (a)) STOP 2
end
integer, allocatable :: a, b(:), c(:,:)
logical :: l
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 1
!$omp parallel private (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 2
allocate (a, b(-7:-1), c(2:3, 3:5))
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 7) call abort
- if (lbound (b, 1) /= -7 .or. ubound (b, 1) /= -1) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 2 .or. size (c, 2) /= 3) call abort
- if (lbound (c, 1) /= 2 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 5) call abort
+ if (.not.allocated (a)) STOP 3
+ if (.not.allocated (b) .or. size (b) /= 7) STOP 4
+ if (lbound (b, 1) /= -7 .or. ubound (b, 1) /= -1) STOP 5
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 6
+ if (size (c, 1) /= 2 .or. size (c, 2) /= 3) STOP 7
+ if (lbound (c, 1) /= 2 .or. ubound (c, 1) /= 3) STOP 8
+ if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 5) STOP 9
a = 4
b = 3
c = 2
!$omp end parallel
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 10
!$omp parallel firstprivate (a, b, c)
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 11
allocate (a, b(-7:-1), c(2:3, 3:5))
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 7) call abort
- if (lbound (b, 1) /= -7 .or. ubound (b, 1) /= -1) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 2 .or. size (c, 2) /= 3) call abort
- if (lbound (c, 1) /= 2 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 5) call abort
+ if (.not.allocated (a)) STOP 12
+ if (.not.allocated (b) .or. size (b) /= 7) STOP 13
+ if (lbound (b, 1) /= -7 .or. ubound (b, 1) /= -1) STOP 14
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 15
+ if (size (c, 1) /= 2 .or. size (c, 2) /= 3) STOP 16
+ if (lbound (c, 1) /= 2 .or. ubound (c, 1) /= 3) STOP 17
+ if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 5) STOP 18
a = 4
b = 3
c = 2
!$omp end parallel
- if (allocated (a) .or. allocated (b) .or. allocated (c)) call abort
+ if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 19
allocate (a, b(6:9), c(3, 8:9))
a = 2
b = 4
c = 5
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (a)) STOP 20
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 21
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 22
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 23
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 24
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 25
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 26
!$omp parallel firstprivate (a, b, c)
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 2 .or. any (b .ne. 4) .or. any (c .ne. 5)) call abort
+ if (.not.allocated (a)) STOP 27
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 28
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 29
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 30
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 31
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 32
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 33
+ if (a /= 2 .or. any (b .ne. 4) .or. any (c .ne. 5)) STOP 34
deallocate (a)
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 35
allocate (a)
a = 8
b = (/ 1, 2, 3 /)
c = reshape ((/ 1, 2, 3, 4, 5, 6, 7, 8 /), (/ 2, 4 /))
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 3) call abort
- if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) call abort
- if (.not.allocated (c) .or. size (c) /= 8) call abort
- if (size (c, 1) /= 2 .or. size (c, 2) /= 4) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) call abort
- if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) call abort
- if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) call abort
+ if (.not.allocated (a)) STOP 36
+ if (.not.allocated (b) .or. size (b) /= 3) STOP 37
+ if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) STOP 38
+ if (.not.allocated (c) .or. size (c) /= 8) STOP 39
+ if (size (c, 1) /= 2 .or. size (c, 2) /= 4) STOP 40
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) STOP 41
+ if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) STOP 42
+ if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) STOP 43
!$omp end parallel
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
- if (a /= 2 .or. any (b .ne. 4) .or. any (c .ne. 5)) call abort
+ if (.not.allocated (a)) STOP 44
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 45
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 46
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 47
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 48
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 49
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 50
+ if (a /= 2 .or. any (b .ne. 4) .or. any (c .ne. 5)) STOP 51
l = .false.
!$omp parallel sections lastprivate (a, b, c) firstprivate (l)
!$omp section
- if (.not.allocated (a)) call abort
+ if (.not.allocated (a)) STOP 52
if (l) then
- if (.not.allocated (b) .or. size (b) /= 6) call abort
- if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) call abort
- if (.not.allocated (c) .or. size (c) /= 8) call abort
- if (size (c, 1) /= 4 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) call abort
- if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) call abort
- if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) call abort
+ if (.not.allocated (b) .or. size (b) /= 6) STOP 53
+ if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) STOP 54
+ if (.not.allocated (c) .or. size (c) /= 8) STOP 55
+ if (size (c, 1) /= 4 .or. size (c, 2) /= 2) STOP 56
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) STOP 57
+ if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) STOP 58
+ if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) STOP 59
else
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 60
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 61
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 62
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 63
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 64
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 65
end if
l = .true.
deallocate (a)
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 66
allocate (a)
a = 8
b = (/ 1, 2, 3 /)
c = reshape ((/ 1, 2, 3, 4, 5, 6, 7, 8 /), (/ 2, 4 /))
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 3) call abort
- if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) call abort
- if (.not.allocated (c) .or. size (c) /= 8) call abort
- if (size (c, 1) /= 2 .or. size (c, 2) /= 4) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) call abort
- if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) call abort
- if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) call abort
+ if (.not.allocated (a)) STOP 67
+ if (.not.allocated (b) .or. size (b) /= 3) STOP 68
+ if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) STOP 69
+ if (.not.allocated (c) .or. size (c) /= 8) STOP 70
+ if (size (c, 1) /= 2 .or. size (c, 2) /= 4) STOP 71
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) STOP 72
+ if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) STOP 73
+ if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) STOP 74
!$omp section
- if (.not.allocated (a)) call abort
+ if (.not.allocated (a)) STOP 75
if (l) then
- if (.not.allocated (b) .or. size (b) /= 3) call abort
- if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) call abort
- if (.not.allocated (c) .or. size (c) /= 8) call abort
- if (size (c, 1) /= 2 .or. size (c, 2) /= 4) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) call abort
- if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) call abort
- if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) call abort
+ if (.not.allocated (b) .or. size (b) /= 3) STOP 76
+ if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) STOP 77
+ if (.not.allocated (c) .or. size (c) /= 8) STOP 78
+ if (size (c, 1) /= 2 .or. size (c, 2) /= 4) STOP 79
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) STOP 80
+ if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) STOP 81
+ if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) STOP 82
else
- if (.not.allocated (b) .or. size (b) /= 4) call abort
- if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) call abort
- if (.not.allocated (c) .or. size (c) /= 6) call abort
- if (size (c, 1) /= 3 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) call abort
+ if (.not.allocated (b) .or. size (b) /= 4) STOP 83
+ if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 84
+ if (.not.allocated (c) .or. size (c) /= 6) STOP 85
+ if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 86
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 87
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 88
end if
l = .true.
deallocate (a)
- if (allocated (a)) call abort
+ if (allocated (a)) STOP 89
allocate (a)
a = 12
b = (/ 9, 8, 7, 6, 5, 4 /)
c = reshape ((/ 1, 2, 3, 4, 5, 6, 7, 8 /), (/ 4, 2 /))
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 6) call abort
- if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) call abort
- if (.not.allocated (c) .or. size (c) /= 8) call abort
- if (size (c, 1) /= 4 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) call abort
- if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) call abort
- if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) call abort
+ if (.not.allocated (a)) STOP 90
+ if (.not.allocated (b) .or. size (b) /= 6) STOP 91
+ if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) STOP 92
+ if (.not.allocated (c) .or. size (c) /= 8) STOP 93
+ if (size (c, 1) /= 4 .or. size (c, 2) /= 2) STOP 94
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) STOP 95
+ if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) STOP 96
+ if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) STOP 97
!$omp end parallel sections
- if (.not.allocated (a)) call abort
- if (.not.allocated (b) .or. size (b) /= 6) call abort
- if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) call abort
- if (.not.allocated (c) .or. size (c) /= 8) call abort
- if (size (c, 1) /= 4 .or. size (c, 2) /= 2) call abort
- if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) call abort
- if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) call abort
- if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) call abort
+ if (.not.allocated (a)) STOP 98
+ if (.not.allocated (b) .or. size (b) /= 6) STOP 99
+ if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) STOP 100
+ if (.not.allocated (c) .or. size (c) /= 8) STOP 101
+ if (size (c, 1) /= 4 .or. size (c, 2) /= 2) STOP 102
+ if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) STOP 103
+ if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) STOP 104
+ if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) STOP 105
end
NEIGHBOR = I - 1
ENDIF
IF (RESULT(I) .NE. I * 2 + NEIGHBOR * 2) THEN
- CALL ABORT
+ STOP 1
ENDIF
ENDDO
END PROGRAM A18
RESULT = G(10)
PRINT *, RESULT
IF (RESULT .NE. 30) THEN
- CALL ABORT
+ STOP 1
ENDIF
END PROGRAM A19
!$omp parallel private(v, a) default(none)
v = -1
a = 2.5
- if (v /= -1 .or. u /= 15) call abort
- if (a(2,1) /= 2.5 .or. b /= 3.5) call abort
+ if (v /= -1 .or. u /= 15) STOP 1
+ if (a(2,1) /= 2.5 .or. b /= 3.5) STOP 2
associate(u => v, b => a(2, 1))
- if (u /= -1 .or. b /= 2.5) call abort
+ if (u /= -1 .or. b /= 2.5) STOP 3
end associate
- if (u /= 15 .or. b /= 3.5) call abort
+ if (u /= 15 .or. b /= 3.5) STOP 4
!$omp end parallel
end associate
end program
!$omp parallel private(v, a) default(none)
v = -1
forall (k = 1:3, l = 1:3) a(k, l)%a(:,:) = 2.5
- if (v(3) /= -1 .or. u(3) /= 15) call abort
- if (a(2,1)%a(1,2) /= 2.5 .or. b(1,2) /= 3.5) call abort
+ if (v(3) /= -1 .or. u(3) /= 15) STOP 1
+ if (a(2,1)%a(1,2) /= 2.5 .or. b(1,2) /= 3.5) STOP 2
associate(u => v, b => a(2, 1)%a)
- if (u(3) /= -1 .or. b(1,2) /= 2.5) call abort
+ if (u(3) /= -1 .or. b(1,2) /= 2.5) STOP 3
end associate
- if (u(3) /= 15 .or. b(1,2) /= 3.5) call abort
+ if (u(3) /= 15 .or. b(1,2) /= 3.5) STOP 4
!$omp end parallel
end associate
forall (k = 1:3, l = 1:3) a(k, l)%c(:,:)%i = 7
associate(d => a(i, j)%c(2,:)%i)
!$omp parallel private(a) default(none)
forall (k = 1:3, l = 1:3) a(k, l)%c(:,:)%i = 15
- if (a(1,2)%c(2,1)%i /= 15 .or. d(1) /= 9) call abort
- if (a(1,2)%c(2,2)%i /= 15 .or. d(2) /= 7) call abort
+ if (a(1,2)%c(2,1)%i /= 15 .or. d(1) /= 9) STOP 5
+ if (a(1,2)%c(2,2)%i /= 15 .or. d(2) /= 7) STOP 6
associate(d => a(2,1)%c(2,:)%i)
- if (d(1) /= 15 .or. d(2) /= 15) call abort
+ if (d(1) /= 15 .or. d(2) /= 15) STOP 7
end associate
- if (d(1) /= 9 .or. d(2) /= 7) call abort
+ if (d(1) /= 9 .or. d(2) /= 7) STOP 8
!$omp end parallel
end associate
end program
if (j.eq.1) k = 7
end do
end associate
- if (any (v%f(:).ne.21.) .or. i.ne.7) call abort
+ if (any (v%f(:).ne.21.) .or. i.ne.7) STOP 1
end
!$omp do
do i = 0, 999
!$omp cancel do
- if (omp_get_cancellation ()) call abort
+ if (omp_get_cancellation ()) STOP 1
enddo
!$omp endparallel
end
!$omp do
do i = 0, 999
!$omp cancel do if (x(1))
- call abort
+ STOP 1
end do
!$omp do
do i = 0, 999
end do
!$omp end do
!$omp end parallel
- if (v.ne.3000.or.w.ne.0) call abort
+ if (v.ne.3000.or.w.ne.0) STOP 2
!$omp parallel num_threads (32) shared (v, w)
! None of these cancel directives should actually cancel anything,
! but the compiler shouldn't know that and thus should use cancellable
!$omp do
do i = 0, 999
!$omp cancel do if (x(1))
- call abort
+ STOP 3
end do
!$omp cancel parallel if (omp_get_thread_num ().eq.2.and.x(5))
!$omp do
!$omp end do
!$omp cancel parallel if (omp_get_thread_num ().eq.5.and.x(5))
!$omp end parallel
- if (v.ne.6000.or.w.ne.0) call abort
+ if (v.ne.6000.or.w.ne.0) STOP 4
end subroutine
end
!$omp parallel num_threads(32)
!$omp cancel parallel
- if (omp_get_cancellation ()) call abort
+ if (omp_get_cancellation ()) STOP 1
!$omp end parallel
end
!$omp parallel num_threads(32)
!$omp sections
!$omp cancel sections
- call abort
+ STOP 1
!$omp section
!$omp cancel sections
- call abort
+ STOP 2
!$omp section
!$omp cancel sections
- call abort
+ STOP 3
!$omp section
!$omp cancel sections
- call abort
+ STOP 4
!$omp end sections
!$omp end parallel
end if
!$omp taskgroup
!$omp task
!$omp cancel taskgroup
- call abort
+ STOP 1
!$omp endtask
!$omp endtaskgroup
!$omp endparallel
l = l .or. f .ne. 'YY' .or. p .ne. 'm3' .or. r .ne. 'M3'
end if
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine test
end
l = l .or. t .ne. '456'
end if
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine test
end
end do
end do
!$omp end parallel do
- if (l) call abort
+ if (l) STOP 1
end program collapse1
end do
end do firstdo
!$omp end parallel do
- if (l) call abort
+ if (l) STOP 1
end subroutine test1
subroutine test2
enddo
enddo dokk
115 continue
- if (any(a(1:3,1:3,1:3).ne.1)) call abort
+ if (any(a(1:3,1:3,1:3).ne.1)) STOP 2
!$omp do collapse(3)
dol: do 120 l=1,3
enddo
enddo doll
120 end do dol
- if (any(a(1:3,1:3,1:3).ne.2)) call abort
+ if (any(a(1:3,1:3,1:3).ne.2)) STOP 3
end subroutine test2
end program collapse2
end do
end do
end do
- if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
- if (m.ne.(600+40+18)) call abort
+ if (i.ne.7.or.j.ne.5.or.k.ne.19) STOP 1
+ if (m.ne.(600+40+18)) STOP 2
do i = 1, 7
do j = -3, 5
do k = 12, 19
end do
end do
end do
- if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
- if (m.ne.(600+40+18)) call abort
+ if (i.ne.7.or.j.ne.5.or.k.ne.19) STOP 3
+ if (m.ne.(600+40+18)) STOP 4
do i = 1, 7
do j = -3, 5
do k = 12, 19
end do
end do
end do
- if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
- if (m.ne.(600+40+18)) call abort
+ if (i.ne.7.or.j.ne.5.or.k.ne.19) STOP 5
+ if (m.ne.(600+40+18)) STOP 6
do i = 1, 7
do j = -3, 5
do k = 12, 19
end do
end do
end do
- if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
- if (m.ne.(600+40+18)) call abort
+ if (i.ne.7.or.j.ne.5.or.k.ne.19) STOP 7
+ if (m.ne.(600+40+18)) STOP 8
do i = 1, 7
do j = -3, 5
do k = 12, 19
end do
end do
end do
- if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
- if (m.ne.(600+40+18)) call abort
+ if (i.ne.7.or.j.ne.5.or.k.ne.19) STOP 9
+ if (m.ne.(600+40+18)) STOP 10
do i = 1, 7
do j = -3, 5
do k = 12, 19
end do
end do
end do
- if (i.ne.7.or.j.ne.5.or.k.ne.19) call abort
- if (m.ne.(600+40+18)) call abort
+ if (i.ne.7.or.j.ne.5.or.k.ne.19) STOP 11
+ if (m.ne.(600+40+18)) STOP 12
do i = 1, 7
do j = -3, 5
do k = 12, 19
end do
end do
end do
- if (i .ne. 18 .or. j .ne. 7 .or. k .ne. 6) call abort
+ if (i .ne. 18 .or. j .ne. 7 .or. k .ne. 6) STOP 1
end
l = l .or. p .ne. 3
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
l = .false.
!$omp parallel num_threads (2) reduction (.or.:l) default (private)
l = l .or. p .ne. 3 * omp_get_thread_num () + 5
!$omp end parallel
- if (l) call abort
+ if (l) STOP 2
end
l = l .or. (p .ne. d + 1)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end
l = l .or. (p .ne. (2 + omp_get_thread_num ()))
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
l = .false.
ip = loc (a)
l = l .or. (p .ne. (2 + i))
end do
- if (l) call abort
- if (p .ne. 3) call abort
+ if (l) STOP 2
+ if (p .ne. 3) STOP 3
end
do i = 1, 128
b(i) = bar (a(i), 2 * i, b(i))
end do
- if (any (b.ne.d)) call abort
+ if (any (b.ne.d)) STOP 1
!$omp simd
do i = 1, 128
b(i) = i * 2.0
b(i) = baz (7.0_8, 2, b(i))
end do
do i = 1, 128
- if (b(i).ne.(7.0 + 4.0 * i)) call abort
+ if (b(i).ne.(7.0 + 4.0 * i)) STOP 2
end do
contains
function baz (x, y, z)
b(i) = foo (7.0_8, 5 * i, b(i))
end do
do i = 1, 128
- if (b(i).ne.(7.0 + 10.0 * i * i)) call abort
+ if (b(i).ne.(7.0 + 10.0 * i * i)) STOP 1
end do
end subroutine bar
!$omp end target
!$omp target update from(var_x)
- if (var_x /= 20) call abort
+ if (var_x /= 20) STOP 1
end subroutine foo
x = 2
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 1
!$omp end task
!$omp end single
!$omp end parallel
x = 2
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 2
!$omp end task
!$omp taskwait
!$omp end single
x = 2
!$omp endtask
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 3
!$omp endtask
!$omp endsingle
!$omp endparallel
x = 2
!$omp end task
!$omp task depend(in: x)
- if (x.ne.1) call abort
+ if (x.ne.1) STOP 4
!$omp end task
!$omp end single
!$omp end parallel
!$omp parallel
!$omp single
!$omp task shared(x) depend(in: x)
- if (x.ne.1) call abort
+ if (x.ne.1) STOP 5
!$omp end task
!$omp task shared(x) depend(out: x)
x = 2
x = 1
!$omp taskgroup
!$omp task shared(x) depend(in: x)
- if (x.ne.1) call abort
+ if (x.ne.1) STOP 6
!$omp end task
!$omp task shared(x) depend(out: x)
x = 2
x = 1
!$omp single
!$omp task shared(x) depend(in: x)
- if (x.ne.1) call abort
+ if (x.ne.1) STOP 7
!$omp end task
!$omp task shared(x) depend(out: x)
x = 2
x = 2
!$omp end task
!$omp taskwait
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 8
!$omp end single
!$omp end parallel
end subroutine outdep
x = 2
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 9
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 10
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 11
!$omp end task
!$omp end single
!$omp end parallel
x = 2;
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 12
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 13
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 14
!$omp end task
!$omp taskwait
!$omp end single
x = 2
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 15
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 16
!$omp end task
!$omp task shared (x) depend(in: x)
- if (x.ne.2) call abort
+ if (x.ne.2) STOP 17
!$omp end task
!$omp end single
!$omp end parallel
!$omp single
!$omp taskgroup
!$omp task depend(in: x(:, :))
- if (y.ne.1) call abort
+ if (y.ne.1) STOP 1
!$omp end task
!$omp task depend(out: x(:, :))
y = 2
!$omp end taskgroup
!$omp taskgroup
!$omp task depend(in: x(4, 7))
- if (y.ne.2) call abort
+ if (y.ne.2) STOP 2
!$omp end task
!$omp task depend(out: x(4:4, 7:7))
y = 3
!$omp end taskgroup
!$omp taskgroup
!$omp task depend(in: x(4:, 8:))
- if (y.ne.3) call abort
+ if (y.ne.3) STOP 3
!$omp end task
!$omp task depend(out: x(4:6, 8:12))
y = 4
!$omp end taskgroup
!$omp end single
!$omp end parallel
- if (y.ne.4) call abort
+ if (y.ne.4) STOP 4
end
!$omp single
!$omp taskgroup
!$omp task depend(in: x)
- if (y.ne.1) call abort
+ if (y.ne.1) STOP 1
!$omp end task
!$omp task depend(out: x(1:2, 1:3))
y = 2
!$omp end taskgroup
!$omp taskgroup
!$omp task depend(in: z)
- if (y.ne.2) call abort
+ if (y.ne.2) STOP 2
!$omp end task
!$omp task depend(out: z(-2:3, 2:4))
y = 3
!$omp end taskgroup
!$omp taskgroup
!$omp task depend(in: x)
- if (y.ne.3) call abort
+ if (y.ne.3) STOP 3
!$omp end task
!$omp task depend(out: x(1:, 1:))
y = 4
!$omp end taskgroup
!$omp end single
!$omp end parallel
- if (y.ne.4) call abort
+ if (y.ne.4) STOP 4
end subroutine
end
!$omp end parallel
- if (any (a .ne. b)) call abort
+ if (any (a .ne. b)) STOP 1
a = -1
!$omp parallel num_threads (4)
!$omp end parallel
- if (any (a .ne. b)) call abort
+ if (any (a .ne. b)) STOP 2
a = -1
!$omp parallel num_threads (4)
!$omp end parallel
- if (any (a .ne. b)) call abort
+ if (any (a .ne. b)) STOP 3
a = -1
!$omp parallel num_threads (4)
!$omp end parallel
- if (any (a .ne. b)) call abort
+ if (any (a .ne. b)) STOP 4
a = -1
!$omp parallel num_threads (4)
!$omp end parallel
- if (any (a .ne. b)) call abort
+ if (any (a .ne. b)) STOP 5
end
!$omp end parallel
- if (any (a .ne. b) .or. k) call abort
+ if (any (a .ne. b) .or. k) STOP 1
a = -1
k = .false.
j = 8
!$omp end parallel
- if (any (a .ne. b) .or. k) call abort
+ if (any (a .ne. b) .or. k) STOP 2
a = -1
k = .false.
j = 8
!$omp end parallel
- if (any (a .ne. b) .or. k) call abort
+ if (any (a .ne. b) .or. k) STOP 3
a = -1
k = .false.
j = 8
!$omp end parallel
- if (any (a .ne. b) .or. k) call abort
+ if (any (a .ne. b) .or. k) STOP 4
a = -1
k = .false.
j = 8
!$omp end parallel
- if (any (a .ne. b) .or. k) call abort
+ if (any (a .ne. b) .or. k) STOP 5
end
if (i.gt.1) then
!$omp atomic read
l = a(i - 1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 1
end if
!$omp atomic write
a(i) = 2
if (i.lt.N) then
!$omp atomic read
l = a(i + 1)
- if (l.eq.3) call abort
+ if (l.eq.3) STOP 2
end if
!$omp ordered depend(source)
!$omp atomic write
if (j.gt.2.and.k.gt.2) then
!$omp atomic read
l = b(i,j-2,k-1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 3
end if
!$omp atomic write
b(i,j,k) = 2
if (i.gt.4.and.j.gt.2.and.k.lt.4) then
!$omp atomic read
l = b(i-2,j-2, k+1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 4
end if
if (i.gt.5.and.j.le.N/16-3.and.k.eq.4) then
!$omp atomic read
l = b( i - 3, j+2, k-2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 5
end if
!$omp ordered depend(source)
!$omp atomic write
if (k.le.5) then
!$omp atomic read
l = c(i, j, k + 2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 6
end if
!$omp atomic write
c(i, j, k) = 2
if (i.ge.3.and.j.lt.8.and.k.ge.5) then
!$omp atomic read
l = c(i - 2, j + 1, k - 4)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 7
end if
if (i.ge.2.and.j.ge.5.and.k.ge.3) then
!$omp atomic read
l = c(i - 1, j - 2, k - 2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 8
end if
!$omp ordered depend ( source )
!$omp atomic write
do l = 0, d + 1
!$omp ordered depend(source)
!$omp ordered depend(sink: i-2,j+2,k-2,l)
- if (e.eq.0) call abort
+ if (e.eq.0) STOP 9
end do
end do
end do
end do
!$omp single
- if (i.ne.1.or.j.ne.-1.or.k.ne.0) call abort
+ if (i.ne.1.or.j.ne.-1.or.k.ne.0) STOP 10
i = 8; j = 9; k = 10
!$omp end single
!$omp do ordered(4) collapse(2) lastprivate (i, j, k, m)
do m = 0, d-1
!$omp ordered depend(source)
!$omp ordered depend(sink: i - 2, j + 2, k - 2, m)
- call abort
+ STOP 11
end do
end do
end do
end do
!$omp single
- if (i.ne.1.or.j.ne.-1.or.k.ne.2.or.m.ne.0) call abort
+ if (i.ne.1.or.j.ne.-1.or.k.ne.2.or.m.ne.0) STOP 12
!$omp end single
!$omp do collapse(2) ordered(4) lastprivate (i,j,k)
do i = 0, d
do l = 0, d + 3
!$omp ordered depend(source)
!$omp ordered depend(sink: i-2,j+2,k-2,l)
- if (e.eq.0) call abort
+ if (e.eq.0) STOP 13
end do
end do
end do
!$omp end do nowait
!$omp do
do i = 1, N
- if (a(i) .ne. 3) call abort
+ if (a(i) .ne. 3) STOP 14
end do
!$omp end do nowait
!$omp do collapse(2) private(k)
do j = 1, 8
do k = 1, 4
if (i.ge.3.and.i.lt.N/16.and.iand(j,1).ne.0.and.k.ge.2) then
- if (b(i,j,k).ne.3) call abort
+ if (b(i,j,k).ne.3) STOP 15
else
- if (b(i,j,k).ne.0) call abort
+ if (b(i,j,k).ne.0) STOP 16
end if
end do
end do
do j = 1, 8
do k = 1, 4
if (j.ge.3.and.iand(k,1).ne.0) then
- if (c(i,j,k).ne.3) call abort
+ if (c(i,j,k).ne.3) STOP 17
else
- if (c(i,j,k).ne.0) call abort
+ if (c(i,j,k).ne.0) STOP 18
end if
end do
end do
if (i.gt.2) then
!$omp atomic read
l = a(i - 1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 1
end if
!$omp atomic write
a(i) = 2
if (i.lt.N) then
!$omp atomic read
l = a(i + 1)
- if (l.eq.3) call abort
+ if (l.eq.3) STOP 2
end if
!$omp ordered depend(source)
!$omp atomic write
if (j.gt.2.and.k.gt.2) then
!$omp atomic read
l = b(i,j-2,k-1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 3
end if
!$omp atomic write
b(i,j,k) = 2
if (i.gt.5.and.j.gt.2.and.k.lt.4) then
!$omp atomic read
l = b(i-2,j-2, k+1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 4
end if
if (i.gt.6.and.j.le.N/16-3.and.k.eq.4) then
!$omp atomic read
l = b( i - 3, j+2, k-2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 5
end if
!$omp ordered depend(source)
!$omp atomic write
if (k.le.5) then
!$omp atomic read
l = c(i, j, k + 2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 6
end if
!$omp atomic write
c(i, j, k) = 2
if (i.ge.5.and.j.lt.8.and.k.ge.5) then
!$omp atomic read
l = c(i - 2, j + 1, k - 4)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 7
end if
if (i.ge.4.and.j.ge.5.and.k.ge.3) then
!$omp atomic read
l = c(i - 1, j - 2, k - 2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 8
end if
!$omp ordered depend ( source )
!$omp atomic write
if (k.gt.2.and.i.gt.4) then
!$omp atomic read
l = g(j,k-2,i-1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 9
end if
!$omp atomic write
g(j,k,i) = 2
if (j.gt.2.and.k.gt.2.and.i.lt.6) then
!$omp atomic read
l = g(j-2,k-2, i+1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 10
end if
if (j.gt.3.and.k.le.N/16-3.and.i.eq.6) then
!$omp atomic read
l = g( j - 3, k+2, i-2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 11
end if
!$omp ordered depend(source)
!$omp atomic write
do l = 0, d + 1
!$omp ordered depend(source)
!$omp ordered depend(sink: i-2,j+2,k-2,l)
- if (e.eq.0) call abort
+ if (e.eq.0) STOP 12
end do
end do
end do
end do
!$omp single
- if (i.ne.3.or.j.ne.-1.or.k.ne.0) call abort
+ if (i.ne.3.or.j.ne.-1.or.k.ne.0) STOP 13
i = 8; j = 9; k = 10
!$omp end single
!$omp do ordered(4) collapse(2) lastprivate (i, j, k, m)
do m = 0, d-1
!$omp ordered depend(source)
!$omp ordered depend(sink: i - 2, j + 2, k - 2, m)
- call abort
+ STOP 14
end do
end do
end do
end do
!$omp single
- if (i.ne.3.or.j.ne.-1.or.k.ne.2.or.m.ne.0) call abort
+ if (i.ne.3.or.j.ne.-1.or.k.ne.2.or.m.ne.0) STOP 15
!$omp end single
!$omp do collapse(2) ordered(4) lastprivate (i,j,k)
do i = 2, f + 2
do l = 0, d + 3
!$omp ordered depend(source)
!$omp ordered depend(sink: i-2,j+2,k-2,l)
- if (e.eq.0) call abort
+ if (e.eq.0) STOP 16
end do
end do
end do
end do
!$omp end do nowait
!$omp single
- if (a(1) .ne. 0) call abort
+ if (a(1) .ne. 0) STOP 17
!$omp end single nowait
!$omp do
do i = 2, N
- if (a(i) .ne. 3) call abort
+ if (a(i) .ne. 3) STOP 18
end do
!$omp end do nowait
!$omp do collapse(2) private(k)
do j = 1, 8
do k = 1, 4
if (i.ge.4.and.i.lt.N/16.and.iand(j,1).ne.0.and.k.ge.2) then
- if (b(i,j,k).ne.3) call abort
+ if (b(i,j,k).ne.3) STOP 19
else
- if (b(i,j,k).ne.0) call abort
+ if (b(i,j,k).ne.0) STOP 20
end if
end do
end do
do j = 1, 8
do k = 1, 4
if (i.ge.3.and.j.ge.3.and.iand(k,1).ne.0) then
- if (c(i,j,k).ne.3) call abort
+ if (c(i,j,k).ne.3) STOP 21
else
- if (c(i,j,k).ne.0) call abort
+ if (c(i,j,k).ne.0) STOP 22
end if
end do
end do
do j = 1, 8
do k = 1, 6
if (i.lt.N/16.and.iand(j,1).ne.0.and.k.ge.4) then
- if (g(i,j,k).ne.3) call abort
+ if (g(i,j,k).ne.3) STOP 23
else
- if (g(i,j,k).ne.0) call abort
+ if (g(i,j,k).ne.0) STOP 24
end if
end do
end do
if (i.gt.2) then
!$omp atomic read
l = a(i - 1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 1
end if
!$omp atomic write
a(i) = 2
if (i.lt.N) then
!$omp atomic read
l = a(i + 1)
- if (l.eq.3) call abort
+ if (l.eq.3) STOP 2
end if
!$omp ordered depend(source)
!$omp atomic write
if (j.gt.2.and.k.gt.2) then
!$omp atomic read
l = b(i,j-2,k-1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 3
end if
!$omp atomic write
b(i,j,k) = 2
if (i.gt.5.and.j.gt.2.and.k.lt.4) then
!$omp atomic read
l = b(i-2,j-2, k+1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 4
end if
if (i.gt.6.and.j.le.N/16-3.and.k.eq.4) then
!$omp atomic read
l = b( i - 3, j+2, k-2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 5
end if
!$omp ordered depend(source)
!$omp atomic write
if (k.le.5) then
!$omp atomic read
l = c(i, j, k + 2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 6
end if
!$omp atomic write
c(i, j, k) = 2
if (i.ge.5.and.j.lt.8.and.k.ge.5) then
!$omp atomic read
l = c(i - 2, j + 1, k - 4)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 7
end if
if (i.ge.4.and.j.ge.5.and.k.ge.3) then
!$omp atomic read
l = c(i - 1, j - 2, k - 2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 8
end if
!$omp ordered depend ( source )
!$omp atomic write
if (k.gt.2.and.i.gt.4) then
!$omp atomic read
l = g(j,k-2,i-1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 9
end if
!$omp atomic write
g(j,k,i) = 2
if (j.gt.2.and.k.gt.2.and.i.lt.6) then
!$omp atomic read
l = g(j-2,k-2, i+1)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 10
end if
if (j.gt.3.and.k.le.N/16-3.and.i.eq.6) then
!$omp atomic read
l = g( j - 3, k+2, i-2)
- if (l.lt.2) call abort
+ if (l.lt.2) STOP 11
end if
!$omp ordered depend(source)
!$omp atomic write
do l = 0, d + 1, 1 + d
!$omp ordered depend(source)
!$omp ordered depend(sink: i-2,j+2,k-2,l)
- if (e.eq.0) call abort
+ if (e.eq.0) STOP 12
end do
end do
end do
end do
!$omp single
- if (i.ne.3.or.j.ne.-1.or.k.ne.0) call abort
+ if (i.ne.3.or.j.ne.-1.or.k.ne.0) STOP 13
i = 8; j = 9; k = 10
!$omp end single
!$omp do ordered(4) collapse(2) lastprivate (i, j, k, m)
do m = 0, d-1, d+1
!$omp ordered depend(source)
!$omp ordered depend(sink: i - 2, j + 2, k - 2, m)
- call abort
+ STOP 14
end do
end do
end do
end do
!$omp single
- if (i.ne.3.or.j.ne.-1.or.k.ne.2.or.m.ne.0) call abort
+ if (i.ne.3.or.j.ne.-1.or.k.ne.2.or.m.ne.0) STOP 15
!$omp end single
!$omp do collapse(2) ordered(4) lastprivate (i,j,k)
do i = 2, f + 2, 1 + f
do l = 0, d + 3, d + 1
!$omp ordered depend(source)
!$omp ordered depend(sink: i-2,j+2,k-2,l)
- if (e.eq.0) call abort
+ if (e.eq.0) STOP 16
end do
end do
end do
end do
!$omp end do nowait
!$omp single
- if (a(1) .ne. 0) call abort
+ if (a(1) .ne. 0) STOP 17
!$omp end single nowait
!$omp do
do i = 2, N
- if (a(i) .ne. 3) call abort
+ if (a(i) .ne. 3) STOP 18
end do
!$omp end do nowait
!$omp do collapse(2) private(k)
do j = 1, 8
do k = 1, 4
if (i.ge.4.and.i.lt.N/16.and.iand(j,1).ne.0.and.k.ge.2) then
- if (b(i,j,k).ne.3) call abort
+ if (b(i,j,k).ne.3) STOP 19
else
- if (b(i,j,k).ne.0) call abort
+ if (b(i,j,k).ne.0) STOP 20
end if
end do
end do
do j = 1, 8
do k = 1, 4
if (i.ge.3.and.j.ge.3.and.iand(k,1).ne.0) then
- if (c(i,j,k).ne.3) call abort
+ if (c(i,j,k).ne.3) STOP 21
else
- if (c(i,j,k).ne.0) call abort
+ if (c(i,j,k).ne.0) STOP 22
end if
end do
end do
do j = 1, 8
do k = 1, 6
if (i.lt.N/16.and.iand(j,1).ne.0.and.k.ge.4) then
- if (g(i,j,k).ne.3) call abort
+ if (g(i,j,k).ne.3) STOP 23
else
- if (g(i,j,k).ne.0) call abort
+ if (g(i,j,k).ne.0) STOP 24
end if
end do
end do
p(9) = 777
!$omp end target
!$omp end target data
- if (A(3) /= 777 .or. A(9) /= 777) call abort
+ if (A(3) /= 777 .or. A(9) /= 777) STOP 1
end subroutine
end
A(9) = 999
!$omp end target
!$omp end target data
- if (A(3) /= 777 .or. A(9) /= 999) call abort
+ if (A(3) /= 777 .or. A(9) /= 999) STOP 1
end subroutine
end
else
err = (Y(i) - Z(i)) / Z(i)
end if
- if (err > EPS .or. err < -EPS) call abort
+ if (err > EPS .or. err < -EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
!$omp target data map(to: v1, v2, N) map(from: p)
!$omp task shared(v1, v2, p) depend(out: v1, v2)
!$omp target map(to: v1, v2, N)
- if (omp_is_initial_device ()) call abort
+ if (omp_is_initial_device ()) STOP 2
allocate (v1(N), v2(N))
call init (v1, v2, N)
!$omp end target
!$omp end task
!$omp task shared(v1, v2, p) depend(in: v1, v2)
!$omp target map(to: v1, v2, N) map(from: p)
- if (omp_is_initial_device ()) call abort
+ if (omp_is_initial_device ()) STOP 3
!$omp parallel do
do i = 1, N
p(i) = v1(i) * v2(i)
program e_53_1
use e_53_1_mod, only : fib, fib_wrapper
- if (fib (15) /= fib_wrapper (15)) call abort
- if (fib (25) /= fib_wrapper (25)) call abort
+ if (fib (15) /= fib_wrapper (15)) STOP 1
+ if (fib (25) /= fib_wrapper (25)) STOP 2
end program
!$omp target map(from: x)
x = fib (25)
!$omp end target
- if (x /= fib (25)) call abort
+ if (x /= fib (25)) STOP 1
end program
integer recursive function fib (n) result (f)
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
else
err = (a - b) / b
end if
- if (err > EPS .or. err < -EPS) call abort
+ if (err > EPS .or. err < -EPS) STOP 1
end subroutine
program e_53_4
else
err = (a - b) / b
end if
- if (err > EPS .or. err < -EPS) call abort
+ if (err > EPS .or. err < -EPS) STOP 1
end subroutine
program e_53_5
!$omp end target
!$omp end target data
- if (b /= 100 .or. .not. c .or. d) call abort
+ if (b /= 100 .or. .not. c .or. d) STOP 1
a = a + 200
b = 0
!$omp end target
!$omp end target data
- if (b /= 0 .or. c .or. d) call abort
+ if (b /= 0 .or. c .or. d) STOP 2
a = a + 200
b = 0
!$omp end target
!$omp end target data
- if (b /= 100 .or. .not. c .or. d) call abort
+ if (b /= 100 .or. .not. c .or. d) STOP 3
end program
end do
do i = 1, num
- if (offload(i)) call abort
+ if (offload(i)) STOP 1
end do
do i = num+1, N
- if (.not. offload(i)) call abort
+ if (.not. offload(i)) STOP 2
end do
end program
!$omp target map(from: res)
res = omp_is_initial_device ()
!$omp end target
- if (res) call abort
+ if (res) STOP 1
call omp_set_default_device (omp_get_num_devices ())
!$omp target map(from: res)
res = omp_is_initial_device ()
!$omp end target
- if (.not. res) call abort
+ if (.not. res) STOP 2
end program
double precision :: diff, a(*), b(*)
do i = 1, n
diff = a(i) - b(i)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
double precision :: diff, a(*), b(*)
do i = 1, n
diff = a(i) - b(i)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
end module
diff = sum - sum_ref
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end program
real :: diff, a(*), b(*)
do i = 1, n
diff = a(i) - b(i)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
do j = 1, n
do i = 1, n
diff = a(i,j) - b(i,j)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end do
end subroutine
real :: diff, a(*), b(*)
do i = 1, n
diff = a(i) - b(i)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
subroutine checkint (a, b, n)
integer :: i, n, a(*), b(*)
do i = 1, n
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 2
end do
end subroutine
call fib_ref (a_ref, N)
do i = 0, N-1
- if (a(i) .ne. a_ref(i)) call abort ()
+ if (a(i) .ne. a_ref(i)) STOP 1
end do
end program
diff = pri - 8237.25
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end program
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real, pointer, dimension(:) :: p
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: p(N), v1(N), v2(N)
call init (v1, v2, N)
!$omp target if(N > THRESHOLD1) map(to: v1,v2) map(from: p)
- if (omp_is_initial_device ()) call abort
+ if (omp_is_initial_device ()) STOP 2
!$omp parallel do if(N > THRESHOLD2)
do i = 1, N
p(i) = v1(i) * v2(i)
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - 2 * (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
do k = 1, cols
do i = 1, rows
diff = P(i,k) - Q(i,k)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - 2 * (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
call init (v1, v2, N)
!$omp target data if(N > THRESHOLD) map(from: p)
!$omp target if(N > THRESHOLD) map(to: v1, v2)
- if (omp_is_initial_device ()) call abort
+ if (omp_is_initial_device ()) STOP 2
!$omp parallel do
do i = 1, N
p(i) = v1(i) * v2(i)
!$omp end target
call init_again (v1, v2, N)
!$omp target if(N > THRESHOLD) map(to: v1, v2)
- if (omp_is_initial_device ()) call abort
+ if (omp_is_initial_device ()) STOP 3
!$omp parallel do
do i = 1, N
p(i) = p(i) + v1(i) * v2(i)
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
call init (v1, v2, N)
!$omp target data if(N > THRESHOLD) map(to: v1, v2) map(from: p)
!$omp target
- if (omp_is_initial_device ()) call abort
+ if (omp_is_initial_device ()) STOP 2
!$omp parallel do
do i = 1, N
p(i) = v1(i) * v2(i)
real :: diff, p(N)
do i = 1, N
diff = p(i) - 2 * (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff, p(N)
do i = 1, N
diff = p(i) - (i * i + (i + 2.0) * (i - 3.0))
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
x = 2
!$omp end task
!$omp task shared(x) depend(in: x)
- if (x .ne. 2) call abort ()
+ if (x .ne. 2) STOP 1
!$omp end task
!$omp end single
!$omp end parallel
!$omp parallel
!$omp single
!$omp task shared(x) depend(in: x)
- if (x .ne. 1) call abort ()
+ if (x .ne. 1) STOP 1
!$omp end task
!$omp task shared(x) depend(out: x)
x = 2
x = 2
!$omp end task
!$omp taskwait
- if ((x .ne. 1) .and. (x .ne. 2)) call abort()
+ if ((x .ne. 1) .and. (x .ne. 2)) STOP 1
!$omp end single
!$omp end parallel
end program
x = 2
!$omp end task
!$omp task shared(x) depend(in: x)
- if (x .ne. 2) call abort ()
+ if (x .ne. 2) STOP 1
!$omp end task
!$omp task shared(x) depend(in: x)
- if (x .ne. 2) call abort ()
+ if (x .ne. 2) STOP 2
!$omp end task
!$omp end single
!$omp end parallel
do j = 1, N
diff = A(i, j) - B(i, j)
if (diff > EPS .or. -diff > EPS) then
- call abort ()
+ STOP 1
end if
end do
end do
else
err = (a - b) / b
end if
- if (err > EPS .or. err < -EPS) call abort
+ if (err > EPS .or. err < -EPS) STOP 1
end subroutine
program e_54_1
else
err = (a - b) / b
end if
- if (err > EPS .or. err < -EPS) call abort
+ if (err > EPS .or. err < -EPS) STOP 1
end subroutine
program e_54_3
else
err = (a - b) / b
end if
- if (err > EPS .or. err < -EPS) call abort
+ if (err > EPS .or. err < -EPS) STOP 1
end subroutine
program e_54_4
real :: diff
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
real :: diff
do i = 1, N
diff = p(i) - (i + 2.0) * (i - 3.0)
- if (diff > EPS .or. -diff > EPS) call abort
+ if (diff > EPS .or. -diff > EPS) STOP 1
end do
end subroutine
!$omp parallel num_threads (4)
call test1
!$omp end parallel
- if (i .ne. 21) call abort
+ if (i .ne. 21) STOP 1
!$omp parallel num_threads (4)
call test2
!$omp end parallel
- if (i .ne. 64) call abort
+ if (i .ne. 64) STOP 2
!$omp parallel num_threads (4)
call test3
!$omp end parallel
- if (i .ne. 14) call abort
+ if (i .ne. 14) STOP 3
call test4
call test5
call test6
!$omp parallel do lastprivate (j) num_threads (4) default (none)
do j = 1, 20
end do
- if (j .ne. 21) call abort
+ if (j .ne. 21) STOP 4
end subroutine test4
subroutine test5
integer :: j
!$omp parallel do lastprivate (j) num_threads (4) default (none)
do j = 7, 61, 3
end do
- if (j .ne. 64) call abort
+ if (j .ne. 64) STOP 5
end subroutine test5
subroutine test6
integer :: j
!$omp parallel do lastprivate (j) num_threads (4) default (none)
do j = -10, 11, ret3 ()
end do
- if (j .ne. 14) call abort
+ if (j .ne. 14) STOP 6
end subroutine test6
subroutine test7
integer :: i
!$omp parallel do lastprivate (i) num_threads (4) default (none)
do i = 1, 20
end do
- if (i .ne. 21) call abort
+ if (i .ne. 21) STOP 7
end subroutine test7
subroutine test8
integer :: i
!$omp parallel do lastprivate (i) num_threads (4) default (none)
do i = 7, 61, 3
end do
- if (i .ne. 64) call abort
+ if (i .ne. 64) STOP 8
end subroutine test8
subroutine test9
integer :: i
!$omp parallel do lastprivate (i) num_threads (4) default (none)
do i = -10, 11, ret3 ()
end do
- if (i .ne. 14) call abort
+ if (i .ne. 14) STOP 9
end subroutine test9
subroutine test10
integer :: i
do i = 1, 20
end do
!$omp end parallel
- if (i .ne. 21) call abort
+ if (i .ne. 21) STOP 10
end subroutine test10
subroutine test11
integer :: i
do i = 7, 61, 3
end do
!$omp end parallel
- if (i .ne. 64) call abort
+ if (i .ne. 64) STOP 11
end subroutine test11
subroutine test12
integer :: i
do i = -10, 11, ret3 ()
end do
!$omp end parallel
- if (i .ne. 14) call abort
+ if (i .ne. 14) STOP 12
end subroutine test12
end program lastprivate
!$omp parallel num_threads (4)
call test1
!$omp end parallel
- if (i .ne. 21 .or. k .ne. 20) call abort
+ if (i .ne. 21 .or. k .ne. 20) STOP 1
!$omp parallel num_threads (4)
call test2
!$omp end parallel
- if (i .ne. 64 .or. k .ne. 61) call abort
+ if (i .ne. 64 .or. k .ne. 61) STOP 2
!$omp parallel num_threads (4)
call test3
!$omp end parallel
- if (i .ne. 14 .or. k .ne. 11) call abort
+ if (i .ne. 14 .or. k .ne. 11) STOP 3
call test4
call test5
call test6
do j = 1, 20
l = j
end do
- if (j .ne. 21 .or. l .ne. 20) call abort
+ if (j .ne. 21 .or. l .ne. 20) STOP 4
end subroutine test4
subroutine test5
integer :: j, l
do j = 7, 61, 3
l = j
end do
- if (j .ne. 64 .or. l .ne. 61) call abort
+ if (j .ne. 64 .or. l .ne. 61) STOP 5
end subroutine test5
subroutine test6
integer :: j, l
do j = -10, 11, ret3 ()
l = j
end do
- if (j .ne. 14 .or. l .ne. 11) call abort
+ if (j .ne. 14 .or. l .ne. 11) STOP 6
end subroutine test6
subroutine test7
integer :: i, k
do i = 1, 20
k = i
end do
- if (i .ne. 21 .or. k .ne. 20) call abort
+ if (i .ne. 21 .or. k .ne. 20) STOP 7
end subroutine test7
subroutine test8
integer :: i, k
do i = 7, 61, 3
k = i
end do
- if (i .ne. 64 .or. k .ne. 61) call abort
+ if (i .ne. 64 .or. k .ne. 61) STOP 8
end subroutine test8
subroutine test9
integer :: i, k
do i = -10, 11, ret3 ()
k = i
end do
- if (i .ne. 14 .or. k .ne. 11) call abort
+ if (i .ne. 14 .or. k .ne. 11) STOP 9
end subroutine test9
subroutine test10
integer :: i, k
k = i
end do
!$omp end parallel
- if (i .ne. 21 .or. k .ne. 20) call abort
+ if (i .ne. 21 .or. k .ne. 20) STOP 10
end subroutine test10
subroutine test11
integer :: i, k
k = i
end do
!$omp end parallel
- if (i .ne. 64 .or. k .ne. 61) call abort
+ if (i .ne. 64 .or. k .ne. 61) STOP 11
end subroutine test11
subroutine test12
integer :: i, k
k = i
end do
!$omp end parallel
- if (i .ne. 14 .or. k .ne. 11) call abort
+ if (i .ne. 14 .or. k .ne. 11) STOP 12
end subroutine test12
end program lastprivate
call omp_init_lock (lck)
call omp_set_lock (lck)
- if (omp_test_lock (lck)) call abort
+ if (omp_test_lock (lck)) STOP 1
call omp_unset_lock (lck)
- if (.not. omp_test_lock (lck)) call abort
- if (omp_test_lock (lck)) call abort
+ if (.not. omp_test_lock (lck)) STOP 2
+ if (omp_test_lock (lck)) STOP 3
call omp_unset_lock (lck)
call omp_destroy_lock (lck)
call omp_init_nest_lock (nlck)
- if (omp_test_nest_lock (nlck) .ne. 1) call abort
+ if (omp_test_nest_lock (nlck) .ne. 1) STOP 4
call omp_set_nest_lock (nlck)
- if (omp_test_nest_lock (nlck) .ne. 3) call abort
+ if (omp_test_nest_lock (nlck) .ne. 3) STOP 5
call omp_unset_nest_lock (nlck)
call omp_unset_nest_lock (nlck)
- if (omp_test_nest_lock (nlck) .ne. 2) call abort
+ if (omp_test_nest_lock (nlck) .ne. 2) STOP 6
call omp_unset_nest_lock (nlck)
call omp_unset_nest_lock (nlck)
call omp_destroy_nest_lock (nlck)
call omp_set_dynamic (.true.)
- if (.not. omp_get_dynamic ()) call abort
+ if (.not. omp_get_dynamic ()) STOP 7
call omp_set_dynamic (.false.)
- if (omp_get_dynamic ()) call abort
+ if (omp_get_dynamic ()) STOP 8
call omp_set_nested (.true.)
- if (.not. omp_get_nested ()) call abort
+ if (.not. omp_get_nested ()) STOP 9
call omp_set_nested (.false.)
- if (omp_get_nested ()) call abort
+ if (omp_get_nested ()) STOP 10
call omp_set_num_threads (5)
- if (omp_get_num_threads () .ne. 1) call abort
- if (omp_get_max_threads () .ne. 5) call abort
- if (omp_get_thread_num () .ne. 0) call abort
+ if (omp_get_num_threads () .ne. 1) STOP 11
+ if (omp_get_max_threads () .ne. 5) STOP 12
+ if (omp_get_thread_num () .ne. 0) STOP 13
call omp_set_num_threads (3)
- if (omp_get_num_threads () .ne. 1) call abort
- if (omp_get_max_threads () .ne. 3) call abort
- if (omp_get_thread_num () .ne. 0) call abort
+ if (omp_get_num_threads () .ne. 1) STOP 14
+ if (omp_get_max_threads () .ne. 3) STOP 15
+ if (omp_get_thread_num () .ne. 0) STOP 16
l = .false.
!$omp parallel reduction (.or.:l)
l = omp_get_num_threads () .ne. 3
l = l .or. (omp_get_thread_num () .ne. 0)
!$omp end master
!$omp end parallel
- if (l) call abort
+ if (l) STOP 17
- if (omp_get_num_procs () .le. 0) call abort
- if (omp_in_parallel ()) call abort
+ if (omp_get_num_procs () .le. 0) STOP 18
+ if (omp_in_parallel ()) STOP 19
!$omp parallel reduction (.or.:l)
l = .not. omp_in_parallel ()
!$omp end parallel
!$omp parallel reduction (.or.:l) if (.true.)
l = .not. omp_in_parallel ()
!$omp end parallel
- if (l) call abort
+ if (l) STOP 20
e = omp_get_wtime ()
- if (d .gt. e) call abort
+ if (d .gt. e) STOP 21
d = omp_get_wtick ()
! Negative precision is definitely wrong,
! bigger than 1s clock resolution is also strange
- if (d .le. 0 .or. d .gt. 1.) call abort
+ if (d .le. 0 .or. d .gt. 1.) STOP 22
end
CALL OMP_INIT_LOCK (LCK)
CALL OMP_SET_LOCK (LCK)
- IF (OMP_TEST_LOCK (LCK)) CALL ABORT
+ IF (OMP_TEST_LOCK (LCK)) STOP 1
CALL OMP_UNSET_LOCK (LCK)
- IF (.NOT. OMP_TEST_LOCK (LCK)) CALL ABORT
- IF (OMP_TEST_LOCK (LCK)) CALL ABORT
+ IF (.NOT. OMP_TEST_LOCK (LCK)) STOP 2
+ IF (OMP_TEST_LOCK (LCK)) STOP 3
CALL OMP_UNSET_LOCK (LCK)
CALL OMP_DESTROY_LOCK (LCK)
CALL OMP_INIT_NEST_LOCK (NLCK)
- IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 1) CALL ABORT
+ IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 1) STOP 4
CALL OMP_SET_NEST_LOCK (NLCK)
- IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 3) CALL ABORT
+ IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 3) STOP 5
CALL OMP_UNSET_NEST_LOCK (NLCK)
CALL OMP_UNSET_NEST_LOCK (NLCK)
- IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 2) CALL ABORT
+ IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 2) STOP 6
CALL OMP_UNSET_NEST_LOCK (NLCK)
CALL OMP_UNSET_NEST_LOCK (NLCK)
CALL OMP_DESTROY_NEST_LOCK (NLCK)
CALL OMP_SET_DYNAMIC (.TRUE.)
- IF (.NOT. OMP_GET_DYNAMIC ()) CALL ABORT
+ IF (.NOT. OMP_GET_DYNAMIC ()) STOP 7
CALL OMP_SET_DYNAMIC (.FALSE.)
- IF (OMP_GET_DYNAMIC ()) CALL ABORT
+ IF (OMP_GET_DYNAMIC ()) STOP 8
CALL OMP_SET_NESTED (.TRUE.)
- IF (.NOT. OMP_GET_NESTED ()) CALL ABORT
+ IF (.NOT. OMP_GET_NESTED ()) STOP 9
CALL OMP_SET_NESTED (.FALSE.)
- IF (OMP_GET_NESTED ()) CALL ABORT
+ IF (OMP_GET_NESTED ()) STOP 10
CALL OMP_SET_NUM_THREADS (5)
- IF (OMP_GET_NUM_THREADS () .NE. 1) CALL ABORT
- IF (OMP_GET_MAX_THREADS () .NE. 5) CALL ABORT
- IF (OMP_GET_THREAD_NUM () .NE. 0) CALL ABORT
+ IF (OMP_GET_NUM_THREADS () .NE. 1) STOP 11
+ IF (OMP_GET_MAX_THREADS () .NE. 5) STOP 12
+ IF (OMP_GET_THREAD_NUM () .NE. 0) STOP 13
CALL OMP_SET_NUM_THREADS (3)
- IF (OMP_GET_NUM_THREADS () .NE. 1) CALL ABORT
- IF (OMP_GET_MAX_THREADS () .NE. 3) CALL ABORT
- IF (OMP_GET_THREAD_NUM () .NE. 0) CALL ABORT
+ IF (OMP_GET_NUM_THREADS () .NE. 1) STOP 14
+ IF (OMP_GET_MAX_THREADS () .NE. 3) STOP 15
+ IF (OMP_GET_THREAD_NUM () .NE. 0) STOP 16
L = .FALSE.
C$OMP PARALLEL REDUCTION (.OR.:L)
L = OMP_GET_NUM_THREADS () .NE. 3
L = L .OR. (OMP_GET_THREAD_NUM () .NE. 0)
C$OMP END MASTER
C$OMP END PARALLEL
- IF (L) CALL ABORT
+ IF (L) STOP 17
- IF (OMP_GET_NUM_PROCS () .LE. 0) CALL ABORT
- IF (OMP_IN_PARALLEL ()) CALL ABORT
+ IF (OMP_GET_NUM_PROCS () .LE. 0) STOP 18
+ IF (OMP_IN_PARALLEL ()) STOP 19
C$OMP PARALLEL REDUCTION (.OR.:L)
L = .NOT. OMP_IN_PARALLEL ()
C$OMP END PARALLEL
C$OMP PARALLEL REDUCTION (.OR.:L) IF (.TRUE.)
L = .NOT. OMP_IN_PARALLEL ()
C$OMP END PARALLEL
- IF (L) CALL ABORT
+ IF (L) STOP 20
E = OMP_GET_WTIME ()
- IF (D .GT. E) CALL ABORT
+ IF (D .GT. E) STOP 21
D = OMP_GET_WTICK ()
C Negative precision is definitely wrong,
C bigger than 1s clock resolution is also strange
- IF (D .LE. 0 .OR. D .GT. 1.) CALL ABORT
+ IF (D .LE. 0 .OR. D .GT. 1.) STOP 22
END
CALL OMP_INIT_LOCK (LCK)
CALL OMP_SET_LOCK (LCK)
- IF (OMP_TEST_LOCK (LCK)) CALL ABORT
+ IF (OMP_TEST_LOCK (LCK)) STOP 1
CALL OMP_UNSET_LOCK (LCK)
- IF (.NOT. OMP_TEST_LOCK (LCK)) CALL ABORT
- IF (OMP_TEST_LOCK (LCK)) CALL ABORT
+ IF (.NOT. OMP_TEST_LOCK (LCK)) STOP 2
+ IF (OMP_TEST_LOCK (LCK)) STOP 3
CALL OMP_UNSET_LOCK (LCK)
CALL OMP_DESTROY_LOCK (LCK)
CALL OMP_INIT_NEST_LOCK (NLCK)
- IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 1) CALL ABORT
+ IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 1) STOP 4
CALL OMP_SET_NEST_LOCK (NLCK)
- IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 3) CALL ABORT
+ IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 3) STOP 5
CALL OMP_UNSET_NEST_LOCK (NLCK)
CALL OMP_UNSET_NEST_LOCK (NLCK)
- IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 2) CALL ABORT
+ IF (OMP_TEST_NEST_LOCK (NLCK) .NE. 2) STOP 6
CALL OMP_UNSET_NEST_LOCK (NLCK)
CALL OMP_UNSET_NEST_LOCK (NLCK)
CALL OMP_DESTROY_NEST_LOCK (NLCK)
CALL OMP_SET_DYNAMIC (.TRUE.)
- IF (.NOT. OMP_GET_DYNAMIC ()) CALL ABORT
+ IF (.NOT. OMP_GET_DYNAMIC ()) STOP 7
CALL OMP_SET_DYNAMIC (.FALSE.)
- IF (OMP_GET_DYNAMIC ()) CALL ABORT
+ IF (OMP_GET_DYNAMIC ()) STOP 8
CALL OMP_SET_NESTED (.TRUE.)
- IF (.NOT. OMP_GET_NESTED ()) CALL ABORT
+ IF (.NOT. OMP_GET_NESTED ()) STOP 9
CALL OMP_SET_NESTED (.FALSE.)
- IF (OMP_GET_NESTED ()) CALL ABORT
+ IF (OMP_GET_NESTED ()) STOP 10
CALL OMP_SET_NUM_THREADS (5)
- IF (OMP_GET_NUM_THREADS () .NE. 1) CALL ABORT
- IF (OMP_GET_MAX_THREADS () .NE. 5) CALL ABORT
- IF (OMP_GET_THREAD_NUM () .NE. 0) CALL ABORT
+ IF (OMP_GET_NUM_THREADS () .NE. 1) STOP 11
+ IF (OMP_GET_MAX_THREADS () .NE. 5) STOP 12
+ IF (OMP_GET_THREAD_NUM () .NE. 0) STOP 13
CALL OMP_SET_NUM_THREADS (3)
- IF (OMP_GET_NUM_THREADS () .NE. 1) CALL ABORT
- IF (OMP_GET_MAX_THREADS () .NE. 3) CALL ABORT
- IF (OMP_GET_THREAD_NUM () .NE. 0) CALL ABORT
+ IF (OMP_GET_NUM_THREADS () .NE. 1) STOP 14
+ IF (OMP_GET_MAX_THREADS () .NE. 3) STOP 15
+ IF (OMP_GET_THREAD_NUM () .NE. 0) STOP 16
L = .FALSE.
C$OMP PARALLEL REDUCTION (.OR.:L)
L = OMP_GET_NUM_THREADS () .NE. 3
L = L .OR. (OMP_GET_THREAD_NUM () .NE. 0)
C$OMP END MASTER
C$OMP END PARALLEL
- IF (L) CALL ABORT
+ IF (L) STOP 17
- IF (OMP_GET_NUM_PROCS () .LE. 0) CALL ABORT
- IF (OMP_IN_PARALLEL ()) CALL ABORT
+ IF (OMP_GET_NUM_PROCS () .LE. 0) STOP 18
+ IF (OMP_IN_PARALLEL ()) STOP 19
C$OMP PARALLEL REDUCTION (.OR.:L)
L = .NOT. OMP_IN_PARALLEL ()
C$OMP END PARALLEL
C$OMP PARALLEL REDUCTION (.OR.:L) IF (.TRUE.)
L = .NOT. OMP_IN_PARALLEL ()
C$OMP END PARALLEL
- IF (L) CALL ABORT
+ IF (L) STOP 20
E = OMP_GET_WTIME ()
- IF (D .GT. E) CALL ABORT
+ IF (D .GT. E) STOP 21
D = OMP_GET_WTICK ()
C Negative precision is definitely wrong,
C bigger than 1s clock resolution is also strange
- IF (D .LE. 0 .OR. D .GT. 1.) CALL ABORT
+ IF (D .LE. 0 .OR. D .GT. 1.) STOP 22
END
integer :: modifier
call omp_set_schedule (omp_sched_static, 32)
call omp_get_schedule (kind, modifier)
- if (kind.ne.omp_sched_static.or.modifier.ne.32) call abort
+ if (kind.ne.omp_sched_static.or.modifier.ne.32) STOP 1
call omp_set_schedule (omp_sched_dynamic, 4)
call omp_get_schedule (kind, modifier)
- if (kind.ne.omp_sched_dynamic.or.modifier.ne.4) call abort
- if (omp_get_thread_limit ().lt.0) call abort
+ if (kind.ne.omp_sched_dynamic.or.modifier.ne.4) STOP 2
+ if (omp_get_thread_limit ().lt.0) STOP 3
call omp_set_max_active_levels (6)
- if (omp_get_max_active_levels ().ne.6) call abort
+ if (omp_get_max_active_levels ().ne.6) STOP 4
end program lib4
l = .false.
call omp_init_nest_lock (lock)
- if (omp_test_nest_lock (lock) .ne. 1) call abort
- if (omp_test_nest_lock (lock) .ne. 2) call abort
+ if (omp_test_nest_lock (lock) .ne. 1) STOP 1
+ if (omp_test_nest_lock (lock) .ne. 2) STOP 2
!$omp parallel if (.false.) reduction (.or.:l)
! In OpenMP 2.5 this was supposed to return 3,
! but in OpenMP 3.0 the parallel region has a different
! task and omp_*_lock_t are owned by tasks, not by threads.
if (omp_test_nest_lock (lock) .ne. 0) l = .true.
!$omp end parallel
- if (l) call abort
- if (omp_test_nest_lock (lock) .ne. 3) call abort
+ if (l) STOP 3
+ if (omp_test_nest_lock (lock) .ne. 3) STOP 4
call omp_unset_nest_lock (lock)
call omp_unset_nest_lock (lock)
call omp_unset_nest_lock (lock)
l = .false.
call omp_init_nest_lock (lock)
!$omp parallel num_threads (1) reduction (.or.:l)
- if (omp_test_nest_lock (lock) .ne. 1) call abort
- if (omp_test_nest_lock (lock) .ne. 2) call abort
+ if (omp_test_nest_lock (lock) .ne. 1) STOP 1
+ if (omp_test_nest_lock (lock) .ne. 2) STOP 2
!$omp task if (.false.) shared (lock, l)
if (omp_test_nest_lock (lock) .ne. 0) l = .true.
!$omp end task
call omp_unset_nest_lock (lock)
call omp_unset_nest_lock (lock)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 3
call omp_destroy_nest_lock (lock)
end
e3 = 0
call omp_set_nested (.true.)
call omp_set_dynamic (.false.)
- if (omp_in_parallel ()) call abort
- if (omp_get_num_threads ().ne.1) call abort
- if (omp_get_level ().ne.0) call abort
- if (omp_get_ancestor_thread_num (0).ne.0) call abort
- if (omp_get_ancestor_thread_num (-1).ne.-1) call abort
- if (omp_get_ancestor_thread_num (1).ne.-1) call abort
- if (omp_get_team_size (0).ne.1) call abort
- if (omp_get_team_size (-1).ne.-1) call abort
- if (omp_get_team_size (1).ne.-1) call abort
- if (omp_get_active_level ().ne.0) call abort
+ if (omp_in_parallel ()) STOP 1
+ if (omp_get_num_threads ().ne.1) STOP 2
+ if (omp_get_level ().ne.0) STOP 3
+ if (omp_get_ancestor_thread_num (0).ne.0) STOP 4
+ if (omp_get_ancestor_thread_num (-1).ne.-1) STOP 5
+ if (omp_get_ancestor_thread_num (1).ne.-1) STOP 6
+ if (omp_get_team_size (0).ne.1) STOP 7
+ if (omp_get_team_size (-1).ne.-1) STOP 8
+ if (omp_get_team_size (1).ne.-1) STOP 9
+ if (omp_get_active_level ().ne.0) STOP 10
!$omp parallel num_threads (4) private (e, tn1)
e = 0
tn1 = omp_get_thread_num ()
!$omp end parallel
!$omp end parallel
!$omp end parallel
- if (e1.ne.0.or.e2.ne.0.or.e3.ne.0) call abort
+ if (e1.ne.0.or.e2.ne.0.or.e3.ne.0) STOP 11
end program nested1
b = 2
c = 3
call foo
- if (a .ne. 7) call abort
+ if (a .ne. 7) STOP 1
contains
subroutine foo
use omp_lib
if (a .ne. 7 .or. b .ne. 8 .or. c .ne. 9) l = .true.
end if
!$omp end parallel
- if (l) call abort
+ if (l) STOP 2
end subroutine foo
end
subroutine test3
integer :: i
common /c/ i
- if (i .lt. 0 .or. i .ge. 4) call abort
- if (i + 10 .ne. vari) call abort
+ if (i .lt. 0 .or. i .ge. 4) STOP 1
+ if (i + 10 .ne. vari) STOP 2
end subroutine test3
subroutine test4
use omp_lib
integer :: j
j = 8
call bar
- if (j.ne.10) call abort
+ if (j.ne.10) STOP 1
contains
subroutine foo (i)
integer :: i
call test1
call test2
do i = 1, 10
- if (a(i) .ne. 10 * i) call abort
+ if (a(i) .ne. 10 * i) STOP 1
end do
!$omp parallel do reduction (+:c)
do i = 1, 10
c = c + a
end do
do i = 1, 10
- if (c(i) .ne. 10 * a(i)) call abort
+ if (c(i) .ne. 10 * a(i)) STOP 2
end do
!$omp parallel do lastprivate (j)
do j = 1, 10, k
end do
- if (j .ne. 11) call abort
+ if (j .ne. 11) STOP 3
contains
subroutine test1
integer :: i
!$omp parallel do lastprivate (j)
do j = 1, 10, k
end do
- if (j .ne. 11) call abort
+ if (j .ne. 11) STOP 4
end subroutine test2
end program foo
b = b + 1
end do
!$omp end simd
- if (a /= 21 .or. b /= 12) call abort
+ if (a /= 21 .or. b /= 12) STOP 1
!$omp simd aligned(f : c_sizeof (e(1)))
do b = 1, 64
g(b) = f
d(2:2,4:5) = d(2:2,4:5) + 1
!$omp end task
!$omp task depend(in : a, d(2:2,4:5))
- if (a /= 22) call abort
- if (any (d(2:2,4:5) /= 5)) call abort
+ if (a /= 22) STOP 2
+ if (any (d(2:2,4:5) /= 5)) STOP 3
!$omp end task
!$omp end taskgroup
!$omp end single
d(2:3,4:4) = 9
!$omp end target
!$omp target update from (a, q, d(2:3,4:4), l)
- if (a /= 6 .or. l .or. b /= 11 .or. any (q /= 8)) call abort
- if (any (d(2:3,4:4) /= 9) .or. d(2,5) /= 5 .or. d(3,5) /= 4) call abort
+ if (a /= 6 .or. l .or. b /= 11 .or. any (q /= 8)) STOP 4
+ if (any (d(2:3,4:4) /= 9) .or. d(2,5) /= 5 .or. d(3,5) /= 4) STOP 5
a = 12
b = 13
q = 14
m = 0
n = 64
o = 16
- if (l) call abort
+ if (l) STOP 6
!$omp target teams distribute parallel do simd if (.not.l) device(a) &
!$omp & num_teams(b) dist_schedule(static, c) num_threads (h) &
!$omp & reduction (+: m) safelen (n) schedule(static, o) &
m = m + 1
end do
!$omp end target teams distribute parallel do simd
- if (m /= 64) call abort
+ if (m /= 64) STOP 7
!$omp end target data
end subroutine foo
end subroutine bar
c = c * 2
!$omp atomic
d = 2 / d
- if (a .ne. 5 .or. b .ne. 2 .or. c .ne. 6 .or. d .ne. 0.5) call abort
+ if (a .ne. 5 .or. b .ne. 2 .or. c .ne. 6 .or. d .ne. 0.5) STOP 1
d = 1.2
!$omp atomic
a = a + c + d
!$omp atomic
b = b - (a + c + d)
- if (a .ne. 12 .or. b .ne. -17) call abort
+ if (a .ne. 12 .or. b .ne. -17) STOP 2
!$omp atomic
a = c + d + a
!$omp atomic
b = a + c + d - b
- if (a .ne. 19 .or. b .ne. 43) call abort
+ if (a .ne. 19 .or. b .ne. 43) STOP 3
!$omp atomic
b = (a + c + d) - b
a = 32
!$omp atomic
a = a / 3.4
- if (a .ne. 9 .or. b .ne. -16) call abort
+ if (a .ne. 9 .or. b .ne. -16) STOP 4
end
n = 20
call foo (r, d, n)
- if (n .ne. 22) call abort
- if (any (r .ne. 33)) call abort
+ if (n .ne. 22) STOP 1
+ if (any (r .ne. 33)) STOP 2
i = 1
j = 18
k = 23
!$omp atomic
i = min (i, j, k, n)
- if (i .ne. 1) call abort
+ if (i .ne. 1) STOP 3
!$omp atomic
i = max (j, n, k, i)
- if (i .ne. 23) call abort
+ if (i .ne. 23) STOP 4
a = 1
b = 18
c = 23
!$omp atomic
a = min (a, b, c)
- if (a .ne. 1) call abort
+ if (a .ne. 1) STOP 5
!$omp atomic
a = max (a, b, c)
- if (a .ne. 23) call abort
+ if (a .ne. 23) STOP 6
contains
function bar (i)
c2 = c
!$omp atomic read
d2 = d
- if (a2 .ne. 5 .or. b2 .ne. 2 .or. c2 .ne. 6 .or. d2 .ne. 0.5) call abort
+ if (a2 .ne. 5 .or. b2 .ne. 2 .or. c2 .ne. 6 .or. d2 .ne. 0.5) STOP 1
!$omp atomic write
d = 1.2
!$omp atomic
a = a + c + d
!$omp atomic
b = b - (a + c + d)
- if (a .ne. 12 .or. b .ne. -17) call abort
+ if (a .ne. 12 .or. b .ne. -17) STOP 2
!$omp atomic
a = c + d + a
!$omp atomic
b = a + c + d - b
- if (a .ne. 19 .or. b .ne. 43) call abort
+ if (a .ne. 19 .or. b .ne. 43) STOP 3
!$omp atomic
b = (a + c + d) - b
a = 32
!$omp atomic
a = a / 3.4
- if (a .ne. 9 .or. b .ne. -16) call abort
+ if (a .ne. 9 .or. b .ne. -16) STOP 4
end
d = d / 2.0
d2 = d
!$omp end atomic
- if (a2 .ne. 1 .or. b2 .ne. -16 .or. c2 .ne. 3 .or. d2 .ne. 2) call abort
+ if (a2 .ne. 1 .or. b2 .ne. -16 .or. c2 .ne. 3 .or. d2 .ne. 2) STOP 1
!$omp atomic read
a2 = a
!$omp atomic read
c2 = c
- if (a2 .ne. 5 .or. b2 .ne. -16 .or. c2 .ne. 6 .or. d2 .ne. 2) call abort
+ if (a2 .ne. 5 .or. b2 .ne. -16 .or. c2 .ne. 6 .or. d2 .ne. 2) STOP 2
end
d = d / 2.0
d2 = d
!$omp end atomic
- if (a2 .ne. 1 .or. b2 .ne. -16 .or. c2 .ne. 3 .or. d2 .ne. 2) call abort
+ if (a2 .ne. 1 .or. b2 .ne. -16 .or. c2 .ne. 3 .or. d2 .ne. 2) STOP 1
!$omp atomic read seq_cst
a2 = a
!$omp atomic seq_cst, read
c2 = c
- if (a2 .ne. 5 .or. b2 .ne. -16 .or. c2 .ne. 6 .or. d2 .ne. 2) call abort
+ if (a2 .ne. 5 .or. b2 .ne. -16 .or. c2 .ne. 6 .or. d2 .ne. 2) STOP 2
a2 = 10
- if (a2 .ne. 10) call abort
+ if (a2 .ne. 10) STOP 3
!$omp atomic capture
a2 = a
a = e(1) + e(6) + e(7) * 2
!$omp endatomic
- if (a2 .ne. 5) call abort
+ if (a2 .ne. 5) STOP 4
!$omp atomic read
a2 = a
!$omp end atomic
- if (a2 .ne. 28) call abort
+ if (a2 .ne. 28) STOP 5
!$omp atomic capture seq_cst
b2 = b
b = e(1) + e(7) + e(5) * 2
!$omp end atomic
- if (b2 .ne. -16) call abort
+ if (b2 .ne. -16) STOP 6
!$omp atomic seq_cst, read
b2 = b
!$omp end atomic
- if (b2 .ne. 24) call abort
+ if (b2 .ne. 24) STOP 7
end
C Test conditional compilation in fixed form if -fopenmp
10 foo = 2
&56
- if (foo.ne.256) call abort
+ if (foo.ne.256) STOP 1
bar = 26
!$2 0 ba
c$ +r = 42
!$ bar = 62
!$ bar = bar + 1
- if (bar.ne.43) call abort
+ if (bar.ne.43) STOP 2
baz = bar
*$ 0baz = 5
C$ +12! Comment
!$ X baz = 0 ! Not valid OpenMP conditional compilation lines
! $ baz = 1
c$ 10&baz = 2
- if (baz.ne.51242) call abort
+ if (baz.ne.51242) STOP 3
end
! { dg-options "-fno-openmp" }
10 foo = 2
&56
- if (foo.ne.256) call abort
+ if (foo.ne.256) STOP 1
bar = 26
!$2 0 ba
c$ +r = 42
!$ bar = 62
!$ bar = bar + 1
- if (bar.ne.26) call abort
+ if (bar.ne.26) STOP 2
baz = bar
*$ 0baz = 5
C$ +12! Comment
!$ X baz = 0 ! Not valid OpenMP conditional compilation lines
! $ baz = 1
c$ 10&baz = 2
- if (baz.ne.26) call abort
+ if (baz.ne.26) STOP 3
end
! Test conditional compilation in free form if -fopenmp
10 foo = 2&
&56
- if (foo.ne.256) call abort
+ if (foo.ne.256) STOP 1
bar = 26
!$ 20 ba&
!$ &r = 4&
#ifdef _OPENMP
bar = bar - 1
#endif
- if (bar.ne.43) call abort
+ if (bar.ne.43) STOP 2
baz = bar
!$ 30 baz = 5& ! Comment
!$12 &
!$X baz = 0 ! Not valid OpenMP conditional compilation lines
! $ baz = 1
baz = baz + 1 !$ baz = 2
- if (baz.ne.515) call abort
+ if (baz.ne.515) STOP 3
end
! { dg-options "-fno-openmp" }
10 foo = 2&
&56
- if (foo.ne.256) call abort
+ if (foo.ne.256) STOP 1
bar = 26
!$ 20 ba&
!$ &r = 4&
#ifdef _OPENMP
bar = bar - 1
#endif
- if (bar.ne.26) call abort
+ if (bar.ne.26) STOP 2
baz = bar
!$ 30 baz = 5& ! Comment
!$12 &
!$X baz = 0 ! Not valid OpenMP conditional compilation lines
! $ baz = 1
baz = baz + 1 !$ baz = 2
- if (baz.ne.27) call abort
+ if (baz.ne.27) STOP 3
end
d(b + 1) = c
if (f .ne. g .or. f .ne. b) h = .true.
!$omp endparallel
- if (h) call abort
- if (a .ne. 6) call abort
- if (j .ne. 24) call abort
- if (d(1) .eq. -1) call abort
+ if (h) STOP 1
+ if (a .ne. 6) STOP 2
+ if (j .ne. 24) STOP 3
+ if (d(1) .eq. -1) STOP 4
e = 1
do g = 1, d(1)
- if (d(g) .ne. d(1)) call abort
+ if (d(g) .ne. d(1)) STOP 5
e = e * 2
end do
- if (e .ne. i) call abort
+ if (e .ne. i) STOP 6
end subroutine test_parallel
subroutine test_do_orphan
call test_do_orphan
!$omp do schedule (static) firstprivate (n)
do 200 i = 1, j
- if (i .eq. 1 .and. n .ne. 24) call abort
+ if (i .eq. 1 .and. n .ne. 24) STOP 7
n = i
200 d(n) = omp_get_thread_num ()
!$omp enddo nowait
end do
! Implied omp end do here
!$omp end parallel
- if (.not. m) call abort
+ if (.not. m) STOP 8
j = 0
do i = 1, 64
- if (d(i) .lt. j .or. d(i) .ge. j + k) call abort
+ if (d(i) .lt. j .or. d(i) .ge. j + k) STOP 9
if (i .eq. 16) j = 1024
if (i .eq. 32) j = 2048
if (i .eq. 48) j = 4096
n = 7
!$omp endsections
!$omp end parallel
- if (j .ne. 271 .or. l .ne. 0) call abort
- if (m .ne. 4 + 6 + 8 + 10) call abort
- if (n .ne. 7) call abort
+ if (j .ne. 271 .or. l .ne. 0) STOP 10
+ if (m .ne. 4 + 6 + 8 + 10) STOP 11
+ if (n .ne. 7) STOP 12
end subroutine test_sections
subroutine test_single
!$omp end single copyprivate (j)
if (i .ne. omp_get_thread_num () .or. j .ne. -2) m = .true.
!$omp endparallel
- if (m) call abort
+ if (m) STOP 13
end subroutine test_single
end
j = omp_get_thread_num () .eq. 0
!$omp endmaster
!$omp end parallel
- if (.not. (i .or. j)) call abort
+ if (.not. (i .or. j)) STOP 1
end subroutine test_master
subroutine test_critical_1 (i, j)
i = i + 1
!$omp endcritical (critical_foo)
!$omp end parallel
- if (n .lt. 1 .or. i .ne. n * 3 .or. j .ne. n * 3) call abort
+ if (n .lt. 1 .or. i .ne. n * 3 .or. j .ne. n * 3) STOP 2
end subroutine test_critical
subroutine test_barrier
j = j .or. .true.
end if
!$omp end parallel
- if (i .ne. 5 .or. j) call abort
+ if (i .ne. 5 .or. j) STOP 3
end subroutine test_barrier
subroutine test_atomic
f = max (omp_get_thread_num (), f)
if (omp_get_thread_num () .eq. 0) g = omp_get_num_threads ()
!$omp end parallel
- if (g .le. 0 .or. g .gt. 8) call abort
- if (a .ne. 6 * g .or. b .ne. 3 ** g) call abort
+ if (g .le. 0 .or. g .gt. 8) STOP 4
+ if (a .ne. 6 * g .or. b .ne. 3 ** g) STOP 5
if (iand (g, 1) .eq. 1) then
- if (c .ne. 8) call abort
+ if (c .ne. 8) STOP 6
else if (c .ne. 0) then
- call abort
+ STOP 7
end if
- if (d .ne. 1024 / (2 ** g)) call abort
- if (e .ne. 0 .or. f .ne. g - 1) call abort
+ if (d .ne. 1024 / (2 ** g)) STOP 8
+ if (e .ne. 0 .or. f .ne. g - 1) STOP 9
end subroutine test_atomic
end
j = 1
do 100 i = 1, 100
if (i .eq. j) then
- if (d(i) .ne. i) call abort
+ if (d(i) .ne. i) STOP 1
j = i + 5
else
- if (d(i) .ne. -1) call abort
+ if (d(i) .ne. -1) STOP 2
end if
100 d(i) = -1
end subroutine test_ordered
!$omp parallel copyin (/tlsblock/, z) reduction (.or.:m) &
!$omp& num_threads (4)
if (omp_get_thread_num () .eq. 0) i = omp_get_num_threads ()
- if (x .ne. 6 .or. y .ne. 7 .or. z .ne. 8) call abort
+ if (x .ne. 6 .or. y .ne. 7 .or. z .ne. 8) STOP 3
x = omp_get_thread_num ()
y = omp_get_thread_num () + 1024
z = omp_get_thread_num () + 4096
!$omp end parallel
- if (x .ne. 0 .or. y .ne. 1024 .or. z .ne. 4096) call abort
+ if (x .ne. 0 .or. y .ne. 1024 .or. z .ne. 4096) STOP 4
!$omp parallel num_threads (4), private (j) reduction (.or.:n)
if (omp_get_num_threads () .eq. i) then
j = omp_get_thread_num ()
if (x .ne. j .or. y .ne. j + 1024 .or. z .ne. j + 4096) &
-& call abort
+& STOP 5
end if
!$omp end parallel
m = m .or. n
if (z .ne. 4096) n = .true.
if (omp_get_num_threads () .eq. i) then
j = omp_get_thread_num ()
- if (x .ne. j .or. y .ne. j + 1024) call abort
+ if (x .ne. j .or. y .ne. j + 1024) STOP 6
end if
!$omp end parallel
- if (m .or. n) call abort
+ if (m .or. n) STOP 7
end subroutine test_threadprivate
end
!$omp end parallel
if (any (f .ne. (/100, 100, 100, 210, 210, 210, 310, 310, 337, 337/))) &
-& call abort
- if (any (g .ne. (/-1, -1, -1, 0, 0, 0, 0, 0, 0, 0/))) call abort
- if (i .ne. 20) call abort
-!$ if (l .ne. 128 + m) call abort
- if (any (d .ne. 1 .or. e .ne. 1)) call abort
- if (any (b .ne. transpose (a))) call abort
- if (any (c .ne. b)) call abort
+& STOP 1
+ if (any (g .ne. (/-1, -1, -1, 0, 0, 0, 0, 0, 0, 0/))) STOP 2
+ if (i .ne. 20) STOP 3
+!$ if (l .ne. 128 + m) STOP 4
+ if (any (d .ne. 1 .or. e .ne. 1)) STOP 5
+ if (any (b .ne. transpose (a))) STOP 6
+ if (any (c .ne. b)) STOP 7
if (any (n .ne. (/1, 2, 6, 12, 5, 30, 42, 56, 9, 90, &
-& 110, 132, 13, 182, 210, 240/))) call abort
+& 110, 132, 13, 182, 210, 240/))) STOP 8
end subroutine test_workshare
end
implicit none
include "omp_lib.h"
- if (openmp_version .ne. 201511) call abort;
+ if (openmp_version .ne. 201511) STOP 1;
end program main
use omp_lib
implicit none
- if (openmp_version .ne. 201511) call abort;
+ if (openmp_version .ne. 201511) STOP 1;
end program main
call foo ()
do i = 0, n - 1
- if (c(i) .ne. (i + MODULO ((i * 3), 7))) call abort
+ if (c(i) .ne. (i + MODULO ((i * 3), 7))) STOP 1
end do
end program
call foo (n)
do i = 0, n - 1
- if (c(i) .ne. (i + MODULO ((i * 3), 7))) call abort
+ if (c(i) .ne. (i + MODULO ((i * 3), 7))) STOP 1
end do
end program
c(1) = c(1) + 1
r = r + 1
!$omp end parallel
- if (a.ne.r.or.c(1).ne.r) call abort
+ if (a.ne.r.or.c(1).ne.r) STOP 1
r2 = r
b => a
d => c
d(1) = d(1) + 1
r = r + 1
!$omp end parallel
- if (b.ne.r+r2.or.d(1).ne.r+r2) call abort
+ if (b.ne.r+r2.or.d(1).ne.r+r2) STOP 2
end subroutine foo
subroutine bar (a, c)
integer, pointer :: a, c(:), b, d(:)
end if
end do
!$omp end parallel do
- if (b.ne.100.or.any(d.ne.10)) call abort
- if (a.ne.17.or.any(c.ne.21)) call abort
+ if (b.ne.100.or.any(d.ne.10)) STOP 3
+ if (a.ne.17.or.any(c.ne.21)) STOP 4
a => b
c => d
!$omp parallel do firstprivate (b, d) lastprivate (b, d)
end if
end do
!$omp end parallel do
- if (a.ne.200.or.any(c.ne.20)) call abort
- if (b.ne.17.or.any(d.ne.21)) call abort
+ if (a.ne.200.or.any(c.ne.20)) STOP 5
+ if (b.ne.17.or.any(d.ne.21)) STOP 6
end subroutine bar
end
thr(1) = thr(1) + 1
i = i + 1
!$omp end parallel
- if (l) call abort
- if (thr(1).ne.14) call abort
- if (s(1).ne.1+i) call abort
- if (u(1).ne.14) call abort
+ if (l) STOP 1
+ if (thr(1).ne.14) STOP 2
+ if (s(1).ne.1+i) STOP 3
+ if (u(1).ne.14) STOP 4
end
C$OMP THREADPRIVATE(/TESTCOM/)
INTEGER K
DO K = 1, 10
- IF (K.NE.BPRIM(K)) CALL ABORT
+ IF (K.NE.BPRIM(K)) STOP 1
END DO
RETURN
END
end do
!$omp end do
!$omp end parallel
- if (k .ne. 100) call abort
+ if (k .ne. 100) STOP 1
end
integer, dimension(n) :: sumarray
call foo(n,m,sumarray)
do i=1,n
- if (sumarray(i).ne.m*i) call abort
+ if (sumarray(i).ne.m*i) STOP 1
end do
end program pr27395_1
!$OMP END DO
!$OMP END PARALLEL
do i=1,n
- if (sumarray(i).ne.m*i) call abort
+ if (sumarray(i).ne.m*i) STOP 1
end do
end subroutine foo
!$omp parallel num_threads (4)
call foo (j)
!$omp end parallel
- if (j.ne.6+16) call abort
+ if (j.ne.6+16) STOP 1
end
subroutine foo (j)
r = r .or. allocated (a)
end do
!$omp end parallel do
- if (r) call abort
+ if (r) STOP 1
end program pr27916
r = r .or. allocated (a)
end do
!$omp end parallel do
- if (r) call abort
+ if (r) STOP 1
end program pr27916
!$omp parallel do lastprivate(i)
do i=1,100
end do
- if (i.ne.101) call abort
+ if (i.ne.101) STOP 1
end
program pr29629
integer :: n
n = 10000
- if (any (func(n).ne.10000)) call abort
+ if (any (func(n).ne.10000)) STOP 1
contains
function func(n)
integer, intent(in) :: n
e = e + 1
end if
!$omp end parallel
- if (e.ne.0) call abort
+ if (e.ne.0) STOP 1
end
!$omp atomic
j = j + 1
end do
- if (j .ne. 1000) call abort
+ if (j .ne. 1000) STOP 1
contains
subroutine something()
i = 0
do i = 1, 300000
call atomic_add(lhs, rhs)
enddo
- if (lhs .ne. 300000) call abort
+ if (lhs .ne. 300000) STOP 1
end
call inner(k)
end do
!$omp end parallel do
- if (any (a.ne.42)) call abort
+ if (any (a.ne.42)) STOP 1
contains
subroutine inner(i)
implicit none
!$omp parallel num_threads(3)
call sub3 (k, c)
!$omp end parallel
- if (k.ne.4.or.any(a.ne.2).or.any(b.ne.3).or.any(c.ne.4)) call abort
+ if (k.ne.4.or.any(a.ne.2).or.any(b.ne.3).or.any(c.ne.4)) STOP 1
end
do i = 2147483636, 2147483646
j = j + 1
end do
- if (j.ne.11) call abort
+ if (j.ne.11) STOP 1
j = 0
!$omp parallel do reduction(+:j)
do i = -2147483637, -2147483647, -1
j = j + 1
end do
- if (j.ne.11) call abort
+ if (j.ne.11) STOP 2
end
endif
!$omp end parallel
!$omp end parallel
- if (err .ne. 0) call abort
+ if (err .ne. 0) STOP 1
end
real(kind=8) :: b(16)
b(:) = a(16:1:-1)
call reverse (16,a)
- if (any (a.ne.b)) call abort
+ if (any (a.ne.b)) STOP 1
end program pr49792
!$omp parallel workshare
a = b
!$omp end parallel workshare
- if (size(a).ne.size(b)) call abort()
- if (any (a.ne.b)) call abort()
+ if (size(a).ne.size(b)) STOP 1
+ if (any (a.ne.b)) STOP 2
end program pr49792
x(1) = x(1) + 1
end do
!$omp end parallel do
- if (x(1) .ne. 1000) call abort
+ if (x(1) .ne. 1000) STOP 1
end program pr63938_1
x%x = x%x + 1
end do
!$omp end parallel do
- if (x%x .ne. 1000) call abort
+ if (x%x .ne. 1000) STOP 1
end program pr63938_2
end do
do i = 1, 151
if (mod (i, 31) .eq. 1) then
- if (a(i) .ne. 2) call abort
+ if (a(i) .ne. 2) STOP 1
else
- if (a(i) .ne. 0) call abort
+ if (a(i) .ne. 0) STOP 2
end if
end do
end
do d = a, b
u(d) = v(d) + w(d)
end do
- if (d .ne. 1025) call abort
+ if (d .ne. 1025) STOP 1
c = 17
d = 75
!$omp parallel do simd default(none) firstprivate (a, b) shared(u, v, w) &
c = c + 5
e = c
end do
- if (d .ne. 1025 .or. c .ne. (17 + 5 * 1024)) call abort
- if (e .ne. (17 + 5 * 1024)) call abort
+ if (d .ne. 1025 .or. c .ne. (17 + 5 * 1024)) STOP 2
+ if (e .ne. (17 + 5 * 1024)) STOP 3
a1 = 0
a2 = 0
b1 = 31
u(d1 * 32 + d2 + 1) = v(d1 * 32 + d2 + 1) + w(d1 * 32 + d2 + 1)
end do
end do
- if (d1 .ne. 32 .or. d2 .ne. 32) call abort
+ if (d1 .ne. 32 .or. d2 .ne. 32) STOP 4
d1 = 7
d2 = 9
!$omp parallel do simd default(none) firstprivate (a1, b1, a2, b2) &
u(d1 * 32 + d2 + 1) = v(d1 * 32 + d2 + 1) + w(d1 * 32 + d2 + 1)
end do
end do
- if (d1 .ne. 32 .or. d2 .ne. 32) call abort
+ if (d1 .ne. 32 .or. d2 .ne. 32) STOP 5
end
end do
end associate
end do
- if (any(s /= t)) call abort
+ if (any(s /= t)) STOP 1
end program pr71014
a = min (a, c)
b = max (b, c)
end do
- if (any (a /= (/ 1, -4, 6 /)) .or. any (b /= (/ 16, 11, 21 /))) call abort
+ if (any (a /= (/ 1, -4, 6 /)) .or. any (b /= (/ 16, 11, 21 /))) STOP 1
end
common /c/ e, f
!$omp threadprivate (/c/)
!$omp parallel num_threads(8)
- if ((e /= 32) .or. any(f /= 1.)) call abort
+ if ((e /= 32) .or. any(f /= 1.)) STOP 1
e = omp_get_thread_num ()
f = e + 19.
!$omp barrier
- if ((e /= omp_get_thread_num ()) .or. any(f /= e + 19.)) call abort
+ if ((e /= omp_get_thread_num ()) .or. any(f /= e + 19.)) STOP 2
!$omp end parallel
end
c(i) = foo (a(i), b(i))
end do
do i = 1, 1024
- if (c(i).ne.(2 * i)) call abort
+ if (c(i).ne.(2 * i)) STOP 1
end do
contains
real function foo (x, y)
c(i) = foo (a(i), b(:,i))
end do
do i = 1, 1024
- if (c(i).ne.(6 * i)) call abort
+ if (c(i).ne.(6 * i)) STOP 1
end do
contains
function foo (x, y)
integer :: i
ptr => foo
!$omp parallel shared (ptr)
- if (ptr () /= 1) call abort
+ if (ptr () /= 1) STOP 1
!$omp end parallel
ptr => bar
!$omp parallel firstprivate (ptr)
- if (ptr () /= 2) call abort
+ if (ptr () /= 2) STOP 2
!$omp end parallel
!$omp parallel sections lastprivate (ptr)
!$omp section
ptr => foo
- if (ptr () /= 1) call abort
+ if (ptr () /= 1) STOP 3
!$omp section
ptr => bar
- if (ptr () /= 2) call abort
+ if (ptr () /= 2) STOP 4
!$omp section
ptr => baz
- if (ptr () /= 3) call abort
+ if (ptr () /= 3) STOP 5
!$omp end parallel sections
- if (ptr () /= 3) call abort
- if (.not.associated (ptr, baz)) call abort
+ if (ptr () /= 3) STOP 6
+ if (.not.associated (ptr, baz)) STOP 7
end
integer function foo ()
foo = 1
call sub(i)
end do
!$omp end parallel do
-if (s/=55) call abort()
+if (s/=55) STOP 1
contains
ca = cmplx (-1, 0)
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 1
if (cnt .eq. 3) then
- if (i .ne. 8 .or. any (ia .ne. (/3, 3, 1, 6, 6, 8/))) call abort
- if (r .ne. 8 .or. any (ra .ne. (/9.5, 8.0, 1.5, 1.5/))) call abort
- if (d .ne. 12.5 .or. any (da .ne. (/8.0, 16.5, 16.5, 14.0, 5.5/))) call abort
- if (c .ne. cmplx (11.5, -5)) call abort
- if (ca(1) .ne. cmplx (12, 2)) call abort
- if (ca(2) .ne. cmplx (6.5, 3) .or. ca(2) .ne. ca(3)) call abort
+ if (i .ne. 8 .or. any (ia .ne. (/3, 3, 1, 6, 6, 8/))) STOP 2
+ if (r .ne. 8 .or. any (ra .ne. (/9.5, 8.0, 1.5, 1.5/))) STOP 3
+ if (d .ne. 12.5 .or. any (da .ne. (/8.0, 16.5, 16.5, 14.0, 5.5/))) STOP 4
+ if (c .ne. cmplx (11.5, -5)) STOP 5
+ if (ca(1) .ne. cmplx (12, 2)) STOP 6
+ if (ca(2) .ne. cmplx (6.5, 3) .or. ca(2) .ne. ca(3)) STOP 7
end if
i = 1
ca = cmplx (-1, 0)
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 8
if (cnt .eq. 3) then
- if (i .ne. 8 .or. any (ia .ne. (/3, 3, 1, 6, 6, 8/))) call abort
- if (r .ne. 8 .or. any (ra .ne. (/9.5, 8.0, 1.5, 1.5/))) call abort
- if (d .ne. 12.5 .or. any (da .ne. (/8.0, 16.5, 16.5, 14.0, 5.5/))) call abort
- if (c .ne. cmplx (11.5, -5)) call abort
- if (ca(1) .ne. cmplx (12, 2)) call abort
- if (ca(2) .ne. cmplx (6.5, 3) .or. ca(2) .ne. ca(3)) call abort
+ if (i .ne. 8 .or. any (ia .ne. (/3, 3, 1, 6, 6, 8/))) STOP 9
+ if (r .ne. 8 .or. any (ra .ne. (/9.5, 8.0, 1.5, 1.5/))) STOP 10
+ if (d .ne. 12.5 .or. any (da .ne. (/8.0, 16.5, 16.5, 14.0, 5.5/))) STOP 11
+ if (c .ne. cmplx (11.5, -5)) STOP 12
+ if (ca(1) .ne. cmplx (12, 2)) STOP 13
+ if (ca(2) .ne. cmplx (6.5, 3) .or. ca(2) .ne. ca(3)) STOP 14
end if
i = 1
ca = cmplx (-1, 0)
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 15
if (cnt .eq. 3) then
- if (i .ne. 6 .or. any (ia .ne. (/4, 4, 8, -16, -16, -8/))) call abort
- if (r .ne. 8 .or. any (ra .ne. (/4., -2., -1., -1./))) call abort
- if (d .ne. -40 .or. any (da .ne. (/32., -64., -64., 64., -32./))) call abort
- if (c .ne. cmplx (0, 15)) call abort
- if (ca(1) .ne. cmplx (0, 10)) call abort
- if (ca(2) .ne. cmplx (-2, 0) .or. ca(2) .ne. ca(3)) call abort
+ if (i .ne. 6 .or. any (ia .ne. (/4, 4, 8, -16, -16, -8/))) STOP 16
+ if (r .ne. 8 .or. any (ra .ne. (/4., -2., -1., -1./))) STOP 17
+ if (d .ne. -40 .or. any (da .ne. (/32., -64., -64., 64., -32./))) STOP 18
+ if (c .ne. cmplx (0, 15)) STOP 19
+ if (ca(1) .ne. cmplx (0, 10)) STOP 20
+ if (ca(2) .ne. cmplx (-2, 0) .or. ca(2) .ne. ca(3)) STOP 21
end if
end
ma(1) = .true.
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 1
if (cnt .eq. 3) then
- if (l .or. any (la .neqv. (/.true., .false., .false., .false./))) call abort
- if (.not. m .or. any (ma .neqv. (/.true., .true., .false., .true./))) call abort
+ if (l .or. any (la .neqv. (/.true., .false., .false., .false./))) STOP 2
+ if (.not. m .or. any (ma .neqv. (/.true., .true., .false., .true./))) STOP 3
end if
l = .true.
ma(1) = .true.
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 4
if (cnt .eq. 3) then
- if (.not. l .or. any (la .neqv. (/.true., .false., .true., .false./))) call abort
- if (.not. m .or. any (ma .neqv. (/.false., .true., .false., .true./))) call abort
+ if (.not. l .or. any (la .neqv. (/.true., .false., .true., .false./))) STOP 5
+ if (.not. m .or. any (ma .neqv. (/.false., .true., .false., .true./))) STOP 6
end if
end
da = -1
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 1
if (cnt .eq. 3) then
- if (i .ne. 4 .or. any (ia .ne. (/7, 2, 2, 5, 5, 5/))) call abort
- if (r .ne. 5 .or. any (ra .ne. (/6.5, 6.5, 4., 4./))) call abort
- if (d .ne. 8.5 .or. any (da .ne. (/6.5, 8.5, 8.5, 8.5, 6.5/))) call abort
+ if (i .ne. 4 .or. any (ia .ne. (/7, 2, 2, 5, 5, 5/))) STOP 2
+ if (r .ne. 5 .or. any (ra .ne. (/6.5, 6.5, 4., 4./))) STOP 3
+ if (d .ne. 8.5 .or. any (da .ne. (/6.5, 8.5, 8.5, 8.5, 6.5/))) STOP 4
end if
i = 1
da(1:4) = 6
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 5
if (cnt .eq. 3) then
- if (i .ne. 1 .or. any (ia .ne. (/1, 1, -2, -2, -2, 1/))) call abort
- if (r .ne. -1 .or. any (ra .ne. (/4., -1.5, -8.5, -1.5/))) call abort
- if (d .ne. -2.5 .or. any (da .ne. (/2.5, 2.5, 2.5, 6., 6.5/))) call abort
+ if (i .ne. 1 .or. any (ia .ne. (/1, 1, -2, -2, -2, 1/))) STOP 6
+ if (r .ne. -1 .or. any (ra .ne. (/4., -1.5, -8.5, -1.5/))) STOP 7
+ if (d .ne. -2.5 .or. any (da .ne. (/2.5, 2.5, 2.5, 6., 6.5/))) STOP 8
end if
end
ka(6:6) = Z'777'
end if
!$omp end parallel
- if (v) call abort
+ if (v) STOP 1
if (cnt .eq. 3) then
ta = (/Z'f0ff03', Z'f0af03', Z'f0af01', Z'f0af01', Z'f0af01', Z'f0ff0f'/)
- if (i .ne. Z'777f07' .or. any (ia .ne. ta)) call abort
+ if (i .ne. Z'777f07' .or. any (ia .ne. ta)) STOP 2
ta = (/Z'f5a01', Z'f5a09', Z'f5a09', Z'f5a08', Z'f5f08', Z'f5f00'/)
- if (j .ne. Z'fff80' .or. any (ja .ne. ta)) call abort
+ if (j .ne. Z'fff80' .or. any (ja .ne. ta)) STOP 3
ta = (/Z'5a5a5', Z'5a5a5', Z'aaba2', Z'aaba2', Z'5aaaa', Z'5addd'/)
- if (k .ne. Z'54a8f' .or. any (ka .ne. ta)) call abort
+ if (k .ne. Z'54a8f' .or. any (ka .ne. ta)) STOP 4
end if
end
!$omp section
n = bitwise_or (n, Z'2000')
!$omp end parallel sections
- if (n .ne. Z'243f') call abort
+ if (n .ne. Z'243f') STOP 1
end subroutine
subroutine test2
use reduction5, min => max, max => min
if (m .gt. 3) m = 3
if (n .lt. -1) n = -1
!$omp end parallel sections
- if (m .ne. 3 .or. n .ne. 15) call abort
+ if (m .ne. 3 .or. n .ne. 15) STOP 2
end subroutine test2
end
call foo (a (2:4, 3:5), nthreads)
if (nthreads .eq. 3) then
write (c, '(36i1)') a
- if (c .ne. '999999999999966699966699966699999999') call abort
+ if (c .ne. '999999999999966699966699966699999999') STOP 1
end if
contains
subroutine foo (b, nthreads)
!$omp end master
b = 2
!$omp end parallel
- if (err .gt. 0) call abort
+ if (err .gt. 0) STOP 2
end subroutine foo
end
k = 0
d = 24.5
call test (i, j, k, d)
- if (i .ne. 38) call abort
- if (iand (k, 255) .ne. 0) call abort
+ if (i .ne. 38) STOP 1
+ if (iand (k, 255) .ne. 0) STOP 2
if (iand (k, 65280) .eq. 0) then
- if (k .ne. 65536 * 4) call abort
+ if (k .ne. 65536 * 4) STOP 3
end if
contains
subroutine test (i, j, k, d)
a = 15
l = bar (a)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine
function bar (a)
real, dimension (5) :: a
l = l .or. (omp_get_thread_num () .eq. 0 .and. f1 .ne. 8.5)
l = l .or. (omp_get_thread_num () .eq. 1 .and. f1 .ne. 14.5)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
f1 = -2.5
end function f1
function f2 ()
l = l .or. (omp_get_thread_num () .eq. 0 .and. e2 .ne. 8.5)
l = l .or. (omp_get_thread_num () .eq. 1 .and. e2 .ne. 14.5)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 2
e2 = 7.5
end function f2
function f3 ()
l = l .or. (omp_get_thread_num () .eq. 1 .and. e3 .ne. 14.5)
l = l .or. f3 .ne. e3 - 4.5
!$omp end parallel
- if (l) call abort
+ if (l) STOP 3
e3 = 0.5
end function f3
function f4 () result (r4)
l = l .or. (omp_get_thread_num () .eq. 1 .and. s4 .ne. 14.5)
l = l .or. r4 .ne. s4 - 4.5
!$omp end parallel
- if (l) call abort
+ if (l) STOP 4
s4 = -0.5
end function f4
function f5 (is_f5)
l = l .or. (omp_get_thread_num () .eq. 1 .and. e5 .ne. 14)
l = l .or. f5 .ne. e5 - 4.5
!$omp end parallel
- if (l) call abort
+ if (l) STOP 5
if (is_f5) f5 = -2.5
if (.not. is_f5) e5 = 8
end function f5
real :: f1, f2, e2, f3, e3, f4, e4, f5
integer :: e5
- if (f1 () .ne. -2.5) call abort
- if (f2 () .ne. 7.5) call abort
- if (e2 () .ne. 7.5) call abort
- if (f3 () .ne. 0.5) call abort
- if (e3 () .ne. 0.5) call abort
- if (f4 () .ne. -0.5) call abort
- if (e4 () .ne. -0.5) call abort
- if (f5 (.true.) .ne. -2.5) call abort
- if (e5 (.false.) .ne. 8) call abort
+ if (f1 () .ne. -2.5) STOP 6
+ if (f2 () .ne. 7.5) STOP 7
+ if (e2 () .ne. 7.5) STOP 8
+ if (f3 () .ne. 0.5) STOP 9
+ if (e3 () .ne. 0.5) STOP 10
+ if (f4 () .ne. -0.5) STOP 11
+ if (e4 () .ne. -0.5) STOP 12
+ if (f5 (.true.) .ne. -2.5) STOP 13
+ if (e5 (.false.) .ne. 8) STOP 14
end
l = l .or. (omp_get_thread_num () .eq. 0 .and. f1 .ne. 8.5)
l = l .or. (omp_get_thread_num () .eq. 1 .and. f1 .ne. 14.5)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
f1 = -2.5
end subroutine sub1
end function f1
real :: f1
- if (f1 () .ne. -2.5) call abort
+ if (f1 () .ne. -2.5) STOP 2
end
!$omp barrier
if (j .ne. 25 .or. i .ne. (k * 10 + 14)) l = .true.
!$omp end parallel
- if (l .or. j .ne. 25) call abort
+ if (l .or. j .ne. 25) STOP 1
end
!$omp barrier
if (j .ne. 25 .or. i .ne. (k * 10 + 14)) l = .true.
!$omp end parallel
- if (l) call abort
- if (j .ne. 25) call abort
+ if (l) STOP 1
+ if (j .ne. 25) STOP 2
end
s = s + l
t%x = t%x + l
end do
- if (r.ne.2700.or.j.ne.70.or.k.ne.80.or.s.ne.2700) call abort
- if (t%x.ne.2700) call abort
+ if (r.ne.2700.or.j.ne.70.or.k.ne.80.or.s.ne.2700) STOP 1
+ if (t%x.ne.2700) STOP 2
end
end do
s = foo (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 1
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 2
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 3
end if
a(i) = i - 513
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 4
k = 4
m = 2
t = 1
s = bar (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 5
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 6
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 7
end if
a(i) = i - 513
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 8
k = 4
m = 2
t = 1
s = baz (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 9
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 10
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 11
end if
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 12
contains
function foo (p)
integer :: p(1024), u, v, i, s, foo
s = s + p(i) + k
end do
!$omp end simd
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 13
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 14
foo = s
end function foo
function bar (p)
s = s + p(i) + k
end do
!$omp end simd
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 15
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 16
bar = s
end function bar
function baz (p)
v = p(i) + k
s = s + p(i) + k
end do
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 17
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 18
baz = s
end function baz
end
end do
s = foo (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 1
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 2
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 3
end if
a(i) = i - 513
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 4
k = 4
m = 2
t = 1
s = bar (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 5
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 6
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 7
end if
a(i) = i - 513
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 8
k = 4
m = 2
t = 1
s = baz (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 9
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 10
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 11
end if
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 12
contains
function foo (p)
integer :: p(1024), u, v, i, s, foo
end do
!$omp end do simd
!$omp end parallel
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 13
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 14
foo = s
end function foo
function bar (p)
end do
!$omp end do simd
!$omp endparallel
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 15
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 16
bar = s
end function bar
function baz (p)
s = s + p(i) + k
end do
!$omp end parallel
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 17
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 18
baz = s
end function baz
end
end do
s = foo (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 1
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 2
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 3
end if
a(i) = i - 513
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 4
k = 4
m = 2
t = 1
s = bar (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 5
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 6
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 7
end if
a(i) = i - 513
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 8
k = 4
m = 2
t = 1
s = baz (b)
do i = 1, 1024
- if (a(i).ne.((i - 513) * b(i))) call abort
+ if (a(i).ne.((i - 513) * b(i))) STOP 9
if (i.lt.52.and.modulo (i - 52, 39).ne.0) then
- if (b(i).ne.(modulo (i - 52, 39) - 39)) call abort
+ if (b(i).ne.(modulo (i - 52, 39) - 39)) STOP 10
else
- if (b(i).ne.(modulo (i - 52, 39))) call abort
+ if (b(i).ne.(modulo (i - 52, 39))) STOP 11
end if
end do
- if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) call abort
+ if (k.ne.(4 + 3 * 1024).or.s.ne.1596127) STOP 12
contains
function foo (p)
integer :: p(1024), u, v, i, s, foo
s = s + p(i) + k
end do
!$omp end parallel do simd
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 13
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 14
foo = s
end function foo
function bar (p)
s = s + p(i) + k
end do
!$omp endparalleldosimd
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 15
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 16
bar = s
end function bar
function baz (p)
v = p(i) + k
s = s + p(i) + k
end do
- if (i.ne.1025) call abort
- if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) call abort
+ if (i.ne.1025) STOP 17
+ if (u.ne.(36 + 4 + 3 * 1023).or.v.ne.(36 + 4 + 3 * 1024)) STOP 18
baz = s
end function baz
end
c = c + b - (7 + 2 * i)
b = b + 2
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 1
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
b = b + 3
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 2
i = 4
j = 4
b = 7
c = c + b - (7 + 2 * i)
b = b + 2
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 3
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
b = b + 3
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 4
i = 4
j = 4
b = 7
b = b + 2
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 5
i = 4
j = 4
b = 7
b = b + 2
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 6
i = 4
j = 4
b = 7
c = c + b - (7 + 2 * i)
b = b + 2
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 7
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
b = b + 3
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 8
i = 4
j = 4
b = 7
c = c + b - (7 + 2 * i)
b = b + 2
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 9
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
b = b + 3
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 10
i = 4
j = 4
b = 7
b = b + 2
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 11
i = 4
j = 4
b = 7
b = b + 2
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 12
end
c = c + b - (7 + 2 * i)
call foo (b, i, j, 2)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 1
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
call foo (b, i, j, 3)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 2
i = 4
j = 4
b = 7
c = c + b - (7 + 2 * i)
call foo (b, i, j, 2)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 3
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
call foo (b, i, j, 3)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 4
i = 4
j = 4
b = 7
call foo (b, i, j, 2)
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 5
i = 4
j = 4
b = 7
call foo (b, i, j, 2)
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 6
i = 4
j = 4
b = 7
c = c + b - (7 + 2 * i)
call foo (b, i, j, 2)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 7
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
call foo (b, i, j, 3)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 8
i = 4
j = 4
b = 7
c = c + b - (7 + 2 * i)
call foo (b, i, j, 2)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 64 * 2) STOP 9
i = 4
j = 4
b = 7
c = c + b - (7 + i / 4 * 3)
call foo (b, i, j, 3)
end do
- if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) call abort
+ if (c /= 0 .or. i /= 64 .or. b /= 7 + 16 * 3) STOP 10
i = 4
j = 4
b = 7
call foo (b, i, j, 2)
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 11
i = 4
j = 4
b = 7
call foo (b, i, j, 2)
end do
end do
- if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) call abort
+ if (c /= 0 .or. i /= 8 .or. j /= 8 .or. b /= 7 + 64 * 2) STOP 12
end
subroutine foo (b, i, j, x)
integer, intent (inout) :: b
b = b + 1; c = c + 2; d = d + 3; e = e + 4; f = f + 5; g = g + 6
h = h + 7; k = k + 8; m = m + 9
end do
- if (l .or. i /= 64) call abort
- if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) call abort
- if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) call abort
- if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) call abort
- if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) call abort
- if (m /= 15 + 9 * 64) call abort
- if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) call abort
- if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) call abort
- if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) call abort
- if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) call abort
- if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) call abort
- if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) call abort
- if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) call abort
- if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) call abort
+ if (l .or. i /= 64) STOP 1
+ if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) STOP 2
+ if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) STOP 3
+ if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) STOP 4
+ if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) STOP 5
+ if (m /= 15 + 9 * 64) STOP 6
+ if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) STOP 7
+ if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) STOP 8
+ if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) STOP 9
+ if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) STOP 10
+ if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) STOP 11
+ if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) STOP 12
+ if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) STOP 13
+ if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) STOP 14
i = 4; j = 4; b = 7; c = 8; d = 9; e = 10; f = 11; g = 12; h = 13; k = 14; m = 15
!$omp simd linear(b)linear(c:2)linear(d:3)linear(e:4)linear(f:5)linear(g:6) &
!$omp & linear(h:7)linear(k:8)linear(m:9) reduction(.or.:l) collapse(2)
h = h + 7; k = k + 8; m = m + 9
end do
end do
- if (l .or. i /= 8 .or. j /= 8) call abort
- if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) call abort
- if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) call abort
- if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) call abort
- if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) call abort
- if (m /= 15 + 9 * 64) call abort
- if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) call abort
- if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) call abort
- if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) call abort
- if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) call abort
- if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) call abort
- if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) call abort
- if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) call abort
- if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) call abort
+ if (l .or. i /= 8 .or. j /= 8) STOP 15
+ if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) STOP 16
+ if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) STOP 17
+ if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) STOP 18
+ if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) STOP 19
+ if (m /= 15 + 9 * 64) STOP 20
+ if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) STOP 21
+ if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) STOP 22
+ if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) STOP 23
+ if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) STOP 24
+ if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) STOP 25
+ if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) STOP 26
+ if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) STOP 27
+ if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) STOP 28
i = 4; j = 4; b = 7; c = 8; d = 9; e = 10; f = 11; g = 12; h = 13; k = 14; m = 15
!$omp parallel do simd linear(b)linear(c:2)linear(d:3)linear(e:4)linear(f:5) &
!$omp & linear(g:6)linear(h:7)linear(k:8)linear(m:9) reduction(.or.:l)
b = b + 1; c = c + 2; d = d + 3; e = e + 4; f = f + 5; g = g + 6
h = h + 7; k = k + 8; m = m + 9
end do
- if (l .or. i /= 64) call abort
- if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) call abort
- if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) call abort
- if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) call abort
- if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) call abort
- if (m /= 15 + 9 * 64) call abort
- if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) call abort
- if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) call abort
- if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) call abort
- if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) call abort
- if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) call abort
- if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) call abort
- if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) call abort
- if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) call abort
+ if (l .or. i /= 64) STOP 29
+ if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) STOP 30
+ if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) STOP 31
+ if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) STOP 32
+ if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) STOP 33
+ if (m /= 15 + 9 * 64) STOP 34
+ if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) STOP 35
+ if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) STOP 36
+ if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) STOP 37
+ if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) STOP 38
+ if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) STOP 39
+ if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) STOP 40
+ if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) STOP 41
+ if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) STOP 42
i = 4; j = 4; b = 7; c = 8; d = 9; e = 10; f = 11; g = 12; h = 13; k = 14; m = 15
!$omp parallel do simd linear(b)linear(c:2)linear(d:3)linear(e:4)linear(f:5) &
!$omp & linear(g:6)linear(h:7)linear(k:8)linear(m:9) reduction(.or.:l) collapse(2)
h = h + 7; k = k + 8; m = m + 9
end do
end do
- if (l .or. i /= 8 .or. j /= 8) call abort
- if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) call abort
- if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) call abort
- if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) call abort
- if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) call abort
- if (m /= 15 + 9 * 64) call abort
- if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) call abort
- if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) call abort
- if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) call abort
- if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) call abort
- if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) call abort
- if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) call abort
- if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) call abort
- if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) call abort
+ if (l .or. i /= 8 .or. j /= 8) STOP 43
+ if (any (b /= 7 + 64) .or. any (c /= 8 + 2 * 64)) STOP 44
+ if (any (d /= 9 + 3 * 64) .or. any (e /= 10 + 4 * 64)) STOP 45
+ if (any (f /= 11 + 5 * 64) .or. any (g /= 12 + 6 * 64)) STOP 46
+ if (any (h /= 13 + 7 * 64) .or. (k /= 14 + 8 * 64)) STOP 47
+ if (m /= 15 + 9 * 64) STOP 48
+ if ((lbound (b, 1) /= 2) .or. (ubound (b, 1) /= 9)) STOP 49
+ if ((lbound (c, 1) /= 3) .or. (ubound (c, 1) /= n)) STOP 50
+ if ((lbound (d, 1) /= 1) .or. (ubound (d, 1) /= 17)) STOP 51
+ if ((lbound (e, 1) /= 2) .or. (ubound (e, 1) /= n)) STOP 52
+ if ((lbound (f, 1) /= 2) .or. (ubound (f, 1) /= 3)) STOP 53
+ if ((lbound (f, 2) /= 3) .or. (ubound (f, 2) /= 5)) STOP 54
+ if ((lbound (g, 1) /= 7) .or. (ubound (g, 1) /= 10)) STOP 55
+ if ((lbound (h, 1) /= 2) .or. (ubound (h, 1) /= 7)) STOP 56
end subroutine
interface
!$omp end parallel
! Check that the two threads are not sharing a location for
! the array x in foo()
- if (ilocs(1) .eq. ilocs(2)) call abort
+ if (ilocs(1) .eq. ilocs(2)) STOP 1
end program stack
integer function foo ()
call strassen (A, B, D, N)
end = omp_get_wtime ()
write(*,'(a, f10.6)') ' Time for Strassen = ', end - start
- if (sqrt (sum ((C - D) ** 2)) / N .gt. 0.1) call abort
+ if (sqrt (sum ((C - D) ** 2)) / N .gt. 0.1) STOP 1
D = 0
start = omp_get_wtime ()
!$omp parallel
!$omp end parallel
end = omp_get_wtime ()
write(*,'(a, f10.6)') ' Time for Strassen MP = ', end - start
- if (sqrt (sum ((C - D) ** 2)) / N .gt. 0.1) call abort
+ if (sqrt (sum ((C - D) ** 2)) / N .gt. 0.1) STOP 2
contains
- if (b().ne.2) call abort
+ if (b().ne.2) STOP 1
contains
subroutine a
!$omp parallel
! { dg-options "-ffixed-form" }
- if (b().ne.2) call abort
+ if (b().ne.2) STOP 1
contains
subroutine a
!$omp parallel
q(i) = p(i)
end do
!$omp end target
- if (any (p /= q)) call abort
+ if (any (p /= q)) STOP 1
do i = 1, n
- if (p(i) /= i * iand (i, 63)) call abort
+ if (p(i) /= i * iand (i, 63)) STOP 2
end do
!$omp target data if (n > 256) map (to: v(1:n), w) map (from: p, q)
!$omp target if (n > 256)
end do
!$omp end target
!$omp end target data
- if (any (p + 2.0 /= q)) call abort
+ if (any (p + 2.0 /= q)) STOP 3
end subroutine
end module target1
use target1, only : foo
end do
call foo (p, v, w, n)
do i = 1, n
- if (p(i) /= i * iand (i, 63) + 3) call abort
+ if (p(i) /= i * iand (i, 63) + 3) STOP 4
end do
deallocate (p, v, w)
end
r = r .or. (j /= 16)
r = r .or. (any (k /= 17)) .or. (lbound (k, 1) /= 4) .or. (ubound (k, 1) /= n)
!$omp end target
- if (r) call abort
+ if (r) STOP 1
!$omp target map (to: b(3:n), c(5:n+4), d(2:n+1), e(1:,:2), g(3:n), i(3:n), k(4:n), n) map (from: r)
r = (any (b /= 8)) .or. (lbound (b, 1) /= 3) .or. (ubound (b, 1) /= n)
r = r .or. (any (c /= 9)) .or. (lbound (c, 1) /= 5) .or. (ubound (c, 1) /= n + 4)
r = r .or. (any (i /= 15)) .or. (lbound (i, 1) /= 3) .or. (ubound (i, 1) /= n)
r = r .or. (any (k /= 17)) .or. (lbound (k, 1) /= 4) .or. (ubound (k, 1) /= n)
!$omp end target
- if (r) call abort
+ if (r) STOP 2
!$omp target map (to: b(5:n-2), c(7:n), d(4:n-2), e(1:,2:), g(5:n-3), i(6:n-4), k(5:n-5), n) map (from: r)
r = (any (b(5:n-2) /= 8)) .or. (lbound (b, 1) /= 3) .or. (ubound (b, 1) /= n)
r = r .or. (any (c(7:n) /= 9)) .or. (lbound (c, 1) /= 5) .or. (ubound (c, 1) /= n + 4)
r = r .or. (any (i(6:n-4) /= 15)) .or. (lbound (i, 1) /= 3) .or. (ubound (i, 1) /= n)
r = r .or. (any (k(5:n-5) /= 17)) .or. (lbound (k, 1) /= 4) .or. (ubound (k, 1) /= n)
!$omp end target
- if (r) call abort
+ if (r) STOP 3
!$omp target map (to: d(2:n+1), n)
r = a /= 7
r = r .or. (any (b /= 8)) .or. (lbound (b, 1) /= 3) .or. (ubound (b, 1) /= n)
r = r .or. (j /= 16)
r = r .or. (any (k /= 17)) .or. (lbound (k, 1) /= 4) .or. (ubound (k, 1) /= n)
!$omp end target
- if (r) call abort
+ if (r) STOP 4
end subroutine foo
end module target2
use target2, only : foo
r = associated (f) .or. associated (g)
r = r .or. associated (j) .or. associated (k)
!$omp end target
- if (r) call abort
+ if (r) STOP 1
!$omp target
r = associated (f) .or. associated (g)
r = r .or. associated (j) .or. associated (k)
!$omp end target
- if (r) call abort
+ if (r) STOP 2
end subroutine foo
end module target3
use target3, only : foo
& 30800.0d0, 33000.0d0, 23256.0d0, 25840.0d0, 28424.0d0, 31008.0d0, 33592.0d0, 36176.0d0, &
& 38760.0d0, 41344.0d0, 30000.0d0, 33000.0d0, 36000.0d0, 39000.0d0, 42000.0d0, 45000.0d0, &
& 48000.0d0, 51000.0d0 /), (/ 8, 9 /))
- if (any (a /= res)) call abort
+ if (any (a /= res)) STOP 1
end
integer :: r
r = 0
call foo (r)
- if (r /= 11) call abort
+ if (r /= 11) STOP 1
contains
subroutine foo (r)
integer :: i, r
!$omp end target
!$omp target update if (n > 256) from (p)
do i = 1, n
- if (p(i) /= i * iand (i, 63)) call abort
+ if (p(i) /= i * iand (i, 63)) STOP 1
v(i) = v(i) + 1
end do
!$omp target update if (n > 256) to (v(1:n))
!$omp end target
!$omp end target data
do i = 1, n
- if (q(i) /= (v(i) - 1) * w(i)) call abort
- if (p(i) /= q(i) + w(i)) call abort
+ if (q(i) /= (v(i) - 1) * w(i)) STOP 2
+ if (p(i) /= q(i) + w(i)) STOP 3
end do
end subroutine
end module target6
end do
call foo (p, v, w, n)
do i = 1, n
- if (p(i) /= (i + 1) * iand (i, 63)) call abort
+ if (p(i) /= (i + 1) * iand (i, 63)) STOP 4
end do
deallocate (p, v, w)
end
!$omp end single
!$omp end parallel
do i = 1, n
- if (a(i) /= i + 1) call abort
+ if (a(i) /= i + 1) STOP 1
end do
end
real function foo (x)
!$omp end single
!$omp end parallel
do i = 1, n
- if (a(i) /= i + 1) call abort
+ if (a(i) /= i + 1) STOP 1
end do
contains
real function foo (x)
!$omp end task
end if
!$omp end parallel
- if (j.gt.0) call abort
+ if (j.gt.0) STOP 1
contains
subroutine subr (i)
use omp_lib
call test
!$omp end single
!$omp end parallel
- if (err.ne.0) call abort
+ if (err.ne.0) STOP 1
contains
subroutine check (x, y, l)
integer :: x, y
!$omp end parallel
if (sum /= NT) then
print *, "FAIL - sum == ", sum, " (expected ", NT, ")"
- call abort
+ STOP 1
end if
end program F03_2_7_1d
!$omp end parallel
!$omp atomic read
e = err
- if (e .ne. 0) call abort
+ if (e .ne. 0) STOP 1
end
end do
!$omp end taskgroup
do i = 1, 16
- if (v(i).ne.(i + 1)) call abort
+ if (v(i).ne.(i + 1)) STOP 1
end do
!$omp taskgroup
do i = 1, 16, 2
end do
!$omp endtaskgroup
do i = 1, 16
- if (v(i).ne.(i + 2)) call abort
+ if (v(i).ne.(i + 2)) STOP 2
end do
!$omp taskgroup
do i = 1, 16, 2
end do
!$omp end taskgroup
do i = 1, 16, 2
- if (v(i).ne.(i + 3)) call abort
- if (v(i + 1).ne.(i + 5)) call abort
+ if (v(i).ne.(i + 3)) STOP 3
+ if (v(i + 1).ne.(i + 5)) STOP 4
end do
!$omp taskgroup
do i = 1, 16, 2
v(i + 1) = v(i + 1) + 1
!$omp end task
!$omp end taskgroup
- if (v(i).ne.(i + 4).or.v(i + 1).ne.(i + 6)) call abort
+ if (v(i).ne.(i + 4).or.v(i + 1).ne.(i + 6)) STOP 5
!$omp task
v(i) = v(i) + 1
!$omp end task
end do
!$omp end taskgroup
do i = 1, 16
- if (v(i).ne.(i + 5)) call abort
+ if (v(i).ne.(i + 5)) STOP 6
end do
!$omp end single
!$omp end parallel
r = bar (12, 18)
!$omp end single
!$omp end parallel
- if (q .ne. 6 .or. r .ne. 17 .or. e) call abort
+ if (q .ne. 6 .or. r .ne. 17 .or. e) STOP 1
contains
subroutine foo (a, b)
integer, intent (in) :: a, b
!$omp end single
!$omp end parallel
do i = 1, 1024
- if (u(i) .ne. 2 * i + 1) call abort
+ if (u(i) .ne. 2 * i + 1) STOP 1
v(i) = 1024 - i
w(i) = 512 - i
end do
!$omp end parallel
do i = 1, 1024
if (i .lt. 2 .or. i .gt. 1022) then
- if (u(i) .ne. 2 * i + 1) call abort
+ if (u(i) .ne. 2 * i + 1) STOP 2
else
- if (u(i) .ne. 1536 - 2 * i) call abort
+ if (u(i) .ne. 1536 - 2 * i) STOP 3
end if
v(i) = i
w(i) = i + 1
end do
- if (m .ne. (1023 + 2 * (1021 * 5 + 17) + 9)) call abort
+ if (m .ne. (1023 + 2 * (1021 * 5 + 17) + 9)) STOP 4
!$omp parallel
!$omp single
call f3 (1, 1024)
!$omp end single
!$omp end parallel
do i = 1, 1024
- if (u(i) .ne. 2 * i + 1) call abort
+ if (u(i) .ne. 2 * i + 1) STOP 5
v(i) = 1024 - i
w(i) = 512 - i
end do
- if (m .ne. 1025) call abort
+ if (m .ne. 1025) STOP 6
!$omp parallel
!$omp single
call f4 (0, 31, 1, 32)
!$omp end single
!$omp end parallel
do i = 1, 1024
- if (u(i) .ne. 1536 - 2 * i) call abort
+ if (u(i) .ne. 1536 - 2 * i) STOP 7
v(i) = i
w(i) = i + 1
end do
- if (m .ne. 32 + 33 + 1024) call abort
+ if (m .ne. 32 + 33 + 1024) STOP 8
!$omp parallel
!$omp single
call f5 (0, 31, 1, 32)
!$omp end single
!$omp end parallel
do i = 1, 1024
- if (u(i) .ne. 2 * i + 1) call abort
+ if (u(i) .ne. 2 * i + 1) STOP 9
end do
- if (m .ne. 32 + 33) call abort
+ if (m .ne. 32 + 33) STOP 10
contains
subroutine f1 (a, b)
integer, intent(in) :: a, b
integer :: i
!$omp parallel
!$omp single
- if (f1 (74) .ne. 63 + 4) call abort
+ if (f1 (74) .ne. 63 + 4) STOP 1
g = 77
call f2
!$omp taskwait
- if (g .ne. 63 + 9) call abort
- if (f3 (7_8, 11_8, 2_8) .ne. 11 * 7 + 13) call abort
+ if (g .ne. 63 + 9) STOP 2
+ if (f3 (7_8, 11_8, 2_8) .ne. 11 * 7 + 13) STOP 3
if (f4 (0_8, 31_8, 16_8, 46_8, 1_8, 2_8, 73) .ne. 32 + 5 * 48 &
-& + 11 * 31 + 17 * 46) call abort
+& + 11 * 31 + 17 * 46) STOP 4
!$omp end single
!$omp end parallel
contains
x = y
!$omp taskloop firstprivate(x)lastprivate(x)
do i = 0, 63
- if (x .ne. 74) call abort
+ if (x .ne. 74) STOP 5
if (i .eq. 63) then
x = i + 4
end if
integer :: i
!$omp taskloop firstprivate(g)lastprivate(g)nogroup
do i = 0, 63
- if (g .ne. 77) call abort
+ if (g .ne. 77) STOP 6
if (i .eq. 63) then
g = i + 9
end if
!$omp & lastprivate (i, j, k, l)
do i = a, b, e
do j = c, d, f
- if (k .ne. 73) call abort
+ if (k .ne. 73) STOP 7
if (i .eq. 31 .and. j .eq. 46) then
k = i
end if
! >= grainsize && < 2 * grainsize,
! unless # of loop iterations is smaller than grainsize.
call test (0, 79, 1, 17, fn, ntasks, min_iters, max_iters, cnt)
- if (cnt .ne. 79) call abort
- if (min_iters .lt. 17 .or. max_iters .ge. 17 * 2) call abort
+ if (cnt .ne. 79) STOP 1
+ if (min_iters .lt. 17 .or. max_iters .ge. 17 * 2) STOP 2
call test (-49, 2541, 7, 28, fn, ntasks, min_iters, max_iters, cnt)
- if (cnt .ne. 370) call abort
- if (min_iters .lt. 28 .or. max_iters .ge. 28 * 2) call abort
+ if (cnt .ne. 370) STOP 3
+ if (min_iters .lt. 28 .or. max_iters .ge. 28 * 2) STOP 4
call test (7, 21, 2, 15, fn, ntasks, min_iters, max_iters, cnt)
- if (cnt .ne. 7) call abort
- if (min_iters .ne. 7 .or. max_iters .ne. 7) call abort
- if (ntasks .ne. 1) call abort
+ if (cnt .ne. 7) STOP 5
+ if (min_iters .ne. 7 .or. max_iters .ne. 7) STOP 6
+ if (ntasks .ne. 1) STOP 7
fn => num_tasks
! If num_tasks is present, # of task loop iters is
! min (# of loop iters, num_tasks).
call test (-51, 2500, 48, 9, fn, ntasks, min_iters, max_iters, cnt)
- if (cnt .ne. 54 .or. ntasks .ne. 9) call abort
+ if (cnt .ne. 54 .or. ntasks .ne. 9) STOP 8
call test (0, 25, 2, 17, fn, ntasks, min_iters, max_iters, cnt)
- if (cnt .ne. 13 .or. ntasks .ne. 13) call abort
+ if (cnt .ne. 13 .or. ntasks .ne. 13) STOP 9
!$omp end single
!$omp end parallel
contains
k = v
v = v + 1
!$omp end atomic
- if (k .ge. 64) call abort
+ if (k .ge. 64) STOP 10
end if
j = j + 1
u(k + 1) = j
k = v
v = v + 1
!$omp end atomic
- if (k .ge. 64) call abort
+ if (k .ge. 64) STOP 11
end if
j = j + 1
u(k + 1) = j
!$omp barrier
if (d .ne. omp_get_thread_num () + 6.5) l = .true.
!$omp end parallel
- if (l) call abort ()
+ if (l) STOP 1
end
! { dg-final { cleanup-modules "threadprivate1" } }
baz%b = omp_get_thread_num () * 2 + 1
!$omp end parallel
- if (l) call abort
- if (.not.allocated (foo)) call abort
- if (size (foo).ne.18) call abort
- if (any (foo.ne.1)) call abort
-
- if (associated (bar1)) call abort
- if (.not.associated (bar3)) call abort
- if (any (bar3 .ne. -2)) call abort
+ if (l) STOP 1
+ if (.not.allocated (foo)) STOP 2
+ if (size (foo).ne.18) STOP 3
+ if (any (foo.ne.1)) STOP 4
+
+ if (associated (bar1)) STOP 5
+ if (.not.associated (bar3)) STOP 6
+ if (any (bar3 .ne. -2)) STOP 7
deallocate (bar3)
- if (associated (bar3)) call abort
+ if (associated (bar3)) STOP 8
!$omp parallel num_threads (4) reduction (.or.:l)
l = l.or..not.allocated (foo)
l = l.or.(baz%b.ne.(omp_get_thread_num () * 2 + 1))
!$omp end parallel
- if (l) call abort
- if (.not.allocated (foo)) call abort
- if (size (foo).ne.18) call abort
- if (any (foo.ne.1)) call abort
+ if (l) STOP 9
+ if (.not.allocated (foo)) STOP 10
+ if (size (foo).ne.18) STOP 11
+ if (any (foo.ne.1)) STOP 12
deallocate (foo)
- if (allocated (foo)) call abort
+ if (allocated (foo)) STOP 13
end
! { dg-final { cleanup-modules "threadprivate2" } }
bar3 = omp_get_thread_num () - 2
if (omp_get_thread_num () .ne. 0) then
deallocate (bar3)
- if (associated (bar3)) call abort
+ if (associated (bar3)) STOP 1
else
bar1 => var
end if
baz%b = omp_get_thread_num () * 2 + 1
!$omp end parallel
- if (l) call abort
- if (.not.associated (bar1)) call abort
- if (any (bar1.ne.6)) call abort
- if (.not.associated (bar3)) call abort
- if (any (bar3 .ne. -2)) call abort
+ if (l) STOP 2
+ if (.not.associated (bar1)) STOP 3
+ if (any (bar1.ne.6)) STOP 4
+ if (.not.associated (bar3)) STOP 5
+ if (any (bar3 .ne. -2)) STOP 6
deallocate (bar3)
- if (associated (bar3)) call abort
+ if (associated (bar3)) STOP 7
allocate (bar3 (10))
bar3 = 17
l = l.or.(baz%b .ne. omp_get_thread_num () * 3 + 5)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 8
end
! { dg-final { cleanup-modules "threadprivate3" } }
vi = -1
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end
do i = 1, 100
j = j + i
end do
- if (j .ne. 5050) call abort
+ if (j .ne. 5050) STOP 1
j = 3
!$omp parallel do reduction (bar : j)
do i = 1, 100
j = j + 4 * i
end do
- if (j .ne. (5050 * 4 + 3)) call abort
+ if (j .ne. (5050 * 4 + 3)) STOP 2
!$omp parallel do reduction (+ : d)
do i = 1, 100
- if (d%y .ne. 9) call abort
+ if (d%y .ne. 9) STOP 3
d%x = d%x + 8 * i
end do
- if (d%x .ne. (5050 * 8 + 7) .or. d%y .ne. 9) call abort
+ if (d%x .ne. (5050 * 8 + 7) .or. d%y .ne. 9) STOP 4
d = dt (5, 21)
!$omp parallel do reduction (foo : d)
do i = 1, 100
- if (d%y .ne. 21) call abort
+ if (d%y .ne. 21) STOP 5
d%x = d%x + 8 * i
end do
- if (d%x .ne. (5050 * 8 + 5) .or. d%y .ne. 21) call abort
+ if (d%x .ne. (5050 * 8 + 5) .or. d%y .ne. 21) STOP 6
end
j = j .localadd. dl(i)
k = k + dl(i * 2)
end do
- if (j%x /= 5050 .or. k%x /= 10100) call abort
+ if (j%x /= 5050 .or. k%x /= 10100) STOP 1
end
t%x = t%x + 2 * i
u%x = u%x + 3 * i
end do
- if (j%x /= 5050 .or. k%x /= 30300 .or. l%x /= 15150) call abort
- if (m%x /= 5050 .or. n%x /= 10100 .or. o%x /= 15150) call abort
- if (p%x /= 5050 .or. q%x /= 10100 .or. r%x /= 15150) call abort
- if (s%x /= 5050 .or. t%x /= 10100 .or. u%x /= 15150) call abort
+ if (j%x /= 5050 .or. k%x /= 30300 .or. l%x /= 15150) STOP 1
+ if (m%x /= 5050 .or. n%x /= 10100 .or. o%x /= 15150) STOP 2
+ if (p%x /= 5050 .or. q%x /= 10100 .or. r%x /= 15150) STOP 3
+ if (s%x /= 5050 .or. t%x /= 10100 .or. u%x /= 15150) STOP 4
end
b = b + 3
r = r + 1
!$omp end parallel
- if (any (a /= 2 * r) .or. b /= 3 * r) call abort
+ if (any (a /= 2 * r) .or. b /= 3 * r) STOP 1
a(:) = 0
b = 0
r = 0
b = b + 3
r = r + 1
!$omp end parallel
- if (any (a /= 4 * r) .or. b /= 6 * r) call abort
+ if (any (a /= 4 * r) .or. b /= 6 * r) STOP 2
a(:) = 0
b = 0
r = 0
b = b + 3
r = r + 1
!$omp end parallel
- if (any (a /= 2 * r) .or. b /= 3 * r) call abort
+ if (any (a /= 2 * r) .or. b /= 3 * r) STOP 3
end
elemental function fn1 (x, y)
integer, intent(in) :: x, y
a(:) = 0
r = 0
!$omp parallel reduction (bar : a) reduction (+: r)
- if (lbound (a, 1) /= 1 .or. ubound (a, 1) /= 10) call abort
+ if (lbound (a, 1) /= 1 .or. ubound (a, 1) /= 10) STOP 1
a = a + 2
r = r + 1
!$omp end parallel
- if (any (a /= 4 * r) ) call abort
+ if (any (a /= 4 * r) ) STOP 2
b(:,:) = 0
allocate (c (4:6,8:10))
c(:,:) = 0
r = 0
!$omp parallel reduction (baz : b, c) reduction (+: r)
- if (lbound (b, 1) /= 3 .or. ubound (b, 1) /= 5) call abort
- if (lbound (b, 2) /= 7 .or. ubound (b, 2) /= 9) call abort
- if (.not. allocated (c)) call abort
- if (lbound (c, 1) /= 4 .or. ubound (c, 1) /= 6) call abort
- if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 10) call abort
+ if (lbound (b, 1) /= 3 .or. ubound (b, 1) /= 5) STOP 3
+ if (lbound (b, 2) /= 7 .or. ubound (b, 2) /= 9) STOP 4
+ if (.not. allocated (c)) STOP 5
+ if (lbound (c, 1) /= 4 .or. ubound (c, 1) /= 6) STOP 6
+ if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 10) STOP 7
b = b + 3
c = c + 4
r = r + 1
!$omp end parallel
- if (any (b /= 3 * r) .or. any (c /= 4 * r)) call abort
+ if (any (b /= 3 * r) .or. any (c /= 4 * r)) STOP 8
deallocate (c)
allocate (c (0:1,7:11))
c(:,:) = 0
r = 0
!$omp parallel reduction (foo : c) reduction (+: r)
- if (.not. allocated (c)) call abort
- if (lbound (c, 1) /= 0 .or. ubound (c, 1) /= 1) call abort
- if (lbound (c, 2) /= 7 .or. ubound (c, 2) /= 11) call abort
+ if (.not. allocated (c)) STOP 9
+ if (lbound (c, 1) /= 0 .or. ubound (c, 1) /= 1) STOP 10
+ if (lbound (c, 2) /= 7 .or. ubound (c, 2) /= 11) STOP 11
c = c + 5
r = r + 1
!$omp end parallel
- if (any (c /= 10 * r)) call abort
+ if (any (c /= 10 * r)) STOP 12
end
function fn1 (x, y, m1, m2)
integer, intent(in) :: x(:), y(:), m1, m2
a(7)%h = (/ 0, 0, 0 /)
r = 0
!$omp parallel reduction(+:r) reduction (baz:a)
- if (.not.allocated (a)) call abort
- if (lbound (a, 1) /= 7 .or. ubound (a, 1) /= 8) call abort
- if (.not.allocated (a(7)%h)) call abort
- if (allocated (a(8)%h)) call abort
- if (lbound (a(7)%h, 1) /= 1 .or. ubound (a(7)%h, 1) /= 3) call abort
+ if (.not.allocated (a)) STOP 1
+ if (lbound (a, 1) /= 7 .or. ubound (a, 1) /= 8) STOP 2
+ if (.not.allocated (a(7)%h)) STOP 3
+ if (allocated (a(8)%h)) STOP 4
+ if (lbound (a(7)%h, 1) /= 1 .or. ubound (a(7)%h, 1) /= 3) STOP 5
a(:)%g = a(:)%g + 2
a(7)%h = a(7)%h + 3
r = r + 1
!$omp end parallel
- if (.not.allocated (a)) call abort
- if (lbound (a, 1) /= 7 .or. ubound (a, 1) /= 8) call abort
- if (.not.allocated (a(7)%h)) call abort
- if (allocated (a(8)%h)) call abort
- if (lbound (a(7)%h, 1) /= 1 .or. ubound (a(7)%h, 1) /= 3) call abort
- if (any (a(:)%g /= 2 * r) .or. any (a(7)%h(:) /= 3 * r)) call abort
+ if (.not.allocated (a)) STOP 6
+ if (lbound (a, 1) /= 7 .or. ubound (a, 1) /= 8) STOP 7
+ if (.not.allocated (a(7)%h)) STOP 8
+ if (allocated (a(8)%h)) STOP 9
+ if (lbound (a(7)%h, 1) /= 1 .or. ubound (a(7)%h, 1) /= 3) STOP 10
+ if (any (a(:)%g /= 2 * r) .or. any (a(7)%h(:) /= 3 * r)) STOP 11
contains
subroutine foo (x, y)
type (dt), allocatable :: x(:), y(:)
- if (allocated (x) .neqv. allocated (y)) call abort
- if (lbound (x, 1) /= lbound (y, 1)) call abort
- if (ubound (x, 1) /= ubound (y, 1)) call abort
- if (allocated (x(7)%h) .neqv. allocated (y(7)%h)) call abort
- if (allocated (x(8)%h) .neqv. allocated (y(8)%h)) call abort
- if (lbound (x(7)%h, 1) /= lbound (y(7)%h, 1)) call abort
- if (ubound (x(7)%h, 1) /= ubound (y(7)%h, 1)) call abort
+ if (allocated (x) .neqv. allocated (y)) STOP 12
+ if (lbound (x, 1) /= lbound (y, 1)) STOP 13
+ if (ubound (x, 1) /= ubound (y, 1)) STOP 14
+ if (allocated (x(7)%h) .neqv. allocated (y(7)%h)) STOP 15
+ if (allocated (x(8)%h) .neqv. allocated (y(8)%h)) STOP 16
+ if (lbound (x(7)%h, 1) /= lbound (y(7)%h, 1)) STOP 17
+ if (ubound (x(7)%h, 1) /= ubound (y(7)%h, 1)) STOP 18
x(7)%g = 0
x(7)%h = 0
x(8)%g = 0
j = j.addthree.iand (i, -4)
d = d + dt(i)
end do
- if (d%x /= 5050 .or. j /= 4903) call abort
+ if (d%x /= 5050 .or. j /= 4903) STOP 1
end
do i = 1, 100
j = j + i
end do
- if (any(j .ne. 5050)) call abort
+ if (any(j .ne. 5050)) STOP 1
j = 3
!$omp parallel do reduction (bar : j)
do i = 1, 100
j = j + 4 * i
end do
- if (any(j .ne. (5050 * 4 + 3))) call abort
+ if (any(j .ne. (5050 * 4 + 3))) STOP 2
!$omp parallel do reduction (+ : d)
do i = 1, 100
- if (any(d%y .ne. 9)) call abort
+ if (any(d%y .ne. 9)) STOP 3
d%x = d%x + 8 * i
end do
- if (any(d%x .ne. (5050 * 8 + 7)) .or. any(d%y .ne. 9)) call abort
+ if (any(d%x .ne. (5050 * 8 + 7)) .or. any(d%y .ne. 9)) STOP 4
d = dt (5, 21)
!$omp parallel do reduction (foo : d)
do i = 1, 100
- if (any(d%y .ne. 21)) call abort
+ if (any(d%y .ne. 21)) STOP 5
d%x = d%x + 8 * i
end do
- if (any(d%x .ne. (5050 * 8 + 5)) .or. any(d%y .ne. 21)) call abort
+ if (any(d%x .ne. (5050 * 8 + 5)) .or. any(d%y .ne. 21)) STOP 6
end
& // char (ichar (f(2:2)) + mod (i, 3))
end do
do i = 1, 64
- if (index (c, char (ichar ('0') + i)) .eq. 0) call abort
- if (index (d, char (ichar ('0') + i)) .eq. 0) call abort
+ if (index (c, char (ichar ('0') + i)) .eq. 0) STOP 1
+ if (index (d, char (ichar ('0') + i)) .eq. 0) STOP 2
end do
- if (e.ne.char (ichar ('0') + 64)) call abort
- if (f(1:1).ne.char (ichar ('0') + 32)) call abort
- if (f(2:2).ne.char (ichar ('0') + 64)) call abort
+ if (e.ne.char (ichar ('0') + 64)) STOP 3
+ if (f(1:1).ne.char (ichar ('0') + 32)) STOP 4
+ if (f(2:2).ne.char (ichar ('0') + 64)) STOP 5
end
& // char (ichar (f(:,:)(2:2)) + mod (i, 3))
end do
do i = 1, 64
- if (any (index (c, char (ichar ('0') + i)) .eq. 0)) call abort
- if (any (index (d, char (ichar ('0') + i)) .eq. 0)) call abort
+ if (any (index (c, char (ichar ('0') + i)) .eq. 0)) STOP 1
+ if (any (index (d, char (ichar ('0') + i)) .eq. 0)) STOP 2
end do
- if (any (e.ne.char (ichar ('0') + 64))) call abort
- if (any (f(:,:)(1:1).ne.char (ichar ('0') + 32))) call abort
- if (any (f(:,:)(2:2).ne.char (ichar ('0') + 64))) call abort
+ if (any (e.ne.char (ichar ('0') + 64))) STOP 3
+ if (any (f(:,:)(1:1).ne.char (ichar ('0') + 32))) STOP 4
+ if (any (f(:,:)(2:2).ne.char (ichar ('0') + 64))) STOP 5
end
elemental function fn (x, y)
character (len=64), intent (in) :: x, y
r4 = r4 + 1.0
call dp_add (dp, 1.0d0)
!$omp end parallel
- if (xdt%r .ne. r) call abort
- if (i4.ne.r.or.i8.ne.r.or.r4.ne.r.or.dp.ne.r) call abort
+ if (xdt%r .ne. r) STOP 1
+ if (i4.ne.r.or.i8.ne.r.or.r4.ne.r.or.dp.ne.r) STOP 2
end program udr5
call dp_add (dp(i), 1.0d0)
end do
!$omp end parallel
- if (any (xdt%r .ne. r)) call abort
- if (any (i4.ne.r).or.any(i8.ne.r)) call abort
- if (any(r4.ne.r).or.any(dp.ne.r)) call abort
+ if (any (xdt%r .ne. r)) STOP 1
+ if (any (i4.ne.r).or.any(i8.ne.r)) STOP 2
+ if (any(r4.ne.r).or.any(dp.ne.r)) STOP 3
deallocate (xdt, i4, i8, r4, dp)
end program udr6
do i = 1, 64
x = x + i
end do
- if (any (x /= 2080.0)) call abort
+ if (any (x /= 2080.0)) STOP 1
contains
elemental subroutine omp_out (x, y)
real, intent (out) :: x
j = j.add.iand (i, -4)
d = d + dt(i)
end do
- if (d%x /= 5050 .or. j /= 4903) call abort
+ if (d%x /= 5050 .or. j /= 4903) STOP 1
end
end subroutine
subroutine initializer1 (x, y)
integer :: x, y
- if (y .ne. 3) call abort
+ if (y .ne. 3) STOP 1
x = y
end subroutine
end module udr9m1
j = j.add.iand (i, -4)
d = d + dt(i)
end do
- if (d%x /= 5050 .or. j /= 4903) call abort
+ if (d%x /= 5050 .or. j /= 4903) STOP 2
end
call check (size (k, 3), 3, l)
call check (size (k), 15, l)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine foo
subroutine test
call check (size (k, 3), 3, l)
call check (size (k), 15, l)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine foo
subroutine test
call check (size (k, 3), 3, l)
call check (size (k), 15, l)
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine foo
subroutine test
call check (size (k), 15, l)
110 continue
!$omp end parallel do
- if (l) call abort
+ if (l) STOP 1
if (z2 == 6) then
x = 5
w = 'thread5thr_number_5THREAD5THR_NUMBER_5'
do 115, q = 4, 6
l = l .or. k(p, 1, q - 3) .ne. 19 + x + p + 7 + 3 * q
115 continue
- if (l) call abort
+ if (l) STOP 2
end if
end subroutine foo
call check (size (k), 15, l)
110 continue
!$omp end parallel do
- if (l) call abort
+ if (l) STOP 1
if (z2 == 6) then
x = 5
w = 'thread5thr_number_5THREAD5THR_NUMBER_5'
do 115, q = 4, 6
l = l .or. k(p, 1, q - 3) .ne. 19 + x + p + 7 + 3 * q
115 continue
- if (l) call abort
+ if (l) STOP 2
end if
end subroutine foo
l = l .or. k(p, 1, q - 3) .ne. 19 + x + p + 7 + 3 * q
115 continue
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine foo
subroutine test
character (6) :: c, f2
character (6) :: d(2)
c = f1 (6)
- if (c .ne. 'opqrst') call abort
+ if (c .ne. 'opqrst') STOP 1
c = f2 (6)
- if (c .ne. '_/!!/_') call abort
+ if (c .ne. '_/!!/_') STOP 2
d = f3 (6)
- if (d(1) .ne. 'opqrst' .or. d(2) .ne. 'a') call abort
+ if (d(1) .ne. 'opqrst' .or. d(2) .ne. 'a') STOP 3
d = f4 (6)
- if (d(1) .ne. 'Opqrst' .or. d(2) .ne. 'A') call abort
+ if (d(1) .ne. 'Opqrst' .or. d(2) .ne. 'A') STOP 4
contains
function f1 (n)
use omp_lib
!$omp barrier
l = l .or. f1 .ne. 'def'
!$omp end parallel
- if (l) call abort
+ if (l) STOP 5
f1 = 'opqrst'
end function f1
function f3 (n)
!$omp barrier
l = l .or. any (f3 .ne. 'def')
!$omp end parallel
- if (l) call abort
+ if (l) STOP 6
f3(1) = 'opqrst'
f3(2) = 'a'
end function f3
l = l .or. any (f4 .ne. 'def')
l = l .or. size (f4) .ne. 2
!$omp end parallel
- if (l) call abort
+ if (l) STOP 7
f4(1) = 'Opqrst'
f4(2) = 'A'
end function f4
!$omp barrier
l = l .or. f2 .ne. 'def'
!$omp end parallel
- if (l) call abort
+ if (l) STOP 8
f2 = '_/!!/_'
end function f2
l = l .or. k(p, 1, q - 3) .ne. 19 + x + p + 7 + 3 * q
125 continue
!$omp end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine foo
subroutine test
b = 20
a(1:5) = max (a(1:5), b(1:5))
!$omp end parallel workshare
- if (any (a(1:5) .ne. 20)) call abort
- if (any (a(6:10) .ne. 10)) call abort
- if (.not. foo_seen .or. .not. bar_seen) call abort
+ if (any (a(1:5) .ne. 20)) STOP 1
+ if (any (a(6:10) .ne. 10)) STOP 2
+ if (.not. foo_seen .or. .not. bar_seen) STOP 3
end
!$omp parallel workshare
a(:,:) = 17
!$omp end parallel workshare
- if (any (a.ne.17)) call abort
+ if (any (a.ne.17)) STOP 1
end subroutine f1
subroutine f2
integer a(20:50,70:90),d(15),e(15),f(15)
f = 7
where (e.ge.5) f = f + 1
!$omp end parallel workshare
- if (any (a.ne.17)) call abort
- if (c.ne.5.or.b.ne.4) call abort
- if (any(d.ne.0)) call abort
+ if (any (a.ne.17)) STOP 2
+ if (c.ne.5.or.b.ne.4) STOP 3
+ if (any(d.ne.0)) STOP 4
do i = 1, 15
if (e(i).ge.5) then
- if (f(i).ne.8) call abort
+ if (f(i).ne.8) STOP 5
else
- if (f(i).ne.7) call abort
+ if (f(i).ne.7) STOP 6
end if
end do
end subroutine f2
print *, "CheCKpOInT"
!$acc parallel
- call abort
+ STOP 1
!$acc end parallel
end program main
!$acc parallel copyin(argc)
if (argc .ne. 0) then
- call abort
+ STOP 1
end if
!$acc end parallel
! Host.
-if (.not. acc_on_device (acc_device_none)) call abort
-if (.not. acc_on_device (acc_device_host)) call abort
-if (acc_on_device (acc_device_not_host)) call abort
-if (acc_on_device (acc_device_nvidia)) call abort
+if (.not. acc_on_device (acc_device_none)) STOP 1
+if (.not. acc_on_device (acc_device_host)) STOP 2
+if (acc_on_device (acc_device_not_host)) STOP 3
+if (acc_on_device (acc_device_nvidia)) STOP 4
! Host via offloading fallback mode.
!$acc parallel if(.false.)
-if (.not. acc_on_device (acc_device_none)) call abort
-if (.not. acc_on_device (acc_device_host)) call abort
-if (acc_on_device (acc_device_not_host)) call abort
-if (acc_on_device (acc_device_nvidia)) call abort
+if (.not. acc_on_device (acc_device_none)) STOP 5
+if (.not. acc_on_device (acc_device_host)) STOP 6
+if (acc_on_device (acc_device_not_host)) STOP 7
+if (acc_on_device (acc_device_nvidia)) STOP 8
!$acc end parallel
! Offloaded.
!$acc parallel
-if (acc_on_device (acc_device_none)) call abort
-if (acc_on_device (acc_device_host)) call abort
-if (.not. acc_on_device (acc_device_not_host)) call abort
+if (acc_on_device (acc_device_none)) STOP 9
+if (acc_on_device (acc_device_host)) STOP 10
+if (.not. acc_on_device (acc_device_not_host)) STOP 11
#if ACC_DEVICE_TYPE_nvidia
-if (.not. acc_on_device (acc_device_nvidia)) call abort
+if (.not. acc_on_device (acc_device_nvidia)) STOP 12
#else
-if (acc_on_device (acc_device_nvidia)) call abort
+if (acc_on_device (acc_device_nvidia)) STOP 13
#endif
!$acc end parallel
!Host.
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) STOP 1
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) STOP 2
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) STOP 3
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 4
!Host via offloading fallback mode.
!$ACC PARALLEL IF(.FALSE.)
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) STOP 5
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) STOP 6
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) STOP 7
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 8
!$ACC END PARALLEL
! Offloaded.
!$ACC PARALLEL
- IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) STOP 9
+ IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) STOP 10
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) STOP 11
#if ACC_DEVICE_TYPE_nvidia
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 12
#else
- IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 13
#endif
!$ACC END PARALLEL
!Host.
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) STOP 1
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) STOP 2
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) STOP 3
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 4
!Host via offloading fallback mode.
!$ACC PARALLEL IF(.FALSE.)
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) STOP 5
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) STOP 6
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) STOP 7
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 8
!$ACC END PARALLEL
! Offloaded.
!$ACC PARALLEL
- IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT
- IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) STOP 9
+ IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) STOP 10
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) STOP 11
#if ACC_DEVICE_TYPE_nvidia
- IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 12
#else
- IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT
+ IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) STOP 13
#endif
!$ACC END PARALLEL
!$acc end data
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
+ if (b(i) .ne. 3.0) STOP 2
end do
a(:) = 2.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 2.0) call abort
+ if (a(i) .ne. 2.0) STOP 3
+ if (b(i) .ne. 2.0) STOP 4
end do
a(:) = 3.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 9.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
+ if (a(i) .ne. 3.0) STOP 5
+ if (b(i) .ne. 9.0) STOP 6
+ if (c(i) .ne. 4.0) STOP 7
+ if (d(i) .ne. 1.0) STOP 8
end do
a(:) = 2.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 4.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
- if (e(i) .ne. 11.0) call abort
+ if (a(i) .ne. 2.0) STOP 9
+ if (b(i) .ne. 4.0) STOP 10
+ if (c(i) .ne. 4.0) STOP 11
+ if (d(i) .ne. 1.0) STOP 12
+ if (e(i) .ne. 11.0) STOP 13
end do
a(:) = 3.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 14
+ if (b(i) .ne. 3.0) STOP 15
end do
a(:) = 2.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 2.0) call abort
+ if (a(i) .ne. 2.0) STOP 16
+ if (b(i) .ne. 2.0) STOP 17
end do
a(:) = 3.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 9.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
+ if (a(i) .ne. 3.0) STOP 18
+ if (b(i) .ne. 9.0) STOP 19
+ if (c(i) .ne. 4.0) STOP 20
+ if (d(i) .ne. 1.0) STOP 21
end do
a(:) = 2.0
!$acc end data
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 4.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
- if (e(i) .ne. 11.0) call abort
+ if (a(i) .ne. 2.0) STOP 22
+ if (b(i) .ne. 4.0) STOP 23
+ if (c(i) .ne. 4.0) STOP 24
+ if (d(i) .ne. 1.0) STOP 25
+ if (e(i) .ne. 11.0) STOP 26
end do
end program asyncwait
!$acc end parallel
do i = 1, N
- if (c(i) .ne. 2.0) call abort
+ if (c(i) .ne. 2.0) STOP 1
end do
!$acc kernels async (0)
!$acc end kernels
do i = 1, N
- if (c(i) .ne. 2.0) call abort
+ if (c(i) .ne. 2.0) STOP 2
end do
deallocate (a)
!$acc end parallel
do i = 1, N
- if (c(i) .ne. 2.0) call abort
+ if (c(i) .ne. 2.0) STOP 1
end do
!$acc kernels async (0)
!$acc end kernels
do i = 1, N
- if (c(i) .ne. 2.0) call abort
+ if (c(i) .ne. 2.0) STOP 2
end do
deallocate (a)
end do
!$acc end parallel
- if (igot /= iexp) call abort
- if (itmp /= iexp - 2) call abort
+ if (igot /= iexp) STOP 1
+ if (itmp /= iexp - 2) STOP 2
fgot = 1234.0
fexp = 1266.0
end do
!$acc end parallel loop
- if (ftmp /= fexp - 1.0) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp - 1.0) STOP 3
+ if (fgot /= fexp) STOP 4
fgot = 1.0
fexp = 2.0**32
end do
!$acc end parallel loop
- if (ftmp /= fexp / 2.0) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp / 2.0) STOP 5
+ if (fgot /= fexp) STOP 6
fgot = 32.0
fexp = fgot - N
end do
!$acc end parallel loop
- if (ftmp /= fexp + 1.0) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp + 1.0) STOP 7
+ if (fgot /= fexp) STOP 8
fgot = 2**32.0
fexp = 1.0
end do
!$acc end parallel loop
- if (ftmp /= fgot * 2.0) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fgot * 2.0) STOP 9
+ if (fgot /= fexp) STOP 10
lgot = .TRUE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. .not. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. .not. lexp) STOP 11
+ if (lgot .neqv. lexp) STOP 12
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 13
+ if (lgot .neqv. lexp) STOP 14
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 15
+ if (lgot .neqv. lexp) STOP 16
lgot = .FALSE.
lexp = .TRUE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. .not. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. .not. lexp) STOP 17
+ if (lgot .neqv. lexp) STOP 18
fgot = 1234.0
fexp = 1266.0
end do
!$acc end parallel loop
- if (ftmp /= fexp - 1.0) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp - 1.0) STOP 19
+ if (fgot /= fexp) STOP 20
fgot = 1.0
fexp = 2.0**32
end do
!$acc end parallel loop
- if (ftmp /= fexp / 2.0) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp / 2.0) STOP 21
+ if (fgot /= fexp) STOP 22
fgot = 32.0
fexp = 32.0
end do
!$acc end parallel loop
- if (ftmp /= 2.0 - fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= 2.0 - fexp) STOP 23
+ if (fgot /= fexp) STOP 24
fgot = 2.0**16
fexp = 2.0**16
end do
!$acc end parallel loop
- if (ftmp /= 2.0 / fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= 2.0 / fexp) STOP 25
+ if (fgot /= fexp) STOP 26
lgot = .TRUE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. .not. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. .not. lexp) STOP 27
+ if (lgot .neqv. lexp) STOP 28
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 29
+ if (lgot .neqv. lexp) STOP 30
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 31
+ if (lgot .neqv. lexp) STOP 32
lgot = .FALSE.
lexp = .TRUE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. .not. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. .not. lexp) STOP 33
+ if (lgot .neqv. lexp) STOP 34
igot = 1
iexp = N
end do
!$acc end parallel loop
- if (itmp /= iexp - 1) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp - 1) STOP 35
+ if (igot /= iexp) STOP 36
igot = N
iexp = 1
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 37
+ if (igot /= iexp) STOP 38
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= ibset (iexp, N - 1)) call abort
- if (igot /= iexp) call abort
+ if (itmp /= ibset (iexp, N - 1)) STOP 39
+ if (igot /= iexp) STOP 40
igot = 0
iexp = -1
end do
!$acc end parallel loop
- if (itmp /= ieor (iexp, lshift (1, N - 1))) call abort
- if (igot /= iexp) call abort
+ if (itmp /= ieor (iexp, lshift (1, N - 1))) STOP 41
+ if (igot /= iexp) STOP 42
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= ior (iexp, lshift (1, N - 1))) call abort
- if (igot /= iexp) call abort
+ if (itmp /= ior (iexp, lshift (1, N - 1))) STOP 43
+ if (igot /= iexp) STOP 44
igot = 1
iexp = N
end do
!$acc end parallel loop
- if (itmp /= iexp - 1) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp - 1) STOP 45
+ if (igot /= iexp) STOP 46
igot = N
iexp = 1
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 47
+ if (igot /= iexp) STOP 48
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= ibset (iexp, N - 1)) call abort
- if (igot /= iexp) call abort
+ if (itmp /= ibset (iexp, N - 1)) STOP 49
+ if (igot /= iexp) STOP 50
igot = 0
iexp = -1
end do
!$acc end parallel loop
- if (itmp /= ieor (iexp, lshift (1, N - 1))) call abort
- if (igot /= iexp) call abort
+ if (itmp /= ieor (iexp, lshift (1, N - 1))) STOP 51
+ if (igot /= iexp) STOP 52
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= ior (iexp, lshift (1, N - 1))) call abort
- if (igot /= iexp) call abort
+ if (itmp /= ior (iexp, lshift (1, N - 1))) STOP 53
+ if (igot /= iexp) STOP 54
fgot = 1234.0
fexp = 1266.0
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 55
+ if (fgot /= fexp) STOP 56
fgot = 1.0
fexp = 2.0**32
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 57
+ if (fgot /= fexp) STOP 58
fgot = 32.0
fexp = fgot - N
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 59
+ if (fgot /= fexp) STOP 60
fgot = 2**32.0
fexp = 1.0
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 61
+ if (fgot /= fexp) STOP 62
lgot = .TRUE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 63
+ if (lgot .neqv. lexp) STOP 64
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 65
+ if (lgot .neqv. lexp) STOP 66
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 67
+ if (lgot .neqv. lexp) STOP 68
lgot = .FALSE.
lexp = .TRUE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 69
+ if (lgot .neqv. lexp) STOP 70
fgot = 1234.0
fexp = 1266.0
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 71
+ if (fgot /= fexp) STOP 72
fgot = 1.0
fexp = 2.0**32
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 73
+ if (fgot /= fexp) STOP 74
fgot = 32.0
fexp = 32.0
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 75
+ if (fgot /= fexp) STOP 76
fgot = 2.0**16
fexp = 2.0**16
end do
!$acc end parallel loop
- if (ftmp /= fexp) call abort
- if (fgot /= fexp) call abort
+ if (ftmp /= fexp) STOP 77
+ if (fgot /= fexp) STOP 78
lgot = .TRUE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 79
+ if (lgot .neqv. lexp) STOP 80
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 81
+ if (lgot .neqv. lexp) STOP 82
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 83
+ if (lgot .neqv. lexp) STOP 84
lgot = .FALSE.
lexp = .TRUE.
!$acc end atomic
!$acc end parallel
- if (ltmp .neqv. lexp) call abort
- if (lgot .neqv. lexp) call abort
+ if (ltmp .neqv. lexp) STOP 85
+ if (lgot .neqv. lexp) STOP 86
igot = 1
iexp = N
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 87
+ if (igot /= iexp) STOP 88
igot = N
iexp = 1
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 89
+ if (igot /= iexp) STOP 90
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 91
+ if (igot /= iexp) STOP 92
igot = 0
iexp = -1
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 93
+ if (igot /= iexp) STOP 94
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 95
+ if (igot /= iexp) STOP 96
igot = 1
iexp = N
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 97
+ if (igot /= iexp) STOP 98
igot = N
iexp = 1
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 99
+ if (igot /= iexp) STOP 100
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 101
+ if (igot /= iexp) STOP 102
igot = 0
iexp = -1
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 103
+ if (igot /= iexp) STOP 104
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (itmp /= iexp) call abort
- if (igot /= iexp) call abort
+ if (itmp /= iexp) STOP 105
+ if (igot /= iexp) STOP 106
end program
!$acc end parallel
- if (v1 .ne. 99) call abort
+ if (v1 .ne. 99) STOP 1
- if (v2 .ne. 32) call abort
+ if (v2 .ne. 32) STOP 2
end program main
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 1
fgot = 1.0
fexp = 2.0**32
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 2
fgot = 32.0
fexp = fgot - N
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 3
fgot = 2**32.0
fexp = 1.0
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 4
lgot = .TRUE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 5
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 6
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 7
lgot = .FALSE.
lexp = .TRUE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 8
fgot = 1234.0
fexp = 1266.0
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 9
fgot = 1.0
fexp = 2.0**32
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 10
fgot = 32.0
fexp = 32.0
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 11
fgot = 2.0**16
fexp = 2.0**16
end do
!$acc end parallel loop
- if (fgot /= fexp) call abort
+ if (fgot /= fexp) STOP 12
lgot = .TRUE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 13
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 14
lgot = .FALSE.
lexp = .FALSE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 15
lgot = .FALSE.
lexp = .TRUE.
!$acc end atomic
!$acc end parallel
- if (lgot .neqv. lexp) call abort
+ if (lgot .neqv. lexp) STOP 16
igot = 1
iexp = N
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 17
igot = N
iexp = 1
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 18
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 19
igot = 0
iexp = -1
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 20
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 21
igot = 1
iexp = N
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 22
igot = N
iexp = 1
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 23
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 24
igot = 0
iexp = -1
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 25
igot = -1
iexp = 0
end do
!$acc end parallel loop
- if (igot /= iexp) call abort
+ if (igot /= iexp) STOP 26
end program
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 3.0) call abort
+ if (b(i) .ne. 3.0) STOP 1
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 2
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 3
a(:) = 5.0
b(:) = 1.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 5.0) call abort
+ if (b(i) .ne. 5.0) STOP 4
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 5
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 6
a(:) = 6.0
b(:) = 0.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 6.0) call abort
+ if (b(i) .ne. 6.0) STOP 7
end do
call acc_copyout (a, sizeof (a))
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 8
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 9
a(:) = 6.0
b(:) = 0.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 6.0) call abort
+ if (b(i) .ne. 6.0) STOP 10
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 11
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 12
a(:) = 5.0
b(:) = 2.0
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 2.0) call abort
+ if (a(i) .ne. 5.0) STOP 13
+ if (b(i) .ne. 2.0) STOP 14
end do
call acc_copyout (b, sizeof (b))
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 15
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 16
a(:) = 3.0;
b(:) = 4.0;
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 4.0) call abort
- if (b(i) .ne. 6.0) call abort
+ if (a(i) .ne. 4.0) STOP 17
+ if (b(i) .ne. 6.0) STOP 18
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 19
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 20
a(:) = 4.0
b(:) = 7.0
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 9.0) call abort
+ if (a(i) .ne. 5.0) STOP 21
+ if (b(i) .ne. 9.0) STOP 22
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 23
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 24
a(:) = 3.0
b(:) = 7.0
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 7.0) call abort
+ if (a(i) .ne. 3.0) STOP 25
+ if (b(i) .ne. 7.0) STOP 26
end do
call acc_copyout (a, sizeof (a))
call acc_copyout (b, sizeof (b))
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 27
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 28
a(:) = 3.0
b(:) = 7.0
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 29
+ if (b(i) .ne. 3.0) STOP 30
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
- if (acc_is_present (c) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 31
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 32
+ if (acc_is_present (c) .eqv. .TRUE.) STOP 33
a(:) = 4.0
b(:) = 8.0
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 4.0) call abort
- if (b(i) .ne. 4.0) call abort
+ if (a(i) .ne. 4.0) STOP 34
+ if (b(i) .ne. 4.0) STOP 35
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
- if (acc_is_present (c) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 36
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 37
+ if (acc_is_present (c) .eqv. .TRUE.) STOP 38
a(:) = 4.0
call acc_copyout (c, sizeof (c))
do i = 1, N
- if (a(i) .ne. 4.0) call abort
- if (b(i) .ne. 4.0) call abort
+ if (a(i) .ne. 4.0) STOP 39
+ if (b(i) .ne. 4.0) STOP 40
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
- if (acc_is_present (c) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 41
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 42
+ if (acc_is_present (c) .eqv. .TRUE.) STOP 43
a(:) = 6.0
b(:) = 0.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 6.0) call abort
+ if (b(i) .ne. 6.0) STOP 44
end do
call acc_copyout (a, sizeof (a))
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 45
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 46
a(:) = 6.0
b(:) = 0.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 6.0) call abort
+ if (b(i) .ne. 6.0) STOP 47
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 48
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 49
a(:) = 5.0
b(:) = 7.0
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 5.0) call abort
+ if (a(i) .ne. 5.0) STOP 50
+ if (b(i) .ne. 5.0) STOP 51
end do
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
- if (acc_is_present (c) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 52
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 53
+ if (acc_is_present (c) .eqv. .TRUE.) STOP 54
end program main
end do
end do
!$acc end parallel
- if (l) call abort
+ if (l) STOP 1
end program collapse1
end do
end do firstdo
!$acc end parallel
- if (l) call abort
+ if (l) STOP 1
end program collapse2
enddo dokk
115 continue
!$acc end parallel
- if (any(a(1:3,1:3,1:3).ne.1)) call abort
+ if (any(a(1:3,1:3,1:3).ne.1)) STOP 1
!$acc parallel
!$acc loop collapse(3)
enddo doll
120 end do dol
!$acc end parallel
- if (any(a(1:3,1:3,1:3).ne.2)) call abort
+ if (any(a(1:3,1:3,1:3).ne.2)) STOP 2
end program collapse3
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 1
do i = 2, 6
do j = -2, 4
do k = 13, 18
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 2
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 1
do i = v1, v2
do j = v3, v4
do k = v5, v6
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 2
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 1
do i = v1, v2, v7
do j = v3, v4, v8
do k = v5, v6, v9
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 2
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 1
do i = 1, 7
do j = -3, 5
do k = 12, 19
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 2
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 1
do i = v1, v2
do j = v3, v4
do k = v5, v6
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 2
end do
end do
end do
end do
do i = 1, n
- if (a(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
- if (b(i) .ne. 2.0) call abort
+ if (b(i) .ne. 2.0) STOP 2
end do
!$acc kernels loop copy (a(1:n)) copy (b(1:n))
end do
do i = 1, n
- if (a(i) .ne. 6.0) call abort
+ if (a(i) .ne. 6.0) STOP 3
- if (b(i) .ne. 3.0) call abort
+ if (b(i) .ne. 3.0) STOP 4
end do
end program main
end do
!$acc end parallel loop
- if (var .ne. n) call abort
+ if (var .ne. n) STOP 1
end program test
!$acc exit data copyout (a(1:N), b(1:N))
do i = 1, n
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
+ if (b(i) .ne. 3.0) STOP 2
end do
a(:) = 5.0
!$acc exit data copyout (a(1:N), b(1:N))
do i = 1, n
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 5.0) call abort
+ if (a(i) .ne. 5.0) STOP 3
+ if (b(i) .ne. 5.0) STOP 4
end do
end program test
do i = 1, n
do j = 1, n
- if (a(j,i) .ne. 3.0) call abort
- if (b(j,i) .ne. 3.0) call abort
+ if (a(j,i) .ne. 3.0) STOP 1
+ if (b(j,i) .ne. 3.0) STOP 2
end do
end do
end program test
!$acc exit data copyout (a(1:N)) copyout (b(1:N))
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
+ if (b(i) .ne. 3.0) STOP 2
end do
a(:) = 2.0
!$acc exit data copyout (a(1:N)) copyout (b(1:N))
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 2.0) call abort
+ if (a(i) .ne. 2.0) STOP 3
+ if (b(i) .ne. 2.0) STOP 4
end do
a(:) = 3.0
!$acc exit data copyout (a(1:N)) copyout (b(1:N)) copyout (c(1:N)) copyout (d(1:N))
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 9.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
+ if (a(i) .ne. 3.0) STOP 5
+ if (b(i) .ne. 9.0) STOP 6
+ if (c(i) .ne. 4.0) STOP 7
+ if (d(i) .ne. 1.0) STOP 8
end do
a(:) = 2.0
!$acc exit data delete (N)
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 4.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
- if (e(i) .ne. 11.0) call abort
+ if (a(i) .ne. 2.0) STOP 9
+ if (b(i) .ne. 4.0) STOP 10
+ if (c(i) .ne. 4.0) STOP 11
+ if (d(i) .ne. 1.0) STOP 12
+ if (e(i) .ne. 11.0) STOP 13
end do
end program asyncwait
!$acc wait
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
+ if (b(i) .ne. 3.0) STOP 2
end do
a(:) = 2.0
!$acc wait (1)
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 2.0) call abort
+ if (a(i) .ne. 2.0) STOP 3
+ if (b(i) .ne. 2.0) STOP 4
end do
a(:) = 3.0
!$acc wait (1)
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 9.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
+ if (a(i) .ne. 3.0) STOP 5
+ if (b(i) .ne. 9.0) STOP 6
+ if (c(i) .ne. 4.0) STOP 7
+ if (d(i) .ne. 1.0) STOP 8
end do
a(:) = 2.0
!$acc exit data delete (N, a(1:N), b(1:N), c(1:N), d(1:N), e(1:N))
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 4.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
- if (e(i) .ne. 11.0) call abort
+ if (a(i) .ne. 2.0) STOP 9
+ if (b(i) .ne. 4.0) STOP 10
+ if (c(i) .ne. 4.0) STOP 11
+ if (d(i) .ne. 1.0) STOP 12
+ if (e(i) .ne. 11.0) STOP 13
end do
end program asyncwait
!$acc wait
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
+ if (b(i) .ne. 3.0) STOP 2
end do
a(:) = 2.0
!$acc wait (1)
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 2.0) call abort
+ if (a(i) .ne. 2.0) STOP 3
+ if (b(i) .ne. 2.0) STOP 4
end do
a(:) = 3.0
!$acc wait (1)
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 9.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
+ if (a(i) .ne. 3.0) STOP 5
+ if (b(i) .ne. 9.0) STOP 6
+ if (c(i) .ne. 4.0) STOP 7
+ if (d(i) .ne. 1.0) STOP 8
end do
a(:) = 2.0
!$acc exit data delete (N, a(1:N), b(1:N), c(1:N), d(1:N), e(1:N))
do i = 1, N
- if (a(i) .ne. 2.0) call abort
- if (b(i) .ne. 4.0) call abort
- if (c(i) .ne. 4.0) call abort
- if (d(i) .ne. 1.0) call abort
- if (e(i) .ne. 11.0) call abort
+ if (a(i) .ne. 2.0) STOP 9
+ if (b(i) .ne. 4.0) STOP 10
+ if (c(i) .ne. 4.0) STOP 11
+ if (d(i) .ne. 1.0) STOP 12
+ if (e(i) .ne. 11.0) STOP 13
end do
end program asyncwait
integer, parameter :: N = 8
integer :: a(N)
- if (acc_is_present (a) .neqv. e) call abort
+ if (acc_is_present (a) .neqv. e) STOP 1
end subroutine
call test (c, .false.)
do i = 1, N
- if (c(i) .ne. 8) call abort
+ if (c(i) .ne. 8) STOP 2
end do
call subr3 (a, c)
call test (c, .false.)
do i = 1, N
- if (a(i) .ne. 2) call abort
- if (c(i) .ne. 8) call abort
+ if (a(i) .ne. 2) STOP 3
+ if (c(i) .ne. 8) STOP 4
end do
call subr4 (a, b)
call test (c, .false.)
do i = 1, N
- if (b(i) .ne. 8) call abort
+ if (b(i) .ne. 8) STOP 5
end do
call subr5 (a, b, c, d)
call test (d, .false.)
do i = 1, N
- if (c(i) .ne. 8) call abort
- if (d(i) .ne. 13) call abort
+ if (c(i) .ne. 8) STOP 6
+ if (d(i) .ne. 13) STOP 7
end do
end subroutine
c(:) = 4
d(:) = 5
- if (acc_is_present (z) .neqv. .true.) call abort
+ if (acc_is_present (z) .neqv. .true.) STOP 8
call subr0 (a, b, c, d)
call test (d, .false.)
do i = 1, N
- if (a(i) .ne. 8) call abort
- if (b(i) .ne. 8) call abort
- if (c(i) .ne. 8) call abort
- if (d(i) .ne. 13) call abort
+ if (a(i) .ne. 8) STOP 9
+ if (b(i) .ne. 8) STOP 10
+ if (c(i) .ne. 8) STOP 11
+ if (d(i) .ne. 13) STOP 12
end do
end program
use openacc
implicit none
- if (acc_is_present (a) .neqv. .true.) call abort
+ if (acc_is_present (a) .neqv. .true.) STOP 1
end program test
real c
!$acc declare link (c)
- if (acc_is_present (b) .neqv. .false.) call abort
- if (acc_is_present (c) .neqv. .false.) call abort
+ if (acc_is_present (b) .neqv. .false.) STOP 1
+ if (acc_is_present (c) .neqv. .false.) STOP 2
a = 0.0
b = 1.0
a = b
!$acc end parallel
- if (a .ne. 5.0) call abort
+ if (a .ne. 5.0) STOP 3
- if (acc_is_present (b) .neqv. .false.) call abort
+ if (acc_is_present (b) .neqv. .false.) STOP 4
a = 0.0
a = b
!$acc end parallel
- if (a .ne. 4.0) call abort
+ if (a .ne. 4.0) STOP 5
- if (acc_is_present (b) .neqv. .false.) call abort
+ if (acc_is_present (b) .neqv. .false.) STOP 6
a = 0.0
a = b
!$acc end parallel
- if (a .ne. 4.0) call abort
- if (b .ne. 4.0) call abort
+ if (a .ne. 4.0) STOP 7
+ if (b .ne. 4.0) STOP 8
- if (acc_is_present (b) .neqv. .false.) call abort
+ if (acc_is_present (b) .neqv. .false.) STOP 9
a = 0.0
a = c
!$acc end parallel
- if (a .ne. 4.0) call abort
+ if (a .ne. 4.0) STOP 10
- if (acc_is_present (b) .neqv. .false.) call abort
+ if (acc_is_present (b) .neqv. .false.) STOP 11
end program test
implicit none
real a
- if (acc_is_present (b) .neqv. .true.) call abort
+ if (acc_is_present (b) .neqv. .true.) STOP 1
a = 2.0
a = a + b
!$acc end parallel
- if (acc_is_present (b) .neqv. .true.) call abort
+ if (acc_is_present (b) .neqv. .true.) STOP 2
- if (a .ne. 3.0) call abort
+ if (a .ne. 3.0) STOP 3
end program test
implicit none
real a
- if (acc_is_present (b) .neqv. .true.) call abort
+ if (acc_is_present (b) .neqv. .true.) STOP 1
a = 2.0
a = a + b
!$acc end parallel
- if (acc_is_present (b) .neqv. .true.) call abort
+ if (acc_is_present (b) .neqv. .true.) STOP 2
- if (a .ne. 3.0) call abort
+ if (a .ne. 3.0) STOP 3
end program test
a = a + b
!$acc end parallel
- if (a .ne. 3.0) call abort
+ if (a .ne. 3.0) STOP 1
!$acc kernels copy (a) create (b) default (none)
b = a
a = a + b
!$acc end kernels
- if (a .ne. 4.0) call abort
+ if (a .ne. 4.0) STOP 2
!$acc parallel default (none) copy (a) create (b)
b = a
a = a + b
!$acc end parallel
- if (a .ne. 5.0) call abort
+ if (a .ne. 5.0) STOP 3
!$acc parallel default (none) copy (a)
c = a
a = a + c
!$acc end parallel
- if (a .ne. 6.0) call abort
+ if (a .ne. 6.0) STOP 4
!$acc data copy (a)
!$acc parallel default (none)
!$acc end parallel
!$acc end data
- if (a .ne. 7.0) call abort
+ if (a .ne. 7.0) STOP 5
! The default (present) clause doesn't affect scalar variables; these will
! still get an implicit copy clause added.
a = a + c
!$acc end kernels
- if (a .ne. 8.0) call abort
+ if (a .ne. 8.0) STOP 6
end program main
!$acc end parallel
do i = 1, n
- if (b(i) .ne. i + a) call abort ()
+ if (b(i) .ne. i + a) STOP 1
end do
!$acc data copy (a)
!$acc end parallel
!$acc end data
- if (c .ne. 10) call abort ()
- if (d .ne. 5) call abort ()
+ if (c .ne. 10) STOP 2
+ if (d .ne. 5) STOP 3
end program firstprivate
integer i
do i = 1, n
- if (a(i) .ne. b(i) + sarg) call abort ()
+ if (a(i) .ne. b(i) + sarg) STOP 1
end do
end subroutine test
! Test how the pointers compare inside a host_data construct
#if ACC_MEM_SHARED
- if (.not. associated(ip, iph)) call abort
- if (.not. associated(parr, parrh)) call abort
+ if (.not. associated(ip, iph)) STOP 1
+ if (.not. associated(parr, parrh)) STOP 2
#else
- if (associated(ip, iph)) call abort
- if (associated(parr, parrh)) call abort
+ if (associated(ip, iph)) STOP 3
+ if (associated(parr, parrh)) STOP 4
#endif
!$acc end host_data
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 1
end do
a(:) = 16.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 17.0) call abort
+ if (b(i) .ne. 17.0) STOP 2
end do
a(:) = 8.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 3
end do
a(:) = 22.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 23.0) call abort
+ if (b(i) .ne. 23.0) STOP 4
end do
a(:) = 16.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 5
end do
a(:) = 76.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 77.0) call abort
+ if (b(i) .ne. 77.0) STOP 6
end do
a(:) = 22.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 7
end do
a(:) = 18.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 19.0) call abort
+ if (b(i) .ne. 19.0) STOP 8
end do
a(:) = 49.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 9
end do
a(:) = 38.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 39.0) call abort
+ if (b(i) .ne. 39.0) STOP 10
end do
a(:) = 91.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 92.0) call abort
+ if (b(i) .ne. 92.0) STOP 11
end do
a(:) = 43.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 12
end do
a(:) = 87.0
!$acc end parallel
do i = 1, N
- if (b(i) .ne. 88.0) call abort
+ if (b(i) .ne. 88.0) STOP 13
end do
a(:) = 3.0
!$acc update host (a(1:N), b(1:N)) if (1 == 1)
do i = 1, N
- if (a(i) .ne. exp) call abort
- if (b(i) .ne. exp2) call abort
+ if (a(i) .ne. exp) STOP 14
+ if (b(i) .ne. exp2) STOP 15
end do
a(:) = 6.0
!$acc update host (a(1:N), b(1:N)) if (1 == 1)
do i = 1, N
- if (a(i) .ne. exp) call abort
- if (b(i) .ne. exp2) call abort
+ if (a(i) .ne. exp) STOP 16
+ if (b(i) .ne. exp2) STOP 17
end do
a(:) = 26.0
!$acc update host (a(1:N), b(1:N)) if (0 == 1)
do i = 1, N
- if (a(i) .ne. 0.0) call abort
- if (b(i) .ne. 0.0) call abort
+ if (a(i) .ne. 0.0) STOP 18
+ if (b(i) .ne. 0.0) STOP 19
end do
#if !ACC_MEM_SHARED
!$acc end data
do i = 1, N
- if (b(i) .ne. 4.0) call abort
+ if (b(i) .ne. 4.0) STOP 20
end do
a(:) = 8.0
!$acc data copyin (a(1:N)) copyout (b(1:N)) if (0 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 21
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 22
#endif
!$acc end data
!$acc data copyin (a(1:N)) if (1 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (a) .eqv. .FALSE.) call abort
+ if (acc_is_present (a) .eqv. .FALSE.) STOP 23
#endif
!$acc data copyout (b(1:N)) if (0 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 24
#endif
!$acc data copyout (b(1:N)) if (1 == 1)
!$acc end data
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 25
#endif
!$acc end data
!$acc end data
do i = 1, N
- if (b(1) .ne. 18.0) call abort
+ if (b(1) .ne. 18.0) STOP 26
end do
!$acc enter data copyin (b(1:N)) if (0 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 27
#endif
!$acc exit data delete (b(1:N)) if (0 == 1)
!$acc enter data copyin (b(1:N)) if (1 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .FALSE.) call abort
+ if (acc_is_present (b) .eqv. .FALSE.) STOP 28
#endif
!$acc exit data delete (b(1:N)) if (1 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 29
#endif
!$acc enter data copyin (b(1:N)) if (zero == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 30
#endif
!$acc exit data delete (b(1:N)) if (zero == 1)
!$acc enter data copyin (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .FALSE.) call abort
+ if (acc_is_present (b) .eqv. .FALSE.) STOP 31
#endif
!$acc exit data delete (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 32
#endif
!$acc enter data copyin (b(1:N)) if (one == 0)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 33
#endif
!$acc exit data delete (b(1:N)) if (one == 0)
!$acc enter data copyin (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .FALSE.) call abort
+ if (acc_is_present (b) .eqv. .FALSE.) STOP 34
#endif
!$acc exit data delete (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 35
#endif
a(:) = 4.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 36
end do
a(:) = 16.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 17.0) call abort
+ if (b(i) .ne. 17.0) STOP 37
end do
a(:) = 8.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 38
end do
a(:) = 22.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 23.0) call abort
+ if (b(i) .ne. 23.0) STOP 39
end do
a(:) = 16.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 40
end do
a(:) = 76.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 77.0) call abort
+ if (b(i) .ne. 77.0) STOP 41
end do
a(:) = 22.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 42
end do
a(:) = 18.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 19.0) call abort
+ if (b(i) .ne. 19.0) STOP 43
end do
a(:) = 49.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 44
end do
a(:) = 38.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 39.0) call abort
+ if (b(i) .ne. 39.0) STOP 45
end do
a(:) = 91.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 92.0) call abort
+ if (b(i) .ne. 92.0) STOP 46
end do
a(:) = 43.0
#endif
do i = 1, N
- if (b(i) .ne. exp) call abort
+ if (b(i) .ne. exp) STOP 47
end do
a(:) = 87.0
!$acc end kernels
do i = 1, N
- if (b(i) .ne. 88.0) call abort
+ if (b(i) .ne. 88.0) STOP 48
end do
a(:) = 3.0
!$acc update host (a(1:N), b(1:N)) if (1 == 1)
do i = 1, N
- if (a(i) .ne. exp) call abort
- if (b(i) .ne. exp2) call abort
+ if (a(i) .ne. exp) STOP 49
+ if (b(i) .ne. exp2) STOP 50
end do
a(:) = 6.0
!$acc update host (a(1:N), b(1:N)) if (1 == 1)
do i = 1, N
- if (a(i) .ne. exp) call abort
- if (b(i) .ne. exp2) call abort
+ if (a(i) .ne. exp) STOP 51
+ if (b(i) .ne. exp2) STOP 52
end do
a(:) = 26.0
!$acc update host (a(1:N), b(1:N)) if (0 == 1)
do i = 1, N
- if (a(i) .ne. 0.0) call abort
- if (b(i) .ne. 0.0) call abort
+ if (a(i) .ne. 0.0) STOP 53
+ if (b(i) .ne. 0.0) STOP 54
end do
#if !ACC_MEM_SHARED
!$acc end data
do i = 1, N
- if (b(i) .ne. 4.0) call abort
+ if (b(i) .ne. 4.0) STOP 55
end do
a(:) = 8.0
!$acc data copyin (a(1:N)) copyout (b(1:N)) if (0 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (a) .eqv. .TRUE.) call abort
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (a) .eqv. .TRUE.) STOP 56
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 57
#endif
!$acc end data
!$acc data copyin (a(1:N)) if (1 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (a) .eqv. .FALSE.) call abort
+ if (acc_is_present (a) .eqv. .FALSE.) STOP 58
#endif
!$acc data copyout (b(1:N)) if (0 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 59
#endif
!$acc data copyout (b(1:N)) if (1 == 1)
!$acc end data
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 60
#endif
!$acc end data
!$acc end data
do i = 1, N
- if (b(1) .ne. 18.0) call abort
+ if (b(1) .ne. 18.0) STOP 61
end do
!$acc enter data copyin (b(1:N)) if (0 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 62
#endif
!$acc exit data delete (b(1:N)) if (0 == 1)
!$acc enter data copyin (b(1:N)) if (1 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .FALSE.) call abort
+ if (acc_is_present (b) .eqv. .FALSE.) STOP 63
#endif
!$acc exit data delete (b(1:N)) if (1 == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 64
#endif
!$acc enter data copyin (b(1:N)) if (zero == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 65
#endif
!$acc exit data delete (b(1:N)) if (zero == 1)
!$acc enter data copyin (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .FALSE.) call abort
+ if (acc_is_present (b) .eqv. .FALSE.) STOP 66
#endif
!$acc exit data delete (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 67
#endif
!$acc enter data copyin (b(1:N)) if (one == 0)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 68
#endif
!$acc exit data delete (b(1:N)) if (one == 0)
!$acc enter data copyin (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .FALSE.) call abort
+ if (acc_is_present (b) .eqv. .FALSE.) STOP 69
#endif
!$acc exit data delete (b(1:N)) if (one == 1)
#if !ACC_MEM_SHARED
- if (acc_is_present (b) .eqv. .TRUE.) call abort
+ if (acc_is_present (b) .eqv. .TRUE.) STOP 70
#endif
end program main
CALL test(x_min)
- if (x_min .ne. -1) call abort
+ if (x_min .ne. -1) STOP 1
end program t
!$acc end kernels
do i = 0, n - 1
- if (a(i) .ne. i * 2) call abort
- if (b(i) .ne. i * 4) call abort
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (a(i) .ne. i * 2) STOP 1
+ if (b(i) .ne. i * 4) STOP 2
+ if (c(i) .ne. a(i) + b(i)) STOP 3
end do
end program main
!$acc end data
do i = 0, n - 1
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (c(i) .ne. a(i) + b(i)) STOP 1
end do
end program main
!$acc exit data copyout (c(0:n-1))
do i = 0, n - 1
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (c(i) .ne. a(i) + b(i)) STOP 1
end do
end program main
!$acc exit data copyout (a(0:n-1), b(0:n-1), c(0:n-1))
do i = 0, n - 1
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (c(i) .ne. a(i) + b(i)) STOP 1
end do
end program main
!$acc exit data copyout (a(0:n-1), c(0:n-1))
do i = 0, n - 1
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (c(i) .ne. a(i) + b(i)) STOP 1
end do
end program main
!$acc end data
do i = 0, n - 1
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (c(i) .ne. a(i) + b(i)) STOP 1
end do
end program main
!$acc end kernels
do i = 0, n - 1
- if (c(i) .ne. a(i) + b(i)) call abort
+ if (c(i) .ne. a(i) + b(i)) STOP 1
end do
end program main
use openacc
-if (acc_get_num_devices (acc_device_host) .ne. 1) call abort
+if (acc_get_num_devices (acc_device_host) .ne. 1) STOP 1
call acc_set_device_type (acc_device_host)
-if (acc_get_device_type () .ne. acc_device_host) call abort
+if (acc_get_device_type () .ne. acc_device_host) STOP 2
call acc_set_device_num (0, acc_device_host)
-if (acc_get_device_num (acc_device_host) .ne. 0) call abort
+if (acc_get_device_num (acc_device_host) .ne. 0) STOP 3
call acc_shutdown (acc_device_host)
call acc_init (acc_device_host)
call acc_copyin (a_3d_c)
call acc_copyin (a_3d_r)
- if (acc_is_present (a_3d_i) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_c) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_r) .neqv. .TRUE.) call abort
+ if (acc_is_present (a_3d_i) .neqv. .TRUE.) STOP 1
+ if (acc_is_present (a_3d_c) .neqv. .TRUE.) STOP 2
+ if (acc_is_present (a_3d_r) .neqv. .TRUE.) STOP 3
do i = 1, 10
do j = 1, 10
do k = 1, 10
- if (acc_is_present (a_3d_i(i, j, k), i_size) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_c(i, j, k), i_size) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_r(i, j, k), i_size) .neqv. .TRUE.) call abort
+ if (acc_is_present (a_3d_i(i, j, k), i_size) .neqv. .TRUE.) STOP 4
+ if (acc_is_present (a_3d_c(i, j, k), i_size) .neqv. .TRUE.) STOP 5
+ if (acc_is_present (a_3d_r(i, j, k), i_size) .neqv. .TRUE.) STOP 6
end do
end do
end do
USE OPENACC
- IF (ACC_GET_NUM_DEVICES (ACC_DEVICE_HOST) .NE. 1) CALL ABORT
+ IF (ACC_GET_NUM_DEVICES (ACC_DEVICE_HOST) .NE. 1) STOP 1
CALL ACC_SET_DEVICE_TYPE (ACC_DEVICE_HOST)
- IF (ACC_GET_DEVICE_TYPE () .NE. ACC_DEVICE_HOST) CALL ABORT
+ IF (ACC_GET_DEVICE_TYPE () .NE. ACC_DEVICE_HOST) STOP 2
CALL ACC_SET_DEVICE_NUM (0, ACC_DEVICE_HOST)
- IF (ACC_GET_DEVICE_NUM (ACC_DEVICE_HOST) .NE. 0) CALL ABORT
+ IF (ACC_GET_DEVICE_NUM (ACC_DEVICE_HOST) .NE. 0) STOP 3
CALL ACC_SHUTDOWN (ACC_DEVICE_HOST)
CALL ACC_INIT (ACC_DEVICE_HOST)
INCLUDE "openacc_lib.h"
- IF (ACC_GET_NUM_DEVICES (ACC_DEVICE_HOST) .NE. 1) CALL ABORT
+ IF (ACC_GET_NUM_DEVICES (ACC_DEVICE_HOST) .NE. 1) STOP 1
CALL ACC_SET_DEVICE_TYPE (ACC_DEVICE_HOST)
- IF (ACC_GET_DEVICE_TYPE () .NE. ACC_DEVICE_HOST) CALL ABORT
+ IF (ACC_GET_DEVICE_TYPE () .NE. ACC_DEVICE_HOST) STOP 2
CALL ACC_SET_DEVICE_NUM (0, ACC_DEVICE_HOST)
- IF (ACC_GET_DEVICE_NUM (ACC_DEVICE_HOST) .NE. 0) CALL ABORT
+ IF (ACC_GET_DEVICE_NUM (ACC_DEVICE_HOST) .NE. 0) STOP 3
CALL ACC_SHUTDOWN (ACC_DEVICE_HOST)
CALL ACC_INIT (ACC_DEVICE_HOST)
SHARED_MEM = ACC_IS_PRESENT (H)
CALL ACC_PRESENT_OR_CREATE (H, INT (SIZEOF (H), 4))
- IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
+ IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) STOP 1
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (1, 0, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (1, 0, SHARED_MEM)) STOP 2
H(I) = I + 2
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (2, 1, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (2, 1, SHARED_MEM)) STOP 3
H(I) = I + 3
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (3, 2, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (3, 2, SHARED_MEM)) STOP 4
H(I) = I + 4
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (4, 3, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (4, 3, SHARED_MEM)) STOP 5
H(I) = I + 5
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (5, 4, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (5, 4, SHARED_MEM)) STOP 6
H(I) = I + 6
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (6, 5, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (6, 5, SHARED_MEM)) STOP 7
H(I) = I + 7
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (7, 6, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (7, 6, SHARED_MEM)) STOP 8
H(I) = I + 8
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (8, 7, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (8, 7, SHARED_MEM)) STOP 9
H(I) = I + 9
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (9, 8, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (9, 8, SHARED_MEM)) STOP 10
H(I) = I + 10
END DO
CALL ACC_COPYOUT (H, INT (SIZEOF (H), 4))
IF (.NOT. SHARED_MEM) THEN
- IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
+ IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) STOP 11
ENDIF
DO I = 1, N
- IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) STOP 12
END DO
CALL ACC_PCOPYIN (H)
- IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
+ IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) STOP 13
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) STOP 14
H(I) = I + 11
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (11, 9, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (11, 9, SHARED_MEM)) STOP 15
H(I) = I + 12
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (12, 11, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (12, 11, SHARED_MEM)) STOP 16
H(I) = I + 13
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (13, 12, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (13, 12, SHARED_MEM)) STOP 17
H(I) = I + 14
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (14, 13, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (14, 13, SHARED_MEM)) STOP 18
H(I) = I + 15
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (15, 14, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (15, 14, SHARED_MEM)) STOP 19
H(I) = I + 16
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (16, 15, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (16, 15, SHARED_MEM)) STOP 20
H(I) = I + 17
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (17, 16, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (17, 16, SHARED_MEM)) STOP 21
H(I) = I + 18
END DO
CALL ACC_UPDATE_SELF (H, INT (SIZEOF (H), 4))
- IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
+ IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) STOP 22
DO I = 1, N
- IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) STOP 23
END DO
CALL ACC_DELETE (H)
IF (.NOT. SHARED_MEM) THEN
- IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
+ IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) STOP 24
ENDIF
DEALLOCATE (H)
SHARED_MEM = ACC_IS_PRESENT (H)
CALL ACC_PRESENT_OR_CREATE (H, INT (SIZEOF (H), 4))
- IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
+ IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) STOP 1
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (1, 0, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (1, 0, SHARED_MEM)) STOP 2
H(I) = I + 2
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (2, 1, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (2, 1, SHARED_MEM)) STOP 3
H(I) = I + 3
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (3, 2, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (3, 2, SHARED_MEM)) STOP 4
H(I) = I + 4
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (4, 3, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (4, 3, SHARED_MEM)) STOP 5
H(I) = I + 5
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (5, 4, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (5, 4, SHARED_MEM)) STOP 6
H(I) = I + 6
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (6, 5, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (6, 5, SHARED_MEM)) STOP 7
H(I) = I + 7
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (7, 6, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (7, 6, SHARED_MEM)) STOP 8
H(I) = I + 8
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (8, 7, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (8, 7, SHARED_MEM)) STOP 9
H(I) = I + 9
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (9, 8, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (9, 8, SHARED_MEM)) STOP 10
H(I) = I + 10
END DO
CALL ACC_COPYOUT (H, INT (SIZEOF (H), 4))
IF (.NOT. SHARED_MEM) THEN
- IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
+ IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) STOP 11
ENDIF
DO I = 1, N
- IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) STOP 12
END DO
CALL ACC_PCOPYIN (H)
- IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
+ IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) STOP 13
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (10, 9, SHARED_MEM)) STOP 14
H(I) = I + 11
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (11, 9, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (11, 9, SHARED_MEM)) STOP 15
H(I) = I + 12
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (12, 11, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (12, 11, SHARED_MEM)) STOP 16
H(I) = I + 13
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (13, 12, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (13, 12, SHARED_MEM)) STOP 17
H(I) = I + 14
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (14, 13, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (14, 13, SHARED_MEM)) STOP 18
H(I) = I + 15
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (15, 14, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (15, 14, SHARED_MEM)) STOP 19
H(I) = I + 16
END DO
!$ACC PARALLEL LOOP DEFAULT (PRESENT)
DO I = 1, N
- IF (H(I) .NE. I + MERGE (16, 15, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (16, 15, SHARED_MEM)) STOP 20
H(I) = I + 17
END DO
!$ACC END PARALLEL LOOP
DO I = 1, N
- IF (H(I) .NE. I + MERGE (17, 16, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (17, 16, SHARED_MEM)) STOP 21
H(I) = I + 18
END DO
CALL ACC_UPDATE_SELF (H, INT (SIZEOF (H), 4))
- IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) CALL ABORT
+ IF (.NOT. ACC_IS_PRESENT (H, INT (SIZEOF (H), 8))) STOP 22
DO I = 1, N
- IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) CALL ABORT
+ IF (H(I) .NE. I + MERGE (18, 17, SHARED_MEM)) STOP 23
END DO
CALL ACC_DELETE (H)
IF (.NOT. SHARED_MEM) THEN
- IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) CALL ABORT
+ IF (ACC_IS_PRESENT (H, INT (SIZEOF (H), 4))) STOP 24
ENDIF
DEALLOCATE (H)
integer n
- if (acc_get_num_devices (acc_device_host) .ne. 1) call abort
+ if (acc_get_num_devices (acc_device_host) .ne. 1) STOP 1
- if (acc_get_num_devices (acc_device_none) .ne. 0) call abort
+ if (acc_get_num_devices (acc_device_none) .ne. 0) STOP 2
call acc_init (acc_device_host)
- if (acc_get_device_type () .ne. acc_device_host) call abort
+ if (acc_get_device_type () .ne. acc_device_host) STOP 3
call acc_set_device_type (acc_device_host)
- if (acc_get_device_type () .ne. acc_device_host) call abort
+ if (acc_get_device_type () .ne. acc_device_host) STOP 4
n = 0
call acc_set_device_num (n, acc_device_host)
- if (acc_get_device_num (acc_device_host) .ne. 0) call abort
+ if (acc_get_device_num (acc_device_host) .ne. 0) STOP 5
- if (.NOT. acc_async_test (n) ) call abort
+ if (.NOT. acc_async_test (n) ) STOP 6
call acc_wait (n)
call acc_set_device_num (n, acc_device_nvidia)
- if (acc_get_device_num (acc_device_nvidia) .ne. 0) call abort
+ if (acc_get_device_num (acc_device_nvidia) .ne. 0) STOP 1
if (acc_get_num_devices (acc_device_nvidia) .gt. 1) then
call acc_set_device_num (n, acc_device_nvidia)
- if (acc_get_device_num (acc_device_nvidia) .ne. 1) call abort
+ if (acc_get_device_num (acc_device_nvidia) .ne. 1) STOP 2
end if
integer n
- if (acc_get_num_devices (acc_device_host) .ne. 1) call abort
+ if (acc_get_num_devices (acc_device_host) .ne. 1) STOP 1
- if (acc_get_num_devices (acc_device_none) .ne. 0) call abort
+ if (acc_get_num_devices (acc_device_none) .ne. 0) STOP 2
call acc_init (acc_device_host)
- if (acc_get_device_type () .ne. acc_device_host) call abort
+ if (acc_get_device_type () .ne. acc_device_host) STOP 3
call acc_set_device_type (acc_device_host)
- if (acc_get_device_type () .ne. acc_device_host) call abort
+ if (acc_get_device_type () .ne. acc_device_host) STOP 4
n = 0
call acc_set_device_num (n, acc_device_host)
- if (acc_get_device_num (acc_device_host) .ne. 0) call abort
+ if (acc_get_device_num (acc_device_host) .ne. 0) STOP 5
- if (.NOT. acc_async_test (n) ) call abort
+ if (.NOT. acc_async_test (n) ) STOP 6
call acc_wait (n)
call acc_set_device_num (n, acc_device_nvidia)
- if (acc_get_device_num (acc_device_nvidia) .ne. 0) call abort
+ if (acc_get_device_num (acc_device_nvidia) .ne. 0) STOP 1
if (acc_get_num_devices (acc_device_nvidia) .gt. 1) then
call acc_set_device_num (n, acc_device_nvidia)
- if (acc_get_device_num (acc_device_nvidia) .ne. 1) call abort
+ if (acc_get_device_num (acc_device_nvidia) .ne. 1) STOP 2
end if
call acc_copyin (a_3d_c)
call acc_copyin (a_3d_r)
- if (acc_is_present (a_3d_i) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_c) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_r) .neqv. .TRUE.) call abort
+ if (acc_is_present (a_3d_i) .neqv. .TRUE.) STOP 1
+ if (acc_is_present (a_3d_c) .neqv. .TRUE.) STOP 2
+ if (acc_is_present (a_3d_r) .neqv. .TRUE.) STOP 3
do i = 1, 10
do j = 1, 10
do k = 1, 10
- if (acc_is_present (a_3d_i(i, j, k), i_size) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_c(i, j, k), i_size) .neqv. .TRUE.) call abort
- if (acc_is_present (a_3d_r(i, j, k), i_size) .neqv. .TRUE.) call abort
+ if (acc_is_present (a_3d_i(i, j, k), i_size) .neqv. .TRUE.) STOP 4
+ if (acc_is_present (a_3d_c(i, j, k), i_size) .neqv. .TRUE.) STOP 5
+ if (acc_is_present (a_3d_r(i, j, k), i_size) .neqv. .TRUE.) STOP 6
end do
end do
end do
!$acc end parallel
do i = 1, n
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 1
end do
call check (a, b, n)
integer :: i
do i = 1, n
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 2
end do
end subroutine check
end do
end do firstdo
!$acc end parallel
- if (l) call abort
+ if (l) STOP 1
end subroutine test1
subroutine test2
115 continue
!$acc loop gang(static:1) collapse(1)
do k=1,3
- if (any(a(k,1:3,1:3).ne.1)) call abort
+ if (any(a(k,1:3,1:3).ne.1)) STOP 2
enddo
! Use "gang(static:1)" here and below to effectively turn gang-redundant
! execution mode into something like gang-single.
120 end do dol
!$acc loop gang(static:1) collapse(1)
do l=1,3
- if (any(a(l,1:3,1:3).ne.2)) call abort
+ if (any(a(l,1:3,1:3).ne.2)) STOP 3
enddo
!$acc end parallel
end subroutine test2
enddo dokk
115 continue
!$acc end parallel
- if (any(a(1:3,1:3,1:3).ne.1)) call abort
+ if (any(a(1:3,1:3,1:3).ne.1)) STOP 1
!$acc parallel
!$acc loop collapse(3)
dol: do 120 l=1,3
enddo doll
120 end do dol
!$acc end parallel
- if (any(a(1:3,1:3,1:3).ne.2)) call abort
+ if (any(a(1:3,1:3,1:3).ne.2)) STOP 2
end subroutine test1
subroutine test2(v1, v2, v3, v4, v5, v6)
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 3
do i = v1, v2
do j = v3, v4
do k = v5, v6
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 4
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 5
do i = v1, v2, v7
do j = v3, v4, v8
do k = v5, v6, v9
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 6
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 7
do i = v1, v2, v7
do j = v3, v4, v8
do k = v5, v6, v9
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 8
end do
end do
end do
enddo dokk
115 continue
!$acc end parallel
- if (any(a(1:3,1:3,1:3).ne.1)) call abort
+ if (any(a(1:3,1:3,1:3).ne.1)) STOP 1
!$acc parallel
!$acc loop collapse(3)
dol: do 120 l=1,3
enddo doll
120 end do dol
!$acc end parallel
- if (any(a(1:3,1:3,1:3).ne.2)) call abort
+ if (any(a(1:3,1:3,1:3).ne.2)) STOP 2
end subroutine test1
subroutine test2(v1, v2, v3, v4, v5, v6)
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 3
do i = v1, v2
do j = v3, v4
do k = v5, v6
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 4
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 5
do i = v1, v2, v7
do j = v3, v4, v8
do k = v5, v6, v9
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 6
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 7
do i = v1, v2, v7
do j = v3, v4, v8
do k = v5, v6, v9
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 8
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 9
do i = v1, v2
do j = v3, v4
do k = v5, v6
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 10
end do
end do
end do
end do
end do
end do
- if (l .neqv. r) call abort
+ if (l .neqv. r) STOP 11
do i = v1, v2, v7
do j = v3, v4, v8
do k = v5, v6, v9
- if (a(i, j, k) .ne. b(i, j, k)) call abort
+ if (a(i, j, k) .ne. b(i, j, k)) STOP 12
end do
end do
end do
!$acc update host(array)
do i = 1, n
- if (array(i) .ne. i) call abort
+ if (array(i) .ne. i) STOP 1
end do
call kernels_default_present(array, n)
!$acc update host(array)
do i = 1, n
- if (array(i) .ne. i+1) call abort
+ if (array(i) .ne. i+1) STOP 2
end do
call parallel(array, n)
!$acc update host(array)
do i = 1, n
- if (array(i) .ne. i+i) call abort
+ if (array(i) .ne. i+i) STOP 3
end do
call parallel_default_present(array, n)
!$acc end data
do i = 1, n
- if (array(i) .ne. i+i+1) call abort
+ if (array(i) .ne. i+i+1) STOP 4
end do
end program main
implicit none
include "openacc_lib.h"
- if (openacc_version .ne. 201306) call abort;
+ if (openacc_version .ne. 201306) STOP 1
end program main
use openacc
implicit none
- if (openacc_version .ne. 201306) call abort;
+ if (openacc_version .ne. 201306) STOP 1
end program main
CALL ACC_ASYNC_WAIT (1)
- IF (RES .NE. RES1) CALL ABORT
- IF (RES .NE. RES2) CALL ABORT
+ IF (RES .NE. RES1) STOP 1
+ IF (RES .NE. RES2) STOP 2
RES1 = 1
RES2 = 1
CALL ACC_ASYNC_WAIT_ALL
- IF (RES .NE. RES1) CALL ABORT
- IF (RES .NE. RES2) CALL ABORT
+ IF (RES .NE. RES1) STOP 3
+ IF (RES .NE. RES2) STOP 4
END PROGRAM
CALL ACC_ASYNC_WAIT (1)
- IF (RES .NE. RES1) CALL ABORT
- IF (RES .NE. RES2) CALL ABORT
+ IF (RES .NE. RES1) STOP 1
+ IF (RES .NE. RES2) STOP 2
RES1 = 1
RES2 = 1
CALL ACC_ASYNC_WAIT_ALL
- IF (RES .NE. RES1) CALL ABORT
- IF (RES .NE. RES2) CALL ABORT
+ IF (RES .NE. RES1) STOP 3
+ IF (RES .NE. RES2) STOP 4
END PROGRAM
!$acc end parallel
if (acc_get_device_type () .ne. acc_device_host) then
- if (s1 .ne. n) call abort
- if (s2 .ne. n) call abort
+ if (s1 .ne. n) STOP 1
+ if (s2 .ne. n) STOP 2
else
- if (s1 .ne. 1) call abort
- if (s2 .ne. 1) call abort
+ if (s1 .ne. 1) STOP 3
+ if (s2 .ne. 1) STOP 4
end if
! Test reductions inside subroutines
call redsub (s1, s2, n)
if (acc_get_device_type () .ne. acc_device_host) then
- if (s1 .ne. n) call abort
+ if (s1 .ne. n) STOP 5
else
- if (s2 .ne. 1) call abort
+ if (s2 .ne. 1) STOP 6
end if
end program reduction
a(4) = 54
!$acc end parallel
- if (a(1) .ne. 10) call abort
- if (a(2) .ne. 52) call abort
- if (a(3) .ne. 53) call abort
- if (a(4) .ne. 54) call abort
+ if (a(1) .ne. 10) STOP 1
+ if (a(2) .ne. 52) STOP 2
+ if (a(3) .ne. 53) STOP 3
+ if (a(4) .ne. 54) STOP 4
end program test
!$acc end data
- if (sum .ne. 4.0) call abort
+ if (sum .ne. 4.0) STOP 1
end program
enddo
enddo
- if (any(a(1:3,1:3).ne.2)) call abort
+ if (any(a(1:3,1:3).ne.2)) STOP 1
!$acc end parallel
beta = 0.0
c(:,:) = 1.0
call foo (beta, c)
- if (c(1,1) /= 0.0) call abort ()
+ if (c(1,1) /= 0.0) STOP 1
end program test_foo
!$acc parallel num_gangs(1) num_workers(2)
- if (any(a(1:3,1:3,1:3).ne.1)) call abort
+ if (any(a(1:3,1:3,1:3).ne.1)) STOP 1
do ll=1,3
enddo
- if (a(1,1,1).ne.2) call abort
+ if (a(1,1,1).ne.2) STOP 2
!$acc end parallel
!$acc end parallel
do i = 1, 32
- if (arr(i) .ne. i * 3) call abort
+ if (arr(i) .ne. i * 3) STOP 1
end do
end subroutine t1
!$acc end parallel
do i = 0, 32 * 32 - 1
- if (arr(i) .ne. i + (i / 32) * 2) call abort
+ if (arr(i) .ne. i + (i / 32) * 2) STOP 2
end do
end subroutine t2
!$acc end parallel
do i = 0, 32 * 32 - 1
- if (arr(i) .ne. i + (i / 32) * 2) call abort
+ if (arr(i) .ne. i + (i / 32) * 2) STOP 3
end do
end subroutine t3
!$acc end parallel
do i = 0, 32 * 32 - 1
- if (arr(i) .ne. i + (i / 32) * 13) call abort
+ if (arr(i) .ne. i + (i / 32) * 13) STOP 4
end do
end subroutine t4
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 5
end if
end do
end do
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 6
end if
end do
end do
!$acc end parallel
do i = 0, 32 * 32 - 1
- if (arr(i) .ne. i + ieor(i / 32, mod(i, 32) * 3)) call abort
+ if (arr(i) .ne. i + ieor(i / 32, mod(i, 32) * 3)) STOP 7
end do
end subroutine t7
do j = 0, 32 -1
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
- if (arr(idx) .ne. idx + ieor(i, j * 3) * k) call abort
+ if (arr(idx) .ne. idx + ieor(i, j * 3) * k) STOP 8
end do
end do
end do
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 9
end if
end do
end do
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 10
end if
end do
end do
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 11
end if
end do
end do
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 12
end if
end do
end do
do k = 0, 32 - 1
idx = i * 1024 + j * 32 + k
if (arr(idx) .ne. idx + ieor(i, j * 3) * k + ior(i, j * 5) * k) then
- call abort
+ STOP 13
end if
end do
end do
!$acc end parallel
do i = 1, n
- if (arr(i) .ne. (3 + i * 2)) call abort
+ if (arr(i) .ne. (3 + i * 2)) STOP 14
end do
end subroutine t14
integer, allocatable :: c3(:,:,:)
allocate (a1(5))
- if (.not.allocated (a1)) call abort()
+ if (.not.allocated (a1)) STOP 1
a1 = 10
a1(5) = 5
!$acc end parallel
- if (a1(1) .ne. 1) call abort
- if (a1(2) .ne. 2) call abort
- if (a1(3) .ne. 3) call abort
- if (a1(4) .ne. 4) call abort
- if (a1(5) .ne. 5) call abort
+ if (a1(1) .ne. 1) STOP 1
+ if (a1(2) .ne. 2) STOP 2
+ if (a1(3) .ne. 3) STOP 3
+ if (a1(4) .ne. 4) STOP 4
+ if (a1(5) .ne. 5) STOP 5
deallocate(a1)
allocate (a1(0:4))
- if (.not.allocated (a1)) call abort()
+ if (.not.allocated (a1)) STOP 2
a1 = 10
a1(4) = 5
!$acc end parallel
- if (a1(0) .ne. 1) call abort
- if (a1(1) .ne. 2) call abort
- if (a1(2) .ne. 3) call abort
- if (a1(3) .ne. 4) call abort
- if (a1(4) .ne. 5) call abort
+ if (a1(0) .ne. 1) STOP 6
+ if (a1(1) .ne. 2) STOP 7
+ if (a1(2) .ne. 3) STOP 8
+ if (a1(3) .ne. 4) STOP 9
+ if (a1(4) .ne. 5) STOP 10
deallocate(a1)
allocate (b2(5,5))
- if (.not.allocated (b2)) call abort()
+ if (.not.allocated (b2)) STOP 3
b2 = 11
b2(5,5) = 5
!$acc end parallel
- if (b2(1,1) .ne. 1) call abort
- if (b2(2,2) .ne. 2) call abort
- if (b2(3,3) .ne. 3) call abort
- if (b2(4,4) .ne. 4) call abort
- if (b2(5,5) .ne. 5) call abort
+ if (b2(1,1) .ne. 1) STOP 11
+ if (b2(2,2) .ne. 2) STOP 12
+ if (b2(3,3) .ne. 3) STOP 13
+ if (b2(4,4) .ne. 4) STOP 14
+ if (b2(5,5) .ne. 5) STOP 15
deallocate(b2)
allocate (b2(0:4,0:4))
- if (.not.allocated (b2)) call abort()
+ if (.not.allocated (b2)) STOP 4
b2 = 11
b2(4,4) = 5
!$acc end parallel
- if (b2(0,0) .ne. 1) call abort
- if (b2(1,1) .ne. 2) call abort
- if (b2(2,2) .ne. 3) call abort
- if (b2(3,3) .ne. 4) call abort
- if (b2(4,4) .ne. 5) call abort
+ if (b2(0,0) .ne. 1) STOP 16
+ if (b2(1,1) .ne. 2) STOP 17
+ if (b2(2,2) .ne. 3) STOP 18
+ if (b2(3,3) .ne. 4) STOP 19
+ if (b2(4,4) .ne. 5) STOP 20
deallocate(b2)
allocate (c3(5,5,5))
- if (.not.allocated (c3)) call abort()
+ if (.not.allocated (c3)) STOP 5
c3 = 12
c3(5,5,5) = 5
!$acc end parallel
- if (c3(1,1,1) .ne. 1) call abort
- if (c3(2,2,2) .ne. 2) call abort
- if (c3(3,3,3) .ne. 3) call abort
- if (c3(4,4,4) .ne. 4) call abort
- if (c3(5,5,5) .ne. 5) call abort
+ if (c3(1,1,1) .ne. 1) STOP 21
+ if (c3(2,2,2) .ne. 2) STOP 22
+ if (c3(3,3,3) .ne. 3) STOP 23
+ if (c3(4,4,4) .ne. 4) STOP 24
+ if (c3(5,5,5) .ne. 5) STOP 25
deallocate(c3)
allocate (c3(0:4,0:4,0:4))
- if (.not.allocated (c3)) call abort()
+ if (.not.allocated (c3)) STOP 6
c3 = 12
c3(4,4,4) = 5
!$acc end parallel
- if (c3(0,0,0) .ne. 1) call abort
- if (c3(1,1,1) .ne. 2) call abort
- if (c3(2,2,2) .ne. 3) call abort
- if (c3(3,3,3) .ne. 4) call abort
- if (c3(4,4,4) .ne. 5) call abort
+ if (c3(0,0,0) .ne. 1) STOP 26
+ if (c3(1,1,1) .ne. 2) STOP 27
+ if (c3(2,2,2) .ne. 3) STOP 28
+ if (c3(3,3,3) .ne. 4) STOP 29
+ if (c3(4,4,4) .ne. 5) STOP 30
deallocate(c3)
allocate (a1(5))
- if (.not.allocated (a1)) call abort()
+ if (.not.allocated (a1)) STOP 7
allocate (b1(5))
- if (.not.allocated (b1)) call abort()
+ if (.not.allocated (b1)) STOP 8
allocate (c1(5))
- if (.not.allocated (c1)) call abort()
+ if (.not.allocated (c1)) STOP 9
a1 = 10
b1 = 3
b1(5) = c1(5)
!$acc end parallel
- if (b1(1) .ne. 10) call abort
- if (b1(2) .ne. 10) call abort
- if (b1(3) .ne. 10) call abort
- if (b1(4) .ne. 10) call abort
- if (b1(5) .ne. 10) call abort
+ if (b1(1) .ne. 10) STOP 31
+ if (b1(2) .ne. 10) STOP 32
+ if (b1(3) .ne. 10) STOP 33
+ if (b1(4) .ne. 10) STOP 34
+ if (b1(5) .ne. 10) STOP 35
deallocate(a1)
deallocate(b1)
deallocate(c1)
allocate (a1(0:4))
- if (.not.allocated (a1)) call abort()
+ if (.not.allocated (a1)) STOP 10
allocate (b1(0:4))
- if (.not.allocated (b1)) call abort()
+ if (.not.allocated (b1)) STOP 11
allocate (c1(0:4))
- if (.not.allocated (c1)) call abort()
+ if (.not.allocated (c1)) STOP 12
a1 = 10
b1 = 3
b1(4) = c1(4)
!$acc end parallel
- if (b1(0) .ne. 10) call abort
- if (b1(1) .ne. 10) call abort
- if (b1(2) .ne. 10) call abort
- if (b1(3) .ne. 10) call abort
- if (b1(4) .ne. 10) call abort
+ if (b1(0) .ne. 10) STOP 36
+ if (b1(1) .ne. 10) STOP 37
+ if (b1(2) .ne. 10) STOP 38
+ if (b1(3) .ne. 10) STOP 39
+ if (b1(4) .ne. 10) STOP 40
deallocate(a1)
deallocate(b1)
deallocate(c1)
allocate (a1(5))
- if (.not.allocated (a1)) call abort()
+ if (.not.allocated (a1)) STOP 13
a1 = 10
a1(3) = 3
!$acc end parallel
- if (a1(1) .ne. 10) call abort
- if (a1(2) .ne. 2) call abort
- if (a1(3) .ne. 3) call abort
- if (a1(4) .ne. 10) call abort
- if (a1(5) .ne. 10) call abort
+ if (a1(1) .ne. 10) STOP 41
+ if (a1(2) .ne. 2) STOP 42
+ if (a1(3) .ne. 3) STOP 43
+ if (a1(4) .ne. 10) STOP 44
+ if (a1(5) .ne. 10) STOP 45
deallocate(a1)
vresult = vresult + array(i)
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 1
+ if (rw .ne. vresult) STOP 2
+ if (rv .ne. vresult) STOP 3
+ if (rc .ne. vresult) STOP 4
!
! '*' reductions
vresult = vresult * array(i)
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 5
+ if (rw .ne. vresult) STOP 6
+ if (rv .ne. vresult) STOP 7
+ if (rc .ne. vresult) STOP 8
!
! 'max' reductions
vresult = max (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 9
+ if (rw .ne. vresult) STOP 10
+ if (rv .ne. vresult) STOP 11
+ if (rc .ne. vresult) STOP 12
!
! 'min' reductions
vresult = min (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 13
+ if (rw .ne. vresult) STOP 14
+ if (rv .ne. vresult) STOP 15
+ if (rc .ne. vresult) STOP 16
!
! 'iand' reductions
vresult = iand (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 17
+ if (rw .ne. vresult) STOP 18
+ if (rv .ne. vresult) STOP 19
+ if (rc .ne. vresult) STOP 20
!
! 'ior' reductions
vresult = ior (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 21
+ if (rw .ne. vresult) STOP 22
+ if (rv .ne. vresult) STOP 23
+ if (rc .ne. vresult) STOP 24
!
! 'ieor' reductions
vresult = ieor (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 25
+ if (rw .ne. vresult) STOP 26
+ if (rv .ne. vresult) STOP 27
+ if (rc .ne. vresult) STOP 28
!
! '.and.' reductions
lvresult = lvresult .and. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 29
+ if (lrw .neqv. lvresult) STOP 30
+ if (lrv .neqv. lvresult) STOP 31
+ if (lrc .neqv. lvresult) STOP 32
!
! '.or.' reductions
lvresult = lvresult .or. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 33
+ if (lrw .neqv. lvresult) STOP 34
+ if (lrv .neqv. lvresult) STOP 35
+ if (lrc .neqv. lvresult) STOP 36
!
! '.eqv.' reductions
lvresult = lvresult .eqv. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 37
+ if (lrw .neqv. lvresult) STOP 38
+ if (lrv .neqv. lvresult) STOP 39
+ if (lrc .neqv. lvresult) STOP 40
!
! '.neqv.' reductions
lvresult = lvresult .neqv. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 41
+ if (lrw .neqv. lvresult) STOP 42
+ if (lrv .neqv. lvresult) STOP 43
+ if (lrc .neqv. lvresult) STOP 44
end program reduction_1
vresult = vresult + array(i)
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 1
+ if (rw .ne. vresult) STOP 2
+ if (rv .ne. vresult) STOP 3
+ if (rc .ne. vresult) STOP 4
!
! '*' reductions
vresult = vresult * array(i)
end do
- if (abs (rg - vresult) .ge. e) call abort
- if (abs (rw - vresult) .ge. e) call abort
- if (abs (rv - vresult) .ge. e) call abort
- if (abs (rc - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) STOP 5
+ if (abs (rw - vresult) .ge. e) STOP 6
+ if (abs (rv - vresult) .ge. e) STOP 7
+ if (abs (rc - vresult) .ge. e) STOP 8
!
! 'max' reductions
vresult = max (vresult, array(i))
end do
- if (abs (rg - vresult) .ge. e) call abort
- if (abs (rw - vresult) .ge. e) call abort
- if (abs (rg - vresult) .ge. e) call abort
- if (abs (rc - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) STOP 9
+ if (abs (rw - vresult) .ge. e) STOP 10
+ if (abs (rg - vresult) .ge. e) STOP 11
+ if (abs (rc - vresult) .ge. e) STOP 12
!
! 'min' reductions
vresult = min (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 13
+ if (rv .ne. vresult) STOP 14
+ if (rw .ne. vresult) STOP 15
+ if (rc .ne. vresult) STOP 16
!
! '.and.' reductions
lvresult = lvresult .and. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 17
+ if (lrw .neqv. lvresult) STOP 18
+ if (lrv .neqv. lvresult) STOP 19
+ if (lrc .neqv. lvresult) STOP 20
!
! '.or.' reductions
lvresult = lvresult .or. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 21
+ if (lrw .neqv. lvresult) STOP 22
+ if (lrv .neqv. lvresult) STOP 23
+ if (lrc .neqv. lvresult) STOP 24
!
! '.eqv.' reductions
lvresult = lvresult .eqv. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 25
+ if (lrw .neqv. lvresult) STOP 26
+ if (lrv .neqv. lvresult) STOP 27
+ if (lrc .neqv. lvresult) STOP 28
!
! '.neqv.' reductions
lvresult = lvresult .neqv. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 29
+ if (lrw .neqv. lvresult) STOP 30
+ if (lrv .neqv. lvresult) STOP 31
+ if (lrc .neqv. lvresult) STOP 32
end program reduction_2
vresult = vresult + array(i)
end do
- if (abs (rg - vresult) .ge. e) call abort
- if (abs (rw - vresult) .ge. e) call abort
- if (abs (rv - vresult) .ge. e) call abort
- if (abs (rc - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) STOP 1
+ if (abs (rw - vresult) .ge. e) STOP 2
+ if (abs (rv - vresult) .ge. e) STOP 3
+ if (abs (rc - vresult) .ge. e) STOP 4
!
! '*' reductions
vresult = vresult * array(i)
end do
- if (abs (rg - vresult) .ge. e) call abort
- if (abs (rw - vresult) .ge. e) call abort
- if (abs (rv - vresult) .ge. e) call abort
- if (abs (rc - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) STOP 5
+ if (abs (rw - vresult) .ge. e) STOP 6
+ if (abs (rv - vresult) .ge. e) STOP 7
+ if (abs (rc - vresult) .ge. e) STOP 8
!
! 'max' reductions
vresult = max (vresult, array(i))
end do
- if (abs (rg - vresult) .ge. e) call abort
- if (abs (rw - vresult) .ge. e) call abort
- if (abs (rv - vresult) .ge. e) call abort
- if (abs (rc - vresult) .ge. e) call abort
+ if (abs (rg - vresult) .ge. e) STOP 9
+ if (abs (rw - vresult) .ge. e) STOP 10
+ if (abs (rv - vresult) .ge. e) STOP 11
+ if (abs (rc - vresult) .ge. e) STOP 12
!
! 'min' reductions
vresult = min (vresult, array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 13
+ if (rw .ne. vresult) STOP 14
+ if (rv .ne. vresult) STOP 15
+ if (rc .ne. vresult) STOP 16
!
! '.and.' reductions
lvresult = lvresult .and. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 17
+ if (lrw .neqv. lvresult) STOP 18
+ if (lrv .neqv. lvresult) STOP 19
+ if (lrc .neqv. lvresult) STOP 20
!
! '.or.' reductions
lvresult = lvresult .or. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 21
+ if (lrw .neqv. lvresult) STOP 22
+ if (lrv .neqv. lvresult) STOP 23
+ if (lrc .neqv. lvresult) STOP 24
!
! '.eqv.' reductions
lvresult = lvresult .eqv. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 25
+ if (lrw .neqv. lvresult) STOP 26
+ if (lrv .neqv. lvresult) STOP 27
+ if (lrc .neqv. lvresult) STOP 28
!
! '.neqv.' reductions
lvresult = lvresult .neqv. (array(i) .ge. 5)
end do
- if (lrg .neqv. lvresult) call abort
- if (lrw .neqv. lvresult) call abort
- if (lrv .neqv. lvresult) call abort
- if (lrc .neqv. lvresult) call abort
+ if (lrg .neqv. lvresult) STOP 29
+ if (lrw .neqv. lvresult) STOP 30
+ if (lrv .neqv. lvresult) STOP 31
+ if (lrc .neqv. lvresult) STOP 32
end program reduction_3
vresult = vresult + REAL(array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 1
+ if (rw .ne. vresult) STOP 2
+ if (rv .ne. vresult) STOP 3
+ if (rc .ne. vresult) STOP 4
!
! '*' reductions
vresult = vresult * REAL(array(i))
end do
- if (rg .ne. vresult) call abort
- if (rw .ne. vresult) call abort
- if (rv .ne. vresult) call abort
- if (rc .ne. vresult) call abort
+ if (rg .ne. vresult) STOP 5
+ if (rw .ne. vresult) STOP 6
+ if (rv .ne. vresult) STOP 7
+ if (rc .ne. vresult) STOP 8
end program reduction_4
vsum = vsum + c
end do
- if (gs .ne. vsum) call abort ()
- if (ws .ne. vsum) call abort ()
- if (vs .ne. vsum) call abort ()
- if (cs .ne. vsum) call abort ()
- if (ns .ne. vsum) call abort ()
+ if (gs .ne. vsum) STOP 1
+ if (ws .ne. vsum) STOP 2
+ if (vs .ne. vsum) STOP 3
+ if (cs .ne. vsum) STOP 4
+ if (ns .ne. vsum) STOP 5
end program reduction
subroutine redsub_gang(sum, n, c)
hs2 = hs2 + 2
end do
- if (gs1 .ne. hs1) call abort ()
- if (gs2 .ne. hs2) call abort ()
+ if (gs1 .ne. hs1) STOP 1
+ if (gs2 .ne. hs2) STOP 2
- if (ws1 .ne. hs1) call abort ()
- if (ws2 .ne. hs2) call abort ()
+ if (ws1 .ne. hs1) STOP 3
+ if (ws2 .ne. hs2) STOP 4
- if (vs1 .ne. hs1) call abort ()
- if (vs2 .ne. hs2) call abort ()
+ if (vs1 .ne. hs1) STOP 5
+ if (vs2 .ne. hs2) STOP 6
- if (cs1 .ne. hs1) call abort ()
- if (cs2 .ne. hs2) call abort ()
+ if (cs1 .ne. hs1) STOP 7
+ if (cs2 .ne. hs2) STOP 8
! Nested reductions.
end do
end do
- if (red .ne. vred) call abort ()
+ if (red .ne. vred) STOP 9
end program reduction
do j = 1, n
vsum = vsum + 1;
end do
- if (vsum .ne. arr(i)) call abort ()
+ if (vsum .ne. arr(i)) STOP 1
end do
end program reduction
! verify the results
do i = 1, 10
- if (arr(i) .ne. 100+i) call abort ()
+ if (arr(i) .ne. 100+i) STOP 2
end do
end subroutine redsub_private
end do
!$acc end parallel loop
- if (h1 .ne. s1) call abort ()
- if (h2 .ne. s2) call abort ()
+ if (h1 .ne. s1) STOP 1
+ if (h2 .ne. s2) STOP 2
!$acc wait(1)
- if (h1 .ne. a1) call abort ()
- if (h2 .ne. a2) call abort ()
+ if (h1 .ne. a1) STOP 3
+ if (h2 .ne. a2) STOP 4
end program reduction
end do
!$acc end parallel
do i = 1, n
- if (a(i) .ne. fact(i)) call abort
+ if (a(i) .ne. fact(i)) STOP 1
end do
end
recursive function fact (x) result (res)
end do
!$acc end parallel
do i = 1, n
- if (a(i) .ne. fact(i)) call abort
+ if (a(i) .ne. fact(i)) STOP 1
end do
end
end do
!$acc end parallel
do i = 1, n
- if (a(i) .ne. fact(i)) call abort
+ if (a(i) .ne. fact(i)) STOP 1
end do
end
recursive function fact (x) result (res)
end do
!$acc end parallel
do i = 1, n
- if (a(i) .ne. (i + 1)) call abort
+ if (a(i) .ne. (i + 1)) STOP 1
end do
end
subroutine incr (x)
n = func (n)
!$acc end parallel
- if (n .ne. 6) call abort
+ if (n .ne. 6) STOP 1
contains
!$acc end parallel
do i = 1, N
- if (a(i) .ne.N) call abort
+ if (a(i) .ne.N) STOP 1
end do
!$acc parallel copy (a)
!$acc end parallel
do i = 1, N
- if (a(i) .ne. (N + (N * (-1 * i)))) call abort
+ if (a(i) .ne. (N + (N * (-1 * i)))) STOP 2
end do
do i = 1, N
!$acc end parallel
do i = 1, N
- if (b(i) .ne. N + i) call abort
+ if (b(i) .ne. N + i) STOP 3
end do
do i = 1, N
!$acc end parallel
do i = 1, N
- if (a(i) .ne. 0) call abort
+ if (a(i) .ne. 0) STOP 4
end do
contains
end do
!$acc end parallel
do i = 1, n
- if (a(i) .ne. fact(i)) call abort
+ if (a(i) .ne. fact(i)) STOP 1
end do
end program main
!$acc end parallel
do i = 1, n
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 1
end do
call check (a, b, n)
integer :: i
do i = 1, n
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 2
end do
end subroutine check
!$acc end parallel
do i = low, high
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 1
end do
call check (a, b, n)
integer :: i
do i = 1, n
- if (a(i) .ne. b(i)) call abort
+ if (a(i) .ne. b(i)) STOP 2
end do
end subroutine check
!$acc update host (a, b)
do i = 1, N
- if (a(i) .ne. 3.0) call abort
- if (b(i) .ne. 3.0) call abort
+ if (a(i) .ne. 3.0) STOP 1
+ if (b(i) .ne. 3.0) STOP 2
end do
- if (acc_is_present (a) .neqv. .TRUE.) call abort
- if (acc_is_present (b) .neqv. .TRUE.) call abort
+ if (acc_is_present (a) .neqv. .TRUE.) STOP 3
+ if (acc_is_present (b) .neqv. .TRUE.) STOP 4
do i = 1, N
a(i) = 5.0
!$acc update host (a, b)
do i = 1, N
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 5.0) call abort
+ if (a(i) .ne. 5.0) STOP 5
+ if (b(i) .ne. 5.0) STOP 6
end do
- if (acc_is_present (a) .neqv. .TRUE.) call abort
- if (acc_is_present (b) .neqv. .TRUE.) call abort
+ if (acc_is_present (a) .neqv. .TRUE.) STOP 7
+ if (acc_is_present (b) .neqv. .TRUE.) STOP 8
!$acc parallel present (a, b)
do i = 1, N
!$acc update host (a, b)
do i = 1, N
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 5.0) call abort
+ if (a(i) .ne. 5.0) STOP 9
+ if (b(i) .ne. 5.0) STOP 10
end do
- if (acc_is_present (a) .neqv. .TRUE.) call abort
- if (acc_is_present (b) .neqv. .TRUE.) call abort
+ if (acc_is_present (a) .neqv. .TRUE.) STOP 11
+ if (acc_is_present (b) .neqv. .TRUE.) STOP 12
do i = 1, N
a(i) = 6.0
!$acc update host (a, b)
do i = 1, N
- if (a(i) .ne. 6.0) call abort
- if (b(i) .ne. 6.0) call abort
+ if (a(i) .ne. 6.0) STOP 13
+ if (b(i) .ne. 6.0) STOP 14
end do
- if (acc_is_present (a) .neqv. .TRUE.) call abort
- if (acc_is_present (b) .neqv. .TRUE.) call abort
+ if (acc_is_present (a) .neqv. .TRUE.) STOP 15
+ if (acc_is_present (b) .neqv. .TRUE.) STOP 16
do i = 1, N
a(i) = 7.0
!$acc update host (a, b)
do i = 1, N
- if (a(i) .ne. 7.0) call abort
- if (b(i) .ne. 7.0) call abort
+ if (a(i) .ne. 7.0) STOP 17
+ if (b(i) .ne. 7.0) STOP 18
end do
do i = 1, N
!$acc update host (a, b)
do i = 1, N
- if (a(i) .ne. 9.0) call abort
- if (b(i) .ne. 9.0) call abort
+ if (a(i) .ne. 9.0) STOP 19
+ if (b(i) .ne. 9.0) STOP 20
end do
- if (acc_is_present (a) .neqv. .TRUE.) call abort
- if (acc_is_present (b) .neqv. .TRUE.) call abort
+ if (acc_is_present (a) .neqv. .TRUE.) STOP 21
+ if (acc_is_present (b) .neqv. .TRUE.) STOP 22
do i = 1, N
a(i) = 5.0
!$acc update host (a, b)
do i = 1, NDIV2
- if (a(i) .ne. 6.0) call abort
- if (b(i) .ne. 6.0) call abort
+ if (a(i) .ne. 6.0) STOP 23
+ if (b(i) .ne. 6.0) STOP 24
end do
do i = NDIV2 + 1, N
- if (a(i) .ne. 5.0) call abort
- if (b(i) .ne. 5.0) call abort
+ if (a(i) .ne. 5.0) STOP 25
+ if (b(i) .ne. 5.0) STOP 26
end do
- if (acc_is_present (a) .neqv. .TRUE.) call abort
- if (acc_is_present (b) .neqv. .TRUE.) call abort
+ if (acc_is_present (a) .neqv. .TRUE.) STOP 27
+ if (acc_is_present (b) .neqv. .TRUE.) STOP 28
do i = 1, N
a(i) = 0.0
!$acc update host (a(5:N))
do i = 1, NDIV2
- if (a(i) .ne. 0.0) call abort
+ if (a(i) .ne. 0.0) STOP 29
end do
do i = NDIV2 + 1, N
- if (a(i) .ne. 6.0) call abort
+ if (a(i) .ne. 6.0) STOP 30
end do
!$acc update host (a(1:4))
do i = 1, NDIV2
- if (a(i) .ne. 1.0) call abort
+ if (a(i) .ne. 1.0) STOP 31
end do
do i = NDIV2 + 1, N
- if (a(i) .ne. 6.0) call abort
+ if (a(i) .ne. 6.0) STOP 32
end do
a(3) = 9
!$acc update host (a(3:6))
do i = 1, 2
- if (a(i) .ne. 1.0) call abort
+ if (a(i) .ne. 1.0) STOP 33
end do
do i = 3, 6
- if (a(i) .ne. 10.0) call abort
+ if (a(i) .ne. 10.0) STOP 34
end do
do i = 7, N
- if (a(i) .ne. 6.0) call abort
+ if (a(i) .ne. 6.0) STOP 35
end do
!$acc exit data delete (a, b)