diff --git a/src/crypto/common/VirtualMemory.cpp b/src/crypto/common/VirtualMemory.cpp index edacf0df..e3c70dfb 100644 --- a/src/crypto/common/VirtualMemory.cpp +++ b/src/crypto/common/VirtualMemory.cpp @@ -49,7 +49,12 @@ uint32_t xmrig::VirtualMemory::bindToNUMANode(int64_t affinity) const unsigned puId = static_cast(affinity); hwloc_obj_t pu = hwloc_get_pu_obj_by_os_index(topology, puId); + +# if HWLOC_API_VERSION >= 0x20000 + if (pu == nullptr || hwloc_set_membind(topology, pu->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_THREAD | HWLOC_MEMBIND_BYNODESET) < 0) { +# else if (pu == nullptr || hwloc_set_membind_nodeset(topology, pu->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_THREAD) < 0) { +# endif LOG_WARN("CPU #%02u warning: \"can't bind memory\"", puId); } diff --git a/src/crypto/rx/Rx.cpp b/src/crypto/rx/Rx.cpp index cc89fe34..5fc95006 100644 --- a/src/crypto/rx/Rx.cpp +++ b/src/crypto/rx/Rx.cpp @@ -91,7 +91,11 @@ public: hwloc_obj_t node = hwloc_get_numanode_obj_by_os_index(topology, nodeId); if (node) { if (HwlocCpuInfo::has(HwlocCpuInfo::SET_THISTHREAD_MEMBIND)) { +# if HWLOC_API_VERSION >= 0x20000 + hwloc_set_membind(topology, node->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_THREAD | HWLOC_MEMBIND_BYNODESET); +# else hwloc_set_membind_nodeset(topology, node->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_THREAD); +# endif } Platform::setThreadAffinity(static_cast(hwloc_bitmap_first(node->cpuset)));