Técnicas numéricas sobre procesador gráfico, para la solución de sistemas de ecuaciones lineales en análisis estructural - Castellares Paucar, William (2019)
El presente trabajo de investigación se centra principalmente en el uso del procesador gráfico (GPU) para paralelizar instrucciones en la solución de sistemas de ecuaciones lineales obtenidos de problemas de análisis estructural, es decir, dicho esto, nos limitamos a la solución de sistemas que tienen como matriz de coeficientes (matriz de rigidez): una matriz dispersa, cuadrada, simétrica y definida positiva. Los métodos considerados son: la factorización de Cholesky, la factorización LDLT, el método de los gradientes conjugados y el método de Gauss Jordan. Se han usado los formatos de almacenamiento CSC (Compressed Sparse Column) y SKS (Skyline Storage) para comprimir la matriz, adaptándolos para almacenar matrices simétricas (en donde solo la parte triangular inferior es almacenada), ya que la matriz, en su forma normal, almacena una gran cantidad de ceros, que en general, son innecesarios, con esto se busca mejorar tanto el rendimiento como el uso de memoria. Se ha usado el OpenFEM, un conjunto de herramientas de elementos finitos, para analizar un problema determinado y obtener así el sistema de ecuaciones, es decir, la matriz de rigidez, luego, se ha comprimido la matriz usando uno de los formatos de almacenamiento, para luego resolver el sistema usando el kernel correspondiente. Los kernels (funciones que se ejecutan sobre la GPU) se han escrito usando la interfaz de OpenCL en C++, pero ejecutados por comodidad en Julia, mediante el uso de bibliotecas compartidas. Para poder trabajar con la memoria directamente en la GPU se usó la biblioteca de ArrayFire en C++, y el paquete ArrayFire.jl en Julia. Se ha medido la memoria utilizada y el tiempo de ejecución para diferentes órdenes de la matriz, y finalmente, se han preparado tablas para comparar resultados. Palabras clave: Técnicas numéricas, procesador gráfico, GPU, Sistemas de ecuaciones lineales, análisis estructural.