3–4 Apr 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 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:

  1. Paralelizar o cálculo de estatísticas básicas (média, desvio padrão) de um grande conjunto de dados.
  2. 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