OpenMP: Variáveis de Ambiente

Documentos relacionados
Introdução OpenMP. Nielsen Castelo Damasceno

Sistemas Distribuídos e Paralelos

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Paralelismo em Computadores com Tecnologia Multicore

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Programação em Memória Compartilhada com OpenMP

Programação em Paralelo OpenMP

Introdução à OpenMP (Dia 1) Prof. Guido Araujo

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

Arquiteturas Paralelas

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

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

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

SSC510 Arquitetura de Computadores. 6ª aula

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

Ferramentas para Programação em Processadores Multi-Core

Multiprogramação leve em arquiteturas multi-core

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

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

SSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama

Sistemas Distribuídos

Processos Concorrentes

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

Fundamentos de Sistemas Operacionais

Organização de Computadores II. Arquiteturas MIMD

The future is parallel but it may not be easy

Disciplina de Arquitetura de Computadores

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

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

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

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Linguagem de Programação II

Programação Concorrente e Paralela

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

Programação Concorrente e Paralela. Noemi Rodriguez

Matheus S. Serpa, Vinícius G. Pinto, Philippe O. A. Navaux Contato: INTEL MODERN CODE PARTNER

Sistemas de Informação. Sistemas Operacionais

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Estruturas de Sistemas Operacionais

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

Parte I Multiprocessamento

Arquiteturas Paralelas

Introdução a Sistemas Operacionais. Adão de Melo Neto

COMPILAÇÃO. Ricardo José Cabeça de Souza

Introdução aos Sistemas Operacionais

Computação Paralela (CUDA)

Programação paralela em SMPs com OpenMP e POSIX Threads: um estudo comparativo

SIST706 Sistemas Distribuídos

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Programação Paralela e Distribuída

Processamento Paralelo Utilizando GPU

Sistemas Operacionais

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

Avaliação de Desempenho

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Transcrição:

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 Interface OpenMP: Variáveis de Ambiente Módulo 5 - Exemplos 2

TREINAMENTO OpenMP C/C++ MÓDULO 1: Computação de Alto Desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Lei de Amdahl 3

1. INTRODUÇÃO O desenvolvimento científico tem exigido das simulações numéricas resultados cada vez mais confiáveis e próximos da realidade. A computação científica se depara com o desafio de superar as diversas barreiras que surgem em virtude da limitação física dos computadores. COMPUTAÇÃO DE ALTO DESEMPENHO Processamento Numérico Armazenamento de dados Visualização 4

2. COMPUTAÇÃO DE ALTO DESEMPENHO É uma disciplina que tem como objetivo aumentar a velocidade de processamento de simulações numéricas e viabilizar a simulação de modelos muito grandes e/ou com elevado grau de detalhes. > O processamento paralelo é uma das técnicas utilizadas na desempenho. computação científica de alto 5

3. ARQUITETURA DISTRIBUÍDA e COMPARTILHADA 3.1 Memória DISTRIBUÍDA (DISTRIBUTED MEMORY) Sistema computacional constituído de vários processadores dotados de recursos individuais. Esse sistema se caracteriza pela troca de mensagem entre os processadores. A troca de mensagem é feita por uma biblioteca de comunicação (MPI) Modelo de programação baseado em MPI 6

3. ARQUITETURA DISTRIBUÍDA e COMPARTILHADA 3.2 Memória COMPARTILHADA (SHARED MEMORY) Sistema computacional constituído de vários processadores que compartilham o mesmo recurso de memória. É necessária a sincronização do acesso aos dados na memoria compartilhada pelos processadores. OpenMP, Win32 Threads, Posix Threads 7

3.2. MEMÓRIA COMPARTILHADA 3.2.1. Arquiteturas UMA e NUMA UMA Nas máquinas que possuem esse tipo de arquitetura, o tempo de acesso aos dados localizados em qualquer posição da memória é o mesmo para todos os processadores. NUMA Nos computadores que possuem arquitetura NUMA, o tempo de acesso à memória depende da posição em que a mesma se encontra em relação ao processador. 8

3.2.2. TÉCNICAS PARA PROGRAMAÇÃO EM MODELOS DE MEMÓRIA COMPARTILHADA Programas construídos com esse modelo de programação requerem o uso de técnicas que possibilitem a criação de threads e que implementem mecanismos de sincronização entre elas. As ferramentas mais comuns para ambientes de memória compartilhada são baseadas em: Threading Explícito Diretivas de Compilação Troca de Mensagem Linguagens Paralelas 9

3.2.2. TÉCNICAS PARA PROGRAMAÇÃO EM MODELOS DE MEMÓRIA COMPARTILHADA THREADING EXPLÍCITO O programador cria explicitamente múltiplas threads dentro de um mesmo processo e divide também explicitamente o trabalho a ser realizado. POSIX Threads, Win32 Threads DIRETIVAS DE COMPILAÇÃO O programador utiliza diretivas de compilação, que são inseridas no código seqüencial, para informar ao compilador as regiões que devem ser paralelizadas. OpenMP 10

3.2.2. TÉCNICAS PARA PROGRAMAÇÃO EM MODELOS DE MEMÓRIA COMPARTILHADA TROCA DE MENSAGEM A comunicação via troca de mensagem também é utilizada como técnica para programação em ambientes de memória compartilhada. MPI LINGUAGENS PARALELAS São linguagens criadas especificamente para esse modelo de programação. HPF High Performance Fortran 11

4. OpenMP Desenvolvido e mantido pelo grupo OpenMP ARB (Architecture Review Board). Teve início por volta de 1997. (Open + MP = padrão aberto+multi Processing) Consiste em uma API e um conjunto de diretivas que permite a criação de programas paralelos com compartilhamento de memória, através da criação automática e otimizada de um conjunto de threads. Se encontra na versão 2.5 e está disponível nas linguagens Fortran 77, Fortran 90, C e C++. OpenMP não é uma linguagem de programação, é um padrão que define como os compiladores devem gerar códigos paralelos através de diretivas e funções. 12

4.1. MODELO DE PROGRAMAÇÃO OpenMP Baseia-se na criação de várias threads (linhas de execução que compartilham o mesmo recurso de memória). Modelo de programação fork-join: várias threads são criadas num dado ponto do código (fork) e, depois, num outro ponto, essas threads, exceto a thread inicial, deixam de existir (join). 13

4.2. ELEMENTOS QUE CONSTITUEM O OpenMP OMP_NUM_THREADS omp_get_num_threads() #pragma omp parallel 14

4.3. POR QUE USAR OpenMP? Facilidade de conversão de programas seqüenciais em paralelos Maneira simples de explorar o paralelismo Fácil compreensão e uso das diretivas Minimiza a interferência na estrutura do algoritmo Compila e executa em ambientes paralelo e seqüencial 15

4.4. OpenMP e Tecnologia MultiCore Para uma total utilização do poder de processamento oferecido pela tecnologia Multicore, as aplicações devem ser escritas de modo a usar intensivamente o conceito de threads. 16

5. DESEMPENHO EM APLICAÇÕES PARALELAS > speed-up Representa o ganho de velocidade de processamento de uma aplicação quando executada com n processadores. 17

5.1. LEI DE Amdahl O fator speed-up é limitado por um valor máximo, decorrente da pela parcela serial do código, isso é conhecido com Lei de Amdahl. Combinando as expressões para tempo serial e tempo paralelo com a expressão do speed-up, têm-se: 18

5.2. Ilustrando a Lei de Amdahl Para pintar uma cerca Preparo da tinta = 30 seg Pintura das estacas = 5 min = 300 seg Tempo para a tinta secar = 30 seg 19

5.3. Ilustrando o speed up N ú m e r o d e P in t o r e s X S p e e d u p 7 6 S peedup 5 4 3 2 1 0 1 2 10 100 1000 2000 N ú m e r o d e P in to r e s 20