diff --git a/build/ag_gen b/build/ag_gen index 5257629..775bbff 100755 Binary files a/build/ag_gen and b/build/ag_gen differ diff --git a/src/ag_gen/ag_gen.cpp b/src/ag_gen/ag_gen.cpp index fde4f92..b58a0a5 100755 --- a/src/ag_gen/ag_gen.cpp +++ b/src/ag_gen/ag_gen.cpp @@ -372,7 +372,7 @@ AGGenInstance &AGGen::generate(bool batch_process, int batch_size, int numThrd, if(world.size() <= num_tasks) alloc = 1; else - alloc = ceil((world.size()-num_tasks)/2); + alloc = 1 + ceil((world.size()-num_tasks)/2); //Task 2 Node Allocating int reduc_factor = 0; @@ -384,7 +384,12 @@ AGGenInstance &AGGen::generate(bool batch_process, int batch_size, int numThrd, //Create Communicators boost::mpi::communicator tcomm = world.split(world.rank() > 0 && world.rank() <= alloc); - boost::mpi::communicator ttwo_comm = world.split(world.rank() >= send_check(world, alloc) && world.rank() <= (2*two_alloc)); + boost::mpi::communicator ttwo_comm; + if(world.size() == 2){ + ttwo_comm = world.split(world.rank() == send_check(world, alloc) && world.rank() <= (2*two_alloc)); + } + else + ttwo_comm = world.split(world.rank() >= send_check(world, alloc) && world.rank() <= (2*two_alloc)); while (!localFrontier.empty() || !unex_empty() || world.rank() > 0){//while starts @@ -448,7 +453,7 @@ AGGenInstance &AGGen::generate(bool batch_process, int batch_size, int numThrd, //Execute Task 2 //if(world.rank() == send_check(world, alloc) && world.rank() <= send_check(world, 2*two_alloc)) - //Edge case: 2 nodes + //Edge case: 2 nodes: This prevents node 1 from accessing the execution of task 2 if((world.size() == 2 && world.rank() == 0) || world.size() > 2) { if(world.rank() >= send_check(world, alloc) && world.rank() <= (2*two_alloc))