Skip to content

Commit 924961c

Browse files
committed
Simplify problems with two approaches
1 parent 86beaab commit 924961c

32 files changed

Lines changed: 1613 additions & 3603 deletions

โ€Žbook/i18n/ko/src/SUMMARY.mdโ€Ž

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,9 @@
2020
- [๐Ÿ“š TileTensor ์•Œ์•„๋ณด๊ธฐ](./puzzle_04/introduction_tile_tensor.md)
2121
- [๐Ÿš€ ํ˜„๋Œ€์  2D ์—ฐ์‚ฐ](./puzzle_04/tile_tensor.md)
2222
- [Puzzle 5: ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ](./puzzle_05/puzzle_05.md)
23-
- [๐Ÿ”ฐ ์›์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹](./puzzle_05/raw.md)
24-
- [๐Ÿ“ TileTensor ๋ฒ„์ „](./puzzle_05/tile_tensor.md)
2523
- [Puzzle 6: ๋ธ”๋ก](./puzzle_06/puzzle_06.md)
2624
- [Puzzle 7: 2D ๋ธ”๋ก](./puzzle_07/puzzle_07.md)
27-
- [๐Ÿ”ฐ ์›์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹](./puzzle_07/raw.md)
28-
- [๐Ÿ“ TileTensor ๋ฒ„์ „](./puzzle_07/tile_tensor.md)
2925
- [Puzzle 8: ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ](./puzzle_08/puzzle_08.md)
30-
- [๐Ÿ”ฐ ์›์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹](./puzzle_08/raw.md)
31-
- [๐Ÿ“ TileTensor ๋ฒ„์ „](./puzzle_08/tile_tensor.md)
3226

3327
# Part II: ๐Ÿž GPU ํ”„๋กœ๊ทธ๋žจ ๋””๋ฒ„๊น…
3428

@@ -44,11 +38,7 @@
4438
# Part III: ๐Ÿงฎ GPU ์•Œ๊ณ ๋ฆฌ์ฆ˜
4539

4640
- [Puzzle 11: ํ’€๋ง](./puzzle_11/puzzle_11.md)
47-
- [๐Ÿ”ฐ ์›์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹](./puzzle_11/raw.md)
48-
- [๐Ÿ“ TileTensor ๋ฒ„์ „](./puzzle_11/tile_tensor.md)
4941
- [Puzzle 12: ๋‚ด์ ](./puzzle_12/puzzle_12.md)
50-
- [๐Ÿ”ฐ ์›์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹](./puzzle_12/raw.md)
51-
- [๐Ÿ“ TileTensor ๋ฒ„์ „](./puzzle_12/tile_tensor.md)
5242
- [Puzzle 13: 1D ํ•ฉ์„ฑ๊ณฑ](./puzzle_13/puzzle_13.md)
5343
- [๐Ÿ”ฐ ๊ธฐ๋ณธ ๋ฒ„์ „](./puzzle_13/simple.md)
5444
- [โญ ๋ธ”๋ก ๊ฒฝ๊ณ„ ๋ฒ„์ „](./puzzle_13/block_boundary.md)

โ€Žbook/i18n/ko/src/puzzle_05/puzzle_05.mdโ€Ž

Lines changed: 113 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44

55
## ๊ฐœ์š”
66

7-
๋ฒกํ„ฐ `a`์™€ `b`๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ(broadcast)๋กœ ๋”ํ•ด 2D ํ–‰๋ ฌ `output`์— ์ €์žฅํ•˜๋Š” ์ปค๋„์„ ๊ตฌํ˜„ํ•ด ๋ณด์„ธ์š”.
8-
9-
๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ **๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ**๋ž€ ์š”์†Œ๋ณ„ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ์ €์ฐจ์› ๋ฐฐ์—ด์„ ๊ณ ์ฐจ์› ๋ฐฐ์—ด์˜ ํ˜•์ƒ์— ๋งž๊ฒŒ ์ž๋™์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•˜์ง€ ์•Š๊ณ , ์ถ”๊ฐ€ ์ฐจ์›์— ๊ฑธ์ณ ๊ฐ’์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2D ํ–‰๋ ฌ์˜ ๊ฐ ํ–‰(๋˜๋Š” ์—ด)์— 1D ๋ฒกํ„ฐ๋ฅผ ๋”ํ•  ๋•Œ ๋ฒกํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณต์‚ฌํ•˜์ง€ ์•Š์•„๋„ ๊ฐ™์€ ์š”์†Œ๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐ˜๋ณต ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
7+
1D TileTensor `a`์™€ `b`๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋กœ ๋”ํ•ด 2D TileTensor `output`์— ์ €์žฅํ•˜๋Š” ์ปค๋„์„ ๊ตฌํ˜„ํ•ด ๋ณด์„ธ์š”.
108

119
**์ฐธ๊ณ **: _์Šค๋ ˆ๋“œ ์ˆ˜๊ฐ€ ํ–‰๋ ฌ์˜ ์œ„์น˜ ์ˆ˜๋ณด๋‹ค ๋งŽ์Šต๋‹ˆ๋‹ค._
1210

@@ -15,19 +13,121 @@
1513

1614
## ํ•ต์‹ฌ ๊ฐœ๋…
1715

18-
- ๋ฒกํ„ฐ๋ฅผ ํ–‰๋ ฌ๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๊ธฐ
19-
- 2D ์Šค๋ ˆ๋“œ ๊ด€๋ฆฌ
20-
- ์„œ๋กœ ๋‹ค๋ฅธ ์ฐจ์› ๊ฐ„ ์—ฐ์‚ฐ
21-
- ๋ฉ”๋ชจ๋ฆฌ ๋ ˆ์ด์•„์›ƒ ํŒจํ„ด
16+
์ด ํผ์ฆ์—์„œ ๋ฐฐ์šธ ๋‚ด์šฉ:
17+
18+
- ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์—ฐ์‚ฐ์— `TileTensor` ์‚ฌ์šฉํ•˜๊ธฐ
19+
- ์„œ๋กœ ๋‹ค๋ฅธ ํ…์„œ ํฌ๊ธฐ ๋‹ค๋ฃจ๊ธฐ
20+
- `TileTensor`๋กœ 2D ์ธ๋ฑ์‹ฑ ์ฒ˜๋ฆฌํ•˜๊ธฐ
21+
22+
ํ•ต์‹ฌ์€ `TileTensor`๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํ…์„œ ํฌ๊ธฐ \\((1, n)\\)์™€ \\((n, 1)\\)์„ \\((n,n)\\)์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ๋„ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๋Š” ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
23+
24+
- **ํ…์„œ ํฌ๊ธฐ**: ์ž…๋ ฅ ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ๋Š” \\((1, n)\\)๊ณผ \\((n, 1)\\)
25+
- **๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ**: ๋‘ ์ฐจ์›์„ ๊ฒฐํ•ฉํ•ด \\((n,n)\\) ์ถœ๋ ฅ ์ƒ์„ฑ
26+
- **๊ฐ€๋“œ ์กฐ๊ฑด**: ์ถœ๋ ฅ ํฌ๊ธฐ์— ๋Œ€ํ•œ ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๋Š” ์—ฌ์ „ํžˆ ํ•„์š”
27+
- **์Šค๋ ˆ๋“œ ๋ฒ”์œ„**: ํ…์„œ ์›์†Œ \\((2 \times 2)\\)๋ณด๋‹ค ์Šค๋ ˆ๋“œ \\((3 \times 3)\\)๊ฐ€ ๋งŽ์Œ
28+
29+
## ์™„์„ฑํ•  ์ฝ”๋“œ
30+
31+
```mojo
32+
{{#include ../../../../../problems/p05/p05_tile_tensor.mojo:broadcast_add_tile_tensor}}
33+
```
34+
35+
<a href="{{#include ../_includes/repo_url.md}}/blob/main/problems/p05/p05_tile_tensor.mojo" class="filename">์ „์ฒด ์ฝ”๋“œ ๋ณด๊ธฐ: problems/p05/p05_tile_tensor.mojo</a>
36+
37+
<details>
38+
<summary><strong>ํŒ</strong></summary>
39+
40+
<div class="solution-tips">
41+
42+
1. 2D ์ธ๋ฑ์Šค ๊ฐ€์ ธ์˜ค๊ธฐ: `row = thread_idx.y`, `col = thread_idx.x`
43+
2. ๊ฐ€๋“œ ์ถ”๊ฐ€: `if row < size and col < size`
44+
3. ๊ฐ€๋“œ ๋‚ด๋ถ€: TileTensor๋กœ `a`์™€ `b` ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ• ์ง€ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”
45+
46+
</div>
47+
</details>
48+
49+
## ์ฝ”๋“œ ์‹คํ–‰
50+
51+
์†”๋ฃจ์…˜์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”:
52+
53+
<div class="code-tabs" data-tab-group="package-manager">
54+
<div class="tab-buttons">
55+
<button class="tab-button">pixi NVIDIA (default)</button>
56+
<button class="tab-button">pixi AMD</button>
57+
<button class="tab-button">pixi Apple</button>
58+
<button class="tab-button">uv</button>
59+
</div>
60+
<div class="tab-content">
61+
62+
```bash
63+
pixi run p05_tile_tensor
64+
```
65+
66+
</div>
67+
<div class="tab-content">
68+
69+
```bash
70+
pixi run -e amd p05_tile_tensor
71+
```
72+
73+
</div>
74+
<div class="tab-content">
75+
76+
```bash
77+
pixi run -e apple p05_tile_tensor
78+
```
79+
80+
</div>
81+
<div class="tab-content">
82+
83+
```bash
84+
uv run poe p05_tile_tensor
85+
```
86+
87+
</div>
88+
</div>
89+
90+
ํผ์ฆ์„ ์•„์ง ํ’€์ง€ ์•Š์•˜๋‹ค๋ฉด ์ถœ๋ ฅ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค:
91+
92+
```txt
93+
out: HostBuffer([0.0, 0.0, 0.0, 0.0])
94+
expected: HostBuffer([1.0, 2.0, 11.0, 12.0])
95+
```
96+
97+
## ์†”๋ฃจ์…˜
98+
99+
<details class="solution-details">
100+
<summary></summary>
101+
102+
```mojo
103+
{{#include ../../../../../solutions/p05/p05_tile_tensor.mojo:broadcast_add_tile_tensor_solution}}
104+
```
105+
106+
<div class="solution-explanation">
107+
108+
TileTensor ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์™€ GPU ์Šค๋ ˆ๋“œ ๋งคํ•‘์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ๋ณด์—ฌ์ฃผ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค:
22109

23-
## ๊ตฌํ˜„ ๋ฐฉ์‹
110+
1. **์Šค๋ ˆ๋“œ์—์„œ ํ–‰๋ ฌ๋กœ ๋งคํ•‘**
24111

25-
### [๐Ÿ”ฐ ์›์‹œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐฉ์‹](./raw.md)
112+
- `thread_idx.y`๋กœ ํ–‰, `thread_idx.x`๋กœ ์—ด์— ์ ‘๊ทผ
113+
- ์ž์—ฐ์Šค๋Ÿฌ์šด 2D ์ธ๋ฑ์‹ฑ์ด ์ถœ๋ ฅ ํ–‰๋ ฌ ๊ตฌ์กฐ์™€ ์ผ์น˜
114+
- ์ดˆ๊ณผ ์Šค๋ ˆ๋“œ(3ร—3 ๊ทธ๋ฆฌ๋“œ)๋Š” ๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ๋กœ ์ฒ˜๋ฆฌ
26115

27-
์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ์ธ๋ฑ์‹ฑ์œผ๋กœ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.
116+
2. **๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ž‘๋™ ๋ฐฉ์‹**
117+
- ์ž…๋ ฅ `a`์˜ ํฌ๊ธฐ๋Š” `(1,n)`: `a[0,col]`์ด ํ–‰์„ ๊ฐ€๋กœ์งˆ๋Ÿฌ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ
118+
- ์ž…๋ ฅ `b`์˜ ํฌ๊ธฐ๋Š” `(n,1)`: `b[row,0]`์ด ์—ด์„ ๊ฐ€๋กœ์งˆ๋Ÿฌ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ
119+
- ์ถœ๋ ฅ์˜ ํฌ๊ธฐ๋Š” `(n,n)`: ๊ฐ ์›์†Œ๋Š” ํ•ด๋‹น ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๊ฐ’๋“ค์˜ ํ•ฉ
28120

29-
### [๐Ÿ“ TileTensor ๋ฒ„์ „](./tile_tensor.md)
121+
```txt
122+
[ a0 a1 ] + [ b0 ] = [ a0+b0 a1+b0 ]
123+
[ b1 ] [ a0+b1 a1+b1 ]
124+
```
30125

31-
์„œ๋กœ ๋‹ค๋ฅธ ์ฐจ์› ๊ฐ„ ์—ฐ์‚ฐ์„ TileTensor๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
126+
3. **๊ฒฝ๊ณ„ ๊ฒ€์‚ฌ**
127+
- ๊ฐ€๋“œ ์กฐ๊ฑด `row < size and col < size`๋กœ ๋ฒ”์œ„ ์ดˆ๊ณผ ์ ‘๊ทผ ๋ฐฉ์ง€
128+
- ํ–‰๋ ฌ ๋ฒ”์œ„์™€ ์ดˆ๊ณผ ์Šค๋ ˆ๋“œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ
129+
- ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋•๋ถ„์— `a`์™€ `b`์— ๋Œ€ํ•œ ๋ณ„๋„ ๊ฒ€์‚ฌ ๋ถˆํ•„์š”
32130

33-
๐Ÿ’ก **์ฐธ๊ณ **: ์ˆ˜๋™ ์ธ๋ฑ์‹ฑ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ TileTensor๊ฐ€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋ฅผ ์–ผ๋งˆ๋‚˜ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š”์ง€ ํ™•์ธํ•ด ๋ณด์„ธ์š”.
131+
์ด ํŒจํ„ด์€ ์ดํ›„ ํผ์ฆ์—์„œ ๋‹ค๋ฃฐ ๋” ๋ณต์žกํ•œ ํ…์„œ ์—ฐ์‚ฐ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
132+
</div>
133+
</details>

โ€Žbook/i18n/ko/src/puzzle_05/raw.mdโ€Ž

Lines changed: 0 additions & 127 deletions
This file was deleted.

0 commit comments

Comments
ย (0)