#include <vector>
#include <iostream>
#include <diy/mpi.hpp>
#include <diy/master.hpp>
#include <diy/assigner.hpp>
#include <diy/serialization.hpp>
struct Block
{
int count;
Block(): count(0) {}
};
void* create_block() { return new Block; }
void destroy_block(void* b) { delete static_cast<Block*>(b); }
void save_block(const void* b,
void load_block(void* b,
{
b->count++;
int done = rand() % 2;
}
int main(int argc, char* argv[])
{
int nblocks = 4*world.
size();
-1,
2,
&create_block,
&destroy_block,
&storage,
&save_block,
&load_block);
srand(time(NULL));
for (int gid = 0; gid < nblocks; ++gid)
if (assigner.rank(gid) == world.
rank())
bool all_done = false;
while (!all_done)
{
master.foreach(&flip_coin);
master.exchange();
all_done = master.proxy(master.loaded_block()).read<bool>();
}
if (world.rank() == 0)
std::cout << "Total iterations: " << master.block<Block>(master.loaded_block())->count << std::endl;
}