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
79
クーダでハニワ / 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
君はこの色の違いを見ることができるか / MIERUNE BBQ #12
mierune
PRO
0
100
位置情報とオープンソースがやりたくてMIERUNEに転職した話 〜経歴、事例紹介、GISへのいざない〜 / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
760
クロージング / MIERUNE JCT - Tokyo 2024
mierune
PRO
0
570
オープニング / MIERUNE JCT - Tokyo 2024
mierune
PRO
1
650
QGISで簡単にDEMを可視化 - ElevationTile4JP & QuickDEM4JP プラグインのアップデート / FOSS4G TOKAI 2024
mierune
PRO
0
330
ゼロから始める点群可視化 feat.QGIS
mierune
PRO
0
320
MIERUNE BBQにおけるユーザー中心設計()
mierune
PRO
1
810
MIERUNE BBQ #10 in 札幌時計台 オープニング・クロージング
mierune
PRO
0
690
セイコーマートの近くに住みたい!Pythonで到達圏解析
mierune
PRO
1
960
Other Decks in Technology
See All in Technology
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
510
Application Development WG Intro at AppDeveloperCon
salaboy
0
180
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
330
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
120
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
580
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
0
980
サイバーセキュリティと認知バイアス:対策の隙を埋める心理学的アプローチ
shumei_ito
0
380
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
How to Ace a Technical Interview
jacobian
276
23k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
GraphQLとの向き合い方2022年版
quramy
43
13k
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Optimizing for Happiness
mojombo
376
70k
Embracing the Ebb and Flow
colly
84
4.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
Designing the Hi-DPI Web
ddemaree
280
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