Skip to content

issues while running hello world code with openmpi (ethernet and OPA) #13321

@puneet336

Description

@puneet336

Hi ,
I am experiencing issues with MPI applications, Here are the context and detail on the issue : A month ago, we created a test environment with 4 VMs, where all MPI-based applications worked successfully over Ethernet using OpenMPI versions 4.1.2 and 4.1.4 on RHEL 7.9. Recently, we added two physical servers to this cluster, also running RHEL 7.9, with both Omni-Path (OPA) and Ethernet connectivity configured.

However, the problem is that even a simple "hello world" MPI application fails to run on the newly added physical servers.

here is the job script -

#!/bin/bash -x
#BSUB  -o hello-dbg.%J
#BSUB -J hello
#BSUB -n 2
#BSUB -R "rusage[mem=60000] span[ptile=1] affinity[core(1):distribute=pack]"
#BSUB -q testing
#BSUB -m "server3 server4"

module load OpenMPI/4.1.4-GCC-11.2.0
module list
cd /home/user1/MyWork/osu/validate/ompi4.1.4-GCC-11.2.0
mpicc hello.c
which mpirun
echo $LSB_HOSTS
mpirun  --mca btl_base_verbose 30 /home/user1/MyWork/osu/validate/ompi4.1.4-GCC-11.2.0/a.out

server1, server2 ( VMS) -
successfulrun.txt

server3 , server4 ( Physical servers) -
failedrun.txt

in both the log files, its not clear that which interface was used specifically for the communication but it seems that the failure happened when ofi btl was initialized. not sure which resources were exhausted.

suspecting there may be issues with the Omnipath setup , i selected all the tcp interfaces on server3 and server4 , but they all failed with same error ,

example -

eth_failrun1.txt
eth_okrun1.txt

despite selecting eth0.2634(network range same as ens192), contrary to my expectation ,

export OMPI_MCA_mtl="^ofi"
mpirun  --mca btl_base_verbose 100 --mca btl_tcp_if_include eth0.2634 /home/user1/MyWork/osu/validate/ompi4.1.4-GCC-11.2.0/a.out

the ofi interface initialization was attempted -

[server2:3882373] select: initializing btl component ofi
libi40iw-i40iw_vmapped_qp: failed to pin memory for SQ
libi40iw-i40iw_ucreate_qp: failed to map QP

with
export OMPI_MCA_mtl="^ofi,psm2"
export OMPI_MCA_btl="^ofi"
i was able to disable the initialization of ofi, but then it was the usnic

[server3:3203372] select: initializing btl component usnic
libi40iw-i40iw_vmapped_qp: failed to pin memory for SQ
libi40iw-i40iw_ucreate_qp: failed to map QP
[server3:3873721] btl:usnic: disqualifiying myself due

ofi_disable_fail.txt

There may be issues with the OPA , but i am sure that ethernet interfaces are configured correctly.
in order to validate the connectivity between server3 and server4 over interface ens0. i used some tests -

server1 & server2:

-bash-4.2$ ip a s|grep inet|grep ens192
    inet 100.165.150.75/24 brd 100.165.150.255 scope global ens192
-bash-4.2$ ./iperf3 -s -B 100.165.150.75
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 100.165.150.76, port 44857
[  5] local 100.165.150.75 port 5201 connected to 100.165.150.76 port 57216
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  2.88 GBytes  24.7 Gbits/sec
[  5]   1.00-2.00   sec  2.75 GBytes  23.6 Gbits/sec
[  5]   2.00-3.00   sec  2.62 GBytes  22.5 Gbits/sec
[  5]   3.00-4.00   sec  2.69 GBytes  23.1 Gbits/sec
[  5]   4.00-5.00   sec  2.65 GBytes  22.8 Gbits/sec
[  5]   5.00-6.00   sec  2.65 GBytes  22.8 Gbits/sec
[  5]   6.00-7.00   sec  2.69 GBytes  23.1 Gbits/sec
[  5]   7.00-8.00   sec  2.67 GBytes  23.0 Gbits/sec
[  5]   8.00-9.00   sec  2.60 GBytes  22.3 Gbits/sec
[  5]   9.00-10.00  sec  2.59 GBytes  22.2 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  26.8 GBytes  23.0 Gbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
^Ciperf3: interrupt - the server has terminated by signal Interrupt(2)
-bash-4.2$



-bash-4.2$ ./iperf3 -c 100.165.150.75 -B 100.165.150.76
Connecting to host 100.165.150.75, port 5201
[  5] local 100.165.150.76 port 57216 connected to 100.165.150.75 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  2.88 GBytes  24.7 Gbits/sec    0   2.05 MBytes
[  5]   1.00-2.00   sec  2.74 GBytes  23.6 Gbits/sec    0   2.05 MBytes
[  5]   2.00-3.00   sec  2.62 GBytes  22.5 Gbits/sec    0   2.05 MBytes
[  5]   3.00-4.00   sec  2.68 GBytes  23.1 Gbits/sec    0   2.05 MBytes
[  5]   4.00-5.00   sec  2.65 GBytes  22.8 Gbits/sec    0   2.05 MBytes
[  5]   5.00-6.00   sec  2.65 GBytes  22.8 Gbits/sec    0   2.05 MBytes
[  5]   6.00-7.00   sec  2.69 GBytes  23.1 Gbits/sec    0   2.05 MBytes
[  5]   7.00-8.00   sec  2.67 GBytes  23.0 Gbits/sec    0   2.05 MBytes
[  5]   8.00-9.00   sec  2.60 GBytes  22.3 Gbits/sec    0   2.05 MBytes
[  5]   9.00-10.00  sec  2.59 GBytes  22.2 Gbits/sec    0   2.05 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  26.8 GBytes  23.0 Gbits/sec    0            sender
[  5]   0.00-10.00  sec  26.8 GBytes  23.0 Gbits/sec                  receiver

iperf Done.

between server3 and server4:

ip a s|grep inet
    inet 100.165.150.100/24 brd 100.165.150.255 scope global eth0.2634
-bash-4.2$ ./iperf3 -s -B  100.165.150.105
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 100.165.150.100, port 38484
[  5] local 100.165.150.105 port 5201 connected to 100.165.150.100 port 35928
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   913 MBytes  7.65 Gbits/sec
[  5]   1.00-2.00   sec   905 MBytes  7.59 Gbits/sec
[  5]   2.00-3.00   sec   994 MBytes  8.33 Gbits/sec
[  5]   3.00-4.00   sec  1.15 GBytes  9.91 Gbits/sec
[  5]   4.00-5.00   sec  1.15 GBytes  9.91 Gbits/sec
[  5]   5.00-6.00   sec  1.15 GBytes  9.91 Gbits/sec
[  5]   6.00-7.00   sec  1.15 GBytes  9.91 Gbits/sec
[  5]   7.00-8.00   sec  1.15 GBytes  9.91 Gbits/sec
[  5]   8.00-9.00   sec  1.15 GBytes  9.91 Gbits/sec
[  5]   9.00-10.00  sec  1.15 GBytes  9.91 Gbits/sec
[  5]  10.00-10.00  sec  1.12 MBytes  9.44 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  10.8 GBytes  9.29 Gbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------



-bash-4.2$ ./iperf3 -c 100.165.150.105 -B 100.165.150.100
Connecting to host 100.165.150.105, port 5201
[  5] local 100.165.150.100 port 35928 connected to 100.165.150.105 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   914 MBytes  7.66 Gbits/sec  335    140 KBytes
[  5]   1.00-2.00   sec   906 MBytes  7.59 Gbits/sec  290    140 KBytes
[  5]   2.00-3.00   sec   994 MBytes  8.34 Gbits/sec  231    621 KBytes
[  5]   3.00-4.00   sec  1.15 GBytes  9.91 Gbits/sec    0    621 KBytes
[  5]   4.00-5.00   sec  1.15 GBytes  9.91 Gbits/sec    0    621 KBytes
[  5]   5.00-6.00   sec  1.15 GBytes  9.91 Gbits/sec    0    621 KBytes
[  5]   6.00-7.00   sec  1.15 GBytes  9.91 Gbits/sec    0    621 KBytes
[  5]   7.00-8.00   sec  1.15 GBytes  9.90 Gbits/sec    0    621 KBytes
[  5]   8.00-9.00   sec  1.15 GBytes  9.91 Gbits/sec    0    621 KBytes
[  5]   9.00-10.00  sec  1.15 GBytes  9.90 Gbits/sec    0    621 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  10.8 GBytes  9.30 Gbits/sec  856            sender
[  5]   0.00-10.00  sec  10.8 GBytes  9.29 Gbits/sec                  receiver

iperf Done.

so you can see that I have already tried disabling specific interfaces and validated iperf for non-MPI communication, which works fine over Ethernet. Is there a checklist or list of basic network-related checks I can perform on the server MPI applications can at least run as expected over Ethernet interfaces?

Thank you in advance for your help!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions