LLOVはLLVM OpenMP検証剤を表しています。 OpenMPプログラムのLLVMの静的なデータレース検出ツールです。 LLOVは、C/C ++およびFORTRANで記述されたOpenMP V4.5プログラムでデータレースを検出できます。
Llovは、一時的な編集技術を使用して、コンパイル時に人種条件を検出します。
他のレース検出ツールとは異なり、LLOVはコードの領域をデータレースフリーとしてマークできます。
OpenMPがシステムにインストールされていない場合、またはパスが適切に設定されていない場合、追加のコンパイラフラグを備えたヘッダー&LIBを指すことができます。 -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
既知の人種条件を備えたFortranの例については、マイクロバンチマークDataraceBench fortranをご覧ください
utpal bora [email protected]。
次の人々は、さまざまな方法でllovにcont延しました。
Pankaj Kukreja <[email protected]>
santanu das <[email protected]>
Saurabh Joshiのウェブサイト
Ramakrishna Upadrasta Webサイト
Sanjay RajopadhyeのWebサイト
LLOVのソースは、BSDライセンスの下でまもなくリリースされます。
Dockerレジストリ:hub.docker.com
リポジトリ:LLVM
タグ:llov
Docker Image Contians llov、および次のレース検出ツールとともに
Tsan-llvm、Archer、Sword、Helgrind、およびValgrind Drd。
実験用の3つのOpenMPベンチマークがあります -
DataraceBench v1.2、
Dataracebench fortran、および
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}
}
以下は、LLOVの現在のバージョンの制限です。
クエリがある場合は、「utpal bora」<[email protected]>にお問い合わせください。
レースチェッカーが必要に応じて機能していないことがわかった場合は、バグを提出してください。
よろしく、
utpal