From 2e1e9dc9dd1aa89c53bf3527f93e4e918e197b62 Mon Sep 17 00:00:00 2001 From: Joseph Schuchart Date: Tue, 29 Sep 2020 07:45:07 +0200 Subject: [PATCH] OSC RDMA: only touch pages before memory registration, don't fill them Signed-off-by: Joseph Schuchart (cherry picked from commit 52b52b8ebbe82636b65f0adc6a0a40c165eda306) --- ompi/mca/osc/rdma/osc_rdma_component.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ompi/mca/osc/rdma/osc_rdma_component.c b/ompi/mca/osc/rdma/osc_rdma_component.c index bd6e45cb93..8facf63439 100644 --- a/ompi/mca/osc/rdma/osc_rdma_component.c +++ b/ompi/mca/osc/rdma/osc_rdma_component.c @@ -650,7 +650,12 @@ static int allocate_state_shared (ompi_osc_rdma_module_t *module, void **base, s } if (size && MPI_WIN_FLAVOR_ALLOCATE == module->flavor) { - *base = (void *)((intptr_t) module->segment_base + my_base_offset); + char *baseptr = (char *)((intptr_t) module->segment_base + my_base_offset); + *base = (void *)baseptr; + // touch each page to force allocation on local NUMA node + for (size_t i = 0; i < size; i += page_size) { + baseptr[i] = 0; + } } module->rank_array = (ompi_osc_rdma_rank_data_t *) module->segment_base;