SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
Programa¸˜o Multicore:
             ca
Como sobreviver a esta revolu¸˜o?
                             ca

          Paulo Ricardo Paz Vital

          IBM Linux Technology Center




    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Sobre o palestrante...


      Engenheiro de Computa¸˜o, UCDB, 2003
                             ca
      Engenheiro de Software, IBM Linux Technology Center:
          IBM Installation Toolkit for Linux on POWER
          Yaboot
          IBM Server Consolidation Toolkit
          Multicore Development Tools - Cell IDE
      Pesquisador do Instituto de Computa¸˜o da Unicamp:
                                         ca
          Mem´rias Transacionais
              o
          Programa¸˜o Multicore
                  ca
      Usu´rio, administrador e desenvolvedor de sistemas Unix-like
         a
      desde 1999



                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Agenda



   1   Introdu¸˜o
              ca
           A emergˆncia do Software Multicore
                   e
           O que ´ Paralelismo?
                 e
   2   Plataformas de concorrˆncia
                             e
           MPI
           Pthreads
           OpenMP
   3   20 quest˜es a fazer quando ir para multicore
               o




                      Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
       e
              O que ´ Paralelismo?
                    e




                              Parte I

                         Introdu¸˜o
                                ca




           Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                  e
                         O que ´ Paralelismo?
                               e




1   A emergˆncia do Software Multicore
            e
      A Lei de Moore



2   O que ´ Paralelismo?
          e
      A Lei de Amdahl
      Um modelo para execu¸˜o multithreaded
                          ca




                      Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                  e
                                                A Lei de Moore
                         O que ´ Paralelismo?
                               e


A Lei de Moore



    Gordon Moore - cofundador
    da Intel Corporation
    Eletronics Magazine, 19 de
    Abril de 1965

  Lei de Moore
  O n´mero de transistores numa mesma ´rea de semicondutor
      u                               a
  dobra a cada 18 (24) meses.




                      Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                e
                                              A Lei de Moore
                       O que ´ Paralelismo?
                             e


A Lei de Moore




                    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                  e
                                                A Lei de Moore
                         O que ´ Paralelismo?
                               e


A Lei de Moore



  Problemas?




                      Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                   e
                                                 A Lei de Moore
                          O que ´ Paralelismo?
                                e


A Lei de Moore



  Problemas?
      Miniaturiza¸˜o chegando ao limite.
                 ca
      Dissipa¸˜o de calor.
             ca




                       Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                     e
                                                   A Lei de Moore
                            O que ´ Paralelismo?
                                  e


A Lei de Moore



  Problemas?
      Miniaturiza¸˜o chegando ao limite.
                 ca
      Dissipa¸˜o de calor.
             ca

  Solu¸˜es?
      co




                         Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                   e
                                                 A Lei de Moore
                          O que ´ Paralelismo?
                                e


A Lei de Moore



  Problemas?
      Miniaturiza¸˜o chegando ao limite.
                 ca
      Dissipa¸˜o de calor.
             ca

  Solu¸˜es?
      co
      Novas tecnologias de grava¸˜o de chips.
                                ca
      Mais de um n´cleo, ou seja, multicore.
                  u




                       Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                  e                             A Lei de Amdahl
                         O que ´ Paralelismo?
                               e                Um modelo para execu¸˜o multithreaded
                                                                    ca


A Lei de Amdahl

  ”Speedup”
  Quanto se ganhou com a execu¸˜o de uma tarefa em um
                              ca
  computador paralelo?
                                          Temposerial    Ts
                      seepdup =                        =                                      (1)
                                         Tempoparalelo   Tp




                      Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                  e                             A Lei de Amdahl
                         O que ´ Paralelismo?
                               e                Um modelo para execu¸˜o multithreaded
                                                                    ca


A Lei de Amdahl

  ”Speedup”
  Quanto se ganhou com a execu¸˜o de uma tarefa em um
                              ca
  computador paralelo?
                                          Temposerial    Ts
                      seepdup =                        =                                      (1)
                                         Tempoparalelo   Tp

  Exemplo
  Uma determinada tarefa, quando executada em um computador
  convencional consome 200 segundos e quando executada em uma
  m´quina paralela (com 24 processadores) consome 10 segundos,
    a
  ent˜o
      a
                               Ts     200
                     seepdup =     =      = 20                (2)
                               Tp      10

                      Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                  e                               A Lei de Amdahl
                         O que ´ Paralelismo?
                               e                  Um modelo para execu¸˜o multithreaded
                                                                      ca


A Lei de Amdahl




  Lei de Amdahl
  Se somente uma fra¸˜o do programa ser´ otimizado, somente uma
                      ca               a
  fra¸˜o do benef´ ser´ alcan¸ado
     ca          ıcio    a   c
                                                      1
                           seepdup =                                                            (3)
                                                s + (1 − s)/n




                      Paulo Ricardo Paz Vital     CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                   e                             A Lei de Amdahl
                          O que ´ Paralelismo?
                                e                Um modelo para execu¸˜o multithreaded
                                                                     ca


A Lei de Amdahl


  Exemplo
     20% de um programa n˜o ser´ alterado
                         a     a
     Ser˜o utilizados 4 processadores para executar todo o
        a
     programa
     Qual ser´ o ”speedup”?
             a




                       Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                     e                             A Lei de Amdahl
                            O que ´ Paralelismo?
                                  e                Um modelo para execu¸˜o multithreaded
                                                                       ca


A Lei de Amdahl


  Exemplo
      20% de um programa n˜o ser´ alterado
                          a     a
      Ser˜o utilizados 4 processadores para executar todo o
         a
      programa
      Qual ser´ o ”speedup”?
              a

  Resolu¸˜o
        ca
                                               80%
                                   20% +           = 40%                                         (4)
                                                4




                         Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                   e                             A Lei de Amdahl
                          O que ´ Paralelismo?
                                e                Um modelo para execu¸˜o multithreaded
                                                                     ca


Um modelo para execu¸˜o multithreaded
                    ca



  “dag model for multithreading ”
      v´rtices = conjunto de instru¸˜es
       e                           co
      arestas = dependˆncias entre instru¸˜es
                      e                  co

      instru¸˜o x precede instru¸˜o y (x
            ca                  ca                         y ), se x terminou antes
      de y come¸ar,
                c
      caso n˜o aconte¸a x y ou y
             a        c                              x, ent˜o dizemas que as
                                                           a
      instru¸˜es est˜o em paralelo (x
            co      a                                y)




                       Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
A emergˆncia do Software Multicore
                e                             A Lei de Amdahl
                       O que ´ Paralelismo?
                             e                Um modelo para execu¸˜o multithreaded
                                                                  ca


Um modelo para execu¸˜o multithreaded
                    ca




                                                      1      2
                                                      6      12
                                                      5     9




                    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
              PThreads
              OpenMP




                   Parte II

Plataformas de concorrˆncia
                      e




 Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                            PThreads
                            OpenMP




3   MPI


4   PThreads


5   OpenMP




               Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                                PThreads
                                OpenMP


MPI


      MPI (Message Passing Interface) ´ uma biblioteca de
                                        e
      subrotinas de comunica¸˜o, utilizadas em ambientes de
                             ca
      mem´ria distribu´ m´quinas paralelas massivas, NOWs
           o          ıda, a
      (network of workstations) e redes heterogˆneas.
                                               e
      Informa¸˜es passadas da mem´ria local do processo para a
             co                    o
      mem´ria principal do processo remoto.
           o
      Paralelismo ´ explicito, ou seja, o desenvolvedor ´ respons´vel
                   e                                    e        a
      pela distribui¸˜o.
                    ca
      API predominante no desenvolvimento de aplica¸˜es para
                                                   co
      clusters cient´
                    ıficos.



                   Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                               PThreads
                               OpenMP


MPI

      Diversas implementa¸˜es;
                         co
          OpenMPI - http://www.open-mpi.org/
          LAM/MPI - http://www.lam-mpi.org/
          Los Alamos MPI - http://public.lanl.gov/lampi/
          MPICH - http://www-unix.mcs.anl.gov/mpi/mpich/
          MPICH2 - http://www-unix.mcs.anl.gov/mpi/mpich2/
      Alguns pontos antes de come¸ar:
                                 c
          MPI assume que vai trabalhar com processos.
          MPI assume que n˜o o mesmo espa¸o de endere¸amento de
                            a               c          c
          mem´ria ser´ compartilhado.
              o      a
          Todos os processos podem usar opera¸˜es de IO.
                                              co
          N˜o pense em ”regi˜es paralelas”.
           a                  o
          MPI opera via ”function calls”.


                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                            PThreads
                            OpenMP


MPI

 Estrutura b´sica de um programa MPI
            a
 /* add in MPI startup routines */
 /* 1st: launch the MPI processes on each node */
 MPI_Init(&argc,&argv);

 /* 2nd: request a thread id, sometimes called a quot;rankquot;
    from the MPI master process, which has tid == 0 */
 MPI_Comm_rank(MPI_COMM_WORLD, &tid);

 /* 3rd: this is often useful, get the number of
    threads or processes launched by MPI */
 MPI_Comm_size(MPI_COMM_WORLD, &nthreads);


               Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                                 PThreads
                                 OpenMP


MPI




      hello-mpi
      hello-mpi-2




                    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                               PThreads
                               OpenMP


PThreads


      POSIX Threads ´ um padr˜o POSIX que define uma API para
                       e         a
      criar e manipular threads.
      Conjunto de tipos e chamadas para linguagem de
      programa¸˜o C
              ca

  Caracter´
          ısticas
      Threads co-existem num mesmo processo, compartilhando
      v´rios recursos, mas s˜o escalonadas separadamente pelo
       a                    a
      sistema operacional
      Somente o m´ ınimo necess´rio de recursos s˜o replicados entre
                               a                 a
      as duas threads


                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                             PThreads
                             OpenMP


PThreads



  Criando e Terminando Threads
  pthread_create (thread,attr,start_routine,arg)

  pthread_exit (status)

  pthread_attr_init (attr)

  pthread_attr_destroy (attr)




                Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                             PThreads
                             OpenMP


PThreads



  Unindo e Desunindo Threads
  pthread_join (threadid,status)

  pthread_detach (threadid,status)

  pthread_attr_setdetachstate (attr,detachstate)

  pthread_attr_getdetachstate (attr,detachstate)




                Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                              PThreads
                              OpenMP


PThreads
  Criando e Destruindo Mutex
  pthread_mutex_init (mutex,attr)

  pthread_mutex_destroy (mutex)

  pthread_mutexattr_init (attr)

  pthread_mutexattr_destroy (attr)

  Travando e Destravando Mutex
  pthread_mutex_lock (mutex)

  pthread_mutex_trylock (mutex)

  pthread_mutex_unlock (mutex)
                 Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                             PThreads
                             OpenMP


PThreads




   hello
   hello arg1
   join
   mutex




                Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                           PThreads
                           OpenMP


OpenMP



    http://www.openmp.org
    Biblioteca de mais alto n´vel para programa¸~o
                             ı                 ca
    paralela
    Suporta mem´ria compartilhada
               o
    C/C++ e Fortran (requer suporte do compilador)
    Programador possui controle total sobre a
    execu¸~o paralela
         ca




              Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                               PThreads
                               OpenMP


OpenMP


 Caracter´
         ısticas
     Biblioteca para paraleliza¸˜o de c´digo
                               ca      o
     Usa #pragma para definir as regi˜es paralelas
                                    o
     Detecta automaticamente o n´mero de processadores
                                u

 Restri¸˜es
       co
     Programador necessita fornecer os #pragmas
     N˜o existe detec¸˜o de conflitos
      a              ca
     Exige compilador - n˜o ´ apenas uma biblioteca
                         a e




                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
MPI
                               PThreads
                               OpenMP


OpenMP




   openmp hello
   ImageMagick




                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                              ca
        Confiabilidade de Software
        Tempo de desenvolvimento




                           Parte III

20 quest˜es a fazer quando ir para multicore
        o




          Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                      ca
                Confiabilidade de Software
                Tempo de desenvolvimento




6   Desempenho da aplica¸˜o
                        ca


7   Confiabilidade de Software


8   Tempo de desenvolvimento




                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                       ca
                 Confiabilidade de Software
                 Tempo de desenvolvimento


20 quest˜es a fazer quando ir para multicore
        o




  Quest˜es sugeridas por Leiserson e Mirman para ajudar a
        o
  determinar a melhor plataforma de concorrˆncia de acordo com as
                                            e
  necessidades do projeto.
  Divididas de acordo com as trˆs arestas do triˆngulo do software
                               e                a
  multicore: desempenho da aplica¸˜o, confiabilidade de software e
                                  ca
  tempo de desenvolvimento.




                   Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                        ca
                  Confiabilidade de Software
                  Tempo de desenvolvimento


20 quest˜es a fazer quando ir para multicore
        o


    1   A plataforma de concorrˆncia me permite medir o paralelismo
                               e
        exposto na minha aplica¸˜o?
                               ca
    2   A plataforma de concorrˆncia indica o gargalo do tempo de
                               e
        resposta, ou somente oferece mais capaciadade?
    3   O desempenho da aplica¸˜o aumenta linearmente a medida
                                ca
        que mais cores s˜o adicionados, ou does it quickly reach
                        a
        diminishing returns?
    4   Meu c´digo multicore ser´ mais r´pido que meu c´digo serial
               o                a       a              o
        original quando executado em um processador unico?
                                                    ´




                    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                         ca
                   Confiabilidade de Software
                   Tempo de desenvolvimento


20 quest˜es a fazer quando ir para multicore
        o



    5   Ser´ que o scheduler da plataforma de concorrˆncia
           a                                            e
        balancear´ cargas (aplica¸˜es) irregulares de forma eficiente
                 a                co
        para alcan¸ar plena utiliza¸˜o?
                  c                ca
    6   Minha aplica¸˜o executar´ legal com outros jobs do sistema,
                    ca            a
        ou jobs m´ltiplos causar˜o problemas de recursos?
                 u              a
    7   Quais ferramentas est˜o dispon´
                             a        ıveis para detectar gargalos de
        desempenho multicore?




                     Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                         ca
                   Confiabilidade de Software
                   Tempo de desenvolvimento


20 quest˜es a fazer quando ir para multicore
        o

    8   Qu˜o dif´ ´ depurar minha aplica¸˜o multicore em rela¸˜o a
           a     ıcil e                 ca                   ca
        aplica¸˜o original?
              ca
    9   Posso usar as ferramentas de depura¸˜o que j´ conhe¸o?
                                           ca       a      c
   10   Existem ferramentas de depura¸˜o eficazes para identificar e
                                      ca
        localizar erros em programa¸˜o paralela, como bugs de ”data
                                   ca
        race”?
   11   Devo usar um depurador paralelo mesmo se eu fizer um erro
        de programa¸˜o serial ordin´rio?
                   ca              a
   12   Que mudan¸as devo fazer nos processos de lan¸mento para
                   c                                a
        assegurar que meu software entregue ´ confi´vel?
                                            e     a
   13   Posso usar os testes unit´rios e testes de regress˜o existentes?
                                 a                        a


                     Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                        ca
                  Confiabilidade de Software
                  Tempo de desenvolvimento


20 quest˜es para fazer quando ir para multicore
        o



   14   Para transformar minha aplica¸˜o em multicore, quanto de
                                       aa
        re-estrutura¸˜o l´gica precisso fazer?
                    ca o
   15   Posso treinar facilmente programadores a usarem plataformas
        de concorrˆncia?
                   e
   16   Posso manter somente uma base de c´digo, ou devo manter
                                            o
        uma vers˜o serial e outra paralela?
                a
   17   Posso evitar de reescrever a minha aplica¸˜o toda vez que uma
                                                 ca
        nova gera¸˜o de processadores aumenta o n´mero de cores?
                  ca                                u




                    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Desempenho da aplica¸˜o
                                        ca
                  Confiabilidade de Software
                  Tempo de desenvolvimento


20 quest˜es a fazer quando ir para multicore
        o



   18   Posso facilmente habilitar c´digo multicore mau-estruturada e
                                    o
        irregular, ou a plataforma de concorrˆncia ´ limitada aos
                                             e     e
        dados de aplica¸˜es paralelas?
                        co
   19   As plataformas de concorrˆncia suportam modernas
                                 e
        paradgmas de programa¸˜o, como objetos, templates e
                               ca
        exceptions?
   20   O que fazer para lidar com vari´veis globais na minha
                                       a
        aplica¸˜o?
              ca




                    Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Referˆncias
     e

     Amdahl, G.; The validity of the single processor approach to
     achieving largescale computing capabilities, Proceedings of the
     AFIPS Spring Joint Computer Conference, 1967
     Leiserson, C. E. and Mirman, I, B.; How to Survive the
     Multicore Software Revolution (or at Least Survive the Hype),
     e-Book, 2008
     http://www.cilk.com/multicore-e-book/
     Landman, J.; MPI in Thirty Minutes, Linux Magazine, 2008
     http://www.linux-mag.com/id/5759/
     Barney, B; Tutorial PThreads, Livermore Computing, 2008
     https://computing.llnl.gov/tutorials/pthreads/


                  Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Referˆncias
     e




     Butenhof, D. R.; Programming with POSIX(R) Threads,
     Addison Wesley, 1997
     Chapman, B., Jost, G., Pas, R.; Using OpenMP: Portable
     Shared Memory Parallel Programming, MIT Press, 2007




                 Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
IBM Linux Technology Center




     LTC ´ o bra¸o armado da iniciativa IBM para com o software
           e    c
     livre
     Desenvolvedores trabalham em coopera¸˜o com a comunidade
                                           ca
     Open Source
     ´
     E o centro de competˆncia t´cnica para Linux na IBM
                          e     e
     +640 pessoas e 38 localidades no mundo




                 Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
IBM Linux Technology Center




              Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Agradecimentos




  Ao colega Higor Alves, pelo empr´stimo de um laptop multicore :-D
                                  e




                   Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre
Perguntas?




Paulo Ricardo Paz Vital
{pvital, vital}@br.ibm.com
http://www.pvital.org




                   Paulo Ricardo Paz Vital   CONISLI 2008 - Congresso Internacional de Software Livre

Contenu connexe

Similaire à Sobrevivendo à revolução multicore

Fábricas robóticas
Fábricas robóticasFábricas robóticas
Fábricas robóticasmabreu2001
 
Lista de exercicio i informatica basica
Lista de exercicio i  informatica basicaLista de exercicio i  informatica basica
Lista de exercicio i informatica basicaCarlos Melo
 
NoOps - TDC FLN 2013
NoOps - TDC FLN 2013NoOps - TDC FLN 2013
NoOps - TDC FLN 2013Aldrin Leal
 
Tecnologia da Informação
Tecnologia da InformaçãoTecnologia da Informação
Tecnologia da Informaçãocleusamoreira
 
Tecnologia da informação
Tecnologia da informaçãoTecnologia da informação
Tecnologia da informaçãocleusamoreira
 
Modelos de negocio em Open Source
Modelos de negocio em Open SourceModelos de negocio em Open Source
Modelos de negocio em Open SourceCezar Taurion
 
MINIAULA - Disciplina Fundamentos da Computação - SENAC
MINIAULA - Disciplina Fundamentos da Computação - SENACMINIAULA - Disciplina Fundamentos da Computação - SENAC
MINIAULA - Disciplina Fundamentos da Computação - SENACCloves da Rocha
 
Modelos de Negocios baseados em Software Livre
Modelos de Negocios baseados em Software LivreModelos de Negocios baseados em Software Livre
Modelos de Negocios baseados em Software LivreFábio Prudente
 
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!André Espeiorin
 
Propriedade Intelectual, Computacao e Sociedade
Propriedade Intelectual, Computacao e SociedadePropriedade Intelectual, Computacao e Sociedade
Propriedade Intelectual, Computacao e SociedadeLuis Caldas de Oliveira
 
Software Livre, o caminho do futuro
Software Livre, o caminho do futuroSoftware Livre, o caminho do futuro
Software Livre, o caminho do futuroterramel
 
Trabalho Sobre Fundamentos da Informatica
Trabalho Sobre Fundamentos da InformaticaTrabalho Sobre Fundamentos da Informatica
Trabalho Sobre Fundamentos da InformaticaGhost56
 
Wire 2010 - Entenda Software da Forma Correta
Wire 2010 - Entenda Software da Forma CorretaWire 2010 - Entenda Software da Forma Correta
Wire 2010 - Entenda Software da Forma CorretaFabio Akita
 
Intr. a informática Aulas
Intr. a informática Aulas Intr. a informática Aulas
Intr. a informática Aulas Nmutemba
 
Internet das Coisas com Python e Arduino
Internet das Coisas com Python e ArduinoInternet das Coisas com Python e Arduino
Internet das Coisas com Python e ArduinoHumberto Zanetti
 
Informática parte 1-introdução
Informática parte 1-introduçãoInformática parte 1-introdução
Informática parte 1-introduçãoMauro Pereira
 

Similaire à Sobrevivendo à revolução multicore (20)

Fábricas robóticas
Fábricas robóticasFábricas robóticas
Fábricas robóticas
 
Lista de exercicio i informatica basica
Lista de exercicio i  informatica basicaLista de exercicio i  informatica basica
Lista de exercicio i informatica basica
 
NoOps - TDC FLN 2013
NoOps - TDC FLN 2013NoOps - TDC FLN 2013
NoOps - TDC FLN 2013
 
Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 01 - ...
Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 01 - ...Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 01 - ...
Introdução aos Padrões Web e Tecnologias para o Ambiente Digital - Aula 01 - ...
 
Tecnologia da Informação
Tecnologia da InformaçãoTecnologia da Informação
Tecnologia da Informação
 
Tecnologia da informação
Tecnologia da informaçãoTecnologia da informação
Tecnologia da informação
 
Modelos de negocio em Open Source
Modelos de negocio em Open SourceModelos de negocio em Open Source
Modelos de negocio em Open Source
 
MINIAULA - Disciplina Fundamentos da Computação - SENAC
MINIAULA - Disciplina Fundamentos da Computação - SENACMINIAULA - Disciplina Fundamentos da Computação - SENAC
MINIAULA - Disciplina Fundamentos da Computação - SENAC
 
Modelos de Negocios baseados em Software Livre
Modelos de Negocios baseados em Software LivreModelos de Negocios baseados em Software Livre
Modelos de Negocios baseados em Software Livre
 
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!
 
O que é Software Livre
O que é Software LivreO que é Software Livre
O que é Software Livre
 
Propriedade Intelectual, Computacao e Sociedade
Propriedade Intelectual, Computacao e SociedadePropriedade Intelectual, Computacao e Sociedade
Propriedade Intelectual, Computacao e Sociedade
 
Software Livre, o caminho do futuro
Software Livre, o caminho do futuroSoftware Livre, o caminho do futuro
Software Livre, o caminho do futuro
 
Trabalho Sobre Fundamentos da Informatica
Trabalho Sobre Fundamentos da InformaticaTrabalho Sobre Fundamentos da Informatica
Trabalho Sobre Fundamentos da Informatica
 
Aula2
Aula2Aula2
Aula2
 
TEES - Apresentacao Final
TEES - Apresentacao FinalTEES - Apresentacao Final
TEES - Apresentacao Final
 
Wire 2010 - Entenda Software da Forma Correta
Wire 2010 - Entenda Software da Forma CorretaWire 2010 - Entenda Software da Forma Correta
Wire 2010 - Entenda Software da Forma Correta
 
Intr. a informática Aulas
Intr. a informática Aulas Intr. a informática Aulas
Intr. a informática Aulas
 
Internet das Coisas com Python e Arduino
Internet das Coisas com Python e ArduinoInternet das Coisas com Python e Arduino
Internet das Coisas com Python e Arduino
 
Informática parte 1-introdução
Informática parte 1-introduçãoInformática parte 1-introdução
Informática parte 1-introdução
 

Sobrevivendo à revolução multicore

  • 1. Programa¸˜o Multicore: ca Como sobreviver a esta revolu¸˜o? ca Paulo Ricardo Paz Vital IBM Linux Technology Center Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 2. Sobre o palestrante... Engenheiro de Computa¸˜o, UCDB, 2003 ca Engenheiro de Software, IBM Linux Technology Center: IBM Installation Toolkit for Linux on POWER Yaboot IBM Server Consolidation Toolkit Multicore Development Tools - Cell IDE Pesquisador do Instituto de Computa¸˜o da Unicamp: ca Mem´rias Transacionais o Programa¸˜o Multicore ca Usu´rio, administrador e desenvolvedor de sistemas Unix-like a desde 1999 Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 3. Agenda 1 Introdu¸˜o ca A emergˆncia do Software Multicore e O que ´ Paralelismo? e 2 Plataformas de concorrˆncia e MPI Pthreads OpenMP 3 20 quest˜es a fazer quando ir para multicore o Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 4. A emergˆncia do Software Multicore e O que ´ Paralelismo? e Parte I Introdu¸˜o ca Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 5. A emergˆncia do Software Multicore e O que ´ Paralelismo? e 1 A emergˆncia do Software Multicore e A Lei de Moore 2 O que ´ Paralelismo? e A Lei de Amdahl Um modelo para execu¸˜o multithreaded ca Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 6. A emergˆncia do Software Multicore e A Lei de Moore O que ´ Paralelismo? e A Lei de Moore Gordon Moore - cofundador da Intel Corporation Eletronics Magazine, 19 de Abril de 1965 Lei de Moore O n´mero de transistores numa mesma ´rea de semicondutor u a dobra a cada 18 (24) meses. Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 7. A emergˆncia do Software Multicore e A Lei de Moore O que ´ Paralelismo? e A Lei de Moore Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 8. A emergˆncia do Software Multicore e A Lei de Moore O que ´ Paralelismo? e A Lei de Moore Problemas? Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 9. A emergˆncia do Software Multicore e A Lei de Moore O que ´ Paralelismo? e A Lei de Moore Problemas? Miniaturiza¸˜o chegando ao limite. ca Dissipa¸˜o de calor. ca Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 10. A emergˆncia do Software Multicore e A Lei de Moore O que ´ Paralelismo? e A Lei de Moore Problemas? Miniaturiza¸˜o chegando ao limite. ca Dissipa¸˜o de calor. ca Solu¸˜es? co Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 11. A emergˆncia do Software Multicore e A Lei de Moore O que ´ Paralelismo? e A Lei de Moore Problemas? Miniaturiza¸˜o chegando ao limite. ca Dissipa¸˜o de calor. ca Solu¸˜es? co Novas tecnologias de grava¸˜o de chips. ca Mais de um n´cleo, ou seja, multicore. u Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 12. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca A Lei de Amdahl ”Speedup” Quanto se ganhou com a execu¸˜o de uma tarefa em um ca computador paralelo? Temposerial Ts seepdup = = (1) Tempoparalelo Tp Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 13. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca A Lei de Amdahl ”Speedup” Quanto se ganhou com a execu¸˜o de uma tarefa em um ca computador paralelo? Temposerial Ts seepdup = = (1) Tempoparalelo Tp Exemplo Uma determinada tarefa, quando executada em um computador convencional consome 200 segundos e quando executada em uma m´quina paralela (com 24 processadores) consome 10 segundos, a ent˜o a Ts 200 seepdup = = = 20 (2) Tp 10 Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 14. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca A Lei de Amdahl Lei de Amdahl Se somente uma fra¸˜o do programa ser´ otimizado, somente uma ca a fra¸˜o do benef´ ser´ alcan¸ado ca ıcio a c 1 seepdup = (3) s + (1 − s)/n Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 15. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca A Lei de Amdahl Exemplo 20% de um programa n˜o ser´ alterado a a Ser˜o utilizados 4 processadores para executar todo o a programa Qual ser´ o ”speedup”? a Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 16. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca A Lei de Amdahl Exemplo 20% de um programa n˜o ser´ alterado a a Ser˜o utilizados 4 processadores para executar todo o a programa Qual ser´ o ”speedup”? a Resolu¸˜o ca 80% 20% + = 40% (4) 4 Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 17. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca Um modelo para execu¸˜o multithreaded ca “dag model for multithreading ” v´rtices = conjunto de instru¸˜es e co arestas = dependˆncias entre instru¸˜es e co instru¸˜o x precede instru¸˜o y (x ca ca y ), se x terminou antes de y come¸ar, c caso n˜o aconte¸a x y ou y a c x, ent˜o dizemas que as a instru¸˜es est˜o em paralelo (x co a y) Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 18. A emergˆncia do Software Multicore e A Lei de Amdahl O que ´ Paralelismo? e Um modelo para execu¸˜o multithreaded ca Um modelo para execu¸˜o multithreaded ca 1 2 6 12 5 9 Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 19. MPI PThreads OpenMP Parte II Plataformas de concorrˆncia e Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 20. MPI PThreads OpenMP 3 MPI 4 PThreads 5 OpenMP Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 21. MPI PThreads OpenMP MPI MPI (Message Passing Interface) ´ uma biblioteca de e subrotinas de comunica¸˜o, utilizadas em ambientes de ca mem´ria distribu´ m´quinas paralelas massivas, NOWs o ıda, a (network of workstations) e redes heterogˆneas. e Informa¸˜es passadas da mem´ria local do processo para a co o mem´ria principal do processo remoto. o Paralelismo ´ explicito, ou seja, o desenvolvedor ´ respons´vel e e a pela distribui¸˜o. ca API predominante no desenvolvimento de aplica¸˜es para co clusters cient´ ıficos. Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 22. MPI PThreads OpenMP MPI Diversas implementa¸˜es; co OpenMPI - http://www.open-mpi.org/ LAM/MPI - http://www.lam-mpi.org/ Los Alamos MPI - http://public.lanl.gov/lampi/ MPICH - http://www-unix.mcs.anl.gov/mpi/mpich/ MPICH2 - http://www-unix.mcs.anl.gov/mpi/mpich2/ Alguns pontos antes de come¸ar: c MPI assume que vai trabalhar com processos. MPI assume que n˜o o mesmo espa¸o de endere¸amento de a c c mem´ria ser´ compartilhado. o a Todos os processos podem usar opera¸˜es de IO. co N˜o pense em ”regi˜es paralelas”. a o MPI opera via ”function calls”. Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 23. MPI PThreads OpenMP MPI Estrutura b´sica de um programa MPI a /* add in MPI startup routines */ /* 1st: launch the MPI processes on each node */ MPI_Init(&argc,&argv); /* 2nd: request a thread id, sometimes called a quot;rankquot; from the MPI master process, which has tid == 0 */ MPI_Comm_rank(MPI_COMM_WORLD, &tid); /* 3rd: this is often useful, get the number of threads or processes launched by MPI */ MPI_Comm_size(MPI_COMM_WORLD, &nthreads); Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 24. MPI PThreads OpenMP MPI hello-mpi hello-mpi-2 Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 25. MPI PThreads OpenMP PThreads POSIX Threads ´ um padr˜o POSIX que define uma API para e a criar e manipular threads. Conjunto de tipos e chamadas para linguagem de programa¸˜o C ca Caracter´ ısticas Threads co-existem num mesmo processo, compartilhando v´rios recursos, mas s˜o escalonadas separadamente pelo a a sistema operacional Somente o m´ ınimo necess´rio de recursos s˜o replicados entre a a as duas threads Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 26. MPI PThreads OpenMP PThreads Criando e Terminando Threads pthread_create (thread,attr,start_routine,arg) pthread_exit (status) pthread_attr_init (attr) pthread_attr_destroy (attr) Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 27. MPI PThreads OpenMP PThreads Unindo e Desunindo Threads pthread_join (threadid,status) pthread_detach (threadid,status) pthread_attr_setdetachstate (attr,detachstate) pthread_attr_getdetachstate (attr,detachstate) Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 28. MPI PThreads OpenMP PThreads Criando e Destruindo Mutex pthread_mutex_init (mutex,attr) pthread_mutex_destroy (mutex) pthread_mutexattr_init (attr) pthread_mutexattr_destroy (attr) Travando e Destravando Mutex pthread_mutex_lock (mutex) pthread_mutex_trylock (mutex) pthread_mutex_unlock (mutex) Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 29. MPI PThreads OpenMP PThreads hello hello arg1 join mutex Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 30. MPI PThreads OpenMP OpenMP http://www.openmp.org Biblioteca de mais alto n´vel para programa¸~o ı ca paralela Suporta mem´ria compartilhada o C/C++ e Fortran (requer suporte do compilador) Programador possui controle total sobre a execu¸~o paralela ca Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 31. MPI PThreads OpenMP OpenMP Caracter´ ısticas Biblioteca para paraleliza¸˜o de c´digo ca o Usa #pragma para definir as regi˜es paralelas o Detecta automaticamente o n´mero de processadores u Restri¸˜es co Programador necessita fornecer os #pragmas N˜o existe detec¸˜o de conflitos a ca Exige compilador - n˜o ´ apenas uma biblioteca a e Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 32. MPI PThreads OpenMP OpenMP openmp hello ImageMagick Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 33. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento Parte III 20 quest˜es a fazer quando ir para multicore o Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 34. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 6 Desempenho da aplica¸˜o ca 7 Confiabilidade de Software 8 Tempo de desenvolvimento Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 35. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 20 quest˜es a fazer quando ir para multicore o Quest˜es sugeridas por Leiserson e Mirman para ajudar a o determinar a melhor plataforma de concorrˆncia de acordo com as e necessidades do projeto. Divididas de acordo com as trˆs arestas do triˆngulo do software e a multicore: desempenho da aplica¸˜o, confiabilidade de software e ca tempo de desenvolvimento. Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 36. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 20 quest˜es a fazer quando ir para multicore o 1 A plataforma de concorrˆncia me permite medir o paralelismo e exposto na minha aplica¸˜o? ca 2 A plataforma de concorrˆncia indica o gargalo do tempo de e resposta, ou somente oferece mais capaciadade? 3 O desempenho da aplica¸˜o aumenta linearmente a medida ca que mais cores s˜o adicionados, ou does it quickly reach a diminishing returns? 4 Meu c´digo multicore ser´ mais r´pido que meu c´digo serial o a a o original quando executado em um processador unico? ´ Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 37. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 20 quest˜es a fazer quando ir para multicore o 5 Ser´ que o scheduler da plataforma de concorrˆncia a e balancear´ cargas (aplica¸˜es) irregulares de forma eficiente a co para alcan¸ar plena utiliza¸˜o? c ca 6 Minha aplica¸˜o executar´ legal com outros jobs do sistema, ca a ou jobs m´ltiplos causar˜o problemas de recursos? u a 7 Quais ferramentas est˜o dispon´ a ıveis para detectar gargalos de desempenho multicore? Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 38. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 20 quest˜es a fazer quando ir para multicore o 8 Qu˜o dif´ ´ depurar minha aplica¸˜o multicore em rela¸˜o a a ıcil e ca ca aplica¸˜o original? ca 9 Posso usar as ferramentas de depura¸˜o que j´ conhe¸o? ca a c 10 Existem ferramentas de depura¸˜o eficazes para identificar e ca localizar erros em programa¸˜o paralela, como bugs de ”data ca race”? 11 Devo usar um depurador paralelo mesmo se eu fizer um erro de programa¸˜o serial ordin´rio? ca a 12 Que mudan¸as devo fazer nos processos de lan¸mento para c a assegurar que meu software entregue ´ confi´vel? e a 13 Posso usar os testes unit´rios e testes de regress˜o existentes? a a Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 39. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 20 quest˜es para fazer quando ir para multicore o 14 Para transformar minha aplica¸˜o em multicore, quanto de aa re-estrutura¸˜o l´gica precisso fazer? ca o 15 Posso treinar facilmente programadores a usarem plataformas de concorrˆncia? e 16 Posso manter somente uma base de c´digo, ou devo manter o uma vers˜o serial e outra paralela? a 17 Posso evitar de reescrever a minha aplica¸˜o toda vez que uma ca nova gera¸˜o de processadores aumenta o n´mero de cores? ca u Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 40. Desempenho da aplica¸˜o ca Confiabilidade de Software Tempo de desenvolvimento 20 quest˜es a fazer quando ir para multicore o 18 Posso facilmente habilitar c´digo multicore mau-estruturada e o irregular, ou a plataforma de concorrˆncia ´ limitada aos e e dados de aplica¸˜es paralelas? co 19 As plataformas de concorrˆncia suportam modernas e paradgmas de programa¸˜o, como objetos, templates e ca exceptions? 20 O que fazer para lidar com vari´veis globais na minha a aplica¸˜o? ca Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 41. Referˆncias e Amdahl, G.; The validity of the single processor approach to achieving largescale computing capabilities, Proceedings of the AFIPS Spring Joint Computer Conference, 1967 Leiserson, C. E. and Mirman, I, B.; How to Survive the Multicore Software Revolution (or at Least Survive the Hype), e-Book, 2008 http://www.cilk.com/multicore-e-book/ Landman, J.; MPI in Thirty Minutes, Linux Magazine, 2008 http://www.linux-mag.com/id/5759/ Barney, B; Tutorial PThreads, Livermore Computing, 2008 https://computing.llnl.gov/tutorials/pthreads/ Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 42. Referˆncias e Butenhof, D. R.; Programming with POSIX(R) Threads, Addison Wesley, 1997 Chapman, B., Jost, G., Pas, R.; Using OpenMP: Portable Shared Memory Parallel Programming, MIT Press, 2007 Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 43. IBM Linux Technology Center LTC ´ o bra¸o armado da iniciativa IBM para com o software e c livre Desenvolvedores trabalham em coopera¸˜o com a comunidade ca Open Source ´ E o centro de competˆncia t´cnica para Linux na IBM e e +640 pessoas e 38 localidades no mundo Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 44. IBM Linux Technology Center Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 45. Agradecimentos Ao colega Higor Alves, pelo empr´stimo de um laptop multicore :-D e Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre
  • 46. Perguntas? Paulo Ricardo Paz Vital {pvital, vital}@br.ibm.com http://www.pvital.org Paulo Ricardo Paz Vital CONISLI 2008 - Congresso Internacional de Software Livre