Skip to content

DataRaceBench 1.2 kernels written in FORTRAN for LLVM-IR based data race detection tools

License

Notifications You must be signed in to change notification settings

utpalbora/drb_fortran

Repository files navigation

DataRaceBench FORTRAN kernels

These are DataRaceBench 1.2 kernels re-written in FORTRAN in order to work on LLVM-IR based OpenMP data race detection tools.
There are 92 kernels in total, covering different pragmas of OpenMP version 4.5.
We plan to implement all 116 kernels of DataRaceBench v1.2.

Running Data Race Checkers

./scripts/detect-races.sh -x toolname
-x : tool name (llov, drd, helgrind)
-n : iteration count
-t : thread count
-s : timeout in seconds

To run llov 5 times, execute
./scripts/detect-races.sh -x llov -n 5

To run multiple tools, execute
./scripts/detect-races.sh -x llov -x drd -x helgrind -n 1 -t 8 -s 10

To run the complete experiments, execute
./scripts/detect-races.sh

After running the experiments, to generate the consolidated reports (Stats.csv, TP-Stats.csv), execute
python scripts/drb_fortran.py

Results are stored at results directory.

Authors

DataRaceBench FORTRAN was created by Utpal Bora, Himanshu Shukla, and Pankaj Kukreja.

Release

DataRaceBench FORTRAN is released under a BSD license. For more details see the file LICENSE.txt. The license of the original C/C++ version of the benchmark can be found in the files LICENSE.LLNL.txt and LICENSE.OSU.txt.

How to cite DataRaceBench FORTRAN in a publication

@misc{drbForturl,  
  author = {Kukreja, Pankaj and Shukla, Himanshu and Bora, Utpal},  
  title = {{DataRaceBench FORTRAN}},  
  howpublished = "\url{https://github.com/utpalbora/drb_fortran}",  
  year = {2019},  
  note = "[Online; accessed 19-October-2019]"  
}

Current Status of DataRaceBench FORTRAN kernels

id DataRaceBench v1.2 kernel Have race? DataRaceBench FORTRAN Flang Support
1 DRB001-antidep1-orig-yes.c TRUE DRBF001_yes.f95
2 DRB002-antidep1-var-yes.c TRUE DRBF002_yes.f95
3 DRB003-antidep2-orig-yes.c TRUE DRBF003_yes.f95
4 DRB004-antidep2-var-yes.c TRUE DRBF004_yes.f95
5 DRB005-indirectaccess1-orig-yes.c TRUE
6 DRB006-indirectaccess2-orig-yes.c TRUE
7 DRB007-indirectaccess3-orig-yes.c TRUE
8 DRB008-indirectaccess4-orig-yes.c TRUE
9 DRB009-lastprivatemissing-orig-yes.c TRUE DRBF009_yes.f95
10 DRB010-lastprivatemissing-var-yes.c TRUE DRBF010_yes.f95
11 DRB011-minusminus-orig-yes.c TRUE DRBF011_yes.f95
12 DRB012-minusminus-var-yes.c TRUE DRBF012_yes.f95
13 DRB013-nowait-orig-yes.c TRUE DRBF013_yes.f95
14 DRB014-outofbounds-orig-yes.c TRUE DRBF014_yes.f95
15 DRB015-outofbounds-var-yes.c TRUE DRBF015_yes.f95
16 DRB016-outputdep-orig-yes.c TRUE DRBF016_yes.f95
17 DRB017-outputdep-var-yes.c TRUE DRBF017_yes.f95
18 DRB018-plusplus-orig-yes.c TRUE DRBF018_yes.f95
19 DRB019-plusplus-var-yes.c TRUE DRBF019_yes.f95
20 DRB020-privatemissing-var-yes.c TRUE DRBF020_yes.f95
21 DRB021-reductionmissing-orig-yes.c TRUE DRBF021_yes.f95
22 DRB022-reductionmissing-var-yes.c TRUE DRBF022_yes.f95
23 DRB023-sections1-orig-yes.c TRUE DRBF023_yes.f95
24 DRB024-simdtruedep-orig-yes.c TRUE DRBF024_yes.f95
25 DRB025-simdtruedep-var-yes.c TRUE DRBF025_yes.f95
26 DRB026-targetparallelfor-orig-yes.c TRUE DRBF026_yes.f95
27 DRB027-taskdependmissing-orig-yes.c TRUE DRBF027_yes.f95
28 DRB028-privatemissing-orig-yes.c TRUE DRBF028_yes.f95
29 DRB029-truedep1-orig-yes.c TRUE DRBF029_yes.f95
30 DRB030-truedep1-var-yes.c TRUE DRBF030_yes.f95
31 DRB031-truedepfirstdimension-orig-yes.c TRUE DRBF031_yes.f95
32 DRB032-truedepfirstdimension-var-yes.c TRUE DRBF032_yes.f95
33 DRB033-truedeplinear-orig-yes.c TRUE DRBF033_yes.f95
34 DRB034-truedeplinear-var-yes.c TRUE DRBF034_yes.f95
35 DRB035-truedepscalar-orig-yes.c TRUE DRBF035_yes.f95
36 DRB036-truedepscalar-var-yes.c TRUE DRBF036_yes.f95
37 DRB037-truedepseconddimension-orig-yes.c TRUE DRBF037_yes.f95
38 DRB038-truedepseconddimension-var-yes.c TRUE DRBF038_yes.f95
39 DRB039-truedepsingleelement-orig-yes.c TRUE DRBF039_yes.f95
40 DRB040-truedepsingleelement-var-yes.c TRUE DRBF040_yes.f95
41 DRB041-3mm-parallel-no.c FALSE
42 DRB042-3mm-tile-no.c FALSE
43 DRB043-adi-parallel-no.c FALSE
44 DRB044-adi-tile-no.c FALSE
45 DRB045-doall1-orig-no.c FALSE DRBF045_no.f95
46 DRB046-doall2-orig-no.c FALSE DRBF046_no.f95
47 DRB047-doallchar-orig-no.c FALSE DRBF047_no.f95
48 DRB048-firstprivate-orig-no.c FALSE DRBF048_no.f95
49 DRB049-fprintf-orig-no.c FALSE
50 DRB050-functionparameter-orig-no.c FALSE DRBF050_no.f95
51 DRB051-getthreadnum-orig-no.c FALSE DRBF051_no.f95
52 DRB052-indirectaccesssharebase-orig-no.c FALSE
53 DRB053-inneronly1-orig-no.c FALSE DRBF053_no.f95
54 DRB054-inneronly2-orig-no.c FALSE DRBF054_no.f95
55 DRB055-jacobi2d-parallel-no.c FALSE
56 DRB056-jacobi2d-tile-no.c FALSE
57 DRB057-jacobiinitialize-orig-no.c FALSE DRBF057_no.f95
58 DRB058-jacobikernel-orig-no.c FALSE
59 DRB059-lastprivate-orig-no.c FALSE DRBF059_no.f95
60 DRB060-matrixmultiply-orig-no.c FALSE DRBF060_no.f95
61 DRB061-matrixvector1-orig-no.c FALSE DRBF061_no.f95
62 DRB062-matrixvector2-orig-no.c FALSE DRBF062_no.f95
63 DRB063-outeronly1-orig-no.c FALSE DRBF063_no.f95
64 DRB064-outeronly2-orig-no.c FALSE DRBF064_no.f95
65 DRB065-pireduction-orig-no.c FALSE DRBF065_no.f95
66 DRB066-pointernoaliasing-orig-no.c FALSE DRBF066_no.f95
67 DRB067-restrictpointer1-orig-no.c FALSE
68 DRB068-restrictpointer2-orig-no.c FALSE
69 DRB069-sectionslock1-orig-no.c FALSE DRBF069_no.f95
70 DRB070-simd1-orig-no.c FALSE DRBF070_no.f95
71 DRB071-targetparallelfor-orig-no.c FALSE DRBF071_no.f95
72 DRB072-taskdep1-orig-no.c FALSE F90-W-0547-OpenMP feature, DEPEND, not yet implemented in this version of the compiler.
73 DRB073-doall2-orig-yes.c TRUE DRBF073_yes.f95
74 DRB074-flush-orig-yes.c TRUE DRBF074_yes.f95
75 DRB075-getthreadnum-orig-yes.c TRUE DRBF075_yes.f95
76 DRB076-flush-orig-no.c FALSE DRBF076_no.f95
77 DRB077-single-orig-no.c FALSE DRBF077_no.f95
78 DRB078-taskdep2-orig-no.c FALSE F90-W-0547-OpenMP feature, DEPEND, not yet implemented in this version of the compiler.
79 DRB079-taskdep3-orig-no.c FALSE F90-W-0547-OpenMP feature, DEPEND, not yet implemented in this version of the compiler.
80 DRB080-func-arg-orig-yes.c TRUE DRBF080_yes.f95
81 DRB081-func-arg-orig-no.c FALSE DRBF081_no.f95
82 DRB082-declared-in-func-orig-yes.c TRUE DRBF082_yes.f95
83 DRB083-declared-in-func-orig-no.c FALSE DRBF083_no.f95
84 DRB084-threadprivatemissing-orig-yes.c TRUE error: unable to execute command: Segmentation fault (core dumped)
85 DRB085-threadprivate-orig-no.c FALSE error: unable to execute command: Segmentation fault (core dumped)
86 DRB086-static-data-member-orig-yes.cpp TRUE
87 DRB087-static-data-member2-orig-yes.cpp TRUE
88 DRB088-dynamic-storage-orig-yes.c TRUE DRBF088_yes.f95
89 DRB089-dynamic-storage2-orig-yes.c TRUE DRBF089_yes.f95
90 DRB090-static-local-orig-yes.c TRUE DRBF090_yes.f95
91 DRB091-threadprivate2-orig-no.c FALSE DRBF091_no.f95
92 DRB092-threadprivatemissing2-orig-yes.c TRUE DRBF092_yes.f95
93 DRB093-doall2-collapse-orig-no.c FALSE DRBF093_no.f95
94 DRB094-doall2-ordered-orig-no.c FALSE F90-W-0547-OpenMP feature, ORDERED(n), not yet implemented in this version of the compiler.
95 DRB095-doall2-taskloop-orig-yes.c TRUE DRBF095_yes.f95
96 DRB096-doall2-taskloop-collapse-orig-no.c FALSE DRBF096_no.f95
97 DRB097-target-teams-distribute-orig-no.c FALSE DRBF097_no.f95
98 DRB098-simd2-orig-no.c FALSE DRBF098_no.f95
99 DRB099-targetparallelfor2-orig-no.c FALSE DRBF099_no.f95
100 DRB100-task-reference-orig-no.cpp FALSE DRBF100_no.f95
101 DRB101-task-value-orig-no.cpp FALSE DRBF101_no.f95
102 DRB102-copyprivate-orig-no.c FALSE DRBF102_no.f95
103 DRB103-master-orig-no.c FALSE DRBF103_no.f95
104 DRB104-nowait-barrier-orig-no.c FALSE DRBF104_no.f95
105 DRB105-taskwait-orig-no.c FALSE DRBF105_no.f95
106 DRB106-taskwaitmissing-orig-yes.c TRUE DRBF106_yes.f95
107 DRB107-taskgroup-orig-no.c FALSE DRBF107_no.f95
108 DRB108-atomic-orig-no.c FALSE DRBF108_no.f95
109 DRB109-orderedmissing-orig-yes.c TRUE DRBF109_yes.f95
110 DRB110-ordered-orig-no.c FALSE DRBF110_no.f95
111 DRB111-linearmissing-orig-yes.c TRUE DRBF111_yes.f95
112 DRB112-linear-orig-no.c FALSE F90-W-0547-OpenMP feature, LINEAR, not yet implemented in this version of the compiler.
113 DRB113-default-orig-no.c FALSE DRBF113_no.f95
114 DRB114-if-orig-yes.c TRUE DRBF114_yes.f95
115 DRB115-forsimd-orig-yes.c TRUE DRBF115_yes.f95
116 DRB116-target-teams-orig-yes.c TRUE DRBF116_yes.f95
``