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 РConverṣ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-1overview.pdf Lecture-1-1-overview.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-1-1-overview.pptx

Volta ao menu

 
 

Aula 1.2: Introdução a computação paralela heterogênea

PDF Slides
lecture-1-1overview.pdf Lecture-1-2-heterogeneous-computing.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-1-2-heterogeneous-computing.pptx

Volta ao menu

 

Aula 1.3: Portabilidade e escalabilidade na computação paralela heterogênea

PDF Slides
lecture-1-1overview.pdf Lecture-1-3-portability-scalability.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-1-3-portability-scalability.pptx

Volta ao menu

 

Capítulo de livro

Capítulo 1 – Introdução
lecture-1-1overview.pdf 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-1-1overview.pdf Lecture-2-1-cuda-thrust-libs.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-2-1-cuda-thrust-libs.pptx

Volta ao menu

 

Aula 2.2: Funções da API para alocação de memória e movimentação de dados

PDF Slides
lecture-1-1overview.pdf Lecture-2-2-cuda-data-allocation-API.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-2-2-cuda-data-allocation-API.pptx

Volta ao menu

 

Aula 2.3: Threads e funções kernel

PDF Slides
lecture-1-1overview.pdf Lecture-2-3-cuda-parallelism-threads.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-2-3-cuda-parallelism-threads.pptx

Volta ao menu

 

Aula 2.4: Introdução ao CUDA Toolkit

PDF Slides
lecture-1-1overview.pdf Lecture-2-4-cuda-toolkit.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-2-4-cuda-toolkit.pptx

Volta ao menu

 

Experimentos

Device Query
lecture-1-1overview.pdf Module[2]-DeviceQuery.pdf

 

Capítulo de livro

Capítulo 2 – Computação paralela de dados
lecture-1-1overview.pdf 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-1-1overview.pdf Lecture-3-1-kernel-SPMD-parallelism.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-3-1-kernel-SPMD-parallelism.pptx

Volta ao menu

 

Aula 3.2: Configuração de kernels multidimensionais

PDF Slides
lecture-1-1overview.pdf Lecture-3-2-kernel-multidimension.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-3-2-kernel-multidimension.pptx

Volta ao menu

 

Aula 3.3: Exemplo РConverṣo de imagem colorida para escala de cinza

PDF Slides
lecture-1-1overview.pdf Lecture-3-3-color-to-greyscale-image-processing-example.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-3-3-color-to-greyscale-image-processing-example.pptx

Volta ao menu

 

Aula 3.4: Exemplo – Image blur

PDF Slides
lecture-1-1overview.pdf Lecture-3-4-blur-kernel.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-3-4-blur-kernel.pptx

Volta ao menu

 

Aula 3.5: Thread scheduling

PDF Slides
lecture-1-1overview.pdf Lecture-3-5-transparent-scaling.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-3-5-transparent-scaling.pptx

Volta ao menu

 

Experimentos

CUDA Image Blur
lecture-1-1overview.pdf Module[3]-ImageBlur.pdf

CUDA Image Color to Grayscale
lecture-1-1overview.pdf Module[3]-ImageColorToGrayscale.pdf

CUDA Thrust Vector Add
lecture-1-1overview.pdf Module[3]-ThrustVectorAdd.pdf

CUDA Vector Add
lecture-1-1overview.pdfModule[3]-VectorAdd.pdf

 

Capítulo de livro

Capítulo 3 – Execução Paralela Escalável
lecture-1-1overview.pdf 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-1-1overview.pdf Lecture-4-1-cuda-memories.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-4-1-cuda-memories.pptx

Volta ao menu

 

Aula 4.2: Algoritmos de caixa em paralelo (Tiled parallel algorithms)

PDF Slides
lecture-1-1overview.pdf Lecture-4-2-tiled-algorithms.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-4-2-tiled-algorithms.pptx

Volta ao menu

 

Aula 4.3: Exemplo РMultiplica̤̣o de matrizes usando o algoritmo de caixas (Tiled matrix multiplication)

PDF Slides
lecture-1-1overview.pdf Lecture-4-3-tiled-matrix-multiplication.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-4-3-tiled-matrix-multiplication.pptx

Volta ao menu

 

Aula 4.4: Kernel para multiplicação de matrizes usando o algoritmo de caixas

PDF Slides
lecture-1-1overview.pdf Lecture-4-4-tiled-matrix-multiplication-kernel.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-4-4-tiled-matrix-multiplication-kernel.pptx

Volta ao menu

 

Aula 4.5: Multiplicação de matrizes de tamanhos arbitrários usando o algoritmo de caixas

PDF Slides
lecture-1-1overview.pdf Lecture-4-5-tile-boundary-condition.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-4-5-tile-boundary-condition.pptx

Volta ao menu

 

Experimentos

Basic Matrix Multiplication
lecture-1-1overview.pdf Module[4]-BasicMatrixMultiplication.pdf

CUDA Tiled Matrix Multiplication
lecture-1-1overview.pdf Module[4]-TiledMatrixMultiplication.pdf

 

Capítulo de livro

Capítulo 4 – Memória e Localidade de Dados
lecture-1-1overview.pdf 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-1-1overview.pdf Lecture-5-1-warps-simd.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-5-1-warps-simd.pptx

Volta ao menu

 

Aula 5.2: Inpacto da divergência de controle no desempenho do kernel.

PDF Slides
lecture-1-1overview.pdf Lecture-5-2-control-divergence.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-5-2-control-divergence.pptx

Volta ao menu

 

Quiz

Quiz do Módulo 5
lecture-1-1overview.pdf Module 5 Quiz.pdf

 

Capítulo de livro

Capítulo 5 – Considerações sobre Desempenho
lecture-1-1overview.pdf 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-1-1overview.pdf Lecture-6-1-dram-bandwidth.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-6-1-dram-bandwidth.pptx

Volta ao menu

 

Aula 6.2: Coalescência no Acesso a Memória em CUDA.

PDF Slides
lecture-1-1overview.pdf Lecture-6-2-memory-coalescing.pdf
Power Point Slides
simbol_powerpoints_slides Lecture-6-2-memory-coalescing.pptx

Volta ao menu

 

Quiz

Quiz do Módulo 6
lecture-1-1overview.pdf Module 6 Quiz.pdf

 

Capítulo de livro

Capítulo 5 – Considerações sobre Desempenho
lecture-1-1overview.pdf 3rd-Edition-Chapter05-performance-1-20.pdf

 

–>Legendas: Eduardo C. Vasconcellos e Fernanda C. Vasconcellos.
–>Sincronização: Eduardo C. Vasconcellos.

GPU

Aenean sodales eros ac scelerisque sagittis. Aliquam porta consectetur blandit. Nulla sed augue nisl. Vivamus pulvinar ullamc orper malesuada.

Suspendisse ornare velit eget dolor fringilla, et imperdiet ipsum convallis. Integer faucibus, felis nec lobortis hendrerit, augue mi mattis massa, vitae lobortis neque nunc ut eros. Donec massa lectus

Support by:

NVIDIA has pioneered visual computing, the art and science of computer graphics.

Development: