Chapter 8. Deploying an HPC cluster on Azure by using RHEL system roles
Deploy scalable high-performance computing (HPC) clusters on Microsoft Azure by optimizing Red Hat Enterprise Linux (RHEL) images with the HPC RHEL system role. You can generalize virtual machines (VMs) for reuse with Azure CycleCloud and Slurm and manage software versions by using environment modules.
8.1. Configuring a RHEL Azure VM for HPC by using the HPC RHEL system role Copy linkLink copied to clipboard!
To configure a high-performance computing (HPC) RHEL system role on a customized Red Hat Enterprise Linux (RHEL) image, use the cloud-init utility on the Azure portal or Azure CLI. With cloud-init, automate the configuration of the Ansible collection and run Ansible playbooks on Microsoft Azure.
8.1.1. Configuring a RHEL HPC VM by using Azure Portal Copy linkLink copied to clipboard!
You can automate a custom RHEL image for Azure by using the ansible-core utility and RHEL system roles during image creation. Before deploying in Azure, use cloud-init to apply the high-performance computing (HPC) RHEL system role and configure the HPC image.
Prerequisites
- You have an active Azure cloud subscription.
Procedure
- Go to the Azure Console.
-
Click Virtual Machines
Create Virtual Machine. Select the following configurations for a virtual machine from the Basics tab:
- In the Virtual machine name field, enter your VM name.
- Security type: Standard
-
Image
See All Images Search for Red Hat Enterprise Linux (RHEL) for High Performance Computing (HPC) on Azure Select Red Hat Enterprise Linux for HPC 9.6 VM - x64 Gen2 - VM architecture: x64
Size: Standard_NC4as_T4_v3 - 4 vcpus, 28 GiB memory
NoteTo get optimal performance, use only GPU-optimized VMs, such as NC and ND series. For details, see Virtual machine sizes in Azure.
- In the Disks section, select operating system disk > operating system disk size, and then choose 128 GiB (P10).
Go to the Advanced tab and enter the following details to the Custom data field:
#cloud-config #Please check RHEL HPC Ansible system role documentation for all available options write_files: - path: /root/hpc_full_install.yaml permissions: 0644 content: | --- - name: Install and configure HPC hosts: localhost become: true vars: hpc_reboot_ok: false hpc_update_all_packages: true hpc_manage_firewall: true roles: - redhat.rhel_system_roles.hpc - path: /etc/dnf/azure-rhel9-eus.config permissions: 0644 content: | [rhui-microsoft-azure-rhel9] name=Microsoft Azure RPMs for Red Hat Enterprise Linux 9 (rhel9-eus) baseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel9-eus enabled=1 gpgcheck=1 sslverify=1 gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release - path: /etc/dnf/vars/releasever permissions: 0644 content: | 9.6 # Run custom commands runcmd: # lock VM to RHEL9.6 and enable EUS channels # https://learn.microsoft.com/en-us/azure/virtual-machines/workloads/redhat/redhat-rhui - dnf --assumeyes --disablerepo='*' remove "rhui-azure-rhel9" - dnf --assumeyes --config /etc/dnf/azure-rhel9-eus.config install rhui-azure-rhel9-eus - dnf --assumeyes clean all - dnf --assumeyes install rhel-system-roles- Click the Review + create button to create a VM with the given configuration.
- In the Azure Console, check that the VM has been deployed successfully and is ready for use.
- Click the Go to resource button.
- Copy the Public IP address.
- In the Azure Console, check that the VM is running.
Connect to the VM:
$ ssh -i ~/.ssh/azure_hpc <example_azureuser>@<192.0.2.101>Check the VM status:
$ sudo cloud-init status --waitOnce ready, run the HPC RHEL system role:
$ sudo ANSIBLE_LOG_PATH=/var/log/ansible_hpc_full_install.log ansible-playbook /root/hpc_full_install.yaml --verboseReboot the VM.
ImportantWait for the completion of the initial reboot as the HPC RHEL system role configurations finalize during this phase.
Verification
Connect to the VM through SSH:
$ ssh -i ~/.ssh/azure_hpc <example_azureuser>@<192.0.2.101>Verify the list of installed packages:
$ sudo dnf list installed| grep -i -E 'nvidia-driver|cuda-toolkit|nccl|fabric-manager|rdma|openmpi'cuda-toolkit-12-9.x86_64 12.9.1-1 @nvidia-cuda cuda-toolkit-12-9-config-common.noarch 12.9.79.1 @nvidia-cuda cuda-toolkit-12-config-common.noarch 12.9.79.1 @nvidia-cuda cuda-toolkit-config-common.noarch 12.9.79.1 @nvidia-cuda libnccl.x86_64 2.27.5-1+cuda12.9 @nvidia-cuda libnccl-devel.x86_64 2.27.5-1+cuda12.9 @nvidia-cuda librdma.x86_64 54.0.1-e19 @rhel-9-for-x86_64-baseos-rhui-rpms nvidia-driver.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-driver-cuda.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-driver-cuda-libs.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-driver-libs.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-fabric-manager.x86_64 575.57.08-1 @nvidia-cuda openmpi.x86_64 2:4.1.7-7.e19 @rhel-9-for-x86_64-appstream-rhui-rpms openmpi-devel.x86_64 2:4.1.7-7.e19 @rhel-9-for-x86_64-appstream-rhui-rpms rdma-core.x86_64 54.0.1-e19 @rhel-9-for-x86_64-baseos-rhui-rpmsVerify installed
Lmodenvironment modules:$ ml available-----------------------/usr/share/modulefiles------------------------ mpi/hpcx-2.24.1-pmix-4.2.9 mpi/openmpi-5.0.8-cuda12-gpu (L,D) mpi/hpcx-2.24.1 pmix/pmix-4.2.9 (L) mpi/openmpi-x86_64 ----------------/usr/share/lmod/lmod/modulefiles/Core---------------- lmod settargwhere:
-
L: Module is loaded -
D: Default Module
-
8.1.2. Configuring a RHEL HPC VM by using Azure CLI Copy linkLink copied to clipboard!
You can automate a custom Red Hat Enterprise Linux (RHEL) image during image creation for Azure by using the ansible-core utility on Azure CLI and RHEL system roles. Before deploying in Azure, use cloud-init to apply the high-performance computing (HPC) RHEL system role and configure the HPC image.
Prerequisites
- You have an active Azure cloud subscription.
Procedure
Connect to the Azure portal:
$ az loginCreate a key pair:
$ ssh-keygen -t ed25519 -C "<azureuser@hpc>" -f ~/.ssh/azure_hpcEdit the
user-data.ymlfile with the following details:$ vi user-data.yml#cloud-config # Please check RedHat HPC Ansible system role documentation for all available options write_files: - path: /root/hpc_full_install.yaml permissions: 0644 content: | --- - name: Install and configure HPC hosts: localhost become: true vars: hpc_reboot_ok: false hpc_update_all_packages: true hpc_manage_firewall: true roles: - redhat.rhel_system_roles.hpc - path: /etc/dnf/azure-rhel9-eus.config permissions: 0644 content: | [rhui-microsoft-azure-rhel9] name=Microsoft Azure RPMs for Red Hat Enterprise Linux 9 (rhel9-eus) baseurl=https://rhui4-1.microsoft.com/pulp/repos/unprotected/microsoft-azure-rhel9-eus enabled=1 gpgcheck=1 sslverify=1 gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-microsoft-azure-release - path: /etc/dnf/vars/releasever permissions: 0644 content: | 9.6 # Run custom commands runcmd: # lock VM to RHEL9.6 and enable EUS channels # https://learn.microsoft.com/en-us/azure/virtual-machines/workloads/redhat/redhat-rhui - dnf --assumeyes --disablerepo='*' remove "rhui-azure-rhel9" - dnf --assumeyes --config /etc/dnf/azure-rhel9-eus.config install rhui-azure-rhel9-eus - dnf --assumeyes clean all - dnf --assumeyes install rhel-system-rolesNoteThe cloud-config creates the playbook file at
/root/hpc_full_install.yamlduring cloud-init. You then run it manually in Step 10 so that you can monitor the output interactively.Create a resource group:
$ az group create --name <example_vm_resource_group> --location <example_region_name>Select the publisher based on your Azure billing account region of subscription.
For North America (NA) or Global accounts, use:
$ az vm image terms accept --urn "redhat:rh-rhel-hpc:rh-rhel-hpc96:latest"For Europe, the Middle East and Africa (EMEA) accounts, use:
$ az vm image terms accept --urn "redhat-limited:rh-rhel-hpc:rh-rhel-hpc96:latest"
Create an image based on the specified configuration in the last step:
$ az vm create \ --resource-group <example_vm_resource_group> \ --name <example_vm_name> \ --image <example_rhel_hpc_image_urn> \ --size Standard_NC4as_T4_v3 \ --os-disk-size-gb 128 \ --admin-username <example_azureuser> \ --ssh-key-values ~/.ssh/azure_hpc.pub \ --custom-data user-data.yml \ --security-type Standard \ --public-ip-address-dns-name <example_vm_name>-$(openssl rand -hex 4) \ --tags owner=$USER project=hpcwhere
-
<example_disk_size>: The minimum size of the operating system disk is 128 GB.
-
- Check the Azure Console if the VM is running.
Connect to the VM through SSH:
$ ssh -i ~/.ssh/azure_hpc <example_azureuser>@<192.0.2.101>Check the VM status:
$ sudo cloud-init status --waitOnce ready, run the HPC RHEL system role:
$ sudo ANSIBLE_LOG_PATH=/var/log/ansible_hpc_full_install.log ansible-playbook /root/hpc_full_install.yaml --verboseReboot the VM.
ImportantWait for the completion of the initial reboot as the HPC RHEL system role configurations finalize during this phase.
Verification
Verify SSH connectivity:
$ ssh -i ~/.ssh/azure_hpc <example_azureuser>@<192.0.2.101>Verify the list of installed packages:
$ sudo dnf list installed| grep -i -E 'nvidia-driver|cuda-toolkit|nccl|fabric-manager|rdma|openmpi'cuda-toolkit-12-9.x86_64 12.9.1-1 @nvidia-cuda cuda-toolkit-12-9-config-common.noarch 12.9.79.1 @nvidia-cuda cuda-toolkit-12-config-common.noarch 12.9.79.1 @nvidia-cuda cuda-toolkit-config-common.noarch 12.9.79.1 @nvidia-cuda libnccl.x86_64 2.27.5-1+cuda12.9 @nvidia-cuda libnccl-devel.x86_64 2.27.5-1+cuda12.9 @nvidia-cuda librdma.x86_64 54.0.1-e19 @rhel-9-for-x86_64-baseos-rhui-rpms nvidia-driver.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-driver-cuda.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-driver-cuda-libs.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-driver-libs.x86_64 3:575.57.08-1.e19 @nvidia-cuda nvidia-fabric-manager.x86_64 575.57.08-1 @nvidia-cuda openmpi.x86_64 2:4.1.7-7.e19 @rhel-9-for-x86_64-appstream-rhui-rpms openmpi-devel.x86_64 2:4.1.7-7.e19 @rhel-9-for-x86_64-appstream-rhui-rpms rdma-core.x86_64 54.0.1-e19 @rhel-9-for-x86_64-baseos-rhui-rpmsVerify installed
Lmodenvironment modules:$ ml available-----------------------/usr/share/modulefiles------------------------ mpi/hpcx-2.24.1-pmix-4.2.9 mpi/openmpi-5.0.8-cuda12-gpu (L,D) mpi/hpcx-2.24.1 pmix/pmix-4.2.9 (L) mpi/openmpi-x86_64 ----------------/usr/share/lmod/lmod/modulefiles/Core---------------- lmod settargwhere:
-
L: Module is loaded -
D: Default Module
-
8.2. Generalizing an Azure virtual machine for image creation Copy linkLink copied to clipboard!
By generalizing a virtual machine (VM), you prepare the VM to use as a template or base image for image versioning. In this process, you need to remove specific data, stop the VM, deallocate resources, and mark the VM as generalized. By using generalized images, you can create multiple image versions from the same image.
Prerequisites
- You have already configured a RHEL HPC image. For details, see configuring a RHEL HPC image by using the HPC RHEL system role.
Procedure
Connect to the VM through SSH:
$ ssh -i ~/.ssh/azure_hpc <example_azureuser>@<192.0.2.101>Remove any temporary users, network and host information:
$ sudo waagent -deprovision+user -force- Log out or press Ctrl + D to close the SSH session.
Stop the VM:
$ az vm stop --name <example_vm_name> --resource-group <example_vm_resource_group>Deallocate the resources to stop incurring Azure charges:
$ az vm deallocate --name <example_vm_name> --resource-group <example_vm_resource_group>Generalize the VM to make sure that this image is generic and ready to clone:
$ az vm generalize --name <example_vm_name> --resource-group <example_vm_resource_group>
8.3. Preparing an Azure Image version from a generalized VM Copy linkLink copied to clipboard!
To generate a reusable Azure image version from a generalized virtual machine (VM), you must create a resource group to organize resources. In the resource group, set up an Azure Compute Gallery to create a marketplace compatible custom images, which you can manage across your organization.
Prerequisites
- You have an active Azure cloud subscription.
- You have access to the Azure Shell. For details, see Get started with Azure Cloud Shell.
- You have installed Azure CLI. For details, see Installing the Azure CLI.
- You have created a generalized VM. For details, see Generalizing an Azure virtual machine for image creation.
Procedure
Create a resource group for hosting the gallery:
$ az group create --name <example_image_resource_group> \ --location <example_region_name>Create a gallery in the above resource group:
$ az sig create --resource-group <example_image_resource_group> \ --gallery-name <example_image_gallery_name>Set security type to
Standardfor subscription:$ az feature register --name UseStandardSecurityType \ --namespace Microsoft.ComputeRegister the provider:
$ az provider register --namespace Microsoft.ComputeCreate an image definition to manage image versions:
$ az sig image-definition create --resource-group <example_image_resource_group> \ --gallery-name <example_image_gallery_name> \ --gallery-image-definition <example_image_definition> \ --publisher <example_publisher> \ --offer <example_offer> \ --sku <example_sku> \ --os-type Linux \ --os-state Generalized \ --hyper-v-generation V2 \ --features SecurityType=Standard- <Publisher>
- The entity or organization that provides the image.
- <Offer>
- A collection of related images from a publisher.
- <Stock Keeping Unit (SKU)>
- An edition within an offer, indicating a major release.
Get information about the image:
$ az vm list --output tableUse generalized image name from the output:
$ az vm get-instance-view --resource-group <example_vm_resource_group> \ --name <example_vm_name> \ --query id-
Copy the VM resource ID from the output of the previous step. Use it as the
--virtual-machinevalue in the next step. Create the image version by using the image ID obtained in the previous step:
$ az sig image-version create \ --resource-group <example_image_resource_group> \ --gallery-name <example_image_gallery_name> \ --gallery-image-definition <example_image_definition> \ --gallery-image-version <example_version> \ --virtual-machine <example_id>Optional: Delete the VM and associated resources:
$ az vm delete --resource-group <example_image_resource_group> \ --name <example_vm_name>
8.4. Deploying an HPC cluster by using Azure CycleCloud and Slurm Copy linkLink copied to clipboard!
You can configure a Red Hat Enterprise Linux (RHEL) high-performance computing (HPC) cluster on Azure Cloud. HPC clusters are useful for solving complex problems that require intense processing and computation, by distributing tasks across multiple machines, also known as nodes.
Azure CycleCloud, a cloud-native orchestrator, manages HPC clusters for Azure Cloud. With Azure CycleCloud, you can administer HPC clusters for automatic deployment and scaling suitable workloads. Azure CycleCloud manages parallel computing jobs, resources, and sets the Slurm workload manager. Slurm, however, manages resource allocation for scheduling and running tasks in a cluster. The following steps use Slurm and Azure CycleCloud 8.x for deployment and managing a RHEL HPC cluster.
To configure a RHEL HPC cluster in the Azure environment, you can use Microsoft Azure services such as Azure CycleCloud. Use these tools at your own risk.
Prerequisites
- You have an active Azure cloud subscription.
- You have a RHEL HPC image. For details, see Configuring a RHEL HPC image by using the HPC RHEL system role.
- You have a generalized VM. For details, see Generalizing an Azure virtual machine for image creation.
- You have a prepared Azure image version. For details, see Preparing an Azure image version from a generalized VM.
Procedure
Install and deploy CycleCloud on Azure:
- For Azure Marketplace installation, see Install Azure CycleCloud from Azure Marketplace.
- For manual installation, see Install Azure CycleCloud manually.
Display ID of the custom RHEL HPC image:
$ az sig image-version show --resource-group="<example_resource_group>" \ --gallery-name="<example_gallery>" \ --gallery-image-definition="<example_image>" \ --gallery-image-version="<example_version>" \ --query="id" \ --output="tsv"Provision a Slurm workload manager with Azure CycleCloud by following the steps in the Run Slurm with CycleCloud:
WarningDue to a known limitation of IPv4 addresses, selecting the
Public Head Nodeoption causes provisioning failure with the Slurm head node. As a workaround, ensure thePublic Head Nodeoption is unchecked and determine the most suitable way of accessing the Slurm head node in your environment. For details, see the related Slurm issue on GitHub.NoteUse the custom RHEL image ID obtained in the earlier step for all cluster nodes. For details, see how to specify a custom OS image.
- On the CycleCloud homepage, select the existing Slurm cluster.
- To launch the Slurm cluster, click Start.
- Log in to the Slurm head node by selecting the cluster view and clicking Connect. Use the standard Slurm command-line tools to schedule HPC jobs. For details, see How do I submit jobs? (Slurm) section.
8.5. Managing Environment Modules for HPC clusters Copy linkLink copied to clipboard!
The environment module subsystem uses Lua-based environment modules (Lmod) to list installed modules. With Lmod, you can dynamically modify the environment by loading and unloading various software packages and their dependencies. It manages multiple versions of compilers, libraries, and applications in the high-performance computing (HPC) environment, so you can select specific software configurations for each version. To do this, you can use the module utility, which is shortened to ml.
8.5.1. Commands for environment modules management Copy linkLink copied to clipboard!
You can use the following commands to manage environment modules:
Display all commands related to the
moduleutility:$ module helpDisplay the individual command options and syntax:
$ module <command> helpDisplay details for a specific module:
$ ml whatis pmix/pmix-4.2.9pmix/pmix-4.2.9 : Description: PMIx 4.2.9 installed in /opt/pmix/4.2.9 pmix/pmix-4.2.9 : Version: 4.2.9-1List available modules in the HPC environment:
$ ml available-----------------------/usr/share/modulefiles------------------------ mpi/hpcx-2.24.1-pmix-4.2.9 mpi/openmpi-5.0.8-cuda12-gpu (L,D) mpi/hpcx-2.24.1 pmix/pmix-4.2.9 (L) mpi/openmpi-x86_64 ----------------/usr/share/lmod/lmod/modulefiles/Core---------------- lmod settargwhere:
-
L: Module is loaded -
D: Default Module -
The
(L)annotation indicates that thempi/openmpi-5.0.8-cuda12-gpumodule is loaded. -
This also loads the
pmix/pmix-4.2.9module as a dependency. - The module system automatically loads and unloads dependent modules as needed.
-
List the loaded modules:
$ ml listCurrently Loaded Modules: 1) pmix/pmix-4.2.9 2) mpi/openmpi-5.0.8-cuda12-gpuUnload a module and its dependencies:
$ ml unload mpi/openmpi-5.0.8-cuda12-gpu $ ml listNo modules loadedUnload an existing module and load a new module:
$ ml load mpi/openmpi-5.0.8-cuda12-gpu $ ml listCurrently Loaded Modules: 1) pmix/pmix-4.2.9 2) mpi/openmpi-5.0.8-cuda12-gpuSwitch the loaded module:
$ ml swap mpi/openmpi-x86_64The following have been reloaded with a version change: 1) mpi/openmpi-5.0.8-cuda12-gpu => mpi/openmpi-x86_64List the available modules:
$ ml listCurrently Loaded Modules: 1) mpi/openmpi-x86_64
8.5.2. Modulefiles layout and rules Copy linkLink copied to clipboard!
A modulefile is a script that defines and manages environment variables for loading, unloading, and switching software environments on HPC systems. The recommended directory structure and naming conventions enable efficient organization of environment modulefiles, including module definitions, wrapper modules, and consistent rules for managing multiple software environments in RHEL-based HPC deployments.
- Manual method for module definitions
-
The
moduleutility automatically discovers the module definitions placed in the/usr/share/modulefilesdirectory. If you have other directories with module definitions, you need to add them to theMODULEPATHenvironment variable. - Wrapper modules
-
To avoid modifying environment variables and allow
Lmodto find package-specific modules, place thewrappermodules in the/usr/share/modulefilesdirectory so that these modules modifyMODULEPATHand load the relevant module from the external location. An example of this style of wrapper is thempi/hpcx-2.24.1environment module. - Module file format
Lmodsupports environment modules written in Lua as well as the Tool Command Language (Tcl) format. Lua scripting is the preferred method for defining environment modules. Use the.luaextension with the755permission set. The module name for themlcommand omits the.luasuffix. Examples given in this document use the Lua script interfaces. It has the following requirements:-
All packages that provide the same functionality, for example MPI libraries, are in a common module subdirectory. In this case,
../mpi/for all the MPI library variants. -
Add a
conflict()definition to the module for the package subdirectory (e.g.conflict("mpi")) which allows only one module of that package type to load at a time. - Keep package naming consistent.
Use the feature name as the subdirectory name, while the individual modules for each package instance should be named according to the following pattern:
<package provider>-<version>-<build>-<options>For multiple MPI library variants, some are from different providers, while others are multiple builds of a given package with different compilers and build options. In such cases, the naming scheme provides consistency.
-
All packages that provide the same functionality, for example MPI libraries, are in a common module subdirectory. In this case,
8.5.3. Available MPI environments Copy linkLink copied to clipboard!
In an HPC Slurm cluster, the message passing interface (MPI) environment provides runtime support for applications to communicate and synchronize across nodes. Slurm integrates with MPI implementations such as OpenMPI to manage distributed jobs efficiently and optimize use of cluster resources. Slurm uses mpirun to orchestrate execution across allocated nodes for scalable, high-performance jobs. With the provided RHEL HPC cluster, the following MPI environments are available:
-
Openmpi.x86_64: Standard open MPI build that does not provide CUDA or GPU acceleration support. -
Openmpi-5.0.8-cuda-gpu: Open MPI module compiled with CUDA support for GPU-aware MPI communication -
Hpcx-2.24.1: NVIDIA comprehensive HPC software stack based on Open MPI. -
Hpcx-2.24.1-pmix: HPC-X build configured with Process Management Interface (PMIx) for Slurm integration and job scheduling.
For consistency in naming of MPI libraries, specify Unified Communication X (UCX) as the point to point messaging layer (PML) implementation for the MPI infrastructure:
$ mpirun -mca pml ucx .
- openmpi.x86_64
- This module provides a standard build of OpenMPI 4.1.1. Although it includes PMIx 3.x support, it does not provide CUDA or GPU acceleration support. The RHEL InfiniBand drivers and infrastructure provide InfiniBand (IB)/Remote Direct Memory Access (RDMA) functionality. The OpenMPI libraries are compiled with gcc-11.4. Use this module if your application does not use CUDA language extension or require GPU offload support.
- openmpi-5.0.8-cuda-gpu
This module provides OpenMPI 5.0.8 with PMIx 4.x support and CUDA and NVIDIA GPU acceleration support by using the NVIDIA HPC-X package libraries. The RHEL InfiniBand drivers and infrastructure provide InfiniBand (IB)/Remote Direct Memory Access (RDMA) functionality. The OpenMPI libraries are compiled with gcc-11.5. Only select this module if you are using CUDA-enabled applications that require GPU acceleration.
NoteIn the absence of InfiniBand NICs, a warning is displayed for failure of InfiniBand NIC autodiscovery:
$ mpirun -n 2 /lib64/openmpi/bin/mpitests-osu_allreduce... [test-vm] Error: coll_hcoll_module.c:312 - mca_coll_hcoll_comm_query() Hcol library init failed ...You can remove this warning by adding the
-mca coll ^hcollparameter to thempiruncommand:$ mpirun -mca coll ^hcoll -n 2 /lib64/openmpi/bin/mpitests-osu_allreduce# Size Avg Latency(us) 1 8.36 2 6.85- hpcx-2.24.1
- This module provides an NVIDIA built OpenMPI 4.1.5 environment. It has no PMIx support, but provides CUDA and NVIDIA GPU acceleration support. The RHEL InfiniBand drivers and infrastructure provide InfiniBand (IB)/Remote Direct Memory Access (RDMA) functionality.
- hpcx-2.24.1-pmix
-
This module provides the same environment as the
mpi/hpcx-2.24.1module and also has PMIx 4.x support enabled.