Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Working copy optimization \o/
authorTom Cornebize <tom.cornebize@ensimag.grenoble-inp.fr>
Fri, 7 Apr 2017 11:58:18 +0000 (13:58 +0200)
committerTom Cornebize <tom.cornebize@ensimag.grenoble-inp.fr>
Fri, 7 Apr 2017 11:58:21 +0000 (13:58 +0200)
src/smpi/smpi_global.cpp
src/smpi/smpi_shared.cpp
teshsuite/smpi/macro-partial-shared-communication/macro-partial-shared-communication.c

index 03b6153..1ad2a30 100644 (file)
@@ -104,9 +104,16 @@ void smpi_comm_set_copy_data_callback(void (*callback) (smx_activity_t, void*, s
   smpi_comm_copy_data_callback = callback;
 }
 
+void print(std::vector<std::pair<int, int>> vec) {
+    fprintf(stderr, "{");
+    for(auto elt: vec) {
+        fprintf(stderr, "(0x%x, 0x%x),", elt.first, elt.second);
+    }
+    stderr, fprintf(stderr, "}\n");
+}
 void memcpy_private(void *dest, const void *src, size_t n, std::vector<std::pair<int, int>> &private_blocks) {
   for(auto block : private_blocks) {
-    memcpy((uint8_t*)src+block.first, (uint8_t*)dest+block.first, block.second-block.first);
+    memcpy((uint8_t*)dest+block.first, (uint8_t*)src+block.first, block.second-block.first);
   }
 }
 
index 1737ea7..0aacb65 100644 (file)
@@ -295,11 +295,12 @@ void *smpi_shared_malloc_global__(size_t size, const char *file, int line, int *
   if(shared_block_offsets[0] > 0) {
     newmeta.private_blocks.push_back(std::make_pair(0, shared_block_offsets[0]));
   }
-  for(int i_block = 0; i_block < nb_shared_blocks-1; i_block ++) {
+  int i_block;
+  for(i_block = 0; i_block < nb_shared_blocks-1; i_block ++) {
     newmeta.private_blocks.push_back(std::make_pair(shared_block_offsets[2*i_block+1], shared_block_offsets[2*i_block+2]));
   }
-  if(shared_block_offsets[nb_shared_blocks-1] < size) {
-    newmeta.private_blocks.push_back(std::make_pair(shared_block_offsets[nb_shared_blocks-1], size));
+  if(shared_block_offsets[2*i_block+1] < size) {
+    newmeta.private_blocks.push_back(std::make_pair(shared_block_offsets[2*i_block+1], size));
   }
   allocs_metadata[mem] = newmeta;
 
index e0c2229..f5461c4 100644 (file)
@@ -65,7 +65,7 @@ int main(int argc, char *argv[])
   assert(size%2 == 0);
   uint8_t *buf;
   buf = SMPI_PARTIAL_SHARED_MALLOC(mem_size, shared_blocks, nb_blocks);
-  memset(buf, 3, mem_size);
+  memset(buf, rank, mem_size);
   MPI_Barrier(MPI_COMM_WORLD);
 
   // Even processes write their rank in private blocks