[Openmp-commits] [PATCH] D96749: [OpenMP] Limit number of dispatch buffers
Jonathan Peyton via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Mon Feb 22 11:15:03 PST 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG8c73be9d8675: [OpenMP] Limit number of dispatch buffers (authored by jlpeyton).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D96749/new/
https://reviews.llvm.org/D96749
Files:
openmp/runtime/src/kmp.h
openmp/runtime/src/kmp_csupport.cpp
openmp/runtime/src/kmp_ftn_entry.h
openmp/runtime/src/kmp_settings.cpp
openmp/runtime/test/env/kmp_dispatch_buf_range.c
Index: openmp/runtime/test/env/kmp_dispatch_buf_range.c
===================================================================
--- /dev/null
+++ openmp/runtime/test/env/kmp_dispatch_buf_range.c
@@ -0,0 +1,18 @@
+// RUN: %libomp-compile
+// RUN: env KMP_DISP_NUM_BUFFERS=0 %libomp-run 2>&1 | FileCheck --check-prefix=SMALL %s
+// RUN: env KMP_DISP_NUM_BUFFERS=4097 %libomp-run 2>&1 | FileCheck --check-prefix=LARGE %s
+// SMALL: OMP: Warning
+// SMALL-SAME: KMP_DISP_NUM_BUFFERS
+// SMALL-SAME: too small
+// LARGE: OMP: Warning
+// LARGE-SAME: KMP_DISP_NUM_BUFFERS
+// LARGE-SAME: too large
+#include <stdio.h>
+#include <stdlib.h>
+
+int main() {
+ int i;
+ #pragma omp parallel for
+ for (i = 0; i < 1000; i++) {}
+ return EXIT_SUCCESS;
+}
Index: openmp/runtime/src/kmp_settings.cpp
===================================================================
--- openmp/runtime/src/kmp_settings.cpp
+++ openmp/runtime/src/kmp_settings.cpp
@@ -1389,7 +1389,8 @@
KMP_WARNING(EnvSerialWarn, name);
return;
} // read value before serial initialization only
- __kmp_stg_parse_int(name, value, 1, KMP_MAX_NTH, &__kmp_dispatch_num_buffers);
+ __kmp_stg_parse_int(name, value, KMP_MIN_DISP_NUM_BUFF, KMP_MAX_DISP_NUM_BUFF,
+ &__kmp_dispatch_num_buffers);
} // __kmp_stg_parse_disp_buffers
static void __kmp_stg_print_disp_buffers(kmp_str_buf_t *buffer,
Index: openmp/runtime/src/kmp_ftn_entry.h
===================================================================
--- openmp/runtime/src/kmp_ftn_entry.h
+++ openmp/runtime/src/kmp_ftn_entry.h
@@ -202,8 +202,11 @@
#else
// ignore after initialization because some teams have already
// allocated dispatch buffers
- if (__kmp_init_serial == 0 && (KMP_DEREF arg) > 0)
- __kmp_dispatch_num_buffers = KMP_DEREF arg;
+ int num_buffers = KMP_DEREF arg;
+ if (__kmp_init_serial == FALSE && num_buffers >= KMP_MIN_DISP_NUM_BUFF &&
+ num_buffers <= KMP_MAX_DISP_NUM_BUFF) {
+ __kmp_dispatch_num_buffers = num_buffers;
+ }
#endif
}
Index: openmp/runtime/src/kmp_csupport.cpp
===================================================================
--- openmp/runtime/src/kmp_csupport.cpp
+++ openmp/runtime/src/kmp_csupport.cpp
@@ -1988,8 +1988,10 @@
void kmpc_set_disp_num_buffers(int arg) {
// ignore after initialization because some teams have already
// allocated dispatch buffers
- if (__kmp_init_serial == 0 && arg > 0)
+ if (__kmp_init_serial == FALSE && arg >= KMP_MIN_DISP_NUM_BUFF &&
+ arg <= KMP_MAX_DISP_NUM_BUFF) {
__kmp_dispatch_num_buffers = arg;
+ }
}
int kmpc_set_affinity_mask_proc(int proc, void **mask) {
Index: openmp/runtime/src/kmp.h
===================================================================
--- openmp/runtime/src/kmp.h
+++ openmp/runtime/src/kmp.h
@@ -1124,7 +1124,10 @@
#define KMP_MAX_CHUNK (INT_MAX - 1)
#define KMP_DEFAULT_CHUNK 1
+#define KMP_MIN_DISP_NUM_BUFF 1
#define KMP_DFLT_DISP_NUM_BUFF 7
+#define KMP_MAX_DISP_NUM_BUFF 4096
+
#define KMP_MAX_ORDERED 8
#define KMP_MAX_FIELDS 32
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D96749.325503.patch
Type: text/x-patch
Size: 3046 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210222/f379a892/attachment-0001.bin>
More information about the Openmp-commits
mailing list