Buscar

Desenvolvimento de aplicações com OpenMP

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Desenvolvimento de aplicações com OpenMP
Exercícios
1. Para o desenvolvimento de programas paralelos, inicialmente, o desenvolvedor
determina como será o programa que vai ser desenvolvido, incluindo entradas e
saídas. Os algoritmos são projetados, determinando-se a maneira como o trabalho
será distribuído ou decomposto nos multiprocessadores, sendo, então, os
algoritmos implementados no programa ou código da aplicação. O OpenMP é um
modelo de implementação que suporta algoritmos paralelos, sendo que é
especialmente projetado para multiprocessadores de memória compartilhada.
A respeito do OpenMP e do programa paralelo, analise as afirmativas a seguir:
I. Um programa paralelo efetuado em multiprocessador de memória compartilhada
tem diversos threads.
II. O OpenMP é uma linguagem de programação que tem a função de executar o
trabalho sem os threads.
III. O thread é um elemento de tempo de execução, que pode executar, de forma
independente, diversas instruções.
IV. O OpenMP é uma API que organiza os acessos e dados compartilhados,
conforme a necessidade.
Assinale a alternativa que indica apenas as afirmativas corretas:
Você acertou!
C. I, III e IV.
Um programa paralelo que é executado em multiprocessador de memória compartilhada 
geralmente tem diversos threads. Um thread é uma entidade de tempo de execução, que 
pode executar, de forma independente, um fluxo de instruções. A quantidade 
desses threads pode variar durante a execução do programa, sendo que cada um é 
executado em um núcleo lógico.
O OpenMP não é uma linguagem de programação, mas uma API. Ele atua juntamente 
com o Fortran padrão ou C/C++ para especificar a maneira que o trabalho deve ser 
compartilhado entre threads que serão executados nos diferentes processadores ou 
núcleos, assim como ordenar os acessos e dados que são compartilhados, conforme a 
necessidade.
2. O OpenMP suporta a classificação de programas executados por meio de um
conjunto de threads. Existem três tipos de extensões de linguagem no OpenMP:
estruturas de controle paralelo, ambiente de comunicação e dados e sincronização.
A respeito dessas três categorias de linguagem no OpenMP, considere as seguintes
afirmações e classifique-as em verdadeiras (V) ou falsas (F):
( ) No OpenMP, são usados três categorias de construções, que fazem o controle do
paralelismo.
( ) As estruturas de controle paralelo oferecem controle para executar um conjunto 
de threads.
( ) Os programas OpenMP começam com, no mínimo, três threads de controle de 
execução.
( ) A sincronização tem a função de organizar a execução dos threads em um 
programa paralelo.
Assinale a alternativa que indica a sequência correta:
Você acertou!
A. F – V – F – V.
No OpenMP, são usados dois tipos de construções que realizam o controle do 
paralelismo. O primeiro serve para fornecer uma diretiva para a criação de 
vários threads de execução. No segundo, são fornecidas construções que dividem o 
trabalho entre os conjuntos de threads paralelos.
As estruturas de controle são construções que têm a responsabilidade de modificar o 
fluxo de controle de um programa. Já as estruturas de controle paralelas são construções 
que iniciam novos threads ou fornecem controle para a execução de outro conjunto 
de threads.
Os programas OpenMP iniciam com apenas um thread de controle, com um contexto 
associado de execução ou ambiente de dados.
Sincronização é o mecanismo que coordena a execução de diversos threads e um 
programa paralelo, evitando, assim, conflitos. São dois os tipos de sincronização mais 
comuns: exclusão mútua e de eventos.
3. O OpenMP usa diretivas de compilador para especificar e controlar a
paralelização, juntamente com funções de tempo de execução e variáveis de
ambiente. O desenvolvedor deve identificar o paralelismo, para que sejam inseridas
as estruturas de controle apropriadas ao programa, sendo elas as diretivas.
A respeito das diretivas, analise as seguintes afirmativas:
I. A diretiva em C/C++ vai iniciar com !$opm, sendo vista como uma string de 
comentário normal pelo compilador.
II. A diretiva em Fortran sempre começará com #pragma omp, sendo que o pragma 
diz respeito à linguagem regular.
III. A diretiva iniciará em #pragma omp em C/C++, e, quando o compilador não 
suporta OpenMP, o pragma é ignorado.
Assinale a alternativa que indica apenas as afirmativas corretas:
Você acertou!
E. Apenas a III.
A diretiva em C/C++ sempre inicia em #pragma omp, sendo que esse pragma diz respeito
à linguagem regular, que, quando não é reconhecida pelo compilador, é ignorada. Isso 
pode acontecer devido ao compilador não suportar OpenMP, se ocorrer erro de digitação 
ou quando a fonte não estiver compilada com opção para habilitar reconhecimento das 
diretivas.
A diretiva em Fortran sempre inicia com !$opm, sendo que o compilador a reconhece 
como uma string de comentário normal, a menos que seja usada uma opção específica 
para instruir o compilador a reconhecer a palavra-chave especial omp, gerando, assim, o 
código OpenMP correspondente.
4. Para usar OpenMP, é preciso que sejam adicionadas diretivas ao código, com o
objetivo de gerar os threads e especificar onde deverá acontecer a paralelização. É
necessário também ser determinada a quantidade de threads que devem ser usadas
em tempo de execução. Ao serem utilizadas as diretivas, em C/C++ ou em Fortran, o
código não será violado em uma portabilidade, porque a fonte compila com o
OpenMP habilitado ou não.
A respeito desse processo, considere as seguintes afirmações e classifique-as em 
verdadeiras (V) ou falsas (F):
( ) Quando a fonte é compilada com o OpenMP habilitado, é assegurada a 
macro_OPENMP, a fim de ser definida em C/C++.
( ) Para tratar da utilização de funções de tempo de execução em Fortran, é possível
ser utilizada a compilação condicional.
( ) Com o uso das diretivas, os compiladores conseguem ter a total visibilidade do 
código paralelo, favorecendo otimizações.
Assinale a alternativa que indica a sequência correta:
Você acertou!
B. V – V – V
Tanto em C/C++ como em Fortran, com o uso das diretivas, o código não será violado em 
uma portabilidade, já que a fonte compila com o OpenMP habilitado ou não. Quando a 
fonte é compilada com o OpenMP habilitado, a macro_OPENMP é garantida, a fim de que
seja determinada em C/C++, sendo definida para a data de lançamento da versão 
OpenMP que o compilador suporta.
Para lidar com a utilização de funções de tempo de execução em Fortran, poderá ser 
utilizada a compilação condicional, que resulta na substituição da cadeia de caracter !$ 
por dois espaços, se a fonte for compilada com OpenMP habilitado. Caso o OpenMP 
esteja desabilitado, isso será ignorado e considerado um comentário de idioma.
Um dos benefícios da utilização de diretivas é a visibilidade do código paralelo por inteiro 
pelos compiladores, o que facilita as otimizações e as emissões de mensagens de aviso.
5. As aplicações paralelizadas OpenMP começam como uma aplicação serial, para
depois serem instruídas por meio de código pelo programador. Então,
múltiplos threads são gerados, podendo ser executados em núcleos separados ao
mesmo tempo.
A respeito das vantagens e desvantagens do uso da API OpenMP, assinale a
alternativa correta:
Você acertou!
E. Uma das vantagens é que os códigos OpenMP e não OpenMP poderão fazer uso do
mesmo código para compilação.
O uso da API OpenMP tem diversas vantagens, com destaque para as seguintes:
• é suportada por uma grande variedade de arquiteturas multicore de memória 
compartilhada e aceleradores;
• os códigos OpenMP e não OpenMP podem fazer uso do mesmo código para 
compilação;
• os programas são muito eficientes, já que múltiplos threads podem compartilhar dados 
da memória;
• necessita de poucas modificações para paralelização de código já existente.
O uso da API OpenMP também apresenta algumas desvantagens, que são:
• serlimitada aos recursos de um nó único de computação;
• ser capaz de gerar erros difíceis de depurar;
• escalabilidade limitada pela arquitetura da memória.
	Desenvolvimento de aplicações com OpenMP
	Exercícios