App Icon MPI+Spack Bare Metal Cluster

Go to Horizon to launch at CHI@UC     Go to Horizon to launch at CHI@TACC

Description

This template sets up an HPC cluster with master and worker nodes, with MPI (MPICH and OpenMPI) and Spack available. A temporary bootstrap node handles the setup and configuration, and the users can load MPI or install/load other packages using Spack or Lmod(Lua Modules).

This appliance accepts the following parameters:

  • reservation_id: ID of the Blazar reservation for master and worker nodes.
  • bootstrapnode_reservation_id: ID of the Blazar reservation for the bootstrap node.
  • network_name: Name of the network.
  • image_name: Name of the image to be used by the cluster. Must be one of the following: Ubuntu22.04-HPC-MPI-Spack, Ubuntu22.04-HPC-MPI-Spack-CUDA, or Ubuntu22.04-HPC-MPI-Spack-ROCm. Defaults to Ubuntu22.04-HPC-MPI-Spack.
  • worker_count: Number of worker nodes. Defaults to 1.
  • spack_packages: List of additional Spack packages to install.
  • private_key_content: Contents of the SSH private key.
  • public_key_content: Contents of the SSH public key, allowing login into instances.

The following outputs are provided:

  • master_ip: Floating IP of the master node.
  • keypair_name: Name of the MPI keypair used.

You can create the stack using the following OpenStack CLI command:

SSH_KEY=/work/.ssh/id_rsa    # Path to the SSH key file that will be used as the cluster's keypair
STACK_NAME=mpi-stack
NETWORK_NAME=sharednet1
IMAGE_NAME=Ubuntu22.04-HPC-MPI-Spack
RESERVATION_ID=""            # Enter the reservation id
BOOTSTRAP_RESERVATION_ID=""  # Enter the bootstrap reservation id
WORKER_COUNT=1              # Number of worker nodes
SPACK_PACKAGES="pdsh,zlib"  # Comma-separated list of extra spack packages to be installed on all nodes

# Create the stack
openstack stack create ${STACK_NAME} -t template.yml --wait \
    --parameter-file private_key_content=${SSH_KEY} \
    --parameter-file public_key_content=${SSH_KEY}.pub \
    --parameter network_name=${NETWORK_NAME} \
    --parameter image_name=${IMAGE_NAME} \
    --parameter bootstrapnode_reservation_id=${BOOTSTRAP_RESERVATION_ID} \
    --parameter reservation_id=${RESERVATION_ID} \
    --parameter worker_count=${WORKER_COUNT} \
    --parameter spack_packages=${SPACK_PACKAGES}

Keywords

ansible MPI MPICH openmpi

Template

Get Template

Author

Name: Rohan Babbar
Contact:  rohanbabbar0408@gmail.com

Support

Name: Rohan Babbar
Contact:  rohanbabbar0408@gmail.com

Version: 1.0.0
Created By:  rohanbabbar0408@gmail.com on Aug. 23, 2025, 1:40 p.m.
Updated By:  rohanbabbar0408@gmail.com on Sept. 12, 2025, 3:07 p.m.