Dissertação

{en_GB=Harnessing the power of modern multi-core and GPU systems with tasks with data dependencies} {} EVALUATED

{pt=Conforme os sistemas de alto desempenho evoluem em direção a exascale, o desenvolvimento de software torna-se cada vez mais complexo devido à multiplicação no número de cores disponíveis em um único sistema. Vários modelos de programação foram propostos recentemente com o objetivo de facilitar o desenvolvimento de software e melhorar a sua eficiência. O objetivo principal desta tese é avaliar as limitações e vantagens de um desses novos modelos de programação (OmpSs-2) quando aplicados em um programa real e complexo. O nosso ponto de partida é um simulador de plasma 2D sequencial que compartilha o mesmo algoritmo e funcionalidades básicas com o OSIRIS. Na primeira parte dessa tese, nós utilizámos uma decomposição espacial em conjunto com o OmpSs-2 para paralelizar o ZPIC. Após aplicar um balanceamento de cargas dinâmico, o nosso programa alcançou uma escalabilidade quase perfeita em um nó do MareNostrum4, além de demonstrar desempenho consistente em todos os testes. Na segunda parte desta tese, nós focamos em GPUs utilizando uma combinação de OmpSs-2 e OpenACC. Para usar eficientemente a arquitectura do acelerador, nós introduzimos grandes mudanças no código do ZPIC, incluindo a ordenação das partículas em tiles, o uso de shared memory como cache e a restruturação nos dados das partículas para acessar a memória de forma coaslesced. Com uma NVIDIA V100, o nosso program obteve até 20x o desempenho de dois IBM Power9, além de demostrar excelente escalabilidade para 2 GPUs e potencial para escalar até 4 GPUs., en=As high-performance systems evolve towards exascale and beyond, software development becomes increasingly more complex due to the rapid growth in the number of cores available in a single system. Many alternative programming models were proposed recently aiming to ease software development while increasing application efficiency. The main objective of this thesis is to evaluate the limitations and advantages of one of these new programming models (OmpSs-2) when applied to a real complex application. Our starting point is a sequential, 2D plasma simulator (ZPIC) that has the same core algorithm and functionalities as OSIRIS. In the first part of this thesis, we follow a spatial decomposition to parallelize ZPIC and target multicore CPUs. After applying a dynamic load balancing, our implementation not only achieves near-perfect scaling in one node of MareNostrum4 but also shows very consistent performance across all simulations. In the second part of this thesis, we target GPUs using a combination of OmpSs-2 and OpenACC. To efficiently use the device architecture, we introduce major changes to the ZPIC’s algorithm, including sorting the particles by tiles, using shared memory as cache and restructuring the particles’ data for coalesced memory accesses. The final implementation running on a single NVIDIA V100 GPU achieves up to 20x the performance of two IBM Power9 besides demonstrating excellent scaling for 2 GPUs as well as potential to scale up to 4 accelerators.}
{pt=GPU, manycore CPUs, OmpSs-2, OpenACC, particle-in-cell (PIC), simulação de plasma, en=GPU, manycore CPUs, OmpSs-2, OpenACC, plasma simulation, particle-in-cell (PIC)}

janeiro 21, 2021, 16:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

João Pedro Faria Mendonça Barreto

Departamento de Engenharia Informática (DEI)

Professor Auxiliar

ORIENTADOR

José Carlos Alves Pereira Monteiro

Departamento de Engenharia Informática (DEI)

Professor Catedrático