Exportar este item: EndNote BibTex

Use este identificador para citar ou linkar para este item: http://www.bdtd.uerj.br/handle/1/20486
Tipo do documento: Dissertação
Título: Evaluating Shared Memory Parallel Computing Mechanisms of the Julia Language
Título(s) alternativo(s): Avaliando os mecanismos de computação paralela com memória compartilhada da linguagem Julia.
Autor: Barros, Diana Almeida
Primeiro orientador: Bentes, Cristiana Barbosa
Primeiro membro da banca: Sena, Alexandre
Segundo membro da banca: Hoffimann, Júlio
Terceiro membro da banca: Pessoa, Tiago Carneiro
Resumo: Áreas de estudo como ciência de dados, aprendizado de máquina ou computação científica são áreas promissoras que estão recebendo muitos investimentos atualmente. Essas áreas geralmente são muito complexas e exigem um bom uso dos recursos de computação para um melhor desempenho. Nesse contexto, nasceu a linguagem Julia. Uma linguagem dinâmica que oferece um ambiente de alto desempenho com uma sintaxe amigável. Embora seu design seja voltado para a performance, a computação paralela com memória compartilhada ainda possui alguns recursos em desenvolvimento e os estudos nesta área até o momento são escassos. Neste trabalho, apresentamos um estudo do desempenho dos mecanismos de computação paralela de memória compartilhada da linguagem de programação Julia. Foram analisados o desempenho dos mecanismos Multithreading e SIMD. Na análise do Multithreading, comparamos as estratégias de paralelismo de dados e de tarefas disponíveis através das macros built-in @threads e @spawn, focando na forma como distribuem as iterações do loop. Além do mais, foram analisados os mecanismos de escalonamento de loops disponíveis na versão de Julia utilizada neste trabalho, que são o próprio escalonamento estático da macro @threads e os escalonamentos do pacote FLoops.jl, e foi observado o comportamento da performance de tais mecanismos num ambiente escalável. Na análise dos mecanismos SIMD, comparamos a autovetorização do compilador com a construção built-in @simd e dois pacotes para vetorização. Executamos nossos experimentos com kernels sintéticos, aplicações de benchmarks e em um framework de otimização do mundo real. Nossos resultados mostram que a macro @spawn apresentou melhor desempenho em cargas desbalanceadas e os diferentes tipos de escalonamento de loops oferecidos pelo FLoops.jl ajudam a melhorar a performance das aplicações com desbalanceamento de carga. Contudo, aplicações comuns em cenários reais se mostraram mais suscetíveis a overhead e perda de desempenho justamente pela natureza do problema influenciar na forma em que o código é implementado, sendo mais notáveis quando @spawn é utilizado ou quando o ambiente escala em número de threads. Para os mecanismos SIMD, mostramos que o pacote LoopVectorization.jl proporcionou os melhores resultados de desempenho com baixo esforço de programação.
Abstract: Areas of study like data science, machine learning or scientific computing are promising areas that are currently receiving a lot of investment. These areas are usually very complex and demand optimal usage of computing resources for better performance. In this context, Julia language was born. A dynamic language that offers a high performance environment with a user friendly syntax. Although its design is focused on performance, shared memory parallel computing still has some features under development and the studies in this area are so far scarce. In this work, we propose a detailed performance study of the shared memory parallel computing mechanisms of Julia. It was analyzed the performance of the Multithreading and SIMD mechanisms. In the analysis of Multithreading, we compare the data and task parallelism strategies available through the language built-in macros @threads and @spawn, focusing on the way they distribute the loop iterations. Furthermore, the loop scheduling mechanisms available for the Julia version used in this work were analyzed, which are the one static scheduling provided by @threads and the ones provided by the package FLoops.jl, and it was observed their performance behavior when the environment scales. In the analysis of the SIMD mechanisms, the compiler auto-vectorization was compared to the built-in construction @simd and two packages for vectorization. Our experiments were run with synthetic kernels, benchmark applications and a real-world optimization framework. Our results show that the macro @spawn presented a better performance on unbalanced loads and the different loop schedulers offered by FLoops.jl help improving the performance of applications with load imbalance. However, we found that applications that are commonly found in real world scenarios are susceptible to overhead and loss of performance as the nature of the problem influences on code implementation, being more noticeable when @spawn was used or if the environment could scale with threads. For the SIMD mechanisms, we showed that the package LoopVectorization.jl provided the best performance results with low programming effort.
Palavras-chave: Shared Memory
Multithreading
Loop Scheduling
Julia Language
Julia (Linguagem de programação de computador)
Linguagem Julia
Memória Compartilhada
Multithreading
SIMD
Escalonamento de Loops
Área(s) do CNPq: CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
Idioma: eng
País: Brasil
Instituição: Universidade do Estado do Rio de Janeiro
Sigla da instituição: UERJ
Departamento: Centro de Tecnologia e Ciências::Instituto de Matemática e Estatística
Programa: Programa de Pós-Graduação em Ciências Computacionais
Citação: BARROS, Diana Almeida. Evaluating Shared Memory Parallel Computing Mechanisms of the Julia Language. 2023. 93 f. Dissertação( Mestrado em Ciências Computacionais) - Instituto de Matemática e Estatística, Universidade do Estado do Rio de Janeiro, Rio de Janeiro, 2023.
Tipo de acesso: Acesso Aberto
URI: http://www.bdtd.uerj.br/handle/1/20486
Data de defesa: 26-Abr-2023
Aparece nas coleções:Mestrado em Ciências Computacionais

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
Dissertação - Diana Almeida Barros - 2023 - Completa.pdfDissertação completa1,77 MBAdobe PDFBaixar/Abrir Pré-Visualizar


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.