source: CIVL/examples/omp/dataracebench-1.3.2/micro-benchmarks-fortran/DRB169-workshare-orig-yes.f95@ 1aaefd4

1.23 2.0 main test-branch
Last change on this file since 1aaefd4 was ea777aa, checked in by Alex Wilton <awilton@…>, 3 years ago

Moved examples, include, build_default.properties, common.xml, and README out from dev.civl.com into the root of the repo.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5704 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100755
File size: 1.1 KB
Line 
1!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
2!!! Copyright (c) 2017-20, Lawrence Livermore National Security, LLC
3!!! and DataRaceBench project contributors. See the DataRaceBench/COPYRIGHT file for details.
4!!!
5!!! SPDX-License-Identifier: (BSD-3-Clause)
6!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
7
8!The workshare construct is only available in Fortran. The workshare spreads work across the threads
9!executing the parallel. There is an implicit barrier. The nowait nullifies this barrier and hence
10!there is a race at line:29 due to nowait at line:26. Data Race Pairs, AA@25:9 and AA@29:!5.
11
12
13program DRB169_workshare_orig_yes
14 use omp_lib
15 implicit none
16
17 integer :: AA, BB, CC, res
18
19 BB = 1
20 CC = 2
21
22 !$omp parallel
23 !$omp workshare
24 AA = BB
25 AA = AA+CC
26 !$omp end workshare nowait
27
28 !$omp workshare
29 res = AA*2
30 !$omp end workshare
31 !$omp end parallel
32
33 if (res /= 6) then
34 print*,res
35 end if
36end program
Note: See TracBrowser for help on using the repository browser.