[ca] Aquest projecte presenta la optimització y l'estudi de l'algoritme sismològic H-MSSG proposat per Otilio Rojas. Aquest algoritme es basa en l'ús dels operadors mimètics que tracten d'adaptar als mètodes de càlculs finits les propietats dels operadors continus. L'optimització treballa sobre els aspectes paralelitzables del codi mitjançant l'ús de un hardware específic anomenat GPGPU enfocat al càlcul de processat gràfic pels ordinadors personals. Aquest element es composa de múltiples nuclis estructurats en una arquitectura enfocada al paral·lelisme. Tot i que aquests elements van ser creats originalment per a calcular y renderitzar objectes gràfics y textures una nova tendència tecnològica ha portat a la creació d'una interfície de programació creada per NVIDA anomenada CUDA que facilita l'ús fora del camp gràfic de les eines del hardware de la GPU. En una primera part del treball s'analitza l'algoritme i el camp de la sismologia per tal de conèixer-ne profundament el caràcter paral·lel. Un cop analitzat el treball aprofundeix en l'ús del caràcter paralelitzable que s'identifica dintre dels bucles d'actualització de matrius de l'algoritme per tal d'adaptar-lo a la programació en CUDA amb l'objectiu final de reduir-ne el temps d'execució. En una segona part del treball es comparen els resultats d'optimització obtinguts en CUDA amb les optimitzacions a l'abast en les eines hardware de treball habitual i en concret les CPU comercials. Aquestes optimitzacions es basen en l'ús de instruccions de tipus SIMD. Finalment s'han comparat els resultats amb la eina de programació OpenACC que presenta unes directives de compilació mitjançant les quals es possible paralelizar el codi de forma automàtica. Un cop obtinguts les resultats amb aquestes eines es realitza una comparació entre tots els mètodes d'optimització.

[en] This project presents the study and optimization of the algorithm seismological H-MSSG proposed by Otilio Rojas. This algorithm is based on the use of mimetic operators who try to adapt the methods of calculations finite properties of continuous operators. The optimization work on the parallelization of the code using a specific hardware called GPGPU focused on graphic processing for personal computers. This item consists of multiple cores in a parallelism-focused structured architecture. Although these elements were originally created to calculate and render graphical objects and textures a new technological trend has led to the creation of a programming interface created by NVIDIA called CUDA which facilitates its use outside the field of graphic tools GPU hardware. In the first part of the project the algorithm and the field of seismology are analysed in order to know their parallel character. An analysis of the work explores the use of character parallelizable identified within the loop update matrix algorithm to adapt it to the CUDA programming with the ultimate goal of reducing the runtime. The second part of the project compares the results obtained by CUDA optimization with optimization tools available in regular hardware. These optimizations are based on the use of SIMD type instructions. Finally the results were compared with OpenACC programming tool that presents a compilation directives by which it is possible to parallelize code automatically in the GPU hardware. Once the results obtained with these tools is a comparison between the methods of optimization.