MC-SD05-I
Introdução a workflows científicos paralelos em Python/Parsl

Professor: Kary Ocaña (LNCC)

Horarios: Quinta 14/01 de 14:30h às 18:30h

Objetivo: Python é uma linguagem de programação de alto nível para programação de propósito geral lançada ao público em 1991. Possui contruções que permitem a criação de programas de pequena à grande escala e possui uma filosofia de design que prioriza principalmente a legibilidade de código. É cada vez mais usada em computação científica e numérica. Python tem tipagem dinâmica e gerência automática de memória. Suporta múltiplos paradigmas de programação, como programação orientada à objetos, imperativa, funcional e procedural. É citado frequentemente como uma de suas melhores características sua grande e abrangente biblioteca padrão. O Python Package Index, o repositório oficial de pacotes de terceiros, possui outros 130000 pacotes. Interpretadores da linguagem Python estão disponíveis para diversos sistemas operacionais. A implmentação de referência, a CPython, é open source e possui um modelo de desenvolvimento comunitário assim como a maior parte das outras implementações alternativas.

Pré-requisitos
  1. Conhecimentos básicos de programação estruturada
  2. Conhecimentos básicos de programação orientada à objetos
  3. Conhecimentos básicos do uso do shell bash ou similar no ambiente GNU/Linux


Ementa:
  1. Introdução geral à HPC
  2. Processamento em memória compartilhada
    • Threads vs processos
    • Módulo threading vs módulo multiprocessing
  3. Módulo multiprocessing
    • Exemplo: aproximação de pi com Monte Carlo
  4. Processamento em memória distribuída
    • Introdução à MPI
    • Módulo mpi4pi
    • Módulo mpi4pi + módulo numpy
    • Exemplo: reimplementação da aproximação de pi com MPI
  5. Biblioteca Parsl