On the performance of the Python programming language for serial and parallel scientific computations

This article addresses the performance of scientific applications that use the Python programming language. First, we investigate several techniques for improving the computational efficiency of serial Python codes. Then, we discuss the basic programming techniques in Python for parallelizing serial scientific applications. It is shown that an efficient implementation of the array-related operations is essential for achieving good parallel performance, as for the serial case. Once the array-related operations are efficiently implemented, probably using a mixed-language implementation, good serial and parallel performance become achievable. This is confirmed by a set of numerical experiments. Python is also shown to be well suited for writing high-level parallel programs.

[1]  William L. Briggs,et al.  A multigrid tutorial , 1987 .

[2]  William L. Briggs,et al.  A multigrid tutorial, Second Edition , 2000 .

[3]  Keith R. Jackson pyGlobus: a Python interface to the Globus Toolkit™ , 2002, Concurr. Comput. Pract. Exp..

[4]  Fernando Gustavo Tinetti,et al.  Parallel programming: techniques and applications using networked workstations and parallel computers. Barry Wilkinson, C. Michael Allen , 2000 .

[5]  David M. Beazley,et al.  Python Essential Reference , 1999 .

[6]  Deepak Kumar,et al.  Python robotics: an environment for exploring robotics beyond LEGOs , 2003, SIGCSE.

[7]  M F Sanner,et al.  Python: a programming language for software integration and development. , 1999, Journal of molecular graphics & modelling.

[8]  Guido Rossum,et al.  Extending and embedding the python interpreter , 1995 .

[9]  Peter S. Pacheco Parallel programming with MPI , 1996 .

[10]  Guido Rossum,et al.  Internet Programming With Python , 1996 .

[11]  Todd L. Veldhuizen Blitz++: The Library that Thinks it is a Compiler , 2000 .

[12]  Reinhold Plösch Design by Contract for Python , 1997, APSEC.

[13]  Paul F. Dubois,et al.  Steering object-oriented scientific computations , 1997, Proceedings of TOOLS USA 97. International Conference on Technology of Object Oriented Systems and Languages.

[14]  Kenneth McDonald The Quick Python Book , 2000 .

[15]  A. Bruaset A survey of preconditioned iterative methods , 1995 .

[16]  Anthony Skjellum,et al.  Using MPI: portable parallel programming with the message-passing interface, 2nd Edition , 1999, Scientific and engineering computation series.

[17]  Chenna Ramu,et al.  cgimodel: CGI Programming Made Easy with Python , 2000 .

[18]  Message Passing Interface Forum MPI: A message - passing interface standard , 1994 .