MC-SD02-I
Introdução ao OpenMP

Professor: Matheus Serpa (UFRGS)

Horarios: Segunda 31/01 de 13:30h às 17:30h

Objetivo: O objetivo deste curso é ensinar aos programadores que não estão familiarizados com programação paralela as noções básicas para desenvolver e executar programas paralelos de acordo com as normas do padrão OpenMP (www.openmp.org). Para isto iremos apresentar durante os cursos rotinas básicas para se trabalhar com o padrão OpenMP v 5.0. OpenMP é um padrão que vem sendo largamente utilizado para o desenvolvimento de programas paralelos em arquitetura de sistemas de memória compartilhada, tais como ambientes computacionais com processadores multicore. A norma do padrão OpenMp foi implantada a mais de 20 anos e existe hoje muito material sobre este assunto. Este curso toma como base diversas apostilas que foram desenvolvidas ao longo dos últimos anos em centros de supercomputação, particularmente nos tutoriais do Laurence Livermore Laboratory (https://computing.llnl.gov/tutorials/openMP/). As demais referências utilizadas para a elaboração do curso estão relacionadas na seção bibliográfica. O curso inicia fornecendo informações sobre o ambiente de computação de memória compartilhada e sobre a programação conceitos de processamento paralelo. A seguir apresentamos uma introdução às diretivas e os construtores OpenMP conforme padrão v5.0, rotinas da biblioteca OpenMP e as funções de ambiente. Durante o curso, serão apresentados exemplos em linguagem C e ao final serão passados exercícios. Assumimos que o usuário possui compreensão gerais sobre programação com a linguagem C.

Ementa:
  1. Introdução aos conceitos de processamento paralelo,
  2. Introdução ao OpenMP:
    • construtores paralelos;
    • construtores de compartilhamento de trabalho;
    • cláusulas;
    • diretivas de sincronização;
    • funções de ambiente de execução;
    • variáveis de ambiente.

Bibliografia:
  1. OpenMP Common Core: Making OpenMP Simple Again – by Tim Mattson, Helen He, Alice Koniges (2019)
  2. Using OpenMP – The Next Step – by Ruud van der Pas, Eric Stotzer and Christian Terboven (2017)
  3. Using OpenMP – Portable Shared Memory Parallel Programming – by Chapman, Jost, and Van Der Pas (2007).