libhsakmt: optimize system memory allocation

Use MAP_POPULATE when allocating anonymous system memory for later
GPU mapping as a userptr. This can speed up large allocations by
more than factor 2. I suspect populating pages in this way is more
efficient than the CPU page fault code path triggered by
get_user_pages in the kernel.

Change-Id: I188bbc1462ccb650d48cbfb1080dbb8eb7ada8b5
Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com>


[ROCm/ROCR-Runtime commit: 8f26c0c40c]
Этот коммит содержится в:
Felix Kuehling
2020-10-26 18:44:20 -04:00
родитель d933e70089
Коммит 35b07e1e28
+2 -2
Просмотреть файл
@@ -1566,8 +1566,8 @@ static void *fmm_allocate_host_gpu(uint32_t node_id, void *address,
/* Map anonymous pages */
if (mmap(mem, MemorySizeInBytes, PROT_READ | PROT_WRITE,
MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0)
== MAP_FAILED)
MAP_ANONYMOUS | MAP_POPULATE | MAP_PRIVATE | MAP_FIXED,
-1, 0) == MAP_FAILED)
goto out_release_area;
/* Bind to NUMA node */