25–26 Sept 2025 ONLINE
Porto & Évora, Portugal
Europe/Lisbon timezone

Programa

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