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

Similar documents
Site presentation: CSCS

Shifter: Fast and consistent HPC workflows using containers

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

Shifter at CSCS Docker Containers for HPC

Writing Easyconfig Files: The Basics

Simplifying the contribution process for both contributors & maintainers

The Why and How of HPC-Cloud Hybrids with OpenStack

CLAW FORTRAN Compiler source-to-source translation for performance portability

Continuous integration & continuous delivery. COSC345 Software Engineering

Status of the COSMO GPU version

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

PLAN-E Workshop Switzerland. Welcome! September 8, 2016

NVIDIA Update and Directions on GPU Acceleration for Earth System Models

Install your scientific software stack easily with Spack

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

ReFrame: A Regression Testing Framework Enabling Continuous Integration of Large HPC Systems

User Training Cray XC40 IITM, Pune

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

USING GIT FOR AUTOMATION AND COLLABORATION JUSTIN ELLIOTT - MATT HANSEN PENN STATE UNIVERSITY

CONTAINERIZING JOBS ON THE ACCRE CLUSTER WITH SINGULARITY

Getting started with GitHub

EasyBuild on Cray Linux Environment (WIP) Petar Forai

Comparative Benchmarking of the First Generation of HPC-Optimised Arm Processors on Isambard

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

Piz Daint: Application driven co-design of a supercomputer based on Cray s adaptive system design

CSCS Site Update. HPC Advisory Council Workshop Colin McMurtrie, Associate Director and Head of HPC Operations.

A Container On a Virtual Machine On an HPC? Presentation to HPC Advisory Council. Perth, July 31-Aug 01, 2017

Online Remote Repositories

Stable Cray Support in EasyBuild 2.7. Petar Forai

HPC Architectures. Types of resource currently in use

Managing Network Configurations with Git and GitLab

Cray XC Scalability and the Aries Network Tony Ford

Opportunities for container environments on Cray XC30 with GPU devices

Orchestrating the Continuous Delivery Process

Organising benchmarking LLVM-based compiler: Arm experience

A PCIe Congestion-Aware Performance Model for Densely Populated Accelerator Servers

Git Basi, workflow e concetti avanzati (pt2)

PART-I (B) (TECHNICAL SPECIFICATIONS & COMPLIANCE SHEET) Supply and installation of High Performance Computing System

JetBrains TeamCity Comparison

TangeloHub Documentation

BUILDING A GPU-FOCUSED CI SOLUTION

LSST software stack and deployment on other architectures. William O Mullane for Andy Connolly with material from Owen Boberg

What is git? Distributed Version Control System (VCS); Created by Linus Torvalds, to help with Linux development;

Singularity in CMS. Over a million containers served

EasyBuild: Building Software With Ease

AMM Feb/2018. Frederic Marec Embedded Engineer

Fosdem Feb/2018. Frederic Marec Embedded Engineer

Illinois Proposal Considerations Greg Bauer

HPCF Cray Phase 2. User Test period. Cristian Simarro User Support. ECMWF April 18, 2016

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

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

NERSC Site Update. National Energy Research Scientific Computing Center Lawrence Berkeley National Laboratory. Richard Gerber

GIT TO DA REPO! VERSION CONTROL, GITLAB, AND ISU

CSCS Proposal writing webinar Technical review. 12th April 2015 CSCS

Python based Data Science on Cray Platforms Rob Vesse, Alex Heye, Mike Ringenburg - Cray Inc C O M P U T E S T O R E A N A L Y Z E

TM DevOps Use Case TechMinfy All Rights Reserved

PRACE Project Access Technical Guidelines - 19 th Call for Proposals

CALMIP : HIGH PERFORMANCE COMPUTING

Linear Algebra libraries in Debian. DebConf 10 New York 05/08/2010 Sylvestre

Lab 01 How to Survive & Introduction to Git. Web Programming DataLab, CS, NTHU

GROMACS Performance Benchmark and Profiling. August 2011

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

PlaFRIM. Technical presentation of the platform

Con. Continuous Integration

An Introduction to the SPEC High Performance Group and their Benchmark Suites

Opportunities & Challenges for Piz Daint s Cray XC50 with ~5000 P100 GPUs. Thomas C. Schulthess

Remote GPU virtualization: pros and cons of a recent technology. Federico Silla Technical University of Valencia Spain

MARCC: On Data Subject to Restrictions

Seven Habits of Highly Effective Jenkins Users

Belle II - Git migration

Visualizing Git Workflows. A visual guide to 539 workflows

Software Project (Lecture 4): Git & Github

The challenges of new, efficient computer architectures, and how they can be met with a scalable software development strategy.! Thomas C.

Software stack deployment for Earth System Modelling using Spack

AEM Code Promotion and Content Synchronization Best Practices

Continuous Integration and Deployment (CI/CD)

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

Gateways to Discovery: Cyberinfrastructure for the Long Tail of Science

Is remote GPU virtualization useful? Federico Silla Technical University of Valencia Spain

High Performance Computing. What is it used for and why?

Presented By: Gregory M. Kurtzer HPC Systems Architect Lawrence Berkeley National Laboratory CONTAINERS IN HPC WITH SINGULARITY

Scaling to Petaflop. Ola Torudbakken Distinguished Engineer. Sun Microsystems, Inc

Jenkins CI for MacDevOps. Tim Sutton Concordia University, Faculty of Fine Arts Montreal

Singularity CRI User Documentation

RobinHood Project Status

Genius Quick Start Guide

Our Workshop Environment

FUJITSU PHI Turnkey Solution

HOKUSAI System. Figure 0-1 System diagram

(Reaccredited with A Grade by the NAAC) RE-TENDER NOTICE. Advt. No. PU/R/RUSA Fund/Equipment Purchase-1/ Date:

TECHNICAL GUIDELINES FOR APPLICANTS TO PRACE 16 th CALL (T ier-0)

Basic Specification of Oakforest-PACS

The Effect of In-Network Computing-Capable Interconnects on the Scalability of CAE Simulations

The Hopper System: How the Largest* XE6 in the World Went From Requirements to Reality! Katie Antypas, Tina Butler, and Jonathan Carter

Deploying remote GPU virtualization with rcuda. Federico Silla Technical University of Valencia Spain

Deutscher Wetterdienst

Scientific Software Development with Eclipse

Transcription:

Using EasyBuild and Continuous Integration for Deploying Scientific Applications on Large HPC Advisory Council Swiss Conference Guilherme Peretti-Pezzi, CSCS April 11, 2017

Table of Contents 1. Introduction: Basic concepts & tools Automating builds for HPC (EasyBuild, Spack, Nix, Guix) Continuous Integration (CI) & Testing (Jenkins, Travis, Bamboo, CDash) Collaborative development tools (Github, Gitlab, Bitbucket) 2. EasyBuild in a nutshell Feature highlights Production systems at CSCS running EasyBuild 3. Combining EasyBuild + CI + Github for testing and deploying builds Overview of Piz Daint production setup 2

Issues when managing scientific software stacks (at scale) HPC software have particularly complex dependency list Building is very time consuming Long compile times Often require human intervention at some point OS upgrades require re-building everything from scratch And therefore they are often postponed Scattered and non-uniform build recipes Little collaboration among HPC centers & colleagues Reproducibility issues Default module versions may change (ABI compatibility) OS dependencies versions may change (example: zlib) 3

Issues when managing scientific software stacks (at scale) HPC software have particularly complex dependency list Solution: Use a framework with dependency resolution Building is very time consuming Solution: Use a framework that allows automation Scattered and non-uniform build recipes Solution: Use a central repository for archiving build recipes (git) Little collaboration among HPC centers & colleagues Solution: Adopt a collaborative on-line platform (Github) Reproducibility issues Existing module versions (and defaults) may change Solution: Always pin version numbers OS dependencies may change (example: zlib) Solutions Use Continuous Integration Minimize usage of OS deps (include them in the build recipe) 4

Basic concepts & tools (1/3) Automating builds for HPC: approaches Building software from scratch Pros Binaries are optimized for the CPU architecture (instruction set) Possible tuning to specific interconnect Cons Long build times Potential issues due to differences in the base OS dependencies Examples EasyBuild, Spack Using (generic) pre-compiled binaries & containers Pros Portability: better isolation of OS dependencies (containers) Cons Not always optimized for CPU & interconnect Examples Nix, Guix, Shifter, Singularity 5

Basic concepts & tools (2/3) Continuous Integration & Testing (applied to software deployment) Continuous Integration (CI) Early detection of problems on complex systems Achievable by performing regular builds Can be extended to continuous delivery Additional tests upon the provided software Continuous Testing Useful for providing fast and continuous feedback on the contributions Is typically based on unit testing Popular tools Travis, Jenkins, CDash, Bamboo, gitlab-ci 6

Basic concepts & tools (3/3) Collaborative development tools (Github, Gitlab, Bitbucket) Distributed version control (git server) Issues bug tracking feature requests task management Wikis Pull/Merge requests Code review and comments Integration with CI tools These tools can be useful also for managing build recipes 7

Table of Contents 1. Introduction: Basic concepts & tools Automating builds for HPC (EasyBuild, Spack, Nix, Guix) Continuous Integration (CI) & Testing (Jenkins, Travis, Bamboo, CDash) Collaborative development tools (Github, Gitlab, Bitbucket) 2. EasyBuild in a nutshell Feature highlights Production systems at CSCS running EasyBuild 3. Combining EasyBuild + CI + Github for testing and deploying builds Overview of Piz Daint production setup 8

EasyBuild: building software with ease http://hpcugent.github.io/easybuild/ framework for installing (scientific) software on HPC systems implemented as Python packages and modules started at University of Gent, Belgium, in 2009, open-source (GPLv2) since 2012 now: thriving community; actively contributing, driving development new release every 6-8 weeks (latest: EasyBuild v3.1.2, Apr 4 th 2017) supports over 1.100 different software packages including CP2K, GAMESS-US, GROMACS, NAMD, NWChem, OpenFOAM, PETSc, QuantumESPRESSO, WRF, WPS,... well documented: http://easybuild.readthedocs.io 9

EasyBuild: feature highlights Fully autonomously building and installing (not only scientific) software automatic dependency resolution. full integration with Environment Modules (Tcl or Lua syntax) thorough logging of executed build/install procedure archiving of build specifications ( easyconfig files ) highly configurable, via config files/environment/command line dynamically extendable with additional easyblocks, toolchains, etc. reproducibility of the installation as one of the major design goals comprehensively tested: lots of unit tests, regression testing, actively developed, collaboration between various HPC sites (worldwide community) extensive transparency through verbose dry-runs and preview of all steps involved in the installation. 10

EasyBuild terminology EasyBuild Framework core of EasyBuild: Python modules & packages provides supporting functionality for building and installing software easyblock a Python module, plugin for the EasyBuild framework implements a (generic) software build/install procedure easyconfig file (*.eb) build specification: software name/version, compiler toolchain, etc. compiler toolchain compilers with accompanying libraries (MPI, BLAS/LAPACK, ) 11

EasyBuild vs Spack EasyBuild + Focus on Linux HPC systems Smooth integration with environment modules + Reproducibility Version pinned recipes Avoids using system compilers + Stability Regular releases (with package testing) 52 releases since 2012 Popular toolchains are validated worldwide Production ready CSCS only required minor contributions to framework: Main limitations How do I use a compiler and MPI combination that is not available on EasyBuild? Duplication: Number of easyconfig files grows too fast! Spack + Multiplatform: Also supports MacOS Modules support was recently added + Flexibility Generic version-less recipes Good support for using system compilers + Bleeding edge 11 releases v0.10.0: With the next release, we will begin to run package tests in addition to unit tests. Can be used as package manager Main limitations Requires Python knowledge How do I know if the recipe is actually tested/ optimized for my setup? Example: recipes on Cray that do not use libsci 12

One-Slide guide for creating EasyBuild recipes (1) Choose a toolchain eb --list-toolchains Most popular: foss (GCC/OpenMPI) & intel (2) Choose an easyblock Full list: http://easybuild.readthedocs.io/en/latest/version-specific/generic_easyblocks.html Most popular @ CSCS: ConfigureMake, CMakeMake & CmdCp (3) Get inspired by recipes with similar build steps (Copy&Paste J ) Search by keyword: https://github.com/hpcugent/easybuild-easyconfigs Search by app name: eb --search software-name (4) Add dependencies Create recipes for the missing ones 13

Easyconfig file example: freetype name = 'freetype' version = '2.6.2' homepage = 'http://freetype.org' description = """FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output (glyph images). It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well."" toolchain = {'name': 'CrayGNU', 'version': '2015.11'} source_urls = [GNU_SAVANNAH_SOURCE] sources = [SOURCE_TAR_GZ] dependencies = [('libpng', '1.6.21')] sanity_check_paths = { 'files': ['bin/freetype-config', 'lib/libfreetype.a', 'lib/libfreetype.%s' % SHLIB_EXT, 'lib/pkgconfig/freetype2.pc'], 'dirs': ['include/freetype2'], } moduleclass = 'vis' 14

Easyconfig file example: freetype name = 'freetype' version = '2.6.2' homepage = 'http://freetype.org' description = """FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output (glyph images). It can be used in graphics libraries, display servers, font conversion tools, text image generation tools, and many other products as well."" toolchain = {'name': 'CrayGNU', 'version': '2015.11'} source_urls = [GNU_SAVANNAH_SOURCE] sources = [SOURCE_TAR_GZ] dependencies = [('libpng', '1.6.21')] sanity_check_paths = { 'files': ['bin/freetype-config', 'lib/libfreetype.a', 'lib/libfreetype.%s' % SHLIB_EXT, 'lib/pkgconfig/freetype2.pc'], 'dirs': ['include/freetype2'], } moduleclass = 'vis' 15

Piz Kesch & Escha use case (MeteoSwiss / Cray CS-Storm) Kesch and Es-cha consist of identical systems (production and failover), each comprising: Cray CS-Storm: 12 nodes 2 x Intel Haswell E5-2690v3 2.6 GHz 12-core CPUs per node total of 24 E5-2690v3 processors 256 GB 2133 MHz DDR4 memory per node total of 3 TB 8 NVIDIA Tesla K80 GPU devices per node total of 192 GPUs MeteoSwiss, the Swiss national weather forecasting service, hosts their dedicated production systems at Cray CS-Storm at CSCS, Lugano. 16

Piz Daint Model Cray XC50/XC40 XC50 Compute Nodes Intel Xeon E5-2690 v3 (Haswell) @ 2.60GHz (12 cores, 64GB RAM) and NVIDIA Tesla P100 16GB XC40 Compute Nodes Intel Xeon E5-2695 v4 (Broadwell) @ 2.10GHz (18 cores, 64/128 GB RAM) Login Nodes Interconnect Configuration Intel Xeon CPU E5-2650 v3 @ 2.30GHz (10 cores, 256 GB RAM) Aries routing and communications ASIC, and Dragonfly network topology Scratch capacity 6.2 PB (Lustre / Sonexion 3000) 17

Piz Daint #8 Top 500 #1 in Europe 9,779.0 PFLOPS #2 Green 500 7453.5 MFLOPS/W 18

Table of Contents 1. Introduction: Basic concepts & tools Automating builds for HPC (EasyBuild, Spack, Nix, Guix) Continuous Integration (CI) & Testing (Jenkins, Travis, Bamboo, CDash) Collaborative development tools (Github, Gitlab, Bitbucket) 2. EasyBuild in a nutshell Feature highlights Production systems at CSCS running EasyBuild 3. Combining EasyBuild + CI + Github for testing and deploying builds Overview of Piz Daint production setup 19

Automated deployment of scientific software Production repository: All CSCS EasyBuild recipes List of supported recipes on Daint Monitor changes Deploy new recipes 20

Workflow for installing production software on Piz Daint Create git branch with new EasyBuild recipe Open a Pull request N Propose fix Start feedback process Propose fix Y Passes? Jenkins tests the recipe on Piz Daint Recipe gets reviewed Change requested? Y Recipe is merged to repository N Jenkins deploys the software on production 21

Pull Request example: CP2K (1/2) 22

Pull Request example: CP2K (1/2) Approved by reviewer 23 Tested by Jenkins passed

Pull Request example: CP2K (2/2) 24

Jenkins + Github Integration: Jenkins server setup Setup remote slaves By default jenkins will run jobs on the same host as the apache server If you wish to perform builds on a remote host, you need to add slave nodes Manage Jenkins > Manage nodes > new node Install Pull request builder plugin Manage Jenkins > Manage Plugins > Available Github integration setup Create a repository for archiving your easybuild recipes Create a jenkins user on github add to your repository with write permissions (you don t want to use your private Github account) Jenkins > Manage Jenkins > Githup Pull Request Builder Add/test credentials jenkins + eb + github 25

Jenkins + Github Integration: Jenkins project setup Create a new multi-configuration project Section Source code management Add your github repository to Repository URL Branch Specifier (blank for 'any ): ${ghprbactualcommit} Section Build Triggers Enable GH PR builder and set admin lists (github users white list) Section Configuration Matrix Select node(s) under Slaves > Node/label Section Build Add build step > Execute shell 1. Select eb files to build, for example comparing with master for new/modified.ebs eb_list=$(git diff origin/master..head --name-only --oneline --no-merges --diff-filter=acmrtuxb) 2. Setup EB and build for ebfile in $eb_list ;do eb $ebfile -r --force done jenkins + eb + github 26

Thank you for your attention.