ํผ์ฆ ์ฌ์ฉ ๊ฐ์ด๋
๊ฐ ํผ์ฆ์ ๋จ๊ณ์ ์ผ๋ก ์ค๋ ฅ์ ์์ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ ์ผ๊ด๋ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค:
- ๊ฐ์: ๋ฌธ์ ์ ์์ ํต์ฌ ๊ฐ๋ ์๊ฐ
- ๊ตฌ์ฑ: ๊ธฐ์ ์ ์ค์ ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ ์ค๋ช
- ์์ฑํ ์ฝ๋:
problems/pXX/์ ์ฑ์์ผ ํ ๋ถ๋ถ์ด ํ์๋ ๊ตฌํ ํ ํ๋ฆฟ - ํํธ: ํ์ํ ๋ ์ฐธ๊ณ ํ ์ ์๋ ์ ๋ต์ ํํธ๋ก, ์ ๋ต์ ์ง์ ์๋ ค์ฃผ์ง ์์ต๋๋ค
- ํ์ด: ์ฑ๋ฅ ๊ณ ๋ ค์ฌํญ๊ณผ ๊ฐ๋ ์ค๋ช ์ ํฌํจํ ์ข ํฉ ๋ถ์
ํผ์ฆ์ ์ด์ ์ ๋ฐฐ์ด ๊ฐ๋ ์์ ์๋ก์ด ๊ฐ๋ ์ ์์๊ฐ๋ฉฐ ์ ์ฐจ ๋ณต์กํด์ง๋๋ค. ๊ณ ๊ธ ํผ์ฆ์ ์์ ํผ์ฆ์ ๊ฐ๋ ์ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํ๋ฏ๋ก, ์์๋๋ก ํ์ด๋๊ฐ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ฝ๋ ์คํํ๊ธฐ
๋ชจ๋ ํผ์ฆ์๋ ๊ตฌํ ๊ฒฐ๊ณผ๋ฅผ ์์ ๊ฒฐ๊ณผ์ ๋น๊ตํด์ฃผ๋ ํ ์คํธ ํ๋ ์์ํฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ ํผ์ฆ๋ณ๋ก ์คํ ๋ฐฉ๋ฒ๊ณผ ๊ฒ์ฆ ์ ์ฐจ๊ฐ ์๋ด๋ฉ๋๋ค.
์ฌ์ ์ค๋น
์์คํ ์๊ตฌ์ฌํญ
๋จผ์ ์์คํ ์ด ์์คํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ์ธ์.
์ง์๋๋ GPU
ํผ์ฆ์ ์คํํ๋ ค๋ฉด ์ง์๋๋ GPU๊ฐ ํ์ํฉ๋๋ค. ํ๊ฒฝ ์ค์ ์ ๋ง์น ๋ค ์๋ ํ๊ฒฝ ์ค์ ์ gpu-specs ๋ช
๋ น์ด๋ก GPU ํธํ์ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด์์ฒด์
[!NOTE] ์ด์์ฒด์ ๋ณ GPU ์ง์ ์ค์ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
Windows WSL2 for Linux with NVIDIA
Windows Subsystem for Linux(WSL2, ์: Ubuntu)์์ NVIDIA GPU๋ฅผ ์ค์ ํ๋ ค๋ฉด NVIDIA CUDA on WSL ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
ํต์ฌ์ Windows์ฉ NVIDIA CUDA ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋๋ค. ์ด ๋๋ผ์ด๋ฒ๊ฐ WSL2๋ฅผ ์๋ฒฝํ ์ง์ํฉ๋๋ค. Windows์ NVIDIA GPU ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํ๋ฉด WSL 2 ์์์ CUDA๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Windows ํธ์คํธ์ CUDA ๋๋ผ์ด๋ฒ๊ฐ WSL 2 ๋ด๋ถ์์ libcuda.so๋ก ์คํ (stub) ์ฒ๋ฆฌ๋๋ฏ๋ก, WSL 2 ์์ ๋ณ๋์ NVIDIA GPU Linux ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํด์๋ ์ ๋ฉ๋๋ค.
๋๋ผ์ด๋ฒ ์ค์น ํ ์ ์ ๋์์ ํ์ธํฉ๋๋ค.
Windows์์ ํ์ธ: PowerShell์ ์ฝ๋๋ค (WSL์ด ์๋๋๋ค)
nvidia-smi
WSL ๋ด๋ถ์์ ํ์ธ: (๋จผ์ WSL์ ์์ํฉ๋๋ค. ์: wsl -d Ubuntu)
ls -l /usr/lib/wsl/lib/nvidia-smi
/usr/lib/wsl/lib/nvidia-smi
Pixi์์ ์ค์ ์ ํ์ธํ๊ณ , ํ์์ ๋๋ฝ๋ ์๊ตฌ์ฌํญ์ ์ค์นํฉ๋๋ค (์: cuda-gdb ๋๋ฒ๊น ์ฉ)
pixi run nvidia-smi
pixi run setup-cuda-gdb
pixi run mojo debug --help
pixi run cuda-gdb --version
WSL์์๋ VS Code๋ฅผ ์๋ํฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Windows์์ https://code.visualstudio.com/์ ํตํด VS Code๋ฅผ ์ค์นํฉ๋๋ค.
- ๊ทธ๋ฐ ๋ค์ Remote - WSL ํ์ฅ์ ์ค์นํฉ๋๋ค.
[!NOTE] ํผ์ฆ 1-15๋ ๋ชจ๋ WSL๊ณผ Linux์์ ์๋ํฉ๋๋ค.
Linux native with NVIDIA
๋จผ์ GPU์ Ubuntu ๋ฒ์ ์ ํ์ธํฉ๋๋ค (์ง์๋๋ Ubuntu LTS: 20.04, 22.04, 24.04)
lspci | grep -i nvidia
lsb_release -a
NVIDIA ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํฉ๋๋ค (ํ์)
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
sudo reboot
Linux์์๋ VS Code๋ฅผ ์๋ํฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. VS Code APT ์ ์ฅ์๋ฅผ ํตํด ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Microsoft GPG ํค ๊ฐ์ ธ์ค๊ธฐ
wget -qO- https://packages.microsoft.com/keys/microsoft.asc \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/packages.microsoft.gpg > /dev/null
VS Code APT ์ ์ฅ์ ์ถ๊ฐ
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] \
https://packages.microsoft.com/repos/code stable main" \
| sudo tee /etc/apt/sources.list.d/vscode.list
VS Code ์ค์น ๋ฐ ํ์ธ
sudo apt update
sudo apt install code
code --version
[!NOTE] ํผ์ฆ 1-15๋ ๋ชจ๋ Linux์์ ์๋ํฉ๋๋ค.
macOS Apple Silicon
osx-arm64 ์ฌ์ฉ์๋ ๋ค์์ด ํ์ํฉ๋๋ค:
- macOS 15.0 ์ด์ โ ์ต์ ํธํ์ฑ์ ์ํด ๊ถ์ฅ๋ฉ๋๋ค.
pixi run check-macos๋ก ํ์ธํ๊ณ , ์คํจํ๋ฉด ์ ๊ทธ๋ ์ด๋ํ์ธ์. - Xcode 16 ์ด์ โ ์ต์ ์๊ตฌ์ฌํญ์
๋๋ค.
xcodebuild -version์ผ๋ก ํ์ธํฉ๋๋ค.
xcrun -sdk macosx metal ์คํ ์ cannot execute tool 'metal' due to missing Metal toolchain ์ค๋ฅ๊ฐ ๋ํ๋๋ฉด ๋ค์์ ์คํํฉ๋๋ค.
xcodebuild -downloadComponent MetalToolchain
์ดํ xcrun -sdk macosx metal์ ๋ค์ ์คํํ๋ฉด no input files error๊ฐ ๋ํ๋์ผ ์ ์์
๋๋ค.
[!NOTE] ํ์ฌ ํผ์ฆ 1-8๊ณผ 11-15๊ฐ macOS์์ ์๋ํฉ๋๋ค. ๋ ๋ง์ ํผ์ฆ ์ง์์ ์ค๋นํ๊ณ ์์ต๋๋ค!
ํ๋ก๊ทธ๋๋ฐ ์ง์
๋ค์์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๊ฐ ์์ผ๋ฉด ์ข์ต๋๋ค:
- ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด (๋ณ์, ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ํจ์)
- ๋ณ๋ ฌ ์ปดํจํ ๊ฐ๋ (์ค๋ ๋, ๋๊ธฐํ, ๊ฒฝ์ ์ํ)
- Mojo ๊ธฐ๋ณธ ๋ฌธ๋ฒ (ํฌ์ธํฐ ์ ๋ฌธ ์น์ ํฌํจ)
- GPU ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด๋ฅผ ๋ฏธ๋ฆฌ ์ฝ์ด๋๋ฉด ๋์์ด ๋ฉ๋๋ค!
GPU ํ๋ก๊ทธ๋๋ฐ ๊ฒฝํ์ด ์์ด๋ ๊ด์ฐฎ์ต๋๋ค! ํผ์ฆ์ ํ์ด๊ฐ๋ฉฐ ์์ฐ์ค๋ฝ๊ฒ ์ตํ ์ ์์ต๋๋ค.
Mojo๐ฅ์ ํจ๊ป GPU ์ปดํจํ ์ ์ธ๊ณ๋ก ๋ ๋๋ด ์๋ค!
ํ๊ฒฝ ์ค์ ํ๊ธฐ
-
GitHub ์ ์ฅ์๋ฅผ ํด๋ก ํ๊ณ ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค:
# ์ ์ฅ์ ํด๋ก git clone https://github.com/modular/mojo-gpu-puzzles cd mojo-gpu-puzzles -
Mojo๐ฅ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ํจํค์ง ๋งค๋์ ๋ฅผ ์ค์นํฉ๋๋ค:
์ต์ 1 (๊ฐ๋ ฅ ์ถ์ฒ): pixi
์ด ํ๋ก์ ํธ์์
pixi๋ฅผ ๊ถ์ฅํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:- Modular์ MAX/Mojo ํจํค์ง์ ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅ
- GPU ์์กด์ฑ์ ์๋์ผ๋ก ์ฒ๋ฆฌ
- conda + PyPI ์ํ๊ณ๋ฅผ ๋ชจ๋ ์ง์
์ฐธ๊ณ : ์ผ๋ถ ํผ์ฆ์
pixi์์๋ง ์๋ํฉ๋๋ค์ค์น:
curl -fsSL https://pixi.sh/install.sh | sh์ ๋ฐ์ดํธ:
pixi self-update์ต์ 2:
uv์ค์น:
curl -fsSL https://astral.sh/uv/install.sh | sh์ ๋ฐ์ดํธ:
uv self update๊ฐ์ ํ๊ฒฝ ์์ฑ:
uv venv && source .venv/bin/activate -
์ค์ ์ ํ์ธํ๊ณ ์ฒซ ๋ฒ์งธ ํผ์ฆ์ ์คํํฉ๋๋ค:
# GPU ์ฌ์ ํ์ธ
pixi run gpu-specs
# ์ฒซ ๋ฒ์งธ ํผ์ฆ ์คํ
# ์์ง ๊ตฌํ ์ ์ด๋ฏ๋ก ์คํจํฉ๋๋ค! ๋ณธ๋ฌธ์ ๋ฐ๋ผ ๊ตฌํํด ๋ณด์ธ์
pixi run p01
# GPU ์ฌ์ ํ์ธ
pixi run gpu-specs
# ์ฒซ ๋ฒ์งธ ํผ์ฆ ์คํ
# ์์ง ๊ตฌํ ์ ์ด๋ฏ๋ก ์คํจํฉ๋๋ค! ๋ณธ๋ฌธ์ ๋ฐ๋ผ ๊ตฌํํด ๋ณด์ธ์
pixi run -e amd p01
# GPU ์ฌ์ ํ์ธ
pixi run gpu-specs
# ์ฒซ ๋ฒ์งธ ํผ์ฆ ์คํ
# ์์ง ๊ตฌํ ์ ์ด๋ฏ๋ก ์คํจํฉ๋๋ค! ๋ณธ๋ฌธ์ ๋ฐ๋ผ ๊ตฌํํด ๋ณด์ธ์
pixi run -e apple p01
# GPU๋ณ ์์กด์ฑ ์ค์น
uv pip install -e ".[nvidia]" # NVIDIA GPU์ฉ
# ๋๋
uv pip install -e ".[amd]" # AMD GPU์ฉ
# GPU ์ฌ์ ํ์ธ
uv run poe gpu-specs
# ์ฒซ ๋ฒ์งธ ํผ์ฆ ์คํ
# ์์ง ๊ตฌํ ์ ์ด๋ฏ๋ก ์คํจํฉ๋๋ค! ๋ณธ๋ฌธ์ ๋ฐ๋ผ ๊ตฌํํด ๋ณด์ธ์
uv run poe p01
ํผ์ฆ ํ๊ธฐ
ํ๋ก์ ํธ ๊ตฌ์กฐ
problems/: ํ์ด๋ฅผ ์ง์ ๊ตฌํํ๋ ๊ณณ์ ๋๋ค (์ฌ๊ธฐ์ ์์ ํฉ๋๋ค!)solutions/: ๋น๊ต์ ํ์ต์ ์ํ ์ฐธ๊ณ ํ์ด์ ๋๋ค. ์ฑ ์ ๋ฐ์ ๊ฑธ์ณ ํ์ฉ๋ฉ๋๋ค
์์ ํ๋ฆ
problems/pXX/์์ ํผ์ฆ ํ ํ๋ฆฟ์ ์ฝ๋๋ค- ์ ๊ณต๋ ํ๋ ์์ํฌ ์์ ํ์ด๋ฅผ ์์ฑํฉ๋๋ค
- ๊ตฌํ์ ํ
์คํธํฉ๋๋ค:
pixi run pXX๋๋uv run poe pXX(ํ๋ซํผ์ ๋ฐ๋ผ-e platform์ ์ถ๊ฐํฉ๋๋ค. ์:-e amd) solutions/pXX/์ ์ฐธ๊ณ ํ์ด์ ๋น๊ตํ๋ฉฐ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ๋ฐฐ์๋๋ค
์ฃผ์ ๋ช ๋ น์ด
# ํผ์ฆ ์คํ (ํ์์ -e๋ก ํ๋ซํผ ์ง์ )
pixi run pXX # NVIDIA (๊ธฐ๋ณธ๊ฐ) `pixi run -e nvidia pXX`์ ๋์ผ
pixi run -e amd pXX # AMD GPU
pixi run -e apple pXX # Apple GPU
# ํ์ด ํ
์คํธ
pixi run tests # ๋ชจ๋ ํ์ด ํ
์คํธ
pixi run tests pXX # ํน์ ํผ์ฆ ํ
์คํธ
# ์๋ ์คํ
pixi run mojo problems/pXX/pXX.mojo # ๋ด ๊ตฌํ
pixi run mojo solutions/pXX/pXX.mojo # ์ฐธ๊ณ ํ์ด
# ์ธํฐ๋ํฐ๋ธ ์
ธ
pixi shell # ํ๊ฒฝ ์ง์
mojo problems/p01/p01.mojo # ์ง์ ์คํ
exit # ์
ธ ์ข
๋ฃ
# ๊ฐ๋ฐ
pixi run format # ์ฝ๋ ํฌ๋งทํ
pixi task list # ์ฌ์ฉ ๊ฐ๋ฅํ ๋ช
๋ น์ด
# ์ฐธ๊ณ : uv๋ ์ ํ์ ์ด๋ฉฐ ์ผ๋ถ ์ฑํฐ๋ pixi๊ฐ ํ์ํฉ๋๋ค
# GPU๋ณ ์์กด์ฑ ์ค์น:
uv pip install -e ".[nvidia]" # NVIDIA GPU์ฉ
uv pip install -e ".[amd]" # AMD GPU์ฉ
# ํ์ด ํ
์คํธ
uv run poe tests # ๋ชจ๋ ํ์ด ํ
์คํธ
uv run poe tests pXX # ํน์ ํผ์ฆ ํ
์คํธ
# ์๋ ์คํ
uv run mojo problems/pXX/pXX.mojo # ๋ด ๊ตฌํ
uv run mojo solutions/pXX/pXX.mojo # ์ฐธ๊ณ ํ์ด
GPU ์ง์ ํํฉ
์๋ ํ๋ ํผ์ฆ๋ณ GPU ํ๋ซํผ ํธํ์ฑ์ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค. ํผ์ฆ์ ๋ฐ๋ผ ํ์ํ GPU ๊ธฐ๋ฅ๊ณผ ๋ฒค๋๋ณ ๋๊ตฌ๊ฐ ๋ค๋ฆ ๋๋ค.
| ํผ์ฆ | NVIDIA GPU | AMD GPU | Apple GPU | ๋น๊ณ |
|---|---|---|---|---|
| Part I: GPU ๊ธฐ์ด | ||||
| 1 - Map | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 2 - Zip | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 3 - ๊ฐ๋ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 4 - Map 2D | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 5 - ๋ธ๋ก๋์บ์คํธ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 6 - ๋ธ๋ก | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 7 - ๊ณต์ ๋ฉ๋ชจ๋ฆฌ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 8 - ์คํ ์ค | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| Part II: ๋๋ฒ๊น | ||||
| 9 - GPU ๋๋ฒ๊ฑฐ | โ | โ | โ | NVIDIA ์ ์ฉ ๋๋ฒ๊น ๋๊ตฌ |
| 10 - ์๋ํ์ด์ | โ | โ | โ | NVIDIA ์ ์ฉ ๋๋ฒ๊น ๋๊ตฌ |
| Part III: GPU ์๊ณ ๋ฆฌ์ฆ | ||||
| 11 - ๋ฆฌ๋์ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 12 - ์ค์บ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 13 - ํ๋ง | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 14 - ํฉ์ฑ๊ณฑ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 15 - ํ๋ ฌ ๊ณฑ์ | โ | โ | โ | ๊ธฐ๋ณธ GPU ์ปค๋ |
| 16 - Flashdot | โ | โ | โ | ๊ณ ๊ธ ๋ฉ๋ชจ๋ฆฌ ํจํด |
| Part IV: MAX ๊ทธ๋ํ | ||||
| 17 - ์ปค์คํ Op | โ | โ | โ | MAX ๊ทธ๋ํ ํตํฉ |
| 18 - ์ํํธ๋งฅ์ค | โ | โ | โ | MAX ๊ทธ๋ํ ํตํฉ |
| 19 - ์ดํ ์ | โ | โ | โ | MAX ๊ทธ๋ํ ํตํฉ |
| Part V: PyTorch ํตํฉ | ||||
| 20 - Torch ๋ธ๋ฆฟ์ง | โ | โ | โ | PyTorch ํตํฉ |
| 21 - ์คํ ๊ทธ๋๋ | โ | โ | โ | PyTorch ํตํฉ |
| 22 - ํจ์ | โ | โ | โ | PyTorch ํตํฉ |
| Part VI: ํจ์ํ ํจํด | ||||
| 23 - ํจ์ํ | โ | โ | โ | ๊ณ ๊ธ Mojo ํจํด |
| Part VII: ์ํ ํ๋ก๊ทธ๋๋ฐ | ||||
| 24 - ์ํ ํฉ๊ณ | โ | โ | โ | ์ํ ์์ค ์ฐ์ฐ |
| 25 - ์ํ ํต์ | โ | โ | โ | ์ํ ์์ค ์ฐ์ฐ |
| 26 - ๊ณ ๊ธ ์ํ | โ | โ | โ | ์ํ ์์ค ์ฐ์ฐ |
| Part VIII: ๋ธ๋ก ํ๋ก๊ทธ๋๋ฐ | ||||
| 27 - ๋ธ๋ก ์ฐ์ฐ | โ | โ | โ | ๋ธ๋ก ๋จ์ ํ๋ก๊ทธ๋๋ฐ ํจํด |
| Part IX: ๋ฉ๋ชจ๋ฆฌ ์์คํ | ||||
| 28 - ๋น๋๊ธฐ ๋ฉ๋ชจ๋ฆฌ | โ | โ | โ | ๊ณ ๊ธ ๋ฉ๋ชจ๋ฆฌ ์ฐ์ฐ |
| 29 - ๋ฐฐ๋ฆฌ์ด | โ | โ | โ | NVIDIA ์ ์ฉ ๊ณ ๊ธ ๋๊ธฐํ |
| Part X: ์ฑ๋ฅ ๋ถ์ | ||||
| 30 - ํ๋กํ์ผ๋ง | โ | โ | โ | NVIDIA ํ๋กํ์ผ๋ง ๋๊ตฌ (NSight) |
| 31 - ์ ์ ์จ | โ | โ | โ | NVIDIA ํ๋กํ์ผ๋ง ๋๊ตฌ |
| 32 - ๋ฑ ํฌ ์ถฉ๋ | โ | โ | โ | NVIDIA ํ๋กํ์ผ๋ง ๋๊ตฌ |
| Part XI: ์ต์ GPU ๊ธฐ๋ฅ | ||||
| 33 - ํ ์ ์ฝ์ด | โ | โ | โ | NVIDIA ํ ์ ์ฝ์ด ์ ์ฉ |
| 34 - ํด๋ฌ์คํฐ | โ | โ | โ | NVIDIA ํด๋ฌ์คํฐ ํ๋ก๊ทธ๋๋ฐ |
๋ฒ๋ก
- โ ์ง์: ํด๋น ํ๋ซํผ์์ ํผ์ฆ์ด ์๋ํฉ๋๋ค
- โ ๋ฏธ์ง์: ํ๋ซํผ๋ณ ๊ณ ์ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค
ํ๋ซํผ๋ณ ์ฐธ๊ณ ์ฌํญ
NVIDIA GPU (์ ์ฒด ์ง์)
- ๋ชจ๋ ํผ์ฆ(1-34)์ด CUDA๋ฅผ ์ง์ํ๋ NVIDIA GPU์์ ์๋ํฉ๋๋ค
- CUDA ํดํท๊ณผ ํธํ ๋๋ผ์ด๋ฒ๊ฐ ํ์ํฉ๋๋ค
- ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ด ๊ฐ์ฅ ์์ ํ ํ์ต ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค
AMD GPU (ํญ๋์ ์ง์)
- ๋๋ถ๋ถ์ ํผ์ฆ(1-8, 11-29)์ด ROCm์ ํตํด ์๋ํฉ๋๋ค
- ๋ฏธ์ง์: ๋๋ฒ๊น ๋๊ตฌ(9-10), ํ๋กํ์ผ๋ง(30-32), ํ ์ ์ฝ์ด(33-34)
- ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฉ๋ชจ๋ฆฌ ํจํด๊น์ง ํฌํจํ์ฌ GPU ํ๋ก๊ทธ๋๋ฐ์ ํญ๋๊ฒ ํ์ตํ ์ ์์ต๋๋ค
Apple GPU (๊ธฐ๋ณธ ์ง์)
- ๊ธฐ์ด(1-8, 11-18) ๋ฐ ๊ณ ๊ธ(23-27) ํผ์ฆ ์ผ๋ถ๋ฅผ ์ง์ํฉ๋๋ค
- ๋ฏธ์ง์: ๊ณ ๊ธ ๊ธฐ๋ฅ ์ ๋ฐ, ๋๋ฒ๊น , ํ๋กํ์ผ๋ง ๋๊ตฌ
- GPU ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ ํจํด์ ์ตํ๊ธฐ์ ์ ํฉํฉ๋๋ค
ํฅํ ์ง์ ๊ณํ: AMD ๋ฐ Apple GPU์ ๋ํ ๋๊ตฌ์ ํ๋ซํผ ์ง์์ ๊พธ์คํ ํ๋ํ๊ณ ์์ต๋๋ค. ๋๋ฒ๊น ๋๊ตฌ, ํ๋กํ์ผ๋ง ๊ธฐ๋ฅ, ๊ณ ๊ธ GPU ์ฐ์ฐ ๋ฑ ์์ง ์ง์๋์ง ์๋ ๊ธฐ๋ฅ์ ํฅํ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋ ์์ ์ ๋๋ค. ํฌ๋ก์ค ํ๋ซํผ ํธํ์ฑ์ ๊ณ์ ๊ฐ์ ํ๊ณ ์์ผ๋ ์ ๋ฐ์ดํธ๋ฅผ ํ์ธํด ์ฃผ์ธ์.
GPU ๋ฆฌ์์ค
๋ฌด๋ฃ ํด๋ผ์ฐ๋ GPU ํ๋ซํผ
๋ก์ปฌ GPU๊ฐ ์๋ค๋ฉด, ๋ฌด๋ฃ๋ก GPU๋ฅผ ์ฌ์ฉํ ์ ์๋ ํด๋ผ์ฐ๋ ํ๋ซํผ์ ํ์ฉํ ์ ์์ต๋๋ค:
Google Colab
Google Colab์ ๋ฌด๋ฃ GPU ์ ๊ทผ์ ์ ๊ณตํ์ง๋ง, Mojo GPU ํ๋ก๊ทธ๋๋ฐ์๋ ์ผ๋ถ ์ ํ์ด ์์ต๋๋ค:
์ฌ์ฉ ๊ฐ๋ฅํ GPU:
- Tesla T4 (๊ตฌ์ธ๋ Turing ์ํคํ ์ฒ)
- Tesla V100 (์ ํ์ ๊ฐ์ฉ)
Mojo GPU Puzzles ์ฌ์ฉ ์ ์ ํ์ฌํญ:
- ๊ตฌ์ธ๋ GPU ์ํคํ ์ฒ: T4 GPU๋ ๊ณ ๊ธ Mojo GPU ๊ธฐ๋ฅ๊ณผ ํธํ๋์ง ์์ ์ ์์ต๋๋ค
- ์ธ์ ์๊ฐ ์ ํ: ์ต๋ 12์๊ฐ ์คํ ํ ์๋์ผ๋ก ์ฐ๊ฒฐ์ด ๋๊น๋๋ค
- ์ ํ์ ๋๋ฒ๊น ์ง์: NVIDIA ๋๋ฒ๊น ๋๊ตฌ(ํผ์ฆ 9-10)๋ฅผ ์์ ํ ์ฌ์ฉํ์ง ๋ชปํ ์ ์์ต๋๋ค
- ํจํค์ง ์ค์น ์ ํ: Mojo/MAX ์ค์น ์ ์ฐํ ๋ฐฉ๋ฒ์ด ํ์ํ ์ ์์ต๋๋ค
- ์ฑ๋ฅ ์ ํ: ๊ณต์ ์ธํ๋ผ ํน์ฑ์ ์ผ๊ด๋ ๋ฒค์น๋งํน์ด ์ด๋ ต์ต๋๋ค
์ถ์ฒ ์ฉ๋: ๊ธฐ๋ณธ GPU ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ (ํผ์ฆ 1-8, 11-15)๊ณผ ๊ธฐ์ด ํจํด ํ์ต.
Kaggle Notebooks
Kaggle์ Colab๋ณด๋ค ๋๋ํ ๋ฌด๋ฃ GPU ์ฌ์ฉ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค:
์ฌ์ฉ ๊ฐ๋ฅํ GPU:
- Tesla T4 (์ฃผ๋น 30์๊ฐ ๋ฌด๋ฃ)
- P100 (์ ํ์ ๊ฐ์ฉ)
Colab ๋๋น ์ฅ์ :
- ๋๋ํ ์๊ฐ: Colab์ ์ผ์ผ ์ธ์ ์ ํ๊ณผ ๋ฌ๋ฆฌ ์ฃผ๋น 30์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅ
- ์๋ ์ ์ฅ: ๋ ธํธ๋ถ์ด ์๋์ผ๋ก ์ ์ฅ๋ฉ๋๋ค
- ์์ ์ ์ธ ํ๊ฒฝ: ํจํค์ง ์ค์น๊ฐ ๋ ์์ ์ ์ ๋๋ค
Mojo GPU Puzzles ์ฌ์ฉ ์ ์ ํ์ฌํญ:
- GPU ์ํคํ ์ฒ ์ ์ฝ: T4์ ๊ณ ๊ธ ๊ธฐ๋ฅ ํธํ์ฑ ๋ฌธ์ ๋ Colab๊ณผ ๋์ผ
- ์ ํ์ ๋๋ฒ๊น ๋๊ตฌ: NVIDIA ํ๋กํ์ผ๋ง ๋ฐ ๋๋ฒ๊น ๋๊ตฌ(ํผ์ฆ 9-10, 30-32) ์ฌ์ฉ ๋ถ๊ฐ
- Mojo ์ค์น ๋ณต์ก์ฑ: Mojo ํ๊ฒฝ์ ์๋์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค
- ํด๋ฌ์คํฐ ํ๋ก๊ทธ๋๋ฐ ๋ฏธ์ง์: ๊ณ ๊ธ ํผ์ฆ(33-34) ์๋ ๋ถ๊ฐ
์ถ์ฒ ์ฉ๋: ๊ธฐ๋ณธ GPU ํ๋ก๊ทธ๋๋ฐ(ํผ์ฆ 1-16)์ ์ฅ์๊ฐ์ ๊ฑธ์ณ ํ์ตํ ๋ ์ ํฉํฉ๋๋ค.
๊ถ์ฅ ์ฌํญ
- ์ ์ฒด ํ์ต ๊ณผ์ : NVIDIA GPU๊ฐ ์์ผ๋ฉด ๋ชจ๋ ํผ์ฆ์ ํ์ตํ ์ ์์ต๋๋ค (์ ์ฒด 34๊ฐ)
- ํญ๋์ ํ์ต: AMD GPU๋ก๋ ๋๋ถ๋ถ์ ๋ด์ฉ์ ๋ค๋ฃฐ ์ ์์ต๋๋ค (34๊ฐ ์ค 27๊ฐ)
- ๊ธฐ์ด ํ์ต: Apple GPU๋ก ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ตํ ์ ์์ต๋๋ค (34๊ฐ ์ค 13๊ฐ)
- ๋ฌด๋ฃ ํ๋ซํผ ํ์ต: Google Colab/Kaggle๋ก ๊ธฐ์ด~์ค๊ธ ๊ฐ๋ ๊น์ง ํ์ต ๊ฐ๋ฅํฉ๋๋ค (ํผ์ฆ 1-16)
- ๋๋ฒ๊น ๋ฐ ํ๋กํ์ผ๋ง: ๋๋ฒ๊น ๋๊ตฌ์ ์ฑ๋ฅ ๋ถ์์๋ NVIDIA GPU๊ฐ ํ์ํฉ๋๋ค
- ์ต์ GPU ๊ธฐ๋ฅ: ํ ์ ์ฝ์ด์ ํด๋ฌ์คํฐ ํ๋ก๊ทธ๋๋ฐ์๋ NVIDIA GPU๊ฐ ํ์ํฉ๋๋ค
๊ฐ๋ฐ
์์ธํ ๋ด์ฉ์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ปค๋ฎค๋ํฐ ์ฐธ์ฌํ๊ธฐ
์ปค๋ฎค๋ํฐ์์ GPU ํ๋ก๊ทธ๋๋ฐ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ , ํ์ด๋ฅผ ๊ณต์ ํ๊ณ , ์๋ก ๋์์ ์ฃผ๊ณ ๋ฐ์ ์ ์์ต๋๋ค.