HomePhabricator

Introduce dynamic affinity dispatch capabilities

Description

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

Details

Committed
jlpeytonNov 14 2016, 1:08 PM
Differential Revision
D26356: Dynamic affinity dispatch capabilities.
Branches
Unknown
Tags
Unknown