simplifying ai, hpc, and visualization workflows with … · simplifying dl, ml and hpc workflows...

26
Chintan Patel – Senior Product Marketing Manager Scott McMillan – Senior Solutions Architect SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH GPU - OPTIMIZED CONTAINERS FROM NGC

Upload: others

Post on 29-May-2020

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

Chintan Patel – Senior Product Marketing Manager

Scott McMillan – Senior Solutions Architect

SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH GPU-OPTIMIZED CONTAINERS FROM NGC

Page 2: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

2

DIFFERENT ROLES. SAME GOALS.Driving Productivity and Faster Time-to-Solutions

Developers

Speed up development with

existing building blocks

Data Scientists and Researchers

Eliminate mundane tasks,

focus on science and research

Sysadmins

Deliver appropriate

deployment environments

DevOps

Consistent & faster develop-to-

production cycle

Page 3: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

3

NGC: GPU-OPTIMIZED SOFTWARE HUBSimplifying DL, ML and HPC Workflows

Pre-trained ModelsNLP, Classification, Object Detection & more Industry SDKs

Medical Imaging, Intelligent Video Analytics

Model Training ScriptsNLP, Image Classification, Object Detection & more

Helm ChartsAI applications, K8s cluster, Registry

ContainersDL, ML, HPC

DEEP LEARNING MACHINE LEARNING

HPC VISUALIZATION

NAMD | GROMACS | ParaView | IndeX | more

TensorFlow | PyTorch | RAPIDS | H2O | more

Page 4: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

4

CONTAINERS: SIMPLIFYING WORKFLOWS

Simplifies Deployments

- Eliminates complex, time-consuming builds and installs

Portable

- Deploy across various environments

Get started in minutes

- Simply Pull & Run

Reproducible Results

- Constant environment provides reproducible results

WHY CONTAINERS

Page 5: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

5

NGC CONTAINERS: ACCELERATING WORKFLOWS

Optimized for Performance- Monthly DL container releases offer latest features and

superior performance on NVIDIA GPUs

Scalable Performance

- Supports multi-GPU & multi-node systems for scale-up & scale-out environments

Designed for Enterprise & HPC environments

- Supports Docker & Singularity runtimes

Run Anywhere

- Pascal/Volta/Turing-powered NVIDIA DGX, PCs, workstations, and servers

- On-Prem to Hybrid to Cloud

WHY NGC CONTAINERS

Page 6: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

6

CONTINUOUS PERFORMANCE IMPROVEMENT

Developers’ Software Optimizations Deliver Better Performance on the Same Hardware

Monthly DL Framework Updates & HPC Software Stack Optimizations Drive Performance

17000

17500

18000

18500

19000

19500

20000

20500

21000

21500

19.03 19.10

Ima

ges/

Seco

nd

MxNet

256 Batch Size | ResNet-50 Training v1.5| 16x V100 | DGX-2

0

2000

4000

6000

8000

10000

12000

14000

16000

19.03 19.10

Toke

ns/

Seco

ndPyTorch

0

1000

2000

3000

4000

5000

6000

7000

19.05 19.10

Ima

ges/

Seco

nd

TensorFlow

Speedup across Chroma, GROMACS, LAMMPS, QE, MILC, VASP, SPECFEM3D, NAMD, AMBER, GTC, RTM | 4x V100 v. Dual-Skylake | CUDA 9 for Mar '18 & Nov '18, CUDA 10 for Mar '19

15x

16x

17x

18x

Nov '18 Jun '18 Oct '19

HPC Applications

512 Batch Size | ResNet-50 Training v1.5| 16x V100 | DGX-2 512 Batch Size | ResNet-50 Training v1.5| 16x V100 | DGX-2

Page 7: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

7

ANNOUCING: HPC CONTAINERS FOR ARM

• HPC | Visualization | DL

• Runs in Singularity

• EA Now – ngc.nvidia.com

• GA Q1’20

LAMMPS NAMDMILCGROMACS HOOMD-blue

ParaView VMDNVIDIA IndeX TensorFlow

Julia Prog Language

Page 8: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

8

ANNOUNCING: NGC CONTAINERS RUN IN SINGULARITY

Single command to

1. Pull

2. Convert to Singularity format

3. Run

singularity shell docker://nvcr.io/hpc/namd:2.13-multinode

• HPC & Visualization containers

• DL frameworks

• TensorFlow, PyTorch, MxNet, NVCaffe

• Beta support starting with v19.11

• Supports Singularity v3.x

Page 9: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

9

NGC CONTAINER REPLICATOR

• Maintain a local replica of NGC containers

• Single, shared copy of NGC container images

• Automatically download when new or updated NGC containers are published

• Filter by image and/or date

• Bridge air-gapped environments

• Github | Blog

Local Access to the Latest Images

Ready to run onDocker & Singularity

v1

v1 v1

NGC

Local Repo

Cron job

Time

v1 v1

v1 v1

v2

Local Repo

v1 v1 Cron job

v2

NGC

v1 v1

v2

Local Repo

v1v1 v1

v2

NGC

Page 10: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

10

CONSISTENT DEPLOYMENT ACROSS PLATFORMSEdge | Data Center | Cloud

GPU-POWERED SYSTEM

OPERATING SYSTEM

NVIDIA DRIVER

CONTAINER RUNTIME

K8S/OPENSHIFT (optional)

NGC CONTAINERS

DATA CENTER

GPU-POWERED INSTANCE

KUBERNETES

NGC CONTAINERS

CLOUD

CLO

UD

STA

CK

OPERATING SYSTEM

NVIDIA DRIVER

CONTAINER RUNTIME

NV

IDIA

AM

I

GPU-POWERED SYSTEM

OPERATING SYSTEM

NVIDIA DRIVER

CONTAINER RUNTIME

K8S/OPENSHIFT (optional)

NGC CONTAINERS

EDGE

Analyze field sensor data in real-time

Build large models from Edge data or simulations

Burst to the cloud

Page 11: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

11

NGC GOES MAINSTREAM200+ SUPERCOMPUTING CENTERS & 800+ UNIVERSITIES

“NGC allows us to support our users with the latest AI frameworks and the users enjoy the best performancethey can achieve on NVIDIA GPUs.”

Dr. Hirotaka Ogawa, Team LeaderABCI

Page 12: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

12

WHAT'S NEW WITH HPC CONTAINER MAKER

Page 13: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

13

BUILDING YOUR OWN CONTAINER IMAGESOr What To Do If Your Application Is Not Available On NGC

Application Developers

Distribute your software as a container

to simplify life for your users and

reduce your support overhead

Scientists and Researchers

Realize the benefits of containers

(portability, reproducibility) to simplify

application deployments on HPC systems

IT Staff

Support a workload that is incompatible

with the host software environment or

tame environment module complexity

HPC Container Maker is an open source project addressing the challenges of building container images for HPC applications

Page 14: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

14

HPCCM BY EXAMPLE: GROMACS

gromacs_version = USERARG.get('gromacs', '2019.4')

# Build stageStage0 += baseimage(image='nvidia/cuda:10.0-devel-ubuntu16.04')

Stage0 += python(python3=False)Stage0 += gnu(fortran=False)Stage0 += cmake(eula=True)Stage0 += ofed()Stage0 += openmpi(version='3.1.4')

Stage0 += generic_cmake(cmake_opts=['-D CMAKE_BUILD_TYPE=Release','-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda','-D GMX_BUILD_OWN_FFTW=ON','-D GMX_GPU=ON','-D GMX_MPI=ON','-D GMX_OPENMP=ON','-D GMX_PREFER_STATIC_LIBS=ON','-D MPIEXEC_PREFLAGS=--allow-run-as-root'],

prefix='/usr/local/gromacs',url='http://ftp.gromacs.org/pub/gromacs/gromacs-{}.tar.gz'.format(gromacs_version))

# Distributable stageStage1 += baseimage(image='nvidia/cuda:10.0-runtime-ubuntu16.04')Stage1 += Stage0.runtime()Stage1 += environment(variables={'PATH': '$PATH:/usr/local/gromacs/bin'})

$ hpccm --recipe gromacs.py --format docker > Dockerfile$ sudo docker build -t gromacs:2019.4 -f Dockerfile .$ singularity build gromacs-2019.4.sif docker-daemon://gromacs:2019.4

Page 15: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

15

GROMACS DOCKERFILEFROM nvidia/cuda:10.0-devel-ubuntu16.04

# PythonRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \python && \

rm -rf /var/lib/apt/lists/*

# GNU compilerRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \g++ \gcc && \

rm -rf /var/lib/apt/lists/*

# CMake version 3.14.5RUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \make \wget && \

rm -rf /var/lib/apt/lists/*RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://cmake.org/files/v3.14/cmake-3.14.5-Linux-x86_64.sh && \

mkdir -p /usr/local && \/bin/sh /var/tmp/cmake-3.14.5-Linux-x86_64.sh --prefix=/usr/local --skip-license && \rm -rf /var/tmp/cmake-3.14.5-Linux-x86_64.sh

ENV PATH=/usr/local/bin:$PATH

# OFEDRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \dapl2-utils \ibutils \ibverbs-utils \infiniband-diags \libdapl-dev \libdapl2 \libibcm-dev \libibcm1 \libibmad-dev \libibmad5 \libibverbs-dev \libibverbs1 \libmlx4-1 \libmlx4-dev \libmlx5-1 \libmlx5-dev \librdmacm-dev \librdmacm1 \rdmacm-utils && \

rm -rf /var/lib/apt/lists/*

# OpenMPI version 3.1.4RUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \bzip2 \file \hwloc \libnuma-dev \make \openssh-client \perl \tar \wget && \

rm -rf /var/lib/apt/lists/*RUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp https://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.4.tar.bz2 && \

mkdir -p /var/tmp && tar -x -f /var/tmp/openmpi-3.1.4.tar.bz2 -C /var/tmp -j && \cd /var/tmp/openmpi-3.1.4 && ./configure --prefix=/usr/local/openmpi --disable-getpwuid --enable-orterun-prefix-by-default --with-cuda --with-verbs && \make -j$(nproc) && \make -j$(nproc) install && \rm -rf /var/tmp/openmpi-3.1.4.tar.bz2 /var/tmp/openmpi-3.1.4

ENV LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH \PATH=/usr/local/openmpi/bin:$PATH

# http://ftp.gromacs.org/pub/gromacs/gromacs-2019.4.tar.gzRUN mkdir -p /var/tmp && wget -q -nc --no-check-certificate -P /var/tmp http://ftp.gromacs.org/pub/gromacs/gromacs-2019.4.tar.gz && \

mkdir -p /var/tmp && tar -x -f /var/tmp/gromacs-2019.4.tar.gz -C /var/tmp -z && \mkdir -p /var/tmp/gromacs-2019.4/build && cd /var/tmp/gromacs-2019.4/build && cmake -DCMAKE_INSTALL_PREFIX=/usr/local/gromacs -D CMAKE_BUILD_TYPE=Release

-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -D GMX_BUILD_OWN_FFTW=ON -D GMX_GPU=ON -D GMX_MPI=ON -D GMX_OPENMP=ON -D GMX_PREFER_STATIC_LIBS=ON -D MPIEXEC_PREFLAGS=--allow-run-as-root /var/tmp/gromacs-2019.4 && \

cmake --build /var/tmp/gromacs-2019.4/build --target all -- -j$(nproc) && \cmake --build /var/tmp/gromacs-2019.4/build --target install -- -j$(nproc) && \rm -rf /var/tmp/gromacs-2019.4.tar.gz /var/tmp/gromacs-2019.4

FROM nvidia/cuda:10.0-runtime-ubuntu16.04

# PythonRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \python && \

rm -rf /var/lib/apt/lists/*

# GNU compiler runtimeRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \libgomp1 && \

rm -rf /var/lib/apt/lists/*

# OFEDRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \dapl2-utils \ibutils \ibverbs-utils \infiniband-diags \libdapl-dev \libdapl2 \libibcm-dev \libibcm1 \libibmad-dev \libibmad5 \libibverbs-dev \libibverbs1 \libmlx4-1 \libmlx4-dev \libmlx5-1 \libmlx5-dev \librdmacm-dev \librdmacm1 \rdmacm-utils && \

rm -rf /var/lib/apt/lists/*

# OpenMPIRUN apt-get update -y && \

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \hwloc \openssh-client && \

rm -rf /var/lib/apt/lists/*COPY --from=0 /usr/local/openmpi /usr/local/openmpiENV LD_LIBRARY_PATH=/usr/local/openmpi/lib:$LD_LIBRARY_PATH \

PATH=/usr/local/openmpi/bin:$PATH

# http://ftp.gromacs.org/pub/gromacs/gromacs-2019.4.tar.gzCOPY --from=0 /usr/local/gromacs /usr/local/gromacs

ENV PATH=$PATH:/usr/local/gromacs/bin

Page 16: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

16

EASIER THAN EVER TO GET STARTED

HPCCM is now available from Anaconda

conda install -c conda-forge hpccm

And continues to be available from PyPi

pip install hpccm

Simple to use command line interface

hpccm --recipe recipe.py --format docker || singularity

Can also be used in a Python script

import hpccm

Page 17: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

17

INCLUDED BUILDING BLOCKS

• Compilers

• GNU, LLVM (clang)

• PGI

• Arm, Intel (BYOL)

• HPC libraries

• Charm++, Kokkos

• FFTW, MKL, OpenBLAS

• CGNS, HDF5, NetCDF, PnetCDF

• Miscellaneous

• Boost

• CMake

• Julia, Python

• Generic GNU autotools or CMake package builder

As of version 19.11

• Communication libraries

• Mellanox OFED, OFED (upstream)

• UCX, gdrcopy, KNEM, XPMEM

• MPI• OpenMPI

• MPICH, MVAPICH2, MVAPICH2-GDR

• Intel MPI

• Visualization• Paraview/Catalyst, VisIT/Libsim, SENSEI

• Package management• packages (Linux distro aware), or

• apt_get, yum

• Anaconda, pip

• Scientific Filesystem (SCI-F)

CUDA is included via the base image, see https://hub.docker.com/r/nvidia/cuda/

New since SC18

Page 18: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

18

COMMUNICATION BUILDING BLOCKS

UCX will automatically use the best available communication paths

Supports InfiniBand, GDRCopy, CUDA IPC, and more

Default transport in OpenMPI 4.0

Matching the InfiniBand user space library to the host InfiniBand driver

New multi_ofed building block installs multiple versions of Mellanox OFED and OFED packaged by the Linux distribution in a non-default location

Use a custom container entry point to select the "best" OFED match at container run time and configure the container environment

Page 19: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

19

ONE RECIPE, MULTIPLE TARGETS

Container format

Linux distribution

HPCCM recipe

New! CentOS 8 &Ubuntu 18.04

New! bash &Singularity multi-stage

Page 20: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

20

ONE RECIPE, MULTIPLE TARGETS

Container format

Linux distribution

HPCCM recipe

New! CentOS 8 &Ubuntu 18.04

New! bash &Singularity multi-stage

Processor architecture (x86-64, Power, Arm)

Experimental!

Page 21: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

21

LAMMPS – ONE RECIPE FOR X86 AND ARM (1/3)# Use appropriate container base images based on the CPU architecturearch = USERARG.get('arch', 'x86_64')if arch == 'aarch64':# Early Access images - NGC registration required to usedefault_build_image = 'nvcr.io/ea-cuda-sc19/arm-partners/cuda-aarch64:10.2-devel-ubuntu18.04'default_runtime_image = 'nvcr.io/ea-cuda-sc19/arm-partners/cuda-aarch64:10.2-base-ubuntu18.04'

elif arch == 'x86_64':default_build_image = 'nvidia/cuda:10.1-devel-ubuntu18.04'default_runtime_image = 'nvidia/cuda:10.1-base-ubuntu18.04'

else:raise Exception('unrecognized architecture: {}'.format(arch))

# Build stage (Stage 0)Stage0 += baseimage(image=USERARG.get('build_image', default_build_image), _arch=arch, _as='build')

# Base development environmentStage0 += gnu(version='8')Stage0 += cmake(eula=True)

# Communication stack: OpenMPI + UCX + KNEM + Mellanox OFED + gdrcopy (x86 only)Stage0 += mlnx_ofed(version=USERARG.get('mlnx_ofed', '4.6-1.0.1.1'))

if hpccm.config.g_cpu_arch == hpccm.config.cpu_arch.X86_64:Stage0 += gdrcopy(ldconfig=True, version=USERARG.get('gdrcopy', '1.3'))

Stage0 += knem(ldconfig=True, version=USERARG.get('knem', '1.1.3'))Stage0 += ucx(knem='/usr/local/knem', ldconfig=True, version=USERARG.get('ucx', '1.6.1'))

mpi = openmpi(ldconfig=True, version=USERARG.get('ompi', '4.0.2'), ucx='/usr/local/ucx')Stage0 += mpi

Page 22: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

22

LAMMPS – ONE RECIPE FOR X86 AND ARM (2/3)# LAMMPSgpu_arch = USERARG.get('gpu_arch', 'Volta70')if gpu_arch not in ['Pascal60', 'Volta70', 'Turing75']:raise Exception('unrecognized GPU architecture: {}'.format(gpu_arch))

lammps_version = USERARG.get('lammps_version', 'patch_19Sep2019')compute_capability = 'sm' + gpu_arch[-2:]srcdir = '/var/tmp/lammps-{}'.format(lammps_version)

Stage0 += comment('LAMMPS version {0} for CUDA compute capability {1}'.format(lammps_version, compute_capability))

# LAMMPS dependenciesStage0 += apt_get(ospackages=['bc', 'git', 'libgomp1', 'libhwloc-dev', 'make', 'tar', 'wget'])

# LAMMPS buildStage0 += generic_cmake(build_directory='{0}/build-{1}'.format(srcdir, gpu_arch),cmake_opts=['-D BUILD_SHARED_LIBS=ON',

'-D CUDA_USE_STATIC_CUDA_RUNTIME=OFF','-D KOKKOS_ARCH={}'.format(gpu_arch),'-D CMAKE_BUILD_TYPE=Release','-D MPI_C_COMPILER={}'.format(mpi.toolchain.CC),'-D BUILD_MPI=yes', '-D PKG_MPIIO=on','-D BUILD_OMP=yes', '-D BUILD_LIB=no','-D CMAKE_CXX_COMPILER={}/lib/kokkos/bin/nvcc_wrapper'.format(srcdir),'-D PKG_USER-REAXC=yes', '-D PKG_KSPACE=yes','-D PKG_MOLECULE=yes', '-D PKG_REPLICA=yes','-D PKG_RIGID=yes', '-D PKG_MISC=yes','-D PKG_MANYBODY=yes', '-D PKG_ASPHERE=yes','-D PKG_GPU=no', '-D PKG_KOKKOS=yes','-D KOKKOS_ENABLE_CUDA=yes', '-D KOKKOS_ENABLE_HWLOC=yes'],

directory='{}/cmake'.format(srcdir),# Force CUDA dynamic linking, see https://github.com/openucx/ucx/wiki/NVIDIA-GPU-Supportpreconfigure=['sed -i \'s/^cuda_args=""/cuda_args="--cudart shared"/g\' {}/lib/kokkos/bin/nvcc_wrapper'.format(srcdir)],prefix='/usr/local/lammps-{}'.format(compute_capability),url='https://github.com/lammps/lammps/archive/{}.tar.gz'.format(lammps_version))

Page 23: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

23

LAMMPS – ONE RECIPE FOR X86 AND ARM (3/3)# Distributable stage (Stage 1)Stage1 += baseimage(image=USERARG.get('runtime_image', default_runtime_image))

# Build stage runtime support + LAMMPSStage1 += Stage0.runtime()

# LAMMPS environmentStage1 += environment(variables={'LD_LIBRARY_PATH': '/usr/local/lammps-{}/lib:$LD_LIBRARY_PATH'.format(compute_capability),'PATH': '/usr/local/lammps-{}/bin:$PATH'.format(compute_capability),# Workaround, see https://github.com/openucx/ucx/wiki/NVIDIA-GPU-Support'UCX_MEMTYPE_CACHE': 'n'})

hpccm --recipe lammps.py --userarg arch=x86_64 --gpu_arch=Turing75

hpccm --recipe lammps.py --userarg arch=aarch64 --gpu_arch=Volta70 --lammps_version=patch_30Oct2019

sudo docker build -t lammps:patch_19Sep2019 -f Dockerfile .singularity build lammps.sif docker-daemon://lammps:patch_19Sep2019

hpccm --recipe lammps.py --format singularity --singularity-version 3.2

sudo singularity build lammps.sif Singularity.def

Page 24: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

24

OTHER NEW HPCCM FEATURES

Sample recipe to easily containerize Juptyer notebooks

jupyter.py --notebook nb.ipynb --requirements requirements.txt --format docker

Multi-stage recipes with Singularity version 3.2 and later

Improvements to existing building blocks

OpenACC enabled GNU compilers

Regularly refresh default component versions

Page 25: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical

25

SUMMARY

NGC drives productivity and faster innovations

Simplifies HPC, DL, ML application deployments

Continuous performance improvement with latest software on the same hardware

Support Singularity | Any GPU-powered x86 / Arm system

Use NGC containers whenever possible, but if you need to build your own containers, HPC Container Maker makes it easier

Reduce development effort by using building blocks

Maintain a single recipe that supports multiple targets

Minimize image size by using multi-stage containers

Page 26: SIMPLIFYING AI, HPC, AND VISUALIZATION WORKFLOWS WITH … · Simplifying DL, ML and HPC Workflows Pre-trained Models NLP, Classification, Object Detection & more Industry SDKs Medical