[en] PETGEM (Parallel Edge-based Tool for Electromagnetic Modeling) is an open source electromagnetic modeler with support for supercomputing architectures. Mostly written in Python, it solves Maxwell's equations in the frequency domain using the high-order vector finite element method. In particular, PETGEM implements the three-dimensional controlled source electromagnetic method (3D CSEM) and the Magnetotelluric method (MT). PETGEM is developed under the BSD-3 license in the Department of Computational Applications in Science and Engineering (CASE) of the Barcelona Supercomputing Center (BSC-CNS). PETGEM has proven to be flexible and capable of achieving acceptable performance rates not only in modest multicore computing architectures but also in massive computing clusters (high-performance computing or HPC). However, the code needs to be reviewed, analyzed and restructured to favor its escalation to other types of problems in the field of electromagnetic modeling, in addition to improving its workflow. The project consists in analyzing and improve the main work-flow of a high-order finite element code for electromagnetic modeling in geophysics. Furthermore, the project will use real-life data sets and explore alternatives to improve the code robustness and extend it without sacrificing flexibility. Among the topics are refactoring in software engineering, Python programming (efficient use of Numpy arrays), Python code optimization, code profiling, and parallel computing with message passing approach (mpi4py). The main insights of this work are: a) a new function to transfer data that avoid write to disk has been implemented, b) a modification of the assembly granularity in order to reduce possibles overheads, c) a well designed and structured code with a documented version, e) a performance and scalability study of both code versions.

[es] PETGEM (Parallel Edge-based Tool for Electromagnetic Modeling) es un modelador electromagnético de código abierto compatible con arquitecturas de supercomputación. Escrito principalmente en Python, resuelve las ecuaciones de Maxwell en el dominio de la frecuencia utilizando el método de elementos finitos vectoriales de orden superior. En particular, PETGEM implementa el método electromagnético de fuente controlada tridimensional (3D CSEM) y el método Magnetotellurics (MT). PETGEM se desarrolla bajo la licencia BSD-3 en el departamento Computational Applications in Science and Engineering (CASE) del Barcelona Supercomputing Center (BSC-CNS). PETGEM ha demostrado ser flexible y capaz de lograr tasas de rendimiento aceptables no solo en arquitecturas informáticas modestas de varios núcleos, sino también en clústeres informáticos masivos (informática de alto rendimiento o HPC). Sin embargo, el código necesita ser revisado, analizado y reestructurado para favorecer su escalada a otro tipo de problemas en el campo del modelado electromagnético, además de mejorar su flujo de trabajo. El proyecto consiste en analizar y mejorar el flujo de trabajo principal de un código de elementos finitos de alto orden para el modelado electromagnético en geofísica. Además, el proyecto utilizará conjuntos de datos de la vida real y explorará alternativas para mejorar la solidez del código y extenderlo sin sacrificar la flexibilidad. Entre los temas se encuentran la refactorización en ingeniería de software, programación Python (uso eficiente de matrices Numpy), optimización de código Python, creación de perfiles de código y computación paralela con enfoque de paso de mensajes (mpi4py). Los principales objetivos de este trabajo son: a) implementar una nueva función para transferir datos que evite la escritura a disco, b) una modificación de la granularidad del ensamblaje para reducir posibles overheads, c) la creación de un código bien diseñado y estructurado con un versión documentada, e) un estudio del rendimiento y la escalabilidad de ambas versiones del código.