We may earn an affiliate commission when you visit our partners.
Course image
Udemy logo

Arquitetura e Programação de GPUs

Esteban Clua

Neste curso você irá aprender o que são as GPUs e como elas funcionam. Daremos alguns conceitos básicos de computação paralela e de programação de alto desempenho, possibilitando que o aluno possa desenvolver aplicações práticas ao final do curso. Finalmente, o curso entra em detalhes na linguagem CUDA, usada para programar GPUs NVIDIA. O aluno terminará o curso com a capacidade de desenvolver diferentes aplicações práticas e de explorar as GPUs para diferentes finalidades. O curso é ideal para desenvolvedores que procuram alto desempenho através das GPUs, para as mais diferentes áreas aplicadas: e-science, big data, machine learning, engenharia, etc.

Read more

Neste curso você irá aprender o que são as GPUs e como elas funcionam. Daremos alguns conceitos básicos de computação paralela e de programação de alto desempenho, possibilitando que o aluno possa desenvolver aplicações práticas ao final do curso. Finalmente, o curso entra em detalhes na linguagem CUDA, usada para programar GPUs NVIDIA. O aluno terminará o curso com a capacidade de desenvolver diferentes aplicações práticas e de explorar as GPUs para diferentes finalidades. O curso é ideal para desenvolvedores que procuram alto desempenho através das GPUs, para as mais diferentes áreas aplicadas: e-science, big data, machine learning, engenharia, etc.

ATENÇÃO: O curso está em produção e a cada semana estaremos colocando novas aulas.

Enroll now

What's inside

Learning objectives

  • Programar gpus
  • Programação paralela
  • Cuda
  • Nvidia
  • Arquitetura de gpus
  • Como funcionam gpus nvidia

Syllabus

Introdução
Referencias e pré-requisitos
Motivação: porque usar GPUs?
Consumo de Energia importa!
Read more
um pouco mais sobre consumo de energia
HIerarquia de processamentos
E finalmente o CUDA!...
Tensor Cores
Visão Geral
Lei de Amdahl
Leitura recomendada
Esta aula irá aprofundar um pouco mais sobre como são as GPUs, mostrando algumas caracteristicas fundamentais e uma breve história delas...
Desmistificando as GPUs
O pipeline gráfico: de onde surgiu a idéia de GPU...
um pouco mais sobre o pipeline gráfico
Paralelismo do pipeline gráfico
os shaders
Uma breve história das GPUs
Uma breve história das GPUS - parte II
Paradigmas sobre a GPU - parte 1
Paradigmas sobre a GPU - parte 2
Paradigmas sobre a GPU - parte 3
Gerencia de Threads
Formas de se usar a GPU
Tudo pronto... vamos instalar o CUDA...
Antes de começar a programar a GPU, vamos aprender alguns conceitos fundamentais sobre computação paralela...
Latência x Throughput
Solucao do exercício
Latencia e Throughput nas CPUs e GPUs
Computação Heterogênea
Work e Steps
OpenMP e MPI
Paralelismo nos dados e nas instruções
Taxonomia de Flynn
Padrões de Paralelismo
Padrões de comuynicação
Conceitos gerais de paralelismo
Grids, Warps, Blocos e Cache...
Nesta aula começaremos a aprender a programar em CUDA!
Concorrência de Kernels
Palavras chaves...
Grids, Blocos e Threads
Um pouco mais sobre Blocos e Grids
Hierarquia de Memórias
Tipos de Funções
Hello World!
Tarefa: Cuda Tools
Agora que já aprendemos conceitos básicos de CUDA, vamos começara explorar o paralelismo da GPU!
Recapitulando o Hello World
Memória
Primeiro exemplo: soma de dois numeros (sem paralelismo)
Sincronização entre CPU e GPU
cudamemset
Gerenciamento de Erros
Muitos Threads!...
Soma de Vetores (primeira versao paralela)
Aumentando o numero de Threads no mesmo bloco
Tarefa: multiplicar escalar por vetor
Tarefa 2: o que é GPUDirect
Vamos agora começar a resolver problemas mais interessantes?...
Granularidade do Kernel
Mexendo com os blocos...
Indices não referenciados
Em que ordem os blocos são executados?
Número ideal de threads por bloco...
1, 2 ou 3 dimensões
mapeamento de domínio de imagens para GPUs
Exemplo: Image Blur
Exemplo: Multiplicação de matrizes
A GPU tem muitas memórias. uma delas é a memória compartilhada, que é muito rápida, porem limitada. NEsta aula vamos aprender a usá-la. Também vamos aprender a cronometrar execuções usando eventos.
Mapemaneto de Kernel para uma imagem
resposta para a pergunta desafio
Função Ceil
numero de blocos para imagens
divergencia de threads
Tipos de memórias
Memória compartilhada - parte 1
Sincronização de threads
Memória compartilhada - parte 2
Cuda Event - timer
Exercicio de Memória compartilhada
Agora que já aprendemos um pouco sobre as memórias, vamos ver como otimizar alguns casos de leitura. Vamos também resolver o problema de "race condition"...
Conceitos de Coalescencia de memória
Coalescência de memória - parte 2
Exemplos de Coalescência
Exercício sobre Coalescência
Demonstração da Coalescência
Operadores Atômicos - conceitos básicos
Operadores Atômicos -parte 2
Operadores Atômicos - limitações
Exemplo de uso de operadores atômicos - Cálculo de um Historgrama
Exercício de Histograma
Os algoritmos de reduce e Scan são muito importanes para resolver vários problemas, especialmente em computação paralela. Nesta aula vamos ver como são e como implementá-los em GPUs
Device Properties
Reduce Sequencial
Reduce Paralelo com Memoria Global
Reduce em memoria compartilhada
Histograma com reduce
Algoritmo de Scan

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Oferece conteúdo sobre GPUs e CUDA, tópicos altamente relevantes para computação paralela e alto desempenho
Explora conceitos básicos de computação paralela e programação de alto desempenho, fornecendo uma base sólida para os alunos
Guia os alunos pelo desenvolvimento de aplicações práticas usando GPUs, capacitando-os para vários casos de uso
Aborda a linguagem CUDA em detalhes, permitindo que os alunos programem GPUs NVIDIA
Abrange uma ampla gama de tópicos relacionados a GPUs, incluindo arquitetura, como funcionam as GPUs NVIDIA e como programá-las
O curso está em produção, com novas aulas sendo adicionadas regularmente, o que garante conteúdo atualizado e relevante

Save this course

Save Arquitetura e Programação de GPUs to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Arquitetura e Programação de GPUs with these activities:
Create a study guide summarizing key concepts
Improve your retention and understanding by creating a concise study guide that consolidates the key concepts of the course.
Browse courses on CUDA
Show steps
  • Review your notes and course materials
  • Identify the most important concepts
  • Summarize each concept in a clear and concise manner
Review parallelization concepts
Review the concepts of parallelization to build up your foundational understanding of this course's topic.
Browse courses on CUDA
Show steps
  • Go over notes on basic parallelization concepts
  • Read a blog post or article on parallelization techniques
Review Computer Architecture
Revising core computer architecture concepts will establish a strong foundation for learning about GPUs.
Browse courses on Computer Architecture
Show steps
  • Revisit the basics of computer organization and architecture.
  • Review the different components of a CPU, including the control unit, arithmetic logic unit, and memory.
  • Study the different types of computer buses and how they are used to connect different components of a computer.
11 other activities
Expand to see all activities and additional details
Show all 14 activities
Explore CUDA Development Resources
Exploring CUDA tutorials will provide you with valuable insights and best practices for GPU programming.
Browse courses on CUDA
Show steps
  • Review official CUDA documentation and tutorials.
  • Follow online courses or workshops on CUDA programming.
  • Utilize online forums and communities for support and knowledge sharing.
Create a simple program that uses CUDA
Reinforce your understanding of CUDA programming by creating a simple but functional program.
Browse courses on CUDA
Show steps
  • Set up your development environment
  • Write a simple CUDA program
  • Run and test your program
Participate in a study group with other students
Enhance your learning by collaborating with peers, discussing concepts, and sharing insights.
Browse courses on CUDA
Show steps
  • Find a study group or form one with classmates
  • Meet regularly to discuss course material and work on assignments
  • Engage in active discussions and share your perspectives
Practice Parallel Programming Concepts
Practicing parallel programming concepts will enhance your understanding of how to write efficient code for GPUs.
Browse courses on Parallel Programming
Show steps
  • Implement basic parallel algorithms using threads or processes.
  • Experiment with different synchronization techniques to avoid race conditions.
  • Optimize code for parallel execution by reducing shared memory access and improving data locality.
Follow a tutorial on advanced CUDA programming
Expand your knowledge of CUDA by following a tutorial that goes beyond the basics.
Browse courses on CUDA
Show steps
  • Find a reputable tutorial on advanced CUDA programming
  • Follow the tutorial step-by-step
  • Experiment with the code and try out different techniques
Develop a GPU-Accelerated Application
Building a practical application will solidify your understanding of GPU programming and its applications in real-world scenarios.
Show steps
  • Identify a problem or task that can benefit from GPU acceleration.
  • Design and implement a solution using CUDA or other GPU programming frameworks.
  • Optimize the code for performance and efficiency.
  • Evaluate the results and compare them to non-GPU implementations.
Provide Guidance to Aspiring GPU Programmers
Mentoring others will reinforce your understanding of GPU programming concepts and foster your communication skills.
Show steps
  • Identify opportunities to mentor junior developers or students interested in GPU programming.
  • Share your knowledge and experience through code reviews, technical discussions, and project guidance.
  • Provide constructive feedback and support to help mentees develop their skills.
Develop a CUDA application for a specific problem
Apply your CUDA skills to solve a real-world problem by developing a custom application.
Browse courses on CUDA
Show steps
  • Identify a problem that can be solved using CUDA
  • Design and develop a CUDA application
  • Test and refine your application
Develop a Whitepaper on GPU Applications
Writing a whitepaper will challenge you to synthesize your knowledge and articulate the practical applications of GPUs in various domains.
Show steps
  • Research and identify specific industries or applications where GPUs have made a significant impact.
  • Analyze case studies and gather data to support your findings.
  • Write a comprehensive report outlining the benefits, challenges, and future trends of GPU applications.
Contribute to Open-Source GPU Projects
Contributing to open-source projects will expose you to real-world GPU codebases and enhance your understanding of best practices.
Show steps
  • Identify open-source GPU projects that align with your interests and skill level.
  • Review the project documentation and codebase to understand the project's goals and implementation.
  • Contribute bug fixes, feature enhancements, or documentation improvements to the project.
  • Collaborate with other contributors and the project maintainers to improve the project.
Contribute to an open-source CUDA project
Deepen your understanding of CUDA and make a meaningful contribution to the community by working on an open-source project.
Browse courses on CUDA
Show steps
  • Identify an open-source CUDA project that interests you
  • Review the project's documentation and codebase
  • Identify an area where you can contribute
  • Make your contributions and submit a pull request

Career center

Learners who complete Arquitetura e Programação de GPUs will develop knowledge and skills that may be useful to these careers:

Reading list

We haven't picked any books for this reading list yet.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Arquitetura e Programação de GPUs.
Production Machine Learning Systems - Português...
Most relevant
Liderança de Equipes na Era Digital
Most relevant
Diversidade e Inovação na Prática: Casos de Sucesso
Most relevant
Fundamentos de C++ - Uma Abordagem Completa
Most relevant
O Empreendedorismo e as Competências do Empreendedor
Most relevant
TDD – Desenvolvimento de Software Guiado por Testes
Most relevant
O sucesso por meio das avaliações: análise e medição de...
Most relevant
Conceitos Básicos de Logística e Supply Chain
Most relevant
Preparar os Dados para Exploração
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser