From 35b07e1e287397cd175b0989a84b08ae40695016 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Mon, 26 Oct 2020 18:44:20 -0400 Subject: [PATCH] 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 [ROCm/ROCR-Runtime commit: 8f26c0c40c6079bbbf29fbab48f7f05fc121661a] --- projects/rocr-runtime/src/fmm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/projects/rocr-runtime/src/fmm.c b/projects/rocr-runtime/src/fmm.c index d3f289761d..959e2d21dc 100644 --- a/projects/rocr-runtime/src/fmm.c +++ b/projects/rocr-runtime/src/fmm.c @@ -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 */