This article was accepted into the corpus but its outbound wikilinks were never NER-processed — typical at the deepest BFS hop or when the run's entity cap was reached. No expansion funnel to show.
| MPI_Bcast | |
|---|---|
| Name | MPI_Bcast |
| Standard | MPI-1, MPI-2 |
| Domain | High-performance computing |
| Interface | C, Fortran |
| Category | Collective communication |
MPI_Bcast
MPI_Bcast is a collective communication routine in the Message Passing Interface family used widely in high-performance computing. It appears in standards such as MPI-1 and MPI-2 and is implemented by vendor libraries like Open MPI, MPICH, Intel MPI Library, Cray MPI, and IBM Spectrum MPI. Researchers at institutions including Lawrence Livermore National Laboratory, Argonne National Laboratory, Oak Ridge National Laboratory, Los Alamos National Laboratory, and companies like NVIDIA and Intel Corporation evaluate MPI_Bcast in the context of applications developed for systems such as Summit (supercomputer), Fugaku, Hopper (supercomputer), Titan (supercomputer), and Blue Waters.
MPI_Bcast provides a mechanism for one designated process (the root) to distribute identical data to all processes in a communicator. The routine is fundamental in parallel applications including libraries and frameworks from PETSc, Trilinos, HDF5, LAMMPS, and GROMACS, and is used within parallel algorithms in projects at Stanford University, MIT, University of Illinois Urbana–Champaign, ETH Zurich, and University of Cambridge. Implementations optimize its behavior for network fabrics such as InfiniBand, Intel Omni-Path, Cray Aries, Mellanox HDR, and on accelerators like NVIDIA Tesla and AMD Instinct.
C syntax: int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm);
Parameters: - buffer: pointer to send/receive buffer. Linked library examples include GLIBC-compatible allocators and optimizations from jemalloc. - count: number of elements; interaction with data models such as LP64 and ILP32 is relevant to vendors including Red Hat and SUSE. - datatype: handle like MPI_INT, MPI_DOUBLE; type systems in projects such as Boost and Eigen (library) influence user code. - root: rank within communicator, used in contexts like communicators created by MPI_Comm_split and topology routines such as MPI_Cart_create. - comm: communicator handle typically MPI_COMM_WORLD or derived communicators used in domain decomposition by ANSYS and COMSOL Multiphysics.
Fortran interface follows the Fortran MPI binding conventions introduced in standards referenced by ISO/IEC 14882 for C++ interoperability and Fortran 90/95 adoption in projects like Cray Fortran compilers. Typical Fortran call: CALL MPI_BCAST(buffer, count, datatype, root, comm, ierror) C++ had deprecated MPI C++ bindings in MPI-2; users commonly employ C bindings from C++ programs in frameworks such as PETSc and wrappers used by Boost.MPI and application codes at Los Alamos National Laboratory, Sandia National Laboratories, and CEA (French Alternative Energies and Atomic Energy Commission).
MPI_Bcast enforces that after completion, all processes in comm have identical contents for the specified buffer. Semantics are defined by the MPI standard committees and used in large-scale scientific workflows at European Centre for Medium-Range Weather Forecasts, NOAA, NASA, CERN, and SLAC National Accelerator Laboratory. The operation may be implemented as blocking or nonblocking in related routines such as MPI_Ibcast and interacts with point-to-point operations like MPI_Send and MPI_Recv when emulation is required for particular topologies. Correct use often involves matching datatypes and counts agreed by programmers from institutions such as Princeton University, University of California, Berkeley, and Caltech.
Implementations use algorithms like binomial tree, pipeline, scatter‑allgather, and Rabenseifner’s algorithm tuned by vendors including Hewlett Packard Enterprise, Cray, NVIDIA, and Intel Corporation. Performance depends on latency and bandwidth characteristics of interconnects like InfiniBand, Ethernet, and Cray Aries and on process placement strategies from resource managers such as Slurm Workload Manager, PBS Professional, LSF, and Grid Engine. Optimizations consider NIC offload features developed by Mellanox Technologies and collective offload hardware in systems like IBM Blue Gene and software tuning reported by teams at Argonne National Laboratory and NERSC.
MPI_Bcast is commonly used to distribute configuration parameters, model coefficients, and I/O metadata in codes like OpenFOAM, ANSYS Fluent, NWChem, Quantum ESPRESSO, and VASP. Example patterns include broadcasting a control structure from rank 0, broadcasting data after file read from HDF5 or ADIOS2, and combining MPI_Bcast with MPI_Reduce or MPI_Allreduce in iterative solvers used by Trilinos and PETSc. Hybrid programming often pairs MPI_Bcast with threading models such as OpenMP or accelerator offload using CUDA and OpenACC in production codes at LLNL and ORNL.
MPI_Bcast returns an MPI error code (int) following the MPI error handler semantics defined by the MPI standard and managed by functions like MPI_Errhandler_set and MPI_Comm_set_errhandler. Common error codes include MPI_SUCCESS and implementation-specific codes documented by Open MPI, MPICH, Intel MPI Library, and Cray MPI. Fault tolerance and failure reports are topics of research at University of Edinburgh, KTH Royal Institute of Technology, and University of Tennessee exploring extensions like ULFM and proposals discussed at EuroMPI and SC Conference.