LLOV adalah singkatan dari LLVM OpenMP Verifier. Ini adalah alat deteksi lomba data statis di LLVM untuk program OpenMP. LLOV dapat mendeteksi balapan data dalam program OpenMP v4.5 yang ditulis dalam C/C ++ dan Fortran.
LLOV menggunakan teknik kompilasi polihedral untuk mendeteksi kondisi balapan pada waktu kompilasi.
Tidak seperti alat deteksi ras lainnya, LLOV dapat menandai wilayah kode sebagai data lomba bebas.
Jika OpenMP tidak diinstal pada sistem Anda atau jalur tidak diatur dengan benar, Anda dapat menunjuk ke header & lib yang disertakan dengan bendera kompiler tambahan. -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
Untuk lebih banyak contoh FORTRAN dengan kondisi balapan yang diketahui, lihat Microbenchmark DataraceBench Fortran kami
UTPAL BORA [email protected].
Orang -orang berikut ini disuling ke LLOV dengan cara yang berbeda.
Pankaj Kukreja <[email protected]>
Santanu Das <[email protected]>
Situs web Saurabh Joshi
Situs web Ramakrishna Upadrasta
Situs web Sanjay Rajopadhye
Sumber LLOV akan segera dirilis di bawah lisensi BSD.
Docker Registry: hub.docker.com
Repositori: llvm
Tag: llov
Gambar Docker CONNIANS LLOV, bersama dengan alat deteksi ras berikut-
Tsan-llvm, pemanah, pedang, helgrind, dan valgrind drd.
Ada tiga tolok ukur openmp untuk eksperimen-
DATARACEBENCH V1.2,
DATARACEBENCH FORTRAN, dan
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}
}
Berikut ini adalah keterbatasan versi LLOV saat ini.
Jika Anda memiliki pertanyaan, silakan hubungi "Utpal Bora" <[email protected]>.
Harap ajukan bug jika Anda menemukan pemeriksa balap tidak berfungsi sesuai kebutuhan.
Salam,
Utpal