SearcharxivSearch

arXiv subjects

C. Nicole Avans

Publications and source records attributed to C. Nicole Avans.

2 recordsLinked to original sources

The Researcher's Guide to HPC Networks

Networks are critical infrastructure in nearly every computing system, but they are particularly important in High Performance Computing (HPC) systems, where users tackle problems at massive scale. Unfortunately, many of the hardware and software technologies that comprise supercomputer and datacenter networks are not widely taught in classes, nor are they extensively covered by textbooks or other educational documents outside of their primary sources. The purpose of this document is to provide a starting point to learn about these technologies by lowering the barrier to understanding and providing an abundance of references for further research. Covered topics include all levels of communication and network programming APIs, network control plane technologies, physical interconnects, and link-layer devices which are then brought to life in discussion of the architecture of El Capitan, a leadership class supercomputer created by Lawrence Livermore National Laboratory.

cs.CE

Concepts for designing modern C++ interfaces for MPI

Since the C++ bindings were deleted in 2008, the Message Passing Interface (MPI) community has revived efforts in building high-level modern C++ interfaces. Such interfaces are either built to serve specific scientific application needs (with limited coverage to the underlying MPI functionalities), or as an exercise in general-purpose programming model building, with the hope that bespoke interfaces can be broadly adopted to construct a variety of distributed-memory scientific applications. However, with the advent of modern C++-based heterogeneous programming models, GPUs and widespread Machine Learning (ML) usage in contemporary scientific computing, the role of prospective community-standardized high-level C++ interfaces to MPI is evolving. The success of such an interface clearly will depend on providing robust abstractions and features adhering to the generic programming principles that underpin the C++ programming language, without compromising on either performance and portability, the core principles upon which MPI was founded. However, there is a tension between idiomatic C++ handling of types and lifetimes and MPI's loose interpretation of object lifetimes/ownership and insistence on maintaining global states. Instead of proposing "yet another" high-level C++ interface to MPI, overlooking or providing partial solutions to work around the key issues concerning the dissonance between MPI semantics and idiomatic C++, this paper focuses on the three fundamental aspects of a high-level interface: type system, object lifetimes and communication buffers, also identifying inconsistencies in the MPI specification. Presumptive solutions can be unrefined, and we hope the broader MPI and C++ communities will engage with us in productive exchange of ideas and concerns.

cs.DC