Skip to content

Latest commit

 

History

History
577 lines (534 loc) · 34.8 KB

README.md

File metadata and controls

577 lines (534 loc) · 34.8 KB

Docker for HPC


Docker containers can be used to package HPC applications with all their dependencies which simplifies HPC system configuration. As a result, HPC systems can be used to run much more application without reconfiguring the system. In addition, this strengthen the security and relieve the regular security patching.

Nevertheless, HPC systems also have their differences, which makes HPC system admins uncertain Docker is useful for HPC. The main concerns are the compute resources interconnect such as Infiniband and the message passing interface (MPI).

In this work, we are showing how Docker can be used to run workloads utilizing Infiniband and MPI. In addition, we are showing how users can start containers under their unique names and groups to access their network file systems for IO without the help of HPC schedulers such as Grid Engine or Slurm. Our solution consists of job launcher script and ssh client hack to support starting MPI processes in remote hosts without the need to start ssh server in each Docker containers.

User Access and Network Filesystems

To start the workload under a specific user, our launcher script build custom passwd and group file by pulling the user information from NIS then passes the resulted files in the Docker run command. Same concept can be used for any directory service such as ldap and IPA. Since the user is now available to the container, we start the workload using “su $USER –c” command. Below is an example for Docker run command that maps the user’s home directory, passwd, group file and starts ls command under that user privilege. User home directory is a network filesystem mounted to the host and we use –v to map it to the container so that the user has access to his regular environment.

Docker run –v /home:/home -v ~/docker/passwd:/etc/passwd -v ~/docker/group:/etc/group DockerLocalRegistryServer:5000/imageName:imageTag su - $USER –c ls

Infiniband Interconnect Since Docker containers are using the host kernel, all what is needed to access Infiniband is to map the device and install the user space driver. For this, we have built a repo that contains the user space drivers and use this repo during the time of building the Docker image. Sample DockerFile is included in this repo. Below is how we map the infiniband device:

docker run --privileged --device=/dev/infiniband:/dev/infiniband –v /home:/home -v ~/docker/passwd:/etc/passwd -v ~/docker/group:/etc/group DockerLocalRegistryServer:5000/imageName:imageTag su - $USER –c ls

MPI Workload MPI is the most common middleware used by most HPC applications to facilitate inter-processes communication. Different MPI implementations are available such as Openmpi and Mvapich and all are following the same standard. MPI commonly uses ssh to instantiate MPI workload using the available network with TCP/IP support then switches to Infiniband for all following communications. This causes a problem when using Docker, especially when you don’t want to start ssh server in each of your Docker containers. To solve this problem, we have written a wrapper for ssh client and included that wrapper in our Docker images.

Our launcher script starts the master MPI process in a container then the ssh wrapper script appends Docker run command to whatever command originally passed to ssh. The ssh wrapper script also takes care of cases where the MPI process tries to ssh to the localhost to start other MPI processes locally.

For this to work, we use --net=host flag which forces the containers to share the same IP address as the host which makes the communication using ssh to a remote hosts possible. --ipc=host flag is also needed to allow inter-process communication via shared memory. The ssh wrapper script is included in this repo. Below is the docker run command after adding the needed additional flags.

docker run --privileged --ipc=host --net=host --device=/dev/infiniband:/dev/infiniband –v /home:/home -v ~/docker/passwd:/etc/passwd -v ~/docker/group:/etc/group DockerLocalRegistryServer:5000/imageName:imageTag su - $USER –c  ~/docker/master_command

Below is an example of how to build and use an image to run simple MPI test.

[ahmed.bukhamsin@myserver23 ~/docker-ib-mpi/ib_mpi:master] $ docker build -t myserver19:5000/rhel7:ib_mpi .
Sending build context to Docker daemon 6.656 kB
Step 1 : FROM myserver19:5000/rhel7
 ---> 1a9b3357bac5
Step 2 : MAINTAINER Ahmed Bu-khamsin 
 ---> Running in 8009d94cc38b
 ---> 0d467aa1255e
Removing intermediate container 8009d94cc38b
Step 3 : LABEL Description "Minimal RHEL7.2 with Infiniband and MPI support"
 ---> Running in 43c6a171a46e
 ---> 51165618a64b
Removing intermediate container 43c6a171a46e
Step 4 : ADD ib_repo.repo /etc/yum.repos.d/
 ---> b3b73279411f
Removing intermediate container e60d9890dcd1
Step 5 : ADD RHEL7.2_updated.repo /etc/yum.repos.d/
 ---> c5bd7cd67893
Removing intermediate container 031397ce0c89
Step 6 : RUN yum -y install libipathverbs openmpi_gcc_qlc mvapich2_gcc_qlc hostname
 ---> Running in 37b2185e77cc
Loaded plugins: ovl, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package hostname.x86_64 0:3.13-3.el7 will be installed
---> Package libipathverbs.x86_64 0:1.3-1 will be installed
--> Processing Dependency: libibverbs.so.1(IBVERBS_1.0)(64bit) for package: libipathverbs-1.3-1.x86_64
--> Processing Dependency: libibverbs.so.1(IBVERBS_1.1)(64bit) for package: libipathverbs-1.3-1.x86_64
--> Processing Dependency: libibverbs.so.1()(64bit) for package: libipathverbs-1.3-1.x86_64
---> Package mvapich2_gcc_qlc.x86_64 0:2.1-1 will be installed
--> Processing Dependency: librdmacm for package: mvapich2_gcc_qlc-2.1-1.x86_64
--> Processing Dependency: libibumad for package: mvapich2_gcc_qlc-2.1-1.x86_64
---> Package openmpi_gcc_qlc.x86_64 0:1.10.0-1 will be installed
--> Processing Dependency: libgomp.so.1(GOMP_1.0)(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: libgomp.so.1(OMP_1.0)(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: mpi-selector for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: libquadmath.so.0()(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: libgfortran.so.3()(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: libosmcomp.so.3()(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: libpsm_infinipath.so.1()(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Processing Dependency: libgomp.so.1()(64bit) for package: openmpi_gcc_qlc-1.10.0-1.x86_64
--> Running transaction check
---> Package infinipath-libs.x86_64 0:3.3-75029.1218_rhel7_qlc will be installed
---> Package libgfortran.x86_64 0:4.8.5-4.el7 will be installed
---> Package libgomp.x86_64 0:4.8.5-4.el7 will be installed
---> Package libibumad.x86_64 0:1.3.10.2-1.3.10.2 will be installed
---> Package libibverbs.x86_64 0:1.1.8-1 will be installed
---> Package libquadmath.x86_64 0:4.8.5-4.el7 will be installed
---> Package librdmacm.x86_64 0:1.0.21-1 will be installed
---> Package mpi-selector.x86_64 0:1.0.3-1 will be installed
--> Processing Dependency: perl(Text::Wrap) for package: mpi-selector-1.0.3-1.x86_64
--> Processing Dependency: /bin/csh for package: mpi-selector-1.0.3-1.x86_64
--> Processing Dependency: perl(Getopt::Long) for package: mpi-selector-1.0.3-1.x86_64
--> Processing Dependency: perl(File::Copy) for package: mpi-selector-1.0.3-1.x86_64
--> Processing Dependency: perl(strict) for package: mpi-selector-1.0.3-1.x86_64
---> Package opensm-libs.x86_64 0:3.3.19-3.3.19 will be installed
--> Running transaction check
---> Package perl.x86_64 4:5.16.3-286.el7 will be installed
--> Processing Dependency: perl-libs = 4:5.16.3-286.el7 for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Socket) >= 1.3 for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Scalar::Util) >= 1.10 for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl-macros for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl-libs for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(threads::shared) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(threads) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(constant) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Time::Local) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Time::HiRes) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Storable) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Socket) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Scalar::Util) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Pod::Simple::XHTML) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Pod::Simple::Search) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Filter::Util::Call) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(File::Temp) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(File::Spec::Unix) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(File::Spec::Functions) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(File::Spec) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(File::Path) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Exporter) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Cwd) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: perl(Carp) for package: 4:perl-5.16.3-286.el7.x86_64
--> Processing Dependency: libperl.so()(64bit) for package: 4:perl-5.16.3-286.el7.x86_64
---> Package perl-Getopt-Long.noarch 0:2.40-2.el7 will be installed
--> Processing Dependency: perl(Pod::Usage) >= 1.14 for package: perl-Getopt-Long-2.40-2.el7.noarch
--> Processing Dependency: perl(Text::ParseWords) for package: perl-Getopt-Long-2.40-2.el7.noarch
---> Package tcsh.x86_64 0:6.18.01-8.el7 will be installed
--> Running transaction check
---> Package perl-Carp.noarch 0:1.26-244.el7 will be installed
---> Package perl-Exporter.noarch 0:5.68-3.el7 will be installed
---> Package perl-File-Path.noarch 0:2.09-2.el7 will be installed
---> Package perl-File-Temp.noarch 0:0.23.01-3.el7 will be installed
---> Package perl-Filter.x86_64 0:1.49-3.el7 will be installed
---> Package perl-PathTools.x86_64 0:3.40-5.el7 will be installed
---> Package perl-Pod-Simple.noarch 1:3.28-4.el7 will be installed
--> Processing Dependency: perl(Pod::Escapes) >= 1.04 for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
--> Processing Dependency: perl(Encode) for package: 1:perl-Pod-Simple-3.28-4.el7.noarch
---> Package perl-Pod-Usage.noarch 0:1.63-3.el7 will be installed
--> Processing Dependency: perl(Pod::Text) >= 3.15 for package: perl-Pod-Usage-1.63-3.el7.noarch
--> Processing Dependency: perl-Pod-Perldoc for package: perl-Pod-Usage-1.63-3.el7.noarch
---> Package perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 will be installed
---> Package perl-Socket.x86_64 0:2.010-3.el7 will be installed
---> Package perl-Storable.x86_64 0:2.45-3.el7 will be installed
---> Package perl-Text-ParseWords.noarch 0:3.29-4.el7 will be installed
---> Package perl-Time-HiRes.x86_64 4:1.9725-3.el7 will be installed
---> Package perl-Time-Local.noarch 0:1.2300-2.el7 will be installed
---> Package perl-constant.noarch 0:1.27-2.el7 will be installed
---> Package perl-libs.x86_64 4:5.16.3-286.el7 will be installed
---> Package perl-macros.x86_64 4:5.16.3-286.el7 will be installed
---> Package perl-threads.x86_64 0:1.87-4.el7 will be installed
---> Package perl-threads-shared.x86_64 0:1.43-6.el7 will be installed
--> Running transaction check
---> Package perl-Encode.x86_64 0:2.51-7.el7 will be installed
---> Package perl-Pod-Escapes.noarch 1:1.04-286.el7 will be installed
---> Package perl-Pod-Perldoc.noarch 0:3.20-4.el7 will be installed
--> Processing Dependency: perl(parent) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: perl(HTTP::Tiny) for package: perl-Pod-Perldoc-3.20-4.el7.noarch
--> Processing Dependency: groff-base for package: perl-Pod-Perldoc-3.20-4.el7.noarch
---> Package perl-podlators.noarch 0:2.5.1-3.el7 will be installed
--> Running transaction check
---> Package groff-base.x86_64 0:1.22.2-8.el7 will be installed
---> Package perl-HTTP-Tiny.noarch 0:0.033-3.el7 will be installed
---> Package perl-parent.noarch 1:0.225-244.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package              Arch   Version                  Repository           Size
================================================================================
Installing:
 hostname             x86_64 3.13-3.el7               HPCGRHEL7.2_updated  17 k
 libipathverbs        x86_64 1.3-1                    IB_REPO              15 k
 mvapich2_gcc_qlc     x86_64 2.1-1                    IB_REPO             3.4 M
 openmpi_gcc_qlc      x86_64 1.10.0-1                 IB_REPO              17 M
Installing for dependencies:
 groff-base           x86_64 1.22.2-8.el7             HPCGRHEL7.2_updated 942 k
 infinipath-libs      x86_64 3.3-75029.1218_rhel7_qlc IB_REPO             698 k
 libgfortran          x86_64 4.8.5-4.el7              HPCGRHEL7.2_updated 293 k
 libgomp              x86_64 4.8.5-4.el7              HPCGRHEL7.2_updated 130 k
 libibumad            x86_64 1.3.10.2-1.3.10.2        IB_REPO              63 k
 libibverbs           x86_64 1.1.8-1                  IB_REPO              46 k
 libquadmath          x86_64 4.8.5-4.el7              HPCGRHEL7.2_updated 182 k
 librdmacm            x86_64 1.0.21-1                 IB_REPO              61 k
 mpi-selector         x86_64 1.0.3-1                  IB_REPO              24 k
 opensm-libs          x86_64 3.3.19-3.3.19            IB_REPO              60 k
 perl                 x86_64 4:5.16.3-286.el7         HPCGRHEL7.2_updated 8.0 M
 perl-Carp            noarch 1.26-244.el7             HPCGRHEL7.2_updated  19 k
 perl-Encode          x86_64 2.51-7.el7               HPCGRHEL7.2_updated 1.5 M
 perl-Exporter        noarch 5.68-3.el7               HPCGRHEL7.2_updated  28 k
 perl-File-Path       noarch 2.09-2.el7               HPCGRHEL7.2_updated  27 k
 perl-File-Temp       noarch 0.23.01-3.el7            HPCGRHEL7.2_updated  56 k
 perl-Filter          x86_64 1.49-3.el7               HPCGRHEL7.2_updated  76 k
 perl-Getopt-Long     noarch 2.40-2.el7               HPCGRHEL7.2_updated  56 k
 perl-HTTP-Tiny       noarch 0.033-3.el7              HPCGRHEL7.2_updated  38 k
 perl-PathTools       x86_64 3.40-5.el7               HPCGRHEL7.2_updated  83 k
 perl-Pod-Escapes     noarch 1:1.04-286.el7           HPCGRHEL7.2_updated  50 k
 perl-Pod-Perldoc     noarch 3.20-4.el7               HPCGRHEL7.2_updated  87 k
 perl-Pod-Simple      noarch 1:3.28-4.el7             HPCGRHEL7.2_updated 216 k
 perl-Pod-Usage       noarch 1.63-3.el7               HPCGRHEL7.2_updated  27 k
 perl-Scalar-List-Utils
                      x86_64 1.27-248.el7             HPCGRHEL7.2_updated  36 k
 perl-Socket          x86_64 2.010-3.el7              HPCGRHEL7.2_updated  49 k
 perl-Storable        x86_64 2.45-3.el7               HPCGRHEL7.2_updated  77 k
 perl-Text-ParseWords noarch 3.29-4.el7               HPCGRHEL7.2_updated  14 k
 perl-Time-HiRes      x86_64 4:1.9725-3.el7           HPCGRHEL7.2_updated  45 k
 perl-Time-Local      noarch 1.2300-2.el7             HPCGRHEL7.2_updated  24 k
 perl-constant        noarch 1.27-2.el7               HPCGRHEL7.2_updated  19 k
 perl-libs            x86_64 4:5.16.3-286.el7         HPCGRHEL7.2_updated 687 k
 perl-macros          x86_64 4:5.16.3-286.el7         HPCGRHEL7.2_updated  43 k
 perl-parent          noarch 1:0.225-244.el7          HPCGRHEL7.2_updated  12 k
 perl-podlators       noarch 2.5.1-3.el7              HPCGRHEL7.2_updated 112 k
 perl-threads         x86_64 1.87-4.el7               HPCGRHEL7.2_updated  49 k
 perl-threads-shared  x86_64 1.43-6.el7               HPCGRHEL7.2_updated  39 k
 tcsh                 x86_64 6.18.01-8.el7            HPCGRHEL7.2_updated 337 k

Transaction Summary
================================================================================
Install  4 Packages (+38 Dependent packages)

Total download size: 34 M
Installed size: 133 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                               80 MB/s |  34 MB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libibverbs-1.1.8-1.x86_64                                   1/42
  Installing : librdmacm-1.0.21-1.x86_64                                   2/42
  Installing : libquadmath-4.8.5-4.el7.x86_64                              3/42
  Installing : libibumad-1.3.10.2-1.3.10.2.x86_64                          4/42
  Installing : opensm-libs-3.3.19-3.3.19.x86_64                            5/42
  Installing : mvapich2_gcc_qlc-2.1-1.x86_64                               6/42
/var/tmp/rpm-tmp.Pmp1b5: line 2: /usr/bin/mpi-selector: No such file or directory
warning: %post(mvapich2_gcc_qlc-2.1-1.x86_64) scriptlet failed, exit status 127
Non-fatal POSTIN scriptlet failure in rpm package mvapich2_gcc_qlc-2.1-1.x86_64
  Installing : libgfortran-4.8.5-4.el7.x86_64                              7/42
  Installing : libgomp-4.8.5-4.el7.x86_64                                  8/42
  Installing : tcsh-6.18.01-8.el7.x86_64                                   9/42
  Installing : groff-base-1.22.2-8.el7.x86_64                             10/42
  Installing : 1:perl-parent-0.225-244.el7.noarch                         11/42
  Installing : perl-HTTP-Tiny-0.033-3.el7.noarch                          12/42
  Installing : perl-podlators-2.5.1-3.el7.noarch                          13/42
  Installing : perl-Pod-Perldoc-3.20-4.el7.noarch                         14/42
  Installing : 1:perl-Pod-Escapes-1.04-286.el7.noarch                     15/42
  Installing : perl-Text-ParseWords-3.29-4.el7.noarch                     16/42
  Installing : perl-Encode-2.51-7.el7.x86_64                              17/42
  Installing : perl-Pod-Usage-1.63-3.el7.noarch                           18/42
  Installing : 4:perl-libs-5.16.3-286.el7.x86_64                          19/42
  Installing : 4:perl-macros-5.16.3-286.el7.x86_64                        20/42
  Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                      21/42
  Installing : perl-Exporter-5.68-3.el7.noarch                            22/42
  Installing : perl-constant-1.27-2.el7.noarch                            23/42
  Installing : perl-Time-Local-1.2300-2.el7.noarch                        24/42
  Installing : perl-Socket-2.010-3.el7.x86_64                             25/42
  Installing : perl-Storable-2.45-3.el7.x86_64                            26/42
  Installing : perl-PathTools-3.40-5.el7.x86_64                           27/42
  Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64                 28/42
  Installing : perl-File-Temp-0.23.01-3.el7.noarch                        29/42
  Installing : perl-File-Path-2.09-2.el7.noarch                           30/42
  Installing : perl-threads-shared-1.43-6.el7.x86_64                      31/42
  Installing : perl-threads-1.87-4.el7.x86_64                             32/42
  Installing : perl-Filter-1.49-3.el7.x86_64                              33/42
  Installing : perl-Carp-1.26-244.el7.noarch                              34/42
  Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch                        35/42
  Installing : perl-Getopt-Long-2.40-2.el7.noarch                         36/42
  Installing : 4:perl-5.16.3-286.el7.x86_64                               37/42
  Installing : mpi-selector-1.0.3-1.x86_64                                38/42
  Installing : infinipath-libs-3.3-75029.1218_rhel7_qlc.x86_64            39/42
  Installing : openmpi_gcc_qlc-1.10.0-1.x86_64                            40/42
ERROR: Cannot read from source directory
       (/usr/mpi/gcc/openmpi-1.10.0-qlc/bin)
warning: %post(openmpi_gcc_qlc-1.10.0-1.x86_64) scriptlet failed, exit status 1
Non-fatal POSTIN scriptlet failure in rpm package openmpi_gcc_qlc-1.10.0-1.x86_64
  Installing : libipathverbs-1.3-1.x86_64                                 41/42
  Installing : hostname-3.13-3.el7.x86_64                                 42/42
  Verifying  : libibverbs-1.1.8-1.x86_64                                   1/42
  Verifying  : perl-HTTP-Tiny-0.033-3.el7.noarch                           2/42
  Verifying  : infinipath-libs-3.3-75029.1218_rhel7_qlc.x86_64             3/42
  Verifying  : perl-threads-shared-1.43-6.el7.x86_64                       4/42
  Verifying  : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                       5/42
  Verifying  : perl-Exporter-5.68-3.el7.noarch                             6/42
  Verifying  : perl-constant-1.27-2.el7.noarch                             7/42
  Verifying  : perl-PathTools-3.40-5.el7.x86_64                            8/42
  Verifying  : 4:perl-libs-5.16.3-286.el7.x86_64                           9/42
  Verifying  : 4:perl-macros-5.16.3-286.el7.x86_64                        10/42
  Verifying  : 1:perl-parent-0.225-244.el7.noarch                         11/42
  Verifying  : opensm-libs-3.3.19-3.3.19.x86_64                           12/42
  Verifying  : 4:perl-5.16.3-286.el7.x86_64                               13/42
  Verifying  : groff-base-1.22.2-8.el7.x86_64                             14/42
  Verifying  : perl-File-Temp-0.23.01-3.el7.noarch                        15/42
  Verifying  : 1:perl-Pod-Simple-3.28-4.el7.noarch                        16/42
  Verifying  : tcsh-6.18.01-8.el7.x86_64                                  17/42
  Verifying  : perl-Time-Local-1.2300-2.el7.noarch                        18/42
  Verifying  : perl-Pod-Perldoc-3.20-4.el7.noarch                         19/42
  Verifying  : perl-Socket-2.010-3.el7.x86_64                             20/42
  Verifying  : mpi-selector-1.0.3-1.x86_64                                21/42
  Verifying  : libipathverbs-1.3-1.x86_64                                 22/42
  Verifying  : perl-podlators-2.5.1-3.el7.noarch                          23/42
  Verifying  : libgfortran-4.8.5-4.el7.x86_64                             24/42
  Verifying  : perl-Storable-2.45-3.el7.x86_64                            25/42
  Verifying  : perl-Scalar-List-Utils-1.27-248.el7.x86_64                 26/42
  Verifying  : 1:perl-Pod-Escapes-1.04-286.el7.noarch                     27/42
  Verifying  : perl-Pod-Usage-1.63-3.el7.noarch                           28/42
  Verifying  : hostname-3.13-3.el7.x86_64                                 29/42
  Verifying  : perl-Encode-2.51-7.el7.x86_64                              30/42
  Verifying  : libibumad-1.3.10.2-1.3.10.2.x86_64                         31/42
  Verifying  : perl-Getopt-Long-2.40-2.el7.noarch                         32/42
  Verifying  : perl-File-Path-2.09-2.el7.noarch                           33/42
  Verifying  : libgomp-4.8.5-4.el7.x86_64                                 34/42
  Verifying  : perl-threads-1.87-4.el7.x86_64                             35/42
  Verifying  : librdmacm-1.0.21-1.x86_64                                  36/42
  Verifying  : mvapich2_gcc_qlc-2.1-1.x86_64                              37/42
  Verifying  : libquadmath-4.8.5-4.el7.x86_64                             38/42
  Verifying  : perl-Filter-1.49-3.el7.x86_64                              39/42
  Verifying  : openmpi_gcc_qlc-1.10.0-1.x86_64                            40/42
  Verifying  : perl-Text-ParseWords-3.29-4.el7.noarch                     41/42
  Verifying  : perl-Carp-1.26-244.el7.noarch                              42/42

Installed:
  hostname.x86_64 0:3.13-3.el7          libipathverbs.x86_64 0:1.3-1
  mvapich2_gcc_qlc.x86_64 0:2.1-1       openmpi_gcc_qlc.x86_64 0:1.10.0-1

Dependency Installed:
  groff-base.x86_64 0:1.22.2-8.el7
  infinipath-libs.x86_64 0:3.3-75029.1218_rhel7_qlc
  libgfortran.x86_64 0:4.8.5-4.el7
  libgomp.x86_64 0:4.8.5-4.el7
  libibumad.x86_64 0:1.3.10.2-1.3.10.2
  libibverbs.x86_64 0:1.1.8-1
  libquadmath.x86_64 0:4.8.5-4.el7
  librdmacm.x86_64 0:1.0.21-1
  mpi-selector.x86_64 0:1.0.3-1
  opensm-libs.x86_64 0:3.3.19-3.3.19
  perl.x86_64 4:5.16.3-286.el7
  perl-Carp.noarch 0:1.26-244.el7
  perl-Encode.x86_64 0:2.51-7.el7
  perl-Exporter.noarch 0:5.68-3.el7
  perl-File-Path.noarch 0:2.09-2.el7
  perl-File-Temp.noarch 0:0.23.01-3.el7
  perl-Filter.x86_64 0:1.49-3.el7
  perl-Getopt-Long.noarch 0:2.40-2.el7
  perl-HTTP-Tiny.noarch 0:0.033-3.el7
  perl-PathTools.x86_64 0:3.40-5.el7
  perl-Pod-Escapes.noarch 1:1.04-286.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7
  perl-Pod-Simple.noarch 1:3.28-4.el7
  perl-Pod-Usage.noarch 0:1.63-3.el7
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-3.el7
  perl-Storable.x86_64 0:2.45-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7
  perl-Time-HiRes.x86_64 4:1.9725-3.el7
  perl-Time-Local.noarch 0:1.2300-2.el7
  perl-constant.noarch 0:1.27-2.el7
  perl-libs.x86_64 4:5.16.3-286.el7
  perl-macros.x86_64 4:5.16.3-286.el7
  perl-parent.noarch 1:0.225-244.el7
  perl-podlators.noarch 0:2.5.1-3.el7
  perl-threads.x86_64 0:1.87-4.el7
  perl-threads-shared.x86_64 0:1.43-6.el7
  tcsh.x86_64 0:6.18.01-8.el7

Complete!
 ---> 5773002ff489
Removing intermediate container 37b2185e77cc
Step 7 : RUN yum -y erase openmpi_gcc_qlc mvapich2_gcc_qlc     #>>>>>>>>>>>>>>>>>>>>>>>>>>>> Because of a bug
 ---> Running in 8eba240ccf44
Loaded plugins: ovl, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package mvapich2_gcc_qlc.x86_64 0:2.1-1 will be erased
---> Package openmpi_gcc_qlc.x86_64 0:1.10.0-1 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                 Arch          Version            Repository       Size
================================================================================
Removing:
 mvapich2_gcc_qlc        x86_64        2.1-1              @IB_REPO         17 M
 openmpi_gcc_qlc         x86_64        1.10.0-1           @IB_REPO         71 M

Transaction Summary
================================================================================
Remove  2 Packages

Installed size: 89 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
ERROR: Could not find openmpi_gcc_qlc-1.10.0 files registered
  Erasing    : openmpi_gcc_qlc-1.10.0-1.x86_64                              1/2
ERROR: Could not find mvapich2_gcc_qlc-2.1 files registered
  Erasing    : mvapich2_gcc_qlc-2.1-1.x86_64                                2/2
  Verifying  : mvapich2_gcc_qlc-2.1-1.x86_64                                1/2
  Verifying  : openmpi_gcc_qlc-1.10.0-1.x86_64                              2/2

Removed:
  mvapich2_gcc_qlc.x86_64 0:2.1-1       openmpi_gcc_qlc.x86_64 0:1.10.0-1

Complete!
 ---> dacf1bb43499
Removing intermediate container 8eba240ccf44
Step 8 : RUN rm -rf /usr/mpi/gcc/openmpi_gcc_qlc*
 ---> Running in 7bab81ab1069
 ---> 22527db86967
Removing intermediate container 7bab81ab1069
Step 9 : RUN rm -rf /usr/mpi/gcc/mvapich2_gcc_qlc*
 ---> Running in 27f1abb81a02
 ---> 327929e1b1ad
Removing intermediate container 27f1abb81a02
Step 10 : RUN yumdownloader mvapich2_gcc_qlc openmpi_gcc_qlc
 ---> Running in 4d1b8be3252c
Loaded plugins: ovl, product-id
 ---> a03022f3a83d
Removing intermediate container 4d1b8be3252c
Step 11 : RUN rpm -ivh mvapich2_gcc_qlc* openmpi_gcc_qlc*
 ---> Running in 6b4963973205
Preparing...                          ########################################
Updating / installing...
mvapich2_gcc_qlc-2.1-1                ########################################
openmpi_gcc_qlc-1.10.0-1              ########################################
 ---> 33706455a412
Removing intermediate container 6b4963973205
Step 12 : RUN yum -y install mpitests_openmpi_gcc_qlc mpitests_mvapich2_gcc_qlc
 ---> Running in 54df6cb06622
Loaded plugins: ovl, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package mpitests_mvapich2_gcc_qlc.x86_64 0:3.2-923 will be installed
---> Package mpitests_openmpi_gcc_qlc.x86_64 0:3.2-923 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                         Arch         Version       Repository     Size
================================================================================
Installing:
 mpitests_mvapich2_gcc_qlc       x86_64       3.2-923       IB_REPO        90 k
 mpitests_openmpi_gcc_qlc        x86_64       3.2-923       IB_REPO        93 k

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 182 k
Installed size: 699 k
Downloading packages:
--------------------------------------------------------------------------------
Total                                              2.5 MB/s | 182 kB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : mpitests_mvapich2_gcc_qlc-3.2-923.x86_64                     1/2
  Installing : mpitests_openmpi_gcc_qlc-3.2-923.x86_64                      2/2
  Verifying  : mpitests_openmpi_gcc_qlc-3.2-923.x86_64                      1/2
  Verifying  : mpitests_mvapich2_gcc_qlc-3.2-923.x86_64                     2/2

Installed:
  mpitests_mvapich2_gcc_qlc.x86_64 0:3.2-923
  mpitests_openmpi_gcc_qlc.x86_64 0:3.2-923

Complete!
 ---> 85fcf80cc9c8
Removing intermediate container 54df6cb06622
Step 13 : RUN yum -y install openssh-clients
 ---> Running in 038a930c9af7
Loaded plugins: ovl, product-id, search-disabled-repos, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package openssh-clients.x86_64 0:6.6.1p1-25.el7_2 will be installed
--> Processing Dependency: openssh = 6.6.1p1-25.el7_2 for package: openssh-clients-6.6.1p1-25.el7_2.x86_64
--> Processing Dependency: fipscheck-lib(x86-64) >= 1.3.0 for package: openssh-clients-6.6.1p1-25.el7_2.x86_64
--> Processing Dependency: libfipscheck.so.1()(64bit) for package: openssh-clients-6.6.1p1-25.el7_2.x86_64
--> Processing Dependency: libedit.so.0()(64bit) for package: openssh-clients-6.6.1p1-25.el7_2.x86_64
--> Running transaction check
---> Package fipscheck-lib.x86_64 0:1.4.1-5.el7 will be installed
--> Processing Dependency: /usr/bin/fipscheck for package: fipscheck-lib-1.4.1-5.el7.x86_64
---> Package libedit.x86_64 0:3.0-12.20121213cvs.el7 will be installed
---> Package openssh.x86_64 0:6.6.1p1-25.el7_2 will be installed
--> Running transaction check
---> Package fipscheck.x86_64 0:1.4.1-5.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch    Version                    Repository            Size
================================================================================
Installing:
 openssh-clients  x86_64  6.6.1p1-25.el7_2           HPCGRHEL7.2_updated  639 k
Installing for dependencies:
 fipscheck        x86_64  1.4.1-5.el7                HPCGRHEL7.2_updated   21 k
 fipscheck-lib    x86_64  1.4.1-5.el7                HPCGRHEL7.2_updated   11 k
 libedit          x86_64  3.0-12.20121213cvs.el7     HPCGRHEL7.2_updated   92 k
 openssh          x86_64  6.6.1p1-25.el7_2           HPCGRHEL7.2_updated  435 k

Transaction Summary
================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 1.2 M
Installed size: 3.9 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                               11 MB/s | 1.2 MB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : fipscheck-lib-1.4.1-5.el7.x86_64                             1/5
  Installing : fipscheck-1.4.1-5.el7.x86_64                                 2/5
  Installing : openssh-6.6.1p1-25.el7_2.x86_64                              3/5
  Installing : libedit-3.0-12.20121213cvs.el7.x86_64                        4/5
  Installing : openssh-clients-6.6.1p1-25.el7_2.x86_64                      5/5
  Verifying  : libedit-3.0-12.20121213cvs.el7.x86_64                        1/5
  Verifying  : openssh-6.6.1p1-25.el7_2.x86_64                              2/5
  Verifying  : openssh-clients-6.6.1p1-25.el7_2.x86_64                      3/5
  Verifying  : fipscheck-1.4.1-5.el7.x86_64                                 4/5
  Verifying  : fipscheck-lib-1.4.1-5.el7.x86_64                             5/5

Installed:
  openssh-clients.x86_64 0:6.6.1p1-25.el7_2

Dependency Installed:
  fipscheck.x86_64 0:1.4.1-5.el7            fipscheck-lib.x86_64 0:1.4.1-5.el7
  libedit.x86_64 0:3.0-12.20121213cvs.el7   openssh.x86_64 0:6.6.1p1-25.el7_2

Complete!
 ---> b58a1b32ceae
Removing intermediate container 038a930c9af7
Step 14 : RUN mv /usr/bin/ssh /usr/bin/ssh_real
 ---> Running in 9c3dbfc38cdb
 ---> 19ba209bc3f4
Removing intermediate container 9c3dbfc38cdb
Step 15 : ADD ssh-replacement.sh /usr/bin/ssh
 ---> bb0ec7d76ff2
Removing intermediate container bda1c503fe8a
Successfully built bb0ec7d76ff2

ahmed.bukhamsin@myserver21 ~/docker-ib-mpi] $ ./docker-mvapich2-mpirun -np 2 -hostfile ~/hostfile /usr/mpi/gcc/mvapich2-2.1-qlc/tests/osu_benchmarks-3.1.1/osu_latency D D
mpirun -np 2 -hostfile ~/hostfile /usr/mpi/gcc/mvapich2-2.1-qlc/tests/osu_benchmarks-3.1.1/osu_latency D D
# OSU MPI Latency Test v3.1.1
# Size            Latency (us)
0                         1.35
1                         1.36
2                         1.37
4                         1.36
8                         1.36
16                        1.57
32                        1.57
64                        1.57
128                       1.62
256                       1.75
512                       1.99
1024                      2.34
2048                      3.15
4096                      4.14
8192                      5.82
16384                    10.54
32768                    16.63
65536                    46.64
131072                   79.23
262144                  119.04
524288                  200.49
1048576                 362.68
2097152                 687.30
4194304                1335.89