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
710
0
Share
クーダでハニワ / MIERUNE BBQ #12
MIERUNE BBQ #12 -
https://mierune.connpass.com/event/333853/
Takami Hidekazu
MIERUNE
PRO
October 23, 2024
More Decks by MIERUNE
See All by MIERUNE
連続的な到達圏を表示する QGISプラグインを作ってみた
mierune
PRO
0
900
Facade Patternで磨く、コードの可読性と分解力 / MIERUNE BBQ #13
mierune
PRO
0
650
ハザードマップゲームの作り方〜ハザード情報をゲームのパラメーターに落とし込む〜 / FOSS4G 2024 Japan
mierune
PRO
0
980
MIERUNEとQGIS、そしてQGIS事業のご紹介 / FOSS4G 2024 Japan
mierune
PRO
0
930
QGISで実現するもっと分かりやすい森林ゾーニング / FOSS4G 2024 Japan
mierune
PRO
0
1.1k
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
750
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.9k
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
1.5k
オープニング / MIERUNE JCT - Tokyo 2024
mierune
PRO
1
1.7k
Other Decks in Technology
See All in Technology
オンコールの負荷軽減のためのBits Assistant 活用方法 / How to Use Bits Assistant to Reduce the Workload on On-Call Staff
sms_tech
1
350
AI時代の私の技術インプットとアウトプット術
tonkotsuboy_com
15
8k
プラットフォームエンジニア ワークショップ/ platform-workshop
databricksjapan
0
140
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
420
OpenID Connectによるサービス間連携
takesection
0
150
string地獄を脱出する
sansantech
PRO
1
110
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
270
さきさん文庫の書籍ができるまで
sakiengineer
0
320
なぜハノーバーメッセに行くべきなのか 〜初参加だから語れること〜
tanakaseiya
0
190
layerx-fde-practices
cipepser
6
2.9k
「使われるデータ基盤」を目指してデータアナリストとワークショップをやった話
jackojacko_
2
940
Diagnosing performance problems without the guesswork
elenatanasoiu
0
130
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
160
Design in an AI World
tapps
1
220
The SEO identity crisis: Don't let AI make you average
varn
0
480
Writing Fast Ruby
sferik
630
63k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
190
Fireside Chat
paigeccino
42
3.9k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
300
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
200
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Claude Code のすすめ
schroneko
67
220k
How Software Deployment tools have changed in the past 20 years
geshan
0
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