LLOV steht für LLVM OpenMP Verifier. Es handelt sich um eine statische Daten zur Erkennung von Daten zur Erkennung von Daten in LLVM für OpenMP -Programme. LLOV kann Datenrennen in OpenMP V4.5 -Programmen erkennen, die in C/C ++ und FORTRAN geschrieben wurden.
LLOV verwendet polyedrische Kompilierungstechniken, um Rassenbedingungen zur Kompilierungszeit zu erkennen.
Im Gegensatz zu anderen Rennerkennungs -Tools kann LLOV eine Region mit Code als Datenrennen kostenlos markieren.
Wenn OpenMP nicht in Ihrem System installiert ist oder der Pfad nicht ordnungsgemäß eingestellt ist, können Sie auf den mitgelieferten Header & LiB mit zusätzlichen Compiler -Flags verweisen. -Iinclude/ -Llib/
./bin/clang -Xclang -disable-O0-optnone -Xclang -load -Xclang ./lib/OpenMPVerify.so
-fopenmp -g test/1.race1.c
./bin/clang++ -Xclang -disable-O0-optnone -Xclang -load -Xclang ./lib/OpenMPVerify.so
-fopenmp -g test.cpp
./bin/clang -fopenmp -S -emit-llvm -g test/1.race1.c -o test.ll
./bin/opt -mem2reg test.ll -S -o test.ssa.ll
./bin/opt -load ./lib/OpenMPVerify.so -openmp-forceinline
-inline -openmp-resetbounds test.ssa.ll -S -o test.resetbounds.ll
./bin/opt -load ./lib/OpenMPVerify.so
-disable-output
-openmp-verify
test.resetbounds.ll
flang -fopenmp -S -emit-llvm -g test.f95 -o test.ll
./bin/opt -O1 test.ll -S -o test.ssa.ll
./bin/opt -load ./lib/OpenMPVerify.so -openmp-forceinline
-inline -openmp-resetbounds test.ssa.ll -S -o test.resetbounds.ll
./bin/opt -load ./lib/OpenMPVerify.so
-disable-output
-openmp-verify
test.resetbounds.ll
Weitere Beispiele für FORTRAN mit bekannten Rennbedingungen finden Sie in unserem Microbenchmark -DataraceBench Forran
Utpal Bora [email protected].
Die folgenden Personen stellten Llov auf unterschiedliche Weise an.
Pankaj kukreja <[email protected]>
Santanu Das <[email protected]>
Saurabh Joshi Website
Ramakrishna upadrasta Website
Sanjay Rajopadhye -Website
Die Quelle von LLOV wird in Kürze unter der BSD -Lizenz veröffentlicht.
Docker Registry: Hub.docker.com
Repository: LLVM
Tag: llov
Das Docker Image Contians Llov zusammen mit den folgenden Tools der Rennerkennung-
Tsan-Llvm, Bogenschütze, Schwert, Helgrind und Valgrind DRD.
Es gibt drei OpenMP-Benchmarks für Experimente.
DataraceBench v1.2,
DataraceBench Forran und
Ompscr v2.0.
@article{Bora/taco/2020,
author = {Bora, Utpal and Das, Santanu and Kukreja, Pankaj and Joshi, Saurabh and Upadrasta, Ramakrishna and Rajopadhye, Sanjay},
title = {{LLOV: A Fast Static Data-Race Checker for OpenMP Programs}},
year = {2020},
issue_date = {November 2020},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {17},
number = {4},
issn = {1544-3566},
url = {https://doi.org/10.1145/3418597},
doi = {10.1145/3418597},
abstract = {In the era of Exascale computing, writing efficient parallel programs is indispensable, and, at the same time, writing sound parallel programs is very difficult. Specifying parallelism with frameworks such as OpenMP is relatively easy, but data races in these programs are an important source of bugs. In this article, we propose LLOV, a fast, lightweight, language agnostic, and static data race checker for OpenMP programs based on the LLVM compiler framework. We compare LLOV with other state-of-the-art data race checkers on a variety of well-established benchmarks. We show that the precision, accuracy, and the F1 score of LLOV is comparable to other checkers while being orders of magnitude faster. To the best of our knowledge, LLOV is the only tool among the state-of-the-art data race checkers that can verify a C/C++ or FORTRAN program to be data race free.},
journal = {ACM Trans. Archit. Code Optim.},
month = dec,
articleno = {35},
numpages = {26},
keywords = {OpenMP, program verification, polyhedral compilation, static analysis, data race detection, shared memory programming}
}
Im Folgenden finden Sie die Einschränkungen der aktuellen Version von LLOV.
Wenn Sie Anfragen haben, wenden Sie sich bitte an "Utpal Bora" <[email protected]>.
Bitte reichen Sie einen Fehler ein, wenn Sie feststellen, dass der Rennprüfer nicht nach Bedarf funktioniert.
Grüße,
Utpal