ferramentas de programação paralela para arquiteturas multicore

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

Upload: helton-ritter

Post on 29-Jun-2015

1.723 views

Category:

Technology


0 download

DESCRIPTION

Slides apresentados na 10ª Escola Regional de Alto Desempenho

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