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 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
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
A cosmological constant 2 June 2016 CHIUW 2016
CHIUW 2016 2 June 2016
His biggest blunder? CHIUW 2016 2 June 2016
A big surprise : an accelerating Universe 2 June 2016 CHIUW 2016
CHIUW 2016 2 June 2016
Cosmic cartography CHIUW 2016 2 June 2016
Cosmic cartography 2 June 2016 CHIUW 2016 www.sdss3.org
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
Measuring The Ruler : Galaxies A preferred scale for galaxy separations www.sdss3.org Eisenstein et al, 2006
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
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
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
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
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
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
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!
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!
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
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)
Grid deposition CHIUW 2016 2 June 2016
Velocity updates CHIUW 2016 2 June 2016
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)
NAS Multigrid -- Speedup 2 June 2016 CHIUW 2016 Within x3 of benchmark, both OpenMP and single thread. “Easy” to parallelize….
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
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/
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
A rough edge : callbacks into Chapel 2 June 2016 A specific use case : integrating a function CHIUW 2016
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
Chapel + MPI : Hello, Chapel! 2 June 2016 The MPI module does the initialization; currently requires a call to MPI_Finalize(). CHIUW 2016
Chapel + MPI : Ring communication 2 June 2016 CHIUW 2016
Chapel + MPI : More complicated 2 June 2016 CHIUW 2016
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