UNISANTA
UNISANTA
Universidade Santa Cecília

PROJETO DE PESQUISA -  PROGRAMAÇÃO PARALELA

Alexandre Santos do Nascimento

Leandro de Castro Gomes



Objetivo

  • Apresentar os aspectos da programação paralela fazendo uso de computadores com processadores de vários núcleos, e comparar o tempo de execução de um mesmo algoritmo, que gera processamentos em massa, utilizando o recurso do núcleo bi-processado, e sem a utilização desse recurso, em uma mesma máquina.


  • Histórico

    A idéia de paralelismo no processo computacional é quase tão antiga quanto o primeiro modelo de computador eletrônico surgido em 1946, o ENIAC (Electronic Numerical Integrator and Computer). A computação passou por um processo evolutivo intenso desde daquela época, tanto em nível de hardware e software, a fim de proporcionar maior desempenho e ampliar o leque de aplicações que podem ser computacionalmente resolvidas de maneira eficiente.

     O processamento paralelo consiste na divisão de determinadas partes da aplicação de maneira que se possa distribuir a carga do processamento pelos vários elementos de processamento que por sua vez deverão cooperar entre si (comunicação e sincronismo), a fim de se alcançar eficiência através da quebra do paradigma de execução seqüencial do fluxo de instruções, ditado pela filosofia de Von Neumann o qual, em seus artigos, sugeria formas paralelas de se resolver equações diferenciais.

    Alguns fatores justificam a idéia da programação paralela nas áreas nas quais a computação se aplica, sejam científicas, industriais ou militares, onde requerem cada vez mais poder computacional, em virtude dos algoritmos cada vez mais complexos que são utilizados e do tamanho do conjunto de dados a ser processado.

    Outro fato é que várias aplicações são inerentemente paralelas porém, perde-se desempenho pela necessidade de torná-las seqüenciais. O chamado "gargalo de Von Neumann", segundo Almasi [ALM94], tem diminuído a produtividade do programador, daí a necessidade de novas maneiras de organização do processamento computacional. STARMEDIA[2000]

    Atualmente existem algumas linguagens de programação paralela que surgiram como novo recurso para facilitar a tarefa de se construir programas que utilizem os recursos de paralelismo de equipamentos com arquitetura de computação paralela.  Para utilizar plenamente os recursos de um equipamento multiprocessado, existem basicamente duas opções, construir programas explicitando e controlando manualmente os trechos de paralelismo, utilizando recursos de uma Linguagem de Programação como o C para a criação das threads e processos necessários, ou utilizar-se de uma linguagem de programaçã o paralela, que, na verdade, não  passam   de   diretivas   de   compilador  para   uma   linguagem  de programação pré existente como por exemplo C, que possuem recursos que facilitam o tratamento de trechos paralelos e seqüenciais dos programas, atuando como um pré-compilador  e  criando a   versão   final  em uma   linguagem de programação como C, poupando ao programador a tarefa de se preocupar com o gerenciamento de threads e processos. PENASIO[2004]


    Público Alvo

  • Esta pesquisa tem como interessados os alunos dos cursos de Ciência da Computação e Engenharia de Software, que desejem conhecer a aplicação das técnicas de programação paralela.


  • Sumário
    1.  O gargalo de Von Neumann;
    2.  A Multiprogramação, e as características da Multitarefa e o Multiprocessamento;
    3.  Os conceitos da Programacao Paralela;
    4.  As arquiteturas muilt-core;
    5.  A API OpenMP;
    6.  Compartivos de Algoritmos;
       6.1 Gráficos resultantes.


    Referências Preliminares

    TANENBAUM e WOODHUL. Andrew S. Tanenbaum. Sistemas e Albert S. Woodhul. Operacionais Modernos Projeto e Implementação (2º Edição). Porto Alegre: 1999 

    Penasio e Mattes. Claudio Penasio Junior e Leonardo Mattes.  Análise Comparativa de Desempenho de um algoritmo Paralelo implementado nas Linguagens de Programação CPAR e Openmp. São  Paulo: 2004

    STARMEDIA,2000 - Curso de Progrmação Paralela Fonte: http://orbita.starmedia.com
    Disponível em: htt://orbita.starmedia.com/~computacaounifenas/paralela/introducao.htm