๐ฏ ์ฑ๋ฅ ๋ณด๋์ค ์ฑ๋ฆฐ์ง
๋ฐ๊ฒฌ
Puzzle 33์ ์๋ฃํ๊ณ Mojo์ TensorCore API๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ํ
์ ์ฝ์ด ํ๋ ฌ ๊ณฑ์
์ ๊ตฌํํ์ต๋๋ค. ๊ตฌํ์ ์ ํํ๊ฒ ๋์ํ๊ณ , ๋ชจ๋ ์ ํ๋ ํ
์คํธ๋ฅผ ํต๊ณผํ๋ฉฐ, ์ค์ ํ๋์จ์ด ๊ฐ์ ํ๋ ฌ ์ฐ์ฐ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ Puzzle 16์ ํ์ผ๋ง ๋ฒ์ ๊ณผ ํ๋กํ์ผ๋ง์ผ๋ก ๋น๊ตํ๋ฉดโฆ
โ์ ์ฉ ํ๋์จ์ดโ๊ฐ ์์ฒญ๋๊ฒ ๋ ๋๋ฆฝ๋๋ค!
๋ฌด์์ด ์๋ชป๋ ๊ฑธ๊น?
(NVIDIA ์ ์ฉ) ncu๋ฅผ ์ฌ์ฉํ ํ๋กํ์ผ๋ง์ด ๋ํนํ ํ์ค์ ๋๋ฌ๋์ต๋๋ค (ํ๋กํ์ผ๋ง ๊ธฐ๋ฒ์ ๋ณต์ตํ๋ ค๋ฉด Puzzle 10์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ ํ์ง์ Puzzle 30์ GPU ํ๋กํ์ผ๋ง์ ์ฐธ๊ณ ํ์ธ์):
ํ ์ ์ฝ์ด ๋ฒ์ (๊ธฐ๋์ ๋ชป ๋ฏธ์นจ):
- Duration: ~13.9 ms
- ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ด๋: 72.5% DRAM ์ฒ๋ฆฌ๋ (์ฐ์ฐ ๋ฐ์ด๋์ฌ์ผ ํ๋๋ฐ!)
- ๋ฎ์ ์ ์ ์จ: 26.3% (ํ๋์จ์ด ๋ญ๋น)
- ์บ์ ์ฌ์: 29.7% L2 ์ ์ค๋ฅ
- ๋ ์ง์คํฐ ์๋ฐ: ์ค๋ ๋๋น 68๊ฐ ๋ ์ง์คํฐ
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ถฉ๋: ๋ฑ ํฌ ์ถฉ๋์ด ์ฑ๋ฅ์ ํ๊ดด
ํ์ผ๋ง ๋ฒ์ (์น์):
- Duration: ~1.62 ms (8.6๋ฐฐ ๋น ๋ฆ!)
- ์ฐ์ฐ ๋ฐ์ด๋: 1.7% DRAM ์ฒ๋ฆฌ๋ (์์๋๋ก)
- ํ์ํ ์ ์ ์จ: 66.7%
- ์บ์ ์นํ์ : 96.9% L2 ์ ์ค๋ฅ
- ํจ์จ์ : ์ค๋ ๋๋น 38๊ฐ ๋ ์ง์คํฐ
- ๊น๋ํ ๋ฉ๋ชจ๋ฆฌ: ์ ์๋ฏธํ ๋ฑ ํฌ ์ถฉ๋ ์์
๋ํนํ ํ์ค
์ด๋ GPU ์ต์ ํ์์ ํํ ์ด์ผ๊ธฐ์ ๋๋ค: ํ๋์จ์ด์ ์์ ์ฑ๋ฅ โ ์ค์ ์ฑ๋ฅ. ํ ์ ์ฝ์ด๋ ๋๋๋๋ก ๊ฐ๋ ฅํ์ง๋ง, ๋์์ ์๊ตฌ์ฌํญ๋ ๋๋๋๋ก ๊น๋ค๋กญ์ต๋๋ค:
- ๋ฉ๋ชจ๋ฆฌ ๋ฒฝ: ์ฐ์ฐ์ด ๋๋ฌด ๋นจ๋ผ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ๋ณ๋ชฉ์ด ๋๋ฌ๋จ
- ๋ฆฌ์์ค ํ์: ๋์ ๋ ์ง์คํฐ ์ฌ์ฉ๋์ด ์ ์ ์จ์ ์ ํ์ํด
- ์ ๊ทผ ํจํด ๋ฏผ๊ฐ: ๋์ ๋ฉ๋ชจ๋ฆฌ ํจํด์ด ์บ์ ๋์์ ํ๊ดดํจ
- ์ค์ ์ด ํต์ฌ: ์คํ ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ฒฝํ๊ฒ ํ๋ํด์ผ ํจ
๋ฏธ์ : ํ ์ ์ฝ์ด ์ฑ๋ฅ ๊ฐ์ ํ๊ธฐ
๋์ ๊ณผ์ : ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ด๋์ ๋ฎ์ ์ ์ ์จ์ธ ํ ์ ์ฝ์ด ๊ตฌํ์ ๋จ์ํ ํ์ผ๋ง ๋ฒ์ ์ ์ค์ ๋ก ์ด๊ธฐ๋ ๊ตฌํ์ผ๋ก ๋ณํํ์ธ์.
์ด๊ฒจ์ผ ํ ๊ธฐ์ค:
- ๋ชฉํ Duration: < 1.62 ms
- ์ ์ ์จ: > 26.3% ๊ธฐ์ค์
- DRAM ๋ถํ: < 72.5% ๊ธฐ์ค์
- ์บ์ ์ฑ๋ฅ: > 29.7% L2 ์ ์ค๋ฅ ๊ธฐ์ค์
ํ๊ตฌํ ์ต์ ํ ์ ๋ต:
-
๋ ์ง์คํฐ ์๋ฐ ์ค์ด๊ธฐ
- ๋ ์์ ๋์ฐ๊ธฐ ํ์ผ ์ฌ์ฉ
- ์ค๊ฐ ์ ์ฅ ๊ณต๊ฐ ์ต์ํ
- ๋ ์ง์คํฐ ์ฌ์ฉ๋์ ์ค์ด๊ธฐ ์ํด ํผํฉ ์ ๋ฐ๋ ๊ณ ๋ ค
- ํจ์จ์ ์ธ ๋์ ํจํด์ Puzzle 16์ ํ์ผ๋ง ๋ฐฉ์ ์ฐธ๊ณ
-
๋ฉ๋ชจ๋ฆฌ ํจํด ์ต์ ํ
- ๋ฑ ํฌ ์ถฉ๋์ ์ ๊ฑฐํ๊ธฐ ์ํด ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํจ๋ฉ ์ถ๊ฐ (๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋ ์ฐธ๊ณ )
copy_dram_to_sram_async๋ ์ด์์ ์ต์ ํ- ๋ณํฉ ํจํด ๊ฐ์ (์ด๋ฐ ํผ์ฆ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ๊ธฐ์ด ์ฐธ๊ณ )
-
์ ์ ์จ ๊ฐ์
- ๋ ๋์ ์ํ ํ์ฉ์ ์ํ ๋ธ๋ก ํฌ๊ธฐ ํ๋
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ vs ๋ ์ง์คํฐ ์ฌ์ฉ๋ ๊ท ํ ๋ง์ถ๊ธฐ
- ์ํ-SM ๋งคํ ์ต์ ํ
- Puzzle 11-20 ์๋ฆฌ์ฆ์ ์ค๋ ๋ ์กฐ์ ๊ตํ ์ ์ฉ
-
์บ์ ์ต์ ํ
- ๋ฐ์ดํฐ ์ฌ์ฌ์ฉ ํจํด ๊ฐ์
- ์บ์ ๊ณ์ธต ๊ตฌ์กฐ์ ๋ง๋ ํ์ผ ํฌ๊ธฐ ์ต์ ํ
- ๋ฐ์ดํฐ ๋ ์ด์์ ๋ณํ ๊ณ ๋ ค
- ์ด์ ํผ์ฆ ๊ณผ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต ๊ตฌ์กฐ ๊ฐ๋ ํ์ฉ
-
๊ณ ๊ธ ๊ธฐ๋ฒ
- ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฐ์ ์ค์ฒฉํ๊ธฐ ์ํ ๋๋ธ ๋ฒํผ๋ง ๊ตฌํ
- ์ํํธ์จ์ด ํ์ดํ๋ผ์ด๋ ์ฌ์ฉ
- ๋น๋๊ธฐ ์คํ ํจํด ํ๊ตฌ
- ์๋ํ์ด์ ํผ์ฆ์ ๊ณ ๊ธ ์กฐ์ ๊ธฐ๋ฒ ์ ์ฉ
์ฑ๊ณต ๊ธฐ์ค
- ์ ํ์ฑ: ๋ชจ๋ ์ ํ๋ ํ ์คํธ๊ฐ ์ฌ์ ํ ํต๊ณผ
- ์ฑ๋ฅ: ํ ์ ์ฝ์ด Duration < 1.62 ms
- ํจ์จ์ฑ: ๋ ๋์ ์ ์ ์จ (>26.3%)
- ๋ฉ๋ชจ๋ฆฌ: ๋ ๋ฎ์ DRAM ๋ถํ (<72.5%)
- ์บ์: ๋ ๋์ ์ ์ค๋ฅ (>29.7% L2)
๋ ๊น์ ๊ตํ
์ด ๋ณด๋์ค ์ฑ๋ฆฐ์ง๋ GPU ์ต์ ํ์์ ๊ฐ์ฅ ์ค์ํ ๊ตํ์ ๊ฐ๋ฅด์นฉ๋๋ค: ๋ณ๋ชฉ์ ์ดํดํ๋ ๊ฒ์ด ์ต์ API๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ค์ํฉ๋๋ค.
๋ชฉํ๋ ๋จ์ํ ํ ์ ์ฝ์ด๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋๋ ๊ฒ์ด ์๋๋๋ค - ํ ์ ์ฝ์ด๊ฐ ์ ๋ ๋๋ ค์ง ์ ์๋์ง ์ดํดํ๊ณ , ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ง๋จํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ , ์์น์ ๊ธฐ๋ฐํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ด ์ฑ๋ฆฐ์ง๋ฅผ ์์ํ๋ฉด, ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋์จ์ด ๊ธฐ๋ฅ๊ณผ ๊ด๊ณ์์ด ์ด๋ค GPU ์ํฌ๋ก๋๋ ์ต์ ํํ ์ ์๋ ์ญ๋์ ๊ฐ์ถ๊ฒ ๋ฉ๋๋ค.