Sherlon Almeida | Universidade Federal do Pampa (original) (raw)

Sherlon Almeida

Uploads

Papers by Sherlon Almeida

Research paper thumbnail of Técnicas de Otimização Computacional em um Algoritmo de Multiplicação de Matrizes

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.

Research paper thumbnail of Análise de Desempenho de Multiplicações de Matrizes Utilizando Diferentes Métodos de Otimização

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.

Research paper thumbnail of Técnicas de Otimização Loop Unrolling e Loop Tiling em Multiplicações de Matrizes Utilizando OpenMP

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.

Research paper thumbnail of Análise de Desempenho de Aplicações Paralelas em Arquiteturas multi-core e many-core

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

Research paper thumbnail of Derrube Todos os Recordes de Ganho de Desempenho Otimizando seu Código

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.

Research paper thumbnail of Técnicas de Otimização Computacional em um Algoritmo de Multiplicação de Matrizes

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.

Research paper thumbnail of Análise de Desempenho de Multiplicações de Matrizes Utilizando Diferentes Métodos de Otimização

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.

Research paper thumbnail of Técnicas de Otimização Loop Unrolling e Loop Tiling em Multiplicações de Matrizes Utilizando OpenMP

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.

Research paper thumbnail of Análise de Desempenho de Aplicações Paralelas em Arquiteturas multi-core e many-core

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.

Research paper thumbnail of Derrube Todos os Recordes de Ganho de Desempenho Otimizando seu Código

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.

Log In