Fixing Allocation of Nodes
This commit is contained in:
parent
7013ef8e2c
commit
fd4ffdfd10
BIN
build/ag_gen
BIN
build/ag_gen
Binary file not shown.
@ -372,7 +372,7 @@ AGGenInstance &AGGen::generate(bool batch_process, int batch_size, int numThrd,
|
|||||||
if(world.size() <= num_tasks)
|
if(world.size() <= num_tasks)
|
||||||
alloc = 1;
|
alloc = 1;
|
||||||
else
|
else
|
||||||
alloc = ceil((world.size()-num_tasks)/2);
|
alloc = 1 + ceil((world.size()-num_tasks)/2);
|
||||||
|
|
||||||
//Task 2 Node Allocating
|
//Task 2 Node Allocating
|
||||||
int reduc_factor = 0;
|
int reduc_factor = 0;
|
||||||
@ -384,7 +384,12 @@ AGGenInstance &AGGen::generate(bool batch_process, int batch_size, int numThrd,
|
|||||||
|
|
||||||
//Create Communicators
|
//Create Communicators
|
||||||
boost::mpi::communicator tcomm = world.split(world.rank() > 0 && world.rank() <= alloc);
|
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
|
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
|
//Execute Task 2
|
||||||
//if(world.rank() == send_check(world, alloc) && world.rank() <= send_check(world, 2*two_alloc))
|
//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.size() == 2 && world.rank() == 0) || world.size() > 2)
|
||||||
{
|
{
|
||||||
if(world.rank() >= send_check(world, alloc) && world.rank() <= (2*two_alloc))
|
if(world.rank() >= send_check(world, alloc) && world.rank() <= (2*two_alloc))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user