3.4.1. Software Requirements
This section provides a high-level overview of the steps required to set up a Cornelis CN5000 Omni-Path Fabric. Procedures and key reference documents, such as other CN5000 guides, are provided to clarify the process. Additional commands and best-known methods are defined to facilitate the installation process and troubleshooting.
Check applicable release notes and technical advisories for key information that could influence installation steps outlined in this document.
Perform or verify the following:
Verify the operating system. Operating System (OS) Software is a release-supported OS. See the CN5000 OPX Software Release Notes for the complete list of supported OSes.
Go to the Cornelis Customer Center. Search for and download the required software. Do not install prior to reading Pre-Installation Requirements.
Designate the management node(s). Fabric Manager will be enabled on the management node(s).
Ensure passwordless access is enabled for all hosts and switches.
Ensure you are familiar with the CN5000 product documentation.
3.4.1.1. Pre-Installation Requirements
Ensure that the following requirements are met prior to installing and setting up the fabric.
The hardware configuration should be reviewed to ensure everything has been installed according to the plan.
Following the software installation, Omni-Path software tools may be used to help verify the installation.
Ensure the required Operating System (OS) version (with the same kernel version) is installed on all hosts with the following options:
Root user command prompt ends in "
#" or "$" with a space after it.Fancy and colored prompts are disabled.
TCL and Expect packages are installed on all Fabric Management Nodes.
The Management Node(s) should have a full installation and must include the TCL and Expect OS RPMs.
For MPI clusters, install the C and Fortran compilers, along with their associated tools, on each Management Node.
Enable remote login as
rooton each host.In order to manage the hosts, the Management Node must be able to securely log in as
rootto each host. This can be accomplished using SSH.Set up a Network Time Protocol (NTP) server.
Configure an NTP server for the cluster and set all Linux hosts and switches to sync to the NTP server.
Assign SuperNIC Node Description Names.
Node Description names can be configured in many ways. Cornelis recommends the use of the
rdma-ndddaemon to keep the Node Description up to date with the hostname of the node. Once set up to assign node descriptions,rdma-nddautomatically assigns node descriptions to RDMA devices whenever a node is restarted, an RDMA device comes online, or the hostname changes.For details on
rdma-ndd, see the man page.If setting up your fabric to work with AMD or NVIDIA GPUs, refer to AMD GPU Requirements prior to installing the software.
3.4.1.1.1. Resolve TCP/IP Host Names
FastFabric and TCP/IP must resolve host names to the management network and IPoIB IP addresses. If the management network is not IPoIB, each host must have both a management network name and an IPoIB network name. To do this, use the actual host name as the management network name and HOSTNAME-opa as the IPoIB network name, where HOSTNAME is the management network name of the given host.
Name resolution is accomplished by configuring a DNS server on the management network, with both management network and IPoIB addresses for each host and each chassis.
Alternatively, an /etc/hosts file needs to be created on the Management Node; FastFabric can then propagate this /etc/hosts file to all the other hosts.
If using the /etc/hosts file approach and NOT using Domain Name System (DNS):
On the management node, add all the Ethernet and IPoIB addresses into the
/etc/hostsfile.For the IPoIB convention, use
HOSTNAME-opa.The
localhostline should not be edited.The
/etc/hostsfile should not have any node-specific data.Copy the file to every node.
If using DNS:
Refer to the documentation for the DNS server being used. Make sure to edit the
/etc/resolv.confconfiguration file on the Management Node to use the proper DNS server.Refer to the Linux OS documentation for more information about configuring the
/etc/resolv.conffile. This file is typically configured during OS installation.If
/etc/resolv.confmust be manually configured for each host, FastFabric can aid in copying the file to all the hosts.The
/etc/resolv.conffile created on the Management Node must not have any node-specific data and must be appropriate for use on all hosts.Copying the
/etc/resolv.conffile to all the nodes is accomplished during the OS installation.
3.4.1.1.2. Performance Tuning Prerequisites
Cornelis recommends preconfiguring servers and settings to tune fabric performance to meet the needs of the system. These tasks can be performed before or after the installation. Refer to the CN5000 Performance Tuning Guide, which describes BIOS settings and parameters that have been shown to improve performance or make performance more consistent on the CN5000 Omni-Path Fabric.
3.4.1.2. IOMMU: Passthrough Mode
IOMMU is often enabled by default but needs to be set to passthrough mode in order for the hfi1 driver to function properly.
Steps:
Edit
/etc/default/grubto change or add GRUB_CMDLINE_LINUX to include:iommu=pt
Update GRUB:
On RHEL and SLES:
grub2-mkconfig --update-bls-cmdline -o /etc/grub2.cfg
On Ubuntu:
update-grub
Reboot.
Confirm the setting is in place:
cat /proc/cmdline ... iommu=pt ...
3.4.1.3. AMD GPU Requirements
Before using AMD GPUs with Omni-Path, you must download and install the following:
AMD Drivers: Drivers and Support for Processors and Graphics
ROCm software: AMD ROCm Software
Install kernel-devel-matched
dnf install https://dl.rockylinux.org/vault/rocky/9.5/AppStream/x86_64/kickstart/ Packages/k/kernel-devel-matched-`uname -r`.rpm
Install dkms
dnf install amdgpu-dkms
ROCm Communication Collectives Library (RCCL): ROCm RCCL (GitHub)
Installation details can be found on the respective web pages.
3.4.1.3.1. Using RCCL
The ROCm Collective Communications Library (RCCL) provides collective and point-to-point communication primitives optimized for multi-GPU, multi-node applications.
Installation instructions and downloads for RCCL can be found on GitHub at ROCm/rccl.
RCCL uses the Amazon AWS OFI NCCL plugin for libfabric support. The source files for the plugin are found on GitHub at aws/aws-ofi-nccl. Details for building the plugin using GNU Autotools are included in the INSTALL.md text file.
Note
As of October 2025, support for RCCL was added to the AWS OFI NCCL plugin.
To ensure correct operation and compatibility with RCCL, you must use an AWS OFI NCCL plugin that includes the commit 0d49b7aff88f453928cfe7a467463147333a4ced (or any newer commit).
Until an official release includes this commit, you must manually build the plugin from source at the required revision or later.
Note
OPX Software must be installed before installing the AWS OFI NCCL plugin.
If the following is not used, verbs will be used automatically.
Cornelis recommends that you use the ./configure command of the form:
./configure --with-libfabric=</path to your gpu-enabled build of libfabric>--with-rocm=/opt/rocm --with-mpi=</path to your gpu-enabled mpi build>--prefix=</location where amazon-plugin will be installed>
Note
If you see the error NCCL INFO NET/Plugin: Could not find: libnccl-net.so when using the AWS OFI NCCL plugin with RCCL, you need to create a symbolic link so the plugin library can be located.
By default, RCCL looks for librccl-net.so, while the AWS OFI NCCL plugin builds a library named libnccl-net.so. If this mismatch prevents RCCL from loading the plugin, create a symbolic link in your build directory as follows:
cd </location where amazon-plugin will be installed>/lib
ln -s librccl-net.so libnccl-net.soThis ensures RCCL correctly loads the OFI network plugin when running GPU-enabled collective operations.
3.4.1.4. NVIDIA GPU Requirements
3.4.1.4.1. Building the NVIDIA Driver
Important
Perform step 2 to avoid issues where the SuperNIC GPUDirect-enabled driver may not be able to load due to missing symbols. Failure to perform this step will require that you uninstall and then reinstall the driver using the proper instructions.
Use the following instructions to download and build the NVIDIA driver:
Download the NVIDIA driver source from NVIDIA's Download Drivers.
It is also available in the CUDA Toolkit package that can be downloaded from CUDA Toolkit Downloads.
Note
Users of CUDA applications will need the CUDA runtime as well, which is part of the CUDA Toolkit package. Cornelis recommends the full CUDA Toolkit but acknowledges that some administrators may only want the driver itself.
For any runtime applications that need CUDA runtime support, CUDA runtime must be installed. Cornelis recommends downloading the entire CUDA Toolkit and installing it.
Extract the driver source and build the driver module as per the instructions at GPUDirect RDMA (nvidia.com).
Install the NVIDIA driver module if it is not already installed.
Run the command
export NVIDIA_DRIVER_SOURCE=so that the CN5000 OPX Software installer knows where to find the NVIDIA driver source when rebuilding the SuperNIC driver.<path to NVIDIA driver src build directory>Note
The
<path to NVIDIA driver src build directory>is commonly located in:/usr/src/nvidia-<version>for RHEL/usr/src/kernel-modules/nvidia-<version>for SLES.
On RHEL distributions, modules must be manually built to create the
Module.symversfile that is required before building and installing thehfi1driver.cd /usr/src/nvidia-<version> make -j
For instructions on installing CUDA, refer to the NVIDIA CUDA Installation Guide for Linux.
3.4.1.4.2. Installing CUDA on RHEL/Rocky Linux
The following instructions use CUDA 12.8 on Rocky Linux 9.5. Replace the versions in the steps with the version you are installing.
Download the Linux local installation file for the desired version of CUDA.
wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux.run
Run the local installation file in silent mode.
./cuda_12.8.1_570.124.06_linux.run --silent --tmpdir=/tmp
Reboot.
Install kernel-devel-matched.
dnf install https://dl.rockylinux.org/vault/rocky/9.5/AppStream/x86_64/kickstart/Packages/k/kernel-devel-matched-`uname -r`.rpm
Install dkms.
dnf config-manager --add-repo=https://developer.download.nvidia.com/compute/cuda/ repos/rhel9/x86_64/cuda-rhel9.repodnf install dkms
Install nvidia-driver-cuda-libs.
dnf install nvidia-driver-cuda-libs
Download the GDRCopy RPMs for your installed version of CUDA.
For CUDA 12.8, the RPMs are located at NVIDIA's Index of /compute/redist/gdrcopy/CUDA 12.8/rhel9/x64.
Install the downloaded RPMs using
rpm -i.Reboot.
3.4.1.4.3. NVIDIA GDRCopy
Whereas NVIDIA’s GPUDirect RDMA allows direct communication between GPUs and other PCIe devices, GDRCopy allows local CPUs to directly map and access the GPU memory.
Installation instructions and download locations for GDRCopy are found on GitHub at NVIDIA/gdrcopy. Note that the NVIDIA components described in NVIDIA GPU Requirements must be installed before installing GDRCopy.
Cornelis recommends installing and using GDRCopy to achieve maximum GPU performance with the OPX Provider.
Note
If FI_LOG_LEVEL=debug is enabled at runtime, you can determine if GDRCopy has been properly installed and enabled by searching the output logs for instances of GDRCopy.
Once installed, GDRCopy functionality is disabled or enabled through the environment variable: FI_HMEM_CUDA_USE_GDRCOPY=0 or 1, respectively.
Note
If GDRCopy is not installed, you must set FI_HMEM_CUDA_USE_GDRCOPY=0 or the OPX Provider will fail at runtime.
3.4.1.4.4. Verifying Module Load Order
When used with an NVIDIA GPU, the hfi1 module must be loaded after the NVIDIA module. In some cases, the hfi1 may load earlier in the boot process than the NVIDIA module. If this occurs, the module loads successfully and is functional, but without NVIDIA support.
Use dmesg to determine if hfi1 has been loaded with NVIDIA support. If dmesg returns that NVIDIA support is enabled (as shown in the following example), then no other actions are required.
[root@cornelis ~]# dmesg | grep hfi1 | grep -i nvidia
hfi1 Nvidia p2p DMA support enabled
hfi1 Nvidia p2p TID-DMA support enabled
hfi1 Nvidia GDRCopy support enabledIf dmesg responds that NVIDIA support is disabled (as shown in the following example), then the hfi1 module must be removed and reloaded.
[root@cornelis ~]# dmesg | grep hfi1 | grep -i nvidia
hfi1 Nvidia p2p DMA support disabled (missing symbol nvidia_p2p_free_page_table)
hfi1 Nvidia p2p TID-DMA support disabled
hfi1 Nvidia GDRCopy support disabledTo remove and reload the hfi1 module, use the following command:
modprobe -r hfi1 && modprobe hfi1
Once this has been completed, verify that the hfi1 module was reloaded with NVIDIA support using the dmesg command as shown previously.
Note
The same behavior can occur if the NVIDIA module is not loaded at all. To verify that NVIDIA has been loaded, run lsmod | grep nvidia. If the output is empty, then the NVIDIA module has not been loaded.
3.4.1.4.5. Verifying GPUDirect is Installed
To ensure that the GPUDirect-capable software is installed, verify as follows.
For driver, run:
$ modinfo hfi1 | grep nvidia
Sample output:
softdep: pre: nvidia
3.4.1.4.6. Using NCCL
The NVIDIA Collective Communications Library (NCCL) provides collective and point-to-point communication primitives optimized for multi-GPU, multi-node applications.
Installation instructions and downloads for NCCL can be found on GitHub at NVIDIA/nccl. Note that an NVIDIA user account may be required to download the installation files.
Note
OPX Software must be installed before installing the AWS OFI NCCL plugin.
If the following is not used, verbs will be used automatically.
As NCCL does not natively support libfabric, you must install the Amazon AWS OFI NCCL plugin. The source files for the plugin are found on GitHub at aws/aws-ofi-nccl. Details for building the plugin using GNU Autotools are included in the INSTALL.md text file.
Cornelis recommends that you use the ./configure command of the form:
./configure --with-libfabric=</path to your gpu-enabled build of libfabric>--with-cuda=/usr/local/cuda --with-mpi=</path to your gpu-enabled mpi build>--prefix=</location where amazon-plugin will be installed>
Once the plugin has been installed, you can enable logging using the environment variable: NCCL_DEBUG=info. Once the variable is set, look for the following log messages:
NCCL INFO NET/OFI Using aws-ofi-nccl- Confirms that the AWS OFI NCCL plugin is being used by NCCL.NCCL INFO NET/OFI Selected Provider is opx- Confirms that the AWS OFI NCCL plugin is using OPX Provider as its libfabric provider.
3.4.1.5. Compiling Libfabric on a System Without CN5000 Omni-Path Hardware
If you need to compile libfabric with CN5000 support on a system without Omni-Path hardware installed and loaded, perform the following steps.
Download and extract the OPX Software package for your OS from the Cornelis Networks Customer Center.
Navigate to the directory containing the
opxs-kernel-updates-<kernel version for OS>.src.rpm.Convert the RPM to a tarball:
rpm2cpio opxs-kernel-updates-<kernel version for OS>.src.rpm | cpio -idmvExtract the newly created tarball:
tar -xf opxs-kernel-updates-<kernel version for OS>.tgzDownload and extract the latest version of the libfabric tarball from GitHub.
Using libfabric 2.3.0 as an example:
wget https://github.com/ofiwg/libfabric/releases/download/v2.3.0/libfabric-2.3.0.tar.bz2 && tar -xf libfabric-2.3.0.tar.bz2
Change directories to the extracted libfabric directory:
cd /path/to/extracted/libfabric
Configure the build environment:
CFLAGS="-I/path/to/opxs-kernel-updates-<kernel version for OS>/include/uapi/" \ CXXFLAGS="-I/path/to/opxs-kernel-updates-<kernel version for OS>/include/uapi/" \ ./autogen.sh (if required) ./configure --prefix=/install/dir/ \ --enable-opx
Compile libfabric:
make -j $ (nproc)
Install libfabric:
make install