Relatório Trabalho 1 Programação Paralela
|
|
- Rosângela Godoi Vasques
- 7 Há anos
- Visualizações:
Transcrição
1 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 1. Introdução Como trabalho parcial da disciplina de Programação Paralela ELC139, foi proposto um trabalho relacionado à paralelização de um método bastante conhecido no meio cientifico, o método de Monte Carlo. O termo método de Monte Carlo refere-se a uma abordagem para calcular soluções aproximadas para problemas de diversas áreas, tendo como principal característica o emprego de números aleatórios, ou pseudo-aleatórios, para representar valores de variáveis envolvidas em algum fenômeno a ser estudado ou acompanhado. A aplicação escolhida para o presente trabalho utiliza o método de Monte Carlo para simular incêndios em florestas, utilizando um modelo simples em que o fogo se propaga de uma árvore para outra com uma dada probabilidade. A cada execução da aplicação, realizamse vários experimentos com diferentes probabilidades de propagação do fogo. Na saída, temse o percentual de árvores queimadas para cada probabilidade de propagação considerada. 2. Objetivos e metodologia O objetivo principal deste trabalho consiste em analisar o código sequencial do programa fornecido e buscar regiões em que seja possibilitada a aplicação de uma paralelização, visando obter um maior rendimento na execução do programa. Na versão sequencial do código é possível observar que são feitos diversos experimentos usando alguns laços de repetição, sendo possível, a partir de uma análise, paralelizar a execução desses experimentos dividindo em diferentes threads porções das operações a serem executadas dentro dos laços de repetição. Para a concretização desse trabalho foram usadas duas abordagens de paralelização, uma utilizando o OpenMP e a outra utilizando os recursos do MPI. Na versão que foi paralelizada com o OpenMP, foi abordada a paralelização do primeiro laço de repetição. Porém com esta abordagem não foram obtidos resultados muito significativos, como pode ser visto na seção 3, pois com essa divisão em threads, algumas threads ficam com muito pouco trabalho para fazer, no caso de probabilidades baixas, e outras ficam com muito trabalho para fazer, no caso de probabilidades altas. Isso acarreta no atraso da execução da aplicação, pois as threads responsáveis por calcular as probabilidades mais baixas são executadas quase que imediatamente, enquanto as demais demoram a terminar sua execução. O trecho do código onde foi aplicada essa abordagem de paralelização pode ser visto abaixo.
2 ... try { Forest* forest; Random rand; prob_step = (prob_max prob_min)/(double)(n_probs 1); printf( Probabilidade,PercentualQueimado\n ); // Indicação de que a partir daqui o código será paralelizado. #pragma omp parallel shared(forest_size,n_trials) private(it,ip,percent_burned,prob_spread,forest) { // Cada thread terá sua própria floresta. forest = new Forest(forest_size); prob_spread = new double[n_probs]; percent_burned = new double[n_probs]; // Para cada probabilidade, calcula o percentual de árvores queimadas. // Paralelizando o primeiro laço de repetição. #pragma omp for schedule (dynamic) for (ip = 0; ip < n_probs; ip++){ prob_spread[ip] = prob_min + (double) ip * prob_step; percent_burned[ip] = 0.0; rand.setseed(base_seed+ip); // Nova sequência de números aleatórios // Executa vários experimentos for (it = 0; it < n_trials; it++){ // Queima floresta até o fogo apagar forest >burnuntilout(forest >centraltree(), prob_spread[ip], rand); percent_burned[ip] += forest >getpercentburned(); // Calcula média dos percentuais de árvores queimadas percent_burned[ip] /= n_trials; // Mostra resultado para esta probabilidade printf( %lf,%lf\n, prob_spread[ip], percent_burned[ip]); delete[] prob_spread; delete[] percent_burned; // Fim da região paralela do código... Já na versão que foi paralelizada com o MPI, foi abordada a paralelização do segundo laço de repetição. Como pode ser visto na seção 3, essa abordagem ofereceu uma distribuição mais uniforme da carga de trabalho. Isso acarreta em uma melhora no despenho da aplicação, pois cada processo faz uma quantidade igual de trabalho, e nenhum fica ocioso esperando os outros. O trecho do código onde foi aplicada essa abordagem de paralelização pode ser visto abaixo.... // Inicialização do MPI int task_id, n_tasks; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &task_id); MPI_Comm_size(MPI_COMM_WORLD, &n_tasks); // Parâmetros dos experimentos
3 int params[3] = {30, 000, 101; int &forest_size = params[0]; int &n_trials = params[1]; int &n_probs = params[2]; double* percent_burned; // Percentuais queimados (saída) double* prob_spread; // Probabilidades (entrada) double prob_min = 0.0; double prob_max = 1.0; double prob_step; int base_seed = 100; // A primeira tarefa lê os argumentos da linha de comando e passa eles para as outras tarefas if (task_id == 0) checkcommandline(argc, argv, forest_size, n_trials, n_probs); MPI_Bcast(¶ms, 3, MPI_INT, 0, MPI_COMM_WORLD); try { Forest* forest = new Forest(forest_size); Random rand; prob_spread = new double[n_probs]; percent_burned = new double[n_probs]; prob_step = (prob_max prob_min)/(double)(n_probs 1); // Para cada probabilidade, calcula o percentual de árvores queimadas for (int ip = 0; ip < n_probs; ip++) { prob_spread[ip] = prob_min + (double) ip * prob_step; percent_burned[ip] = 0.0; rand.setseed(base_seed+ip); // Nova sequência de números aleatórios // Calcula o número de testes que cada tarefa terá que realizar int n_trials_per_task = n_trials / n_tasks; // A tarefa 0 calcula o resto da divisão para fechar o número total. if (task_id == 0) n_trials_per_task += n_trials % n_tasks; // Executa vários experimentos for (int it = 0; it < n_trials_per_task; it++) { // Queima floresta até o fogo apagar forest >burnuntilout(forest >centraltree(), prob_spread[ip], rand); percent_burned[ip] += forest >getpercentburned(); // Vetor para reunir os resultados de todos na tarefa 0 double *percent_burned_all = NULL; if (task_id == 0) percent_burned_all = new double[n_probs]; // Usa a Reduce para somar as porcentagens queimadas em cada tarefa e armazenar em percent_burned_all MPI_Reduce(percent_burned, percent_burned_all, n_probs, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
4 if (task_id == 0) { printf( Probabilidade,PercentualQueimado\n ); // Calcula as médias e imprime os resultados for (int ip = 0; ip < n_probs; ip++) printf( %lf,%lf\n, prob_spread[ip], percent_burned_all[ip] / n_trials); delete[] prob_spread; delete[] percent_burned; if (task_id == 0) { delete[] percent_burned_all; Resultados Foram executados diversos testes com as duas versões do programa paralelizado para poder obtermos alguns resultados e determinar se houve ganho de desempenho com a utilização da nova abordagem. Os testes foram realizados nas duas versões com os seguintes argumentos de entrada:./firesim ,./firesim ,./firesim e./firesim Os resultados das execussões, assim como o cálculo do speedup e desenpenho obtido podem ser observados abaixo, em forma tabular e em forma gráfica. Os primeiros dados apresentados são referentes à verão paralelizada com o OpenMP e os demais referentes à versão paralelizada com o MPI OpenMP Com essa abordagem não foi obtido um bom desempenho com a paralelização, pois a partir de duas threads o desempenho começou a piorar gradativamente. A seguir estão expostos os tempos de execução e cálculo de speedup e desempenho para a versão paralelizada usando o OpenMP Uso:./firesim Threads Tempo ideal real Desempenho 1 0m11.810s 2 0m10.32s % 4 0m11.232s % 8 0m13.278s % 16 0m14.622s % 32 0m1.81s %
5 Número de threads Uso./firesim Threads Tempo ideal real Desempenho 1 0m19.99s 2 0m17.010s % 4 0m19.348s % 8 0m19.147s % 16 0m18.78s % 32 0m19.749s % Número de threads
6 Uso./firesim Threads Tempo ideal real Desempenho 1 2m27.06s 2 1m47.82s % 4 1m41.481s % 8 1m36.10s % 16 1m34.873s % 32 1m34.749s % Número de threads Uso./firesim Threads Tempo ideal real Desempenho 1 1m3.901s 2 0m47.114s % 4 0m39.011s % 8 0m38.63s % 16 0m38.447s % 32 0m38.838s %
7 Número de threads 3.2. MPI Com essa abordagem foram obtidos resultados melhores, e o desempenho teve uma melhora constante com o aumento do número de processos. Porém, os resultados só foram analisados até seis processos simultâneos, pois quando se tentava rodar com mais do que isso no laboratório, a biblioteca começava a gerar erros. A seguir estão expostos os tempos de execução e cálculo de speedup e desempenho para a versão paralelizada usando o MPI Uso:./firesim Processos Tempo ideal real Desempenho 1 0m20.007s 2 0m13.87s % 3 0m8.109s % 4 0m6.7s % 0m.667s % 6 0m.841s %
8 Número de processos Uso./firesim Processos Tempo ideal real Desempenho 1 0m39.488s 2 0m14.92s % 3 0m14.67s % 4 0m10.929s % 0m8.89s % 6 0m6.804s % Número de processos
9 Uso./firesim Processos Tempo ideal real Desempenho 1 1m41.744s 2 1m1.08s % 3 1m.84s % 4 0m42.26s % 0m34.207s % 6 0m28.917s % Número de processos Uso./firesim Processos Tempo ideal real Desempenho 1 0m46.791s 2 0m41.274s % 3 0m30.864s % 4 0m2.891s % 0m20.27s % 6 0m16.28s %
10 Número de processos 4. Conclusão Em geral, as aplicações do método de Monte Carlo são computacionalmente intensivas, pois é necessário repetir experimentos com diversas amostras de números para se fazer alguma análise estatística. Com a execução deste trabalho foi observado que é possível ter um ganho de desempenho em aplicações desse tipo com o uso de paralelização. Porém, para se obter esse ganho é necessário analisar com cuidado o código a ser paralelizado para que a solução seja adequada. Foi perceptível que a versão paralelizada com o MPI teve um maior desempenho, pois nessa versão o código foi paralelizado de uma maneira melhor, que distribui as tarefas igualitariamente entre os processos, permitindo que a execução se torne mais rápida. Referências Argonne National Laboratory/Mississippi State University. Manual MPICH. Disponível em < Acesso em 11 mai MPI Forum. The Message Passing Interface (MPI) standard. Disponível em < www-unix.mcs.anl.gov/mpi/>. Acesso em 11 mai OpenMP. OpenMP: Simple, Portable, Scalable SMP Programming. Disponível em <http: //openmp.org/>. Acesso em 11 mai Wikipedia. Monte Carlo method. Disponível em < Monte_Carlo_method>. Acesso em 11 mai
Sistemas Distribuídos Message-Passing
0010010101011101010111100010111100010101010100100111001010001001010100101010100010010100101010110101010101 01100000011111101010010100010101010010010101101001000100101010111010101111000101111 101010101001001110010100010010101001010101000100101001010101101010101010110000001111110101001010001010101001001010110100100010010
Leia maisINE5645 PROGRAMAÇAO PARALELA E DISTRIBUÍDA PROVA 1 18/09/2017 ALUNO: Prof. Bosco
INE5645 PROGRAMAÇAO PARALELA E DISTRIBUÍDA PROVA 1 18/09/2017 ALUNO: Prof. Bosco 1. a. (Verdade/Falso) Threads ou processos são programas sequenciais. Programação concorrente é aquela onde diversos processos/threads
Leia maisIntrodução OpenMP. Nielsen Castelo Damasceno
Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto
Leia maisProgramaçã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 maisIntroduçã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 maisProgramaçã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 maisEXERCÍ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 maisIntroduçã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 maisAluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER
COMPARAÇÃO DE DESEMPENHO NA PROGRAMAÇÃO PARALELA HÍBRIDA (MPI + OPENMP) NA BUSCA DE TEXTO EM ARQUIVOS 1 COMPARISON OF PERFORMANCE IN HYBRID PARALLEL PROGRAMMING (MPI + OPENMP) IN SEARCH OF TEXT IN FILES
Leia maisUM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1
UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1 Eldair F. Dornelles 2, Henrique A. Richter 3, Miquéias F. M. Trennepohl 4, Taís T. Siqueira
Leia maisDESENVOLVIMENTO 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 maisfor(int x=0; x < width; x++) { for(int y=0; y < height; y++) { finalimage[x][y]=renderpixel(x,y, &scenedata); } }
Paralelização em OpenMP Identifique os loops pesados ; Distribua-os: Versão sequencial double res[10000]; calculo_pesado(&res[i]); Versão paralela double res[10000]; for calculo_pesado(&res[i]); OMP for
Leia maisQUEBRA 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 maisArquitecturas 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 maisOpenMP: Variáveis de Ambiente
Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de
Leia maisCAP-387(2016) Tópicos Especiais em
CAP-387(2016) Tópicos Especiais em Computação Aplicada: Construção de Aplicações Massivamente Paralelas Aula 34: Programação MPI+OpenMP Celso L. Mendes, Stephan Stephany LAC / INPE Emails: celso.mendes@inpe.br,
Leia maisOpenMP. Slides baseados em tutorial de Tim Mattson da Intel
OpenMP Slides baseados em tutorial de Tim Mattson da Intel O que é OpenMP? Uma especificação para um conjunto de diretivas de compilação, rotinas de biblioteca e variáveis de sistema que podem ser utilizadas
Leia maisINE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO
INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre o
Leia maisConstrutores de Sicronização em OpenMP
Construtores de Sicronização em OpenMP Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br
Leia maisJorge 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 maisAlgoritmos 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 maisProgramação Concorrente e Paralela
Comunicação por Troca de Mensagens 2016 Troca de Mensagens forma básica de comunicação em ambientes de memória distribuída outras camadas podem ser construídas sobre trocas de mensagens básicas mas também
Leia maisINE 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 maisAula 11. Prof. Laura Silva de Assis. Engenharia da Computação. CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca
Programação I Aula 11 Prof. Laura Silva de Assis Engenharia da Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis 2 o semestre - 2015 1 Sumário
Leia maisParalela e Distribuída. com o MPI e o OpenMP
Programação Paralela e Distribuída Programação Híbrida com o e o OpenMP e OpenMP Uma forma de executar um programa em paralelo num cluster multiprocessor é criar um processo por cada processador. Nesse
Leia maisComputação eletrônica: Estruturas de repetição
Computação eletrônica: Estruturas de repetição Gurvan Huiban ghuiban@cin.ufpe.br Plano de aula 1 2 A estrutura while 3 A estrutura do-while 4 Observações Estruturas de repetição Repetir a execução de um
Leia maisProgramação de Alto Desempenho - 2. Prof: Carla Osthoff
Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda
Leia maisComputaçã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 maisANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1
ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1 Éder Paulo Pereira 2, Gilberto Przygoda Marmitt 3, Emilio Hoffmann De Oliveira 4, Edson Luiz Padoin 5, Carlos Eduardo Das Chagas
Leia maisParalelismo em Computadores com Tecnologia Multicore
IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário
Leia maisIntrodução à OpenMP (Dia 1) Prof. Guido Araujo
Introdução à OpenMP (Dia ) Prof. Guido Araujo www.ic.unicamp.br/~guido Roteiro Escrevendo programas usando OpenMP Usando OpenMP para paralelizar laços seriais com pequenas mudanças no código fonte Explorar
Leia maisOpenMP. 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 maisEstatística e Modelos Probabilísticos - COE241
Estatística e Modelos Probabilísticos - COE241 Aula passada Função Distribuição Condicional Calculando Probabilidades condicionando Esperança Condicional Aula de hoje Análise de Comandos de Programação
Leia maisParalelização do Phyml 3.0, Programa para Reconstrução de Árvores Filogenéticas, usando OpenMP
Paralelização do Phyml 3.0, Programa para Reconstrução de Árvores Filogenéticas, usando OpenMP Martha Torres 1, Ayran Oliveira Soares Vieira 1 1 Departamento de Ciências Exatas e Tecnológicas Universidade
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes marinagomes@unipampa.edu.br 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
Leia maisPor 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 maisINE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO
INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre o
Leia maisINE 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 maisDistâncias entre vértces em um grafo. Paralelização. André de Freitas Smaira
Distâncias entre vértces em um grafo Paralelização André de Freitas Smaira 1 1 Comentários iniciais Os códigos enviados são referentes à contabilização do tempo que não inclui a escrita (esse assunto será
Leia maisIntel Thread Building Blocks (TBB)
Intel Thread Building Blocks (TBB) MCZA020-13 - Programação Paralela Emilio Francesquini e.francesquini@ufabc.edu.br 2019.Q1 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Disclaimer
Leia maisProgramação em Paralelo OpenMP
Programação em Paralelo OpenMP N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: OpenMP 1 / 15 Introdução Potencial do GPU vs CPU Cálculo: 367
Leia maisRoteiro da apresentação. Por que o alto desempenho? Máquinas de Alto desempenho. Projetos de Alto Desempenho
Roteiro da apresentação O contexto: do Processamento de Alto Desempenho à programação paralela... Definição, Plataformas computacionais, Tendências arquiteturais. O problema: a programação tradicional
Leia maisParalelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)
Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Leia maisTÉCNICAS DE PROGRAMAÇÃO. Estrutura de dados
TÉCNICAS DE PROGRAMAÇÃO Estrutura de dados O que são estrutura de dados? É a forma como os armazenamos tipos de dados, vistos dia a dia, ou seja, nada mais são do que a transformação de uma forma de armazenamento
Leia maisOpenMP: Uma Introdução
Instituto de Informática OpenMP: Uma Introdução Cláudio Geyer Fonte! Fontes! Slides inicialmente baseados em palestra de Ruud van der Pas! Janeiro de 2009! Na Nanyang Technological University, Singapore!
Leia maisTÍ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 maisINE 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 maisAlgoritmos e Técnicas de Programação. Professora: Luciana Faria
Algoritmos e Técnicas de Programação Professora: Luciana Faria Estrutura de Repetição condicional Estrutura de repetição Nas aulas anteriores verificamos que a execução sequencial dos comandos da função
Leia maisComunicaçã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 maisParalela e Distribuída. Memórias Cache e Arquitecturas Multi-Processador
Programação Paralela e Distribuída Memórias Cache e Arquitecturas Multi-Processador Memórias Cache e Arquitecturas Multi-Processador A principal motivação para utilizar o OpenMP é conseguir maximizar a
Leia mais5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios.
3636363636363636363636363636363636363636363636363636 5 - COMANDOS DE CONTROLE DE PROGRAMA Em C existem os comandos de decisões, os comandos de iteração (ou de laços) e os comandos de desvios. 5.1 - Comandos
Leia maisSub-rotinas David Déharbe
Sub-rotinas David Déharbe 1 1 Objetivos da aula Os conceitos de sub-rotina, funções e procedimentos; Como usar sub-rotinas em C: parâmetros de sub-rotinas: parâmetros formais e parâmetros efetivos. passagem
Leia maisLaborató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 maisMemórias Cache em Arquiteturas Multiprocessador e Multicore
Memórias Cache em Arquiteturas Multiprocessador e Multicore Ricardo Rocha Departamento de Ciência de Computadores Faculdade de Ciências Universidade do Porto Computação Paralela 2015/2016 R. Rocha (DCC-FCUP)
Leia maisLinguagem de Programação
Linguagem de Programação Vetores e Strings int vetor[] / rand() / #define / char string[] / gets() Gil Eduardo de Andrade Vetores Introdução Um vetor pode ser definido como é um conjunto de elementos (variáveis)
Leia maisapt-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 maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: estruturas de repetição While / Do While / For Prof. Renato Pimentel 1 Estruturas de repetição O real poder dos computadores está
Leia maisEstruturas de repetição
Título em português: FEITIÇO DO TEMPO (1993) Sinopse: Um repórter de televisão que faz previsões de meteorologia vai à uma pequena cidade para fazer uma matéria especial sobre o inverno. Querendo ir embora
Leia maisAgenda. O que é OpenMP? Regiões Paralelas Construtores para Compartilhamento de
Programando OpenMP Agenda O que é OpenMP? Regiões Paralelas Construtores para Compartilhamento de Trabalho Montando um escopo de dados para proteger de condições de corrida Cláusulas de agendamento O que
Leia maisMochila 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 maisProgramação Concorrente e Paralela
2010.2 Objetivos princípios e técnicas de programação paralela multiprocessadores memória compartilhada troca de mensagens arquiteturas alternativas multicomputadores troca de mensagens obs: Essa troca
Leia maisOpenMP: Variáveis de Ambiente
Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de
Leia maisBibliografia. OpenMP. Disponibilidade de OpenMP. Abordagem SPMD. Nicolas Maillard
Bibliografia Nicolas Maillard nicolas@inf.ufrgs.br Instituto de Informática Universidade Federal do Rio Grande do Sul home-page: http://www.openmp.org/presentations Parallel Programming in. R. Chandra
Leia maisEstruturas de Repetição
Estruturas de Repetição Disciplina: Algoritmos e Programação Luciano Moraes Da Luz Brum Universidade Federal do Pampa Unipampa Campus Bagé Email: lucianobrum18@gmail.com Horários de atendimento: (outros
Leia maisProgramação Concorrente e Paralela
projeto de programas paralelos 2016 PCAM problema particionamento comunicacao aglomeracao mapeamento desenhada para memória distribuída mas muitas idéias em comum Particionamento idéia é expor oportunidades
Leia maisIntrodução à Programação Aula 07. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 07 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação ARGUMENTOS POR LINHA DE COMANDO 2 Argumento por linha de comando Na
Leia maisProgramação de Computadores II Aula 03. Linguagem C I
Programação de Computadores II Slides cedidos por Karina Mochetti 2018.1 C vs Python Python é uma linguagem muito mais nova, de 1991. C é muito mais eciente, os programas rodam mais rápido. Seu objetivo
Leia maisINSTRUÇÕES DE REPETIÇÃO
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 6 INSTRUÇÕES DE REPETIÇÃO As instruções de repetição permitem fazer com que a execução de uma
Leia maisMC-102 Aula 24 Arquivos em C e Parâmetros do Programa
MC-102 Aula 24 Arquivos em C e Parâmetros do Programa Instituto de Computação Unicamp 3 de Novembro de 2016 Roteiro 1 Arquivos Introdução a Arquivos em C Nomes e Extensões Tipos de Arquivos Caminhos Absolutos
Leia maisImplementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação
Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias
Leia maisTécnicas de Paralelização
Técnicas de Paralelização 2 Particionar e dividir para conquistar Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson &
Leia maisArquiteturas 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 maisDGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014
DGPAPP Tutorial Daniel Centeno Einloft Vinicius Meirelles Pereira 20 May 2014 Qualquer um tem o direito de copiar, modicar e distribuir cópias deste documento, sob os termos da GNU Free Documentation License
Leia maisLINGUAGEM C: COMANDOS DE REPETIÇÃO
LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições
Leia maisOpenMP. Slides baseados em tutorial de Tim Mattson da Intel
OpenMP Slides baseados em tutorial de Tim Mattson da Intel Modelo OpenMP Como as threads interagem? OpenMP é um modelo baseado em multithreading Threads se comunicam pelo compartilhamento de variáveis
Leia maisBALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1
BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1 Guilherme Henrique Schiefelbein Arruda 2, Edson Luiz Padoin 3. 1 Trabalho desenvolvido no contexto do
Leia maisEntrada Processamento Saída
Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade Disciplina: PEOO Professor: Eberton da Silva Marinho e-mail: ebertonsm@gmail.com Data:
Leia maisAula 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 maisO 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 mais4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Leia maisCurso de C. Estruturas de Repetição 1/4/ :31 1
Curso de C Estruturas de Repetição 1/4/2008 15:31 1 Estruturas de Repetição Objetivos: Aprender: Como vincular a repetição de blocos à condições Quando utilizar cada uma das estruturas disponíveis 1/4/2008
Leia maisINF1005 Programação I. Pontifícia Universidade Católica Departamento de Informática
INF1005 Programação I Pontifícia Universidade Católica Departamento de Informática 1 INF1005 Exemplo 1 Pontifícia Universidade Católica Departamento de Informática 2 Computação Científica 3 Processador
Leia maisMC102 Algoritmos e Programação de Computadores
MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2014 Roteiro 1 Maior número 2 Soma de n números 3 Fatorial 4 Máximo Divisor Comum (MDC) 5 Números primos
Leia maisEstatística e Modelos Probabilísticos - COE241
Estatística e Modelos Probabilísticos - COE241 Aula passada Análise da dados através de gráficos Introdução a Simulação Aula de hoje Introdução à simulação Geração de números aleatórios Lei dos Grandes
Leia maisAula 14: Repetição (Parte 2)
Aula 14: Repetição (Parte 2) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aula Anterior Laços de repetição Comando de repetição
Leia maisMessage 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 maisEstatística e Modelos Probabilísticos - COE241
Estatística e Modelos Probabilísticos - COE241 Aula passada Análise da dados através de gráficos Introdução a Simulação Aula de hoje Introdução à simulação Geração de números aleatórios Lei dos Grandes
Leia maisAnálise do desempenho da transformada de Hough paralela em arquiteturas de memória compartilhada
Análise do desempenho da transformada de Hough paralela em arquiteturas de memória compartilhada CHRISTIAN CESAR BONES 1 ODEMIR MARTINEZ BRUNO 1 USP - Universidade de São Paulo ICMC - Instituto de Ciências
Leia maisModularidade - 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 entrada
Leia maisParte 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 maisParalelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core
RSS-Verão-01/08 p.1/36 Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7 Escola de Verão 2008 Arquiteturas Multi-Core Renato S. Silva LNCC - MCT Janeiro de 2008 RSS-Verão-01/08 p.2/36 Objetivo:
Leia maisEstatística e Modelos Probabilísticos - COE241
Estatística e Modelos Probabilísticos - COE241 Aula passada Somas aleatórias Aula de hoje Introdução à simulação Geração de números aleatórios Lei dos Grandes Números Simulação de Sistemas Discretos É
Leia maisProgramação Paralela Avançada. N. Maillard - M. Cera
Programação Paralela Avançada N. Maillard - M. Cera Programação Paralela Avançada Introdução Geral 2 Programação Paralela é crítica 3 Programação Paralela é difícil Em nível conceitual + em nível técnico.
Leia maisProgramação Estruturada e Orientada a Objetos
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br
Leia maisIntroduçã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: diego.pereira@ifrn.edu.br Resumo:
Leia maisVetores. e o programa deverá ler os valores separadamente:
Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.
Leia maisAula 4 ESTRUTURAS DE REPETIÇÃO (FOR)
Aula 4 ESTRUTURAS DE REPETIÇÃO (FOR) Profa. Dra. Elisa Yumi Nakagawa 1o semestre/2017 Estruturas de Controle l ESTRUTURA SEQUENCIAL l ESTRUTURAS CONDICIONAIS l l l Estrutura Condicional Simples Estrutura
Leia mais