Techniques for High-Performance Distributed Computing in Computational Fluid Mechanics

Lisandro Daniel Dalcín

Abstract


Although a lot of progress has been made in theory as well as practice, the true costs of accessing parallel environments are still largely dominated by software. The number of end-user parallelized applications is still very small, as well as the number of people affected to their development. Engineers and scientists not specialized in programming or numerical computing, and even small and medium size software companies, hardly ever considered developing their own parallelized code. High performance computing is traditionally associated with software development using compiled languages. However, in typical applica- tions programs, only a small part of the code is time-critical enough to require the efficiency of compiled languages. The rest of the code is generally related to memory management, error handling, input/output, and user interaction, and those are usually the most error-prone and time-consuming lines of code to write and debug in the whole development process. Interpreted high-level languages can be really advantageous for these kind of tasks. This thesis reports the attempts to facilitate the access to high-performance parallel computing resources within a Python programming environment. The target audience are all members of the scientific and engineering community using Python on a regular basis as the supporting environment for develop- ing applications and performing numerical simulations. The target computing platforms range from multiple-processor and/or multiple-core desktop comput- ers, clusters of workstations or dedicated computing nodes either with stan- dard or special network interconnects, to high-performance shared memory machines. The net result of this effort are two open source and public domain packages, MPI for Python (known in short as mpi4py) and PETSc for Python (known in short as petsc4py).

MPI for Python [8, 9, 10], is an open-source, public-domain software project that provides bindings of the Message Passing Interface (MPI) standard for the Python programming language. MPI for Python is a general-purpose and full-featured package targeting the development of parallel application codes in Python. Its facilities allow parallel Python programs to easily exploit multiple processors. MPI for Python employs a back-end MPI implementation, thus being immediately available on any parallel environment providing access to any MPI library. PETSc for Python [11] is an open-source, public-domain software project that provides access to the Portable, Extensible Toolkit for Scientific Computation (PETSc) libraries within the Python programming language. PETSc for Python is a general-purpose and full-featured package. Its facilities allow sequential and parallel Python applications to exploit state of the art algorithms and data structures readily available in PETSc. MPI for Python and PETSc for Python packages are fully integrated to PETSc-FEM [12], an MPI and PETSc based parallel, multiphysics, finite el- ements code. Within a parallel Python programming environment, this soft- ware infrastructure supported research activities related to the simulation of electrophoretic processes in microfluidic chips. This work is part of a mul- tidisciplinary effort oriented to design and develop these devices in order to improve current techniques in clinical analysis and early diagnosis of cancer. [Tesis presentada como parte de los requisitos de la Facultad de Ingeniería y Cs. Hídricas de la Universidad Nacional del Litoral para acceder al grado de Doctor en Ingeniería Mención en Mecánica Computacional. Defendida 2008-06-26]

Full Text:

PDF