Exercício de MPI Relatório do Trabalho

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

Download "Exercício de MPI Relatório do Trabalho"

Transcrição

1 PUC-Rio Programação Concorrente e Paralela Exercício de MPI Relatório do Trabalho Danilo Moret Professora: Noemi Rodriguez

2 Enunciado Leiam os capítulos 7 e 8 do livro Parallel Programming in C with MPI and OpenMP do Michael J. Quinn e resolvam o último exercício (8.12) do capítulo 8. O programa gerado deve ser executado no cluster da PUC em até 8 máquinas. A entrega do trabalho inclui, alem do código, um pequeno relatorio indicando os passos que seguiram para montar o programa e os resultados experimentais obtidos. Exercício 8.12: A binary search tree is a way of organizing n keys from a linearly ordered set to ensure their retrieval in ʘ(log n) time. If we know the probability of each key being accessed, we can create an optimal binary search tree that minimizes the average search time (Figure 8.21). Figure 8.22 (código equivalente da figura encontra-se no anexo) is a C program implementing a dynamic algorithm to find an optimal binary search tree, given a set of n probabilities. The program is adapted from pseudo-code in Baase and Van Gelder [5]; consult their textbook for more details on the algorithm. Use the partitioning-communication-agglomeration-mapping design methodology to implement a parallel version of this program. (Hint: You need to find an agglomeration that will allow multiple processes to be computing concurrently.) Preparação O código fonte da figura 8.22 foi digitado e compilado de forma tradicional em uma máquina Ubuntu usando o gcc versão Foram feitas pequenas alterações de estilo no programa e ele foi testado passando os dados por pipe na linha de comando do Linux. Foi identificado um problema com pipes muito grandes, e o modo de entrada foi alterado para passar a ler de um arquivo ao invés de pela entrada no console. O formato do arquivo obedece o estilo de entrada inicial: o valor da primeira linha deve ser um inteiro indicando quantas entradas são esperadas, em seguida é feita a entrada de um valor no formato float por linha. Para gerar a entrada aleatoriamente foi criado um pequeno script Lua. A montagem do programa partiu da adaptação do algoritmo inicial. Houveram dificuldades na escolha de qual particionamento usar: a primeira estratégia pensada foi em dividir o processamento para ser feito por diagonais, onde cada processo tomaria uma diagonal da tabela de custos do algoritmo dinâmico para calcular e passaria o valor da célula calculada para o próximo processo.

3 cost Valores dados Processo 1 Processo 2 Processo 3 Exemplo de particionamento em diagonal com 3 processos e entrada tamanho 8 Este particionamento apresentou dificuldades de implementação na fase de comunicação: o processo precisa de todas as células abaixo e à esquerda da célula que ele está calculando, e estas não estariam todas com o processo corrente nem o responsável pela diagonal abaixo. Ele precisaria portanto receber duas comunicações do processo responsável pela diagonal abaixo, uma com a linha e outra com a coluna. cost Valores dados Valores dependidos Célula atual Dependência de valores para cálculo de uma célula Outro particionamento foi tentado. Neste cada processo ficou responsável por preencher uma coluna da matriz de custos, de baixo para cima da matriz. A cada vez que ele precisasse dos valores à esquerda ele aguardaria a comunicação do processo responsável pela coluna anterior. Os processos tomariam as colunas ordenadamente conforme seus IDs, revezando-se a cada np processos.

4 cost Valores dados Processo 1 Processo 2 Processo 3 Exemplo de particionamento por colunas com 3 processos e entrada tamanho 8 Este particionamento foi implementado com sucesso. A cada célula calculada o processo envia de forma assíncrona para o processo responsável pela próxima coluna (o processo com o próximo ID) a linha inteira que ele acabou de calcular. Assim ele garante que está passando os valores já recebidos de outros processos. Os valores da coluna são calculados pelo próprio processo, sem precisar recebe-los de outros para prosseguir. Experimento e resultados O programa foi executado no cluster da PUC variando o tamanho da entrada e o número de processos usados. A bateria de testes foi executada via script, e o tempo tomado foi usando a ferramenta time do próprio sistema operacional. Portanto os tempos de execução são os tempos reais da execução completa do programa, incluindo a leitura do arquivo e a transmissão inicial entre os processos. Como a leitura do arquivo só é executada pelo processo raiz independente do número de processos, e os arquivos tem no máximo poucos kb, o impacto nos resultados é pequeno. O crescimento do tamanho da entrada resulta em um crescimento exponencial da tabela no algoritmo dinâmico, e os resultados foram comparados nos gráficos e tabelas abaixo com um valor de referência que seguia uma função proporcional ao quadrado da entrada. Já o comportamento conforme a quantidade de processos variava era o principal ponto a ser estudado, buscando em que ponto a carga extra gerada pela comunicação entre os processos iria sobrepujar a vantagem de se ter vários processos executando ao mesmo tempo. Pelos resultados, a diferença entre os tempos de execução não foi linear ou abaixo, como esperado. Na média, dado todos os tamanhos de entrada, a execução com 2 processos levou 2,51 vezes mais tempo que a execução com 4 processos, e a execução com 4 processos levou 3,7 vezes mais tempo que a execução com 8 processos. Isto pode evidenciar o Efeito de Amdahl, descrito no livro de onde o exercício foi retirado: o tempo ganho na execução em paralelo aumenta quanto maior é o tamanho da entrada. De fato, quando se analisam somente parte dos resultados - conforme visto na segunda tabela e gráfico - correspondentes a valores de entradas menores, a aceleração é de 3,09 de 2 para 4 processos, e de 1,35 de 4 para 8 processos. Ainda assim a razão do tempo de execução não estar diminuindo somente na proporção de novos processos não está totalmente clara.

5 Resultados dos experimentos (número de processos por tamanho da entrada, resultados em segundos, comparados com curva n e n²) np = 2 0,518 0,68 0,919 1,379 2,479 4,779 9, ,3 100,54 181,68 277,24 np = 4 0,529 0,62 0,68 0,78 0,94 1,25 2 6,15 15,41 37,72 75,01 123,8 np = 8 0,56 0,629 0,639 0,72 0,759 0,86 1,04 1,98 2,7 7,57 17,88 36,17 ~n 0, , , , , , , , ~n² 0, , , , ,5 83, , , , Série completa comparada 300 Tempo de execução (s) np = 2 np = 4 np = 8 ~n ~n² Tamanho do array de entrada

6 Subconjunto dos resultados dos experimentos (número de processos por tamanho da entrada, resultados em segundos, comparados com curva n e n²) np = 2 np = ,68 0,919 1,379 2,479 4,779 9,13 0,62 0,68 0,78 0,94 1,25 2 0,629 0,639 0,72 0,759 0,86 1,04 np = 8 ~n 0, , , ,5 1, ~n² 0, ,2 1, , ,7 3, Série de teste para entradas de tamanho entre 50 e 100 Tempo de execução (s) np = 2 np = 4 np = 8 ~n ~n² Tamanho do array de entrada

7 Implementações Código fonte equivalente a figura 8.22 (arquivo searchtree.c) #include <stdio.h> #include <stdlib.h> #include <float.h> void matrixalloc(void ***a, int m, int n, int size) { int i, j; void *memory; memory = (void *) malloc (m*n*size); *a = (void **) malloc (m * sizeof(void *)); for (i = 0; i < m; i++) { (*a)[i] = memory + (i * n * size); void treeoutput(int **root, int low, int high) { printf("tree: %d - %d; root: %d\n", low, high, root[low][high + 1]); if (low < root[low][high + 1] - 1) treeoutput(root, low, root[low][high + 1] - 1); if (root[low][high + 1] < high - 1) treeoutput(root, root[low][high + 1] + 1, high); int main(int argc, char *argv[]) { float bestcost, rcost, tempcost; int n, r, i, j, high, low, bestroot; int **root; float **cost; float *p; FILE *input; input = fopen(argv[1], "r"); fscanf(input, "%d\n", &n); p = (float *) malloc (n * sizeof(float)); for (i = 0; i < n; i++) { fscanf(input, "%f\n", &p[i]); fclose(input); matrixalloc((void ***) &cost, n + 1, n + 1, sizeof(float)); matrixalloc((void ***) &root, n + 1, n + 1, sizeof(int)); for (low = n; low >= 0; low--) { cost[low][low] = 0; root[low][low] = low; for (high = low + 1; high <= n; high++) { bestcost = FLT_MAX; tempcost = 0; for (j = low; j < high; j++) { tempcost += p[j];

8 for (r = low; r < high; r++) { rcost = tempcost + cost[low][r] + cost[r + 1][high]; if (rcost < bestcost) { bestcost = rcost; bestroot = r; cost[low][high] = bestcost; root[low][high] = bestroot; treeoutput(root, 0, n - 1); Código fonte final (arquivo mpi-obst.c) #include <stdio.h> #include <stdlib.h> #include <float.h> #include "mpi.h" void matrixalloc(void ***a, int m, int n, int size) { int i, j; void *memory; memory = (void *) malloc (m*n*size); *a = (void **) malloc (m * sizeof(void *)); for (i = 0; i < m; i++) { (*a)[i] = memory + (i * n * size); void treeoutput(int **root, int low, int high) { printf("tree: %d - %d; root: %d\n", low, high, root[low][high + 1]); if (low < root[low][high + 1] - 1) treeoutput(root, low, root[low][high + 1] - 1); if (root[low][high + 1] < high - 1) treeoutput(root, root[low][high + 1] + 1, high); int main(int argc, char *argv[]) { MPI_Status status; MPI_Request request; int n, i, x, y, pid, np, leftpid, rightpid, bestroot; float *a; float basecost, bestcost, localcost; float **costs; int **roots; FILE *input; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &pid); MPI_Comm_size(MPI_COMM_WORLD, &np); // Process zero reads how many inputs and the probabilities array if (pid == 0) { input = fopen(argv[1], "r"); fscanf(input, "%d\n", &n);

9 a = (float *) malloc (n * sizeof(float)); for (i = 0; i < n; i++) { fscanf(input, "%f\n", &a[i]); fclose(input); // Broadcast size and probabilities array to all processes MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (pid!= 0) { a = (float *) malloc (n * sizeof(float)); MPI_Bcast(a, n, MPI_FLOAT, 0, MPI_COMM_WORLD); matrixalloc((void ***) &costs, n + 1, n + 1, sizeof(float)); matrixalloc((void ***) &roots, n + 1, n + 1, sizeof(int)); // Filling base cells on all processes for (i = 0; i < n; i++) { costs[i][i] = 0; roots[i][i] = i; costs[i][i + 1] = a[i]; roots[i][i + 1] = i; costs[n][n] = 0; roots[n][n] = n; // Each process gets a column, rotating for (y = pid + 2; y < n + 1; y = y + np) { // Each column is searched from bottom up for (x = y - 2; x >= 0; x--) { leftpid = (pid + np - 1) % np; rightpid = (pid + 1) % np; // If the value to the left of current cell is not available, wait // for it (and the whole line) from the previous process if (x < y - 2) { MPI_Recv(costs[x], n + 1, MPI_FLOAT, leftpid, x, MPI_COMM_WORLD, &status); MPI_Recv(roots[x], n + 1, MPI_INT, leftpid, x, MPI_COMM_WORLD, &status); // The algorithm itself basecost = 0; bestcost = FLT_MAX; for (i = x; i < y; i++) { basecost = basecost + a[i]; for (i = x; i < y; i++) { localcost = costs[x][i] + costs[i + 1][y] + basecost; if (localcost < bestcost) { bestcost = localcost; bestroot = i;

10 costs[x][y] = bestcost; roots[x][y] = bestroot; // If there's a column to the right, send the whole line to the next // process if (y < n) { MPI_Isend(costs[x], n + 1, MPI_FLOAT, rightpid, x, MPI_COMM_WORLD, &request); MPI_Isend(roots[x], n + 1, MPI_INT, rightpid, x, MPI_COMM_WORLD, &request); // Prints the output on the process responsible for the rightmost column if (pid == (n - 2) % np) { treeoutput(roots, 0, n - 1); MPI_Finalize(); return 0; Código fonte do gerador de entradas aleatórias (random-table.lua) local size = arg[1] print(size) for i = 1, size do print(math.random()) end

EXERCÍCIO 1 MUDANDO AS CORES

EXERCÍCIO 1 MUDANDO AS CORES EXERCÍCIO 1 MUDANDO AS CORES O código abaixo ilustra o uso da comunicação ponto-a-ponto e a comunicação coletiva. Nesse código, uma matriz de três cores (verde, branco, vermelho e) é distribuída para todos

Leia mais

QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI

QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TÉCNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO QUEBRA DE SENHAS MD5 UTILIZANDO MDCRACK E MPI Cicero Augusto de Lara Pahins, Cristiano Reis dos Santos. Professora:

Leia mais

Sistemas Distribuídos Message-Passing

Sistemas Distribuídos Message-Passing 0010010101011101010111100010111100010101010100100111001010001001010100101010100010010100101010110101010101 01100000011111101010010100010101010010010101101001000100101010111010101111000101111 101010101001001110010100010010101001010101000100101001010101101010101010110000001111110101001010001010101001001010110100100010010

Leia mais

Jorge Barbosa, FEUP-DEI 2008

Jorge Barbosa, FEUP-DEI 2008 Técnicas para paralelização de aplicações Jorge Barbosa, FEUP-DEI 2008 Índice Introdução Técnicas de paralelização de aplicações Nível 1: Usando código sequencial Nível 2: Alteração mínima de código sequencial

Leia mais

Indexação e Busca. O objetivo deste trabalho é projetar e implementar um sistema de programas para indexação e busca em arquivos de texto.

Indexação e Busca. O objetivo deste trabalho é projetar e implementar um sistema de programas para indexação e busca em arquivos de texto. Universidade Federal do Espírito Santo Departamento de Informática Estruturas de Dados 2017/1 Profa. Claudine Badue Trabalho 2 1. Objetivo Indexação e Busca O objetivo deste trabalho é projetar e implementar

Leia mais

Algoritmos Paralelos usando CGM/MPI. Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP Aula 05

Algoritmos Paralelos usando CGM/MPI. Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP Aula 05 Algoritmos Paralelos usando CGM/MPI Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP Aula 05 Algoritmos Paralelos BSP/CGM Objetivos Descrever algumas das principais técnicas para o desenvolvimento

Leia mais

Cálculo da árvore binária de busca ótima usando MPI

Cálculo da árvore binária de busca ótima usando MPI Cálculo da árvore binária de busca ótima usando MPI 1. O Algoritmo Adriano Medeiros 1, André Murbach Maidl 1 1 Programação Concorrente/Paralela - PUC-Rio 1 adrimedeiros1@gmail.com, andremm@gmail.com O

Leia mais

Message Passing Interface - MPI. Jorge Barbosa

Message Passing Interface - MPI. Jorge Barbosa Message Passing Interface - MPI Jorge Barbosa Introdução ao MPI Até ao fim dos anos 80, os fabricantes de computadores desenvolviam a sua própria biblioteca de funções para desenvolver programas paralelos.

Leia mais

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

Árvore Binária de Busca Ótima - Uma Implementação Distribuída

Árvore Binária de Busca Ótima - Uma Implementação Distribuída Árvore Binária de Busca Ótima - Uma Implementação Distribuída Felipe Reis e Caio Valentim Departamento de Informática PUC-Rio 7 de novembro de 2010 1 Introdução O problema de encontrar a árvore binária

Leia mais

Introdução. Programação Paralela. Motivação. Conhecimento do Hardware. Análise de Desempenho. Modelagem do Problema

Introdução. Programação Paralela. Motivação. Conhecimento do Hardware. Análise de Desempenho. Modelagem do Problema Introdução Programação Paralela Profa Mariana Kolberg e Prof. Luiz Gustavo Fernandes Programação paralela é a divisão de um problema em partes, de maneira que essas partes possam ser executadas paralelamente

Leia mais

Programação Paralela. Profa Mariana Kolberg e Prof. Luiz Gustavo Fernandes

Programação Paralela. Profa Mariana Kolberg e Prof. Luiz Gustavo Fernandes Programação Paralela Profa Mariana Kolberg e Prof. Luiz Gustavo Fernandes Introdução Programação paralela é a divisão de um problema em partes, de maneira que essas partes possam ser executadas paralelamente

Leia mais

apt-get install openssh-client (Debian) yum install openssh-clents (Fedora) slapt-get install openssh (Slackware)

apt-get install openssh-client (Debian) yum install openssh-clents (Fedora) slapt-get install openssh (Slackware) Capítulo 1 O CLUSTER Acessando o Cluster O cluster pode ser acessado através de SSH. A partir do *UNIX A maioria dps sistemas unix já oferece um cliente ssh (openssh) na instalação padrão. Caso use uma

Leia mais

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio Laboratório de Programação Paralela Introdução Prof. Carlos Bazilio Motivação Máquinas paralelas eram arquiteturas raras antigamente Este quadro se modificou por, pelo menos, 2 razões: Barateamento dos

Leia mais

Por que dez milhões de cores?

Por que dez milhões de cores? O primeiro passo para programar dez milhões de cores Álvaro Fazenda Denise Stringhini ICT-UNIFESP São José dos Campos ERAD-SP 2016 Por que dez milhões de cores? 192 top500.org (junho/2016) E o Brasil no

Leia mais

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 11 Gestão de Memória Dinâmica

Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre. T. 11 Gestão de Memória Dinâmica Programação Mestrado Integrado em Engenharia Aeronáutica 1º ano, 1º semestre T. 11 Gestão de Memória Dinâmica 1 Sumário : Utilização de memória Alocação Estática de Memória Alocação Dinâmica de Memória

Leia mais

Programação. Cap. 12 Gestão de Memória Dinâmica

Programação. Cap. 12 Gestão de Memória Dinâmica Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 12 Gestão de Memória Dinâmica Sumário : Utilização de memória Alocação

Leia mais

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de

Leia mais

Curso de Programação C em Ambientes Linux Aula 05

Curso de Programação C em Ambientes Linux Aula 05 Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo

Leia mais

CAP-387(2016) Tópicos Especiais em

CAP-387(2016) Tópicos Especiais em CAP-387(2016) Tópicos Especiais em Computação Aplicada: Construção de Aplicações Massivamente Paralelas Aula 44: MPI IO Celso L. Mendes, Stephan Stephany LAC / INPE Emails: celso.mendes@inpe.br, stephan.stephany@inpe.br

Leia mais

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos

Leia mais

Introdução à Lógica de Programação

Introdução à Lógica de Programação Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação Programação Tradução de um algoritmo para uma linguagem de programação Cada linguagem de programação possui sua sintaxe

Leia mais

1. Impl 2. Impl 3. Impl 4. Impl Tempo (s) 29,75s 29,85s 168,77s 30,59s Acréscimo em relação a 1. 0,35% 467,36% 2,82% Tabela 5.1: Primeira abordagem

1. Impl 2. Impl 3. Impl 4. Impl Tempo (s) 29,75s 29,85s 168,77s 30,59s Acréscimo em relação a 1. 0,35% 467,36% 2,82% Tabela 5.1: Primeira abordagem 5 Aplicações Neste capítulo relatamos algumas experiências que realizamos com o LuaCharm. Em primeiro lugar, descrevemos implementações distintas de um problema clássico, para medir o impacto de desempenho

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito

Leia mais

MPI (Message Passing Interface)

MPI (Message Passing Interface) MPI (Message Passing Interface) Standard desenvolvido por académicos e indústria. Define rotinas, não a implementação. Não define como se criam os processos (depende da implementação) Existem várias implementações

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Arquivos Copyright 2014 IFRN Agenda Conceito Tipos de arquivos Texto Binário Stream Principais funções Exemplos

Leia mais

INF 1620 P1-18/09/04 Questão 1 Nome:

INF 1620 P1-18/09/04 Questão 1 Nome: INF 1620 P1-18/09/04 Questão 1 Considerando a definição da série harmônica abaixo: H n =1+ 1 2 + 1 3 + 1 4 + 1 5 + K+ 1 n (a) Escreva uma função que calcule o valor de H n dado o número de termos da série

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

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Gerenciamento de Memória Copyright 2014 IFRN Agenda Introdução Alocação dinâmica Funções malloc free calloc realloc

Leia mais

TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI

TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI Anais do Conic-Semesp. Volume 1, 2013 - Faculdade Anhanguera de Campinas - Unidade 3. ISSN 2357-8904 TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI CATEGORIA: CONCLUÍDO ÁREA:

Leia mais

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS

ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais. Prof. Luiz Fernando Laguardia Campos FMS ENGENHARIA DE PRODUÇÃO PROGRAMAÇÃO Algoritmos Conceitos Iniciais Prof. Luiz Fernando Laguardia Campos FMS lflcampos@machadosobrinho.com.br Compilação/Interpretação Um compilador ao receber como entrada

Leia mais

Criação de Processos Fork( ) Exec( )

Criação de Processos Fork( ) Exec( ) Criação de Processos Fork( ) Exec( ) 8/23/18 1 Chamadas de Sistema: Process Management 2 Chamada fork( ) / exec( ) 3 Esboço de uma shell while (TRUE) { /* repeat forever */ type_prompt( ); /* display prompt

Leia mais

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Motivação para o uso da linguagem C Entendendo Estrutura de Dados Revisão da Linguagem C Tipos primitivos Vetores

Leia mais

Relatório Trabalho 1 Programação Paralela

Relatório Trabalho 1 Programação Paralela Relatório Trabalho 1 Programação Paralela Gustavo Rissetti 1 Rodrigo Exterckötter Tjäder 1 1 Acadêmicos do Curso de Ciência da Computação Universidade Federal de Santa Maria (UFSM) {rissetti,tjader@inf.ufsm.br

Leia mais

Aula 5 Computação Distribuída de Alto Desempenho

Aula 5 Computação Distribuída de Alto Desempenho CBPF Centro Brasileiro de Pesquisas Físicas Aula 5 Computação Distribuída de Alto Desempenho Marcelo Portes de Albuquerque Nilton Alves Marcelo Giovanni Rio de Janeiro 17 a 28 de julho de 2006 Sumário

Leia mais

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Argumentos da linha de comando Funções recursivas Programação 2010/2011 DEEC-IST Arg. da linha de comando;

Leia mais

PCC104 Projeto e Análise de Algoritmos

PCC104 Projeto e Análise de Algoritmos PCC104 Projeto e Análise de Algoritmos Joubert de Castro Lima joubertlima@gmail.com Professor Adjunto DECOM UFOP 2010/1 Figuras retiradas do livro Introduction to parallel Computing Programar em paralelo

Leia mais

Comunicação orientada a mensagens

Comunicação orientada a mensagens Comunicação orientada a mensagens críticas a RPC sincronismo modelo um a um dificuldades de tratamento de falhas Þ volta ao modelo de troca de mensagens com diferentes níveis de abstração Sistemas de mensagens

Leia mais

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza ESTRUTURAS CONDICIONAIS Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais

Leia mais

Aula 18: Funções em C

Aula 18: Funções em C Aula 18: Funções em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Funções em C Programação de Computadores IV 1 / 38 Agenda 1 Revisão e Contexto

Leia mais

Aula 21 Ordenação externa

Aula 21 Ordenação externa MC3305 Algoritmos e Estruturas de Dados II Aula 21 Ordenação externa Slides adaptados de Brian Cooper (Yahoo Research) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Números de Ackermann

Leia mais

Message Passing Interface - MPI

Message Passing Interface - MPI Message Passing Interface - Pedro de Botelho Marcos Maio/2008 1 Sumário Introdução; Conceitos básicos; Comunicação; Principais rotinas; Compilando e executando códigos ; Exemplos; Referências; 2 Introdução

Leia mais

4 MDP. void média e dp(int a[],int n,float em,float ed) 7. Variáveis auxiliares 7. Faça ed igual ao desvio padrão 6 }

4 MDP. void média e dp(int a[],int n,float em,float ed) 7. Variáveis auxiliares 7. Faça ed igual ao desvio padrão 6 } 1 MDP INTRODUCÃO 1 1. Introducão. Esta é uma demonstração do sistema CWEB (veja http://www.ime.usp.br/~pf/ CWEB/) de Knuth e Levy. Um programa CWEB, como este que você está lendo, é uma espécie de jogo

Leia mais

prim = A ; prim = &A[0];

prim = A ; prim = &A[0]; 57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro

Leia mais

Instituto Superior Técnico Algoritmos e Estruturas de Dados

Instituto Superior Técnico Algoritmos e Estruturas de Dados Instituto Superior Técnico Algoritmos e Estruturas de Dados Ano Lectivo de 2005/2006 2 o Semestre 1 o Teste A - 8 de Abril de 2006 Duração: 2h - O teste é sem consulta. - Para cada questão com escolha

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Argumentos da linha de comando Exemplos Recursividade de funções Exemplos

Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Sumário Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Programação 2007/2008 DEEC-IST 1 Argumentos da linha de comando Motivação: Nas aulas de laboratório foi utilizado o compilador

Leia mais

Estruturas de dados compostas

Estruturas de dados compostas 1 Estruturas de dados compostas Vimos estruturas lineares simples : Vetores, listas ligadas, strings Consideramos agora estruturas compostas : Vetores de vetores (em particular, matrizes), vetores de listas

Leia mais

Sistemas de Operação (2018/2019) Teste de Auto-Avaliação Prática

Sistemas de Operação (2018/2019) Teste de Auto-Avaliação Prática Sistemas de Operação (2018/2019) Teste de Auto-Avaliação Prática (duração 1 hora) Resolva as 3 questões que se seguem da forma mais independente possível, evitando consultar a Internet ou os materiais

Leia mais

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Bravas shield sample app 2017

Bravas shield sample app 2017 Funcionamento A aplicação exemplo executa a leitura de duas entradas digitais da Shield Bravas e escreve nas saídas a relé da seguinte forma: Entrada digital 1 ativa: Reles são acionados, um a um, do relé

Leia mais

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 1 o Teste A - 12 de Abril de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Funções

Algoritmos e Estruturas de Dados I (DCC/003) Funções Algoritmos e Estruturas de Dados I (DCC/003) Funções Funções Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada, e definem um valor de saída

Leia mais

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza

ESTRUTURAS CONDICIONAIS. Introdução à Ciência da ComputaçãoI Simone Senger de Souza ESTRUTURAS CONDICIONAIS Introdução à Ciência da ComputaçãoI Simone Senger de Souza Estruturas de Controle ESTRUTURA SEQUENCIAL ESTRUTURA CONDICIONAL ESTRUTURA DE REPETIÇÃO 2 Estruturas Condicionais Estrutura

Leia mais

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Entrada e saída: escrevendo na tela Veja uma comparação entre um programa Portugol e seu equivalente em C: Inicio Inteiro

Leia mais

Priority Queues. Problem. Let S={(s1,p1), (s2,p2),,(sn,pn)} where s(i) is a key and p(i) is the priority of s(i).

Priority Queues. Problem. Let S={(s1,p1), (s2,p2),,(sn,pn)} where s(i) is a key and p(i) is the priority of s(i). Priority Queues Priority Queues Problem. Let S={(s1,p1), (s2,p2),,(sn,pn)} where s(i) is a key and p(i) is the priority of s(i). How to design a data structure D to support the following operations over

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Prof. Alceu Britto Slides cedidos pelo Prof. Dr. Edson J. R. Justino Aula 15 até 18 UEPG Rotinas rotinas, também chamadas de subprogramas, são blocos de instruções que realizam

Leia mais

Comunicação entre Processos Memória Compartilhada

Comunicação entre Processos Memória Compartilhada Comunicação entre Processos Memória Compartilhada 3/23/17 1 Métodos de comunicação entre processos Memória compartilhada Sinais Pipes Troca de mensagens Memória Compartilhada Memória compartilhada Permite

Leia mais

AULA 15. Algoritmos p.600/637

AULA 15. Algoritmos p.600/637 AULA 15 Algoritmos p.600/637 Programação dinâmica CLRS 15.1 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p.601/637 Programação dinâmica "Dynamic programming

Leia mais

EPs 1 e 2. EP2: veja. EP1: veja

EPs 1 e 2. EP2: veja.   EP1: veja 1 EPs 1 e 2 EP2: veja http://www.ime.usp.br/~fabricio/ep2/ep2.pdf EP1: veja http://www.ime.usp.br/~yoshi/2006ii/mac122a/eps/ep1/wc.pdf http://www.ime.usp.br/~pf/cweb/ http://www.ime.usp.br/~pf/algoritmos/apend/util.html

Leia mais

Computação por Passagem de Mensagens

Computação por Passagem de Mensagens Computação por Passagem de Mensagens Programação por passagem de mensagens Programação de multiprocessadores conectados por rede pode ser realizada: criando-se uma linguagem de programação paralela especial

Leia mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Árvores B (Parte III)

Árvores B (Parte III) Árvores B (Parte III) Profa. Dra. Cristina Dutra de Aguiar Ciferri Algoritmos Estrutura de dados determina cada página de disco pode ser implementada de diferentes formas Implementação adotada contador

Leia mais

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal Exercício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os

Leia mais

Aula 26: Arquivos de texto

Aula 26: Arquivos de texto Aula 26: Arquivos de texto Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas heterogêneas Alocação

Leia mais

TAD: Tipo Abstrato de Dados (parte 2)

TAD: Tipo Abstrato de Dados (parte 2) TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c

Leia mais

Introdução Arquiteturas Paralelas Programação Paralela Geração de Malhas Particionamento de Malhas (Grafos) Balanceamento de Carga

Introdução Arquiteturas Paralelas Programação Paralela Geração de Malhas Particionamento de Malhas (Grafos) Balanceamento de Carga Introdução Arquiteturas Paralelas Programação Paralela Geração de Malhas Particionamento de Malhas (Grafos) Balanceamento de Carga 2 Relembrando alguns conceitos da Parte I: O que é Computação Científica?

Leia mais

#include <stdio.h> void Swap (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } main () {

#include <stdio.h> void Swap (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } main () { 422 #include void Swap (int *a,int *b) int temp; temp=*a; *a=*b; *b=temp; main () int num1,num2; printf("\nentre com o primeiro valor: "); scanf ("%d",&num1); printf("\nentre com o segundo valor:

Leia mais

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Algoritmos e Estruturas de Dados II. Trabalho Prático 3

Algoritmos e Estruturas de Dados II. Trabalho Prático 3 Algoritmos e Estruturas de Dados II Trabalho Prático 3 Entrega: 03/11/09 Devolução: 24/11/09 O trabalho pode ser feito em grupo de dois alunos. Este trabalho consiste em analisar o desempenho de diferentes

Leia mais

TAD: Tipo Abstrato de Dados (parte 2)

TAD: Tipo Abstrato de Dados (parte 2) TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve

Leia mais

Aula 3: Algoritmos: Formalização e Construção

Aula 3: Algoritmos: Formalização e Construção Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de

Leia mais

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza

ESTRUTURAS COMPOSTAS. Variáveis Compostas Unidimensionais VETOR. Baseado nos slides de Rosely Sanches e Simone Senger de Souza ESTRUTURAS COMPOSTAS Variáveis Compostas Unidimensionais VETOR Baseado nos slides de Rosely Sanches e Simone Senger de Souza 2 ESTRUTURAS COMPOSTAS Pode-se organizar os dados dos tipos simples em tipos

Leia mais

Teste de Sistemas de Operação 15 de Abril de 2010

Teste de Sistemas de Operação 15 de Abril de 2010 Teste de Sistemas de Operação 15 de Abril de 2010 Duração: 1 h (prática + teórica) D NOME: Indique apenas uma das alternativas. Respostas erradas descontam na nota. 1. Em um sistema que suporta multiprogramação

Leia mais

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P3-25/11/05 Questão 1 Nome: INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal

Leia mais

Linguagem C (estruturas condicionais)

Linguagem C (estruturas condicionais) Linguagem C (estruturas condicionais) André Tavares da Silva atavares@joinville.udesc.br Comandos de Controle de Fluxo Todos os comandos devem ser terminados com um ;. { e são usados para delimitar um

Leia mais

Recuperação P1 de Estrutura de Dados

Recuperação P1 de Estrutura de Dados Recuperação P1 de Estrutura de Dados Sigla _IED001_ TURMA: A PERÍODO: MAT ( ) NOT ( ) DISCIPLINA:_Estrutura de Dados DATA: / / Argumente com fundamentando as questões da avaliação indicando porque a questão

Leia mais

OpenMP. Aleardo Manacero Jr.

OpenMP. Aleardo Manacero Jr. OpenMP Aleardo Manacero Jr. Copyright Notice Material parcialmente retirado de Introduction to OpenMP, por Rudi Eigenmann -- eigenman@ecn.purdue.edu, Bob Kuhn -- bob@kai.com, Tim Mattson -- timothy.g.mattson@intel.com,

Leia mais

Faculdade de Computação

Faculdade de Computação Faculdade de Computação Programação Procedimental 1 o Laboratório de Programação C Prof. Cláudio C. Rodrigues 1. Introdução O objetivo desta aula prática é exercitar o uso de variáveis de vários tipos

Leia mais

Aula 17: Ponteiros e Alocação Dinâmica em C

Aula 17: Ponteiros e Alocação Dinâmica em C Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores

Leia mais

Programação II. Aula Teórica 4: memoria dinâmica / pre-processador. Marco Giunti. Departamento de Informática, UBI

Programação II. Aula Teórica 4: memoria dinâmica / pre-processador. Marco Giunti. Departamento de Informática, UBI Aula Teórica 4: memoria dinâmica / pre-processador Departamento de Informática, UBI C(ontiguous) alloc Calloc A função calloc permite de criar um espaço de memória contíguo com uma dimensão certa calloc(n,

Leia mais

Algoritmos probabilísticos

Algoritmos probabilísticos Algoritmos probabilísticos Na execução, algumas decisões usam números aleatórios Tempo de execução depende não só da entrada mas também de números aleatórios gerados Eficiência: pior caso é o mesmo ue

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação e Algoritmos / Programação II 2º Semestre Exame - 1ª chamada Resolução 20/06/2013 1. [2.0 val] Apontadores (Responder esta questão nesta folha e entregar com

Leia mais

Introdução a Computação Paralela: Rotinas MPI em Clusters Beowulf

Introdução a Computação Paralela: Rotinas MPI em Clusters Beowulf Introdução a Computação Paralela: Rotinas MPI em Clusters Beowulf Miguel Dias Costa João Viana Lopes Centro de Física do Porto Estrutura do Curso Motivação Estrutura do Curso Motivação Conceitos de Computação

Leia mais

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1

Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1 Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para

Leia mais

Programação de Sistemas Array Sistólico

Programação de Sistemas Array Sistólico Programação de Sistemas Array Sistólico Programação de Sistemas Array sistólico : 1/7 Problema (1) [Definição] Um array sistólico 1 é um sistema composto por células dispostas matricialmente. Cada célula

Leia mais

Material sobre Funções AEDS 1

Material sobre Funções AEDS 1 Material sobre Funções AEDS 1 1 Funções - revisão Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada e definem um valor de saída 2 Funções -

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: ssvenske@unicentro.br

Leia mais

Bravas shield light sample app 2017

Bravas shield light sample app 2017 Funcionamento A aplicação exemplo executa a leitura de duas entradas digitais da Shield Bravas e escreve nas saídas a relé da seguinte forma: Entrada digital 1 ativa: Reles 1 acionado. Entrada digital

Leia mais

Alocação Dinâmica. Introdução à Computação

Alocação Dinâmica. Introdução à Computação Alocação Dinâmica Introdução à Computação Alocação de memória Uso da memória: uso de variáveis globais (e está>cas): O espaço reservado para uma variável global existe enquanto o programa es>ver sendo

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

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço

Leia mais

Disciplina de Algoritmos e Programação

Disciplina de Algoritmos e Programação Disciplina de Algoritmos e Programação Aula Passada 1º Programa: olamundo.c #include // biblioteca padrão de E/S /* Programa Olá Mundo */ int main(void) { printf( Olá mundo\n ); //exibe Olá mundo

Leia mais