T1
CUDA 1.0 公開 ── 汎用 GPU 計算

メタデータ
- 日付
- 年代
- 2000s
- Tier
- T1
- 参照年表
- 半導体・ハードウェアの歴史
- 出典数
- 10
- 関連項目
- 03
CUDA(Compute Unified Device Architecture)は、NVIDIA の GPU をグラフィックス用の API を通さずに、汎用の並列計算機として使うための仕組みである。NVIDIA は2006年11月、GeForce 8800(G80)とともに構想を発表し、2007年2月にバージョン0.8を最初の公開ベータとして出した。正式版の1.0は2007年6月で、Programming Guide 1.0 の表紙には 6/23/2007 の日付がある。のちの深層学習と生成 AI の計算基盤は、この6月の1.0から地続きになっている。
CUDA 以前 ── 絵を描くふりをして計算する
GPU を計算に使う試み自体は CUDA より古い。2000年代前半には、研究者が計算をグラフィックスの処理に見立て、グラフィックス API 経由で GPU に解かせていた。いわゆる GPGPU である。
CUDA 1.0 の Programming Guide は、それまでの障害を3つ挙げている。GPU はグラフィックス API を通してしかプログラムできず、初心者には学習の壁が高く、グラフィックス以外の用途には不向きな API の負担がかかった。DRAM のどこからでも読めるが、任意の場所へは書き込めなかった。そして一部の用途は DRAM の帯域に縛られ、GPU の演算能力を使い切れなかった。
この壁を学術側から崩しにかかったのが、Stanford の Brook である。Ian Buck らが SIGGRAPH 2004 で発表した論文「Brook for GPUs: Stream Computing on Graphics Hardware」は、C に簡単なデータ並列の構文を加え、GPU をストリーム処理のコプロセッサとして使うシステムを示した。Buck は同じ2004年に博士課程を終えて NVIDIA に移っている。NVIDIA は自社のブログで、Buck を Brook の開発責任者であり、CUDA の発明者だと紹介している。
2006年11月 ── G80 と同時の発表
2006年11月8日、NVIDIA は CUDA を GPU で計算するための新しいアーキテクチャとして発表した。NVIDIA 自身はこれを業界初の GPU 向け C コンパイラ開発環境と呼び、従来の手法より最大100倍速く複雑な計算問題を解けると述べている。いずれも同社の主張である。対応ハードウェアは同時に登場した GeForce 8800 と、今後の Quadro 製品とされた。
CUDA 1.0 の中身
Programming Guide 1.0 は CUDA を次のように定義している。
CUDA stands for Compute Unified Device Architecture and is a new hardware and software architecture for issuing and managing computations on the GPU as a data-parallel computing device without the need of mapping them to a graphics API.
ソフトウェアは層になっていた。ハードウェアドライバ、API とそのランタイム、そして数学ライブラリの CUFFT(高速フーリエ変換)と CUBLAS(線形代数)である。プログラマが書くのは C 言語の拡張で、ガイドはこれを学習曲線を最小にするための選択だとしている。
| 項目 | CUDA 1.0(2007年)の内容 |
|---|---|
| 対象 GPU | GeForce 8 シリーズ、Quadro FX 5600/4600、Tesla |
| プログラミング言語 | C 言語への最小限の拡張 |
| 付属ライブラリ | CUFFT、CUBLAS |
| ブロックあたりの最大スレッド数 | 512 |
| マルチプロセッサあたりの共有メモリ | 16KB |
| ワープの大きさ | 32 スレッド |
| マルチプロセッサ数(GeForce 8800 GTX、Tesla C870) | 16 |
| 倍精度浮動小数点 | ネイティブ非対応(double は float に格下げ) |
計算は「スレッド」を「ブロック」に束ね、ブロックを「グリッド」に並べる3段で組み立てる。同じブロックのスレッドはチップ上の共有メモリでデータを受け渡し、同期できる。マルチプロセッサは32スレッドの「ワープ」を単位に命令を発行する。この構成は、名前と数値を変えながら今日の GPU まで続いている。
倍精度が使えなかったことは、初期の CUDA が科学技術計算の全域を覆えなかったことを意味する。それでも単精度で足りる画像処理・信号処理・一部の物理計算では、すぐに使い道が見つかった。
版の推移
Windows 版のリリースノートに残る版の履歴は短い。
| 時期 | 版 | 内容 |
|---|---|---|
| 2006年11月 | ── | GeForce 8800 とともに CUDA を発表 |
| 2007年2月 | 0.8 | 最初の公開ベータ |
| 2007年6月 | 0.9、1.0 | 1.0 で正式版 |
| 2007年12月 | 1.1 | Toolkit アーカイブに記載 |
| 2008年8月 | 2.0 | 同上 |
NVIDIA の CUDA Toolkit アーカイブは、いまも最古の項目として「CUDA Toolkit 1.0 (June 2007)」を掲げている。2026年9月の時点で、同じ一覧の先頭は13.4.2である。
開かれた規格との競争
CUDA は NVIDIA の GPU でしか動かない。これに対し、Apple が提案した OpenCL は、2008年12月9日に Khronos Group が1.0として批准・公開した。Khronos はこれを、さまざまなプロセッサを対象とする初のオープンでロイヤリティフリーな並列プログラミング規格と位置づけ、策定には NVIDIA も参加した。
それでも主流は CUDA に残った。このサイトの NVIDIA のページが論じるとおり、乗り換えを高くつかせているのは言語仕様そのものより、CUDA の上に積み上がったライブラリとツールの厚みである。
深層学習との出会い
CUDA の当初の想定は科学技術計算だった。転機は5年後に来る。2012年、Toronto 大学のチームが GeForce GTX 580 を2枚使い、CUDA で書いた畳み込みのコードで学習させたネットワークが画像認識コンテスト ILSVRC で大差をつけた(AlexNet)。チームはそのコードを論文とともに公開している。
以後、深層学習の計算は GPU と CUDA の上で回るのが標準になり、その延長に2022年の H100 や2024年の Blackwell B200 がある。用語としての GPU と 深層学習 も参照。会社の歩みは NVIDIA に、同時代のハードウェアは ハードウェアの年表 にある。
よくある質問
- CUDA はいつ公開されたのですか。
- 2006年11月に GeForce 8800 とともに発表され、2007年2月にバージョン0.8が最初の公開ベータとして出ました。正式版の1.0は2007年6月で、Programming Guide 1.0 には6月23日の日付があります。
- CUDA とは何ですか。
- NVIDIA の GPU を、グラフィックス API に作業を置き換えることなく、データ並列の計算機として使うためのハードウェアとソフトウェアの仕組みです。プログラムは C 言語の拡張で書き、ドライバ、ランタイム、数学ライブラリ(CUFFT、CUBLAS)がそれを支えます。
- CUDA を作ったのは誰ですか。
- NVIDIA は、Stanford でストリーム計算言語 Brook の開発を率い、2004年に NVIDIA に入った Ian Buck を CUDA の発明者として紹介しています。Brook は SIGGRAPH 2004 の論文で発表されました。
- CUDA 1.0 はどの GPU で動いたのですか。
- GeForce 8 シリーズ、Quadro FX 5600/4600、Tesla です。これらは倍精度浮動小数点をネイティブには扱えず、double 型は float に格下げされました。
出典
一次資料NVIDIA CUDA Compute Unified Device Architecture Programming Guide, Version 1.0 (6/23/2007) — NVIDIA
CUDA の定義、それ以前の3つの障害、対応 GPU、ソフトウェア階層、スレッド・ブロック・グリッド、512スレッド・16KB・ワープ32、倍精度の扱い
一次資料NVIDIA CUDA Release Notes, Windows, Version 1.0 — NVIDIA
版の履歴(2007年2月の0.8が最初の公開ベータ、6月に0.9と1.0)
一次資料Ian Buck — author page, NVIDIA Blog
Buck が2004年に NVIDIA に入ったこと、Brook の開発責任者だったこと、NVIDIA が彼を CUDA の発明者と紹介していること
二次資料Nvidia Announces Cuda GPU Architecture — Game Developer, Nov 8, 2006
2006年11月の発表、業界初の GPU 向け C コンパイラ環境、最大100倍という NVIDIA の主張
三次資料CUDA — Wikipedia
最終更新: