  Processing massive application graphs on distributed memory systems requires
to map the graphs onto the system's processing elements (PEs). This task
becomes all the more important when PEs have non-uniform communication costs or
the input is highly irregular. Typically, mapping is addressed using
partitioning, in a two-step approach or an integrated one. Parallel
partitioning tools do exist; yet, corresponding mapping algorithms or their
public implementations all have major sequential parts or other severe scaling
limitations. In this paper, we propose a parallel algorithm that maps graphs
onto the PEs of a hierarchical system. Our solution integrates partitioning and
mapping; it models the system hierarchy in a concise way as an implicit labeled
tree. The vertices of the application graph are labeled as well, and these
vertex labels induce the mapping. The mapping optimization follows the basic
idea of parallel label propagation, but we tailor the gain computations of
label changes to quickly account for the induced communication costs. Our
MPI-based code is the first public implementation of a parallel graph mapping
algorithm; to this end, we extend the partitioning library ParHIP. To evaluate
our algorithm's implementation, we perform comparative experiments with complex
networks in the million- and billion-scale range. In general our mapping tool
shows good scalability on up to a few thousand PEs. Compared to other MPI-based
competitors, our algorithm achieves the best speed to quality trade-off and our
quality results are even better than non-parallel mapping tools.
