CUDAを学びたいと思ったとき、まず困るのが「で、どの本を読めばいいの?」問題です。
このGitHubリポジトリ awesome-cuda-books は、その悩みにかなり真っ向から答えてくれる「CUDA本のおすすめ一覧」です。
GPUプログラミングは、普通のC++やPythonとは少し勝手が違います。
CPUが「順番にコツコツ処理する」のが得意なのに対して、GPUは「同時にたくさん処理する」のが得意。
この違いをうまく使えると、画像処理、科学計算、機械学習の一部などで大きな高速化が狙えます。
ただし、学び方を間違えると「用語が多すぎて何が何だか…」となりがち。そこを本リストが助けてくれます。
このリポジトリは、CUDAプログラミング本を集めた「キュレーションリスト」です。
要するに、**“本棚のおすすめ棚”** みたいなものですね。
READMEによると、対象はかなり広めで、
といった具合に整理されています。
個人的には、この分類がかなりありがたいと思います。
というのも、CUDAの本って「何を学びたいか」で選ぶべき本が全然変わるからです。
たとえば、最初から最適化本を読んでも、たぶん疲れます。逆に、入門本だけで終わると実戦投入が難しい。
この一覧は、その迷いを減らすための地図としてかなり優秀です。
リストの「Beginner / Getting Started」には、入門者に向いた本が並んでいます。
Jason Sanders & Edward Kandrot (2010)
READMEでは「timeless classic」と紹介されています。
短くて例が多く、最初の一冊に向いているという立ち位置です。
これはいかにも“古典”らしい選ばれ方ですね。
CUDAの本は新しければいい、という話でもありません。基本の考え方は意外と長持ちするので、こういう本は今でも価値があるはずです。
もちろん、古い本なので最新APIや新世代GPUの事情は別途補う必要があります。そこは注意点です。
Jaegeun Han & Bharatkumar Sharma (2019)
CUDA 10+ の例とGitHubリポジトリ付きで、モダンな入門〜中級向けです。
私は、入門書にGitHub repoが付いているのはかなり重要だと思います。
読むだけでなく、実際に動かして試せるからです。CUDAは「見た」だけでは身につきにくいので、コードを動かせるかどうかは大きな差になります。
Mete Yurtoglu & Duane Storti (2016)
エンジニア向けで、科学系やCS専攻でない人にも実践的、という紹介です。
この本の位置づけは、かなり良さそうです。
「理論はいいから、まず何をどう並列化すればいいの?」という人に刺さりそうですね。
GPUの話は、数学やアーキテクチャの説明が先に来て尻込みしやすいので、こうした“現場目線”の本はありがたいです。
David B. Kirk & Wen-mei W. Hwu (3rd Edition, 2022)
READMEでは「definitive GPU architecture bible」とかなり強い言い方をしています。
大学でも広く使われている定番本とのことです。
これは名前からして硬派です。
「なぜGPUは速いのか」「どういう構造で大量並列を実現しているのか」を理解したいなら、まさに本命候補ではないでしょうか。
CUDAを“書ける”だけでなく、“なぜそう書くべきか”まで理解したい人に向いているはずです。
Richard Ansorge (2022)
科学計算の例が多く、stencils、Monte Carlo、imaging などを扱い、Modern C++の説明も強いそうです。
こういう本は地味に強いです。
CUDAは、教科書よりも「この計算をどう速くするか」という実務で真価が出るので、実例ベースの本は理解しやすい。
しかも科学計算寄りは、GPUの得意分野にかなり近いので、納得感が出やすいと思います。
John Cheng, Max Grossman & Ty McKercher (2014)
multi-GPU、streams、libraries、performance pitfalls など、実運用寄りの話が入っています。
ここでいう streams は、ざっくり言うと「GPUに複数の仕事を流して、うまく重ねる仕組み」です。
performance pitfalls は「性能を落としがちな落とし穴」のこと。
この手の本は、単にコードを書くだけでなく、「なぜ遅いのか」を知りたい人に向いています。私はこういう本がいちばん役に立つ場面が多いと思います。理屈より、現実の失敗を避ける力がつくからです。
Tolga Soyata (2018)
cuBLAS、cuFFT、Thrust、NPP などのライブラリに強く、OpenCLとの比較もあるそうです。
ここは大事です。CUDAは“自分で全部書く”世界ではなく、ライブラリを使って賢く回す世界でもあります。
cuBLAS は行列演算、cuFFT は高速フーリエ変換、Thrust は並列アルゴリズム集、NPP は画像処理系のライブラリです。
全部をゼロから書くより、こうした道具を使いこなす方が現実的。そこを学べる本は価値が高いです。
Elliot Arledge (2025, Manning)
first kernels から Flash Attention まで扱い、Nsight Compute を使った profiling も学べるとあります。
これはかなり今っぽいですね。
深層学習の世界では、「ただ動く」だけでは足りず、メモリや演算の流れまで考えないと効率が出ません。
profiling は、プログラムのどこが遅いかを測ること。Nsight Compute はNVIDIAの解析ツールです。
深層学習の実装に寄せてCUDAを学びたい人には、かなり面白そうだと思います。
Nicholas Wilt (2013)
「deep-dive reference」とされていて、APIの細部や低レベルなテクニックまで載っているタイプです。
こういう本は、最初から読むというより、困ったときに参照する辞書的な役割が強いです。
正直、すべてを通読するというより「必要になったら開く」使い方が合っている気がします。
Shane Cook (2013)
並列アルゴリズム、最適化パターン、ベストプラクティスがテーマです。
best practices は、要するに「こう書くと失敗しにくい」という経験則の集まりです。
CUDAは性能差が大きいので、こういう知見があるとかなり助かります。
理論だけでなく、実装の“型”を知るのに向いていそうです。
Rob Farber (2011)
研究用途の実例や、スケーラブルな設計に触れています。
scalable は「データや規模が増えても耐えられる」という意味です。
小さく動くコードと、実際の大規模処理で通用する設計は別物なので、ここを学べるのは重要です。
Brian Tuomanen (2018)
Numba、CuPy、raw bindings などを扱い、Pythonユーザー向けの本としておすすめされています。
これはかなり大事な切り口です。
CUDAというとC++のイメージが強いですが、PythonでGPUを使いたい人はとても多いです。
Numba はPythonコードを高速化する仕組み、CuPy はNumPy風にGPU配列を扱えるライブラリです。
「PythonのままGPUの力を借りたい」という人には、入り口としてかなり良さそうです。
Paulo Motta (2024)
Modern C++20 と Python interop(pybind11)を扱うとあります。
interop は連携、pybind11 はC++コードをPythonから使うための定番ライブラリです。
C++とPythonの橋渡しができると、性能の必要な部分はC++/CUDA、周辺はPython、という現実的な構成が作れます。
これは実務ではかなり強いですよね。個人的には、この“分業”こそが本当に使いやすい開発スタイルだと思います。
このリストの面白いところは、古典だけで終わらず、2024〜2026の新しいタイトルにも言及している点です。
たとえば、READMEには以下のような本が挙げられています。
ただし、README自身が「mostly specialized or self-published but frequently appearing in searches」と書いているので、ここは少し慎重に見た方がよさそうです。
つまり、検索ではよく見かけるけれど、広く定評が固まっているとは限らない、というニュアンスです。
私はこういう注意書きがあるのは誠実だと思います。何でもかんでも同列におすすめしないのは、リストとして信頼しやすいです。
READMEには「CUDA changes fast. Always pair books with the free official CUDA C++ Programming Guide」とあります。
これは本当にその通りだと思います。
CUDAの世界は、GPUの世代、ドライバ、コンパイラ、ライブラリ、ツールが絡むので、少し古い本でも学べる一方で、細かいAPIや推奨手法は変わっていきます。
だからこそ、
この3点セットが大事です。
このリポジトリは、特に次のような人に向いていると思います。
逆に、すでにCUDAをかなり使い込んでいて、最新の細かい仕様だけ欲しい人には、書籍一覧より公式ドキュメントの方が役立つ場面も多そうです。
でも「まず何を読むべきか」を決める段階では、このリストはかなり助けになります。
個人的には、こういう「本のガイド」はかなり好きです。
理由はシンプルで、技術の学習って、結局は何を読むかで半分決まるからです。
CUDAは特に難しい分野なので、いきなりWeb検索だけで走り出すと、断片的な情報を集めるだけで疲れてしまいます。
その点、このリポジトリは「初心者」「実践」「最適化」「Python」「最新本」と分けてくれているので、学習ルートを作りやすい。
しかも、古典と新刊の両方を混ぜているのが良いですね。古典は土台、新刊は今の事情。両方必要です。
もちろん、こうしたリストは“保証書”ではありません。
本の相性は人によって違うし、英語の読みやすさも大きく影響します。
それでも、CUDAの海で最初の羅針盤としてはかなり優秀ではないかと思います。
参考: GitHub - alternbits/awesome-cuda-books: A curated list of best cuda programming books