Deploying (community) codes. Martin Čuma Center for High Performance Computing University of Utah

Similar documents
Using EasyBuild and Continuous Integration for Deploying Scientific Applications on Large Scale Production Systems

Writing Easyconfig Files: The Basics

Site presentation: CSCS

HP Storage and UMCG

Introduction to Containers. Martin Čuma Center for High Performance Computing University of Utah

Overview. What are community packages? Who installs what? How to compile and install? Setup at FSU RCC. Using RPMs vs regular install

The Why and How of HPC-Cloud Hybrids with OpenStack

Install your scientific software stack easily with Spack

MAKING CONTAINERS EASIER WITH HPC CONTAINER MAKER. Scott McMillan September 2018

Sunday, February 19, 12

Stable Cray Support in EasyBuild 2.7. Petar Forai

Running Applications on The Sheffield University HPC Clusters

Introduction to High Performance Computing. Shaohao Chen Research Computing Services (RCS) Boston University

Debugging, benchmarking, tuning i.e. software development tools. Martin Čuma Center for High Performance Computing University of Utah

My operating system is old but I don't care : I'm using NIX! B.Bzeznik BUX meeting, Vilnius 22/03/2016

Combining CVMFS, Nix, Lmod, and EasyBuild at Compute Canada. Bart Oldeman, McGill HPC, Calcul Québec, Compute Canada

Introduction to Parallel Programming. Martin Čuma Center for High Performance Computing University of Utah

Compilers & Optimized Librairies

HPC Middle East. KFUPM HPC Workshop April Mohamed Mekias HPC Solutions Consultant. Agenda

The Arm Technology Ecosystem: Current Products and Future Outlook

Mathematical Libraries and Application Software on JUQUEEN and JURECA

Python ecosystem for scientific computing with ABINIT: challenges and opportunities. M. Giantomassi and the AbiPy group

Arm in HPC. Toshinori Kujiraoka Sales Manager, APAC HPC Tools Arm Arm Limited

Comsics: the parallel computing facility in the school of physics, USM.

EasyBuild on Cray Linux Environment (WIP) Petar Forai

Introduction to Containers. Martin Čuma Center for High Performance Computing University of Utah

XALT: User Environment Tracking

Cerebro Quick Start Guide

Installing the Quantum ESPRESSO distribution

Software stack deployment for Earth System Modelling using Spack

Lmod: A Modern Environment Module System XALT: Understanding HPC Usage via Job Level Collection. June 14, 2017

Mathematical Libraries and Application Software on JUQUEEN and JURECA

Red Hat HPC Solution Overview. Platform Computing

CONTAINERIZING JOBS ON THE ACCRE CLUSTER WITH SINGULARITY

Introduction to Modules at CHPC

Lmod. Robert McLay. Jan. 11, The Texas Advanced Computing Center

Vaango Installation Guide

Introduction to HPC2N

Guillimin HPC Users Meeting February 11, McGill University / Calcul Québec / Compute Canada Montréal, QC Canada

Centre de Calcul de l Institut National de Physique Nucléaire et de Physique des Particules. Singularity overview. Vanessa HAMAR

EasyBuild: Building Software With Ease

Introduction to Linux Part 3: Advanced Scripting and Compiling. Albert Lund CHPC User Services

MIGRATING TO THE SHARED COMPUTING CLUSTER (SCC) SCV Staff Boston University Scientific Computing and Visualization

Building and Installing Software

Introduction to PICO Parallel & Production Enviroment

A Brief Introduction to The Center for Advanced Computing

Modules and Software. Daniel Caunt Harvard FAS Research Computing

Introduction to High Performance Computing Using Sapelo2 at GACRC

Genius Quick Start Guide

Introduction to debugging. Martin Čuma Center for High Performance Computing University of Utah

An introduction to today s Modular Operating System

Introduction to Parallel Programming. Martin Čuma Center for High Performance Computing University of Utah

Faster Code for Free: Linear Algebra Libraries. Advanced Research Compu;ng 22 Feb 2017

Introduction to HPC Programming 4. C and FORTRAN compilers; make, configure, cmake. Valentin Pavlov

RELEASE NOTES FOR X86 CPUS AND TESLA GPUS. Version 2019

Rocks ʻnʼ Rolls# An Introduction to # Programming Clusters # using Rocks# Anoop Rajendra# 2010 UC Regents#

Our new HPC-Cluster An overview

ARM BOF. Jay Kruemcke Sr. Product Manager, HPC, ARM,

Quick Start Guide for Intel FPGA Development Tools on the Microsoft* Azure* Platform

The Spack Package Manager: Bringing Order to HPC Software Chaos

HPCC - Hrothgar. Getting Started User Guide User s Environment. High Performance Computing Center Texas Tech University

PACE. Instructional Cluster Environment (ICE) Orientation. Mehmet (Memo) Belgin, PhD Research Scientist, PACE

EasyBuild + Nix + ComputeCanada. Bart Oldeman, McGill HPC, Calcul Québec, Compute Canada

Maintaining Large Software Stacks in a Cray Ecosystem with Gentoo Portage. Colin MacLean

National Aeronautics and Space and Administration Space Administration. CFE CMake Build System

Meeting of the Technical Steering Committee (TSC) Board

BUILDING AND LEVERAGING A CROSS PLATFORM VFX/ ANIMATION DEVELOPMENT ENVIRONMENT. by Colin Doncaster ( )

Singularity: Containers for High-Performance Computing. Grigory Shamov Nov 21, 2017

TECHNICAL OVERVIEW ACCELERATED COMPUTING AND THE DEMOCRATIZATION OF SUPERCOMPUTING

TECHNICAL OVERVIEW ACCELERATED COMPUTING AND THE DEMOCRATIZATION OF SUPERCOMPUTING

AASPI Software Structure

Using the IBM Opteron 1350 at OSC. October 19-20, 2010

The Cray Programming Environment. An Introduction

Scientific Programming in C XIV. Parallel programming

Supercomputing environment TMA4280 Introduction to Supercomputing

Bright Cluster Manager Advanced HPC cluster management made easy. Martijn de Vries CTO Bright Computing

GPU ACCELERATED COMPUTING. 1 st AlsaCalcul GPU Challenge, 14-Jun-2016, Strasbourg Frédéric Parienté, Tesla Accelerated Computing, NVIDIA Corporation

Big Data Analytics at OSC

TOSS - A RHEL-based Operating System for HPC Clusters

Evaluating Shifter for HPC Applications Don Bahls Cray Inc.

INTRODUCTION TO THE CLUSTER

Chapter 24a More Numerics and Parallelism

Embedded Systems Programming

Deploying IBM Rational License Key Server effectively in your organization

SDK. About the Cisco SDK. Installing the SDK. Procedure. This chapter contains the following sections:

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

IT4Innovations national supercomputing center. Branislav Jansík

Using Spack to Manage Software on Cray Supercomputers

OpenHPC: Project Overview and Updates

Computing with the Moore Cluster

Using a Linux System 6

System Administration for Beginners

PACE. Instructional Cluster Environment (ICE) Orientation. Research Scientist, PACE

FUJITSU PHI Turnkey Solution

A Brief Introduction to The Center for Advanced Computing

UAntwerpen, 24 June 2016

Download, Installation, and Support

Introduction to Parallel Programming. Martin Čuma Center for High Performance Computing University of Utah

What is Research Computing?

Introduction to parallel Computing

Transcription:

Deploying (community) codes Martin Čuma Center for High Performance Computing University of Utah m.cuma@utah.edu

Outline What codes our users need Prerequisites Who installs what? Community codes Commercial codes and licensing Building for multiple architectures Automatic building Application management 8/2/2016 http://www.chpc.utah.edu Slide 2

User program needs Community programs Free (sort of), written by scientists and engineers Varying level of support and stability There may support on commercial basis Commercial programs Sold as a product, have usage restrictions and/or licensing Generally offer support and stability 8/2/2016 http://www.chpc.utah.edu Slide 3

Community programs What programs are they? Numerical libraries (OpenBLAS, FFTW) Simulation programs (NAMD, NWChem, WRF, OpenFoam) Visualization programs (VisIt, Paraview) Commercial programs Numerical libraries (MKL, IMSL) Numerical analysis (Matlab, IDL, Mathematica) Chemistry/material science simulation (Gaussian, Schroedinger) Engineering simulation/cae (Ansys, Abaqus, COMSOL, StarCCM+) 8/4/2016 http://www.chpc.utah.edu Slide 4

Prerequisites Supported OS A necessity for binaries (even on Linux) Less strict for builds from source but helpful Compilers Most sources build with GNU, may get better performance with commercial compilers (Intel, PGI) Software prerequisites (libraries the given code depends on) Additional system packages (e.g. rpms on RedHat/CentOS) Hand built libraries (e.g. MPI, FFTW, ) 8/2/2016 http://www.chpc.utah.edu Slide 5

Single user system Who installs what? Often have root, install themselves (or use --prefix) Multi user system Commonly used programs user support installs Uncommon or experimental programs steer users to install themselves Special case Python or R packages Include common packages to the build (numpy, SciPy, ) Instruct users to install themselves and use PYTHONPATH, RLIBS (in ~/.Renviron), etc. 8/2/2016 http://www.chpc.utah.edu Slide 6

Installation location Local system Some system path (standard /usr/, /opt) or user s home Network file system Applications file system (e.g. NFS) mounted on all servers Need to use --prefix or other during installation No need for root Specific branch for each architecture (x86, power), and potentially OS version (CentOS6, 7) 8/2/2016 http://www.chpc.utah.edu Slide 7

COMMUNITY CODES 8/2/2016 http://www.chpc.utah.edu Slide 8

Deployment options Binaries Many packages supply binaries for the given OS (CentOS), use them, especially if they use graphics Build from source several configuration/build systems GNU autoconf (configure/make) CMAKE Scons Need to include dependencies if any 8/2/2016 http://www.chpc.utah.edu Slide 9

Source build workflow Get the source Ask the researcher, colleagues, or do web search Find out how to build it Untar and look for configure, cmake files, etc Read the documentation Do web search Beware of configuration options (configure help) Decide what compiler and dependencies to use GNU for basic builds, Intel for better optimizations 8/2/2016 http://www.chpc.utah.edu Slide 10

COMMERCIAL CODES 8/2/2016 http://www.chpc.utah.edu Slide 11

Commercial licensing Pay and use w/o license manager (but enforcing license) VASP, Gaussian License manager Flexera FlexNet (formerly FlexLM) used by most Extension to FlexNet (Ansys), other license tool (RLM, own provenience) License server setup Best external server, running one license daemon per lmgrd server Good candidate for VM as long as file system traffic is low External license servers NAT to access cluster private network Troubleshoot connectivity issues / firewall (lmutil lmstat, etc) 8/2/2016 http://www.chpc.utah.edu Slide 12

Commercial installation Modify makefile and build VASP, Gaussian Installers (text or GUI) Mostly straightforward installation Pay attention to where to enter license information Enter license.dat or license server info in the installer Copy license.dat to directory with the program Most FlexNet licenses have environment variable to specify license info, e.g. MLM_LICENSE_FILE=12345@mylicense.u.edu If use 3 redundant servers, license must be specified by env. var. 8/2/2016 http://www.chpc.utah.edu Slide 13

BUILDING FOR MULTIPLE ARCHITECTURES 8/2/2016 http://www.chpc.utah.edu Slide 14

CPU and network considerations Most institutions run several generations of CPU and network May have significant performance implications E.g. CPU vectorization instructions can quadruple FLOPS going from SSE4.2 to AVX2 CPUs (3 tic-toc CPU architecture generations) What to do about it? Build for lowest common denominator Potentially significant performance implications Build separate optimized executable for each architecture Need to keep track of what executable to run where Build single executable using multi-architecture options 8/2/2016 http://www.chpc.utah.edu Slide 15

How can this be done? Some compilers allow to build multiple versions of objects (functions) into a single executable Intel calls this automatic CPU dispatch Compiler flag axcore-avx2,avx,sse4.2 PGI calls this unified binary Compiler flag --tp=nehalem,sandybridge,haswell For multiple network types use MPI that support multiple network channels Most MPIs these days do MPICH, OpenMPI, Intel MPI Network interface selected at runtime, usually via environment var. 8/2/2016 http://www.chpc.utah.edu Slide 16

Multi-arch executable strategies Link with optimized libraries Some vendors (Intel MKL) provide these Build yourself Build your application with the appropriate compiler flags/mpis For details see https://www.chpc.utah.edu/documentation/software/singleexecutable.php 8/2/2016 http://www.chpc.utah.edu Slide 17

AUTOMATIC BUILDING 8/2/2016 http://www.chpc.utah.edu Slide 18

Deployment strategies Occasional builds can be done manually keep old configure files/scripts Repetitive builds can be scripted MPIs, file libraries (NetCDF, HDF), FFTW Use build automation tools Some localized to a HPC center (Maali, Smithy, HeLMOD) Wider community EasyBuild, Spack 8/2/2016 http://www.chpc.utah.edu Slide 19

EasyBuild and Spack EasyBuild seems to be more widely used and flexible Fairly easy to start and deploy if your cluster is standard and you don t care where the builds are stored Customization needs some learning curve, with flexibility comes complexity Implementing over existing stack best done incrementally Good modules support Spack seems to be simpler to use but lacks hierarchical module support (LMOD) 8/2/2016 http://www.chpc.utah.edu Slide 20

EasyBuild Automatic build and installation of (scientific) programs Flexible and configurable (build recipes) Automatic dependency resolution Module file generation, logging, archiving Good documentation, increasing community acceptance Relatively simple to set up and use when using defaults Due to its flexibility, more complicated to customize Probably best deployed as a fresh build-out 8/3/2016 http://www.chpc.utah.edu Slide 21

EasyBuild basic terminology EasyBuild framework Core functionality for EasyBuild Easyblock Python module, plugin into EasyBuild framework implementation of software build and install procedure (generic or specific) Easyconfig (*.eb) specification file for building/installing a given package version Toolchain The EasyBuild framework leverages easyblocks to automatically build and install (scientific) software using a particular compiler toolchain, as specified by one or more easyconfig files. combination of compiler and additional packages that are needed to build programs (compiler-mpi-numerical libraries) 8/3/2016 http://www.chpc.utah.edu Slide 22

EasyBuild basic functionality eb list-easyblocks lists available easyblocks -- ConfigureMake -- CMakeMake -- EB_GROMACS eb list-toolchains lists available toolchains goolf: BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK eb S pkgname search for package easyconfig eb -S GROMACS * $CFGS1/GROMACS-4.6.5-goolf-1.4.10-hybrid.eb eb pkgname -r install package with dependencies (-r) 8/3/2016 http://www.chpc.utah.edu Slide 23

EasyBuild basic functionality eb pkgname -Dr get an overview of a planned install eb GROMACS-4.6.5-goolf-1.4.10-hybrid.eb Dr * [ ] $CFGS/g/GCC/GCC-4.7.2.eb (module: GCC/4.7.2) * [ ] $CFGS/h/hwloc/hwloc-1.6.2-GCC-4.7.2.eb (module: hwloc/1.6.2-gcc-4.7.2) * [ ] $CFGS/o/OpenMPI/OpenMPI-1.6.4-GCC-4.7.2.eb (module: OpenMPI/1.6.4-GCC-4.7.2) * [ ] $CFGS/g/gompi/gompi-1.4.10.eb (module: gompi/1.4.10) * [ ] $CFGS/o/OpenBLAS/OpenBLAS-0.2.6-gompi-1.4.10-LAPACK-3.4.2.eb (module: OpenBLAS/0.2.6- gompi-1.4.10-lapack-3.4.2) * [ ] $CFGS/f/FFTW/FFTW-3.3.3-gompi-1.4.10.eb (module: FFTW/3.3.3-gompi-1.4.10) * [ ] $CFGS/s/ScaLAPACK/ScaLAPACK-2.0.2-gompi-1.4.10-OpenBLAS-0.2.6-LAPACK-3.4.2.eb (module: ScaLAPACK/2.0.2-gompi-1.4.10-OpenBLAS-0.2.6-LAPACK-3.4.2) * [ ] $CFGS/g/goolf/goolf-1.4.10.eb (module: goolf/1.4.10) * [ ] $CFGS/n/ncurses/ncurses-5.9-goolf-1.4.10.eb (module: ncurses/5.9-goolf-1.4.10) * [ ] $CFGS/c/CMake/CMake-2.8.12-goolf-1.4.10.eb (module: CMake/2.8.12-goolf-1.4.10) * [ ] $CFGS/g/GROMACS/GROMACS-4.6.5-goolf-1.4.10-hybrid.eb (module: GROMACS/4.6.5-goolf- 1.4.10-hybrid) 8/3/2016 http://www.chpc.utah.edu Slide 24

APPLICATION MANAGEMENT 8/3/2016 http://www.chpc.utah.edu Slide 25

What is application management Location of the programs Usually mounted file server Every site has different directory structure Presenting programs to the users Shell init scripts Not flexible, need to log out to reset environment Environment modules Other environment management, e.g. Spack 8/3/2016 http://www.chpc.utah.edu Slide 26

Programs locations Things to keep in mind when designing directory structure Hierarchy/dependence of applications (Compiler MPI) Source, build and installation preferably in unique location Some sites choose hierarchical structure Can lead to deep directory structure with a lot of empty/non-existing directories EasyBuild uses mix of hierarchy and name/version Sources stored as name version (letter/name/version) Builds and installs stored hierarchically under toolchain 8/3/2016 http://www.chpc.utah.edu Slide 27

CHPC s apps structure Separate directories for source, build, installation srcdir, builddir, installdir Only pristine source in srcdir allows for reuse when building with different compilers, MPIs, configure options, etc Subdirectories as package/version E.g. srcdir/mpich/3.2 Hierarchy denoted with extensions to directory names E.g. built with PGI compilers, installdir/mpich/3.2p We generally don t worry too much about compiler/mpi version as they tend to be fairly backwards compatible Exceptions treated via module dependencies and specific directory names 8/3/2016 http://www.chpc.utah.edu Slide 28

Environment modules Allow user to load and unload program settings TCL based modules part of CentOS distro LMOD from TACC LMOD advantages 3 level hierarchy of modules (compiler MPI application) Usability enhancements (ml, +/-, save) Site customization options E.g. implementation to limit module loading to certain groups (licensees) Companion XALT package tracks module usage 8/3/2016 http://www.chpc.utah.edu Slide 29

DEMO 8/3/2016 http://www.chpc.utah.edu Slide 30

Source build example MIT Photonic Bands (MPB) Program to study photonic crystals http://ab-initio.mit.edu/wiki/index.php/mit_photonic_bands Has a nice set of dependencies (BLAS, LAPACK, MPI, FFTW) Download the source wget http://ab-initio.mit.edu/mpb/mpb-1.5.tar.gz Decide how to build We want to optimize for highest performance use Intel compilers and libraries (module load intel impi) 8/3/2016 http://www.chpc.utah.edu Slide 31

Source build example Build in /uufs/chpc.utah.edu/sys/builddir/mpb/1.5i Run configure help to see the options Set up configure script vi config.line I prefer to create a script with all the environment variables and configure options Run configure script -./config.line Run make Run make install There is no make test, so run own cd test2;../mpb/mpb-mpi diamond.ctl 8/3/2016 http://www.chpc.utah.edu Slide 32

EasyBuild examples ml use /home/mcuma/temp/easybuild/modules/all ml EasyBuild eb list-easyblocks lists available easyblocks eb list-toolchains lists available toolchains eb S pkgname search for package easyconfig eb pkgname -Dr get an overview of a planned install 8/3/2016 http://www.chpc.utah.edu Slide 33

LMOD demo ml intel mpich2 ml ml intel pgi ml av ml spider ml show 8/3/2016 http://www.chpc.utah.edu Slide 34