Object-oriented numerics in C++, Python and modern Fortran: a case study comparison

Date and Time: 
2013 Tuesday, April 2
CG1 Auditoriums
Sylwester Arabas

Authors: Sylwester Arabas, Dorota Jarecka, Anna Jaruga, Maciej Fijałkowski

Employment of object-oriented programming (OOP) techniques may help to improve code readability, and hence its auditability and maintainability - both being crucial for scientific software. OOP offers, in particular, the possibility to reproduce the mathematical "blackboard abstractions" within the program codes. The talk will present three object-oriented implementations of a prototype solver of the advection equation employing one of the NCAR-developed numerical solvers - the Multidimensional Positive-Definite Advection Transport Algorithm (MPDATA). Presented programs are based on Blitz++ (C++), NumPy (Python), and Fortran's built-in array handling facilities. The introduced codes will serve as a basis for discussion on the tradeoffs of the programming language choice for object-oriented scientific programming. The main angles of comparison are code brevity and syntax clarity (and hence maintainability and auditability) as well as performance. Performance tests are performed with free and open-source compilers including GNU g++ and gfortran, LLVM/Clang, CPython and PyPy. The talk will summarise key findings presented in http://arxiv.org/abs/1301.1334

Speaker Description: 

I'm a PhD student at the Faculty of Physics, University of Warsaw, Poland where I study aerosol, cloud, and precipitation microphysics, mostly by means of numerical modelling. I'm a software developer, coding mostly for free/libre/open-source projects in scientific computing and data analysis. Besides the projects developed at work I'm contributing since 2009 to the GNU Data Language project. This year I'm co-organising the "FOSS for Scientists" devroom at the FOSDEM conference.

PDF icon OO_numerics_cpp_python_fortran.pdf14.38 MB
Video recorded: 

Event Category: