You are on page 1of 37

Apresentao da disciplina

Prof. Guilherme C. Kurtz

Tera-feira:
09:35 12:05

Sala 109, prdio 1, conjunto 1;

Laboratrio 311, prdio 4.

Moodle: moodle.unifra.br
Curso: Programao Paralela (SI) 2014/01
Cdigo de inscrio: UNIFRA-CC-PP

Fundamentos de processamento paralelo

Modelos de programao paralela

Primitivas de programao paralela

Desenvolvimento de algoritmos paralelos

Avaliao de desempenho

Quais Linguagens?
Programao em Memria Compartilhada Threads
Java

Programao em Memria Compartilhada OpenMP


C

Programao em Memria Distribuda MPI


C

Nota 1 (N1) composta por:

Nota 2 (N2) composta por:

Nota 3 (N3) composta por:

Nota final (NF):

Trabalho Prtico 1 (TP1), relacionado a Thread.


Lista de Exerccios de Threads.
Trabalho Prtico 2 (TP2), relacionado a OpenMP.
Lista de Exerccios de OpenMP.
Trabalho Prtico 3 (TP3), relacionado a MPI.
Lista de Exerccios de MPI.
NF = (N1 + N2 + N3)/3

Introduo

Prof. Guilherme C. Kurtz

Desde os primrdios da computao, as


arquiteturas paralelas foram apresentadas
como formas de obter uma maior capacidade
de processamento;
O aumento dessa capacidade s era possvel
atravs de processadores mais velozes ou na
quantidade de processadores em conjunto;

Nos anos 50 e 60, as tecnologias


monoprocessadas eram suficientes para atender
a demanda de processamento da poca;
A partir dos anos 70, a tecnologia de
monoprocessadores j no era suficiente para
atender as necessidades de processamento;
Desta forma, tcnicas de concorrncia para
alcanar o desempenho passaram a ser
requeridas.

Como o aumento da velocidade dos


processadores esbarrava no custo e no limite
da capacidade tecnologia, a soluo tendeu
para o emprego de vrios processadores;
Da surge o termo processamento paralelo,
que designa as diferentes tcnicas de
concorrncia que atendam essas
necessidades.

Evoluo

Prof. Guilherme C. Kurtz

Antigamente, a velocidade dos computadores


dependia somente da velocidade de execuo
das instrues e da velocidade de
transferncia de dados entre memria e CPU;
Em seguida surge o entrelaamento de
memria, permitindo o acesso simultneo a
memria atravs de sua diviso em bancos e
diversos canais de acesso;

Em 59 nos trabalhos de Strech [Blo59] e Larc


[Eck59] comea o emprego de tcnicas de
pipeline, dividindo a execuo das instrues em
estgios:
Ex: busca, decodificao, execuo e escrita;

Como forma de melhorar a transferncia de


dados entre memrias e processadores,
passaram a ser empregadas memrias mais
rpidas agindo como um armazenamento
temporrio: as denominadas memrias cache;

Seu principio se baseia que o acesso a dados e


instrues na memria ocorre de forma sequencial ou
em endereos prximos.

Um dos problemas que surgiram foram as


dependncias entre instrues:

Em um estgio do pipeline, uma instruo pode depender


do resultado de uma outra instruo que ainda no
completou seu processamento;

Diversas solues surgiram, tal como:

Minimizao da dependncia empregando um formato de


instrues simples;
Tcnicas de previso de desvio;
Hardwares especficos para funes separadas;

Isso levou a arquiteturas com vrias unidades


funcionais, tal como somadores, multiplicadores,
etc., executando em paralelo.

Tcnicas de pipeline, memria cache e memria


entrelaada so hoje aplicadas de forma usual em
computadores;

Entretanto, este tipo de abordagem ainda apresenta


limitaes, levando ao uso de diversas CPUs com
suas respectivas memrias, dando origem a
mquinas com vrios processadores;
Esta abordagem passou a trazer ao mercado
mquinas compostas por agregados de
computadores, os clusters, utilizando computadores
comuns interligados por uma rede de alta velocidade;

Logo passaram a existir mquinas


multiprocessadas agregando tcnicas de pipeline
nas suas arquiteturas;
Por fim, arquiteturas mais avanadas agregaram
tcnicas Superescalares, e utilizando mais de um
processador por chip;
Isso fez com que as tcnicas de processamento
paralelo, antes aplicadas somente a
supercomputadores, passassem a ser aplicadas
tambm a computadores pessoais;

Gerao ZERO (~1930):


Das primeiras formas de calcular at o surgimento
das primeiras calculadoras mecnicas e eletrnicas;

Stonehenge(~3100 a.C.)

baco(~2400 a.C.)

Pascalina(1642)
(primeira calculadora
mecnica do mundo)

Gerao ZERO (~1930):

Mquina de Antictera(87 a.C.)


(instrumento de navegao
e astronomia)

Ossos de Napier (1617)

Arithmomtre (1820)
(Primeira calculadora
vendida em larga escala)

Links interessantes:
https://www.youtube.com/watch?v=CjyKkTwvpn8
https://www.youtube.com/watch?v=L1CuR29OajI
https://www.youtube.com/watch?v=3gjDfc2AF3w
https://www.youtube.com/watch?v=s2T_158EsOw

Primeira gerao (Anos 40):

Surgimento das primeiras vlvulas eletrnicas;


Equipamentos utilizados pelo exrcito em clculos de balstica
Cada vlvula representava 1 bit ligado ou desligado;
Resultados no confiantes, pois as vlvulas queimavam com
facilidade

Segunda gerao (Anos 50):

Em 1947, surgimento do primeiro transistor, produzido pela Bell Telephone


Laboratories;
Circuitos consumindo bem menos energia;
Ocupavam menos espao;
Transistores bem mais confiveis que vlvulas;
Arquitetura de Von Neumann

Transistor

Arquitetura de von Neumann

Terceira gerao (Anos 60):


Surgem os primeiros circuitos integrados;
Transistores e outros componentes
miniaturizados montados em um nico chip;

Quarta gerao (Anos 80 e 90):

Primeiro microprocessador comercial, o intel 4004,


com 2300 transistores e 60.000 clculos por
segundo;
PC 386, PC 486 e Pentium

Quinta gerao (Anos 70):

Pentium MMX, Pentium II;


Arquiteturas superescalares;
Arquiteturas pipeline, superpipeline, etc.

1- Arquitetura tradicional:
Uma nica unidade ativa.
E

CPU

Memria

2- Unidades E/S autnomas:

DMA (Direct Memory Access), permitindo que certos


dispositivos acessem direto a memria independente da CPU;
Controladores de disco, placas grficas, de rede, som, ncleos de
processadores, etc.

CPU

Memria

2- Unidades E/S autnomas:


Computadores com DMA podem transferir dados
aos dispositivos sem perda muito significante de
processamento do que processadores sem DMA;
Sem DMA, o processador central ocupado
inteiramente para leitura ou escrita de alguma
operao, impossibilitando a execuo de outras
operaes em paralelo.

3 - Hierarquia de memria:

Dados mais utilizados estarem mais prximos da CPU e com


acesso mais rpido;
Acelerar a alimentao da CPU;

CPU
L1
L2
Memria

Pipeline:

Execuo de mais de uma instruo por vez;


Processamento dividido em etapas, sendo cada uma das etapas executada
por uma poro especializada da CPU.
F

CPU
L1

L2

Memria

S
W

Superescalar

Paralelismo a nvel de instrues;

Execuo de mais de uma instruo sem dependncia por clock;

Implementao de mltiplas unidades funcionais.

E
CPU

L1

L2

Memria

Uma srie de outros avanos, variedades e possibilidades:


Multiprocessadores:

memria compartilhada;

Multicomputadores:

Memria distribuda
Cada computador com sua memria local;

Computadores vetoriais:

Uma nica instruo opera sobre vrios dados, no caso, vetores;

Ex: uma nica instruo soma dois vetores de 64 posies em um terceiro


vetor resultante;

Computadores de DNA:

Utiliza molculas de DNA ao invs de componentes de silcio;


Ao invs de base binria (0 e 1), nucleotdeos Adenina, Timina, Guanina
e Citosina (A, T, G e C);

Porque pesquisar Arquiteturas Paralelas?

Prof. Guilherme C. Kurtz

Aumento de desempenho nas arquiteturas


tradicionais:
Pipeline;
Superescalar;

Simulao:

Previso do tempo;
Modelos fsicos;
Economia (simulaes em matemtica financeira);
Computao Grfica;

Alternativa para quando os limites fsicos forem


atingidos;

Lei de Moore: criada em 1965 pelo ento presidente da


Intel, Gordon E. Moore, sugere que o nmero de
transistores em um processador dobraria a cada 18 a 24
meses ao mesmo custo;
Previso que a partir de 2020 a lei no seja mais
aplicvel;
Quando um bit de informao se resumir a um tomo, o
que fazer?

Alternativa para aplicaes com demanda


imediata por alto desempenho;

Soluo para aplicaes complexas:


Cientficas, industriais e militares;

Astronomia:

Prospeco do petrleo:

Movimento dos corpos estelares;

Deteco de reservas de petrleo e gs natural;


Anlise da estrutura do subsolo sem necessidade
de escavao ou perfurao;

Engenharia:
Modelos de turbulncia, avies;
Anlise tridimensional de edifcios;

Anlise de algoritmos de criptografia;

Bioinformtica;

Processamento de imagens:
Renderizao de filmes, efeitos especiais.

No moodle.

You might also like