|
PBeFS
Parallel Best-First Search
|
Header file for the class template HDAStarMPI, Hash Distributed A* on a distributed-memory machine, with one MPI process per worker. More...
#include <algorithm>#include <stdexcept>#include <type_traits>#include <variant>#include <vector>#include <mpi.h>#include "PBeFS/astar/HDAStar.h"#include "PBeFS/core/SearchUtils.h"#include "ADS/distributed/MPIMailbox.h"Go to the source code of this file.
Classes | |
| class | HDAStarMPI< D, Dist > |
| Hash Distributed A* with one MPI process per worker. More... | |
Namespaces | |
| namespace | PBeFS_di_unipi_it |
| namespace for the Parallel Best-First Search library | |
Header file for the class template HDAStarMPI, Hash Distributed A* on a distributed-memory machine, with one MPI process per worker.
The search is HDA* [see HDAStar.h] on the process \( i \) of \( p \), with the notation of the page "Best-first search and A*" of the documentation; a node records the state of its parent instead of a pointer, since the parent may be stored by another process, and \( z \) is the incumbent known to the process:
The nodes and the incumbents travel through the mailbox of the processes of ADS, packed in batches of batch messages and sent with non-blocking sends, and the end is detected by the four-counter method of Mattern, which by line 11 a process joins only when it has no node of \( f < z \) and nothing to send. A process that reaches the node limit stops the mailbox of all the processes (line 7), after which they only wait for the end. The path is rebuilt by asking the owner of each state for its parent (line 14), which is why the distribution has to be deterministic.