Ferramentas de Programação Paralela
     para Arquiteturas Multicore




            Acadêmicos: Helton Eduardo Ritter
                        Maycon 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,636755667
C 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

Ferramentas de Programação Paralela para Arquiteturas Multicore

  • 1.
    Ferramentas de ProgramaçãoParalela para Arquiteturas Multicore Acadêmicos: Helton Eduardo Ritter Maycon Viana Bordin
  • 2.
    Metodologia • Pesquisa bibliográficae laboratorial; • Acadêmicos do cursos de Sistemas de Informação; • Primeiro e segundo semestre de 2009;
  • 3.
    Problema • A evoluçãodo hardware supera a do software; • Fazer uso otimizado dos recursos computacionais; • Computação em aplicações críticas;
  • 4.
    Objetivos • Estudar oestado da arte; • Conhecer as principais classes de aplicações; • Identificar as principais bibliotecas e linguagens; • Desenvolver algoritmos de testes;
  • 5.
    Aplicações • Áreas quedemandam 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-seuso 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 deSupercomputaçã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 - ThreadsBuilding 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 2005versã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 - HighPerformance 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 matrizde 1024x1024 Java seq = 18,00543 Java paralelo = 9,096539718 C Seq/fast = 0,636755667 C OpenMP/fast = 0,258097
  • 14.
  • 15.
  • 16.
    Conclusões • Pragmas decompilador é 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.
  • 17.