[Openmp-commits] [openmp] 90e4ebd - [OpenMP][OMPT] fix reduction test for 32-bit x86

via Openmp-commits openmp-commits at lists.llvm.org
Tue Feb 4 03:19:19 PST 2020


Author: protze at itc.rwth-aachen.de
Date: 2020-02-04T12:19:10+01:00
New Revision: 90e4ebdce55fd3c1f8877f19784a5339b9890f98

URL: https://github.com/llvm/llvm-project/commit/90e4ebdce55fd3c1f8877f19784a5339b9890f98
DIFF: https://github.com/llvm/llvm-project/commit/90e4ebdce55fd3c1f8877f19784a5339b9890f98.diff

LOG: [OpenMP][OMPT] fix reduction test for 32-bit x86

Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=44733 | TEST 'libomp :: ompt/synchronization/reduction/tree_reduce.c' FAILED on 32-bit x86 ]]

For 32-bit we need at least 3 variables to avoid atomic reduction to be
choosen by runtime function `__kmp_determine_reduction_method`.
This patch adds reduction variables to the testcase.

Reviewers: mgorny, Hahnfeld

Differential Revision: https://reviews.llvm.org/D73850

Added: 
    

Modified: 
    openmp/runtime/test/ompt/synchronization/reduction/tree_reduce.c

Removed: 
    


################################################################################
diff  --git a/openmp/runtime/test/ompt/synchronization/reduction/tree_reduce.c b/openmp/runtime/test/ompt/synchronization/reduction/tree_reduce.c
index 2c73fe139004..847abc109b2b 100644
--- a/openmp/runtime/test/ompt/synchronization/reduction/tree_reduce.c
+++ b/openmp/runtime/test/ompt/synchronization/reduction/tree_reduce.c
@@ -1,4 +1,5 @@
 // RUN: %libomp-compile-and-run | %sort-threads | FileCheck %s
+// RUN: %libomp-compile -DNOWAIT && %libomp-run | %sort-threads | FileCheck %s
 // REQUIRES: ompt
 // UNSUPPORTED: gcc
 #include "callback.h"
@@ -11,14 +12,17 @@
 #endif
 
 int main() {
-  int sum = 0;
+  int sum = 0, a = 0, b = 0;
   int i;
 #pragma omp parallel num_threads(5)
-#pragma omp for reduction(+ : sum) FOR_CLAUSE
+// for 32-bit architecture we need at least 3 variables to trigger tree
+#pragma omp for reduction(+ : sum, a, b) FOR_CLAUSE
   for (i = 0; i < 10000; i++) {
-    sum += i;
+    a = b = sum += i;
   }
 
+
+  printf("%i\n", sum);
   // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
 
   // CHECK: {{^}}[[MASTER_ID:[0-9]+]]: ompt_event_parallel_begin:


        


More information about the Openmp-commits mailing list