Comunicação Coletiva

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

Download "Comunicação Coletiva"

Transcrição

1 Comunicação Coletiva Sempre envolve um grupo de processos; Sempre envolve todos os processos de um comunicador; Podem ser implementadas com as rotinas ponto a ponto (mas é má idéia); Implementam os padrões de comunicação paralela vistos no início do curso! Podem (mas não precisam) retornar assim que sua participação na operação esteja completa;

2 Comunicação Coletiva A comunicação é considerada completa quando é possível reusar os buffers de comunicação; Não significa que os outros processos completaram a comunicação! Não necessariamente uma comunicação coletiva sincroniza o programa (exceto MPI_BARRIER); Não há interferência entre comunicações coletivas e comunicações ponto a ponto;

3 Rotinas MPI_BARRIER; MPI_BCAST; MPI_GATHER; MPI_GATHERV; MPI_SCATTER; MPI_SCATTERV; MPI_ALLGATHER; MPI_ALLGATHERV; MPI_ALLTOALL; MPI_ALLTOALLV; MPI_ALLTOALLW; MPI_REDUCE; MPI_ALLREDUCE; MPI_REDUCE_ SCATTER; MPI_SCAN; MPI_EXSCAN;

4 Esquemas Broadcast

5 Esquemas Scatter/Gather

6 Esquemas Allgather

7 Esquemas Alltoall

8 MPI_COMM_BARRIER Sincroniza todos os processos em um comunicador, só prosseguem quando todos chamarem esta rotina; C: int MPI_Barrier(MPI_Comm comm) Fortran: MPI_BARRIER(COMM, IERROR) INTEGER COMM, IERROR C++: void MPI::Comm::Barrier() const = 0

9 MPI_WTIME Retorna o tempo em segundos, a partir de um instante no passado; Ver também MPI_WTICKS; C: double MPI_Wtime(void) Fortran: DOUBLE PRECISION MPI_WTIME() C++: double MPI::Wtime()

10 MPI_BCAST Implementa o single node broadcast : um processo manda a mesma informação para todos os processos; Um argumento indica quem é a fonte do broadcast; Todos os processos devem chamar a função com os mesmos argumentos para root e comm!;

11 MPI_BCAST C: int MPI_Bcast(void* buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm) Fortran: MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR) <type> BUFFER(*) INTEGER COUNT, DATATYPE, ROOT, COMM, IERROR C++: void MPI::Comm::Bcast(void* buffer, int count, const MPI::Datatype& datatype, int root) const = 0

12 Tipos de Dados

13 Tipos de Dados

14 Tipos de Dados

15 Tipos de Dados

16 Tipos de Dados

17 MPI_SCATTER Implementa o Single Node Scatter; Um processo manda informações diferentes (mas de mesmo tamanho) para todos os outros; Todos os processos devem chamar a função com a mesma raiz e comunicador; É possível evitar a cópia local com buffer in place.

18 MPI_SCATTER C: int MPI_Scatter( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)

19 MPI_SCATTER Fortran: MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT INTEGER RECVTYPE, ROOT, COMM, IERROR

20 MPI_SCATTER C++: void MPI::Comm::Scatter( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype, int root) const = 0

21 MPI_SCATTERV MPI_SCATTER, com dados de tamanho diferente; Começa a ficar complicado quando os tipos de dados são complexos; É necessário indicar de onde começa o dado destinado a cada processo; Também pode ser usado buffer in place ; No overlap!

22 MPI_SCATTERV SendBuff Sendcounts Displacements

23 MPI_SCATTERV C: int MPI_Scatter( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)

24 MPI_SCATTERV Fortran: MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT INTEGER RECVTYPE, ROOT, COMM, IERROR

25 MPI_SCATTERV C++: void MPI::Comm::Scatter( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype, int root) const = 0

26 MPI_GATHER Operação dual ao MPI_SCATTER; Cada processo manda uma informação diferente para o mesmo processo raiz; Todos os processos devem chamar com o mesmo argumento para raiz e comunicador; Pode ser usada comunicação in place.

27 MPI_GATHER C: int MPI_Gather( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)

28 MPI_GATHER Fortran: MPI_GATHER( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT INTEGER RECVTYPE, ROOT, COMM, IERROR

29 MPI_GATHER C++: void MPI::Comm::Gather( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype, int root) const = 0

30 MPI_GATHERV Dual de MPI_SCATTERV; Análogo com comprimento variável a MPI_GATHER;

31 MPI_GATHERV C: int MPI_Gatherv( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, int root, MPI_Comm comm)

32 MPI_GATHERV Fortran: MPI_GATHERV( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, ROOT, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE INTEGER RECVCOUNTS(*), DISPLS(*) INTEGER RECVTYPE, ROOT, COMM, IERROR

33 MPI_GATHERV C++: void MPI::Comm::Gatherv( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, const int recvcounts[], const int displs[], const MPI::Datatype& recvtype, int root) const = 0

34 MPI_ALLGATHER Equivalente a size MPI_GATHER's simultâneos, com a raiz em cada um dos processos; (ou MPI_GATHER + MPI_BCAST); Pode usar comunicação in place ;

35 MPI_ALLGATHER C: int MPI_Allgather( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)

36 Fortran: MPI_ALLGATHER MPI_ALLGATHER( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE INTEGER RECVCOUNT, RECVTYPE INTEGER COMM, IERROR

37 MPI_ALLGATHER C++: void MPI::Comm::Allgather( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype) const = 0

38 MPI_ALLGATHERV Como MPI_ALLGATHER, com dados de tamanhos variáveis; Normalmente, é necessário enviar os tamanhos antes de enviar os dados de interesse; Também pode ser in place.

39 MPI_ALLGATHERV C: int MPI_Allgatherv( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm)

40 MPI_ALLGATHERV Fortran: MPI_ALLGATHERV( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE INTEGER RECVCOUNTS(*), DISPLS(*) INTEGER RECVTYPE, COMM INTEGER IERROR

41 MPI_ALLGATHERV C++: void MPI::Comm::Allgatherv( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, const int recvcounts[], const int displs[], const MPI::Datatype& recvtype) const = 0

42 MPI_ALLTOALL Cada processo manda dados diferentes para todos os outros processos; Total Exchange ; Não há opção para comunicação inplace ;

43 MPI_ALLTOALL C: int MPI_Alltoall( void* sendbuf, int sendcount, MPI_Datatype sendtype, void* recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)

44 MPI_ALLTOALL Fortran: MPI_ALLTOALL( SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNT, SENDTYPE INTEGER RECVCOUNT, RECVTYPE INTEGER COMM, IERROR

45 MPI_ALLTOALL C++: void MPI::Comm::Alltoall( const void* sendbuf, int sendcount, const MPI::Datatype& sendtype, void* recvbuf, int recvcount, const MPI::Datatype& recvtype) const = 0

46 MPI_ALLTOALLV MPI_ALLTOALL com tamanho de mensagem variável; Quase o mais genérico possível; Normalmente, o tamanho das mensagens é enviado primeiro, com um MPI_ALLTOALL; Não há opção in place ;

47 MPI_ALLTOALLV C: int MPI_Alltoallv( void* sendbuf, int *sendcounts, int *sdispls, MPI_Datatype sendtype, void* recvbuf, int *recvcounts, int *rdispls, MPI_Datatype recvtype, MPI_Comm comm)

48 MPI_ALLTOALLV Fortran: MPI_ALLTOALLV( SENDBUF, SENDCOUNTS, SDISPLS, SENDTYPE, RECVBUF, RECVCOUNTS, RDISPLS, RECVTYPE, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER SENDCOUNTS(*), SDISPLS(*), SENDTYPE INTEGER RECVCOUNTS(*), RDISPLS(*), RECVTYPE INTEGER COMM, IERROR

49 MPI_ALLTOALLV C++: void MPI::Comm::Alltoallv( const void* sendbuf, const int sendcounts[], const int sdispls[], const MPI::Datatype& sendtype, void* recvbuf, const int recvcounts[], const int rdispls[], const MPI::Datatype& recvtype) const = 0

50 MPI_REDUCE Acumulação global; Combina elementos de cada processo com uma operação binária fornecida pelo usuário; Deve ser chamada por todos os membros do grupo com argumentos compatíveis; Pode ser aplicada a vetores de elementos, e a operação é aplicada aos elementos correspondentes; Pode usar comunicação in place ;

51 MPI_REDUCE As operações são sempre associativas; As operações pré definidas são também comutativas; O usuário pode definir operações, que não precisam ser comutativas; Neste caso, a ordem de avaliação é a ordem dos ranks dos processos; Curiosidade: operações de ponto flutuante não são estritamente associativas e comutativas!

52 MPI_REDUCE - Operações MPI_MAX MPI_MIN MPI_SUM MPI_PROD MPI_LAND MPI_BAND MPI_LOR MPI_BOR MPI_LXOR MPI_BXOR MPI_MAXLOC MPI_MINLOC

53 MPI_REDUCE Tipos

54 MPI_REDUCE C: int MPI_Reduce( void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)

55 MPI_REDUCE Fortran: MPI_REDUCE( SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER COUNT, DATATYPE, OP INTEGER ROOT, COMM, IERROR

56 MPI_REDUCE C++: void MPI::Comm::Reduce( const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op, int root) const = 0

57 MPI_{MIN,MAX}LOC Calculam o mínimo (máximo) e um índice associado; Normalmente, a posição em um vetor, ou o rank do processo; Usa tipos de dados especiais, os índices são sempre inteiros e os elementos podem ter tipos variados;

58 MPI_{MIN,MAX}LOC

59 MPI_OP_CREATE Usuário pode criar funções de redução; Deve ser associativa, e pode ou não ser comutativa; Neste caso, a ordem aplicada é a ordem padrão, crescente no rank; Esta função associa uma função escrita pelo programador a uma variável que pode ser usada como operação em MPI_REDUCE;

60 MPI_OP_CREATE C: int MPI_Op_create( MPI_User_function *function, int commute, MPI_Op *op)

61 MPI_OP_CREATE Fortran: MPI_OP_CREATE(FUNCTION, COMMUTE, OP, IERROR) EXTERNAL FUNCTION LOGICAL COMMUTE INTEGER OP, IERROR

62 MPI_OP_CREATE C++: void MPI::Op::Init( MPI::User_function* function, bool commute)

63 MPI_OP_CREATE Claro que a função tem que obedecer a um protótipo; Os argumentos desta função são vetores, o que permite eficiência na aplicação; Não é permitido chamar funções de comunicação do MPI dentro desta função! É permitido chamar MPI_ABORT em caso de erros;

64 MPI_OP_CREATE Protótipo C: typedef void MPI_User_function( void *invec, void *inoutvec, int *len, MPI_Datatype *datatype);

65 MPI_OP_CREATE Protótipo Fortran: SUBROUTINE USER_FUNCTION(INVEC, INOUTVEC, LEN, TYPE) <type> INVEC(LEN), INOUTVEC(LEN) INTEGER LEN, TYPE

66 MPI_OP_CREATE Protótipo C++: typedef void MPI::User_function( const void* invec, void *inoutvec, int len, const Datatype& datatype);

67 MPI_ALLREDUCE MPI_REDUCE, com resultado em todos os processadores; Normalmente é exatamente o que interessa; Mesmas características e facilidades que MPI_REDUCE; Suporta comunicação in place

68 MPI_ALLREDUCE C: int MPI_Allreduce( void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)

69 MPI_ALLREDUCE Fortran: MPI_ALLREDUCE( SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER COUNT, DATATYPE INTEGER OP, COMM, IERROR

70 MPI_ALLREDUCE C++: void MPI::Comm::Allreduce( const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const = 0

71 MPI_REDUCE_SCATTER Executa a redução em um vetor, depois envia partes de tamanho diferente deste vetor para os processos do grupo; Equivalente a MPI_REDUCE (com um vetor) seguido de MPI_SCATTERV; Suporta comunicação in place ;

72 MPI_REDUCE_SCATTER C: int MPI_Reduce_scatter( void* sendbuf, void* recvbuf, int *recvcounts, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)

73 MPI_REDUCE_SCATTER Fortran: MPI_REDUCE_SCATTER( SENDBUF, RECVBUF, RECVCOUNTS, DATATYPE, OP, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER RECVCOUNTS(*), DATATYPE INTEGER OP, COMM, IERROR

74 MPI_REDUCE_SCATTER C++: void MPI::Comm::Reduce_scatter( const void* sendbuf, void* recvbuf, int recvcounts[], const MPI::Datatype& datatype, const MPI::Op& op) const = 0

75 MPI_SCAN Operação de Prefixo Inclusivo: o processador i obtém o resultado da redução dos processos 0 até i; Todo o resto como MPI_REDUCE; Há opção in place ;

76 MPI_SCAN C: int MPI_Scan( void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm )

77 MPI_SCAN Fortran: MPI_SCAN( SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER COUNT, DATATYPE INTEGER OP, COMM, IERROR

78 MPI_SCAN C++: void MPI::Intracomm::Scan( const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const

79 MPI_EXSCAN Operação de Prefixo Exclusivo: o processador i recebe o resultado da redução dos processos de 0 a i 1; No processo 0 o resultado é indefinido; Todo o resto análogo a MPI_REDUCE; Não há opção in place ;

80 MPI_EXSCAN C: int MPI_Exscan( void* sendbuf, void* recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm )

81 MPI_EXSCAN Fortran: MPI_EXSCAN( SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER COUNT, DATATYPE INTEGER OP, COMM, IERROR

82 MPI_EXSCAN C++: void MPI::Intracomm::Exscan( const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const

Sistemas Distribuídos Message-Passing

Sistemas Distribuídos Message-Passing 0010010101011101010111100010111100010101010100100111001010001001010100101010100010010100101010110101010101 01100000011111101010010100010101010010010101101001000100101010111010101111000101111 101010101001001110010100010010101001010101000100101001010101101010101010110000001111110101001010001010101001001010110100100010010

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

Comunicação Ponto a Ponto

Comunicação Ponto a Ponto Comunicação Ponto a Ponto Transferência de dados entre processos específicos, que não se encaixam em um padrão global pré definido; Sempre ocorre entre dois processos, um processo que envia e outro que

Leia mais

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

Aula 3 Computação Distribuída de Alto Desempenho CBPF Centro Brasileiro de Pesquisas Físicas Aula 3 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

MPI - Continuação. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm.

MPI - Continuação. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm.get_rank() MPI - Continuação if rank == 0: print ("Myrank: %s:" % rank) for proc in range(1,

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 Paralela em Memória Compartilhada e Distribuída

Programação Paralela em Memória Compartilhada e Distribuída Programação Paralela em Memória Compartilhada e Distribuída Prof. Claudio Schepke claudioschepke@unipampa.edu.br Prof. João V. F. Lima jvlima@inf.ufsm.br (baseado em material elaborado por professores

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

Programação Paralela

Programação Paralela Programação Paralela Conteúdo: Introdução Motivação Desafios Modelagem Programação Paralela Memória Compartilhada Pthreads Programação Paralela Troca de Mensagens MPI Métricas de desempenho Introdução

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

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

Curso de Informática DCC-IM / UFRJ MPI. Um curso prático. Gabriel P. Silva

Curso de Informática DCC-IM / UFRJ MPI. Um curso prático. Gabriel P. Silva 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

Universidade de Coimbra - Faculdade de Ciências e Tecnologia Departamento de Matemática

Universidade de Coimbra - Faculdade de Ciências e Tecnologia Departamento de Matemática Universidade de Coimbra - Faculdade de Ciências e Tecnologia Departamento de Matemática COMPUTAÇÃO PARALELA - 2005/2006 4ºANO PROBLEMA 1 DETERMINAÇÃO DOS NÚMEROS PRIMOS *** RELATÓRIO *** Sara Catarina

Leia mais

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

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

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

Carla Osthoff LNCC/MCTI Exemplos: https://goo.gl/amxo7e

Carla Osthoff LNCC/MCTI Exemplos: https://goo.gl/amxo7e Carla Osthoff LNCC/MCTI osthoff@lncc.br Exemplos: https://goo.gl/amxo7e Message Passing Interface www.mpi-forum.org http://mpi-forum.org/docs/ http://mpi-forum.org/mpi-40/ Manual online: http://www.mpich.org/static/docs/latest/

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

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

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

Paralela e Distribuída. Memória Distribuída com o MPI

Paralela e Distribuída. Memória Distribuída com o MPI Programação Paralela e Distribuída Programação em Memória Distribuída com o MPI Programação em Memória Distribuída As aplicações são vistas como um conjunto de programas que são executados de forma independente

Leia mais

Message Passing Interface

Message Passing Interface Message Passing Interface Gonzalo Travieso 2010 Sumário 1 Conceitos Básicos 1 Inicialização e Finalização...................................................... 1 Processos...............................................................

Leia mais

Message Passing Interface

Message Passing Interface Message Passing Interface Gonzalo Travieso 2011 Sumário 1 Conceitos Básicos 2 Inicialização e Finalização........................................... 3 Processos....................................................

Leia mais

2 Arquitetura Paralela

2 Arquitetura Paralela 1 Resumo Esta monografia tem como objetivo o desenvolvimento de uma ferramenta para auxiliar no desenvolvimento de programa que utilizam a biblioteca MPI Esta ferramenta mostra ao usuário qual a carga

Leia mais

Centro Nacional de Processamento de Alto Desempenho - SP TREINAMENTO: INTRODUÇÃO AO MPI CENAPAD-SP

Centro Nacional de Processamento de Alto Desempenho - SP TREINAMENTO: INTRODUÇÃO AO MPI CENAPAD-SP 1 Centro Nacional de Processamento de Alto Desempenho - SP TREINAMENTO: INTRODUÇÃO AO MPI CENAPAD-SP 2 CONTEÚDO Introdução a Programação Paralela... pag.02 1 - Idéias e Conceitos... pag.02 2 - Comunicação

Leia mais

Computação Aplicada:

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

Leia mais

Programação de Arquiteturas com Memória Distribuída Utilizando MPI

Programação de Arquiteturas com Memória Distribuída Utilizando MPI Programação de Arquiteturas com Memória Distribuída Utilizando MPI MCZA020-13 - Programação Paralela Emilio Francesquini e.francesquini@ufabc.edu.br 2019.Q1 Centro de Matemática, Computação e Cognição

Leia mais

Comunicação Interprocessos

Comunicação Interprocessos Comunicação Interprocessos Programação Paralela e Distribuída Conceito de Programa e Execução Graduação em Ciência da Computação Universidade do Vale do Rio dos Sinos Prof. Gerson Cavalheiro Programação

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 dificuldades com arquiteturas não clienteservidor volta ao modelo de troca de mensagens

Leia mais

Análise e otimização de microestruturas com critérios de tensão usando cálculo paralelo

Análise e otimização de microestruturas com critérios de tensão usando cálculo paralelo David Bernardino Palma Licenciado em Ciências da Engenharia Mecânica Análise e otimização de microestruturas com critérios de tensão usando cálculo paralelo Dissertação para obtenção do Grau de Mestre

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

Introdução à programação paralela em Fortran usando OpenMP e MPI

Introdução à programação paralela em Fortran usando OpenMP e MPI Introdução à programação paralela em Fortran usando OpenMP e MPI Henrique Gavioli Flores,Alex Lima de Mello, Marcelo Trindade Rebonatto Universidade de Passo Fundo 5 de Abril de 2018 1/28 1 / 28 Sumário

Leia mais

MPI I/O Parte 1. Vinicius Silva

MPI I/O Parte 1. Vinicius Silva Universidade Federal do Rio de Janeiro Instituto de Matemática Departamento de Ciência da Computação MPI I/O Parte 1 Vinicius Silva viniciussilva@nce.ufrj.br Organização I/O Paralelo - Introdução - Importância

Leia mais

Clusters de Alto Desempenho e programação distribuída

Clusters de Alto Desempenho e programação distribuída Roteiro da apresentação Clusters de Alto Desempenho e programação distribuída Nicolas Maillard Instituto de Informática UFRGS 2008 O contexto: do Processamento de Alto Desempenho à programação paralela...

Leia mais

INF 1620 P4 11/12/06 Questão 1 Nome:

INF 1620 P4 11/12/06 Questão 1 Nome: INF 1620 P4 11/12/06 Questão 1 Considere que o cálculo da multa para o pagamento de um determinado imposto varia de acordo com a tabela a seguir: Valor do Imposto Original Multa por mês de atraso até R$

Leia mais

Introdução ao FORTRAN 90. Aula 4

Introdução ao FORTRAN 90. Aula 4 Introdução ao FORTRAN 90 Aula 4 Usados quando o programa contém estruturas complexas e com estruturas contendo conjuntos de instruções repetidas. O conjunto de instruções repetidas não se enquadra em uma

Leia mais

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham

Leia mais

INF 1620 P3-27/11/04 Questão 1 Nome:

INF 1620 P3-27/11/04 Questão 1 Nome: INF 1620 P3-27/11/04 Questão 1 Considere um arquivo texto com as notas dos alunos de uma disciplina. Os dados de cada aluno são armazenados em duas linhas do arquivo: uma com o seu nome (cadeia com até

Leia mais

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34 Sistemas de Arquivos Distribuídos Bruno M. Carvalho Sala: 3F2 Horário: 35M34 Introdução Serviço de arquivos descreve os serviços oferecidos pelo sistema de arquivos aos clientes Servidor de arquivos processo

Leia mais

ALGORÍTMOS PARALELOS (Aula 5)

ALGORÍTMOS PARALELOS (Aula 5) ALGORÍTMOS PARALELOS (Aula 5) Neyval C. Reis Jr. OUTUBRO/2004 LCAD Laboratório de Computação de Alto Desempenho DI/UFES Programa do Curso LCAD 1. Introdução 2. Arquitetura de Computadores 3. Arquiteturas

Leia mais

1 - CONCEITOS BÁSICOS

1 - CONCEITOS BÁSICOS 1 ÍNDICE Capítulo 1 - CONCEITOS BÁSICOS 1.1 - O QUE É PARALELISMO?... 1.2 - PRA QUE PARALELIZAR?... 1.3 - TIPOS DE PARALELISMO... 1.4 - AMBIENTE PARALELO... 1.5 PROGRAMAÇÃO PARALELA... 1.6 - COMO PROGRAMAR

Leia mais

MPI2.NET: Criação Dinâmica de Tarefas com Orientação a Objetos

MPI2.NET: Criação Dinâmica de Tarefas com Orientação a Objetos UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO FERNANDO ABRAHÃO AFONSO MPI2.NET: Criação Dinâmica de Tarefas com Orientação a Objetos Dissertação

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

Programação Paralela e Distribuída ERAD-SP de julho de 2010 Liria Matsumoto Sato

Programação Paralela e Distribuída ERAD-SP de julho de 2010 Liria Matsumoto Sato Programação Paralela e Distribuída ERAD-SP 2010 31 de julho de 2010 Liria Matsumoto Sato liria.sato@poli.usp.br Apresentação Introdução Arquiteturas Paralelas Programação Paralela para computadores com

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

MPI Linux. Alternativas Práticas

MPI Linux. Alternativas Práticas MPI Linux Alternativas Práticas Downloads Portable Ubuntu http://sourceforge.net/projects/portableubuntu/ files/portableubuntu/uno/portable_ubuntu.ex e/download Wubi http://www.ubuntu.com/getubuntu/download

Leia mais

INF 1620 P2-14/10/05 Questão 1 Nome:

INF 1620 P2-14/10/05 Questão 1 Nome: INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome

Leia mais

INF 1620 P4 30/06/07 Questão 1 Nome:

INF 1620 P4 30/06/07 Questão 1 Nome: INF 1620 P4 30/06/07 Questão 1 O maior divisor comum (MDC) de dois números inteiros é o maior número inteiro que faz uma divisão exata (com resto zero) desses dois números. Por exemplo, o MDC de 32 e 40

Leia mais

que imprima os n primeiros termos da série de Fibonacci, lembrando que esta série é definida da seguinte forma:

que imprima os n primeiros termos da série de Fibonacci, lembrando que esta série é definida da seguinte forma: Departamento de Informática PUC-Rio INF1620 - Estruturas de Dados Primeira Lista de Exercícios 2005.1 1. Faça um programa completo (função main e inclusão dos arquivos de cabeçalhos adequados) que verifique

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO Prof. Bosco 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação

Leia mais

Paradigmas de Linguagens de Programação. Subprogramas

Paradigmas de Linguagens de Programação. Subprogramas Cristiano Lehrer Características Gerais dos Cada subprograma tem um único ponto de entrada Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, o que implica na existência

Leia mais

Objectivos. Iniciar a programação de funções. Estudar a chamada de funções. Estudar a forma como são executadas as funções

Objectivos. Iniciar a programação de funções. Estudar a chamada de funções. Estudar a forma como são executadas as funções Funções Objectivos Iniciar a programação de funções Estudar a chamada de funções Estudar a forma como são executadas as funções Passagem por valor e referência Como conceber funções 2 Programação modular

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

Programação Paralela. Objetivo: Apresentar conceitos básico de programação paralela com MPI.

Programação Paralela. Objetivo: Apresentar conceitos básico de programação paralela com MPI. Programação Paralela Objetivo: Apresentar conceitos básico de programação paralela com MPI. Apresentação Introdução; Arquiteturas paralelas; Análises de algoritmos; Comunicação em programas paralelos;

Leia mais

PROGRAMAÇÃO PARALELA USANDO MPI

PROGRAMAÇÃO PARALELA USANDO MPI PROGRAMAÇÃO PARALELA USANDO MPI Maurílio Boaventura DCCE/IBILCE/UNESP São José do Rio Preto - SP Nos computadores convencionais, um programa é um conjunto de instruções que são transmitidas à unidade de

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (2.0) (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre

Leia mais

Programação I Funções. Prof. Carlos Alberto

Programação I Funções. Prof. Carlos Alberto Programação I Funções Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Funções Funções são blocos de códigos que podem ser nomeados e chamados de dentro de um programa; Funções

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

INF 1620 P1-14/04/07 Questão 1 Nome:

INF 1620 P1-14/04/07 Questão 1 Nome: INF 1620 P1-14/04/07 Questão 1 Considerando o critério de aprovação de uma disciplina que determina que um aluno está aprovado se a média ponderada de suas três provas for maior ou igual a 5.0, onde a

Leia mais

INF 1620 P1-17/09/05 Questão 1 Nome:

INF 1620 P1-17/09/05 Questão 1 Nome: INF 1620 P1-17/09/05 Questão 1 Considere as equações de movimento para calcular a posição (s) e velocidade (v) de uma partícula em um determinado instante t, dado sua aceleração a, posição inicial s 0

Leia mais

StarPU. Edênis Freindorfer Azevedo. 10 de junho de Instituto de Matemática e Estatística

StarPU. Edênis Freindorfer Azevedo. 10 de junho de Instituto de Matemática e Estatística Instituto de Matemática e Estatística 10 de junho de 2015 Definição Principais ideias 1. Entender o que é. 2. Entender como funciona. Definição Resumo é uma biblioteca de programação para arquiteturas

Leia mais

INF 1620 P2-17/05/08 Questão 1 Nome:

INF 1620 P2-17/05/08 Questão 1 Nome: INF 620 P2-7/05/08 Questão Considere um cadastro de produtos de um estoque, com as seguintes informações: Código de Identificação do produto: representado por um número inteiro Nome do produto: com até

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

Notas da Aula 14 - Fundamentos de Sistemas Operacionais

Notas da Aula 14 - Fundamentos de Sistemas Operacionais Notas da Aula 14 - Fundamentos de Sistemas Operacionais 1. Dispositivos de E/S Uma operação de entrada e saída é aquela que envolve a leitura ou escrita de dados a partir de dispositivos que estão fora

Leia mais

INF 1620 P3-29/06/04 Questão 1 Nome:

INF 1620 P3-29/06/04 Questão 1 Nome: INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica

Leia mais

Algoritmos II prof. Daniel Oliveira

Algoritmos II prof. Daniel Oliveira Algoritmos II prof. Daniel Oliveira Revisar conceitos abordados na disciplina anterior Abordar conceitos vistos com a linguagem C# Variáveis e listas Expressões Estruturas de controle do tipo condicional

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES- Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Árvores CES- Operações sobre uma árvore Estruturas para armazenar árvores Contígua Contígua melhorada Encadeada

Leia mais

C++ - Funções. Forma geral das funções C++

C++ - Funções. Forma geral das funções C++ C++ - Funções Conjunto de instruções para executar uma tarefa particular, agrupadas numa unidade com um nome para referenciá-las. O código é agregado ao programa uma única vez e pode ser executado muitas

Leia mais

INF 1620 P1-16/09/06 Questão 1 Nome:

INF 1620 P1-16/09/06 Questão 1 Nome: INF 1620 P1-16/09/06 Questão 1 Considerando a fórmula para o cálculo da distância entre dois pontos (x 1, y 1 ) e (x 2, y 2 ) apresentada a seguir: d = (x 2 " x 1 ) 2 + (y 2 " y 1 ) 2 (a) Escreva uma função

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 dificuldades com arquiteturas não clienteservidor volta ao modelo de troca de mensagens

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de

Leia mais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

Leia mais

INF P3-23/06/07 Questão 1 Nome:

INF P3-23/06/07 Questão 1 Nome: INF 1620 - P3-23/06/07 Questão 1 Considere a implementação de listas encadeadas para armazenar inteiros dada pelo tipo abaixo: struct lista { int info; struct lista* prox; typedef struct lista Lista; Escreva

Leia mais

AED2 - Aula 11 Problema da separação e quicksort

AED2 - Aula 11 Problema da separação e quicksort AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos

Leia mais

ECT1203 Linguagem de Programação

ECT1203 Linguagem de Programação Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia ECT1203 Linguagem de Programação Prof. Aquiles Burlamaqui Profa. Caroline Rocha Prof. Luiz Eduardo Leite Prof. Luciano Ferreira

Leia mais

O Modelo Síncrono BSP para Computação Paralela

O Modelo Síncrono BSP para Computação Paralela O Modelo Síncrono BSP para Computação Paralela Raphael Y. de Camargo Ricardo Andrade Departamento de Ciência da Computação Instituto de Matemática e Estatística Universidade de São Paulo, Brasil São Paulo,

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

2. Considerando as seguintes declarações de uma lista encadeada

2. Considerando as seguintes declarações de uma lista encadeada Departamento de Informática PUC-Rio INF1620 - Estruturas de Dados Terceira Lista de Exercícios 2005.1 1. Considerando as seguintes declarações de uma lista encadeada char matricula[8]; char turma; float

Leia mais

INF 1620 P3-06/12/03 Questão 1 Nome:

INF 1620 P3-06/12/03 Questão 1 Nome: INF 1620 P3-06/12/03 Questão 1 Considere um cadastro com as médias por disciplina dos alunos de uma universidade. Esse cadastro é originalmente armazenado em um arquivo texto que contém, para cada disciplina,

Leia mais

INF P4-12/12/09 Questão 1 Nome:

INF P4-12/12/09 Questão 1 Nome: INF 1007 - P4-12/12/09 Questão 1 QUESTÃO OBRIGATÓRIA [Valor: 2,5 pontos] Escreva um programa completo em C que leia do teclado um caractere e uma cadeia de caracteres e escreva quantas vezes aquele caractere

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação UDP e TCP,

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos UFRJ IM - DCC Sistemas Operacionais I Unidade IV Gerência de Recursos Entrada e Saída 02/12/2014 Prof. Valeria M. Bastos 1 ORGANIZAÇÃO DA UNIDADE Gerência de Entrada e Saída Fundamentos Evolução Estrutura

Leia mais

INF 1620 P2-23/10/04 Questão 1 Nome:

INF 1620 P2-23/10/04 Questão 1 Nome: INF 1620 P2-23/10/04 Questão 1 Considere um tipo abstrato de dados para representar uma disciplina da PUC-Rio, com as seguintes informações: Nome da disciplina: com até 50 caracteres Código da disciplina:

Leia mais

INE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome

INE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome INE5645-Programação Paralela e Distribuída Aula 17/09/2018 Nome Para paralelizar códigos de programas, tudo que necessitamos é de uma construção sintática denominada kernel. Seja o kernel: kernel void

Leia mais

Instruções para uso do MPI - Relatório Técnico -

Instruções para uso do MPI - Relatório Técnico - Universidade de Passo Fundo Instituto de Ciências Exatas e Geociências Curso de Ciência da Computação Instruções para uso do MPI - Relatório Técnico - ComPaDi Grupo de Pesquisa em Computação Paralela e

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

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel. Slide 01 16/03/2017 Estruturas de Dados Prof. Cleziel Franzoni da Costa 1 @Cleziel /Cleziel cleziel@hotmail.com 42 3 EMENTA Listas lineares e suas variações. Filas e pilhas. Árvores binárias e suas variações.

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P4 07/12/2010 Aluno: Matrícula: Turma: Instruções: 1) Escreva seu nome completo, matrícula e turma; 2) A prova deve ser completamente resolvida

Leia mais

Sistemas de Operação II. Ricardo Rocha

Sistemas de Operação II. Ricardo Rocha Programação em Memória Distribuída Ricardo Rocha ricroc@dcc.fc.up.pt Programação em Memória Distribuída As aplicações são vistas como um conjunto de programas que são executados de forma independente em

Leia mais

Linguagens de Programação Subprogramas

Linguagens de Programação Subprogramas Linguagens de Programação Subprogramas Andrei Rimsa Álvares Sumário Abstrações Subprogramas Parâmetros Passagem de parâmetros Direção da passagem Mecanismos de passagem Momento da passagem ABSTRAÇÕES Linguagens

Leia mais

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador.

1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador. 1. Selecione a Estrutura de Dados que melhor representa os diretórios ou pastas de arquivos do computador. 1) Fila 2) Pilha 3) Árvore 4) Lista 5) Grafo 2. Selecione a Estrutura de Dados que melhor representa

Leia mais

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome: INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,

Leia mais