Programação em Memória Compartilhada com OpenMP

Documentos relacionados
OpenMP: Variáveis de Ambiente

8 Threads. 8.1 Introdução

Computação Heterogênea Programação paralela, clusters e GPUs

Caracterização de desempenho em programas paralelos

Sobre a apresentação (About(

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal

Sistemas Distribuídos e Paralelos

Programação de Sistemas

Programação de Sistemas

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Controle de granularidade de tarefas em OpenMP

Estudo Qualitativo e Quantitativo de Linguagens Paralelas para Arquiteturas Multicore

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

É a associação de mais de um fluxo de execução em um único processo.

COMPUTAÇÃO PARALELA. uma visão geral. Guilherme Galante. v.2.0

Programação em Paralelo OpenMP

Processamento Paralelo

Introdução à Linguagem Java

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

Computador Digital Circuitos de um computador (Hardware)

SISTEMAS OPERACIONAIS

Introdução à Arquitetura de Computadores IFES Campus Serra

Desenvolvimento Web TCC Turma A-1

Desenvolvimento de Sistemas Tolerantes a Falhas

Introdução à Sistemas Operacionais. Glauber Magalhães Pires

Symmetric Multiprocessing Simultaneous Multithreading Paralelismo ao nível dos dados

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Programação Concorrente Processos e Threads

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Paralelização de Simuladores de Hardware Descritos em SystemC

ANÁLISE DE DESEMPENHO DA PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PRIMOS UTILIZANDO PTHREAD E OPENMP 1

Introdução a Computação

SO: Gerenciamento de Processos

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Introdução. Prof. MSc. Hugo Souza

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Software Básico. Conceito de Linguagem de Máquina e Montagem: introdução ao Assembly. Prof. MSc. Hugo Vieira L. Souza

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Programação de Computadores II TCC Turma A-1

Marcos Vinicios Marques Professor Cidão. Professor Marcelo Neves

Arquitetura de Sistemas Operacionais Machado/Maia. Arquitetura de Sistemas

Gerenciamento de memória

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Threads. 8 de janeiro de 2015

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

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

(Aula 15) Threads e Threads em Java

Métodos de Sincronização do Kernel

Sistemas Operacionais

UFRJ IM - DCC. Sistemas Operacionais I. Unidade I Introdução. 11/02/2014 Prof. Valeria M. Bastos

Programação Paralela e Distribuída (DCC/UFRJ)

Arquitetura de Computadores II

Introdução aos computadores, à Internet e à World Wide Web by Pearson Education do Brasil

BPM e SOA. Grinaldo Lopes de Oliveira (grinaldo@gmail.com) Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Introdução OpenMP. Nielsen Castelo Damasceno

Processos (Threads,Virtualização e Migração de Código)

UFRJ IM - DCC. Sistemas Operacionais I

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

Sistemas Operacionais. Professor Leslier Soares Corrêa

Sistemas Operacionais. Conceitos de um Sistema Operacional

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

ATIVIDADE 1 MÁQUINAS VIRTUAIS. 1.1 Arquiteturas não virtualizadas

Notas da Aula 4 - Fundamentos de Sistemas Operacionais

APLICAÇÕES EM SISTEMAS DISTRIBUÍDOS Prof. Ricardo Rodrigues Barcelar

13/10/11 TIPOS DE UTILITÁRIOS UTILITÁRIOS 0798 INTRODUÇÃO À PROGRAMAÇÃO TIPOS DE UTILITÁRIOS TIPOS DE UTILITÁRIOS

26/09/2015. Windows Linux Mac OS/X IBM OS/2 Sun Solaris Google Android. MS-DOS Outros... O QUE É? SISTEMAS OPERACIONAIS

Introdução a Sistemas Operacionais Aula 04. Prof. Msc. Ubirajara Junior biraifba@gmail.com

Segurança e recuperação Manual do utilizador

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

O aplicativo de desktop Novell Filr é compatível com as seguintes versões do sistema operacional Windows:

ESTUDO DE CASO WINDOWS VISTA

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

Engenharia de Software. Tema 1. Introdução à Engenharia de Software Profa. Susana M. Iglesias

CURSO DE PROGRAMAÇÃO EM JAVA

Luís Cláudio OLIVEIRA-LOPES

Universidade Federal do Rio de Janeiro Pós-Gradução em Informática. Microarquiteturas de Alto Desempenho. Multithreading. Gabriel P. Silva.

LINUX. Lapro I Profa. Fernanda Denardin Walker. - Aula 2 - Material adaptado de: Isabel Mansour, Marcia Moraes e Silvia Moraes SISTEMA OPERACIONAL

Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

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

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

phpcollab Versão 2.4

CONCEITOS BÁSICOS SOBRE PROGRAMAÇÃO Programação Orientada a Objetos (POO)

Transcrição:

Programação em Memória Compartilhada com 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 25 de Maio de 2010 Introdução ao OpenMP 1 / 29

Conteúdo Introdução 1 Introdução 2 3 Introdução ao OpenMP 2 / 29

Conteúdo Introdução 1 Introdução 2 3 Introdução ao OpenMP 3 / 29

Técnicas de programação em MC Programas construídos para um modelo de programação de memória compartilhada precisam de ferramentas que englobem: técnicas para criação e manipulação de threads, mecanismos de sincronização entre as threads, recursos para manipulação de memória compartilhada. Processos vs Threads? Introdução ao OpenMP 4 / 29

Técnicas de programação em MC As ferramentas mais comuns para ambientes de memória compartilhada são baseadas em: Threading explícito Diretivas de Compilação (threading implícito) Troca de mensagens Linguagens paralelas 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 Algumas linguagens de alto nível Introdução ao OpenMP 5 / 29

Técnicas de programação em MC 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 Troca de mensagens: 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: Linguagens de alto nível criadas ou estendidas para trabalhar com esse modelo de programação. HPF - High Performance Fortran Introdução ao OpenMP 6 / 29

OpenMP Introdução O que significa OpenMP: Open specifications for Multi Processing via collaborative work between interested parties from the hardware and software industry, goverment and academia. Open + MP = Padrão aberto + Maquinas multiprocessadas O que é o OpenMP: Um modelo de programação em memória compartilhada que nasceu da cooperação de grandes fabricantes de hardware e software (Sun, Intel, Fujitsu, SGI, AMD, HP, IBM, PGI, KAI,...) Definida para ser utilizada em programas C\C++ e Fortran, Introdução ao OpenMP 7 / 29

OpenMP Introdução O que é o OpenMP... Desenvolvido e mantido pelo grupo OpenMP ARB (Architecture Review Board), É uma API para programação paralela em arquiteturas multiprocessadas, 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, Introdução ao OpenMP 8 / 29

OpenMP Introdução O que é o OpenMP... 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, Implementação Especificação, O resultado depende do compilador utilizado, http://www.openmp.org Introdução ao OpenMP 9 / 29

Cronologia Introdução Fortran versão 1.0, Outubro de 1997 C\C++ versão 1.0, Outubro de 1998 Fortran versão 1.1, Novembro de 1999 Fortran versão 2.0, Novembro de 2000 C\C++ versão 2.0, Março de 2002 C\C++ e Fortran versão 2.5, Maio de 2005 (unificado) C\C++ e Fortran versão 3.0, Maio de 2008 Introdução ao OpenMP 10 / 29

Objetivos do OpenMP Ser o standard de programação para arquiteturas de memória compartilhada, Estabelecer um conjunto muito simples e limitado de diretivas de programação, Permitir a paralelização incremental de programas seqüenciais, Conseguir implementações eficientes em problemas de granularidade fina, média e grossa. Introdução ao OpenMP 11 / 29

Componentes do OpenMP Introdução ao OpenMP 12 / 29

Modelo de programação do OpenMP Paralelismo explícito Multi-thread implícito Introdução ao OpenMP 13 / 29

Modelo de programação do OpenMP Paralelismo explícito Multi-thread implícito Paralelismo explícito Cabe ao programador identificar as tarefas para execução em paralelo e definir os pontos de sincronização, Essas operações são feitas utilizando diretivas de compilação embebidas no código do programa. Introdução ao OpenMP 13 / 29

Modelo de programação do OpenMP Multi-thread implícito: Um processo é visto como um conjunto de threads que se comunicam entre através da utilização de variáveis compartilhadas, A criação, iniciação e finalização das threads é feita pelo ambiente de execução de ocultando os detalhes do programador, O espaço de endereçamento global é compartilhado por todos os threads, As variáveis podem ser compartilhadas ou privadas (duplicadas) para cada thread, O controle, manuseio e sincronização das variáveis envolvidas nas tarefas paralelas é transparente ao programador. Introdução ao OpenMP 14 / 29

Modelo de execução do OpenMP Modelo de execução Fork-Join Todos os programas iniciam sua execução com um processo, o master thread, O master thread executa seqüencialmente até encontrar um construtor paralelo, momento em que cria um grupo de threads, O código delimitado pelo construtor paralelo é executado em paralelo pelo master thread e pelo grupo de threads, Ao completarem a execução paralela o grupo de threads sincroniza uma barreira implícita com o master thread, O grupo de threads termina a sua execução e o master thread continua a executar seqüencialmente até encontrar um novo construtor paralelo. Introdução ao OpenMP 15 / 29

Modelo de execução do OpenMP Modelo de execução Fork-Join Introdução ao OpenMP 16 / 29

Estrutura de um programa OpenMP Introdução ao OpenMP 17 / 29

Compiladores com suporte a OpenMP Compilador Distribuidor Informações XL IBM Proprietário, SO: Windows e Linux SC Sun Microsystems Proprietário, Sun studio compiladores e ferramentas, download gratuito para Linux e Solaris ICC Intel Propietário, SO: Windows, Linux e MacOS gcc (4.3.2) GNU Livre de código aberto, SO: Linux, Windows, Solaris, MacOS Introdução ao OpenMP 18 / 29

Vantagens do 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. Introdução ao OpenMP 19 / 29

OpenMP e arquiteturas multicore Arquiteturas multicore, Fraco desempenho das aplicações atuais em arquiteturas multicore, Incremento do número de núcleos, Aplicações eficientes em processadores multicore devem utilizar intensivamente o conceito de threads. Introdução ao OpenMP 20 / 29

Conteúdo Introdução 1 Introdução 2 3 Introdução ao OpenMP 21 / 29

Diretivas de compilação em OpenMP Diretivas são linhas de código com significado especial para o compilador; #pragma omp, indica ao compilador a presença de uma diretiva de compilação, sinalizando que deverá dar criar código paralelo otimizado para o ambiente OpenMP; diretive, deverá ser uma diretiva válida de OpenMP; clause, representa um conjunto de parâmetros e informações a serem aplicados a essa diretiva, (opcional). Introdução ao OpenMP 22 / 29

Diretivas de compilação em OpenMP As diretivas se aplicam a blocos sintáticos, Bloco sintático composto Bloco sintático simples Introdução ao OpenMP 23 / 29

Diretivas de compilação em OpenMP Diretivas Clausulas: Definem o comportamento das regiões paralelas e das variáveis aos quais estão associadas. Introdução ao OpenMP 24 / 29

Compilação condicional Quando um código que contém diretivas do OpenMP é compilado por um compilador que não suporta o OpenMP este simplesmente ignora as diretivas e compila o programa de forma seqüencial, Entretanto, se o código conter chamadas a funções do Open- MP teremos erros de compilação, Para escrever código que funcione com e sem OpenMP devemos utilizar a compilação condicional. Introdução ao OpenMP 25 / 29

Compilação condicional Para termos compilação um código robusto devemos proteger as chamadas a funções do OpenMP com a diretiva #ifdef _OpenMP, A macro _OpenMP esta definida se a biblioteca do OpenMP estiver disponível, Exemplo Introdução ao OpenMP 26 / 29

Conteúdo Introdução 1 Introdução 2 3 Introdução ao OpenMP 27 / 29

Hello word!!! Introdução Introdução ao OpenMP 28 / 29

Atividades Introdução 1 Compile e execute o programa anterior, comente sobre a saída. 2 Modifique a diretiva #pragma omp paralell para #pragma omp paralell num_threads(4), compile e execute novamente, comente o resultado. 3 Visite a página http://www.openmp.org. Introdução ao OpenMP 29 / 29