J. Miguel Vargas-Felix homepage | |||||||||||
About FEMT Papers Course notes Other slides Tutorials Master's thesis Animations Contact |
AboutWelcome to my webpage. Currently I'm a PhD candidate, my research interests are: simulation with finite element and isogeometric analysis, solvers for sparse systems of equations, parallel computing, high performance computing, cache-obvious algorithms. FEMTFEMT is an open source library and tools for solving large sparse systems of equations in parallel. This software is specialy set to solve systems of equations resulting from finite element, finite volume and finite differences discretizations. PapersJ. M. Vargas-Felix, S. Botello-Rionda. Structure optimization with a bio-inspired method. High Performance Computer Applications, Vol. 595, pp. 188-200, Springer. 2016.(preprint paper) (slides) J. M. Vargas-Felix, S. Botello-Rionda. FEMT, an open source library and tools for solving large sparse systems of equations in parallel. ISUM 2013 (paper) (slides) J. M. Vargas-Felix, S. Botello-Rionda. Solution of Finite Element Problems Using hybrid Parallelization with MPI and OpenMP. ISUM 2012 (paper) (slides) J. M. Vargas-Felix, S. Botello-Rionda. Comparison of solution strategies for structure deformation using hybrid OpenMP-MPI methods. ISUM 2011 (paper) (slides) J. M. Vargas-Felix, S. Botello-Rionda. Parallel direct solvers for finite element problems. Comunicaciones del CIMAT, 2010 (paper) Parallel numerical linear algebra for sparse systems (Álgebra lineal numérica en paralelo para sistemas de ecuaciones con matrices dispersas)These are the slides for the course that I have been teaching for the last years, it covers the basics for solving large sparse systems of equations using parallel technologies (OpenMP and MPI). Éstas son las presentaciones para el clurso que he dado los últimos años, cubren lo básico para resolver grandes systemas de ecuaciones dispersos utilizando cómputo en paralelo (usando OpenMP y MPI). Optimización de código slides, code Arquitectura de procesadores modermos Programación eficiente aprovechando el cache Organización de la memoria en C/C++ Directivas de compilación para optimización Branch prediction Matrices dispersas/ralas slides, code, ejemplos Tipos de matrices dispersas Costos de almacenamiento y operación Sistemas de ecuaciones con matrices dispersas Estructura de matrices dispersas al modelar ecuaciones diferenciales parciales Compressed Row/Column Storage Almacenamiento de de matrices dispersas en formato MatLab Multiplicación matriz-vector con matrices dispersas Optimización de código 2 slides, code Debug vs. release Consideraciones para HPC Comprobación en modo debug El macro assert El macro NDEBUG Makefiles para debug y release Optimizacion de código 3 slides, code Sobrecarga de operadores Ejemplo de clase Vector Implementación de operadores + * = Costo en tiempo y memoria Gradiente conjugado slides, code Algoritmo de gradiente conjugado Número de condición Precondicionamiento Precondicionador Jacobi Algoritmo de sumación de Kahan Cómputo en paralelo con OpenMP 1 slides, code Paralelización con OpenMP Operaciones matemáticas en paralelo El esquema OpenMP Programación con threads Paralelización con OpenMP Reducciones Paralelización de secciones de código Paralelización de la multiplicación matriz-vector Speed-up Cómputo en paralelo con OpenMP 2 slides, code Variables private y shared Modificación del scheduling Secciones críticas Operaciones atómicas Procesadores multi-core con memoria compartida El cache con multi-core False-sharing Alineamiento de memoria Thread safe Ley de Amdahl NUMA, non-uniform memory access Gradiente conjugado con OpenMP Factorización Cholesky simbólica slides, ejemplos Factorización Cholesky Factorización Cholesky simbólica Matrices ralas como grafos no dirigidos Adyacencia y grado Factorización simbólica vista en grafos Llenado de la factorización Paralelización con OpenMP Sustituciones hacia adelante y hacia atrás Reordenamiento para la factorización Cholesky slides, code Reordenamiento de renglones y columnas Matrices de permutación Matrices ralas como grafos no dirigidos Algoritmo de grado mínimo Algoritmo de bisección anidada Uso de la librería METIS Precondicionamiento con factorizacion incompleta slides Factorización Cholesky incompleta truncada Gradiente conjugado con precondicionador Cholesky incompleto Algoritmo de Munksgaard Gradiente biconjugado slides Gradiente biconjugado sin precondicionar Gradiente biconjugado precondicionado Gradiente biconjugado con precondicionador LU incompleto Factorización LU incompleta Precondicionamiento con inversa aproximada slides, ejemplos Inversa aproximada dispersa Inversa aproximada dispersa factorizada Gradiente conjugado con precondicionador inversa aproximada Cómputo en paralelo con MPI slides, code Clusters Beowulf Paralelización con memoria distribuida Descripción de la librería MPI "Hola mundo" con MPI Comunicación con bloqueo Comunicación sin bloqueo Como correr el programa en un cluster Depuración de programas con MPI Gradiente conjugado con MPI slides, code Algoritmo básico Algoritmo con reordenamiento Particionamiento de matrices con METIS Permutación del sistema de ecuaciones Metodo de subestructuracion de Schur slides, code Particionamiento de la matriz Renumeración de los vértices Complemento de Schur Particionamiento de matrices con METIS Búsqueda de fronteras Implementación con MPI Ejemplos con matrices grandes Extra: Método alternante de Schwarz slides Extra: Colorización de elementos slides Other slidesNumerical methods Heuristics for Nested Dissection to Reduce Fill-in in Sparse Matrix Factorizations Robotics Translation and rotation in the plane Visibility-based probabilistic roadmaps for motion planning A motion planner for nonholonomic mobile robots Optimal Rapidly-exploring Random Trees (RRT*) TutorialsMakefiles, bevísimo tutorial slides GiD, bevísimo tutorial slides, problemtype, sample Master's thesisCálculo de Estructuras Utilizando Elemento Finito con Cómputo en Paralelo text Nuestro trabajo trata sobre la solución numérica de problemas de deformación lineal de sólidos por medio del método de elementos finitos, estos problemas se resuelven utilizando estratégias de cómputo en paralelo. Hablamos sobre algunas formas de paralelizar los algoritmos, tanto utilizando modelos de memoria compartida como de memoria distribuída. En particular nos centraremos en la descomposición de dominios usando el método alternante de Schwarz para resolver problemas de elemento finito con mallas muy refinadas. El método alternante de Schwarz se refiere a particionar el dominio del problema de tal forma que haya traslape en las fronteras comunes de las particiones. Cada partición se resuelve como un problema independiente, después se intercambian valores en las fronteras con las particiones adyacentes. Este proceso se repite de forma iterativa hasta la convergencia global del problema. Hablaremos de la paralelización utilizando dos tipos de algoritmos para resolver los sistemas de ecuaciones resultantes: gradiente conjugado y factorización Cholesky. En cuanto a la factorización Cholesky, explicaremos varias estratégias para hacerla más eficiente, como son: almacenamiento utilizando esquemas de matrices ralas, factorización Cholesky simbólica para determinar la estructura de la matriz antes de calcular sus entradas y el reordenamiento de la matiz de rigidez para obtener una factorización más económica. Se describe en esta tesis la implementación de un programa de cómputo que utiiliza la descomposición de Schwarz para resolver problemas de deformación de sólidos en dos y tres dimensiones. Este programa fue implementado para funcionar en un cluster de computo con el objetivo de resolver problemas de gran escala en forma eficiente. Finalmente mostraremos algunas gráficas de tiempos obtenidas al resolver sistemas de ecuaciones con decenas de millones de variables. Palabras clave: Ecuaciones diferenciales parciales, descomposición de dominios, álgebra lineal, cómputo en paralelo, método de elemento finito, método alternante de Schwarz. Asesor de tesis: Dr. Salvador Botello Rionda (CIMAT) Structural Calculus Using The Finite Element Method with Parallel Computing This work is about the numerical solution of linear deformation of solids using the finite element method, this problems are solved using parallel computing strategies. We will talk of several ways to paralllize the algorithms applying shared and distributed memory schemas. In particular we will work with domain decomposition using the alternating Schwarz method to solve finite element problems with very fine discretized meshes. The Schwarz method refers to partition the problem domain with overlapping among partitions. Each partition is solved as an independent problem, then boundary values are interchanged with neighbour partitions. This process is repeated iteratively until global convergence. We will talk about the parallelization using two kinds of solver algorithms to solve the resulting systems of equations: conjugate gradient and Cholesky factorization. We will explain several strategies to improve the Cholesky factorization, as the usage of storage schemas for sparse matrices, symbolic Cholesky factorization to determine the structure of the factor matrix before entries calculation, and the matrix reordering to get a reduced fill-in. In this theses we describe the implementation of a computer program that uses the Schwarz domain decomposition to solve problemas of solid deformation in two and three dimensions. This program was implemented in a cluster of computers with the goal of solving large systems in an efficient way. Finally we will show some charts with the time used to solve systems of equations with tens of millions equations, and a particular example with one hundred million equations. The project was developed in C++, running in a GNU/Linux cluster. The parallel processing was made using OpenMP and distributed processing was managed by using the MPI (Message Passing Interface) standard. Thesis advisor: Ph.D. Salvador Botello Rionda (CIMAT) AnimationsPre and post-processing was made with GiD, number crunching was made with in-house software using FEMT.
ContactLast modification: November 27th, 2015 |