chapel in the
play

Chapel in the CHIUW 2016 (Cosmological) Wild Nikhil Padmanabhan - PowerPoint PPT Presentation

2 June 2016 Chapel in the CHIUW 2016 (Cosmological) Wild Nikhil Padmanabhan About 2 June 2016 My day job is as an astrophysicist, specializing in cosmology A Chapel enthusiast Bumped into Chapel early in its (public) existence


  1. 2 June 2016 Chapel in the CHIUW 2016 (Cosmological) Wild Nikhil Padmanabhan

  2. About… 2 June 2016 • My day job is as an astrophysicist, specializing in cosmology • A Chapel enthusiast  Bumped into Chapel early in its (public) existence  Was intrigued, but not compelled.  Revisited around 1.10  Language looked more polished/stable  Met up with Brad Chamberlain, discussed interest  FFTW  One use case to date, a few proof-of-principle applications  1.13+ now has most bits that I need, hoping to use more broadly • Performance is important, but so is ease of prototyping new ideas  Happy to take a ~x2 hit over a well-tuned case  Absolute “wall” -time matters; often the distinction between 1 min vs 1 s vs 1 ms does not matter (I can’t think that fast!) CHIUW 2016  But sometimes it does – so important to be able to find slow steps to optimize • C++/Mathematica/Python are my usual tools

  3. Warnings! 2 June 2016 • I’m not trained in CS, nor am I a “computational scientist”  Code is just a means to an end…  Expect to see non-optimal code • These slides have not been vetted by the Chapel team  Although they’ve helped significantly in lots of the Chapel code I’ve written  Brad Chamberlain, Michael Ferguson, Ben Harshbarger  Mistakes are all mine  Some slow code may not be Chapel’s fault, but mine! • Not my usual patter, so apologies in advance for any glitches… CHIUW 2016

  4. A cosmological constant 2 June 2016 CHIUW 2016

  5. CHIUW 2016 2 June 2016

  6. His biggest blunder? CHIUW 2016 2 June 2016

  7. A big surprise : an accelerating Universe 2 June 2016 CHIUW 2016

  8. CHIUW 2016 2 June 2016

  9. Cosmic cartography CHIUW 2016 2 June 2016

  10. Cosmic cartography 2 June 2016 CHIUW 2016 www.sdss3.org

  11. Constructing a Standard Ruler Begin : hot “soup” of Shell expands at speed electrons, photons of sound 0.578c A sound wave starts. Universe “freezes” 300,000 yrs ABB. “Ripple” frozen in. A standard ruler Statistical in nature

  12. Measuring The Ruler : Galaxies A preferred scale for galaxy separations www.sdss3.org Eisenstein et al, 2006

  13. Constructing a galaxy survey SDSS-I/II imaged 14K sq. deg (1/3 of sky) Image Sky Survey ~ billion objects detected 1.5M Select objects 3D Map Measure Get Spectra redshifts 1000 at a time

  14. Constructing a galaxy survey SDSS-I/II imaged 14K sq. deg (1/3 of sky) Image Sky Survey ~ billion objects detected 1.5 M Select objects 3D Map Measure Get Spectra redshifts 1000 at a time

  15. Constructing a galaxy survey SDSS-I/II imaged 14K sq. deg (1/3 of sky) Image Sky Survey ~ billion objects detected 1.5M Select objects 3D Map Measure Get Spectra redshifts 1000 at a time

  16. Constructing a galaxy survey SDSS-I/II imaged 14K sq. deg (1/3 of sky) Image Sky Survey ~ billion objects detected 1.5M Select objects 3D Map Measure Get Spectra redshifts 1000 at a time

  17. Constructing a galaxy survey SDSS-I/II imaged 14K sq. deg (1/3 of sky) Image Sky Survey ~ billion objects detected 1.5 M Select objects 3D Map Measure Get Spectra redshifts 1000 at a time

  18. Constructing a galaxy survey SDSS-I/II imaged 14K sq. deg (1/3 of sky) Image Sky Survey ~ billion objects detected 1.5 M Select objects 3D Map Measure Get Spectra redshifts 1000 at a time

  19. What kinds of computations 2 June 2016 • Often the question isn’t one of implementation, it’s the question • Simulations of the formation of structure in the galaxy distribution  See Katrin Heitmann’s keynote talk yesterday  Performance matters! • Characterize spatial distributions of galaxies  N-point functions  Find groups/clusters of galaxies  Simplest algorithms here are analogous to N-body calculations • Potential/force calculations  Solving variants of the Poisson equation  FFTs  Multigrid • Simulations  We observe a random realization from all possible Universes. CHIUW 2016  Theory predicts averaged quantities  Need to understand the distributions  Need to repeat calculations many times • Many computations are embarrassingly parallel!

  20. Why Chapel? And not something else? 2 June 2016 • Python?  Python works well when doing well optimized tasks  Great ecosystem – lots of users  Not so good when first statement is not true.  Sometimes forces you to use unnatural idioms for tasks (a for loop is sometimes the simplest answer)  Memory/temporaries • C++/MPI?  C++11/14 is getting quite high-level  Performance  OpenMP/MPI is well-established, good tooling  MPI is rather verbose/tedious, especially for simple tasks  Still no native multidimensional support CHIUW 2016 • Chapel?  Promise of easy abstractions for parallelism  Promise of performance  Domains are GREAT!

  21. A Particle-Mesh Code 2 June 2016 • “Toy” problem  There are more efficient/accurate algorithms  The pieces are quite reusable • Particles  Track the distribution of matter  Evolve under gravity • Mesh  Used to accelerate gravity calculation by solving Poisson’s equation on a grid  Thin wrapper around FFTW CHIUW 2016

  22. Setup 2 June 2016 CHIUW 2016 Config parameters are great – no longer need to parse input files (reproducibility – saving all config parameters?) Domains are very expressive (handle FFTW storage)

  23. Grid deposition CHIUW 2016 2 June 2016

  24. Velocity updates CHIUW 2016 2 June 2016

  25. NAS Multigrid example 2 June 2016 Exercise stencil calculations Uses StencilDist Thanks to Ben Harshbarger, Brad Chamberlain CHIUW 2016 Elegant, but slow (> 10x slower than benchmark)

  26. NAS Multigrid -- Speedup 2 June 2016 CHIUW 2016 Within x3 of benchmark, both OpenMP and single thread. “Easy” to parallelize….

  27. 2 June 2016 Interoperability is important • Any new language must be able to interface with existing code  This is, in part, responsible for the success of Python – wrappers to existing C code • Most such interfaces are too domain specific to be of general interest  These don’t need to be general Chapel packages • An FFI should be lightweight and easy for the end-user. • Chapel has a compelling C story here. • Some examples :  FFTW (Fourier Transforms – my first real introduction to Chapel)  GNU Scientific Library (GSL) CHIUW 2016  MPI

  28. Interfacing to GSL 2 June 2016 • GNU Scientific Library • Collection of common numeric algorithms (special functions, interpolation, random numbers and distributions, integration, etc) • Large package, many headers • Chapel’s “extern block” supports these natively (thanks to Michael Ferguson, who fixed a few issues remaining in 1.13) CHIUW 2016 http://www.gnu.org/software/gsl/

  29. Interfacing to GSL 2 June 2016 The C-API is exposed (no better • or worse than calls in C) Some calls can be a little verbose • Not hard for the user to wrap as • needed, to improve interfacing CHIUW 2016

  30. A rough edge : callbacks into Chapel 2 June 2016 A specific use case : integrating a function CHIUW 2016

  31. Chapel + MPI 2 June 2016 • A large number of scientific/numerical packages are built off MPI  Chapel needs to interop with these • Performance  Currently (and anecdotally), single locale programs run slower in multi-locale mode, even if minimal/no communication  Big hit for otherwise trivially parallelizable jobs  Use MPI to fix this • Parallel programming idioms are often taught with MPI  Use Chapel for convenience/productivity MPI for performance  • MPI 1.1 (mostly) support upcoming  Currently on master  Wrapper mostly auto-generated by a simple Python script + Python-C parser CHIUW 2016 (pycparser : https://github.com/eliben/pycparser)  Currently designed for Chapel in single-locale mode  Hopefully, can be extended to Chapel in multi-locale mode  GASNet already allows for MPI interop

  32. Chapel + MPI : Hello, Chapel! 2 June 2016 The MPI module does the initialization; currently requires a call to MPI_Finalize(). CHIUW 2016

  33. Chapel + MPI : Ring communication 2 June 2016 CHIUW 2016

  34. Chapel + MPI : More complicated 2 June 2016 CHIUW 2016

  35. Interactive Chapel? 2 June 2016 • The challenge is often not implementation, but what to implement… • Trial and error • Interactivity is a good thing  Python/Mathematica/MatLab etc do this very well  Jupyter notebooks are becoming very popular • Chapel needs an interactivity story  Cling : CERN’s implementation of a C++ REPL, based of Clang/LLVM  Doesn’t have to be pure Chapel  Eg. a maintained Python interface (this is the mode in which I use Python – interfacing into C, thanks to tools like Cython)  A Python interface could also ease people into Chapel  Easy access to Python package ecosystem CHIUW 2016

Recommend


More recommend