1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de...

65
1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto [email protected] Inês de Castro Dutra

Transcript of 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de...

Page 1: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

1

Introdução à Computação Paralela e Ambientes de

Grade

Departamento de Ciência de Computadores

Universidade do Porto

[email protected]

Inês de Castro Dutra

           

      

Page 2: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

2

Grades Computacionais

Idéia é utilizar computadores independentes geograficamente distantes

Diferenças: clusters x grids heterogeneidade (nós muito diferentes) alta dispersão geográfica (escala mundial) compartilhamento (inexistente) múltiplos domínios administrativos controle totalmente distribuído

Page 3: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

3

Grades Computacionais

Componentes PCs, SMPs, MPPs, clusters controlados por diferentes entidades diversos domínios administrativos

Não têm uma imagem única do sistema Sistema não dedicado Aplicação deve estar preparada para:

dinamismo variedade de plataformas

Page 4: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

4

Grades Computacionais

Escalonamento de aplicação recursos controlados por vários escalonadores distintos que devem decidir:

quais recursos serão utilizados pela aplicação

quais tarefas cada um destes recursos realizará

submeter solicitações aos escalonadores apropriados tarefa do escalonador de aplicações

Grids: duas camadas de escalonamento

Page 5: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

5

Grades Computacionais

Escalonador

de AplicaçãoEscalonador

de Aplicação

Escalonador

de Recursos

Escalonador

de Recursos

Escalonador

de Recursos

usuário usuário usuário

MPP SMP

SMP

Cluster

Page 6: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

6

Grades Computacionais

Internet

MPP

MPPSMP

SMP

Cluster

Cluster

Servidor

Computador convencional

Workstation

Servidor

Workstation

Page 7: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

7

Grades Computacionais

Middleware: Globus, Condor, OurGrid, gLite

usuário pode obter poder computacional de forma transparente sob demanda

Soluções: evitam problemas no nível do usuário introduzem novas abstrações que facilitam o uso da grade

Page 8: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

8

Top500 Supercomputer

Site Computer Procs Year Rmax Rpeak

DOE/NNSA/LLNLUnited States

BlueGene/L - eServer Blue Gene SolutionIBM

131072 2005280600

367000

IBM Thomas J. Watson Research CenterUnited States

BGW - eServer Blue Gene SolutionIBM

40960 2005 91290114688

DOE/NNSA/LLNLUnited States

ASC Purple - eServer pSeries p5 575 1.9 GHzIBM

10240 2005 63390 77824

NASA/Ames Research Center/NASUnited States

Columbia - SGI Altix 1.5 GHz, Voltaire InfinibandSGI

10160 2004 51870 60960

Sandia National LaboratoriesUnited States

Thunderbird - PowerEdge 1850, 3.6 GHz, InfinibandDell

8000 2005 38270 64512

Sandia National LaboratoriesUnited States

Red Storm Cray XT3, 2.0 GHzCray Inc.

10880 2005 36190 43520

The Earth Simulator CenterJapan

Earth-SimulatorNEC

5120 2002 35860 40960

Barcelona Supercomputer CenterSpain

MareNostrum - JS20 Cluster, PPC 970, 2.2 GHz, MyrinetIBM

4800 2005 27910 42144

ASTRON/University GroningenNetherlands

Stella - eServer Blue Gene SolutionIBM

12288 2005 2745034406.4

Oak Ridge National LaboratoryUnited States

Jaguar - Cray XT3, 2.4 GHzCray Inc.

5200 2005 20527 24960

Rmax Maximal LINPACK performance achieved Rpeak Theoretical peak performance GFlopss

Page 9: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

9

Resumindo...

Características SMPs MPPs NOWs GridsConectividade excelente muito boa boa média/ruimHeterogeneidade nula baixa média altaCompartilhamento não não sim simImagem do Sistema única comum comum múltiplaEscalabilidade 10 1.000 1.000 100.000

Plataformas de Execução Paralela

Page 10: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

10

Programação Paralela

Page 11: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

11

Programação Paralela

Paralelismo explícito

Linguagens (SR)

Bibliotecas (OpenMP, MPI)

Suporte de Sistema (lib do SO)

Paralelismo implícito

Compiladores paralelizadores (F90, HPF)

Linguagens declarativas (Prolog)

Sistemas híbridos (Concurrent Logic)

Page 12: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

12

Modelos de Programação Paralela

Modelos

Memória Compartilhada

Passagem de Mensagem

Paradigmas

SPMD (Single Program Multiple Data)

MPDM (Multiple Program Multiple Data)

Page 13: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

13

Ambientes de Programação Paralela

Clusters Memória Compartilhada

Software DSM (Click, HLRC, TreadMarks)

Passagem de Mensagens PVM MPI

OpenMP

Page 14: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

14

Ambiente: PVM

Modelo de programação

passagem de mensagem

software:

biblioteca no nível do usuário (C/Fortran)

protocolo TCP ou UDP

Modelos de paralelismo: SPMD ou MPDM

Page 15: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

15

Primitivas para:

criação e gerenciamento de processos

troca explícita de mensagens

primitivas de PVM possuem o prefixo

PVM_

Sistemas computacionais:

homogêneos ou heterogêneos

Ambiente: PVM

Page 16: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

16

Ambiente: MPI

Padronização a partir do PVM Modelo de programação:

passagem de mensagem software:

biblioteca no nível do usuário (C/Fortran) protocolo TCP ou UDP

Modelos de paralelismo: SPMD ou MPDM

Page 17: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

17

Ambiente: MPI

Primitivas para: criação e gerenciamento de processos troca explícita de mensagens primitivas de MPI possuem o prefixo

MPI_ Sistemas computacionais:

homogêneos ou heterogêneos Corrige algumas deficiências técnicas do PVM

Page 18: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

18

Ambiente: OpenMP

Busca por uma padronização de facto

Organização independente envolvendo

fabricantes de computadores (SGI, Compaq, Hewllet-Packard, Intel, IBM, Kuck & Associates, Sun , U.S. Department of Energy ASCI Program)

desenvolvedores de aplicações e vendedores

Page 19: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

19

Ambiente: OpenMP

Modelo de programação: semelhante ao modelo seqüencial

desenvolvido para dar suporte ao passo final da implementação de um algoritmo paralelo

linguagens: C, C++ e Fortran

expressão do paralelismo

diretivas incluídas no código fonte (comentários em Fortran e #pragmas em C ou C ++)

em conjunto com rotinas de bibliotecas

Page 20: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

20

Programação Paralela

Grades Computacionais Globus Toolkit

Condor OurGrid gLite

Page 21: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

21

Globus Toolkit

Data Mgmt

SecurityCommonRuntime

Execution Mgmt

Info Services

GridFTPAuthenticationAuthorization

ReliableFile

Transfer

Data Access& Integration

Grid ResourceAllocation &

ManagementIndex

CommunityAuthorization

DataReplication

CommunitySchedulingFramework

Delegation

ReplicaLocation

Trigger

Java Runtime

C Runtime

Python Runtime

WebMDS

WorkspaceManagement

Grid Telecontrol

Protocol

Globus Toolkit v4www.globus.org

CredentialMgmt

Page 22: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

22

Sistema Condor

Adaptable

Customizable

ResourceResource

Access ControlAccess Control

Match-MakingMatch-Making

Request AgentRequest Agent

Application RMApplication RM

ApplicationApplication

Con

dor

Resource OwnerResource Owner

SystemSystem AdministratorAdministrator

Customer/UserCustomer/User

Distributed

Scalable

Sistema Condor www.wisc.edu/condor

Page 23: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

23

Sistema Condor

Central Manager (Frieda’s)

master

collector

negotiator

schedd

startd

= ClassAd Communication Pathway

= Process Spawned

Desktop

schedd

startd

master

Desktop

schedd

startd

master

Cluster Node

master

startd

Cluster Node

master

startdSistema Condor

www.wisc.edu/condor

Page 24: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

24

Sistema Condor-G

Globus middleware deployed

across entire Grid remote access to

computational resources dependable, robust data

transfer

Condor job scheduling across

multiple resources strong fault tolerance with

checkpointing and migration

layered over Globus as “personal batch system” for the Grid

www.wisc.edu/condor

Page 25: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

25

Sistema Condor-G

www.wisc.edu/condor

Page 26: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

26

Sistema OurGrid

Aplicações Bag-of-Tasks (BoT) Compartilhamento de recursos peer-to-peer Principais componentes

OurGrid peer: Network of Favors mecanismo de alocação autônomo e totalmente descentralizado

MyGrid broker: escalonamento SWAN security service: máquina virtual de proteção

www.ourgrid.org

Page 27: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

27

Sistema OurGrid

www.ourgrid.org

Ourgrid

Page 28: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

28

gLite

Utiliza funções do Globus Estrutura: BDII, UI, RB, WN, CE, SE, IE Aplicações definidas utilizando JDL Middleware adotado pelo projeto de grid europeu (EGEE) Outros componentes:

AMGA LFC

API semelhante a de outros RMSs

www.ourgrid.org

Page 29: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

29

Desenvolvimento de Programas Paralelos

Page 30: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

30

Metodologia para Programação Paralela

Metodologia é (quase) independente da máquina

Estágios:

particionamento

comunicação

aglomeração

mapeamento

Page 31: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

31

Particionamento

Divisão da aplicação em tarefas em menores

Decomposição do domínio da aplicação

Objetivos aumentar:

concorrência

localidade de referência

Page 32: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

32

Comunicação

Troca de informações entre processos

Sincronização entre processos

Definir:

estruturas de dados e

algoritmos apropriados

Page 33: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

33

Aglomeração

Avaliação de requisitos de desempenho e custo

Objetivos se necessário:

combinar tarefas para reduzir custos de comunicação

tarefas maiores podem melhorar o desempenho, mesmo que diminua a concorrência

Page 34: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

34

Mapeamento

Cada tarefa é atribuída a um processador

Estático ou dinâmico

Objetivos:

maximizar a utilização dos processadores

minimizar os custos de comunicação

balanceamento de carga

Page 35: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

35

Metodologia para Programação Paralela

ProblemaParticionamento

Comunicação

Aglomeração

Mapeamento

Page 36: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

36

Métricas de Desempenho

Page 37: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

37

Métricas de Desempenho

Speedup = grau de melhora de desempenho

Eficiência = porção utilizada da capacidade

Redundância = aumento da carga qdo em p processadores

Utilização = utilização dos recursos durante computação

Qualidade = importância de utilizar processamento paralelo

Page 38: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

38

Métricas de Desempenho

Speedup s(p) = T(1) / T(p), onde T(1) = tempo do melhor algoritmo sequencial possível e

p = número de processadores

Eficiência e(p) = s / p = T(1) / (p T(p))

Redundância r(p) = O(p) / O(1), onde O(p) = número total de ops

em máquina com p processadores

Utilização u(p) = r(p) e(p) = O(p) / (p T(p))

Qualidade q(p) = (s(p) e(p)) / r(n) = T3(1) / (p T2(p) O(p))

Page 39: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

39

• Escalabilidade• Modelos de aplicações• Limites algorítmicos• Limites arquiteturais

Métricas de Desempenho

Page 40: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

40

• Carga fixa = máquinas maiores para computar + rápido

• Tempo fixo = máquinas maiores para problemas maiores

• Memória fixa = máquinas maiores para problemas que precisam de + memória

Modelos de Aplicações

Page 41: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

41

• Falta de paralelismo

• Freqüência de sincronização

• Padrão de comunicação/acesso

• Escalonamento deficiente

Limites Algorítmicos

Page 42: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

42

• Latência/banda de comunicação

• Latência/banda de E/S

• Overhead de sincronização

• Overhead de coerência

• Capacidade de memória

Limites Arquiteturais

Page 43: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

43

Métricas de Desempenho

Lei de Amdahl:

Speedup: s = T(1)/T(p)

Trabalho total: c = Ts + Tp = T(1)

T(p) = Ts + Tp/p

s = (Ts + Tp) / (Ts + Tp/p) = c / (Ts + Tp/p) s = c/Ts qdo p tende a infinito

Page 44: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

44

Métricas de Desempenho

Lei de Gustafson:

Tempo total: c = Ts + Tp

Trabalho total: t = Ts + Tp

Scaled Speedup ss = t / css = (Ts + p * Tp) / (Ts + Tp)

= (Ts + p * Tp) / c = (Ts + p * (c - Ts)) / c = p + (Ts * (1-p)) / c, linear em Ts

Page 45: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

45

Métricas de Desempenho

Speedup superlinear:

• Overhead reduzido (escalonamento, por exemplo)• Mais memória/cache• Tolerância a latência• Randomização (problemas de otimização) • Problemas que possuem múltiplas soluções

Page 46: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

46

Exemplos

Page 47: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

47

Modelo de Programação Seqüencial

Modelo mais simples

Paralelismo implementado pelo compilador ou software + básico

for i = 1 to N a[i] = 1

Paralelismo explorado pelo compilador (p.e.: F90, HPF ou runtime paralelo)

Page 48: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

48

Modelo de Programação Paralelo baseado em Memória Compartilhada

doall i = 1 to N a[i] = 1

for j = 1 to NPROCS-1 fork(compute,j)compute(0)

lock(mutex) x = x + 1unlock(mutex)

Page 49: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

49

Modelo de Programação Paralelo baseado em Troca de Mensagens

Proc pid: (N é o tamanho do problema)

chunk = N/NPROCSfor j = pid*chunk to (pid+1)*chunk-1 a[i] = 1send(dest,&a[pid*chunk],chunk*sizeof(int))

Page 50: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

50

Programando em MC

Page 51: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

51

Exemplo usando Posix threads (thread do_work)#include <pthread.h> #include <stdio.h> #include <stdlib.h> #define NTHREADS 4 #define ARRAYSIZE 1000000 #define ITERATIONS ARRAYSIZE / NTHREADS double sum=0.0, a[ARRAYSIZE]; pthread_mutex_t sum_mutex; void *do_work(void *tid) { int i, start, *mytid, end; double mysum=0.0; /* Initialize my part of the global array and keep local sum */ mytid = (int *) tid; start = (*mytid * ITERATIONS); end = start + ITERATIONS; printf ("Thread %d doing iterations %d to %d\n",*mytid,start,end-1); for (i=start; i < end ; i++) mysum = mysum + a[i]; /* Lock the mutex and update the global sum, then exit */ pthread_mutex_lock (&sum_mutex); sum = sum + mysum; pthread_mutex_unlock (&sum_mutex); pthread_exit(NULL);}

Page 52: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

52

Exemplo usando Posix threads (main thread)int main(int argc, char *argv[]) { int i, start, tids[NTHREADS]; pthread_t threads[NTHREADS]; /* Pthreads setup: initialize mutex. Pass each thread its loop offset */ pthread_mutex_init(&sum_mutex, NULL); for (i=0; i<NTHREADS; i++) { tids[i] = i; pthread_create(&threads[i], NULL, do_work, (void *) &tids[i]); } /* Wait for all threads to complete then print global sum */ for (i=0; i<NTHREADS; i++) { pthread_join(threads[i], NULL); } printf ("Done. Sum= %e \n", sum); sum=0.0; for (i=0;i<ARRAYSIZE;i++) sum = sum + a[i]; printf("Check Sum= %e\n",sum); /* Clean up and exit */ pthread_mutex_destroy(&sum_mutex); pthread_exit (NULL); }

Page 53: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

53

Exemplo usando Processos (cliente/servidor)#include <sys/ipc.h>#include <sys/shm.h>#define SHMSZ 27main() { char c, *shm, *s; int chave = 5678, shmid; shmid = shmget(chave, SHMSZ, (IPC_CREAT|0666)); shm = (char *) shmat(shmid, NULL, 0); s= shm; /* escreve info em memória */ for (c=’a’; c < =’z’; c++) *s++= c; *s = ’\0’; /* espera até que outro proc altere o 1o. char em memória */ while (*shm != ’*’) sleep(1); shmdt(shmid); /* liberta segmento */ exit(0);}

Page 54: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

54

Exemplo usando Processos (cliente/servidor)

#include <sys/ipc.h>#include <sys/shm.h>#define SHMSZ 27main(){ char c, *shm, *s; int chave= 5678, shmid; shmid= shmget(chave, SHMSZ, 0666); shm= (char *) shmat(shmid, NULL, 0); for (s=shm; *s!=’\0’; s++) /* lê da memória compartilhada*/ putchar(*s); putchar(’\n’); *shm=’*’; /* alterar o 1o. caracter em memória */ exit(0);}

Page 55: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

55

Exemplo usando OpenMP

PROGRAM HELLO

PRINT *, “Hello parallel world from threads:”

!$OMP PARALLEL

PRINT *, OMP_GET_THREAD_NUM ( )

!$OMP END PARALLEL

PRINT * , “Back to the sequential world.”

STOP

END

Page 56: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

56

Exemplo usando OpenMP: saída

Saída do programa HELLO

Hello parallel world from threads:

1

3

0

2 Back to the sequential world.

Page 57: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

57

Programando com Troca de Msgs usando MPI

Page 58: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

58

Exemplo: usando MPI#include <stdio.h>#include <string.h>#include "mpi.h"main(int argc, char* argv[]) { int my_rank; /* rank of process */ int p; /* number of processes */ int source; /* rank of sender */ int dest; /* rank of receiver */ int tag = 0; /* tag for messages */ char message[100]; /* storage for message */ MPI_Status status; /* return status for receive */ /* Start up MPI */ MPI_Init(&argc, &argv); /* Find out process rank */ MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); /* Find out number of processes */ MPI_Comm_size(MPI_COMM_WORLD, &p); if (my_rank != 0) { /* Create message */ sprintf(message, "Greetings from process %d!", my_rank); dest = 0; /* Use strlen+1 so that '\0' gets transmitted */ MPI_Send(message, strlen(message)+1, MPI_CHAR, dest, tag, MPI_COMM_WORLD); } else { /* my_rank == 0 */ for (source = 1; source < p; source++) { MPI_Recv(message, 100, MPI_CHAR, source, tag, MPI_COMM_WORLD, &status); printf("%s\n", message); } }

/* Shut down MPI */ MPI_Finalize();} /* main */

Page 59: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

59

• Computação sobre uma matriz• Grupo de linhas consecutivas para cada processador• Cada elemento calculado usando vizinhos• Comunicação nas bordas

Exemplo: SOR (Successive Over-Relaxation)

Page 60: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

60

•Usando modelo de memória compartilhada:for num_iters for num_minhas_linhas compute barreira

• Usando modelo de troca de mensagensdefine submatriz localfor num_iters if pid != 0 envia primeira linha a pid-1 recebe limite superior de pid-1 if pid != P-1 envia ultima linha a pid+1 recebe limite inferior de pid+1 for num_linhas compute

Exemplo: SOR (Successive Over-Relaxation)

P0

P1

P2

Page 61: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

61

Universe = standardExecutable = /u/dutra/Yap-4.3.20/condor/yap.$$(Arch).$$(OpSys)Initialdir = /u/dutra/new_experiments/Carcino/diffseeds/theories/x5x4/f5/123Log = /u/dutra/new_experiments/Carcino/diffseeds/theories/x5x4/f5/123/logRequirements = ((Arch == "INTEL" && OpSys == "LINUX") && (Mips >= 500) && Memory >= 400) || (Arch == "SUN4u" && OpSys == "SOLARIS28") || (IsDedicated && UidDomain == "cs.wisc.edu"))

Arguments = -b /u/dutra/Yap-4.3.20/condor/../pl/boot.yapInput = condor.in.$(Process)Output = /dev/nullError = /dev/null

Queue 300

Exemplo: Usando Condor (subm file)

Page 62: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

62

['/u/dutra/Yap-4.3.20/condor/../pl/init.yap'].module(user).['/u/dutra/new_experiments/Aleph/aleph.pl'].read_all('/u/dutra/new_experiments/Carcino/PL/x5x4/f5/123/train').set(i,5).set(minacc,0.7).set(clauselength,4).set(recordfile,'/u/dutra/new_experiments/Carcino/ diffseeds/theories/x5x4/f5/123/trace-0.7-4.0').set(test_pos,'/u/dutra/new_experiments/Carcino/PL/x5x4/f5/123/test.f').set(test_neg,'/u/dutra/new_experiments/Carcino/PL/x5x4/f5/123/test.n').set(evalfn,coverage).induce.write_rules('/u/dutra/new_experiments/Carcino/ diffseeds/theories/x5x4/f5/123/theory-0.7-4.0').halt.

Exemplo: Usando Condor (input file)

Page 63: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

63

Executable = "/home/SO/marluce/tmp/yap/condor/yap";InputSandbox = { "/home/SO/marluce/tmp/yap/condor/yap", "home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/*.pl", "home/SO/marluce/tmp/CondorBench//Aleph/aleph.pl", "home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/train.b", "home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/train.f", "home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/train.n", "home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/condor.in.0" };OutputSandbox = { "theory-0.9-5.0", "trace-0.9-5.0"};InputData = { "/home/SO/marluce/tmp/yap/condor/yap", "home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/*.pl", “ home/SO/marluce/tmp/CondorBench//Aleph/aleph.pl”, “home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/train.b”, “ home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/train.f”, “home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/train.n”, “home/SO/marluce/tmp/CondorBench//Carcino/diffseeds/theories/x5x4/f1/2/condor.in.0” };Arguments = "/home/SO/marluce/tmp/yap/condor/yap < home/SO/marluce/tmp/CondorBench/ Carcino/diffseeds/theories/x5x4/f1/2/condor.in.0";Requirements = "((Arch == "INTEL" && OpSys == "LINUX") && (Mips >= 500) && Memory >= 400)";StdInput = "condor.in.0";StdOutput = "/dev/null";StdError = "/dev/null";

Exemplo: Usando JDL

Page 64: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

64

DSM http://www.ics.uci.edu/~javid/dsm.html

TOP500 Supercomputers http://www.top500.org

Globus Toolkit http://www.globus.org/toolkit/

gLite http://glite.web.cern.ch/glite/

Condor http://www.wisc.edu/condor

OurGrid http://www.ourgrid.org

PVM http://www.csm.ornl.gov/pvm

MPI http://www.mpi-forum.org

OurGrid http://www.ourgrid.org

Projeto EGEE: http://www.egee.org

Projeto EELA: http://www.eu-eela.org

Global Grid Forum: http://www.ggf.org

Referências

Page 65: 1 Introdução à Computação Paralela e Ambientes de Grade Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt Inês de Castro.

65

Obrigada!!