AMS Short Course: High Performance Python for Climate Science
Sunday, 6 January 2013 (Formerly Sat.)
Python is rapidly expanding in the atmospheric sciences community as a great programming language for data processing and data analysis. It is, in particular, used in large-scale applications such as LLNL’s UV-CDAT application and library or NCAR’s PyNGL, among many others. Thanks to its simplicity and readability, it is widely used in the climate science community and well beyond by scientists and engineers for prototyping. Compared to IDL and Matlab, Python applications are also much better able to scale up to real-life applications.
But, when it comes to putting together a full-scale application, nai?ve implementations in pure Python will almost always contain parts that are too slow. For other applications, memory conservation can also become an issue. We will introduce methods to identify where the speed or memory bottlenecks are. This will first include methods for memory profiling and time profiling as well as learning about some of the internals of Python and Numpy and their best practices.
We will then learn about techniques to speed up execution and/or conserve memory where necessary. We will demonstrate how to leverage the full power of Numpy, Numexpr, or moving part of a program to Cython, C/C++, or FORTRAN. Finally, we will introduce ways to do parallel processing in Python, leveraging multiple CPUs, clusters or GPUs. As a by-product, these techniques can also be applied to wrap existing libraries in C/C++ or FORTRAN. We will demonstrate that this allows the scientist to leverage legacy code when migrating to Python.
This course is targeted for an advanced audience of Python users and will assume prior knowledge of the basics of Python (looping patterns, function definition, object oriented programming). Basic knowledge of Numpy is also recommended and familiarity with C would be a plus though not strictly necessary. The attendees are also encouraged to bring in concrete problems they are trying to tackle for open discussions. This one-day class will be followed by another advanced one-day class (with separate registration) on more specific climate science distributed data analysis tools. Students with no or little prior knowledge of Python are encouraged to sign-up for the two-day Beginner's Python course and students with no prior knowledge of Numpy may consider signing up for the two-day Intermediate Python course.
All attendees will need to bring a wifi enabled laptop (with power adapter) that has Python with Numpy installed on it. Free 1-click installers for Mac, Linux and Windows can be downloaded from http://www.enthought.com/epd. Students who want to follow all parts of the course will need more packages and tools. Instructions will be emailed to registered attendees before the course begins on how to download the class material and install Python or the needed packages.
Dr Jonathan Rocher, Enthought Inc. will be delivering most of the course, with contributions from Dr Kurt Smith and other members of Enthought to help during hands-on sessions and open discussions.
For more information please contact Jonathan Rocher at email@example.com or at 512-536-1057.