/learn-cuda

A complete CUDA tutorial ranging from first GPU programs to advanced asynchronous methods

Primary LanguageCudaGNU General Public License v3.0GPL-3.0

NVIDIA CUDA Knowledge Base

Purpose

This repository is intended to be an all-in-one tutorial for those who wish to become proficient in CUDA programming, requiring only a basic understanding of C essentials to get started. The need for such a tutorial series is apparent to anyone who has tried to build their understanding of the CUDA language and GPU techniques, as resources that are easily approachable and offer a thorough and complete understanding of their selected topics are few and far between, and certainly do not address the entire breadth of beginner and intermediate CUDA topics as this series does.
The knowledge base is comprised of three components:

  • Tutorial articles - The tutorial articles exist in the repository wiki and are the heart of the knowledge base and should be sufficient instruction on their own to make anyone into a CUDA expert.
  • Example programs - One or more example programs, found in the repository itself, will accompany every tutorial to demonstrate the concepts they cover. In addition to being logically grouped and labeled inside the repository, they will also be directly linked inside the articles for easy access. Each of the example programs are complete and ready to run, and should be compatible with most versions of CUDA. Some later example programs have features included which require more modern CUDA versions, which will be indicated both in the accompanying tutorial and the program itself
  • Performance experiments - Performance experiments, which consist of experiment source code, the resultant CSV data set, and one or more explainer articles, have also been provided to round out the understanding provided by the tutorial series and demonstrate the impact that adopting certain practices can have. Similar to the tutorials, the experiment articles are found in the wiki, and the accompanying code and CSV data sets are in the repository.

Getting Started

The repository wiki home page is the core of the knowledge base. There, you will find a table of contents that lists all of the tutorials and performance experiments in the intended learning order, with links to each article, program, or data set under each topic. Once you get started on a tutorial, you will also be able to access each tutorial's materials from inside the article. There will also be links to the previous and next articles in the series so that you can continue learning without having to visit the home page after each topic.

About

This knowledge base was created by Riley Shipley in fall of 2021 in partnership with the University of Tennessee at Chattanooga and the ExaMPI project lead by Dr. Tony Skjellum.