Top Banner
Ferramentas de Programação Paralela para Arquiteturas Multicore Acadêmicos: Helton Eduardo Ritter Maycon Viana Bordin
17

Ferramentas de Programação Paralela para Arquiteturas Multicore

Jun 29, 2015

Download

Technology

Helton Ritter

Slides apresentados na 10ª Escola Regional de Alto Desempenho
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ferramentas de Programação Paralela para Arquiteturas Multicore

Ferramentas de Programação Paralela para Arquiteturas Multicore

Acadêmicos: Helton Eduardo RitterMaycon Viana Bordin

Page 2: Ferramentas de Programação Paralela para Arquiteturas Multicore

Metodologia

• Pesquisa bibliográfica e laboratorial;• Acadêmicos do cursos de Sistemas de

Informação;• Primeiro e segundo semestre de 2009;

Page 3: Ferramentas de Programação Paralela para Arquiteturas Multicore

Problema

• A evolução do hardware supera a do software;• Fazer uso otimizado dos recursos

computacionais;• Computação em aplicações críticas;

Page 4: Ferramentas de Programação Paralela para Arquiteturas Multicore

Objetivos

• Estudar o estado da arte;•Conhecer as principais classes de aplicações;•Identificar as principais bibliotecas e linguagens;

• Desenvolver algoritmos de testes;

Page 5: Ferramentas de Programação Paralela para Arquiteturas Multicore

Aplicações

• Áreas que demandam muita capacidade de processamento;

• Medicina e biociências, meteorologia, oceanografia, comércio e finanças e astronomia....

• Sequenciamento genético, modelos econômicos, mapeamento da galáxia...

Page 6: Ferramentas de Programação Paralela para Arquiteturas Multicore

Memória compartilhada

• Faz-se uso de um único endereçamento de memória;

• Os aplicativos acessam variáves compartilhadas em um espaço comum;

Page 7: Ferramentas de Programação Paralela para Arquiteturas Multicore

PThreads

• PThreads é uma Interface Portável para Sistemas Operacionais (POSIX) padrão IEEE 1003.1c;

• Linguagem C/C++;• Plataforma Unix e Windows;• Controle das threads é feito pelo programador;• Evitar deadlocks;• Sincronização e controle das threads;

Page 8: Ferramentas de Programação Paralela para Arquiteturas Multicore

Cilk

• Grupo de Supercomputação do MIT;• Linguagem se baseia na linguagem C ANSI;• Versões para as plataformas GNU/Linux,

MacOS X e Windows;• Cilk é encarregado de escalonar as tarefas;• Compartilhamento e/ou roubo de tarefas;• Paralelismo na medida certa, minimizando a

quantidade de threads e maximizando a eficiência;

Page 9: Ferramentas de Programação Paralela para Arquiteturas Multicore

TBB - Threads Building Blocks

• Biblioteca para C++ desenvolvida pela Intel;• Processadores multicore;• Sistemas Windows, Mac OS e Linux;• Paralelização de programas em alto nível;

Page 10: Ferramentas de Programação Paralela para Arquiteturas Multicore

OpenMP

• Em 2005 versão para Fortran/C/C++;• Paralelizar algoritmos sequencias de modo

facilitado;• Uma thread mestre que irá designar as tarefas

para as outras threads;• Escalabilidade é limitada pela arquitetura de

memória;

Page 11: Ferramentas de Programação Paralela para Arquiteturas Multicore

HPF - High Performance Fortran

• Extensão de Fortran 90;• Cada processo trabalha no segmento de dados

em que é dono no mapa de memória;• Dados distribuídos para não haver

dependências entre eles;• Portabilidade para diferentes arquiteturas;

Page 12: Ferramentas de Programação Paralela para Arquiteturas Multicore

Cuda - nVidia

• Disponível nas linhas GeForce (a partir da Série 8), Quadro e a linha Tesla;

• GPGPU (General-purpose computing on Graphics Processing Units).

• Memória compartilhada de acesso rápido;• Leitura de endereços arbitrários na memória;• Funções recursivas não são suportadas; • Precisão do tipo Double não segue o padrão

IEEE 754;

Page 13: Ferramentas de Programação Paralela para Arquiteturas Multicore

Resultados

Multiplicação de matriz de 1024x1024

Java seq = 18,00543 Java paralelo = 9,096539718

C Seq/fast = 0,636755667C OpenMP/fast = 0,258097

Page 14: Ferramentas de Programação Paralela para Arquiteturas Multicore

Resultados

Page 15: Ferramentas de Programação Paralela para Arquiteturas Multicore

Avaliação

Page 16: Ferramentas de Programação Paralela para Arquiteturas Multicore

Conclusões

• Pragmas de compilador é mais simples, quando o código é facilmente paralelizável;

• Autoparalelização;• CUDA em fase de testes, logo HPF e OpenMP

continuam sendo as principais alternativas;• TBB surgiu com enfoque em multicore;• A escolha da ferramenta vai depender da

aplicação em questão.

Page 17: Ferramentas de Programação Paralela para Arquiteturas Multicore

Referências