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.
./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.
DataRaceBench FORTRAN was created by Utpal Bora, Himanshu Shukla, and Pankaj Kukreja.
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.
@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]"
}
| 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 | |
| `` |