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);
}
}
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;
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