Relatório Trabalho 1 Programação Paralela
|
|
|
- Rosângela Godoi Vasques
- 9 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,[email protected] 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
Introduçã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
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
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
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
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
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
Aluno 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
DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES
DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES João Ricardo Kohler Abramoski (PAIC/FUNDAÇÃO ARAUCÁRIA), Sandra Mara Guse Scós Venske (Orientadora), e-mail: [email protected]
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:
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
OpenMP: 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
INE 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
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
Paralela 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
Programação de Alto Desempenho - 2. Prof: Carla Osthoff
Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: [email protected] 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda
Paralelismo 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
Introduçã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
Paralelizaçã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
Algoritmos e Programação
Algoritmos e Programação Aula 7 Vetores Profa. Marina Gomes [email protected] 19/05/2017 Engenharia de Computação - Unipampa 1 Motivação Problema: Leia as notas de uma turma de cinco estudantes
INE 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
Programaçã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
Paralelismo 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
Algoritmos 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
TÉ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
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:
Algoritmos 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
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.
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
Linguagem 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)
Universidade 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á
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
Programaçã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
INSTRUÇÕ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
Implementando 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
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
LINGUAGEM 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
OpenMP. 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
BALANCEAMENTO 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
Aula 3: Algoritmos: Formalização e Construção
Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de
4. 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.
MC102 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
Aula 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
Estatí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
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 entrada
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
Paralelizaçã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:
Estatí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 É
Programaçã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.
Programaçã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: [email protected] [email protected]
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:
Vetores. 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.
Aula 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
