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 runtime
- 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 paralela de vetores com sincronização.
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 e sections: 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.
5. Exemplo prático:
- Processamento paralelo de imagens e cálculos numéricos.
Módulo 3: Projeto Final - Paralelização de um Algoritmo em Fortran
Atividade Assíncrona (2 horas)
- Escolha entre dois problemas propostos
- Aplicação de diretivas e comparação de desempenho serial × paralelo