Optimització i paral·lelització d’un simulador sísmic en arquitectures multi-nucli
Visualitza/Obre
Estadístiques de LA Referencia / Recolecta
Inclou dades d'ús des de 2022
Cita com:
hdl:2117/100397
Tipus de documentTreball Final de Grau
Data2016-10-24
Condicions d'accésAccés obert
Tots els drets reservats. Aquesta obra està protegida pels drets de propietat intel·lectual i
industrial corresponents. Sense perjudici de les exempcions legals existents, queda prohibida la seva
reproducció, distribució, comunicació pública o transformació sense l'autorització del titular dels drets
Abstract
Aquest projecte, tal com el títol indica, es centra en la optimització i paral·lelització d’un simulador
sísmic en arquitectures multi-nucli. A partir de les formules matemàtiques necessàries,
es presenta el model i es raona el perquè de l’ús de l’estructura de dades SSG (que dona part
del nom al algorisme H-MSSG que executa el simulador). Aquest simulador és implementat a
dues arquitectures hardware diferents: La primera arquitectura CPU basada en x86 de Intel i
una segona basada en una GPU de la mà de NVIDIA. A partir d’un codi seqüencial i utilitzant
optimitzacions software, es realitza una primera versió. Com a principals a destacar, es troba un
canvi d’estructura de dades del simulador així com la millora dels accessos a memòria mitjançant
diferents tècniques. A continuació s’incrementa el rendiment seqüencial del simulador mitjançant
tècniques de reducció del nombre de salts. Aprofitant els recursos i les noves instruccions multimèdia
(SIMD) disponibles al processador, s’elabora una iteració del simulador aprofitant aquesta
tecnologia. Finalment, es paral·lelitza el codi anterior utilitzant la interfície OpenMP.
A partir del codi seqüencial i mitjançant la tecnologia CUDA present els les targetes gràfiques (GPU’s) d’NVIDIA, s’estudia amb detall l’arquitectura per implementar una nova versió del
simulador a aquesta. Ja com a últim pas, s’utilitza la interfície de programació OpenACC per
a generar un executable compatible amb la GPU utilitzant el mateix codi seqüencial. En cada
apartat s’analitza el rendiment utilitzant diferents mètriques (temps i/o SpeedUp) y es comproven
els resultats numèrics obtinguts. Este proyecto, tal como el título indica, se centra en la optimización y paralelización de un
simulador sísmico en arquitecturas multinúcleo. A partir de las formulas matemáticas necesarias,
se presenta el modelo y se razona el porqué del uso de la estructura de datos SSG (que da parte
del nombre al algoritmo H-MSSG que ejecuta el simulador). Este simulador es implementado a
dos arquitecturas hardware diferentes: La primera arquitectura és una CPU basada en x86 de
Intel y la segona una GPU de la mano de NVIDIA. A partir de un código secuencial y utilizando
optimizaciones software se realiza una primera versión. Como principales puntos a destacar, se
encuentra un cambio en la estructura de datos del simulador i la mejora de los accesos a memoria
utilizando diferentes técnicas sofware. A continuación se incrementa el rendimiento secuencial
del simulador mediante técnicas de reducción del numero de saltos. Aprovechando los recursos
y las nuevas instrucciones multimedia (SIMD) disponibles en el procesador, se implementa una
version del simulador aprovechando esta tecnología. Finalmente, se paraleliza el código anterior
utilizando la interfaz de programacion OpenMP.
A partir del código secuencial y mediante la tecnología CUDA presente en las tarjetas gráficas
(GPU’s) de NVIDIA, se estudia con detalle la arquitectura para implementar una nueva version
del codigo utilizando esta tecnologia. Ya como último paso, se utiliza la interfaz de programación
OpenACC, para generar un ejecutable compatible con la GPU utilizando el mismo código
secuencial. En cada apartado se analiza el rendimiento utilitzando diferentes metricas (tiempos
y/o SpeedUp) y se comprueban los resultados numèricos obtenidos. This project, as the title suggests, focuses on the optimization and parallelization of a seismic
simulator using multi-core architectures. Begining with the study of the model all the necessary
mathematic equation are showed, including the reasons of the usage of the SSG data structure
(that gives the name of the H-MSSG algorithm, running the simulator). This simulator is implemented
into two different hardware architectures: A first architecture, base on an Intel’s x86
CPU and a second one, based on NVIDIA’s GPU. From a sequential code, an initial version of
the simulator is made using software optimizations. Two of the main points of improvement are
the changes in the data structures of the simulator as well as improved memory accesses using
different techniques. Then, the simulation time is reduced using jump and branches and loop
reduction techniques. Taking advantage of the CPU multimedia instructions (SIMD), a second
revision of the simulator is made using this technology. Finally, this previous code is paralelized
using OpenMP interface.
From the sequential code, and using the CUDA technology present on NVIDIA’s graphics
cards (GPU’s), both the GPU and CUDA arquitecture are studied in order to create a new
simulator code. As the last step, the OpenACC programming interface is used to generate an
executable that supports the GPU using the same sequential code. At the end of each section,
the performance is analized using several metrics (time and SpeedUp) and the precision of the
results is checked.
TitulacióGRAU EN ENGINYERIA INFORMÀTICA (Pla 2010)
Col·leccions
Fitxers | Descripció | Mida | Format | Visualitza |
---|---|---|---|---|
123006.pdf | 2,654Mb | Visualitza/Obre |