Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CompML CUDA C Hello World!
Search
ryoherisson
November 30, 2020
Programming
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CompML CUDA C Hello World!
CompMLで発表した、CUDA Cプログラミングに関する発表資料です。
ryoherisson
November 30, 2020
More Decks by ryoherisson
See All by ryoherisson
論文紹介: tSNE-CUDA
ryoherisson
0
540
Multiplying Matrices Without Multiplying
ryoherisson
1
850
疎行列圧縮フォーマットの紹介
ryoherisson
0
1.1k
Neural Network Pruning
ryoherisson
0
780
CompML: Introduction to Neural Network Pruning
ryoherisson
1
18k
Deep Neural NetworkのためのGPU演算処理高速化に関する研究
ryoherisson
0
19k
CompML: Precision and Recall for Time Series
ryoherisson
0
320
Other Decks in Programming
See All in Programming
Hono + Inertia + React で LP を構築した話
oukayuka
2
180
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
230
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
520
業務時間外もAIに働いてもらう話
colorful12
2
8.7k
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
530
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
350
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
420
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
670
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
560
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
1
2k
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Featured
See All Featured
Writing Fast Ruby
sferik
630
63k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
690
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
It's Worth the Effort
3n
188
29k
Side Projects
sachag
455
43k
We Are The Robots
honzajavorek
0
310
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
480
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Transcript
CompML CUDA “Hello World!” Ryohei Izawa
CompML CUDA “Hello World!” +PIO$IFOH .BY(SPTTNBO 5Z.D,FSDIFS $6%"$ϓϩϑΣογϣφϧ ϓϩάϥϛϯά JNQSFTTUPQHFBSγϦʔζ
ΠϯϓϨε 1 主に,「CUDA C プロフェッショナル プログラミング」を 参考にしながら,CUDA Cについて学ぶこと ⽬的 本資料では,並列コンピューティングやGPUアーキテクチャ, CUDA Cプログラミングの初歩的な処理の流れを概観する.
CompML 並列コンピューティング
CompML 並列プログラミング 逐次プログラム 並列プログラム 問題を⼩さな計算(タスク)に分割し、逐次的に実⾏ データ依存性のない複数のタスクを同時に実⾏ 3 ※多くの場合は逐次的に処理する部分も含まれる +PIO$IFOH ଞ
QQ
CompML 並列化 タスク並列化 データ並列化 4 機能を複数のコアに分散させて実⾏する. 個別に処理することが可能で,かつ⼤部分を並⾏して実⾏できるタスクや関数が⼤量にある場合に可能. データを複数のコアに分散させて実⾏する. 同時に処理できるデータ要素が⼤量にある場合に可能. ⇨
CUDAプログラミングは特にデータ並列化に適している. +PIO$IFOH ଞ QQ
CompML コンピュータアーキテクチャ フリンの分類 5 命令 Single Multiple Single Multiple データ
Single Instruction Multiple Data (SIMD) Multiple Instruction Multiple Data (MIMD) Single Instruction Single Data (SISD) Multiple Instruction Single Data (MISD) SISD (Single Instruction Single Data) 逐次アーキテクチャ.1つのコアで,単⼀の命令ストリームで、 単⼀のデータを操作する. SIMD (Single Instruction Multiple Data) 並列アーキテクチャ.複数コアが全て同じ命令ストリーム を,別々のデータに対して実⾏ MISD (Multiple Instruction Single Data) 各コアが別々の命令ストリームを通じて,同じデータスト リームを実⾏. MIMD (Multiple Instruction Multiple Data) 並列アーキテクチャ.複数のコアが複数のデータストリー ムを処理し,それぞれ別の命令を実⾏する. +PIO$IFOH ଞ QQ
CompML 並列化の⽬的 6 遅延の低減 演算の開始から完了までにかかる時間.μ秒で表⽰されることが多い. 帯域幅の改善 単位時間あたりに処理できるデータ量.MB/s または GB/sで表⽰される. スループットの改善
単位時間あたりに処理できる演算量.GFLOPS※で表⽰される. ※ 1秒間に10億回の浮動⼩数点数演算を実⾏できること. +PIO$IFOH ଞ Q
CompML メモリ構成に基づくアーキテクチャ 7 マルチノード 分散メモリを使⽤ マルチプロセッサ シェアードメモリ使⽤ プロセッサ キャッシュ メモリ
相互接続ネットワーク プロセッサ キャッシュ メモリ プロセッサ キャッシュ メモリ … … … 複数のプロセッサがそれぞれのローカルメモリ の内容をネットワーク経由でやりとりする. プロセッサ キャッシュ シェアードメモリ プロセッサ キャッシュ プロセッサ キャッシュ … … バス 数⼗〜数百のプロセッサが物理的に同じメモリ に接続する. +PIO$IFOH ଞ QQ
CompML GPU
CompML ヘテロジニアスアーキテクチャ 9 ホモジニアス(同種)システム :同じアーキテクチャのプロセッサを使ってアプリケーションを実⾏ ヘテロジニアス(異種)システム:複数のプロセッサアーキテクチャを使ってアプリケーションを実⾏ ALU ALU ALU ALU
CU キャッシュ DRAM CPU DRAM DRAM GPU PCI Express GPUはCPUのコプロセッサ ⇨ CPU:ホスト GPU:デバイス ヘテロジニアスアーキテクチャ キャッシュ SM SM SM … Giga Thread Engine +PIO$IFOH ଞ Q
CompML GPUの性能評価 10 GPUの性能は,主に以下の特性によって表現される. GPUのパフォーマンスを表す指標 単位時間あたりに処理できる単精度または倍精度浮動⼩数点数演算量. GFLOPSまたはTFLOPSで表⽰される. • ピーク性能評価 メモリからデータを読み取る,またはメモリにデータを格納する時のレート.
GB/sで表⽰される. • メモリ帯域幅 • CUDAコアの数 • メモリのサイズ +PIO$IFOH ଞ QQ
CompML CUDAプログラミング
CompML CUDAプログラムの処理の流れ 12 CPU GPU 1. CPUメモリからGPUメモリにデータをコピー 2. カーネルを呼び出し,GPUメモリにあるデータ を操作
3. GPUメモリからCPUメモリにデータをコピー 1. GPUへデータをコピー 2. CUDAカーネル実⾏ 3. CPUへデータをコピー GPUでの演算 ホスト デバイス /WJEJB+BQBO Q
CompML スレッドの構成 13 CPU GPU グリッド カーネル ホスト デバイス グリッド
ブロック (0, 0) ブロック (1, 0) ブロック (2, 0) ブロック (0, 1) ブロック (1, 1) ブロック (2, 1) ブロック スレッド (0, 0) スレッド (1, 0) スレッド (1, 0) スレッド (2, 0) スレッド (1, 1) スレッド (1, 2) スレッド (3, 0) スレッド (1, 3) スレッド (2 0) スレッド (2, 1) スレッド (2, 2) スレッド (2, 3) • CPUから呼び出される. • グリッド内のスレッドは1つのグローバルメモリ 空間を共有. ブロック • ブロック内のスレッド間の同期が可能 • ブロック内でメモリを共有. スレッド • 最⼩の実⾏単位 +PIO$IFOH ଞ Q
CompML Streaming Multiprocessor 14 演算器の集まり CUDAプログラム ブロック (0, 0) ブロック
(1, 0) ブロック (2, 0) ブロック (0, 1) ブロック (1, 1) ブロック (2, 1) ブロック (3, 0) ブロック (3 1) CUDAプログラム ブロック (0, 0) ブロック (1, 0) ブロック (2, 0) ブロック (0, 1) ブロック (1, 1) ブロック (2, 1) ブロック (3, 0) ブロック (3 1) SM SM SM SM 各ブロックはSMに割り当てられる • 複数のSMにまたがらない • ブロック内部ではSMのリソースを活⽤可能 各ブロックは独⽴に⾮同期に処理を実⾏ • 実⾏順序の保証はない • ブロック間の通信・同期は⾏わない /WJEJB+BQBO QQ
CompML Warp 15 並列実⾏の最⼩単位 ブロック (0, 0) ブロック Warp Warp
Warp Warp … スレッド スレッド スレッド スレッド … スレッド 32 スレッド Core Core Core Core … Core 1命令を32並列実⾏ SM • 各ブロックは32個の連続するスレッドで構成され たワープに分割される. • ワープ内のスレッドは全て同じ命令を実⾏する. ワープ1 ワープ2 ワープ3 スレッド0, スレッド1, … , スレッド31 スレッド32, スレッド33, … , スレッド63 スレッド64, スレッド65, … , スレッド95 128個のスレッドを含むブロックの構成 ワープ4 スレッド96, スレッド97, … , スレッド127 /WJEJB+BQBO Q
CompML CUDA “Hello World!” 16 処理の流れ 1. デバイスメモリのアロケーション 2. ホストメモリからデバイスメモリへのデータコピー
3. カーネルの呼び出し 4. 同期 5. 処理終了
CompML References 17 • John Cheng, Max Grossman, Ty McKercher,
CUDA C プロフェッショナル プログラミング, impress top gearシリーズ,インプレス, 2015. • NVIDIA Japan, CUDAプログラミング⼊⾨, https://www.slideshare.net/NVIDIAJapan/cuda- 57590006, 2016. (参照2020-11-26)