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
510
クーダでハニワ / 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
連続的な到達圏を表示する QGISプラグインを作ってみた
mierune
PRO
0
640
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
460
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
710
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
660
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
730
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
560
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.6k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.2k
オープニング / MIERUNE JCT - Tokyo 2024
mierune
PRO
1
1.3k
Other Decks in Technology
See All in Technology
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
140
Kubernetes self-healing of your workload
hwchiu
0
440
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
860
Biz職でもDifyでできる! 「触らないAIワークフロー」を実現する方法
igarashikana
7
3.1k
現場データから見える、開発生産性の変化コード生成AI導入・運用のリアル〜 / Changes in Development Productivity and Operational Challenges Following the Introduction of Code Generation AI
nttcom
1
460
もう外には出ない。より快適なフルリモート環境を目指して
mottyzzz
13
9.6k
初めてのDatabricks Apps開発
taka_aki
1
270
ソースを読む時の思考プロセスの例-MkDocs
sat
PRO
1
140
Data Hubグループ 紹介資料
sansan33
PRO
0
2.2k
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
20k
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
240
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
250
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Typedesign – Prime Four
hannesfritz
42
2.8k
Designing for Performance
lara
610
69k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Practical Orchestrator
shlominoach
190
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
990
Done Done
chrislema
185
16k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
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