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
クーダでハニワ / MIERUNE BBQ #12
Search
MIERUNE
PRO
October 23, 2024
Technology
0
240
クーダでハニワ / MIERUNE BBQ #12
MIERUNE BBQ #12 -
https://mierune.connpass.com/event/333853/
Takami Hidekazu
MIERUNE
PRO
October 23, 2024
Tweet
Share
More Decks by MIERUNE
See All by MIERUNE
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
170
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
300
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
280
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
270
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
280
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
790
オープニング / MIERUNE JCT - Tokyo 2024
mierune
PRO
1
880
QGISで簡単にDEMを可視化 - ElevationTile4JP & QuickDEM4JP プラグインのアップデート / FOSS4G TOKAI 2024
mierune
PRO
0
570
Other Decks in Technology
See All in Technology
バクラクの組織とアーキテクチャ(要約)2025/01版
shkomine
13
3.3k
What's New in OpenShift 4.18
redhatlivestreaming
0
880
CNAPPから考えるAWSガバナンスの実践と最適化
yuobayashi
5
740
もし今からGraphQLを採用するなら
kazukihayase
10
4.5k
AWSでRAGを実現する上で感じた3つの大事なこと
ymae
3
890
依存関係があるコンポーネントは Barrel ファイルでまとめよう
azukiazusa1
3
470
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
640
WAF に頼りすぎない AWS WAF 運用術 meguro sec #1
izzii
0
390
A Hidden Pitfall of K8s DNS with Spring Webflux
musaprg
0
290
5分で紹介する生成AIエージェントとAmazon Bedrock Agents / 5-minutes introduction to generative AI agents and Amazon Bedrock Agents
hideakiaoyagi
0
150
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
3
580
AIエージェントについてまとめてみた
pharma_x_tech
20
13k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Site-Speed That Sticks
csswizardry
3
320
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
Done Done
chrislema
182
16k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
230
How to train your dragon (web standard)
notwaldorf
90
5.8k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Statistics for Hackers
jakevdp
797
220k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
31
2.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
Transcript
©OpenStreetMap contributors Hidekazu Takami クーダでハニワ 1
©Project PLATEAU / MLIT Japan へっぽこ プログラマーの悩み 2
©Project PLATEAU / MLIT Japan 3 PCで を描きたい!!
©Project PLATEAU / MLIT Japan 4 をめちゃ高速で!!
©Project PLATEAU / MLIT Japan 5 のであれば
©Project PLATEAU / MLIT Japan 自己紹介 6 で
©Project PLATEAU / MLIT Japan 7 格闘家[ミルコ・クロコップ
©Project PLATEAU / MLIT Japan = 8 Compute Unified Device
Architecture NVIDIA CEO ジェンスン・フアン⽒
©Project PLATEAU / MLIT Japan 9 = マンデルブロ集合
©Project PLATEAU / MLIT Japan 自己紹介 10 で
©OpenStreetMap contributors へっぽこプログラマ NVIDIAのGPUを使ってCUDAを利用し、マンデルブロ集合を描くとめちゃくちゃ早く作成できるよ でもNVIDIAのGPUお値段高いけどね、革ジャンさん安く売ってよ、おねがい!! 11
©Project PLATEAU / MLIT Japan 高見 英和 自己紹介 Takami Hidekazu
• おもにバックエンド担当することがおおい • 動的型付け言語(Pythonなど)はやや苦手 • ロードバイクとバイオリンが趣味かな~ 12
©Project PLATEAU / MLIT Japan 自己紹介 13 マンデルブロ集合(ハニワ)
©Project PLATEAU / MLIT Japan 14 わからん!!
©Project PLATEAU / MLIT Japan 15 複素数
©Project PLATEAU / MLIT Japan 16 実数(実部)+虚数(虚部) 1+1i
©Project PLATEAU / MLIT Japan 17 0 1 ▼ 2
-2 √2 ▼ 実数
©Project PLATEAU / MLIT Japan 18 0 2i -2i 1+1i
虚数
©Project PLATEAU / MLIT Japan 19 0 2i -2i 1+1i
-2 2
©Project PLATEAU / MLIT Japan 20 漸化式 (ぜんかしき)
©Project PLATEAU / MLIT Japan 21 Z0 =0 Zn+1 =Zn
+C 2 ここに複素数の値をいれる (描画位置の値) 1+1i
©Project PLATEAU / MLIT Japan 22 Z0 =0 Z2 =(1+1i)+(1+1i)
2 Z1 =0+(1+1i) 2
©Project PLATEAU / MLIT Japan 23 1000回繰り返して Zの値の絶対値が2を超えると黒 それ以外は白とする 1+1i
0.4+0.6i
©Project PLATEAU / MLIT Japan 24 つまり
©Project PLATEAU / MLIT Japan 25 1000X1000画像を作るには 1000x1000x1000回(十億回)の計算が必要になる
©Project PLATEAU / MLIT Japan 26 0 2i -2i 1+1i
-2 2 0.0 0.1000 1000.0 1000.1000
©Project PLATEAU / MLIT Japan 27 マンデルブロ集合はフラクタルな図形なので どこまでも拡大できる 10万倍 縦横幅2
縦横幅0.00002
©Project PLATEAU / MLIT Japan 28 色の付け方 HSV色空間 • 色相
(Hue) • 彩度 (Saturation, Chroma) • 明度 (Value, Brightness) 漸化式で2を超えるまでの 回数(n)を360度で表現する 色が決定する
©Project PLATEAU / MLIT Japan 29 サンプルコード C++ X軸ループ、Y軸ループ、漸化式ループの3重ループ
©Project PLATEAU / MLIT Japan 30 サンプルコード C++
©Project PLATEAU / MLIT Japan 31 高速にするにはGPU(CUDA)を使う
©Project PLATEAU / MLIT Japan 32 GPUで三角形ばっかり描くのはもったいない。 そのスーパーな並列処理をなんにでも 使えるようにしたら?
©Project PLATEAU / MLIT Japan 33 CUDAコアを作って▲もかけるが、 いろいろな計算もできるようにした! しかもライブラリーも作ったよ! (cuda
toolkit)
©Project PLATEAU / MLIT Japan 34 CUDAコア SM
©Project PLATEAU / MLIT Japan 35
©Project PLATEAU / MLIT Japan 36 GPUのプログラムって難しいイメージ?
©Project PLATEAU / MLIT Japan 37 実はそんなに難しくない
©Project PLATEAU / MLIT Japan 38 CPUで利用されるメモリとGPUで利用されるメモリは別の場所にあるため ホスト側のメモリ情報をデバイス側へ転送する カーネルを使って同時並行処理する デバイス側のメモリ情報をホスト側に戻す
©Project PLATEAU / MLIT Japan 39 カーネルとは各CUDAコアで実行する関数みたいなもの カーネルがCUDAコアで同時に実行される ブロックとスレッドの指定でカーネルが処理するピクセルが決まる (今回の場合)
©Project PLATEAU / MLIT Japan 40 サンプルコード(cuda)
©Project PLATEAU / MLIT Japan 41 サンプルコード(cuda)
©Project PLATEAU / MLIT Japan 42 速度比較 使用PC CPU:Intel i5
12400 6コア 12スレッド GPU:NVIDIA GTX1070 CUDAコア 1920基 フ ル
©Project PLATEAU / MLIT Japan 43 RTX4090 10/20日現在 CUDAコア 16,384基!!
GTX1070 CUDAコア 1929基
©Project PLATEAU / MLIT Japan 44 • スケール: ◦ 0.00002
縦横 • 中心位置: ◦ 0.743643135 X ◦ 0.131825963i Y
©Project PLATEAU / MLIT Japan 45 速度比較 CPUシングルスレッド:10070.4 ms(10s) GPU(CUDA)
:75.90 ms (0.8s) CPUマルチスレッド :1352.06 ms (1s) Intel i5 (12スレッド) (GTX1070 1920コア)
©Project PLATEAU / MLIT Japan 46 ms 132倍 18倍
©OpenStreetMap contributors まとめ 47
©OpenStreetMap contributors • PCでハニワ(マンデルブロ集合) を描きたい • CUDAを使うとマンデルブロ集合は高速に描ける • CUDAのプログラミングは意外と簡単 •
CPU側とGPU側のメモリは別なのでデータの受け渡しが必要 • NVIDIAさんもっとGPU安く売ってくれないですかね? 48
©OpenStreetMap contributors • Rust de ハニワ • https://github.com/Guarneri009/rust-mandelbrot • Haskell
de ハニワ • https://github.com/Guarneri009/haskell-mandelbrot 49
©OpenStreetMap contributors 終わり ます 50