llvm-project/openmp/runtime/cmake
Jonathan Peyton 1cdd87adfd 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
2016-11-14 21:08:35 +00:00
..
LibompCheckFortranFlag.cmake Re-indent the CMake refactor to two-space indention 2015-07-15 16:57:19 +00:00
LibompCheckLinkerFlag.cmake [CMake] Fix libomp_check_linker_flag function 2015-07-23 14:41:35 +00:00
LibompDefinitions.cmake Revert r273898's UNICODE quick fix in favor of CMake's remove_definitions() 2016-06-28 19:25:13 +00:00
LibompExports.cmake [cmake] Fix for a bug https://llvm.org/bugs/show_bug.cgi?id=30489 "Cannot build with -DLIBOMP_FORTRAN_MODULES=True" 2016-09-30 22:05:45 +00:00
LibompGetArchitecture.cmake Re-indent the CMake refactor to two-space indention 2015-07-15 16:57:19 +00:00
LibompHandleFlags.cmake Introduce dynamic affinity dispatch capabilities 2016-11-14 21:08:35 +00:00
LibompMicroTests.cmake Bypass Perl modules in build system 2016-01-26 19:44:31 +00:00
LibompUtils.cmake Re-indent the CMake refactor to two-space indention 2015-07-15 16:57:19 +00:00
config-ix.cmake Introduce dynamic affinity dispatch capabilities 2016-11-14 21:08:35 +00:00