diff options
| author | Jonathan Peyton <jonathan.l.peyton@intel.com> | 2016-11-14 21:08:35 +0000 |
|---|---|---|
| committer | Jonathan Peyton <jonathan.l.peyton@intel.com> | 2016-11-14 21:08:35 +0000 |
| commit | 1cdd87adfd379d178c2aeae59b5bb05079ef67f5 (patch) | |
| tree | 3ea5a3378d309ca3307495e7ccab89d7aa337d66 /openmp/runtime/cmake | |
| parent | 22fc0078095c5806aba560a3ec9add1e9c11e647 (diff) | |
| download | bcm5719-llvm-1cdd87adfd379d178c2aeae59b5bb05079ef67f5.tar.gz bcm5719-llvm-1cdd87adfd379d178c2aeae59b5bb05079ef67f5.zip | |
Introduce dynamic affinity dispatch capabilities
This set of changes enables the affinity interface (Either the preexisting
native operating system or HWLOC) to be dynamically set at runtime
initialization. The point of this change is that we were seeing performance
degradations when using HWLOC. This allows the user to use the old affinity
mechanisms which on large machines (>64 cores) makes a large difference in
initialization time.
These changes mostly move affinity code under a small class hierarchy:
KMPAffinity
class Mask {}
KMPNativeAffinity : public KMPAffinity
class Mask : public KMPAffinity::Mask
KMPHwlocAffinity
class Mask : public KMPAffinity::Mask
Since all interface functions (for both affinity and the mask implementation)
are virtual, the implementation can be chosen at runtime initialization.
Differential Revision: https://reviews.llvm.org/D26356
llvm-svn: 286890
Diffstat (limited to 'openmp/runtime/cmake')
| -rw-r--r-- | openmp/runtime/cmake/LibompHandleFlags.cmake | 1 | ||||
| -rw-r--r-- | openmp/runtime/cmake/config-ix.cmake | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/openmp/runtime/cmake/LibompHandleFlags.cmake b/openmp/runtime/cmake/LibompHandleFlags.cmake index 5a7386074bc..5cc8d887fcc 100644 --- a/openmp/runtime/cmake/LibompHandleFlags.cmake +++ b/openmp/runtime/cmake/LibompHandleFlags.cmake @@ -28,6 +28,7 @@ function(libomp_get_c_and_cxxflags_common flags) set(flags_local) libomp_append(flags_local -std=c++11 LIBOMP_HAVE_STD_CPP11_FLAG) libomp_append(flags_local -fno-exceptions LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG) + libomp_append(flags_local -fno-rtti LIBOMP_HAVE_FNO_RTTI_FLAG) if(${LIBOMP_ENABLE_WERROR}) libomp_append(flags_local -Werror LIBOMP_HAVE_WERROR_FLAG) endif() diff --git a/openmp/runtime/cmake/config-ix.cmake b/openmp/runtime/cmake/config-ix.cmake index c17c9f8a324..0375d211b75 100644 --- a/openmp/runtime/cmake/config-ix.cmake +++ b/openmp/runtime/cmake/config-ix.cmake @@ -49,6 +49,7 @@ endfunction() # Checking C, CXX, Linker Flags check_cxx_compiler_flag(-std=c++11 LIBOMP_HAVE_STD_CPP11_FLAG) check_cxx_compiler_flag(-fno-exceptions LIBOMP_HAVE_FNO_EXCEPTIONS_FLAG) +check_cxx_compiler_flag(-fno-rtti LIBOMP_HAVE_FNO_RTTI_FLAG) check_c_compiler_flag("-x c++" LIBOMP_HAVE_X_CPP_FLAG) check_c_compiler_flag(-Werror LIBOMP_HAVE_WERROR_FLAG) check_c_compiler_flag(-Wunused-function LIBOMP_HAVE_WNO_UNUSED_FUNCTION_FLAG) |

