LLOV: A Fast Static Data-Race Checker for OpenMP Programs
Utpal Bora
PhD Student Computer Science and Engineering IIT Hyderabad, India
February 23, 2020
Bora, Utpal (IITH) LLVM-Performance@CGO20 1 / 29
LLOV : A Fast Static Data-Race Checker for OpenMP Programs Utpal - - PowerPoint PPT Presentation
LLOV : A Fast Static Data-Race Checker for OpenMP Programs Utpal Bora PhD Student Computer Science and Engineering IIT Hyderabad, India February 23, 2020 Bora, Utpal (IITH) LLVM-Performance@CGO20 1 / 29 Table of Contents Motivation for
Bora, Utpal (IITH) LLVM-Performance@CGO20 1 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 2 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 3 / 29
1 #pragma omp
2
3
4
5
6
Bora, Utpal (IITH) LLVM-Performance@CGO20 4 / 29
1
2
3
4
5
6
Bora, Utpal (IITH) LLVM-Performance@CGO20 4 / 29
1 #pragma omp simd 2 for (int i=0; i<len -1; i++){ 3
4 }
Bora, Utpal (IITH) LLVM-Performance@CGO20 4 / 29
1 #pragma omp
2 #pragma omp for nowait 3
4
5 #pragma omp single 6
7
Bora, Utpal (IITH) LLVM-Performance@CGO20 4 / 29
1 #pragma omp
2
3
4
Bora, Utpal (IITH) LLVM-Performance@CGO20 4 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 5 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 5 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 6 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 6 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 6 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 6 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 6 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 6 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 7 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 8 / 29
LLVM-IR OpenMP Source C/C++/FORTRAN Collect OpenMP information Verifier (loadable module) Polly Data Race Warnings Alias Analysis LLOV : LLVM OpenMP Verifier
Bora, Utpal (IITH) LLVM-Performance@CGO20 9 / 29
1
2
3
4
5
6
i dimension j dimension 1 2 3 4 5 6 1 2 3 4 5 6
Bora, Utpal (IITH) LLVM-Performance@CGO20 10 / 29
1
2
3
4
5
6
i dimension j dimension 1 2 3 4 5 6 1 2 3 4 5 6
Bora, Utpal (IITH) LLVM-Performance@CGO20 11 / 29
1
2
3
4
5
6
i dimension j dimension 1 2 3 4 5 6 1 2 3 4 5 6
Bora, Utpal (IITH) LLVM-Performance@CGO20 12 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 13 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 14 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 15 / 29
Tools Race: Yes Race: No Coverage/116 TP FN TN FP Helgrind 56 3 2 55 116 Valgrind DRD 56 3 26 31 116 TSan-LLVM 57 2 2 55 116 Archer 56 3 2 55 116 SWORD 47 4 24 4 79 LLOV 45 3 28 9 85 Bora, Utpal (IITH) LLVM-Performance@CGO20 16 / 29
Tools Race: Yes Race: No Coverage/116 TP FN TN FP Helgrind 56 3 2 55 116 Valgrind DRD 56 3 26 31 116 TSan-LLVM 57 2 2 55 116 Archer 56 3 2 55 116 SWORD 47 4 24 4 79 LLOV 45 3 28 9 85
Tools Race: Yes Race: No Coverage/116 TP FN TN FP Helgrind 46 1 2 17 66 Valgrind DRD 46 1 13 6 66 TSan-LLVM 46 1 2 17 66 Archer 46 1 2 17 66 SWORD 46 1 18 1 66 LLOV 44 3 16 3 66 Bora, Utpal (IITH) LLVM-Performance@CGO20 16 / 29
Tools Precision Recall Accuracy F1 Score Diagnostic odds ratio Helgrind 0.50 0.95 0.50 0.66 0.68 Valgrind DRD 0.64 0.95 0.71 0.77 15.66 TSan-LLVM 0.51 0.97 0.51 0.67 1.04 Archer 0.50 0.95 0.50 0.66 0.68 SWORD 0.92 0.92 0.90 0.92 70.50 LLOV 0.83 0.94 0.86 0.88 46.67 Bora, Utpal (IITH) LLVM-Performance@CGO20 17 / 29
Tools Precision Recall Accuracy F1 Score Diagnostic odds ratio Helgrind 0.50 0.95 0.50 0.66 0.68 Valgrind DRD 0.64 0.95 0.71 0.77 15.66 TSan-LLVM 0.51 0.97 0.51 0.67 1.04 Archer 0.50 0.95 0.50 0.66 0.68 SWORD 0.92 0.92 0.90 0.92 70.50 LLOV 0.83 0.94 0.86 0.88 46.67
Tools Precision Recall Accuracy F1 Score Diagnostic odds ratio Helgrind 0.73 0.98 0.73 0.84 5.41 Valgrind DRD 0.88 0.98 0.89 0.93 99.67 TSan-LLVM 0.73 0.98 0.73 0.84 5.41 Archer 0.73 0.98 0.73 0.84 5.41 SWORD 0.98 0.98 0.97 0.98 828.00 LLOV 0.94 0.94 0.91 0.94 78.22 Bora, Utpal (IITH) LLVM-Performance@CGO20 17 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 18 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 19 / 29
Kernel LLOV Helgrind DRD TSan Archer SWORD Manually verified kernels with data races c loopA.badSolution 1 1 1 1 1 1 c loopA.solution2 1 1 1 1 1 c loopA.solution3 1 1 1 1 1 c loopB.badSolution1 1 1 1 1 1 1 c loopB.badSolution2 1 1 1 1 1 1 c loopB.pipelineSolution 1 1 1 1 1 c md 1 2 2 2 1 CT c lu 1 1 1 1 1 Manually verified race free kernels c loopA.solution1 2 1 2 1 c mandel 1 1 1 c pi 1 1 1 c jacobi01 1 2 1 CT c jacobi02 1 1 1 CT c jacobi03 1 1 CT Unverified kernels c fft 1 1 1 1 1 CT c fft6 1 1 1 1 CT c qsort 1 1 1 1 CT c GraphSearch cpp qsomp1 cpp qsomp2 cpp qsomp3 cpp qsomp4 cpp qsomp5 cpp qsomp6 cpp qsomp7 Bora, Utpal (IITH) LLVM-Performance@CGO20 20 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 21 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 22 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 23 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 24 / 29
OpenMP Pragma LLOV PolyOMP DRACO SWORD #pragma omp parallel Y Y Y Y #pragma omp for Y Y Y Y #pragma omp parallel for Y Y Y Y #pragma omp atomic Y N N Y #pragma omp threadprivate Y N N N #pragma omp master Y N N Y #pragma omp single Y N N Y #pragma omp simd Y N Y N #pragma omp parallel for simd Y N Y N #pragma omp distribute Y N N N #pragma omp ordered Y N N N #pragma omp critical Y N N Y #pragma omp parallel sections N N N Y #pragma omp sections N N N Y #pragma omp declare reduction N N N N #pragma omp task N N N N #pragma omp taskgroup N N N N #pragma omp taskloop N N N N #pragma omp taskwait N N N N #pragma omp teams N N N N #pragma omp barrier N N N Y #pragma omp target map N N N N Bora, Utpal (IITH) LLVM-Performance@CGO20 25 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 26 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 27 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 27 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 27 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 28 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 29 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 29 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 29 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 29 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 29 / 29
Bora, Utpal (IITH) LLVM-Performance@CGO20 29 / 29
1 Function isRaceFree(L): 2
3
4
5
6
7
8
9
10 End Function
1 Function isParallel(RDG, dim): 2
3
4
5
6
7
8
9
10
11
12
13
14 End Function Bora, Utpal (IITH) LLVM-Performance@CGO20 1 / 5
Bora, Utpal (IITH) LLVM-Performance@CGO20 2 / 5
Bora, Utpal (IITH) LLVM-Performance@CGO20 3 / 5
Bora, Utpal (IITH) LLVM-Performance@CGO20 4 / 5
Bora, Utpal (IITH) LLVM-Performance@CGO20 5 / 5