| 266 | void Free(void* ptr) { free(ptr); } |
| 267 | |
| 268 | void* NUMAMalloc(int node, size_t size, int minimum_alignment) { |
| 269 | #ifdef TENSORFLOW_USE_NUMA |
| 270 | if (HaveHWLocTopology()) { |
| 271 | hwloc_obj_t numa_node = GetHWLocTypeIndex(HWLOC_OBJ_NUMANODE, node); |
| 272 | if (numa_node) { |
| 273 | return hwloc_alloc_membind(hwloc_topology_handle, size, |
| 274 | numa_node->nodeset, HWLOC_MEMBIND_BIND, |
| 275 | HWLOC_MEMBIND_BYNODESET); |
| 276 | } else { |
| 277 | LOG(ERROR) << "Failed to find hwloc NUMA node " << node; |
| 278 | } |
| 279 | } |
| 280 | #endif // TENSORFLOW_USE_NUMA |
| 281 | return AlignedMalloc(size, minimum_alignment); |
| 282 | } |
| 283 | |
| 284 | void NUMAFree(void* ptr, size_t size) { |
| 285 | #ifdef TENSORFLOW_USE_NUMA |