Send the link below via email or IMCopy
Present to your audienceStart remote presentation
- Invited audience members will follow you as you navigate and present
- People invited to a presentation do not need a Prezi account
- This link expires 10 minutes after you close the presentation
- A maximum of 30 users can follow your presentation
- Learn more about this feature in our knowledge base article
Do you really want to delete this prezi?
Neither you, nor the coeditors you shared it with will be able to recover it again.
Make your likes visible on Facebook?
You can change this under Settings & Account at any time.
Transcript of Effective Interoperability
Python / Numpy
into an array language
also known as the Python module
npbackend, how does that help?
And how do I use it?
npbackend - Usage and User Interface
Enable Use of multiple "targets"
... <insert your backend here>
Measuring elapsed wall-clock in seconds
Comparing NumPy to npbackend with different targets
Comparing NumPy to NumPy through npbackend to measure overhead
Intel Xeon E5640, 2.66Mhz
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.
npbackend, facilitating target optimizations
Construct GPU kernels
Dead code elimination
or what can be gained from playing well with others...
Productivity vs Performance
High-Level vs Low-Level Languages
The Best of Both Worlds?
High Productivity Computing Systems Project aka
High Productivity High Performance Languages
Parallel Programming Languages
Alive and well, OpenSource with an active team at Cray Inc. including academic collaborations
Designed from scratch with heritage / lessons learned from HPF and ZPL.
Multi-resolution: high-level abstractions implemented within the language itself, abstractions can be pealed off.
C / C++ / Fortran
Abstract unit of target architecture
Reasoning about locality and affinity
Public vs Private determined by scoping
begin on Locale
begin on node.left do
locale.(physicalMemory, id, name, coreCount, etc.)
Code-blocks / Expression
High-level: A = B + alpha * C
Mapped to hardware with Domain Maps using Locales
Default strategies user-overridable
in one slide
The case for Interoperability
or, why bother? My approach is the best!
Languages as toolboxes
Systems programming (C)
Desktop experimentation (R, Matlab, Python)
Parallelization and scalability (Chapel, Futhark, Streaming Nesl, APL)
Interoperate to avoid duplication of efforts
Who wants to implement the entire software stack for interactive interpreters, visualizaton provided by Matlab, R and iPython Notebook and the like?
An aid for adopting new languages
Revamp "old" languages