inflearn logo
知識共有
inflearn logo

CUDAプログラミング入門

GPGPUはもはや馴染みのない技術ではありません。古くから科学計算、シミュレーション、グラフィックス処理など様々な分野で活用されており、今日ではAI技術の性能を左右する核心的な基盤として定着しています。 このような流れの中で、GPUプログラミング能力は開発者のスキルを一段階拡張させる強力なツールとなります。CPU中心の開発を超え、大規模な並列演算を直接扱えるということは、すなわち新しい問題解決の手法と、より広い開発の可能性を意味します。 本講義は、GPGPUの事実上の標準と言えるCUDAプログラミングを、基礎から実践まで体系的に扱います。GPU構造の理解、並列プログラミングモデル、メモリ最適化、カーネル作成など、実務にすぐ適用可能な内容を中心に構成しており、受講後には自らGPUベースのプログラムを設計・実装できるレベルを目指します。

11名 が受講中です。

難易度 中級以上

受講期間 無制限

C++
C++
CUDA
CUDA
gpgpu
gpgpu
C++
C++
CUDA
CUDA
gpgpu
gpgpu

受講後に得られること

  • CUDA並列プログラミング能力 - GPUスレッド構造、メモリ階層、カーネル実行モデルを理解し、直接CUDAカーネルを作成できるようになります。

  • CPUに比べて数十〜数百倍速い演算加速コード - ベクトル演算、行列乗算などの実際の演算をGPUで加速するプログラムを作成し、性能の差を直接確認することができます。

CUDAで広がる開発能力、GPUプログラミングの第一歩C/C++開発者のためのGPGPU入門講座

GPUプログラミングは、もはや特定の分野だけの専有物ではありません。今やAI、シミュレーション、画像処理、科学計算など、ほぼすべての領域でGPUが中心的な役割を担っており、これを扱う能力は開発者の競争力を大きく広げる強力な武器となります。C/C++の経験はあるものの、GPUプログラミングに馴染みがなく、なかなか一歩を踏み出せなかった開発者のために本講義を準備しました。CUDAの基本概念からGPU構造の理解、並列プログラミングモデル、メモリ最適化、カーネル作成、ストリームの活用、画像処理まで実践中心に扱い、受講後には自らGPUベースのプログラムを設計・実装できるようになるでしょう。

このような内容を学びます

1. CUDAの概要

GPUがグラフィックス専用デバイスから汎用演算を行うGPGPUへと発展してきた流れを概観し、CUDAプログラミングを理解するために必要な核心的なハードウェア・ソフトウェアの概念を全体的に説明します。GPUの構造、並列処理方式、CUDA実行モデルなど、その後の実習のための基礎を軽快に扱います。


2. インストールおよび環境設定

CUDA開発を始める際に最も多く直面する困難が、まさに初期環境の設定です。この章では、CUDA Toolkitのインストールからコンパイラの設定、IDEの構成まで、開発に必要な全環境を段階的に整理します。以降の章の例題を実行し、デバッグできる実戦的な開発環境を構築する方法を説明します。


3. CUDAプログラミングの基本

CUDAプログラムが動作する基本的な流れを説明します。CUDA環境の初期化と終了処理のプロセスを確認し、ホストメモリ → デバイスメモリへのコピーカーネルの実行デバイスメモリ → ホストメモリへのコピーへと続く実行構造全体を段階的に説明します。また、CUDAカーネルの呼び出し方式、主要なCUDA APIの使用方法など、今後の実習の基盤となる必須概念をまとめます。


4. Global Memory Coalescing

GPU性能最適化の核心要素であるglobal memory coalescingの概念を扱います。スレッドがグローバルメモリにアクセスする際、ハードウェア的にどのような方式でリクエストが結合(coalesce)されるかを説明し、最適なアクセスパターンと最悪のパターンがどのような違いを生むのかを実際のシナリオを通じて比較します。また、メモリアクセス性能を極大化するためのデータ配置戦略とスレッド構成方法を整理し、効率的なCUDAカーネルを作成するための必須最適化手法について説明します。


5. Thread Co-op within a Block

ブロック内部でスレッドがどのように協業し、より高いパフォーマンスを引き出せるかを扱います。Shared Memoryを活用してブロック単位でデータを効率的に共有する方法を説明し、続いてwarp level intrinsicを使用してワープ内部のスレッド間協業を行う手法を紹介します。これら2つの協業方式を組み合わせて、より最適化されたCUDAカーネルを作成する戦略を扱い、実際の例としてwarp-level reductionblock-level reductionを活用して最小値を求める過程を実装してみます。


6. Shared Memory - MatrixTranspose

CUDAで行列を転置(transpose)するプロセスを通じて、Shared Memory活用の核心概念を学びます。転置演算で頻繁に発生する非効率なグローバルメモリアクセスパターンと、それによるパフォーマンス低下の事例を確認し、Shared Memoryを使用してメモリアクセスを最適化する方法を説明します。また、Shared Memoryで発生する可能性のあるbank conflicts問題を解決する手法を扱い、行列転置の例題を通じてShared Memoryを効果的に使用する実践的な戦略を学ぶことができます。


7. Shared Memory - MatrixMultiply

行列転置(Transpose)の例題に続き、Shared Memoryをより効果的に活用する方法を行列乗算(Matrix Multiplication)の事例を通じて扱います。CUDAで大規模な行列乗算を処理する基本構造を説明し、大きな行列を小さなタイル(tile)単位の部分行列に分割して演算する手法を紹介します。また、行列転置と類似しながらも異なる行列乗算のメモリアクセスパターンを比較し、Shared Memoryを活用してメモリアクセスのボトルネックを減らし、性能を最大化する戦略を扱います。


8. Occupancy

メモリアクセス最適化ではなくワープスケジューリングの観点からGPU性能を引き出す方法を扱います。Occupancy(占有率)とは何か、そしてGPUがどれだけ多くのワープを同時に実行できるかがなぜ重要なのかを説明します。Occupancyを高めるためのスレッド構成、レジスタ使用量、共有メモリ(Shared Memory)使用量の調整戦略を詳しく見ていき、Occupancyが高いときに性能が向上する場合と、高くてもむしろ性能が低下する場合を比較します。


9. cuda Stream

CUDAで非同期実行を可能にするcuda streamの概念を扱います。基本的にすべてのCUDAプログラムで暗黙的に使用されるdefault streamの動作方式をまず理解した上で、複数のストリームを活用して演算とメモリコピーをオーバーラップさせて実行し、全体的なパフォーマンスを向上させる方法を説明します。また、Nsight Systemsを使用して、ストリームベースの非同期実行が実際にどのようなパフォーマンス上の利点を提供するのかを分析します。


10. Image Filter

画像処理で広く使われているカーネルフィルタ(kernel filter)の概念を紹介し、GaussianフィルタとLaplacianフィルタをCUDAで直接実装することで、GPUベースの画像処理の基礎を学びます。
Texture MemoryとShared Memoryを活用してメモリ・アクセス効率を高める方法を説明し、同一のアルゴリズムを多様なメモリ構造で実装した際に、実際のハードウェアでどのような性能差が発生するかを比較分析します。


11. Image Histogram

画像のピクセル分布を分析するヒストグラム(histogram)をCUDAで実装し、並列環境でのデータ蓄積方式とそれに伴うパフォーマンスの問題を扱います。CUDAでヒストグラムを計算する基本構造を確認し、この過程で不可欠となるatomic operationの動作原理とパフォーマンス低下の問題について説明します。続いて、Shared Memoryとwarp intrinsicを活用してatomic演算のボトルネックを軽減し、より効率的なヒストグラム計算カーネルを作成する最適化手法を扱います。


12. CUDA-D3D12 相互運用 (interop)

Direct3D 12レンダリングパイプラインとCUDAを結合し、GPUグラフィックスとGPGPU演算を同時に活用する方法を扱います。簡単なD3D12ゲームフレームワークのRender TargetとDepth BufferをCUDAリソースとしてマッピングし、D3D12のTimelineとCUDAのTimelineを同期する方法を説明します。
サンプルコードは、CUDAリソースとしてマッピングしたテクスチャを入力として受け取り、ガウスぼかし(Gaussian Blur)、輪郭抽出、ノーマルマップレンダリング、深度値の可視化など、さまざまなイメージプロセッシングを適用して最終画面に出力する機能を実装します。


受講前のご注意事項

実習環境

  • オペレーティングシステムおよびバージョン(OS): Windows 10/11

  • 使用ツール:Visual Studio 2026

  • cuda Toolkit 13.2

  • nvidia GPU


学習資料

  • pdf提供

  • 添付ファイルによるソースコードの提供

前提知識

  • 必須

    • C/C++

    • 基礎的なWindowsプログラミング

  • 推奨(以下の講義が役立つ場合があります。)

注意事項

  • GTX1600番台以上のグラフィックボードが必要です。

  • GTX1000番台のグラフィックカードでもサンプルを実行できますが、プロジェクトの設定を若干修正する必要があります。修正方法は「インストールおよび開発環境の設定」の章で扱います。

  • CUDA 13.3以上の最新CUDA Toolkitの使用も可能です。こちらもプロジェクト設定を若干修正する必要があります。修正方法は「インストールおよび開発環境の設定」で扱います。

  • AI技術を扱うわけではありません。行列の積やカーネルフィルタの適用はAI技術と関連がありますが、直接的にAI技術を扱うことはありません。


こんな方に
おすすめです

学習対象は
誰でしょう?

  • グラフィックスの経験がなく、GPUプログラミングに苦手意識があるものの、並列演算を活用してみたいプログラマー

  • AI・シミュレーション・科学計算を直接加速させてみたい開発者

前提知識、
必要でしょうか?

  • C/C++

  • Visual Studioを利用した基礎的なWindowsプログラミング

こんにちは
megayuchiです。

インフラン認証

キャリア認証

3,307

受講生

95

受講レビュー

22

回答

5.0

講座評価

11

講座

プログラマー

C++,x86/x64 ASM, DirectX9/11/12, Metal, OpenGL, CUDA, win32, winsock/bsd socket

 

インフロン講義

D3D12プログラミング基礎編 - https://inf.run/7gJhS

D3D12プログラミング基礎プラス - https://inf.run/itHDW

DirectX Raytracing プログラミング - https://inf.run/cQqx7

Windows System プログラミング - https://inf.run/AwfCv

Windowsデバッグのヒント - https://inf.run/zL7E4

 

ブログ : https://megayuchi.com

Youtube : https://youtube.com/megayuchi

LinkedIn : https://www.linkedin.com/in/megayuchi/

 

 

もっと見る

受講レビュー

まだ十分な評価を受けていない講座です。
みんなの役に立つ受講レビューを書いてください!

megayuchiの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!

新規会員登録で25%OFF

¥20,967

25%

¥27,957