Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Programa do Curso
Introdução
- O que é o ROCm?
- O que é HIP?
- ROCm vs CUDA vs OpenCL
- Visão geral dos recursos e da arquitetura do ROCm e do HIP
- Configurando o ambiente de desenvolvimento
Primeiros passos
- Criar um novo projeto ROCm utilizando o código Visual Studio
- Explorando a estrutura e os arquivos do projeto
- Compilar e executar o programa
- Exibindo a saída usando printf e fprintf
API do ROCm
- Compreender o papel da API do ROCm no programa anfitrião
- Utilizar a API do ROCm para consultar informações e capacidades do dispositivo
- Utilizar o ROCm API para atribuir e anular a atribuição de memória do dispositivo
- Utilização da API do ROCm para copiar dados entre o anfitrião e o dispositivo
- Utilização da API do ROCm para lançar kernels e sincronizar threads
- Utilização da API ROCm para tratar erros e excepções
Linguagem HIP
- Compreender o papel da linguagem HIP no programa do dispositivo
- Utilizar a linguagem HIP para escrever kernels que executam no GPU e manipulam dados
- Utilizar tipos de dados, qualificadores, operadores e expressões HIP
- Utilização de funções, variáveis e bibliotecas incorporadas na HIP para efetuar tarefas e operações comuns
Modelo de memória ROCm e HIP
- Compreender a diferença entre os modelos de memória do anfitrião e do dispositivo
- Utilização de espaços de memória ROCm e HIP, tais como global, partilhada, constante e local
- Utilização de objectos de memória ROCm e HIP, como ponteiros, matrizes, texturas e superfícies
- Utilização dos modos de acesso à memória do ROCm e da HIP, tais como apenas leitura, apenas escrita, leitura-escrita, etc.
- Utilização do modelo de consistência de memória e dos mecanismos de sincronização do ROCm e da HIP
Modelo de execução do ROCm e da HIP
- Compreender a diferença entre os modelos de execução do anfitrião e do dispositivo
- Utilização de threads, blocos e grelhas do ROCm e da HIP para definir o paralelismo
- Utilização das funções de thread do ROCm e da HIP, como hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Utilizando as funções de bloco do ROCm e da HIP, como __syncthreads, __threadfence_block, etc.
- Utilização de funções de grelha ROCm e HIP, como hipGridDim_x, hipGridSync, grupos cooperativos, etc.
Depuração
- Compreender os erros e bugs comuns nos programas ROCm e HIP
- Utilizar o depurador de código Visual Studio para inspecionar variáveis, pontos de interrupção, pilha de chamadas, etc.
- Utilizar o ROCm Debugger para depurar programas ROCm e HIP em dispositivos AMD
- Usando o ROCm Profiler para analisar os programas ROCm e HIP em dispositivos AMD
Otimização
- Compreender os factores que afectam o desempenho dos programas ROCm e HIP
- Uso de técnicas de coalescência do ROCm e do HIP para melhorar o rendimento da memória
- Uso de técnicas de cache e pré-busca de ROCm e HIP para reduzir a latência da memória
- Utilização de técnicas de memória partilhada e de memória local do ROCm e da HIP para otimizar os acessos à memória e a largura de banda
- Usar as ferramentas de criação de perfil e de perfilamento do ROCm e da HIP para medir e melhorar o tempo de execução e a utilização de recursos
Resumo e próximo passo
Requisitos
- Conhecimento da linguagem C/C++ e dos conceitos de programação paralela
- Conhecimentos básicos de arquitetura de computadores e hierarquia de memória
- Experiência com ferramentas de linha de comando e editores de código
Público alvo
- Programadores que pretendam aprender a utilizar o ROCm e o HIP para programar AMD GPUs e explorar o seu paralelismo
- Desenvolvedores que desejam escrever código de alto desempenho e escalável que possa ser executado em diferentes dispositivos AMD
- Programadores que desejam explorar os aspectos de baixo nível da programação GPU e otimizar o desempenho do código
28 horas
Declaração de Clientes (2)
Muito interativo com vários exemplos, com uma boa progressão de complexidade entre o início e o fim da formação.
Jenny - Andheo
Curso - GPU Programming with CUDA and Python
Machine Translated
A energia e o humor dos formadores.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curso - NVIDIA GPU Programming - Extended
Machine Translated