Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
Domains
PyMIC
Parallel Programming Languages
Shared Memory
Distributed Memory
Convenient notation
mpi4py
pyOpenCL
First-class index-set
Handles:
pyCuda
cython
Pythran
Hardware APIs
Java "ish"
Language extensions
Parallel language constructs
threading
multiprocessing
pyChapel
DEAD
C/C++ "ish"
"Modern" feel
Copperhead
Numba
Parakeet
Locale Abstraction
PGAS
Express:
begin on Locale[0]
....
begin on node.left do
search(node.left)
Probing:
locale.(physicalMemory, id, name, coreCount, etc.)
ctypes
swig
Fwrap
pyChapel
function specialization
jit compilation
@decorators
Global-view abstractions
FFIs / wrappers
Bohrium
NumPy / SciPy
Pythran
Figure from Code Complete by Steve McConnell
The reference implementation of Python, cPython, makes all of the above possible
Arguments are cast or converted to equivalent types
Extern decorators
Loss of high-level abstractions, less like Python more like "Convenient" low-level programming
Module Compiler
FFI
chapel-for-python-programmers.rtfd.org
Python/NumPy + pyChapel
Python/NumPy
Python/NumPy + pyChapel
Python/NumPy
Rosen-filter, kernel-function from NumPy/SciPy software stack.
Python/NumPy + pyChapel
Python/NumPy
Chapel
Setup simulation from dataset
Run simulation
Reduce data and analyze results
Finance
Science
Rosen
Observations when running the above
pychapel.rtfd.org
Acknowledgements
Thanks to the Chapel Team!
Goals
Enable Use of multiple "targets"
... <insert your backend here>
Retarget without modifying the application
Controlled via enrivonment variables
FFI - Type support
Module compiler
npbackend target
Parallelism and Locality
that turns
Python / Numpy
into an array language
Lazy / Deferred Evaluation
...
My supervisor and colleagues
Python / NumPy / SciPy for program definition, data description, and interaction
Obtain performance through data-parallelism of array operations
And when the abstractions and mappings fail...
... an alternative with a unified model for parallel computations
... syntax and semantics close to Python
Heat Equation
Results
Shallow Water
Intel Xeon E5640, 2.66Mhz
12MB, LLC
96GB DDR3, Main memory
NVIDIA Geforce GTX 460, 1GB DDR5
With: GCC 4.8.2, OpenCL 1.2, Linux 3.13, Python 2.7, and NumPy 1.8.1.
Average of three runs, deviation from
the mean used as verification.
HIPERFIT: This research has been partially supported by the Danish Strategic Research Council, Program Committee for Strategic Growth Technologies, for the research center 'HIPERFIT: Functional High Performance Computing for Financial Information Technology' (hiperfit.dk) under contract number 10-092299.
This research has been partially supported by the Danish Strategic Research Council, Program Committee for Strategic Growth Technologies, for the 'High Performance High Productivity' project under contract number 09-067060.
Especially: Brad Chamberlain, Lydia Duncan, Thomas Van Doren, Elliot Ronaghan, and Ben Harshbarger.
Results
Separating NumPy API From Implementation, Kristensen, Mads R. B. and Lund, Simon A. F. and Blum, Troels and Skovhede, Kenneth. In proceedings of 4th Workshop Python for High Performance and Scientific Computing (PyHPC14@SC14) .
pychapel.rtfd.org
chapel-for-python-programmers.rtfd.org
R
C / C++ / Fortran
MATLAB
Python
OpenMP/pthreads
MPI
pragmas
CUDA
OpenCL/CUDA/OpenACC
Modeling
Visualization
Data Analysis
Experimentation
For efficiency
Lowlevel interfaces
Specialization
Data-parallelism
chapel.cray.org
Static Compilation
Libraries
JIT / Dynamic Compilers