From: Tom Cornebize Date: Wed, 5 Apr 2017 14:25:25 +0000 (+0200) Subject: Add more tests for partial shared malloc. X-Git-Tag: v3.16~353^2~1^2~14 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/16d2534d37e9f64cb4ea28fa797c004a9b57343e Add more tests for partial shared malloc. --- diff --git a/src/smpi/smpi_shared.cpp b/src/smpi/smpi_shared.cpp index ec7649218b..23e5b45824 100644 --- a/src/smpi/smpi_shared.cpp +++ b/src/smpi/smpi_shared.cpp @@ -237,10 +237,12 @@ void *smpi_shared_malloc_global__(size_t size, const char *file, int line, int * for(int i_block = 0; i_block < nb_shared_blocks; i_block ++) { int start_offset = shared_block_offsets[2*i_block]; int stop_offset = shared_block_offsets[2*i_block+1]; +// fprintf(stderr, "shared block 0x%x - 0x%x\n", start_offset, stop_offset); int start_block_offset = ALIGN_UP(start_offset, smpi_shared_malloc_blocksize); int stop_block_offset = ALIGN_DOWN(stop_offset, smpi_shared_malloc_blocksize); unsigned int i; for (i = start_block_offset / smpi_shared_malloc_blocksize; i < stop_block_offset / smpi_shared_malloc_blocksize; i++) { +// fprintf(stderr, "\tmmap:for 0x%x - 0x%x\n", i*smpi_shared_malloc_blocksize, smpi_shared_malloc_blocksize); void* pos = (void*)((unsigned long)mem + i * smpi_shared_malloc_blocksize); void* res = mmap(pos, smpi_shared_malloc_blocksize, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED | MAP_POPULATE, smpi_shared_malloc_bogusfile, 0); @@ -252,6 +254,7 @@ void *smpi_shared_malloc_global__(size_t size, const char *file, int line, int * int low_page_start_offset = ALIGN_UP(start_offset, PAGE_SIZE); int low_page_stop_offset = start_block_offset < ALIGN_DOWN(stop_offset, PAGE_SIZE) ? start_block_offset : ALIGN_DOWN(stop_offset, PAGE_SIZE); if(low_page_start_offset < low_page_stop_offset) { +// fprintf(stderr, "\tmmap:low 0x%x - 0x%x\n", low_page_start_offset, low_page_stop_offset-low_page_start_offset); void* pos = (void*)((unsigned long)mem + low_page_start_offset); void* res = mmap(pos, low_page_stop_offset-low_page_start_offset, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED | MAP_POPULATE, smpi_shared_malloc_bogusfile, 0); @@ -263,6 +266,7 @@ void *smpi_shared_malloc_global__(size_t size, const char *file, int line, int * if(low_page_stop_offset <= stop_block_offset) { int high_page_stop_offset = stop_offset == size ? size : ALIGN_DOWN(stop_offset, PAGE_SIZE); if(high_page_stop_offset > stop_block_offset) { +// fprintf(stderr, "\tmmap:high 0x%x - 0x%x\n", stop_block_offset, high_page_stop_offset-stop_block_offset); void* pos = (void*)((unsigned long)mem + stop_block_offset); void* res = mmap(pos, high_page_stop_offset-stop_block_offset, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED | MAP_POPULATE, smpi_shared_malloc_bogusfile, 0); diff --git a/teshsuite/smpi/macro-partial-shared/macro-partial-shared.c b/teshsuite/smpi/macro-partial-shared/macro-partial-shared.c index 2daeb04d8a..6a21001c17 100644 --- a/teshsuite/smpi/macro-partial-shared/macro-partial-shared.c +++ b/teshsuite/smpi/macro-partial-shared/macro-partial-shared.c @@ -45,9 +45,11 @@ int main(int argc, char *argv[]) int size; int mem_size = 0x10000000; int shared_blocks[] = { - 0, 0x1234567, + 0, 0x1234567, + 0x1300000, 0x1300010, 0x3456789, 0x3457890, 0x4444444, 0x5555555, + 0x5555565, 0x5600000, 0x8000000, 0x10000000 }; int nb_blocks = (sizeof(shared_blocks)/sizeof(int))/2; diff --git a/teshsuite/smpi/macro-partial-shared/macro-partial-shared.tesh b/teshsuite/smpi/macro-partial-shared/macro-partial-shared.tesh index db11ea3e9c..c4ddfe0acf 100644 --- a/teshsuite/smpi/macro-partial-shared/macro-partial-shared.tesh +++ b/teshsuite/smpi/macro-partial-shared/macro-partial-shared.tesh @@ -3,31 +3,47 @@ p Test compute ! output sort ! timeout 5 $ ${bindir:=.}/../../../bin/smpirun -hostfile ../hostfile -platform ../../../examples/platforms/small_platform.xml -np 4 ${bindir:=.}/macro-partial-shared --log=smpi_kernel.thres:warning --log=xbt_cfg.thres:warning -> [0] The result of the private check for block (0x1234567, 0x3456789) is: 1 -> [0] The result of the private check for block (0x3457890, 0x4444444) is: 1 -> [0] The result of the private check for block (0x5555555, 0x8000000) is: 1 > [0] The result of the shared check for block (0x0, 0x1234567) is: 1 +> [0] The result of the shared check for block (0x1300000, 0x1300010) is: 1 > [0] The result of the shared check for block (0x3456789, 0x3457890) is: 1 > [0] The result of the shared check for block (0x4444444, 0x5555555) is: 1 +> [0] The result of the shared check for block (0x5555565, 0x5600000) is: 1 > [0] The result of the shared check for block (0x8000000, 0x10000000) is: 1 -> [1] The result of the private check for block (0x1234567, 0x3456789) is: 1 -> [1] The result of the private check for block (0x3457890, 0x4444444) is: 1 -> [1] The result of the private check for block (0x5555555, 0x8000000) is: 1 +> [3] The result of the shared check for block (0x0, 0x1234567) is: 1 +> [3] The result of the shared check for block (0x1300000, 0x1300010) is: 1 +> [3] The result of the shared check for block (0x3456789, 0x3457890) is: 1 +> [3] The result of the shared check for block (0x4444444, 0x5555555) is: 1 +> [3] The result of the shared check for block (0x5555565, 0x5600000) is: 1 +> [3] The result of the shared check for block (0x8000000, 0x10000000) is: 1 > [1] The result of the shared check for block (0x0, 0x1234567) is: 1 +> [1] The result of the shared check for block (0x1300000, 0x1300010) is: 1 > [1] The result of the shared check for block (0x3456789, 0x3457890) is: 1 > [1] The result of the shared check for block (0x4444444, 0x5555555) is: 1 +> [1] The result of the shared check for block (0x5555565, 0x5600000) is: 1 > [1] The result of the shared check for block (0x8000000, 0x10000000) is: 1 -> [2] The result of the private check for block (0x1234567, 0x3456789) is: 1 -> [2] The result of the private check for block (0x3457890, 0x4444444) is: 1 -> [2] The result of the private check for block (0x5555555, 0x8000000) is: 1 > [2] The result of the shared check for block (0x0, 0x1234567) is: 1 +> [2] The result of the shared check for block (0x1300000, 0x1300010) is: 1 > [2] The result of the shared check for block (0x3456789, 0x3457890) is: 1 > [2] The result of the shared check for block (0x4444444, 0x5555555) is: 1 +> [2] The result of the shared check for block (0x5555565, 0x5600000) is: 1 > [2] The result of the shared check for block (0x8000000, 0x10000000) is: 1 -> [3] The result of the private check for block (0x1234567, 0x3456789) is: 1 +> [0] The result of the private check for block (0x1234567, 0x1300000) is: 1 +> [0] The result of the private check for block (0x1300010, 0x3456789) is: 1 +> [0] The result of the private check for block (0x3457890, 0x4444444) is: 1 +> [0] The result of the private check for block (0x5555555, 0x5555565) is: 1 +> [0] The result of the private check for block (0x5600000, 0x8000000) is: 1 +> [3] The result of the private check for block (0x1234567, 0x1300000) is: 1 +> [3] The result of the private check for block (0x1300010, 0x3456789) is: 1 > [3] The result of the private check for block (0x3457890, 0x4444444) is: 1 -> [3] The result of the private check for block (0x5555555, 0x8000000) is: 1 -> [3] The result of the shared check for block (0x0, 0x1234567) is: 1 -> [3] The result of the shared check for block (0x3456789, 0x3457890) is: 1 -> [3] The result of the shared check for block (0x4444444, 0x5555555) is: 1 -> [3] The result of the shared check for block (0x8000000, 0x10000000) is: 1 +> [3] The result of the private check for block (0x5555555, 0x5555565) is: 1 +> [3] The result of the private check for block (0x5600000, 0x8000000) is: 1 +> [1] The result of the private check for block (0x1234567, 0x1300000) is: 1 +> [1] The result of the private check for block (0x1300010, 0x3456789) is: 1 +> [1] The result of the private check for block (0x3457890, 0x4444444) is: 1 +> [1] The result of the private check for block (0x5555555, 0x5555565) is: 1 +> [1] The result of the private check for block (0x5600000, 0x8000000) is: 1 +> [2] The result of the private check for block (0x1234567, 0x1300000) is: 1 +> [2] The result of the private check for block (0x1300010, 0x3456789) is: 1 +> [2] The result of the private check for block (0x3457890, 0x4444444) is: 1 +> [2] The result of the private check for block (0x5555555, 0x5555565) is: 1 +> [2] The result of the private check for block (0x5600000, 0x8000000) is: 1