Adding a map to hold node edges and fbs
This commit is contained in:
parent
e4aeb144f0
commit
44742e7aa5
BIN
build/ag_gen
BIN
build/ag_gen
Binary file not shown.
18210
build/states.txt
18210
build/states.txt
File diff suppressed because it is too large
Load Diff
@ -1432,19 +1432,21 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
if (world.rank() == 0){
|
if (world.rank() == 0){
|
||||||
std::map<int, int> deque_marker;
|
std::map<int, int> deque_marker;
|
||||||
int finish_count = 0;
|
int finish_count = 0;
|
||||||
std::vector<Factbase> node_factbases;
|
std::map<int, std::vector<Factbase>> node_factbases;
|
||||||
std::vector<Edge> node_edges;
|
std::map<int, std::vector<Edge>> node_edges;
|
||||||
//Receive states and edges when nodes finish
|
//Receive states and edges when nodes finish
|
||||||
while(finish_count != msg_sends){
|
while(finish_count != msg_sends){
|
||||||
while(world.iprobe(mpi::any_source, 10) || world.iprobe(mpi::any_source, 11)){
|
while(world.iprobe(mpi::any_source, 10) || world.iprobe(mpi::any_source, 11)){
|
||||||
if(world.iprobe(mpi::any_source, 10)){
|
for(int w = 0; w < world.size(); w++){
|
||||||
world.recv(mpi::any_source, 10, node_factbases);
|
if(world.iprobe(w, 10)){
|
||||||
}
|
world.recv(w, 10, node_factbases[w]);
|
||||||
if(world.iprobe(mpi::any_source, 11)){
|
}
|
||||||
world.recv(mpi::any_source, 11, node_edges);
|
if(world.iprobe(w, 11)){
|
||||||
}
|
world.recv(w, 11, node_edges[w]);
|
||||||
if(!node_factbases.empty() || !node_edges.empty()){
|
}
|
||||||
state_merge(node_factbases, node_edges, hash_map, instance, mem_threshold, world);
|
if(!node_factbases[w].empty() || !node_edges.empty()){
|
||||||
|
state_merge(node_factbases[w], node_edges[w], hash_map, instance, mem_threshold, world);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1487,14 +1489,16 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
|
|
||||||
//Check for factbases or nodes, and add them to our network
|
//Check for factbases or nodes, and add them to our network
|
||||||
while(world.iprobe(mpi::any_source, 10) || world.iprobe(mpi::any_source, 11)){
|
while(world.iprobe(mpi::any_source, 10) || world.iprobe(mpi::any_source, 11)){
|
||||||
if(world.iprobe(mpi::any_source, 10)){
|
for(int w = 0; w < world.size(); w++){
|
||||||
world.recv(mpi::any_source, 10, node_factbases);
|
if(world.iprobe(w, 10)){
|
||||||
}
|
world.recv(w, 10, node_factbases[w]);
|
||||||
if(world.iprobe(mpi::any_source, 11)){
|
}
|
||||||
world.recv(mpi::any_source, 11, node_edges);
|
if(world.iprobe(w, 11)){
|
||||||
}
|
world.recv(w, 11, node_edges[w]);
|
||||||
if(!node_factbases.empty() || !node_edges.empty()){
|
}
|
||||||
state_merge(node_factbases, node_edges, hash_map, instance, mem_threshold, world);
|
if(!node_factbases[w].empty() || !node_edges.empty()){
|
||||||
|
state_merge(node_factbases[w], node_edges[w], hash_map, instance, mem_threshold, world);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1514,7 +1518,7 @@ int initQSize, double mem_threshold, mpi::communicator &world, int state_limit)
|
|||||||
|
|
||||||
|
|
||||||
//Maintain a list of explored states
|
//Maintain a list of explored states
|
||||||
for (Factbase fb : node_factbases){
|
for (Factbase fb : node_factbases[w]){
|
||||||
auto fb_hash = fb.hash(instance.facts);
|
auto fb_hash = fb.hash(instance.facts);
|
||||||
//Incorrectly declare that we've explored all states in our factbase vector
|
//Incorrectly declare that we've explored all states in our factbase vector
|
||||||
tmp_expl.insert(fb_hash);
|
tmp_expl.insert(fb_hash);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user