MC-SD03-II
Introdução a CUDA AWARE

Professor: Murilo do Carmo Boratto (SENAI/CIMATEC)

Horarios: Segunda 29/01 de 14:00h às 18:00h

Objetivo: MPI (Message Passing Interface) é uma API padrão para comunicação de dados por meio de mensagens entre processos distribuídos, comumente usada em HPC para criar aplicações que podem ser escalonadas em supercomputadores com múltiplos nós. Como tal, MPI é totalmente compatível com CUDA, que é projetado para computação paralela em um ou mais nós. Existem muitos motivos para querer combinar a programação paralela em MPI e CUDA potencializando os recursos de forma máxima. Um motivo comum é permitir a solução de problemas com um tamanho de dados muito grande para caber na memória de recursos computacionais GPU. Outro motivo é acelerar uma aplicação MPI existente para multi-GPU sobre um único nó existente ou para múltiplos. Com CUDA-AWARE-MPI, esses objetivos podem ser alcançados de forma fácil e eficiente. Neste minicurso, explicarei como funciona a compatibilidade entre MPI e CUDA, e o quão eficiente é e como pode ser usada.

Ementa:
  1. Introdução a escalabilidade de aplicações multi-nós
  2. Multi-GPU Programming
    • P2P
    • NVSHMEM
    • Aproximações Distribuidas e Duplicadas
  3. Práticas em Laboratório
    • Hands-on 1 - Benchmarks Ping Pong
    • Hands-on 2 - Jacobi
    • Hands-on 3 - Modelo Monte Carlos - Aproximação de Pi
  4. Análise Comparativa de Desemplenho entre NCCL x CUDA-AWARE-MPI

Bibliografia:
  1. CZARNUL, P. Parallel programming for modern high performance computing systems. New York: Chapman and Hall: CRC, 2018. 330 p.
  2. DOWD, K.; SEVERANCE, C. An introduction to parallel programming. Sebastopol: O'Reilly & Associates, 1998. 446 p.
  3. HAGER, G.; WELLEIN, G. Introduction to high performance computing for scientists and engineers. 2nd ed. Boca Raton: Chapman and Hall: CRC, 2018. 400 p.
  4. HENNESSY, J. L.; PATTERSON, D. A. Computer architecture: a quantitative approach. 6th ed. San Francisco: Elsevier: Morgan Kaufmann, 2017. 936 p.
  5. PACHECO, P. S. An introduction to parallel programming. San Francisco: Elsevier: Morgan Kaufmann, 2011. 392 p
  6. STERLING, T.; ANDERSON, M.; BRODOWICZ, M. High performance computing: modern systems and practices. Cambridge: Elsevier: Morgan Kaufmann, 2017. 718 p.