Python: The Next Supercomputing Language

08/01/2012 - 6:00pm
FL-1001, Small Seminar Room
Cameron Sparr

Abstract:

Python is a high-level interpreted programming language that is easy to read and easy to write. The primary drawback of Python is that it is much slower than compiled languages such as Fortran and C. In the past, people have attempted to speed up Python by not using Python, i.e., using Python as a wrapper for Fortran or C. The PyPy project aims to create a faster Python interpreter using a Just In Time compiler (JIT), which compiles Python code to machine code at runtime. Thus far it has shown to be substantially faster than CPython for CPU-intensive code, and even faster than C in some particular cases. This is possible since the JIT can do some valid run-time optimizations based on runtime conditions (either regarding the hardware or the dataset) which would not be always valid in general, and thus could not be performed at compile time. One reason that old languages such as Fortran have survived so long is that the scientific community requires code that is computationally intense, one classic example of this is a fluid dynamics model. A problem with these models is that they are almost always difficult to read and edit by anyone other than the person who originally wrote it, making it hard for others to build on previous work. If Python was used, the code would be much more readable, and development time would decrease as well. Taking advantage of the ease of use of NumPy, we aim to see if a full fluid dynamics model (Baby EULAG) can be translated from Fortran to Python, and perform nearly as well, or better.