Llov significa LLVM OpenMP Verifier. É uma ferramenta estática de detecção de corrida de dados no LLVM para programas OpenMP. O LLOV pode detectar corridas de dados nos programas OpenMP v4.5 escritos em C/C ++ e Fortran.
O LLOV usa técnicas de compilação poliédrica para detectar condições de corrida no momento da compilação.
Ao contrário de outra ferramenta de detecção de corrida, o LLOV pode marcar uma região de código como a corrida de dados gratuita.
Se o OpenMP não estiver instalado no seu sistema ou o caminho não estiver definido corretamente, você poderá apontar para o cabeçalho incluído e Lib com sinalizadores adicionais do compilador. -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
Para obter mais exemplos fortran com condições de corrida conhecidas, confira o nosso Microbenchmark DataaraceBench fortran
Utpal bora [email protected].
As seguintes pessoas contaminadas para Llov de maneiras diferentes.
Pankaj kukreja <[email protected]>
Santanu das <[email protected]>
Site Saurabh Joshi
Site Ramakrishna Upadrasta
Site de Sanjay Rajopadhye
A fonte do LLOV será divulgada em breve sob licença BSD.
Docker Registry: hub.docker.com
Repositório: LLVM
Tag: Llov
A imagem do docker contians llov, juntamente com as seguintes ferramentas de detecção de corrida-
Tsan-llvm, Archer, Sword, Helgrind e Valgrind Drd.
Existem três benchmarks OpenMP para experimentação-
DataraceBench v1.2,
DataraceBench Fortran, e
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}
}
A seguir, estão as limitações da versão atual do LLOV.
Se você tiver alguma consulta, entre em contato com "Utpal bora" <[email protected]>.
Por favor, arquive um bug se você encontrar o verificador de corrida não estiver funcionando conforme necessário.
Cumprimentos,
Utpal