3. Problema
• A evolução do hardware supera a do software;
• Fazer uso otimizado dos recursos
computacionais;
• Computação em aplicações críticas;
4. Objetivos
• Estudar o estado da arte;
• Conhecer as principais classes de aplicações;
• Identificar as principais bibliotecas e
linguagens;
• Desenvolver algoritmos de testes;
5. 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...
6. 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;
7. 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;
8. 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;
9. 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;
10. 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;
11. 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;
12. 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;
13. Resultados
Multiplicação de matriz de 1024x1024
Java seq = 18,00543
Java paralelo = 9,096539718
C Seq/fast = 0,636755667
C OpenMP/fast = 0,258097
16. 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.