ferramentas de programação paralela para arquiteturas multicore

Post on 29-Jun-2015

1.723 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides apresentados na 10ª Escola Regional de Alto Desempenho

TRANSCRIPT

Ferramentas de Programação Paralela para Arquiteturas Multicore

Acadêmicos: Helton Eduardo RitterMaycon Viana Bordin

Metodologia

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

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

Problema

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

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

Objetivos

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

• Desenvolver algoritmos de testes;

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...

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;

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;

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;

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;

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;

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;

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;

Resultados

Multiplicação de matriz de 1024x1024

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

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

Resultados

Avaliação

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.

Referências

top related