Paralela e Distribuída. com o MPI e o OpenMP

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

Download "Paralela e Distribuída. com o MPI e o OpenMP"

Transcrição

1 Programação Paralela e Distribuída Programação Híbrida com o e o OpenMP

2 e OpenMP Uma forma de executar um programa em paralelo num cluster multiprocessor é criar um processo por cada processador. Nesse caso, pode acontecer que vários processos executem no mesmo multiprocessor. Apesar disso, todas as interacções entre processos ocorre por troca de mensagens. 1

3 e OpenMP Por vezes, pode ser melhor construir um programa híbrido em que apenas um processo executa em cada multiprocessor e depois cada processo cria um conjunto de threads igual ao número de processadores do multiprocessor para executar as regiões paralelas do programa. 2

4 e OpenMP Como alternativa, podemos combinar ambas as estratégias e adaptar a divisão entre processos e threads de modo a optimizar a utilização dos recursos disponíveis sem que isso viole eventuais restrições ou requisitos do problema em causa. 3

5 e OpenMP A programação híbrida com o e o OpenMP oferece as seguintes vantagens:

6 e OpenMP A programação híbrida com o e o OpenMP oferece as seguintes vantagens: A programação híbrida adequa-se perfeitamente às arquitecturas actuais baseadas em clusters multiprocessor, pois permite diminuir o número de comunicações entre os diferentes nós e aumentar o desempenho de cada nó sem que isso acarrete um incremento considerável dos requisitos de memória.

7 e OpenMP A programação híbrida com o e o OpenMP oferece as seguintes vantagens: A programação híbrida adequa-se perfeitamente às arquitecturas actuais baseadas em clusters multiprocessor, pois permite diminuir o número de comunicações entre os diferentes nós e aumentar o desempenho de cada nó sem que isso acarrete um incremento considerável dos requisitos de memória. Aplicações que possuem dois níveis de paralelismo podem utilizar processos para explorar paralelismo de granularidade grossa/média, trocando mensagens ocasionalmente para sincronizar informação e/ou distribuir trabalho, e utilizar threads para explorar paralelismo de granularidade média/fina por partilha do espaço de endereçamento.

8 e OpenMP A programação híbrida com o e o OpenMP oferece as seguintes vantagens: A programação híbrida adequa-se perfeitamente às arquitecturas actuais baseadas em clusters multiprocessor, pois permite diminuir o número de comunicações entre os diferentes nós e aumentar o desempenho de cada nó sem que isso acarrete um incremento considerável dos requisitos de memória. Aplicações que possuem dois níveis de paralelismo podem utilizar processos para explorar paralelismo de granularidade grossa/média, trocando mensagens ocasionalmente para sincronizar informação e/ou distribuir trabalho, e utilizar threads para explorar paralelismo de granularidade média/fina por partilha do espaço de endereçamento. Aplicações que tenham restrições ou requisitos que possam limitar o número de processos que podem ser usados (como por exemplo o algoritmo de Fox), podem tirar partido do OpenMP para explorar o poder computacional dos restantes processadores disponíveis.

9 e OpenMP A programação híbrida com o e o OpenMP oferece as seguintes vantagens: A programação híbrida adequa-se perfeitamente às arquitecturas actuais baseadas em clusters multiprocessor, pois permite diminuir o número de comunicações entre os diferentes nós e aumentar o desempenho de cada nó sem que isso acarrete um incremento considerável dos requisitos de memória. Aplicações que possuem dois níveis de paralelismo podem utilizar processos para explorar paralelismo de granularidade grossa/média, trocando mensagens ocasionalmente para sincronizar informação e/ou distribuir trabalho, e utilizar threads para explorar paralelismo de granularidade média/fina por partilha do espaço de endereçamento. Aplicações que tenham restrições ou requisitos que possam limitar o número de processos que podem ser usados (como por exemplo o algoritmo de Fox), podem tirar partido do OpenMP para explorar o poder computacional dos restantes processadores disponíveis. Aplicações cujo balanceamento de carga seja difícil de conseguir apenas por utilização de processos, podem tirar partido do OpenMP para equilibrar esse balanceamento, atribuindo um diferente número de threads a diferentes processos em função da respectiva carga. 4

10 e OpenMP A maneira mais simples e segura de combinar o com o OpenMP é utilizar as directivas apenas fora das regiões paralelas do OpenMP. Quando isso acontece, não há qualquer problema nas chamadas à biblioteca do, pois apenas o master thread está activo durante todas as comunicações. #include <mpi.h> #include <omp.h> // incluir a biblioteca de funç~oes // incluir a biblioteca de funç~oes OpenMP main(int argc, char **argv) { _Init(&argc, &argv); // apenas master thread --> chamadas a funç~oes aqui #pragma omp parallel { // team of threads --> nenhuma chamada a funç~oes aqui } // apenas master thread --> chamadas a funç~oes aqui _Finalize(); } 5

11 Produto Matriz-Vector (mpi omp produto.c) Sejam matrix[rows,cols] e vector[cols] respectivamente uma matriz e um vector coluna. O produto matriz-vector é um vector linha result[rows] em que cada result[i] é o produto escalar da linha i da matriz pelo vector. Se tivermos P processos e T threads por processo, cada processo pode calcular P ROWS (ROWS/P) elementos do vector resultado e cada thread pode calcular T ROWS (P ROWS/T) elementos do vector resultado.

12 Produto Matriz-Vector (mpi omp produto.c) Sejam matrix[rows,cols] e vector[cols] respectivamente uma matriz e um vector coluna. O produto matriz-vector é um vector linha result[rows] em que cada result[i] é o produto escalar da linha i da matriz pelo vector. Se tivermos P processos e T threads por processo, cada processo pode calcular P ROWS (ROWS/P) elementos do vector resultado e cada thread pode calcular T ROWS (P ROWS/T) elementos do vector resultado. // distribuir a matriz _Scatter(matrix, P_ROWS * COLS, _INT, submatriz, P_ROWS * COLS, _INT, ROOT, _COMM_WORLD); // calcular o produto matriz-vector #pragma omp parallel for num_threads(t) for (i = 0; i < P_ROWS; i++) subresult[i] = produto_escalar(&submatriz[i * COLS], vector, COLS); // recolher as sub-matrizes _Gather(subresult, P_ROWS, _INT, result, P_ROWS, _INT, ROOT, _COMM_WORLD); 6

13 Multiplicação de Matrizes com o Algoritmo de Fox Para matrizes de dimensão A[N][N] e B[N][N] e P processos, o algoritmo de Fox divide as matrizes em P sub-matrizes de dimensão (N/Q)*(N/Q), em que Q*Q=P, e atribui cada uma delas aos P processos disponíveis no sistema. Para calcular o resultado da multiplicação das suas sub-matrizes, cada processo apenas necessita de trocar informação com os processos da mesma linha e da mesma coluna de sub-matrizes que as suas. for (stage = 0; stage < Q; stage++) { bcast = // escolher uma sub-matriz A em cada linha de processos _Bcast(); // e enviá-la para todos os processos na mesma linha // multiplicar a sub-matriz A recebida com a actual sub-matriz B #pragma omp parallel for private(i,j,k) for (i = 0; i < N/Q; i++) for (j = 0; j < N/Q; j++) for (k = 0; k < N/Q; k++) C[i][j] += A[i][k] * B[k][j]; _Send() // enviar a sub-matriz B para o processo acima _Recv() // e receber a sub-matriz B do processo abaixo } 7

14 Safe Por outro lado, se um programa for paralelizado de modo a ter chamadas à biblioteca do dentro das regiões paralelas do OpenMP, então vários threads podem chamar as mesmas directivas do e ao mesmo tempo. Para que tal seja possível, é necessário que a implementação do seja thread safe. #pragma omp parallel private(tid) { tid = omp_get_thread_num(); if (tid == id1) call_mpi_function1() // thread id1 chama funç~ao aqui else if (tid == id2) call_mpi_function2() // thread id2 chama funç~ao aqui else do_something(); }

15 Safe Por outro lado, se um programa for paralelizado de modo a ter chamadas à biblioteca do dentro das regiões paralelas do OpenMP, então vários threads podem chamar as mesmas directivas do e ao mesmo tempo. Para que tal seja possível, é necessário que a implementação do seja thread safe. #pragma omp parallel private(tid) { tid = omp_get_thread_num(); if (tid == id1) call_mpi_function1() // thread id1 chama funç~ao aqui else if (tid == id2) call_mpi_function2() // thread id2 chama funç~ao aqui else do_something(); } A especificação -1 não define qualquer tipo de suporte para multithreading. Esse tipo de suporte foi apenas considerado a partir da especificação -2 por utilização da chamada Init thread() em lugar da chamada Init(). 8

16 Iniciar o com Suporte para Multithreading int Init thread(int *argc, char ***argv, int required, int *provided) Init thread() inicia o ambiente de execução do (tal como o Init()) e define o nível de suporte para multithreading.

17 Iniciar o com Suporte para Multithreading int Init thread(int *argc, char ***argv, int required, int *provided) Init thread() inicia o ambiente de execução do (tal como o Init()) e define o nível de suporte para multithreading. required é o nível de suporte pretendido. provided é o nível de suporte disponibilizado pela implementação do.

18 Iniciar o com Suporte para Multithreading int Init thread(int *argc, char ***argv, int required, int *provided) Init thread() inicia o ambiente de execução do (tal como o Init()) e define o nível de suporte para multithreading. required é o nível de suporte pretendido. provided é o nível de suporte disponibilizado pela implementação do. O nível de suporte para multithreading pode ser: THREAD SINGLE: apenas um thread irá executar. É o mesmo que iniciar o ambiente de execução com o Init(). THREAD FUNNELED: apenas o master thread pode fazer chamadas. THREAD SERIALIZED: todos os threads podem fazer chamadas, mas apenas um thread de cada vez pode estar nessa situação. THREAD MULTIPLE: todos os threads podem fazer chamadas em simultâneo e sem qualquer tipo de restrições. 9

19 THREAD FUNNELED Com suporte THREAD FUNNELED apenas o master thread pode fazer chamadas.

20 THREAD FUNNELED Com suporte THREAD FUNNELED apenas o master thread pode fazer chamadas. Uma forma de garantir isso é proteger todas as chamadas com a directiva #pragma omp master do OpenMP que permite definir blocos de código que devem ser executados apenas pelo master thread.

21 THREAD FUNNELED Com suporte THREAD FUNNELED apenas o master thread pode fazer chamadas. Uma forma de garantir isso é proteger todas as chamadas com a directiva #pragma omp master do OpenMP que permite definir blocos de código que devem ser executados apenas pelo master thread. No entanto, como a directiva #pragma omp master não define qualquer barreira impĺıcita de sincronização entre os threads, é necessário utilizar a directiva #pragma omp barrier para definir duas barreiras de sincronização expĺıcitas entre todos os threads da região paralela (à entrada e à saída da directiva #pragma omp master) de modo a proteger a chamada.

22 THREAD FUNNELED Com suporte THREAD FUNNELED apenas o master thread pode fazer chamadas. Uma forma de garantir isso é proteger todas as chamadas com a directiva #pragma omp master do OpenMP que permite definir blocos de código que devem ser executados apenas pelo master thread. No entanto, como a directiva #pragma omp master não define qualquer barreira impĺıcita de sincronização entre os threads, é necessário utilizar a directiva #pragma omp barrier para definir duas barreiras de sincronização expĺıcitas entre todos os threads da região paralela (à entrada e à saída da directiva #pragma omp master) de modo a proteger a chamada. #pragma omp parallel { #pragma omp barrier // barreira explícita à entrada #pragma omp master // apenas o master thread faz a chamada call_mpi_function() #pragma omp barrier // barreira explícita à saída } 10

23 THREAD SERIALIZED Com suporte THREAD SERIALIZED todos os threads podem fazer chamadas, mas apenas um thread de cada vez pode estar nessa situação.

24 THREAD SERIALIZED Com suporte THREAD SERIALIZED todos os threads podem fazer chamadas, mas apenas um thread de cada vez pode estar nessa situação. Uma forma de garantir isso é proteger todas as chamadas com a directiva #pragma omp single do OpenMP que permite definir blocos de código que devem ser executados por apenas um thread.

25 THREAD SERIALIZED Com suporte THREAD SERIALIZED todos os threads podem fazer chamadas, mas apenas um thread de cada vez pode estar nessa situação. Uma forma de garantir isso é proteger todas as chamadas com a directiva #pragma omp single do OpenMP que permite definir blocos de código que devem ser executados por apenas um thread. No entanto, como a directiva #pragma omp single não define uma barreira impĺıcita de sincronização à entrada da directiva, é necessário utilizar a directiva #pragma omp barrier para definir essa barreira de sincronização expĺıcita entre todos os threads da região paralela (à entrada da directiva #pragma omp single) de modo a proteger a chamada.

26 THREAD SERIALIZED Com suporte THREAD SERIALIZED todos os threads podem fazer chamadas, mas apenas um thread de cada vez pode estar nessa situação. Uma forma de garantir isso é proteger todas as chamadas com a directiva #pragma omp single do OpenMP que permite definir blocos de código que devem ser executados por apenas um thread. No entanto, como a directiva #pragma omp single não define uma barreira impĺıcita de sincronização à entrada da directiva, é necessário utilizar a directiva #pragma omp barrier para definir essa barreira de sincronização expĺıcita entre todos os threads da região paralela (à entrada da directiva #pragma omp single) de modo a proteger a chamada. #pragma omp parallel { #pragma omp barrier #pragma omp single call_mpi_function() } // barreira explícita à entrada // apenas um thread faz a chamada // barreira implícita à saída 11

27 THREAD MULTIPLE Com suporte THREAD MULTIPLE todos os threads podem fazer chamadas em simultâneo e sem qualquer tipo de restrições.

28 THREAD MULTIPLE Com suporte THREAD MULTIPLE todos os threads podem fazer chamadas em simultâneo e sem qualquer tipo de restrições. Como a implementação é thread safe não é necessário nenhum mecanismo adicional de sincronização entre os threads da região paralela de modo a proteger as chamadas.

29 THREAD MULTIPLE Com suporte THREAD MULTIPLE todos os threads podem fazer chamadas em simultâneo e sem qualquer tipo de restrições. Como a implementação é thread safe não é necessário nenhum mecanismo adicional de sincronização entre os threads da região paralela de modo a proteger as chamadas. #pragma omp parallel private(tid) { tid = omp_get_thread_num(); if (tid == id1) call_mpi_function1() // thread id1 chama funç~ao aqui else if (tid == id2) call_mpi_function2() // thread id2 chama funç~ao aqui else do_something(); } 12

30 THREAD MULTIPLE A comunicação entre threads de diferentes processos levanta o problema de identificar o thread que está envolvido na comunicação, pois as funções de comunicação do apenas têm argumentos para identificar o ranking dos processos.

31 THREAD MULTIPLE A comunicação entre threads de diferentes processos levanta o problema de identificar o thread que está envolvido na comunicação, pois as funções de comunicação do apenas têm argumentos para identificar o ranking dos processos. Uma forma simples de resolver esse problema é utilizar o argumento tag das funções de comunicação como forma de identificar os threads envolvidos nas comunicações.

32 THREAD MULTIPLE A comunicação entre threads de diferentes processos levanta o problema de identificar o thread que está envolvido na comunicação, pois as funções de comunicação do apenas têm argumentos para identificar o ranking dos processos. Uma forma simples de resolver esse problema é utilizar o argumento tag das funções de comunicação como forma de identificar os threads envolvidos nas comunicações. _Init_thread(&argc, &argv, _THREAD_MULTIPLE, &thread_level); _Comm_rank(_COMM_WORLD, &my_rank); #pragma omp parallel num_threads(nthreads) private(tid) { tid = omp_get_thread_num(); if (my_rank == 0) // o processo 0 envia NTHREADS mensagens _Send(a, 1, _INT, 1, tid, _COMM_WORLD); else if (my_rank == 1) // o processo 1 recebe NTHREADS mensagens _Recv(b, 1, _INT, 0, tid, _COMM_WORLD, &status); } 13

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

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha

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

Introdução ao OpenMP

Introdução ao OpenMP Introdução ao OpenMP Fernando Silva DCC FCUP Recursos OpenMP.org (http://www.openmp.org) Tutorial (http://www.llnl.gov/computing/tutorials/openmp/) Implementação gratuita Omni OpenMP compiler project (http://phase.hpcc.jp/omni/)

Leia mais

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

Paralela e Distribuída. Memória Paralela com o OpenMP Programação Paralela e Distribuída Programação em Memória Paralela com o OpenMP OpenMP O que significa OpenMP: Open specifications for Multi Processing via collaborative work between interested parties

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

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 [email protected] 1 1 O que é Paralelismo? Conceitos Paralelismo é uma técnica usada em tarefas grandes e complexas

Leia mais

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza ([email protected]) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ   fevereiro, / 41 Thread Sistemas Operacionais Leonard B. Moreira UNIVERSIDADE ESTÁCIO DE SÁ e-mail: [email protected] fevereiro, 2013 1 / 41 Sumário 1 Introdução 2 Ambientes Monothread 3 Ambientes Multithread

Leia mais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais DCA-108 Sistemas Operacionais Capítulo 2 Luiz Affonso Guedes www.dca.ufrn.br/~affonso [email protected] Multiprogramação Luiz Affonso Guedes 1 Luiz Affonso Guedes 2 Conteúdo Caracterização de um SO Moderno

Leia mais

Programação Paralela e Distribuída Lista de Exercícios P2 2008/1

Programação Paralela e Distribuída Lista de Exercícios P2 2008/1 Programação Paralela e Distribuída Lista de Exercícios P2 2008/1 Sincronização de Relógio Questão 1 Explique por que existe a necessidade de sincronização de relógio em sistemas distribuídos. Questão 2

Leia mais

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva Introdução à Programação Paralela através de Padrões Denise Stringhini Calebe Bianchini Luciano Silva Sumário Introdução: conceitos de paralelismo Conceitos básicos sobre padrões de programação paralela

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

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

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,[email protected]

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

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Multi-núcleos Programação de Sistemas Core : 1/19 Introdução (1) [Def] núcleo ( core ) é uma unidade de processamento. O multicore (Dual, Quad,...) possui 2 ou mais núcleos que

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Multi-núcleos Programação de Sistemas Core : 1/19 Introdução (1) [Def] núcleo ( core ) é uma unidade de processamento. O multicore (Dual, Quad,...) possui 2 ou mais núcleos que

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

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional Sistemas Operacionais Prof. Pedro Luís Antonelli Anhanguera Educacional ARQUITETURA E IMPLEMENTAÇÃO Pacote de Threads Conjunto de rotinas disponíveis para que uma aplicação utilize as facilidades dos threads.

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

Mochila Binária com OpenMP

Mochila Binária com OpenMP UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TÉCNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO Mochila Binária com OpenMP Cícero Augusto de Lara Pahins, Cristiano Reis dos Santos. Professora: Profª Andrea Schwertner

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Processos Gustavo Reis [email protected] 1 - Processos Conceito originado do campos de sistemas operacionais no qual, em geral, são definidos como programas em execução

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

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi Introdução aos Conceitos de Computação Paralela através da estimativa de Pi Diego da Silva Pereira 1 1 Professor de Redes de Computadores IFRN Câmpus Currais Novos. e-mail: [email protected] Resumo:

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:

Leia mais

The future is parallel but it may not be easy

The future is parallel but it may not be easy The future is parallel but it may not be easy Adriano Tabarelli, Alex Morinaga, Caio Silva, Cássia Ferreira, Daniel Santos, Eduardo Apolinário, Hugo Posca, Thiago Batista, Paulo Floriano Universidade de

Leia mais

Threads. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

Threads. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos, Threads Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa Objetivos da aula Introduzir a noção de thread uma unidade básica de utilização do CPU Discutir os benefícios e os problemas

Leia mais

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1 Márcia Da Silva 2, Igor Gamste Haugg 3, Eliézer Silveira Prigol 4, Édson L. Padoin 5, Rogério S. M. Martins

Leia mais

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento

Leia mais

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião Processos Sistemas operacionais modernos criam vários processadores virtuais, cada um para executar um programa. Para monitorar

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais 04 Processos Introdução Um sistema de computação quase sempre tem mais atividades a executar que o número de processadores disponíveis. Diferentes tarefas têm necessidades distintas

Leia mais

Arquiteturas Paralelas

Arquiteturas Paralelas ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Arquiteturas Paralelas Medidas de desempenho Alexandre Amory Edson Moreno Índice 2 1. Introdução 2. Medidas de Desempenho Introdução 3 Aumento de desempenho dos

Leia mais

Sistemas Distribuídos Aula 3

Sistemas Distribuídos Aula 3 Sistemas Distribuídos Aula 3 Aula passada Processos IPC Características Ex. sinais, pipes, sockets Aula de hoje Threads Kernel level User level Escalonamento Motivação: Servidor Web Considere Servidor

Leia mais

Programação Concorrente

Programação Concorrente INE 5410 Programação Concorrente Professor: Lau Cheuk Lung (turma A) INE UFSC [email protected] Conteúdo Programático 1. 2. Programação Concorrente 3. Sincronização 1. Condição de corrida, região critica

Leia mais

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina

Leia mais

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Introdução Memória Compartilhada e Distribuída _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Um sistema de memória compartilhada faz a memória física global de um sistema igualmente

Leia mais

MC102 Algoritmos e Programação de Computadores

MC102 Algoritmos e Programação de Computadores MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2015 Roteiro 1 Fundamentos de análise de algoritmos 2 Cálculo da função de custo 3 Exercícios Instituto

Leia mais

Pesquisador em Saúde Pública Prova Discursiva INSTRUÇÕES

Pesquisador em Saúde Pública Prova Discursiva INSTRUÇÕES Otimização e modelagem a partir de dados em ambientes computacionais de alto desempenho Pesquisador em Saúde Pública Prova Discursiva 1. Você recebeu do fiscal o seguinte material: INSTRUÇÕES a) Este Caderno

Leia mais

Desafios do Mapeamento de Processos em Arquiteturas Many-Core

Desafios do Mapeamento de Processos em Arquiteturas Many-Core Desafios do Mapeamento de Processos em Arquiteturas Many-Core Professor: Philippe O. A. Navaux Instituto de Informática - UFRGS Escola Regional de Alto Desempenho São Paulo 1 Indíce Evolução dos Processadores

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

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Tópicos Conceitos Modelos multithreads Bibliotecas Opções de criação

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

Modelo de Programação Paralela

Modelo de Programação Paralela Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes Como especificar uma solução paralela pensando em todos esses detalhes? O que queremos? Eecutar a solução

Leia mais

Introdução à Programação em C

Introdução à Programação em C Introdução à Programação em C Tipos e Operadores Elementares Estruturas de Controlo Resumo Novidades em C Exemplo: Factorial Tipos de Dados Básicos Saltos Condicionais: if-then-else Valor de retorno de

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência Aula 11 - Threads e Concorrência Conteúdo Programático desta aula Apresentar os Conceitos de Threads, Concorrência e Sincronização. Verificar a aplicabilidade destes conceitos no mercado, bem como sua

Leia mais

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads

Threads em Ambiente LINUX. Estudo e testes com a biblioteca pthreads Universidade Federal do ABC Disciplina: BC 1518 Sistemas Operacionais (SO) Prática: Threads Atividade 3 Threads em Ambiente LINUX Objetivo Estudo e testes com a biblioteca pthreads Threads Como vimos em

Leia mais

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM

Curso de C. Introdução by Arnaldo V. Moura e Daniel F. Ferber 3/10/ :43 AM Curso de C Introdução 1 Introdução Roteiro: Recordando Algoritmos Linguagem de Programação O computador Instruções de Máquina Níveis de Abstração Compilação 2 Algoritmos Recordando: Algoritmo: conjunto

Leia mais

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído Arquitetura de Computadores Sistemas computacionais para processamento paralelo e distribuído Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO Processamento

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 03 Técnicas de Projeto de Algoritmos (Divisão e Conquista) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force)

Leia mais

OpenMP. Um método de paralelização para as linguagens Fortran, C, C++ para shared memory systems.

OpenMP. Um método de paralelização para as linguagens Fortran, C, C++ para shared memory systems. OpenMP Um método de paralelização para as linguagens Fortran, C, C++ para shared memory systems. Directivas para o compilador Threads Biblioteca de rotinas Variáveis de ambiente entidade que pode executar

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída INE 5645 Programação Paralela e Distribuída Professor: Lau Cheuk Lung (turma A) INE UFSC [email protected] Conteúdo Programático 1. Introdução 2. Programação Paralela 3. Controle de Concorrência 4.

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

Linguagem de Programação II

Linguagem de Programação II Linguagem de Programação II Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB [email protected] Mo6vação Adaptar a estrutura lógica de um problema (Ex.: Servidores Web). Lidar com disposi6vos independentes

Leia mais

SSC PROGRAMAÇÃO CONCORRENTE

SSC PROGRAMAÇÃO CONCORRENTE SSC- 0143 PROGRAMAÇÃO CONCORRENTE Aula 08 Avaliação de Desempenho de Programas Paralelos Prof. Jó Ueyama Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo

Leia mais

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado Multiprocessadores - A evolução tecnológica dos processadores iria diminuir drasticamente. 2- O caminho para o aumento de desempenho é de unir mais de um processador para realizar a mesma tarefa em menos

Leia mais

Sistemas de Equações Lineares e Equações Vectoriais Aula 2 Álgebra Linear Pedro A. Santos

Sistemas de Equações Lineares e Equações Vectoriais Aula 2 Álgebra Linear Pedro A. Santos Sistemas de Equações Lineares e Equações Vectoriais Aula 2 Álgebra Linear MEG Operações Elementares Trocar a posição de duas equações Multiplicar uma equação por uma constante diferente de zero Não alteram

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

Estrutura do Sistema Operacional

Estrutura do Sistema Operacional Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Aula 04 Estrutura do Sistema Operacional 2 1 Estrutura do Sistema Operacional

Leia mais

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução

Sistemas Operativos. Objetivo. Entrega do Questionário. Exercício 1. Exercício 2. Exercício 3. Exercício 4. Grupo 1 Introdução Sistemas Operativos Objetivo O objetivo deste questionário é levá-lo a rever os conceitos básicos dos sistemas operativos, bem como os algoritmos de scheduling e mecanismos de sincronização estudados.

Leia mais

Sistemas Lineares. ( Aula 3 )

Sistemas Lineares. ( Aula 3 ) Sistemas Lineares ( Aula 3 ) Determinante Definição: Determinante Matriz quadrada é a que tem o mesmo número de linhas e de colunas (ou seja, é do tipo n x n). A toda matriz quadrada está associado um

Leia mais

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela Arquitetura de Computadores Paralelos Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela Por que estudar Computação Paralela e Distribuída? Os computadores sequenciais

Leia mais

Linguagens de programação. Introdução ao C (continuação)

Linguagens de programação. Introdução ao C (continuação) Linguagens de programação Introdução ao C (continuação) M@nso 2003 Sumário Introdução à programação Linguagem C Repetição de instruções Ciclos com controlo inicial ciclo While ciclo For Ciclos com controlo

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

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,

Leia mais

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná em C Linguagem de Programação Estruturada I Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Sumário Funções: Conceitos; Forma Geral das funções; Regras de Escopo; Argumentos

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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Classificação de Flynn Fonte: Professoras. Sarita UFRJ e Thais V. Batista - UFRN Arquiteturas Paralelas Computação Paralela Conceitos Permite a execução das tarefas em menor tempo,

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java Aula 12 - Threads e Concorrência em Java Conteúdo Programático desta aula Aplicar os conceitos e threads, processos concorrentes e sincronização em pequenos programas. Aplicar e verificar os conceitos

Leia mais

Revisão de Programação em C++ Leandro Tonietto Estruturas de Dados em C++ Segurança da Informação

Revisão de Programação em C++ Leandro Tonietto Estruturas de Dados em C++ Segurança da Informação Revisão de Programação em C++ Estruturas de Dados em C++ Segurança da Informação [email protected] http://www.inf.unisinos.br/~ltonietto mar-09 Sumário Revisão de conceitos básicos de programação Diretiva

Leia mais

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU SOP - TADS Threads Prof. Ricardo José Pfitscher [email protected] Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula Processos [1/3] Conceito:

Leia mais

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2

Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação /2 Universidade Federal do Rio de Janeiro Instituto de Matemática / DCC Inteligência Computacional Aula 2 - Introdução ao MatLab Graduação - 2003/2 Prof. A. C. G. Thomé, PhD [email protected] Airam C. P.

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

Organização e Arquitetura de Computadores

Organização e Arquitetura de Computadores Organização e Arquitetura de Computadores Hierarquia de Memória: Introdução Alexandre Amory Edson Moreno Nas Aulas Anteriores Computação Organização interna de CPU Parte operativa: Lógica combinacional

Leia mais

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07. Tópicos avançados

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07. Tópicos avançados Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Tópicos avançados Este documento apresenta alguns métodos para a resolução de problemas, susceptíveis de ocorrer na resolução

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

Linguagem e Técnicas de Programação

Linguagem e Técnicas de Programaçã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

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

COMPUTAÇÃO PARALELA E DISTRIBUÍDA COMPUTAÇÃO PARALELA E DISTRIBUÍDA Aluno: Alessandro Faletti Orientadora: Noemi Rodriguez Introdução O objetivo inicial no projeto era aplicar a possibilidade de processamento em paralelo no sistema CSBase

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída Curso de Informática DCC-IM / UFRJ Programação Paralela e Distribuída Um curso prático Mario J. Júnior Gabriel P. Silva Colaboração: Adriano O. Cruz, Julio S. Aude Ementa Paradigma de Troca de Mensagens

Leia mais

Modularidade - Fun ções e Procedimentos

Modularidade - Fun ções e Procedimentos Modularidade - Fun ções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situa ções, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

Algoritmos Genéticos em Ambientes Paralelos

Algoritmos Genéticos em Ambientes Paralelos Algoritmos Genéticos em Ambientes Paralelos Michele Alves de Freitas Batista Instituto Nacional de Pesquisas Espaciais [email protected] Lamartine Nogueira Frutuoso Guimarães Instituto Nacional

Leia mais