1 / 23

Empowering Software Porting for Power AI Cluster

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.

caitlina
Download Presentation

Empowering Software Porting for Power AI Cluster

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EmPOWERingSoftware Porting Code to Run on our Power AI Cluster Monday 8th July 2019 Simon Branford

  2. POWER9 AI Cluster

  3. POWER9 AI Cluster • Eleven nodes • Four NVIDIA V100s (16GB) • Dual IBM POWER9 CPUs • 18 cores each • Running with SMT4 • 1TB system memory • NVIDIA NVLink

  4. 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

  5. Software on BlueBEAR • Software installs are by request • Installed using EasyBuild • Not just AI software • GPU accelerated software

  6. 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

  7. Some Software ... • ... just installs and works • TensorFlow • Keras • GROMACS • Test CPU/GPU work balance

  8. 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

  9. PyTorch • Older versions needed tweaks to get installed • Newer versions seem fine

  10. 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.”

  11. 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

  12. 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!)

  13. 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.”

  14. 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.”

  15. 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

  16. 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

  17. Combined • Compile veclib into a library • Replace <emmintrin.h> with <vec128intlib.h> • Add -maltivec • Removed hard coded options • And minimap2 works on POWER9

  18. 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

  19. Other Options • Approach 4: “SIMD Everywhere” • Approach 2: Power Vector Library • Approach 1: intrinsics compatibility implementation in GCC • Rewrite the code!

  20. 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)."

  21. 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

  22. Future • Whatever our users ask for?!

  23. Thanks! ?

More Related