Módulo 1: Fundamentos de OpenMP: Introdução e Controle de Fluxo Básico ( Síncrona - 2 horas)
1. Introdução à computação paralela e OpenMP
- Por que paralelizar?
- Vantagens do OpenMP para Fortran-
- Exemplo simples: Hello World com OpenMP.
2. Configuração de ambiente e compilação
- Configuração do compilador para suporte ao OpenMP (gfortran com flag -fopenmp).
- Teste inicial com programas simples.
3. Funções de runtime básicas
- omp_get_thread_num(): Identificação da thread.
- omp_get_num_threads(): Número total de threads.
- Exemplo prático: Threads identificando seus números em execução.
4. Diretivas básicas de controle de fluxo
- !$OMP parallel: Inicia um bloco paralelo.
- critical: Sincronização de seções críticas.
- barrier: Sincronização explícita entre threads.
- atomic: Atualização atômica de variáveis compartilhadas.
5. Exemplo prático:
- Soma de elementos de um vetor com sincronização (critical e atomic).
Módulo 2: Sincronização Avançada e Otimização com OpenMP (Síncrona - 2 horas)
1. Sincronização avançada
- reduction: Redução eficiente de resultados.
- single: Execução única de trechos de código por apenas uma thread.
2. Funções de runtime avançadas
- omp_set_num_threads(): Define o número de threads.
- omp_get_max_threads(): Obtém o número máximo de threads disponíveis.
- omp_get_wtime(): Mede o tempo de execução.
3. Escalonamento de loops
- Modos de escalonamento: static, dynamic, guided.
- Comparação prática de desempenho com configurações diferentes.
4. Introdução a tarefas e seções paralelas
- task: Criação de tarefas independentes.
- taskwait: Sincronização de tarefas.
- section: Criação de Seções
- Exemplo prático: Paralelização de cálculos independentes em tarefas s eseções.
5. Exemplo prático:
- Cálculo de médias ponderadas com reduction.
- Simulação de processamento de imagens com sections.
Módulo 3: Projeto Final - Paralelização de um Algoritmo em Fortran
Atividade Assíncrona (2 horas)
Descrição:
A. Escolha entre dois problemas propostos:
- Paralelizar o cálculo de estatísticas básicas (média, desvio padrão) de um grande conjunto de dados.
- Processar dados geográficos simulados, implementando cálculos em sections.
B Critérios:
- Usar pelo menos 3 diretivas (ex.: parallel, reduction, task).
- Explorar funções de runtime (omp_get_wtime, omp_set_num_threads).
- Comparar o desempenho das versões paralela e serial.Sincronização de Threads