Programação Paralela Avançada. N. Maillard - M. Cera

Tamanho: px
Começar a partir da página:

Download "Programação Paralela Avançada. N. Maillard - M. Cera"

Transcrição

1 Programação Paralela Avançada N. Maillard - M. Cera

2 Programação Paralela Avançada Introdução Geral 2

3 Programação Paralela é crítica 3

4 Programação Paralela é difícil Em nível conceitual + em nível técnico. 4

5 Não sub-estimar os usuários. Somos Especialistas e o Mundo precisa de Nós... Será? Vejam o caso do famoso físico que precisa acelerar seu código... Ou ele compra um PC 4-cores, usa OpenMP, e pronto. Ou ele tem R$ 1 M, compra um Cluster+ TODO O SUPORTE... E ele pagará o necessário para que funcione. MORAL: nos 2 casos, a paralelização simples JÁ terá sido feita. 5

6 Comparação com linguagem natural Aprender a escrever programas paralelos se compara com aprender uma linguagem estrangeira. Trabalha-se as técnicas básicas (sons, palavras simples...) Depois se trabalha o complicado (registros de língua...) Por fim, consegue-se atacar conceitos (poemas, literatura...) 6

7 Objetivo destes cursos Técnicas básicas (MPI e OpenMP) ver o cursos do Profs. Rebonnatto. Nós vamos apresentar técnicas avançadas Relacioná-las com conceitos de programação paralela. Relacioná-las com aplicações. 7

8 4 partes sobre MPI 1) Comunicações não-bloqueantes Conceito: efetuar comunicações durante os cálculos 2) Comunicadores Conceito: namespaces para comunicações globais 3) Tipos de dados do usuário Conceito: abstração dos dados 4) Spawn Conceito: paralelismo de tarefas 8

9 OpenMP Revisão de OMP básico A diretiva schedule() - Conceito: balanceamento de carga e localidade. OMP avançado (OpenMP 3.0) Conceito: paralelismo de tarefas. OMP + MPI Conceito: programação paralela híbrida Demonstrações 9

10 Comunicações não-bloqueantes 10

11 Conceito O conceito atrás da técnica é a cobertura (overlap) comunicações / cálculos Vejam Correios vs. Telefone: O telefonema necessita sincronização dos dois lados (Send/Recv normal) Enquanto uma carta está encaminhada, pode-se fazer outras coisas. 11

12 Send/Recv normal com MPI void main() { int p, r, tag = 103; MPI_Status stat; double val ; MPI_Init(&argc, &argv) ; MPI_Comm_rank(MPI_COMM_WORLD, &r); if (r==0) { printf("processor 0 sends a message to 1\n"); val = 3.14 ; MPI_Send(&val, 1, MPI_DOUBLE, 1, tag, MPI_COMM_WORLD); else { printf("processor 1 receives a message from 0\n"); MPI_Recv(&val, 1, MPI_DOUBLE, 0, tag, MPI_COMM_WORLD, &stat); printf( I received the value: %.2lf\n", valor); MPI_Finalize() ; 12

13 Send vs Isend, Recv vs. IRecv MPI_Recv(&x,...) é bloqueante. Quando se executa a próxima instrução, x já tem o valor correto MPI_Send(&x,...) é não-bloqueante Porém, x é bufferizado, e por isso a próxima instrução pode alterar x sem problema. Obs.: Send é não-bloqueante... Até estourar o buffer interno! Variações não-bloqueantes: MPI_Irecv() e MPI_Isend() Mesmos argumentos como Recv/Send, com um extra de tipo MPI_Request. O MPI_Request possibilita testar a finalização de comunicações não-bloqueantes. Existe também versões explicitamente bufferizadas do Send/Recv: MPI_Bsend(). 13

14 Testar e esperar por com. não bloqueantes MPI_Test(MPI_Request* req, int* flag, MPI_Status* stat) Seta flag a 0 ou 1, em função do termino da com nãobloqueante descrita por req. Deve-se testar flag depois... 'status' tem a mesma semântica como no Recv. Informa remetente e tag da mensagem. MPI_Wait(MPI_Request* req, MPI_Status* stat) Bloqueia até a comunicação não-bloqueante tenha terminado. MPI_Irecv seguido de MPI_Wait == MPI_Recv. 14

15 Testar e esperar por com. não bloqueantes Prática (muito) comum: sobreposição computação / comunicação Dispara uma comunicação não-bloqueante (e.g recv), (em um laço) executa todo o que se pode fazer sem ter recebido os dados, testando a recepção. Se o laço acabar, bloquea com Wait. Serve quando se pode executar um laço que leva tempo enquanto a comunicação inicial anda. 15

16 Irecv, Test e Wait em laços MPI_Request req; MPI_Status status; int flag; MPI_Irecv(&dado, /* vários parâmetros */, &req); while (! okay) { /* poderia ser qualquer outro tipo de laço */ MPI_Test(req, &chegou, &status); if (chegou) { /* faça o que deve fazer com 'dado' */ /* Faça qualquer outra coisa até 'okay' passar a valer 'true' */ /* Agora se precisa de 'dados' para valer MPI_Wait(req, &status); /* Bloqueia aqui! */ /* faça o que deve fazer com 'dado' */ 16

17 Desafio: como otimizar um mestre/escravo? Idéia 1: o mestre manda uma tarefa para um escravo e espera seu retorno. É uma forma original de escrever com MPI um programa sequencial... Idéia 2: o mestre manda uma tarefa para um escravo e espera o retorno de qualquer um deles. Já melhora muito... Usa o 'status' de MPI_Recv. Idéia 3: o mestre manda uma tarefa para cada escravo. Enquanto um retorno está vindo, ele processa tarefas também. Aí sim se obtém 100% do paralelismo! Obs: os escravos podem fazer a mesma coisa! 17

18 Time for a break MPI_Bcast( Intervalo - MERENDA! ); MPI_Wait( todo o mundo voltar ); 18

19 Comunicadores 19

20 Conceito: namespace Precisa-se: Evitar conflitos entre os nomes (de processos ou de mensagens), Particionar as comunicações entre os processos, Possibilitar comunicações coletivas entre sub-conjuntos de processos. Exemplo: s: pode-se mandar mails de pessoa-a-pessoa, ou entre grupo de pessoas, e pessoas podem pertencer a mais de um grupo. Como fazer isso no MPI? Como efetuar um Broadcast entre apenas parte dos processos que executam? 20

21 Processos MPI - grupos e comunicadores Cada processo tem um par (rank, grupo de processos) Comunicador é uma estrutura que define um grupo e um contexto Contexto = universo de comunicação MPI_Init MPI_COMM_WORLD Como faço para facilitar a programação de aplicações onde nem todos os processos precisam interagir? MPI_COMM_WORLD

22 Intracomunicadores e Intercomunicadores Intracomunicador mensagens dentro de um mesmo grupo local MPI_COMM_WORLD é um intracomunicador Intercomunicador mensagens entre um grupo local e remoto intercom intracom intracom2 2 22

23 Intracomunicadores e Intercomunicadores Comunicação local MPI_Send(&i, 1, MPI_INT, 2, tag, intracom1); MPI_Recv(&i, 1, MPI_INT, 0, tag, intracom1, &st); intercom intracom intracom2 2 23

24 Intracomunicadores e Intercomunicadores Comunicação local MPI_Send(&i, 1, MPI_INT, 2, tag, intracom1); MPI_Recv(&i, 1, MPI_INT, 0, tag, intracom1, &st); Comunicação entre grupo local e remoto MPI_Send(&j, 1, MPI_INT, 0, tag, intercom); MPI_Recv(&j, 1, MPI_INT, 0, tag, intercom, &st); intercom intracom intracom2 2 24

25 Manipulação de comunicadores MPI_COMM_SELF [0,3] Uso do MPI_Comm_split: particionamento de comunicadores Demonstração: código fonte + execução Manipulação de comunicadores MPI_Comm_split, MPI_Intercomm_create, MPI_Intercomm_merge Demonstração: código fonte + execução 25

26 Tipos de Dados do Usuário 26

27 Conceito: Estrutura de Dados Imaginem paralelizar com MPI o GoogleMaps necessita mandar (via rede) mapas, fotos, etc... Como mandar tais dados com o MPI? 27

28 Datatypes do MPI Os MPI Datatypes básicos para as comunicações são MPI_INT, MPI_FLOAT, MPI_CHAR, MPI_DOUBLE... Mais qualquer Linguagem de Programação sequencial provê tipos abstratos compostos (structs, union), ponteiros, etc... Como comunicar tipos de dados abstratos? Pode-se usar o método naive : 1) memcpy() toda a estrutura de dados num buffer de Bytes, 2) recupera seu tamanho e 3) manda-o como MPI_CHAR. Pouco elegante, e nem um pouco portável. Obs: no MPI, receber uma mensagem implica em conhecer seu tamanho. 28

29 1a solução mais elegante: MPI_Pack() Usa o MPI para empacotar os dados: MPI_Pack(void* inbuf, int count, MPI_Datatype dtype, void* outbuf, int outcount, int* position, MPI_Comm comm) Empacota os dados em inbuf (= count itens de tipo básico dtype ), retorna outbuf e atualiza position para outras chamadas a MPI_Pack(). Manda o buffer com tipo básico MPI_PACK: MPI_Send( outbuf, MPI_Pack_size( outbuf ), MPI_PACK,... ) Usa MPI_Unpack(... ) depois do MPI_Recv para desempacotar o buffer. 29

30 2a solução mais elegante Descreve ao MPI como serializar sua estrutura de dados. Efetua um commit para criar um novo MPI Data_type personalizado, Usa o Data_type como se fosse um Datatype MPI básico, nas mensagens. Exemplo: mandar uma struct de 2 campos: Usa-se MPI_Type_create_struct(2, VetorTam, VetorDesloc, VetorTipo, MPI_Datatype* meu_tipo), VetorTam: vetor de 2 entradas para indicar o número de entradas em cada campo, VetorDesloc: vetor de 2 entradas para indicar o endereço inicial de cada campo, VetorTipo: vetor de 2 entradas para indicar o tipo (básico) de cada campo, meu_tipo: novo Datatype retornado. Mais MPI_type_commit(). 30

31 Datatypes: vantagens e inconvenientes Pros: Evita a duplicação de cópias dos dados para mandá-los, Aumenta a portabilidade do código, Funciona bem para tipos compostos. Contras: Trabalhoso!!! Comparar com mecanismos de serialização automática de C# ou Java... Não resolve o caso de ponteiros. 31

32 Fim do 1o. encontro Nicolas Maillard: Márcia C. Cera: 32

33 Resumo da Obra 33

34 Lembrando as técnicas já apresentadas Comunicações não bloqueantes Sobreposição comunicações/cálculos Comunicadores Definindo namespaces para comunicação Tipos de dados do usuário Abstração dos dados (estruturas de dados) Aplicações reais mesclam essas técnicas para prover um melhor desempenho e utilização das arquiteturas paralelas 34

35 Criação Dinâmica de Processos 35

36 Processos dinâmicos Em tempo de execução, um processo pode lançar a criação de outro Modelo de execução dinâmico Processos podem ser criados conforme a demanda da aplicação Norma MPI-2: Modelo SPMD MPMD Possibilita a implementação de novas classes de aplicações Maleáveis: capazes de se adaptar a dinamicidade de recursos Evolutivas: capazes de se adaptar a irregularidade de sua carga de trabalho Paralelismo de Tarefas (Task Parallelism) 36

37 Processos dinâmicos Cada processo possui seu intracomunicador O processo que dispara a criação é chamado de pai O processo(s) criado(s) é(são) o(s) filho(s) Comunicação entre pai e filhos acontece através de um intercomunicador Do lado do pai: MPI_Comm_spawn Do lado do(s) filho(s): MPI_Comm_get_parent

38 Criando processos dinâmicos int MPI_Comm_spawn( char *command, --> nome do binário do novo processo char *argv[], --> argumentos para o novo processo int maxprocs, --> número de processos a serem criados MPI_Info info, --> informações para runtime system int root, --> identificador do processo pai MPI_Comm comm, --> intracomunicador do processo pai MPI_Comm *intercomm, --> intercomunicador: pai e filho int array_of_errcodes[] --> vetor de erros ) Demonstração: pai-filho com troca de mensagens 38

39 Exemplificando Cálculo do i-ésimo elemento da sequência de Fibonacci (0, 1, 1, 2, 3, 5, 8, 13, 21,...) Um elemento é a soma de seus 2 antecessores Algoritmo Sequencial: int fib (int n){ if (n < 2) return n; else{ int x, y; x = fib (n - 1); y = fib (n 2); return (x + y); Ex: 4-ésimo elemento: fib(4)= fib(3)= fib(2)= + + +fib(1)=1 fib(0)=0 fib(1)=1 fib(2)= + fib(1) fib(0) Demonstração: Fibonacci com processos dinâmicos 39

40 Exemplificando fib(4) fib(3) fib(2) fib(1) fib(2) fib(1) fib(1) fib(0) Ex: 4-ésimo elemento: fib(4)= fib(3)= fib(2)= + + +fib(1)=1 fib(0)=0 fib(1)=1 fib(2)= + fib(1) fib(0) fib(0) 40

41 Exemplificando fib(4) fib(3) fib(2) 1 fib(2) fib(1) fib(1) fib(0) Ex: 4-ésimo elemento: fib(4)= fib(3)= fib(2)= + + +fib(1)=1 fib(0)=0 fib(1)=1 fib(2)= + fib(1) fib(0) 0 41

42 Exemplificando fib(4) fib(3) 1 fib(2) Ex: 4-ésimo elemento: fib(4)= fib(3)= fib(2)= + + +fib(1)=1 fib(0)=0 fib(1)=1 fib(2)= + fib(1) fib(0) 42

43 Exemplificando fib(4) 2 1 Ex: 4-ésimo elemento: fib(4)= fib(3)= fib(2)= + + +fib(1)=1 fib(0)=0 fib(1)=1 fib(2)= + fib(1) fib(0) 43

44 Exemplificando 3 Ex: 4-ésimo elemento: fib(4)= fib(3)= fib(2)= + + +fib(1)=1 fib(0)=0 fib(1)=1 fib(2)= + fib(1) fib(0) 44

45 Estabelecendo Comunicação Comunicações seguindo a relação Cliente/Servidor 45

46 Concluindo apresentação do MPI MPI é o padrão para programação com troca de mensagens É largamente utilizado no desenvolvimento de aplicações de Alto Desempenho O padrão prevê diversas técnicas avançadas objetivando ganhos de desempenho, dentre elas nós apresentamos nesse curso: Comunicações não-bloqueantes Manipulação de Comunicadores Definição de Tipos de Dados Criação dinâmica de processos Desenvolver programas MPI eficientes não é uma tarefa trivial; Ela está diretamente relacionada ao conhecimento e domínio de técnicas e conceitos do MPI 46

47 Memória Compartilhada - OpenMP 47

48 Noções Básicas de OpenMP OpenMP Open Multi-processing Consórcio de fabricantes: Intel, IBM, Sum,... Suportada em compiladores: Intel, gcc,... É um padrão que define A forma como os cálculos serão distribuídos entre A forma como os dados serão replicados ou compartilhados As sincronizações Programação baseada em pragmas e rotinas providas pela biblioteca OpenMP Número de threads: OMP_NUM_THREADS ou omp_set_num_threads(int n) Demonstração: Olá mundo e como estruturar um programa OpenMP 48

49 Noções Básicas de OpenMP Distribuição dos cálculos e dos dados Cláusula shared(x, y,...) : acesso compartilhado entre as threads Cláusula private(x, y,...): cria réplicas das variáveis para cada fluxo variáveis locais de um bloco parallel são automaticamente privadas Demonstrações: entendendo variáveis compartilhadas e privadas 49

50 Noções Básicas de OpenMP Distribuição dos cálculos Sections Exemplo: Considere um programa que calcula operações sobre as N entradas de um vetor dados[10000] #pragma omp sections { #pragma omp section { Compute(0, N, dados) #pragma omp section { Compute(1, N, dados) #pragma omp section { Compute(2, N, dados) #pragma omp section { Compute(3, N, dados) Compute(int index, int N, int dados) { Int start, end, i; Start = index * N/4 + 1; End = (index + 1) * N/4; // efetua cálculos sobre suas N/4 // entradas do vetor dados 50

51 Paralelismo de Laços # pragma omp parallel for for (i = 0; i < n; i++){ c[i] = a[i] + b[i]; Fluxo Mestre Região Sequencial F O R K J O I N Região Paralela Demonstração: exemplo de paralelismo de laços Restrições de acesso: int fator = 0.5 #pragma omp parallel for private( fator ) for (i = 0; i < N; i++){ c[i] = fator * a[i]; #pragma omp parallel for private( j ) for (i = 0; i < N; i++){ for(j = 0; j < N; j++){ c[i] = a[i] + b[j]; *firstprivate, lastprivate 51

52 Paralelismo de Laços Por exemplo: N = 14 iterações P = 3 threads 52

53 Paralelismo de Laços Thread Thread Thread 2 Divisão das iterações em blocos + localidade Iterações com carga irregular 53

54 Paralelismo de Laços Thread Thread Thread 2 Alocação cíclica Round Robin + - Balanceamento de carga Perdeu-se a localidade 54

55 Paralelismo de Laços Thread Thread 1 Thread 2 Alocação por blocos cíclicos + Meio termo entre Balanceamento de carga e Localidade 55

56 Paralelismo de Laços Thread Thread 1 Thread 2 Alocação por blocos cíclicos! Tamanho dos Blocos 56

57 Paralelismo de Laços Distribuição das iterações do laço - schedule(tipo[, chunk]): static: chunk com valor estático pré-determinado dynamic: chunk depende da quantidade restante de iterações guided: mescla dos anteriores A forma como a distribuição das iterações serão distribuídas influencia diretamente na granularidade do trabalho das threads Iterações com tempos diferentes Bloco maior == melhor localidade espacial; Bloco menor == melhor balanceamento de carga. 57

58 Intervalo Nos vemos às 16 horas para o encerramento deste minicurso: OpenMP Avançado Paralelização de um laço while Paralelismo de tarefas no OpenMP 3.0 Mesclando OpenMP e MPI visando clusters multi-core Considerações finais 58

59 OMP Avançado 59

60 Paralelizar um while () int main() { int tid, i; { tid = omp_get_thread_num(); i = next_indice(); while (i!= -1) { calculo(tid,i); i = next_indice(); int indice=0; int next_indice() { int res; { if (indice == N) res = -1; else res = ++indice; return(res); Como paralelizar este laço while com OpenMP? 60

61 Paralelizar um while () int main() { int tid, i; #pragma omp parallel private(tid,i) { tid = omp_get_thread_num(); i = next_indice(); while (i!= -1) { calculo(tid,i); i = next_indice(); int indice=0; int next_indice() { int res; { if (indice == N) res = -1; else res = ++indice; return(res); Como paralelizar este laço while com OpenMP? 61

62 Paralelizar um while () int main() { int tid, i; #pragma omp parallel private(tid,i) { tid = omp_get_thread_num(); i = next_indice(); while (i!= -1) { calculo(tid,i); i = next_indice(); int indice=0; int next_indice() { int res; { if (indice == N) res = -1; else res = ++indice; return(res); PROBLEMA de acesso concorrente a next_indice() 62

63 Paralelizar um while () int main() { int tid, i; #pragma omp parallel private(tid,i) { tid = omp_get_thread_num(); i = next_indice(); while (i!= -1) { calculo(tid,i); i = next_indice(); int indice=0; int next_indice() { int res; #pragma omp critical { if (indice == N) res = -1; else res = ++indice; return(res); PROBLEMA resolvido. 63

64 OpenMP 3.0 OpenMP 3 introduz uma nova forma de paralelização: o paralelismo de tarefas ver Spawn com MPI. Apropriado para algoritmos recursivos. Uma tarefa OpenMP é definida pelo pragma #pragma omp task Pode-se sincronizar as tarefas com um #pragma omp taskwait int fib ( int n ) { int x,y; if ( n < 2 ) return n; x = fib(n-1); y = fib(n-2); return x+y; int fib ( int n ) { int x,y; if ( n < 2 ) return n; #pragma omp task shared(x) x = fib(n-1); #pragma omp task shared(y) y = fib(n-2); #pragma omp taskwait return x+y; 64

65 De novo o while(), com OpenMP3 Construção típica do while() com uma pilha... No caso, usa-se uma pilha para varrer uma árvore binária em profundidade. stack_t pilha = init_pilha(); node_t node, root = init_tree(); push(pilha, root); while (! is_empty(pilha) ) { node = pop(pilha); if (is_leaf(node)) compute(node); else { push(pilha, node->right); push(pilha, node->left); 65

66 De novo o while(), com OpenMP3 Construção típica do while() com uma pilha... No caso, usa-se uma pilha para varrer uma árvore binária em profundidade. stack_t pilha = init_pilha(); node_t node, root = init_tree(); push(pilha, root); while (! is_empty(pilha) ) { node = pop(pilha); if (is_leaf(node)) #pragma omp task compute(node); else { push(pilha, node->right); push(pilha, node->left); 66

67 De novo o while(), com OpenMP3 Construção típica do while() com uma pilha... No caso, usa-se uma pilha para varrer uma árvore binária em profundidade. stack_t pilha = init_pilha(); node_t node, root = init_tree(); push(pilha, root); while (! is_empty(pilha) ) { node = pop(pilha); if (is_leaf(node)) #pragma omp task compute(node); else { push(pilha, node->right); push(pilha, node->left); Cuidado!!! Funciona se compute não introduz efeito colateral. Não se garante mais a ordem de cálculos sobre os nós. 67

68 OpenMP + MPI 68

69 Programação Híbrida Fazer o que para um cluster de multicores? Usar o MPI e disparar um processo por core? Opção interessante MPI como API de programação paralela? Usar um OpenMP que emule uma memória compartilhada? (see Intel). Fator 10x a pagar... Usar MPI junto com OpenMP? É técnico... 69

70 Um exemplo: decomposição de domínios Simula-se um fenômeno físico num dominío espacial (2D, 3D). A paralelização implica no recorte em subdomínios. A simulação itera (no tempo) a resolução de sistemas de equações para cada domínio, Há troca de informações a respeito das bordas. 70

71 Exemplo: HOMB Resolve uma equação de Laplace. Domínio 2D Uso de: Paralelismo MPI entre os domínios (com Irecv/Isend...) Paralelismo OpenMP no cálculo interno a cada domínio. O cálculo envolve 2 laços aninhados. Observar o uso de critical para calcular a norma. 71

72 Conclusão Geral 72

73 O que vimos? Message Passing Interface uso avançado. Programas reais usam dados complexos, precisam de dinamicidade / balanceamento de carga, executam com 10K processos, etc. OpenMP do paralelismo de laços a paralelismo de tarefas. Programação recursiva, granularidade fina. Usar os dois juntos para arquiteturas híbridas Shared + Distributed memory. 73

74 What's wrong? O grande problema é o nível de tecnicidade necessitado! Leva tempo, Leva a bugs, Difícil de portar... Comparar com programação sequencial! C vs. Java... 74

75 Precisa-se de avanços em programação parelela Precisa-se de abstrações maiores para: Que o programador não deva pensar na arquitetura, Que o programador possa definir facilmente o grau máximo de paralelismo, Que o middleware de execução mapeia facilmente as (pequenas) tarefas nas unidades de execução providas pelo hardware. Existem ferramentas recentes, ou de pesquisa, indo neste rumo Intel TBB, por exemplo. Para memória distribuída, ainda tem pouca coisa. O aumento de cores, e a necessidade de Rede-On-Chip, vai levar a dever atacar este problema nos anos que vêm. 75

76 Márcia Cristina Cera, Nicolas Maillard {mccera, Adaptive Programming of Parallel, Grupo de Processamento Paralelo e Distribuído Hybrid Architectures UFRGS

Programação Paralela com Troca de Mensagens. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Programação Paralela com Troca de Mensagens. Profa Andréa Schwertner Charão DLSC/CT/UFSM Programação Paralela com Troca de Mensagens Profa Andréa Schwertner Charão DLSC/CT/UFSM Sumário Modelo de programa MPI Comunicação em MPI Comunicadores Mensagens Comunicação ponto-a-ponto Comunicação coletiva

Leia mais

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Passagem de Mensagens Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI/LMCC - 4º/5º Ano Passagem de Mensagens João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Novembro 2004 Passagem

Leia mais

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE

Parte da Tarefa. Parte da Tarefa. Parte da Tarefa SEND RECEIVE SEND RECEIVE Produto Escalar com MPI-2 (C++) Aula Sistemas Distribuídos Prof. Dr. Marcelo Facio Palin profpalin@gmail.com 1 1 O que é Paralelismo? Conceitos Paralelismo é uma técnica usada em tarefas grandes e complexas

Leia mais

Programação Paralela e Distribuída (DCC/UFRJ)

Programação Paralela e Distribuída (DCC/UFRJ) Programação Paralela e Distribuída (DCC/UFRJ) Aula 7: Programação com memória compartilhada usando OpenMP 1, 8, 10 e 15 de abril de 2015 OpenMP (Open MultiProcessing) Projetado para sistemas de memória

Leia mais

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens Roteiro... Conceitos de SD, vantagens e desvantagens Infra-estrutura de um SD Considerações de projeto Sistemas Distribuídos Aula 4 Karine de Pinho Peralta Modelos de Comunicação - comunicação entre processos

Leia mais

Arquitetura de Computadores Sistemas Operacionais II

Arquitetura de Computadores Sistemas Operacionais II Definição de Processo Arquitetura de Computadores Sistemas Operacionais II Processo é o mesmo de Programa? Programa Estrutura estática Instruções + Dados Processo Entidade Ativa Instância de um Programa

Leia mais

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto Lógica de Programação Profas. Simone Campos Camargo e Janete Ferreira Biazotto O curso Técnico em Informática É o profissional que desenvolve e opera sistemas, aplicações, interfaces gráficas; monta estruturas

Leia mais

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06 Disciplina: Linguagem de Programação C Profª Viviane Todt Diverio Funções, variáveis, parâmetros formais

Leia mais

Programação Paralela. Simone de Lima Martins Agosto/2002

Programação Paralela. Simone de Lima Martins Agosto/2002 Programação Paralela Simone de Lima Martins Agosto/2002 Computação por Passagem de Mensagens Arquitetura de computadores que utilizam passagem de mensagens Computadores conectados por uma rede estática

Leia mais

Introdução à orientação a objetos

Introdução à orientação a objetos Universidade Federal de Juiz de Fora PET Elétrica Introdução à orientação a objetos Tutor: Francisco José Gomes Aluno: João Tito Almeida Vianna 18/05/2013 1 Programação Estruturada x Orientação a objetos

Leia mais

Conteúdo programático

Conteúdo programático Introdução à Linguagem C Conteúdo programático Introdução à Linguagem C Estrutura de Programas Variáveis, Constantes Operadores, Entrada e Saída de Dados Estruturas de Desvio Estrutura de Múltipla Escolha

Leia mais

Fundamentos de Programação. Diagrama de blocos

Fundamentos de Programação. Diagrama de blocos Fundamentos de Programação Diagrama de blocos Prof. M.Sc.: João Paulo Q. dos Santos E-mail: joao.queiroz@ifrn.edu.br Página: http://docente.ifrn.edu.br/joaoqueiroz/ O processo de desenvolvimento (programação),

Leia mais

Sobre o Visual C++ 2010

Sobre o Visual C++ 2010 O Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software, suportando diversas linguagens como C#, C++, C, Java, Visual Basic, etc. Nesta série de tutoriais vou focar apenas

Leia mais

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real: Introdução a Orientação a Objetos com Java Autor: Professor Victor Augusto Zago Menegusso. Orientação a Objetos É um paradigma de programação que define a estrutura de um programa baseado nos conceitos

Leia mais

Simulado de Linguagem de Programação Java

Simulado de Linguagem de Programação Java Simulado de Linguagem de Programação Java 1. Descreva o processo de criação de programas em Java, desde a criação do código-fonte até a obtenção do resultado esperado, por meio de sua execução. Cite as

Leia mais

Controle de granularidade de tarefas em OpenMP

Controle de granularidade de tarefas em OpenMP UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO MÁRCIO DE OLIVEIRA DA SILVA Controle de granularidade de tarefas em OpenMP Trabalho de Conclusão

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Introdução Slide 1 Nielsen C. Damasceno Introdução Tanenbaum (2007) definiu que um sistema distribuído é aquele que se apresenta aos seus usuários como um sistema centralizado, mas

Leia mais

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados Prof. Hugo Souza Após vermos uma breve contextualização sobre esquemas para bases dados e aprendermos

Leia mais

Informática I. Aula 19. http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/06/06 1

Informática I. Aula 19. http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/06/06 1 Informática I Aula 19 http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/06/06 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação

Leia mais

Método de ordenação - objetivos:

Método de ordenação - objetivos: Método de ordenação - objetivos: Corresponde ao processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. Facilitar a recuperação posterior de itens do conjunto ordenado. São

Leia mais

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar

Leia mais

Curso de Informática DCC-IM / UFRJ. Gabriel P. Silva MPI

Curso de Informática DCC-IM / UFRJ. Gabriel P. Silva MPI Curso de Informática DCC-IM / UFRJ MPI Um curso prático Gabriel P. Silva MPI É um padrão de troca de mensagens portátil que facilita o desenvolvimento de aplicações paralelas. Usa o paradigma de programação

Leia mais

Algoritmos APRENDENDO A PROGRAMAR COM C#

Algoritmos APRENDENDO A PROGRAMAR COM C# Algoritmos APRENDENDO A PROGRAMAR COM C# Alô Mundo AULA 01 Conhecendo o ambiente O objetivo principal desse programa não é mostrar a mensagem Alo Mundo. O objetivo é apresentar o ambiente de desenvolvimento

Leia mais

Sistemas Distribuídos Capítulo 4 - Aula 5

Sistemas Distribuídos Capítulo 4 - Aula 5 Sistemas Distribuídos Capítulo 4 - Aula 5 Aula Passada Clusters de Servidores Migração de Código Comunicação (Cap. 4) Aula de hoje Chamada de Procedimento Remoto - RPC Fundamentos 1 Chamada de Procedimento

Leia mais

MANUAL DO INSTALADOR XD EM AMBIENTES MICROSOFT WINDOWS

MANUAL DO INSTALADOR XD EM AMBIENTES MICROSOFT WINDOWS MANUAL DO INSTALADOR XD EM AMBIENTES MICROSOFT WINDOWS Está disponível a partir da versão 2014.73 do XD Rest/Pos/Disco um novo formato no instalador em ambientes Microsoft Windows. O instalador passa a

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Tipos de comunicação Middleware: serviço intermediário na comunicação de nível de aplicação. Fig. 67 Ex.: correio eletrônico Comunicação é persistente. Middleware

Leia mais

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão Árvores 1 Árvores! utilizada em muitas aplicações! modela uma hierarquia entre elementos! árvore genealógica! diagrama hierárquico de uma organização! modelagem de algoritmos! O conceito de árvores está

Leia mais

Introdução à Programação de Computadores Parte I

Introdução à Programação de Computadores Parte I Introdução à Programação de Computadores Parte I Prof. Dr. Edson Pimentel Centro de Matemática, Computação e Cognição Objetivos Compreender os componentes básicos de um programa... Objetivos Bacharelado

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Comunicação em Grupo Referência Sistemas operacionais modernos Andrew S. TANENBAUM Prentice-Hall, 1995 Seção 10.4 pág. 304-311 2 Comunicação em Grupo Suponha que se deseja um serviço de arquivos único

Leia mais

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira.

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira. Acordo Financeiro Produto : RM - Totvs Gestão Financeira 12.1.1 Processo : Acordo Financeiro Subprocesso : Template de Acordo Controle de Alçada Negociação Online Data da publicação : 29 / 10 / 2012 Os

Leia mais

OpenMP. Mestrado em Ciência da Computação Introdução ao Processamento Paralelo e Distribuído Prof. Dr. Adenauer Corrêa Yamin Mestranda: Nelsi Warken

OpenMP. Mestrado em Ciência da Computação Introdução ao Processamento Paralelo e Distribuído Prof. Dr. Adenauer Corrêa Yamin Mestranda: Nelsi Warken OpenMP Mestrado em Ciência da Computação Introdução ao Processamento Paralelo e Distribuído Prof. Dr. Adenauer Corrêa Yamin Mestranda: Nelsi Warken Sumário 1. Introdução 2. História 3. Motivação 4. Objetivos

Leia mais

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0 COMPUTAÇÃO PARALELA uma visão geral Guilherme Galante v.2.0 Guilherme Galante Bacharel em Informática Unioeste (2003) Mestre em Ciência da Computação UFRGS (2006) Professor Assistente do curso de Informática/Ciência

Leia mais

Criando scanner para dectar BackupExec vulneráveis ao exploit do Metasploit. Inj3cti0n P4ck3t

Criando scanner para dectar BackupExec vulneráveis ao exploit do Metasploit. Inj3cti0n P4ck3t Criando scanner para dectar BackupExec vulneráveis ao exploit do Metasploit Inj3cti0n P4ck3t São Paulo 2010 Author: Inj3cti0n P4ck3t Date: 18/10/10 Nome do Artigo: Criando scanner para dectar BackupExec

Leia mais

Programação de Computadores I. Linguagem C Função

Programação de Computadores I. Linguagem C Função Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,

Leia mais

Microprocessadores. Memórias

Microprocessadores. Memórias s António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt Arquitectura de Microcomputador Modelo de Von Neumann Barramento de Endereços µprocessador Entrada/Saída Barramento

Leia mais

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays

Leia mais

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa Comunicação entre Processos por Troca de Mensagens Prof. Celso maciel da Costa Troca de Mensagens Com memória compartilhada: os processo compartilham variáveis e trocam informações através do uso de variáveis

Leia mais

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 9 Tipos Abstratos de Dados (c) Dept. Informática - PUC-Rio 1 Tópicos Módulos e compilação em separado Tipo abstrato de dados Exemplo 1: TAD Ponto Exemplo 2: TAD Círculo Exemplo 3:

Leia mais

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios O Método Intuitivo de elaboração de circuitos: As técnicas de elaboração de circuitos eletropneumáticos fazem parte

Leia mais

Guia operação site www.atu.com.br

Guia operação site www.atu.com.br Guia operação site www.atu.com.br OBS: as telas no site bem como no sistema de gestão poderão sofrer alguma alteração, com base nos exemplos ilustrativos deste manual. 1. Objetivo Este guia tem como objetivo

Leia mais

Algoritmos e Programação II

Algoritmos e Programação II Algoritmos e Programação II Agenda Desenvolver Software Objetos Classes Estudo de algumas Classes da API Estudo de algumas Classes da API Pacotes Criando nossa primeira classe Desenvolver SOFTWARE GAP

Leia mais

Redes de Computadores

Redes de Computadores Nível de rede Inst tituto de Info ormátic ca - UF FRGS Redes de Computadores Nível de rede Aula 6 Aplicação Apresentação Sessão Transporte Rede Enlace Físico Protocolo nível de aplicação Protocolo nível

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 2 Princípios de Programação Prof. Belarmino Linguagem de Computadores Internamente os computadores usam instruções e armazenam os dados no formato numérico binário

Leia mais

ENGENHARIA DE SOFTWARE

ENGENHARIA DE SOFTWARE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Curso Técnico em Informática : ENGENHARIA DE SOFTWARE Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br Um conjunto estruturado

Leia mais

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações Prof. Fernando Augusto Teixeira 1 Agenda da Disciplina Certificado Digital e suas aplicações Segurança Criptografia Simétrica Criptografia

Leia mais

Departamento de Informática - PUC-Rio INF 1005 Programação I P1 22/09/2010 Nota

Departamento de Informática - PUC-Rio INF 1005 Programação I P1 22/09/2010 Nota P1 22/09/2010 Matrícula: Turma: Questão 1) (3,5 pontos) O Índice de Desenvolvimento Humano (IDH) é uma medida do bemestar de uma população. Engloba três dimensões: educação (E), longevidade (L) e a riqueza

Leia mais

Conceitos básicos sobre computadores

Conceitos básicos sobre computadores SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Conceitos básicos sobre computadores Prof. Vanderlei Bonato: vbonato@icmc.usp.br Sumário O que é um computador e onde podemos encontrá-los? Divisão:

Leia mais

Apontamento técnico No. 5, Fevereiro de 2014 Como pedir apoio através do Ajuda Online do CAICC

Apontamento técnico No. 5, Fevereiro de 2014 Como pedir apoio através do Ajuda Online do CAICC Apontamento técnico No. 5, Fevereiro de 2014 Como pedir apoio através do Ajuda Online do CAICC Sumário Enquadramento... 1 1. Introdução... 1 1º Passo: Como aceder o Ajuda Online?... 2 2º Passo: Página

Leia mais

Programação em Memória Compartilhada com OpenMP

Programação em Memória Compartilhada com OpenMP Programação em Memória Compartilhada com OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br

Leia mais

Engenharia de Software II

Engenharia de Software II Engenharia de Software II Aula 26 http://www.ic.uff.br/~bianca/engsoft2/ Aula 26-21/07/2006 1 Ementa Processos de desenvolvimento de software Estratégias e técnicas de teste de software Métricas para software

Leia mais

Relatório do Trabalho de Conclusão de Curso Curso de Ciência da Computação

Relatório do Trabalho de Conclusão de Curso Curso de Ciência da Computação UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA Relatório do Trabalho de Conclusão de Curso Curso de Ciência da Computação Compilação de código C/MPI para C/Pthreads Diego Francisco

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Aula 7 Programação Genética M.e Guylerme Velasco Programação Genética De que modo computadores podem resolver problemas, sem que tenham que ser explicitamente programados para isso?

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores Sistemas Operacionais Sincronização: Semáforos Problema dos Leitores/Escritores Autoria Autores Eduardo André Mallmann 0905/96-9 João Paulo Reginatto 1530/96-0 Local Instituto de Informática UFRGS disciplina:

Leia mais

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização Hardware: Componentes Básicos Arquitetura dos Computadores Dispositivos de Entrada Processamento Dispositivos de Saída Armazenamento Marco Antonio Montebello Júnior marco.antonio@aes.edu.br Sistema de

Leia mais

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1 Conceito Básicos de Programação com Objetos Distribuídos Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1 Autoria Autor C. Geyer Local Instituto de Informática UFRGS disciplina : Programação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Introdução Comunicação em Sistemas Distribuídos Introdução: Comunicação em Sistemas Distribuídos

Leia mais

Experiência 04: Comandos para testes e identificação do computador na rede.

Experiência 04: Comandos para testes e identificação do computador na rede. ( ) Prova ( ) Prova Semestral ( ) Exercícios ( ) Prova Modular ( ) Segunda Chamada ( ) Exame Final ( ) Prática de Laboratório ( ) Aproveitamento Extraordinário de Estudos Nota: Disciplina: Turma: Aluno

Leia mais

Introdução ao. Script. Baltazar Tavares (Psycho Mantys) https://psychomantys.wordpress.com https://about.me/psycho_mantys

Introdução ao. Script. Baltazar Tavares (Psycho Mantys) https://psychomantys.wordpress.com https://about.me/psycho_mantys Introdução ao Script Baltazar Tavares (Psycho Mantys) https://psychomantys.wordpress.com https://about.me/psycho_mantys O que é Bash Script? O que é Bash + Script? O que é Bash? O que é Bash? Ele é um

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 1 Motivação e Introdução Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet

Leia mais

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access CRIAÇÃO DE TABELAS NO ACCESS Criação de Tabelas no Access Sumário Conceitos / Autores chave... 3 1. Introdução... 4 2. Criação de um Banco de Dados... 4 3. Criação de Tabelas... 6 4. Vinculação de tabelas...

Leia mais

Scheduling and Task Allocation ADVANCED COMPUTER ARCHITECTURE AND PARALLEL PROCESSING Hesham El-Rewini 2005 Capítulo 10 Autor...: Antonio Edson Ceccon Professor..: Prof. Heitor Silvério Lopes Apresentação

Leia mais

tipo e tamanho e com os "mesmos" elementos do vetor A, ou seja, B[i] = A[i].

tipo e tamanho e com os mesmos elementos do vetor A, ou seja, B[i] = A[i]. INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA SUL-RIO- GRANDENSE CAMPUS SAPUCAIA DO SUL PROFESSOR: RICARDO LUIS DOS SANTOS EXERCÍCIO DE REVISÃO E FIXAÇÃO DE CONTEÚDO - ARRAYS 1. Criar um vetor A

Leia mais

DK105 GROVE. Temperatura e Umidade. Radiuino

DK105 GROVE. Temperatura e Umidade. Radiuino DK105 GROVE Temperatura e Umidade Radiuino O presente projeto visa mostrar uma básica aplicação com o Kit DK 105 Grove. Utilizamos um sensor de umidade e temperatura Grove juntamente ao nó sensor para

Leia mais

Curso C: Ponteiros e Arrays

Curso C: Ponteiros e Arrays Universidade de Brasília Departamento de Ciência da Computação Curso C: Ponteiros e Arrays Prof. Ricardo Pezzuol Jacobi rjacobi@cic.unb.br Ponteiros um ponteiro Ž uma vari vel que contžm o endere o um

Leia mais

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados I Variáveis Indexadas Pedro O.S. Vaz de Melo Por que índices são importantes? Como uma loja de sapatos artesanais deve guardar os seus produtos? 1 2 3 4 Tamanhos entre

Leia mais

Organização de Computadores 1

Organização de Computadores 1 Organização de Computadores 1 3.1 CPU: Unidade de Processamento Central Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Unidade de Processamento Central (CPU): Memória Principal Unidade de Processamento

Leia mais

O que é um banco de dados? Banco de Dados. Banco de dados

O que é um banco de dados? Banco de Dados. Banco de dados COLÉGIO EST. JOÃO MANOEL MONDRONE - ENS. FUNDAMENTAL, MÉDIO, PROFISSIONAL E NORMAL Rua Mato Grosso n.2233 - Fone/Fax (045) 3264-1749-3264-1507 Banco de Dados O que é um banco de dados? Um conjunto de informações

Leia mais

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória Prof. Jesús P. Mena-Chalco 1Q-2016 1 Cloud9 Crie uma conta no c9.io Apenas é requerido criar uma área (máquina

Leia mais

Ambientes de troca de mensagens - MPI. Aleardo Manacero Jr.

Ambientes de troca de mensagens - MPI. Aleardo Manacero Jr. Ambientes de troca de mensagens - MPI Aleardo Manacero Jr. Ambientes de troca de mensagens Como já mencionado, os chamados ambientes de troca de mensagens aparecem para facilitar a programação paralela

Leia mais

Metodologias de PETI. Prof. Marlon Marcon

Metodologias de PETI. Prof. Marlon Marcon Metodologias de PETI Prof. Marlon Marcon PETI O PETI é composto de: Planejamento Estratégico da organização, que combina os objetivos e recursos da organização com seus mercados em processo de transformação

Leia mais

BC-0505 Processamento da Informação

BC-0505 Processamento da Informação BC-0505 Processamento da Informação 0.Declarar Variáveis/ Atributos (Armazenar Dados) 1.Entrada de Dados (Obter dados = Leitura) double raio = 0; double area = 0; double PI = 3.14159; 2.Processamento (=

Leia mais

MANUAL HAE - WEB MANUAL WEB HAE

MANUAL HAE - WEB MANUAL WEB HAE MANUAL HAE - WEB MANUAL WEB HAE PROJETO HAE - WEB www.cpscetec.com.br/hae *NÃO DEVERÃO ser lançados os projetos de Coordenação de Curso, Responsável por Laboratório, Coordenação de Projetos Responsável

Leia mais

django-pagseguro Documentation

django-pagseguro Documentation django-pagseguro Documentation Release 1.4.2 Fábio Cerqueira February 11, 2015 Contents 1 Tutorial django-pagseguro 3 1.1 Instalação................................................. 3 1.2 Configurando

Leia mais

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases) MDS II Aula 04 Concepção Requisitos Diagrama de Casos de Uso (Use Cases) 55 DIAGRAMA DE CASOS DE USO BENEFÍCIOS DOS CASOS DE USO ILUSTRAR POR QUE O SISTEMA É NECESSÁRIO OS REQUISITOS DO SISTEMA SÃO COLOCADOS

Leia mais

SISTEMA CAÇA-TALENTOS MANUAL DE OPERAÇÃO PERFIL SECRETARIA

SISTEMA CAÇA-TALENTOS MANUAL DE OPERAÇÃO PERFIL SECRETARIA SISTEMA CAÇA-TALENTOS MANUAL DE OPERAÇÃO PERFIL SECRETARIA O Sistema Caça-Talentos tem o objetivo de aprimorar o negócio e fornecer um controle informatizado dos processos de captação dos alunos. Ele possui

Leia mais

Registro de Retenções Tributárias e Pagamentos

Registro de Retenções Tributárias e Pagamentos SISTEMA DE GESTÃO DE PRESTAÇÃO DE CONTAS (SiGPC) CONTAS ONLINE Registro de Retenções Tributárias e Pagamentos Atualização: 20/12/2012 A necessidade de registrar despesas em que há retenção tributária é

Leia mais

Manual de Programação TED1000 versão TC100 Ethernet

Manual de Programação TED1000 versão TC100 Ethernet Manual de Programação TED1000 versão TC100 Ethernet Indice: Configurações iniciais...2 Configuração de IP...2 Teclas especiais...2 Cabo de rede...2 Programação...3 Abrindo a comunicação (abreip)...3 Enviando

Leia mais

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback Programação Orientada a Objetos Professor Leonardo Cabral - Larback Programação Orientada a Objetos O termo Programação Orientada a Objetos (POO) foi criado por Alan Kay (http://pt.wikipedia.org/wiki/alan_kay),

Leia mais

Promoção Comunicação

Promoção Comunicação Promoção Comunicação 1 Propaganda, Promoção de Vendas e Publicidade 2 3 Mix de Comunicação de Marketing ou Mix de Promoção Consiste em uma composição de instrumentos de comunicação como propaganda, venda

Leia mais

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009 Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009 Ao desenvolver os seguintes programas tenha em atenção o bom uso dos comentários, o uso da indentação e o correcto nome

Leia mais

Banco de Dados I. Prof. Edson Thizon ethizon@bol.com.br

Banco de Dados I. Prof. Edson Thizon ethizon@bol.com.br Banco de Dados I Prof. Edson Thizon ethizon@bol.com.br Conceitos Dados Fatos conhecidos que podem ser registrados e que possuem significado implícito Banco de dados (BD) Conjunto de dados interrelacionados

Leia mais

Arquitetura de Aplicações J2EE. Jorge Fernandes Outubro de 2003

Arquitetura de Aplicações J2EE. Jorge Fernandes Outubro de 2003 Arquitetura de Aplicações J2EE Jorge Fernandes Outubro de 2003 J2EE O que é Como se organiza Como funciona Elementos Arquitetura Típica Componentes de Software Reuso é um processo Publicar interfaces Distribuir

Leia mais

Paralelização de Simuladores de Hardware Descritos em SystemC

Paralelização de Simuladores de Hardware Descritos em SystemC Paralelização de Simuladores de Hardware Descritos em SystemC 18 de maio de 2011 Roteiro Motivação Introdução à SLDL SystemC O Escalonador SystemC Simulação Paralela baseada em Eventos Discretos Suporte

Leia mais

ÁREA DO PROFESSOR (TUTOR)

ÁREA DO PROFESSOR (TUTOR) ÁREA DO PROFESSOR (TUTOR) O MOODLE (Modular Object Oriented Dynamic Learning Environment) é um Ambiente Virtual de Ensino-Aprendizagem (AVEA) de código aberto, livre e gratuito que se mantém em desenvolvimento

Leia mais

Tutorial de utilização do Sistema de Abertura de Chamado Sumário

Tutorial de utilização do Sistema de Abertura de Chamado Sumário Tutorial de utilização do Sistema de Abertura de Chamado Sumário 1. Processo de atendimento...2 1.1. Porque abrir um chamado...2 1.2. Entendendo o processo de atendimento...2 1.3. Acessando o sistema...3

Leia mais

Banco de Dados. Banco de Dados Parte 2. Alcides Pamplona alcides.pamplona@gmail.com. Alcides Pamplona Linguagem de Programação CESBD 2010

Banco de Dados. Banco de Dados Parte 2. Alcides Pamplona alcides.pamplona@gmail.com. Alcides Pamplona Linguagem de Programação CESBD 2010 Alcides Pamplona Linguagem de Programação CESBD 2010 Parte 2 Alcides Pamplona alcides.pamplona@gmail.com Tópicos API JDBC Utilizando JDBC Statement PreparedStatement Controle de Transação Mapeamento Objeto-Relacional

Leia mais

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

SISTEMA OPERACIONAL - ANDROID

SISTEMA OPERACIONAL - ANDROID Manual do Usuário SISTEMA OPERACIONAL - ANDROID 1 1 Índice 1 Índice... 2 2 Introdução Protegido... 3 3 Instalação do APLICATIVO DOS PAIS... 4 3.1 Local de instalação do Filho Protegido... 5 3.2 Tela de

Leia mais

aplicação arquivo Condições Gerais de Utilização

aplicação arquivo Condições Gerais de Utilização aplicação arquivo Condições Gerais de Utilização Manual das condições gerais que regulam a utilização dos serviços disponibilizados pela aplicação Arquivo, plataforma de gestão de informação, do Municipio

Leia mais

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS ESTUDO DE CASO I Uma das operações oferecidas pelos sistemas bancários para seus clientes é a emissão de extratos da conta corrente ou do cartão de crédito. Esses relatórios permitem que o cliente possa

Leia mais

Organização e Arquitetura de Computadores. Ivan Saraiva Silva

Organização e Arquitetura de Computadores. Ivan Saraiva Silva Organização e Arquitetura de Computadores Hierarquia de Memória Ivan Saraiva Silva Hierarquia de Memória A Organização de Memória em um computador é feita de forma hierárquica Registradores, Cache Memória

Leia mais

Trabalhando com Mala Direta e Etiquetas de Endereçamento no BrOffice/LibreOffice

Trabalhando com Mala Direta e Etiquetas de Endereçamento no BrOffice/LibreOffice Departamento de Tecnologia da Informação Divisão de Relacionamento e Gestão do Conhecimento Trabalhando com Mala Direta e Etiquetas de Endereçamento no BrOffice/LibreOffice Criação de Etiquetas passo a

Leia mais