L4 completely add support for multi predictor, working on ver 5 mat para
This commit is contained in:
@@ -56,14 +56,41 @@ SN_API int SN_DECL sn_get_numa_each(int numa_id, uint64_t *internal, uint32_t *g
|
||||
|
||||
int intra = 0;
|
||||
while (mask) {
|
||||
uint32_t idx;
|
||||
DWORD idx;
|
||||
_BitScanForward64(&idx, mask);
|
||||
int _ = (internal == NULL) ? intra : (internal[intra] = intra);
|
||||
global[intra] = (int)idx;
|
||||
if (internal != NULL)
|
||||
internal[intra] = (uint64_t)intra;
|
||||
global[intra] = (uint32_t)idx;
|
||||
intra++;
|
||||
mask &= mask - 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
SN_API void *SN_DECL sn_numa_alloc(size_t size, int numa_id)
|
||||
{
|
||||
if (size == 0)
|
||||
return NULL;
|
||||
|
||||
if (numa_id < 0)
|
||||
return VirtualAlloc(NULL, size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
|
||||
|
||||
ULONG highest = 0;
|
||||
if (!GetNumaHighestNodeNumber(&highest) || (ULONG)numa_id > highest)
|
||||
return NULL;
|
||||
|
||||
return VirtualAllocExNuma(GetCurrentProcess(), NULL, size, MEM_RESERVE | MEM_COMMIT,
|
||||
PAGE_READWRITE, (DWORD)numa_id);
|
||||
}
|
||||
|
||||
SN_API void SN_DECL sn_numa_free(void *ptr, size_t size, int numa_id)
|
||||
{
|
||||
(void)size;
|
||||
(void)numa_id;
|
||||
|
||||
if (ptr != NULL)
|
||||
VirtualFree(ptr, 0, MEM_RELEASE);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user