Sherlon Almeida | Universidade Federal do Pampa (original) (raw)
Uploads
Papers by Sherlon Almeida
Muitas aplicações usam matrizes como forma de representação de dados. O processamento de operaçõe... more Muitas aplicações usam matrizes como forma de representação de dados. O processamento de operações matriciais de grande ordem exige recursos computacionais eficientes. Nesse contexto, o objetivo deste trabalho foi otimizar um algoritmo de multiplicação de matrizes utilizando técnicas de loop como: interchange, unrolling e tiling. Os resultados mostram um ganho de até 259 vezes na versão super otimizada paralela em uma arquitetura de 16 núcleos.
Resumo. Sistemas computacionais são utilizados em diversas áreas do conhecimento e seu desempenho... more Resumo. Sistemas computacionais são utilizados em diversas áreas do conhecimento e seu desempenho é fundamental para maior precisão nos resultados. Para problemas complexos a aplicação de otimizações tornam-se necessárias. O objetivo deste trabalho é analisar o desempenho de algoritmos de Multiplicação de Matrizes e agilizar este processo através de diferentes métodos. O ganho computacional foi 60 vezes maior após estas otimizações.
Resumo. Métodos numéricos são utilizados em diversasáreas de pesquisa, como em aplicações de simu... more Resumo. Métodos numéricos são utilizados em diversasáreas de pesquisa, como em aplicações de simulações de fenômenos naturais. Dentre as operações frequentemente utilizadas tem-se a multiplicação de matrizes. Este tipo de operação, dependendo do número de elementos, demanda uma quantidade significativa de recursos computacionais, o que aumenta o tempo de processamento. Para prover resultados precisos rapidamenteé necessário reduzir o tempo de execução. O objetivo deste trabalhoé investigar o impacto das técnicas de Loop Unrolling e Loop Tiling no desempenho sequencial e paralelo em multiplicações de matrizes. Para as versões paralelas utilizamos OpenMP. Os experimentos mostram que em uma arquitetura de 6 cores o ganho de desempenho em relação a versão sequencial não otimizadaé de até 20 vezes.
Simulações numéricas auxiliam no avanço da Ciência e exigem cada vez mais recursos computacionais... more Simulações numéricas auxiliam no avanço da Ciência e exigem cada vez mais recursos computacionais. Quanto maior a resolução de um modelo, mais preciso e custoso serão suas previsões. Nesse contexto, analisamos o desempenho de aplicações desenvolvidas para processadores e aceleradores. Nossos experimentos mostram que em aplicações com pouca comunicação, a GPU Tesla C2075 tem desempenho até 8 vezes maior que duas CPUs de 8 cores cada.
Books by Sherlon Almeida
Obter desempenho de uma aplicação exige conhecer profundamente a arquitetura dos computadores e u... more Obter desempenho de uma aplicação exige conhecer profundamente a arquitetura dos computadores e utilizar boas práticas e técnicas de programação, a fim de explorar todos os recursos disponíveis.
A análise de desempenho de uma aplicação pode ser consolidada através de verificações teóricas, testes manuais ou através de uma série de execuções utilizando ferramentas de análise de dados e execução.
Tradicionalmente as funções ou trechos de código que demandam mais tempo de execução são modificadas a fim de melhor aproveitar a arquitetura e/ou utilizar princípios de programação paralela.
Existem várias ferramentas que possibilitam
avaliar o comportamento de programas sequenciais e paralelos, tais como: Gprof, Perf, Valgrind, Intel Vtune e Intel Performance Counter Monitor (PCM).
Nesse contexto, a proposta deste minicurso é apresentar técnicas de otimização e fazer uso de ferramentas de análise de desempenho, para ter medidas precisas do impacto dessas otimizações no desempenho das aplicações sequenciais e paralelas.
O uso de técnicas de desenrolamento de laços, acessos em blocos tiling para maximizar o uso da cache e reordenação de operações são algumas das opções que serão discutidas e apresentadas de forma teórica e prática no minicurso. Além disso, as otimizações serão validadas através de métricas retiradas das ferramentas Perf e PCM.
Muitas aplicações usam matrizes como forma de representação de dados. O processamento de operaçõe... more Muitas aplicações usam matrizes como forma de representação de dados. O processamento de operações matriciais de grande ordem exige recursos computacionais eficientes. Nesse contexto, o objetivo deste trabalho foi otimizar um algoritmo de multiplicação de matrizes utilizando técnicas de loop como: interchange, unrolling e tiling. Os resultados mostram um ganho de até 259 vezes na versão super otimizada paralela em uma arquitetura de 16 núcleos.
Resumo. Sistemas computacionais são utilizados em diversas áreas do conhecimento e seu desempenho... more Resumo. Sistemas computacionais são utilizados em diversas áreas do conhecimento e seu desempenho é fundamental para maior precisão nos resultados. Para problemas complexos a aplicação de otimizações tornam-se necessárias. O objetivo deste trabalho é analisar o desempenho de algoritmos de Multiplicação de Matrizes e agilizar este processo através de diferentes métodos. O ganho computacional foi 60 vezes maior após estas otimizações.
Resumo. Métodos numéricos são utilizados em diversasáreas de pesquisa, como em aplicações de simu... more Resumo. Métodos numéricos são utilizados em diversasáreas de pesquisa, como em aplicações de simulações de fenômenos naturais. Dentre as operações frequentemente utilizadas tem-se a multiplicação de matrizes. Este tipo de operação, dependendo do número de elementos, demanda uma quantidade significativa de recursos computacionais, o que aumenta o tempo de processamento. Para prover resultados precisos rapidamenteé necessário reduzir o tempo de execução. O objetivo deste trabalhoé investigar o impacto das técnicas de Loop Unrolling e Loop Tiling no desempenho sequencial e paralelo em multiplicações de matrizes. Para as versões paralelas utilizamos OpenMP. Os experimentos mostram que em uma arquitetura de 6 cores o ganho de desempenho em relação a versão sequencial não otimizadaé de até 20 vezes.
Simulações numéricas auxiliam no avanço da Ciência e exigem cada vez mais recursos computacionais... more Simulações numéricas auxiliam no avanço da Ciência e exigem cada vez mais recursos computacionais. Quanto maior a resolução de um modelo, mais preciso e custoso serão suas previsões. Nesse contexto, analisamos o desempenho de aplicações desenvolvidas para processadores e aceleradores. Nossos experimentos mostram que em aplicações com pouca comunicação, a GPU Tesla C2075 tem desempenho até 8 vezes maior que duas CPUs de 8 cores cada.
Obter desempenho de uma aplicação exige conhecer profundamente a arquitetura dos computadores e u... more Obter desempenho de uma aplicação exige conhecer profundamente a arquitetura dos computadores e utilizar boas práticas e técnicas de programação, a fim de explorar todos os recursos disponíveis.
A análise de desempenho de uma aplicação pode ser consolidada através de verificações teóricas, testes manuais ou através de uma série de execuções utilizando ferramentas de análise de dados e execução.
Tradicionalmente as funções ou trechos de código que demandam mais tempo de execução são modificadas a fim de melhor aproveitar a arquitetura e/ou utilizar princípios de programação paralela.
Existem várias ferramentas que possibilitam
avaliar o comportamento de programas sequenciais e paralelos, tais como: Gprof, Perf, Valgrind, Intel Vtune e Intel Performance Counter Monitor (PCM).
Nesse contexto, a proposta deste minicurso é apresentar técnicas de otimização e fazer uso de ferramentas de análise de desempenho, para ter medidas precisas do impacto dessas otimizações no desempenho das aplicações sequenciais e paralelas.
O uso de técnicas de desenrolamento de laços, acessos em blocos tiling para maximizar o uso da cache e reordenação de operações são algumas das opções que serão discutidas e apresentadas de forma teórica e prática no minicurso. Além disso, as otimizações serão validadas através de métricas retiradas das ferramentas Perf e PCM.