Skip to content

Commit

Permalink
Merge pull request #3 from jithinjosepkl/master
Browse files Browse the repository at this point in the history
CentOS 7.6/7.7 HPC images
  • Loading branch information
jithinjosepkl authored Oct 23, 2019
2 parents 98fcfe0 + a5180a0 commit aa3d036
Show file tree
Hide file tree
Showing 36 changed files with 321 additions and 61 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@

# Azhpc Images

This repository contains installation scripts for HPC images in Azure Marketplace.


# Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a
Expand Down
24 changes: 24 additions & 0 deletions centos/centos-7.6-hpc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# CentOS 7.6 HPC Image

The CentOS 7.6 HPC Image includes optimizations and recommended configurations to deliver optimal performance,
consistency, and reliability. This image consists of the following HPC tools and libraries:

- Mellanox OFED
- Pre-configured IPoIB (IP-over-InfiniBand)
- Popular InfiniBand based MPI Libraries
- HPC-X
- IntelMPI
- MVAPICH2
- OpenMPI
- Communication Runtimes
- Libfabric
- OpenUCX
- Optimized librares
- AMD Blis
- AMD FFTW
- AMD Flame
- Intel MKL

The MPI libraries are configured as environment modules. Users can select any preferred MPI flavor as follows:

`module load mpi/<mpi-flavor>`
4 changes: 4 additions & 0 deletions centos/centos-7.6-hpc/hpc-tuning.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../common/hpc-tuning.sh

8 changes: 7 additions & 1 deletion centos/centos-7.7/install.sh → centos/centos-7.6-hpc/install.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,20 @@ set -ex
./install_utils.sh

# install compilers
./install_gcc-8.2.sh
./install_gcc.sh

# install mellanox ofed
./install_mellanoxofed.sh

# install mpi libraries
./install_mpis.sh

# install AMD tuned libraries
./install_amd_libs.sh

# install Intel libraries
./install_intel_libs.sh

# optimizations
./hpc-tuning.sh

4 changes: 4 additions & 0 deletions centos/centos-7.6-hpc/install_amd_libs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../common/install_amd_libs.sh

4 changes: 4 additions & 0 deletions centos/centos-7.6-hpc/install_gcc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../../common/install_gcc-9.2.sh

4 changes: 4 additions & 0 deletions centos/centos-7.6-hpc/install_intel_libs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../../common/install_intel_libs.sh

10 changes: 10 additions & 0 deletions centos/centos-7.6-hpc/install_mellanoxofed.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash
set -ex

wget https://www.mellanox.com/downloads/ofed/MLNX_OFED-4.7-1.0.0.1/MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.6-x86_64.tgz
tar zxvf MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.6-x86_64.tgz

KERNEL=( $(rpm -q kernel | sed 's/kernel\-//g') )
KERNEL=${KERNEL[-1]}
yum install -y kernel-devel-${KERNEL}
./MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.6-x86_64/mlnxofedinstall --kernel $KERNEL --kernel-sources /usr/src/kernels/${KERNEL} --add-kernel-support --skip-repo
38 changes: 38 additions & 0 deletions centos/centos-7.6-hpc/install_mpis.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/bash

# Load gcc
GCC_VERSION=gcc-9.2.0
export PATH=/opt/${GCC_VERSION}/bin:$PATH
export LD_LIBRARY_PATH=/opt/${GCC_VERSION}/lib64:$LD_LIBRARY_PATH
set CC=/opt/${GCC_VERSION}/bin/gcc
set GCC=/opt/${GCC_VERSION}/bin/gcc


INSTALL_PREFIX=/opt

# HPC-X v2.5.0
HPCX_VERSION="v2.5.0"
wget http://www.mellanox.com/downloads/hpc/hpc-x/v2.5/hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.6-x86_64.tbz
tar -xvf hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.6-x86_64.tbz
mv hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.6-x86_64 ${INSTALL_PREFIX}
HPCX_PATH=${INSTALL_PREFIX}/hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.6-x86_64

# Setup module files for MPIs
mkdir -p /usr/share/Modules/modulefiles/mpi/

# HPC-X
cat << EOF >> /usr/share/Modules/modulefiles/mpi/hpcx-${HPCX_VERSION}
#%Module 1.0
#
# HPCx ${HPCX_VERSION}
#
conflict mpi
module load ${HPCX_PATH}/modulefiles/hpcx
EOF

# Create symlinks for modulefiles
ln -s /usr/share/Modules/modulefiles/mpi/hpcx-${HPCX_VERSION} /usr/share/Modules/modulefiles/mpi/hpcx

# Install platform independent MPIs
../../common/install_mpis.sh ${GCC_VERSION} ${HPCX_PATH}

4 changes: 4 additions & 0 deletions centos/centos-7.6-hpc/install_utils.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../common/install_utils.sh

1 change: 0 additions & 1 deletion centos/centos-7.6/hpc-tuning.sh

This file was deleted.

1 change: 0 additions & 1 deletion centos/centos-7.6/install_gcc-8.2.sh

This file was deleted.

7 changes: 0 additions & 7 deletions centos/centos-7.6/install_mellanoxofed.sh

This file was deleted.

1 change: 0 additions & 1 deletion centos/centos-7.6/install_mpis.sh

This file was deleted.

1 change: 0 additions & 1 deletion centos/centos-7.6/install_utils.sh

This file was deleted.

24 changes: 24 additions & 0 deletions centos/centos-7.7-hpc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# CentOS 7.7 HPC Image

The CentOS 7.7 HPC Image includes optimizations and recommended configurations to deliver optimal performance,
consistency, and reliability. This image consists of the following HPC tools and libraries:

- Mellanox OFED
- Pre-configured IPoIB (IP-over-InfiniBand)
- Popular InfiniBand based MPI Libraries
- HPC-X
- IntelMPI
- MVAPICH2
- OpenMPI
- Communication Runtimes
- Libfabric
- OpenUCX
- Optimized librares
- AMD Blis
- AMD FFTW
- AMD Flame
- Intel MKL

The MPI libraries are configured as environment modules. Users can select any preferred MPI flavor as follows:

`module load mpi/<mpi-flavor>`
4 changes: 4 additions & 0 deletions centos/centos-7.7-hpc/hpc-tuning.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../common/hpc-tuning.sh

8 changes: 7 additions & 1 deletion centos/centos-7.6/install.sh → centos/centos-7.7-hpc/install.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,20 @@ set -ex
./install_utils.sh

# install compilers
./install_gcc-8.2.sh
./install_gcc.sh

# install mellanox ofed
./install_mellanoxofed.sh

# install mpi libraries
./install_mpis.sh

# install AMD tuned libraries
./install_amd_libs.sh

# install Intel libraries
./install_intel_libs.sh

# optimizations
./hpc-tuning.sh

4 changes: 4 additions & 0 deletions centos/centos-7.7-hpc/install_amd_libs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../common/install_amd_libs.sh

4 changes: 4 additions & 0 deletions centos/centos-7.7-hpc/install_gcc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../../common/install_gcc-9.2.sh

4 changes: 4 additions & 0 deletions centos/centos-7.7-hpc/install_intel_libs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../../common/install_intel_libs.sh

11 changes: 11 additions & 0 deletions centos/centos-7.7-hpc/install_mellanoxofed.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
set -ex

wget http://content.mellanox.com/ofed/MLNX_OFED-4.7-1.0.0.1/MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64.tgz
tar zxvf MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64.tgz

KERNEL=( $(rpm -q kernel | sed 's/kernel\-//g') )
KERNEL=${KERNEL[-1]}
yum install -y kernel-devel-${KERNEL}
./MLNX_OFED_LINUX-4.7-1.0.0.1-rhel7.7-x86_64/mlnxofedinstall --kernel $KERNEL --kernel-sources /usr/src/kernels/${KERNEL} --add-kernel-support --skip-repo

38 changes: 38 additions & 0 deletions centos/centos-7.7-hpc/install_mpis.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/bash

# Load gcc
GCC_VERSION=gcc-9.2.0
export PATH=/opt/${GCC_VERSION}/bin:$PATH
export LD_LIBRARY_PATH=/opt/${GCC_VERSION}/lib64:$LD_LIBRARY_PATH
set CC=/opt/${GCC_VERSION}/bin/gcc
set GCC=/opt/${GCC_VERSION}/bin/gcc


INSTALL_PREFIX=/opt

# HPC-X v2.5.0
HPCX_VERSION="v2.5.0"
wget http://content.mellanox.com/hpc/hpc-x/v2.5/hpcx-v2.5.0-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.7-x86_64.tbz
tar -xvf hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.7-x86_64.tbz
mv hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.7-x86_64 ${INSTALL_PREFIX}
HPCX_PATH=${INSTALL_PREFIX}/hpcx-${HPCX_VERSION}-gcc-MLNX_OFED_LINUX-4.7-1.0.0.1-redhat7.7-x86_64

# Setup module files for MPIs
mkdir -p /usr/share/Modules/modulefiles/mpi/

# HPC-X
cat << EOF >> /usr/share/Modules/modulefiles/mpi/hpcx-${HPCX_VERSION}
#%Module 1.0
#
# HPCx ${HPCX_VERSION}
#
conflict mpi
module load ${HPCX_PATH}/modulefiles/hpcx
EOF

# Create symlinks for modulefiles
ln -s /usr/share/Modules/modulefiles/mpi/hpcx-${HPCX_VERSION} /usr/share/Modules/modulefiles/mpi/hpcx

# Install platform independent MPIs
../../common/install_mpis.sh ${GCC_VERSION} ${HPCX_PATH}

4 changes: 4 additions & 0 deletions centos/centos-7.7-hpc/install_utils.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash

../common/install_utils.sh

1 change: 0 additions & 1 deletion centos/centos-7.7/hpc-tuning.sh

This file was deleted.

1 change: 0 additions & 1 deletion centos/centos-7.7/install_gcc-8.2.sh

This file was deleted.

7 changes: 0 additions & 7 deletions centos/centos-7.7/install_mellanoxofed.sh

This file was deleted.

1 change: 0 additions & 1 deletion centos/centos-7.7/install_mpis.sh

This file was deleted.

1 change: 0 additions & 1 deletion centos/centos-7.7/install_utils.sh

This file was deleted.

2 changes: 2 additions & 0 deletions centos/common/hpc-tuning.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/bin/bash

# Disable some unneeded services by default (administrators can re-enable if desired)
systemctl disable wpa_supplicant
systemctl disable abrtd
Expand Down
37 changes: 37 additions & 0 deletions centos/common/install_amd_libs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash
set -ex

# Load gcc
GCC_VERSION=gcc-9.2.0
export PATH=/opt/${GCC_VERSION}/bin:$PATH
export LD_LIBRARY_PATH=/opt/${GCC_VERSION}/lib64:$LD_LIBRARY_PATH
set CC=/opt/${GCC_VERSION}/bin/gcc
set GCC=/opt/${GCC_VERSION}/bin/gcc

yum install -y texinfo
INSTALL_PREFIX=/opt/amd
mkdir -p ${INSTALL_PREFIX}

# AMD FFTW
wget https://github.com/amd/amd-fftw/releases/download/2.0/aocl-fftw-centos-2.0.tar.gz
tar -xvf aocl-fftw-centos-2.0.tar.gz
cp -r amd-fftw ${INSTALL_PREFIX}/fftw


# AMD libflame
wget https://github.com/amd/libflame/releases/download/2.0/aocl-libflame-centos-2.0.tar.gz
tar -xvf aocl-libflame-centos-2.0.tar.gz
cp -r amd-libflame ${INSTALL_PREFIX}/libflame


# AMD blis
wget https://github.com/amd/blis/releases/download/2.0/aocl-blis-centos-2.0.tar.gz
tar -xvf aocl-blis-centos-2.0.tar.gz
cp -r amd-blis ${INSTALL_PREFIX}/blis


# AMD blis-mt
wget https://github.com/amd/blis/releases/download/2.0/aocl-blis-mt-centos-2.0.tar.gz
tar -xvf aocl-blis-mt-centos-2.0.tar.gz
cp -r amd-blis-mt ${INSTALL_PREFIX}/blis-mt

Empty file modified centos/common/install_utils.sh
100644 → 100755
Empty file.
8 changes: 4 additions & 4 deletions common/install_gcc-8.2.sh
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@ set -x
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
tar -xvf gmp-6.1.0.tar.bz2
cd ./gmp-6.1.0
./configure && make -j && make install
./configure && make -j$(nproc) && make install
cd ..

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
tar -xvf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4
./configure && make -j && make install
./configure && make -j$(nproc) && make install
cd ..

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
tar -xvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure && make -j && make install
./configure && make -j$(nproc) && make install
cd ..

# install gcc 8.2
wget https://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz
tar -xvf gcc-8.2.0.tar.gz
cd gcc-8.2.0
./configure --disable-multilib --prefix=/opt/gcc-8.2.0 && make -j && make install
./configure --disable-multilib --prefix=/opt/gcc-8.2.0 && make -j$(nproc) && make install
cd ..


Expand Down
Loading

0 comments on commit aa3d036

Please sign in to comment.