Difference between revisions of "GPU Tutorial"

From HPC Wiki
Jump to navigation Jump to search
(Created page with "{{Syllabus Introduction to GPU Computing}} == Introduction == Welcome to the HPC.NRW GPU Computing Online Tutorial! This tutorial is '''intended for beginners''' who are jus...")
 
m
 
(6 intermediate revisions by the same user not shown)
Line 3: Line 3:
  
 
Welcome to the HPC.NRW GPU Computing Online Tutorial!
 
Welcome to the HPC.NRW GPU Computing Online Tutorial!
 +
 +
A graphics processing unit (GPU) is a processor featuring a highly parallel structure, making it efficient at processing large blocks of data. Their most common application are of course video editing and gaming, but in principle GPUs can be used for any purpose. In an HPC environment, usually very specialized code was needed to utilize GPU computing, but in recent years this has become much more accessible.
  
 
This tutorial is '''intended for beginners''' who are just starting to use a supercomputer, or are otherwise interested in learning how to write GPU code.
 
This tutorial is '''intended for beginners''' who are just starting to use a supercomputer, or are otherwise interested in learning how to write GPU code.
Line 8: Line 10:
 
== How to proceed through this tutorial? ==
 
== How to proceed through this tutorial? ==
  
The tutorial is made up of '''5 sections'''. Each covers a separate stand-alone topic, but they are designed to be worked through '''in order'''.
+
The tutorial is made up of '''5 sections'''. Each covers a separate stand-alone topic; there is an introduction which is meant to be watched first, but the others can be worked through in any order.
  
Each tutorial consists of a '''short video''', followed by a couple of quiz questions, and some practical '''exercises'''. You don't actually need to have a GPU in your computer to do the quizzes in this tutorial.
+
Each tutorial consists of a '''short video''', followed by a couple of quiz questions, and some practical '''exercises'''. The Videos are collected in a short [https://www.youtube.com/playlist?list=PLhznUsiowt271154ERgAfWM_l2RkDNsHi Playlist]. You don't actually need to have a GPU in your computer to do the quizzes in this tutorial.
  
 
If you have any questions or encounter problems, you can contact us via e-mail at [mailto:tutorials@hpc.nrw tutorials@hpc.nrw].
 
If you have any questions or encounter problems, you can contact us via e-mail at [mailto:tutorials@hpc.nrw tutorials@hpc.nrw].
Line 16: Line 18:
 
== Who created this tutorial? ==
 
== Who created this tutorial? ==
  
This tutorial has been developed within the framework of the [https://hpc.dh.nrw/ HPC.NRW] project. It is part of a [[:Category:Tutorials|series of online tutorials]] on various HPC-related topics, all of which were created by HPC.NRW members. Other topics are for example [[OpenMP_in_Small_Bites|OpenMP]] and [[Gprof_Tutorial|Gprof]], and new tutorials continue to be developed.
+
This tutorial has been developed within the framework of the [https://hpc.dh.nrw/ HPC.NRW] project. It is part of a [[:Category:Tutorials|series of online tutorials]] on various HPC-related topics, all of which were created by HPC.NRW members. Other topics are for example an [[Introduction_to_Linux_in_HPC|Introduction to Linux]], [[OpenMP_in_Small_Bites|OpenMP]] and [[Gprof_Tutorial|Gprof]], and new tutorials continue to be developed.
  
 
The speakers are '''Christian Schmidt''' and '''Marius Neumann''' from Bielefeld University. Both have been working in Uni Bielefelds theoretical physics department for several years. Other contributions came from practically all HPC.NRW members.
 
The speakers are '''Christian Schmidt''' and '''Marius Neumann''' from Bielefeld University. Both have been working in Uni Bielefelds theoretical physics department for several years. Other contributions came from practically all HPC.NRW members.
Line 26: Line 28:
 
=== [[GPU_Tutorial/Introduction | Introduction]] ===
 
=== [[GPU_Tutorial/Introduction | Introduction]] ===
  
This session provides a brief background on where Linux and UNIX come from, what different Linux distributions are, and why it is important to have a basic understanding of Linux concepts when interacting with HPC platforms.
+
This session provides a brief background on what a GPU is and how it can speed up computations. It also explains how a SAXPY works.
  
 
=== [[GPU_Tutorial/SAXPY_CUDA_C | Several Ways to SAXPY: CUDA C/C++]] ===
 
=== [[GPU_Tutorial/SAXPY_CUDA_C | Several Ways to SAXPY: CUDA C/C++]] ===
Line 34: Line 36:
 
=== [[GPU_Tutorial/Open_MP | Several Ways to SAXPY: OpenMP ]] ===
 
=== [[GPU_Tutorial/Open_MP | Several Ways to SAXPY: OpenMP ]] ===
  
This session discusses the SAXPY via Open MP GPU Offloading.
+
This session discusses the SAXPY via OpenMP GPU Offloading.
  
 
=== [[GPU_Tutorial/Julia | Several Ways to SAXPY: Julia ]] ===
 
=== [[GPU_Tutorial/Julia | Several Ways to SAXPY: Julia ]] ===
Line 40: Line 42:
 
This session discusses the SAXPY via Julia cuda.jl
 
This session discusses the SAXPY via Julia cuda.jl
  
=== [[GPU_Tutorial/Julia | Several Ways to SAXPY: NUMBA ]] ===
+
=== [[GPU_Tutorial/Numba | Several Ways to SAXPY: NUMBA ]] ===
  
 
This session discusses the SAXPY via numba python.
 
This session discusses the SAXPY via numba python.

Latest revision as of 09:47, 26 January 2022

Tutorial
Title: Introduction to GPU Computing
Provider: HPC.NRW

Contact: tutorials@hpc.nrw
Type: Multi-part video
Topic Area: GPU computing
License: CC-BY-SA
Syllabus

1. Introduction
2. Several Ways to SAXPY: CUDA C/C++
3. Several Ways to SAXPY: OpenMP
4. Several Ways to SAXPY: Julia
5. Several Ways to SAXPY: NUMBA

Introduction

Welcome to the HPC.NRW GPU Computing Online Tutorial!

A graphics processing unit (GPU) is a processor featuring a highly parallel structure, making it efficient at processing large blocks of data. Their most common application are of course video editing and gaming, but in principle GPUs can be used for any purpose. In an HPC environment, usually very specialized code was needed to utilize GPU computing, but in recent years this has become much more accessible.

This tutorial is intended for beginners who are just starting to use a supercomputer, or are otherwise interested in learning how to write GPU code.

How to proceed through this tutorial?

The tutorial is made up of 5 sections. Each covers a separate stand-alone topic; there is an introduction which is meant to be watched first, but the others can be worked through in any order.

Each tutorial consists of a short video, followed by a couple of quiz questions, and some practical exercises. The Videos are collected in a short Playlist. You don't actually need to have a GPU in your computer to do the quizzes in this tutorial.

If you have any questions or encounter problems, you can contact us via e-mail at tutorials@hpc.nrw.

Who created this tutorial?

This tutorial has been developed within the framework of the HPC.NRW project. It is part of a series of online tutorials on various HPC-related topics, all of which were created by HPC.NRW members. Other topics are for example an Introduction to Linux, OpenMP and Gprof, and new tutorials continue to be developed.

The speakers are Christian Schmidt and Marius Neumann from Bielefeld University. Both have been working in Uni Bielefelds theoretical physics department for several years. Other contributions came from practically all HPC.NRW members.


Topics

Introduction

This session provides a brief background on what a GPU is and how it can speed up computations. It also explains how a SAXPY works.

Several Ways to SAXPY: CUDA C/C++

This session discusses the SAXPY via NVIDIA CUDA C/C++

Several Ways to SAXPY: OpenMP

This session discusses the SAXPY via OpenMP GPU Offloading.

Several Ways to SAXPY: Julia

This session discusses the SAXPY via Julia cuda.jl

Several Ways to SAXPY: NUMBA

This session discusses the SAXPY via numba python.