Nesta página oferecemos um Kit de ensino de GPGPU desenvolvido em uma colaboração entre a NVIDIA e a Universidade de Illinois. Esse kit é composto por uma série de video aulas divididas em módulos. Cada módulo cobre um tipo de assunto diferente e fornece material para ensino e treinamento em programação de alto desempenho usando GPUs
Conteúdo
Módulo 1: Introdução
Este módulo contém três vÃdeo aulas e apresenta os objetivos do curso e introduz os conceitos de computação heterogênea e programação paralela.
Aula 1.1: Uma visão geral do curso
Aula 1.2: Introdução a computação paralela heterogênea
Aula 1.3: Portabilidade e escalabilidade na computação paralela heterogênea
Módulo 2: Introdução ao CUDA C
Neste módulo, cobriremos as funções básicas da API em um código de HOST do CUDA, e introduziremos as CUDA threads, que são nosso principal mecanismo para explorar o paralelismo de dados.
Aula 2.1: CUDA C vs. Thrust vs. Bibliotecas CUDA
Aula 2.2: Funções da API para alocação de memória e movimentação de dados
Aula 2.3: Threads e funções kernel
Aula 2.4: Introdução ao CUDA Toolkit
Módulo 3: Modelo de paralelismo CUDA C
Neste módulo introduzimos o kernel CUDA, padrões de acesso a memória eficientes, e thread scheduling.
Aula 3.1: Programação paralela SPMD baseada em kernel
Aula 3.2: Configuração de kernels multidimensionais
Aula 3.3: Exemplo – Conversão de imagem colorida para escala de cinza
Aula 3.4: Exemplo – Image blur
Aula 3.5: Thread scheduling
Módulo 4: Tipos de memória e Data Locality
Neste módulo introduzimos os diferentes tipos de memória do CUDA e exploramos seu uso nos algoritmos de caixa em paralelo (tiled parallel algorithms).
Aula 4.1: TÃpos de memória no CUDA
Aula 4.2: Algoritmos de caixa em paralelo (Tiled parallel algorithms)
Aula 4.3: Exemplo – Multiplicação de matrizes usando o algoritmo de caixas (Tiled matrix multiplication)
Aula 4.4: Kernel para multiplicação de matrizes usando o algoritmo de caixas
Aula 4.5: Multiplicação de matrizes de tamanhos arbitrários usando o algoritmo de caixas
Módulo 5: Análise de eficiência na execução de threads
Neste módulo introduzimos o kernel CUDA, padrões de acesso a memória eficientes, e thread scheduling.
Aula 5.1: Warps e hardwares SIMD
Aula 5.2: Inpacto da divergência de controle no desempenho do kernel
Módulo 6: Eficiência no Acesso a Memória
Neste módulo discutiremos a importância da coalescência no acesso a memória para o uso eficiente da banda de memória em uma aplicação CUDA.
Aula 6.1: A Largura de Banda DRAM
Aula 6.2: Coalescência no Acesso a Memória em CUDA
VÃdeo Aulas
Módulo 1: Introdução
Este módulo contém três vÃdeo aulas e apresenta os objetivos do curso e introduz os conceitos de computação heterogênea e programação paralela.
Aula 1.1: Uma visão geral do curso
PDF Slides
Lecture-1-1-overview.pdf
Power Point Slides
Lecture-1-1-overview.pptx
Aula 1.2: Introdução a computação paralela heterogênea
PDF Slides
Lecture-1-2-heterogeneous-computing.pdf
Power Point Slides
Lecture-1-2-heterogeneous-computing.pptx
Aula 1.3: Portabilidade e escalabilidade na computação paralela heterogênea
PDF Slides
Lecture-1-3-portability-scalability.pdf
Power Point Slides
Lecture-1-3-portability-scalability.pptx
CapÃtulo de livro
CapÃtulo 1 – Introdução
3rd-Edition-Chapter01-introduction-1-28-2016.pdf
Módulo 2: Introdução ao CUDA C
Neste módulo, cobriremos as funções básicas da API em um código de HOST do CUDA, e introduziremos as CUDA threads, que são nosso principal mecanismo para explorar o paralelismo de dados.
Aula 2.1: CUDA C vs. Thrust vs. Bibliotecas CUDA
PDF Slides
Lecture-2-1-cuda-thrust-libs.pdf
Power Point Slides
Lecture-2-1-cuda-thrust-libs.pptx
Aula 2.2: Funções da API para alocação de memória e movimentação de dados
PDF Slides
Lecture-2-2-cuda-data-allocation-API.pdf
Power Point Slides
Lecture-2-2-cuda-data-allocation-API.pptx
Aula 2.3: Threads e funções kernel
PDF Slides
Lecture-2-3-cuda-parallelism-threads.pdf
Power Point Slides
Lecture-2-3-cuda-parallelism-threads.pptx
Aula 2.4: Introdução ao CUDA Toolkit
PDF Slides
Lecture-2-4-cuda-toolkit.pdf
Power Point Slides
Lecture-2-4-cuda-toolkit.pptx
Experimentos
Device Query
Module[2]-DeviceQuery.pdf
CapÃtulo de livro
CapÃtulo 2 – Computação paralela de dados
3rd-Edition-Chapter02-data-parallel-programming-2-2-2016.pdf
Módulo 3: Modelo de paralelismo CUDA C
Neste módulo introduzimos o kernel CUDA, padrões de acesso a memória eficientes, e thread scheduling.
Aula 3.1: Programação paralela SPMD baseada em kernel
PDF Slides
Lecture-3-1-kernel-SPMD-parallelism.pdf
Power Point Slides
Lecture-3-1-kernel-SPMD-parallelism.pptx
Aula 3.2: Configuração de kernels multidimensionais
PDF Slides
Lecture-3-2-kernel-multidimension.pdf
Power Point Slides
Lecture-3-2-kernel-multidimension.pptx
Aula 3.3: Exemplo – Conversão de imagem colorida para escala de cinza
PDF Slides
Lecture-3-3-color-to-greyscale-image-processing-example.pdf
Power Point Slides
Lecture-3-3-color-to-greyscale-image-processing-example.pptx
Aula 3.4: Exemplo – Image blur
PDF Slides
Lecture-3-4-blur-kernel.pdf
Power Point Slides
Lecture-3-4-blur-kernel.pptx
Aula 3.5: Thread scheduling
PDF Slides
Lecture-3-5-transparent-scaling.pdf
Power Point Slides
Lecture-3-5-transparent-scaling.pptx
Experimentos
CUDA Image Blur
Module[3]-ImageBlur.pdf
CUDA Image Color to Grayscale
Module[3]-ImageColorToGrayscale.pdf
CUDA Thrust Vector Add
Module[3]-ThrustVectorAdd.pdf
CUDA Vector Add
Module[3]-VectorAdd.pdf
CapÃtulo de livro
CapÃtulo 3 – Execução Paralela Escalável
3rd-Edition-Chapter03-data-parallel-execution-2-9-2016
Módulo 4: Tipos de memória e Data Locality
Neste módulo introduzimos os diferentes tipos de memória do CUDA e exploramos seu uso nos algoritmos de caixa em paralelo (tiled parallel algorithms).
Aula 4.1: TÃpos de memória no CUDA
PDF Slides
Lecture-4-1-cuda-memories.pdf
Power Point Slides
Lecture-4-1-cuda-memories.pptx
Aula 4.2: Algoritmos de caixa em paralelo (Tiled parallel algorithms)
PDF Slides
Lecture-4-2-tiled-algorithms.pdf
Power Point Slides
Lecture-4-2-tiled-algorithms.pptx
Aula 4.3: Exemplo – Multiplicação de matrizes usando o algoritmo de caixas (Tiled matrix multiplication)
PDF Slides
Lecture-4-3-tiled-matrix-multiplication.pdf
Power Point Slides
Lecture-4-3-tiled-matrix-multiplication.pptx
Aula 4.4: Kernel para multiplicação de matrizes usando o algoritmo de caixas
PDF Slides
Lecture-4-4-tiled-matrix-multiplication-kernel.pdf
Power Point Slides
Lecture-4-4-tiled-matrix-multiplication-kernel.pptx
Aula 4.5: Multiplicação de matrizes de tamanhos arbitrários usando o algoritmo de caixas
PDF Slides
Lecture-4-5-tile-boundary-condition.pdf
Power Point Slides
Lecture-4-5-tile-boundary-condition.pptx
Experimentos
Basic Matrix Multiplication
Module[4]-BasicMatrixMultiplication.pdf
CUDA Tiled Matrix Multiplication
Module[4]-TiledMatrixMultiplication.pdf
CapÃtulo de livro
CapÃtulo 4 – Memória e Localidade de Dados
3rd-Edition-Chapter04-memory-model-2-2-2016.pdf
Módulo 5: Análise de eficiência na execução de threads
Neste módulo introduzimos o kernel CUDA, padrões de acesso a memória eficientes, e thread scheduling.
Aula 5.1: Warps e hardwares SIMD
PDF Slides
Lecture-5-1-warps-simd.pdf
Power Point Slides
Lecture-5-1-warps-simd.pptx
Aula 5.2: Inpacto da divergência de controle no desempenho do kernel.
PDF Slides
Lecture-5-2-control-divergence.pdf
Power Point Slides
Lecture-5-2-control-divergence.pptx
Quiz
Quiz do Módulo 5
Module 5 Quiz.pdf
CapÃtulo de livro
CapÃtulo 5 – Considerações sobre Desempenho
3rd-Edition-Chapter05-performance-1-20.pdf
Módulo 6: Eficiência no Acesso a Memória
Neste módulo introduzimos o kernel CUDA, padrões de acesso a memória eficientes, e thread scheduling.
Aula 6.1: A Largura de Banda DRAM.
PDF Slides
Lecture-6-1-dram-bandwidth.pdf
Power Point Slides
Lecture-6-1-dram-bandwidth.pptx
Aula 6.2: Coalescência no Acesso a Memória em CUDA.
PDF Slides
Lecture-6-2-memory-coalescing.pdf
Power Point Slides
Lecture-6-2-memory-coalescing.pptx
Quiz
Quiz do Módulo 6
Module 6 Quiz.pdf
CapÃtulo de livro
CapÃtulo 5 – Considerações sobre Desempenho
3rd-Edition-Chapter05-performance-1-20.pdf
–>Legendas: Eduardo C. Vasconcellos e Fernanda C. Vasconcellos.
–>Sincronização: Eduardo C. Vasconcellos.