Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add more tests for partial shared malloc.
authorTom Cornebize <tom.cornebize@ensimag.grenoble-inp.fr>
Wed, 5 Apr 2017 14:25:25 +0000 (16:25 +0200)
committerTom Cornebize <tom.cornebize@ensimag.grenoble-inp.fr>
Wed, 5 Apr 2017 14:25:25 +0000 (16:25 +0200)
src/smpi/smpi_shared.cpp
teshsuite/smpi/macro-partial-shared/macro-partial-shared.c
teshsuite/smpi/macro-partial-shared/macro-partial-shared.tesh

index ec76492..23e5b45 100644 (file)
@@ -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];
   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++) {
     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);
       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) {
     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);
       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) {
     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);
         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);
index 2daeb04..6a21001 100644 (file)
@@ -45,9 +45,11 @@ int main(int argc, char *argv[])
   int size;
   int mem_size = 0x10000000;
   int shared_blocks[] = {
   int size;
   int mem_size = 0x10000000;
   int shared_blocks[] = {
-    0,        0x1234567,
+    0,         0x1234567,
+    0x1300000, 0x1300010,
     0x3456789, 0x3457890,
     0x4444444, 0x5555555,
     0x3456789, 0x3457890,
     0x4444444, 0x5555555,
+    0x5555565, 0x5600000,
     0x8000000, 0x10000000
   };
   int nb_blocks = (sizeof(shared_blocks)/sizeof(int))/2;
     0x8000000, 0x10000000
   };
   int nb_blocks = (sizeof(shared_blocks)/sizeof(int))/2;
index db11ea3..c4ddfe0 100644 (file)
@@ -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
 ! 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 (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 (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
 > [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 (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 (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
 > [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 (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 (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
 > [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 (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