230 likes | 237 Views
Learn how to port your code to run on our Power AI Cluster, with 11 nodes, dual IBM Power9 CPUs, and 4 NVIDIA V100s, and access to various software tools and libraries. Join us on Monday, 8th July 2019 with Simon Branford.
E N D
EmPOWERingSoftware Porting Code to Run on our Power AI Cluster Monday 8th July 2019 Simon Branford
POWER9 AI Cluster • Eleven nodes • Four NVIDIA V100s (16GB) • Dual IBM POWER9 CPUs • 18 cores each • Running with SMT4 • 1TB system memory • NVIDIA NVLink
Availability at UoB • Is a part of BlueBEAR • Batch HPC • Part central funded • Available to any researcher • Part CaStLeS funded • Available to life science researchers • Researchers from across the University
Software on BlueBEAR • Software installs are by request • Installed using EasyBuild • Not just AI software • GPU accelerated software
Software • PyTorch: 1.1.0, 1.0.1 • TensorFlow: 1.13.1 • Theano: 1.0.4 • GROMACS: 2018.4 (with PLUMED), 2018.3 • Amber: 18 • Keras: 2.2.4
Some Software ... • ... just installs and works • TensorFlow • Keras • GROMACS • Test CPU/GPU work balance
Mesa / LAMMPS / Qt • Get rid of the intel only options… • Mesa: swr • LAMMPS: intel optimisations • Qt: QtWebEngine • Related to using Easybuild • most working on Intel
PyTorch • Older versions needed tweaks to get installed • Newer versions seem fine
Amber / arpack-ng / Pillow • “ARPACK is a collection of Fortran77 subroutines designed to solve large scale eigenvalue problems” • “Amber is software for performing molecular dynamics and structure prediction.” • “Pillow is the 'friendly PIL fork' by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lundh and Contributors.”
Amber / arpack-ng / Pillow • Needed to be told: • That this is a POWER9 • Options to use on POWER9 • Compile flags • Directories • Expect that these will 'just work' in the future
NumPy and SciPy • Test failing • Caused by bug in OpenBLAS • Use OpenBLAS 0.3.6 for POWER9 support • (Don’t use unpatched OpenBLAS 0.3.1 ever!)
Chiron • “Using a deep learning CNN+RNN+CTC structure to establish end-to-end basecalling for the nanopore sequencer.” • Uses TensorFlow • But has a dependency on mappy • “Minimap2 is a versatile sequence alignment program that aligns DNA or mRNA sequences against a large reference database.”
minimap2 • “Minimap2 is optimized for x86-64 CPUs.” • “Minimap2 also works with ARM CPUs supporting the NEON instruction sets.” • “Minimap2 requires SSE2 instructions on x86 CPUs or NEON on ARM CPUs. It is possible to add non-SIMD support, but it would make minimap2 slower by several times.”
POWER Vector Library • https://www.ibm.com/developerworks/community/groups/community/powerveclib • Vector instructions ... accessed via ... intrinsic functions • For porting applications from other platforms • Supports POWER7, POWER8 and POWER9 • Provides the header files • Tools to detect functions that need converting
veclib • https://github.com/IvantheDugtrio/veclib • Vector library for porting SSE2 instructions to other architectures • Though it only does POWER • Allows direct use of SSE2 with minimal work
Combined • Compile veclib into a library • Replace <emmintrin.h> with <vec128intlib.h> • Add -maltivec • Removed hard coded options • And minimap2 works on POWER9
IBM Guide • Porting x86 vector intrinsics code to Linux on Power in a hurry • https://developer.ibm.com/linuxonpower/2018/01/24/porting-x86-vector-intrinsics-code-linux-power-hurry/ • What I just described is approach 3
Other Options • Approach 4: “SIMD Everywhere” • Approach 2: Power Vector Library • Approach 1: intrinsics compatibility implementation in GCC • Rewrite the code!
POWER Vector Library • Not to be confused with the POWER Vector Library previously mentioned! • https://github.com/open-power-sdk/pveclib • "Header files that contain useful functions leveraging the PowerISA Vector Facilities: Vector Multimedia Extension (VMX AKA Altivec) and Vector Scalar Extention (VSX)."
Other Interesting Links • The IBM Software Development Kit for Linux on Power (SDK) • https://developer.ibm.com/linuxonpower/sdk/ • Find open source packages built for IBM Power • https://developer.ibm.com/linuxonpower/open-source-pkgs/ • Porting x86 Linux applications to IBM POWER • https://developer.ibm.com/linuxonpower/porting-guide/ • The Migration Advisor • https://github.com/open-power-sdk/migration-advisor
Future • Whatever our users ask for?!
Thanks! ?