The study of complex systems in 3D or a large-scale demands substantial computational resources, that until recently was only possible with large and expensive computers (clusters). This situation has changed with the creation of graphics processing cards (GPUs) that can be integrated into a desktop computer or even into a laptop. Cards with the CUDA (Computer Unified Device Architecture) protocol allow parallel programming, which implies a great time-saving of the computation for studying the different properties and characteristics of the complex systems in several situations on a large scale. This is possible because parallel programming uses multiple processing elements simultaneously to solve a problem. That is to say, it is achieved by dividing the problem into independent parts so that each processing element can execute its part of the algorithm simultaneously with the others. The main objective of this work is to study and explore the massive computation capability of NVidia GPUs, using the model of parallel programming with CUDA FORTRAN. We have applied this numerical tool in the implementation of basic linear algebra operations, such as: addition, multiplication and inversion of matrices for solving systems of linear equations. Among the different ways of parallel programming that we studied, the most optimal way to reduce the computation time considerably, it is through internal libraries CUBLAS (CUDA Basic Linear Algebra Subroutines) and CULA (CUDA Linear Algebra) that are optimized. This demonstrates that the CUDA parallel computing platform is a substantial numerical tool that allows to model complex systems in different research areas.
El estudio de sistemas complejos en 3D o a gran escala demanda grandes recursos computacionales, que hasta hace poco tiempo sólo era posible realizar con grandes y costosas computadoras (clústers). Esta situación ha ido cambiando con la creación de las tarjetas de procesamiento gráfico (GPUs) que se pueden integrar en una computadora de escritorio e incluso en una portátil. Las tarjetas con el protocolo CUDA (Computer Unified Device Architecture) permiten la programación en paralelo, lo cual implica un gran ahorro de tiempo de cómputo para estudiar las diferentes propiedades y características de los sistemas complejos en diversas situaciones a gran escala. Esto es posible porque la programación en paralelo usa simultáneamente múltiples elementos de procesamiento para resolver un problema. Es decir, se consigue dividiendo el problema en partes independientes para que cada elemento de procesamiento pueda ejecutar su parte del algoritmo simultáneamente con los otros. El objetivo principal de este trabajo, es estudiar y explorar la enorme capacidad de cálculo de las GPUs de NVidia, mediante el modelo de programación en paralelo con CUDA FORTRAN. Hemos aplicado esta herramienta numérica en la implementación de operaciones básicas de álgebra lineal, como son: la suma, la multiplicación y la inversión de matrices para la solución de sistemas de ecuaciones lineales. Dentro de las diferentes formas de programación en paralelo que estudiamos, la forma más óptima para reducir el tiempo de cómputo considerablemente, es por medio de las librerías internas de CUBLAS (CUDA Basic Linear Algebra Subroutines) y CULA (CUDA Linear Algebra) que están optimizadas. Esto muestra que la arquitectura de cálculo paralelo CUDA es una gran herramienta numérica que permite modelar sistemas complejos en diferentes líneas de investigación.