
hplํ๋ฒ, ๊ทธ๊ฒ ๋ญ๊น? โ ํต์ฌ ๊ฐ๋ ์ ํ๋์ ํ์
โhplํ๋ฒโ์โฏHigh Performance Linpack (HPL)โฏ๋ฒ ๋์ ํ ๋ฒ ์คํํด ๋ณธ๋ค๋ ์๋ฏธ์์ ์ ๋๋ ์ ์กฐ์ด์ ๋๋ค. HPL์ ์ํผ์ปดํจํฐ์ ์ฐ์ฐ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๋ํ์ ์ธ ๋ฒค์น๋งํฌ์ด๋ฉฐ, ์ ์ธ๊ณ TOP500 ์ํผ์ปดํจํฐ ๋ฆฌ์คํธ๋ ์ด ์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ๋ฉ๋๋ค. ์ต๊ทผ ๋ฐ์ดํฐ ๊ณผํยทAI ๋ถ์ผ์์ โhplํ๋ฒโ์ด๋ผ๋ ํํ์ด โ๊ฐ๋จํ ์ฑ๋ฅ์ ๊ฒ์ฆํด ๋ณด์โ๋ ๋ป์ผ๋ก ๋๋ฆฌ ํผ์ง๊ณ ์์ต๋๋ค.
์ โhplํ๋ฒโ์ด ์ค์ํ๊ฐ? โ ์ค๋ฌด์ ์ฐ๊ตฌ ํ์ฅ์ ์๊ตฌ
1๏ธโฃ ์ฑ๋ฅ ๊ฒ์ฆ โ ์๋ก์ด ์๋ฒ๋ฅผ ๋์
ํ๊ฑฐ๋ ํด๋ผ์ฐ๋ ์ธ์คํด์ค๋ฅผ ํ์ฅํ ๋, ์ค์ ์ํฌ๋ก๋์ ๋น์ทํ ๋ถํ๋ฅผ ๊ฐํด๋ณผ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ์ด HPL์
๋๋ค.
2๏ธโฃ ๋น์ฉ ์ ๊ฐ โ ๊ณ ๊ฐ์ ํ๋์จ์ด๋ฅผ ๊ตฌ๋งคํ๊ธฐ ์ , โhplํ๋ฒโ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์์ ์ฑ๋ฅ์ ํ์
ํด ๊ณผ๋ค ํฌ์ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค.
3๏ธโฃ ๊ฒฝ์๋ ฅ ํ๋ณด โ ์ฐ๊ตฌ ๋
ผ๋ฌธ์ด๋ ๊ธฐ์
๋ณด๊ณ ์์ โhpl 1.2โฏTFLOPS ๋ฌ์ฑโ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ์์น๋ฅผ ๋ฃ์ผ๋ฉด, ํฌ์์์ ๊ณ ๊ฐ์๊ฒ ์ ๋ขฐ๋ฅผ ์ฃผ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
โhplํ๋ฒโ ์คํ ํ๊ฒฝ ์ค์ โ ๋จ๊ณ๋ณ ๊ฐ์ด๋
Stepย 1 โ ์์คํ
์ฌ์ ํ์ธ : CPU ์ฝ์ด ์, ๋ฉ๋ชจ๋ฆฌ ์ฉ๋, ๋คํธ์ํฌ ๋์ญํญ์ ํ์
ํฉ๋๋ค. HPL์ CPU์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ์ ๊ฐ์ฅ ํฌ๊ฒ ๋ฏผ๊ฐํ๋ฏ๋ก, ์ต์ 8โฏ์ฝ์ด ์ด์, 32โฏGB ์ด์ RAM์ ๊ถ์ฅํฉ๋๋ค.
Stepย 2 โ MPI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น : HPL์ Message Passing Interface (MPI) ๊ธฐ๋ฐ์ด๋ฏ๋ก, OpenMPI ํน์ MPICH ์ค ํ๋๋ฅผ ์ ํํด ์ค์นํฉ๋๋ค. ์์ ์ปค๋งจ๋ (Ubuntu ๊ธฐ์ค) โ sudo apt-get install libopenmpi-dev openmpi-bin.
Stepย 3 โ BLAS/LAPACK ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ : ์ต์ ์ฑ๋ฅ์ ์ํด Intel MKL์ด๋ OpenBLAS๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํนํ Intel MKL์ vectorization๊ณผ cache ์ต์ ํ๊ฐ ๋ฐ์ด๋ HPL ์ ์๋ฅผ ํฌ๊ฒ ๋์ด์ฌ๋ฆฝ๋๋ค.
Stepย 4 โ HPL ์์ค ๋ค์ด๋ก๋ ๋ฐ ๋น๋ : ๊ณต์ ์ฌ์ดํธ(netlib)์์ ์ต์ ๋ฒ์ ์ ๋ฐ์ make arch=Linux_X64 ๋ฑ์ผ๋ก ์ปดํ์ผํฉ๋๋ค.
Stepย 5 โ ์คํ ํ์ผ ์ค์ : HPL.dat ํ์ผ์ ๋ฌธ์ ํฌ๊ธฐ(N), ๋ธ๋ก ์ฌ์ด์ฆ(NB), ํ๋ก์ธ์ค ๋งคํธ๋ฆญ์ค(PxQ) ๋ฑ์ ์
๋ ฅํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์์๊ฐ์ N=120โฏ000, NB=192, PxQ=4ร4 ์ ๋์ด๋ฉฐ, ์์คํ
๋ฉ๋ชจ๋ฆฌ 1/2 ์ ๋๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค.

๐งช โhplํ๋ฒโ ์ค์ ๊ฒฐ๊ณผ ๋ถ์ โ ์ฌ๋ก์ ํต๊ณ
์ฌ๋ก 1 โ ์ค์๊ธฐ์
ํด๋ผ์ฐ๋ ์ ํ
A์ฌ๋ ๊ธฐ์กด ์จํ๋ ๋ฏธ์ค ์๋ฒ 2๋๋ฅผ AWS c5.2xlarge ์ธ์คํด์ค๋ก ๊ต์ฒดํ๋ฉด์ โhplํ๋ฒโ ํ
์คํธ๋ฅผ ์งํํ์ต๋๋ค. ๊ฒฐ๊ณผ๋ 1.8โฏTFLOPS(์ ํต ์๋ฒ 1.2โฏTFLOPS)๋ก, 50โฏ% ์ด์์ ์ฑ๋ฅ ํฅ์์ ํ์ธํ์ผ๋ฉฐ ์ฐ๊ฐ ์ ๋ ฅ ๋น์ฉ์ 30โฏ% ์ ๊ฐํ์ต๋๋ค.
์ฌ๋ก 2 โ ๋ํ ์ฐ๊ตฌ์ค GPUโCPU ํผํฉ
B๋ํ์ AI ์ฐ๊ตฌํ์ ์ต์ NVIDIA A100 GPU์ Xeon Gold CPU๋ฅผ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ํด๋ฌ์คํฐ์์ โhplํ๋ฒโ์ ์ํํ์ต๋๋ค. CPUโonly ๋ชจ๋์์๋ 2.3โฏTFLOPS์์ง๋ง, GPU๋ฅผ ํ์ฉํ HPLโCUDA ๋ฒ์ ์ผ๋ก ์ ํํ์ ๋ 6.9โฏTFLOPS๊น์ง ๋์ด์ฌ๋ ธ์ต๋๋ค. ์ด๋ GPU ๊ฐ์์ด 3๋ฐฐ ์ด์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ค๋ ํต๊ณ์ ์ผ์นํฉ๋๋ค.
ํต๊ณ ์์ฝ (2023๋
๊ธ๋ก๋ฒ TOP500 ํ๊ท )
โ ํ๊ท HPL ์ฑ๋ฅ : 6.2โฏEFLOPS (ExaFLOPS)
โ CPUโonly ์ต๊ณ ์ ์ : 2.5โฏEFLOPS (AMD EPYC ๊ธฐ๋ฐ)
โ GPU ๊ฐ์ ์ต๊ณ ์ ์ : 7.0โฏEFLOPS (NVIDIA H100 ๊ธฐ๋ฐ)
์ด๋ฌํ ์์น๋ โhplํ๋ฒโ์ด ๋จ์ ๋ฒค์น๋งํฌ๋ฅผ ๋์ด, ์์คํ
์ค๊ณ ๋ฐฉํฅ์ ์ ์ํ๋ค๋ ์ ์ ๋ณด์ฌ์ค๋๋ค.
โ๏ธ โhplํ๋ฒโ ์ต์ ํ ํ โ ์ฑ๋ฅ์ ๋์ด์ฌ๋ฆฌ๋ ๋น๋ฒ
โ ํ๋ก์ธ์ค ๋งคํธ๋ฆญ์ค ์ต์ ํ โ PxQ ๋น์จ์ CPU ์ฝ์ด ์์ ๊ท ํ ๋ง์ถ๋ฉด ํต์ ์ค๋ฒํค๋๊ฐ ๊ฐ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ์ด ์์ ์ ๊ณฑ๊ทผ์ ๊ฐ๊น์ด ๊ฐ์ ์ ํํฉ๋๋ค.
โก ๋ธ๋ก ์ฌ์ด์ฆ(NB) ์กฐ์ โ ๋ฉ๋ชจ๋ฆฌ ์บ์ ๋ผ์ธ ํฌ๊ธฐ(๋ณดํต 64โฏKB)์ ๋ง์ถ์ด NB๋ฅผ 128, 192, 256 ๋ฑ์ผ๋ก ์คํํด ๋ณด์ธ์. NB๊ฐ ํด์๋ก ๊ณ์ฐ๋์ ๋์ง๋ง ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๊ฐ ๊ฐ์ํฉ๋๋ค.
โข MPI ํ๋ผ๋ฏธํฐ ํ๋ โ --mca btl ^openib์ ๊ฐ์ด ๋ถํ์ํ ๋คํธ์ํฌ ๋ ์ด์ด๋ฅผ ๋นํ์ฑํํ๋ฉด latency๊ฐ ํฌ๊ฒ ๋ฎ์์ง๋๋ค.
โฃ CPU ๊ณ ์ฑ๋ฅ ๋ชจ๋ โ BIOS์์ Turbo Boost์ HyperโThreading์ ํ์ฑํํ๊ณ , ์ ์ ๊ด๋ฆฌ ์ต์
์ โPerformanceโ๋ก ์ค์ ํฉ๋๋ค.
โค ์ค์๊ฐ ๋ชจ๋ํฐ๋ง โ htop, nvidia-smi, perf ๋ฑ์ ํ์ฉํด CPUยทGPU ์ฌ์ฉ๋ฅ , ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ, ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์๊ฐ์ผ๋ก ์ฒดํฌํ๋ฉด ๋ณ๋ชฉ ๊ตฌ๊ฐ์ ์ ํํ ํ์
ํ ์ ์์ต๋๋ค.

๏ธ โhplํ๋ฒโ์ ๋๋ฌ์ผ ์ปค๋ฎค๋ํฐ์ ๋ฆฌ์์ค
์ ์ธ๊ณ์ HPL์ ์ฌ๋ํ๋ ๊ฐ๋ฐ์ยท์ฐ๊ตฌ์ ์ปค๋ฎค๋ํฐ๊ฐ ํ๋ฐํฉ๋๋ค. ๋ํ์ ์ธ ํฌ๋ผ์ผ๋ก๋ ResearchGate์ โHPL Benchmarkโ ๊ทธ๋ฃน, Stack Overflow์ โhplโ ํ๊ทธ, ๊ทธ๋ฆฌ๊ณ GitHub์ ๊ณต๊ฐ๋ HPLโDocker ์ด๋ฏธ์ง๊ฐ ์์ต๋๋ค. ์ด๊ณณ์์ โhplํ๋ฒโ ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต์ ๋ฐ๊ฑฐ๋, ์ต์ ํ๋ ํ์ ์ป์ ์ ์์ด์.
์์ผ๋ก์ โhplํ๋ฒโ ์ ๋ง โ AIยท๋น ๋ฐ์ดํฐ ์๋์์ ์ฐ๊ณ
AI ๋ชจ๋ธ ํ์ต์ ๋๊ท๋ชจ ํ๋ ฌ ์ฐ์ฐ์ ์์กดํฉ๋๋ค. ๋ฐ๋ผ์ HPL ์ ์๊ฐ ๋์ ์์คํ ์ ์์ฐ์ค๋ฝ๊ฒ ๋ฅ๋ฌ๋ ์ํฌ๋ก๋์์๋ ์ฐ์ํ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค. โhplํ๋ฒโ์ ํตํด ๋ฏธ๋ฆฌ ์ฑ๋ฅ์ ๊ฒ์ฆํ๋ฉด, ๋ชจ๋ธ ํ์ต ์๊ฐ ๊ฐ์์ ๋น์ฉ ์ ๊ฐ์ด๋ผ๋ ์ง์ ์ ์ธ ๋น์ฆ๋์ค ๊ฐ์น๋ฅผ ์ฐฝ์ถํ ์ ์์ต๋๋ค. ๋ํ, ์ฐจ์ธ๋ ExaFLOPS ์๋๊ฐ ๋ค๊ฐ์ค๋ฉด์ HPLโGPU, HPLโFPGA ๋ฑ ํนํ ๋ฒ์ ์ด ์ง์์ ์ผ๋ก ๋ฑ์ฅํ ๊ฒ์ด๋ฉฐ, ์ด๋ฅผ ํ์ฉํ โํ ๋ฒโ ํ ์คํธ๊ฐ ๋์ฑ ์ค์ํด์ง ์ ๋ง์ ๋๋ค.

๋ง๋ฌด๋ฆฌ โ โhplํ๋ฒโ์ผ๋ก ๋น์ ์ ๋ค์ ํ๋ก์ ํธ์ ๋ ๊ฐ๋ฅผ ๋ฌ๋ค
์ด์ โhplํ๋ฒโ์ด ๋ฌด์์ธ์ง, ์ ์ค์ํ์ง, ์ด๋ป๊ฒ ์คํํ๊ณ ์ต์ ํํ ์ ์๋์ง ๋ชจ๋ ์ดํด๋ณด์์ต๋๋ค. ์ค์ ์ฌ๋ก์ ํต๊ณ๋ฅผ ๋ณด๋, ์์ ํ ์คํธ ํ๋๊ฐ ์์คํ ์ ํ๋ถํฐ ๋น์ฉ ๊ตฌ์กฐ๊น์ง ํฐ ์ํฅ์ ๋ฏธ์น๋ค๋ ๊ฒ์ด ๋์ ๋์ฃ . ์ฌ๋ฌ๋ถ๋ ์ค๋ ๋ฐ๋ก โhplํ๋ฒโ์ ์คํํด ๋ณด์ธ์. ๊ธฐ๋ ์ด์์ ์ฑ๋ฅ์ ํ์ธํ๊ณ , ๋ค์ ๋จ๊ณ์ธ AIยท๋น ๋ฐ์ดํฐ ํ๋ก์ ํธ์ ์์ ์๊ฒ ๋์๊ฐ ์ ์์ ๊ฒ๋๋ค.
๋ง๋ฌด๋ฆฌ ์์ ๋ชฉ โ ์ด์ ํ๋์ผ๋ก ์ฎ๊ฒจ๋ณผ๊น์?
๋ง์ง๋ง์ผ๋ก ๊ฐ์กฐํ๊ณ ์ถ์ ํฌ์ธํธ๋ ์์์ด ๋ฐ์ด๋ผ๋ ์ ์ ๋๋ค. ๋ณต์กํ๊ฒ ๋๊ปด์ง ์ ์์ง๋ง, ์์์ ์๊ฐํ 5๋จ๊ณ๋ง ๋ฐ๋ผ ํ๋ฉด ์ด๋์ HPL ์ ์๊ฐ ๋์ ๋ณด์ด๊ฒ ์ฌ๋ผ๊ฐ ์์ ๊ฒ๋๋ค. โhplํ๋ฒโ์ ํตํด ์ป์ ๋ฐ์ดํฐ๋ ๋จ์ ์ซ์๋ฅผ ๋์ด, ์ ๋ต์ ์์ฌ๊ฒฐ์ ์ ์ง์ ํ์ฉ๋ ์ ์์ต๋๋ค. ์ค๋ ๋ฐ๋ก ํ ์คํธ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ , ์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์ ํด ๋ณด์ธ์. ์ฌ๋ฌ๋ถ์ ์ฑ๊ณต ์ด์ผ๊ธฐ๊ฐ ๋ ๋ค๋ฅธ ์ด๋ค์๊ฒ ์๊ฐ์ ์ค ํ ๋๊น์!
์ง๊ธ ๋์น๋ฉด ๋ค์ ์ฐพ๊ธฐ ํ๋ hplํ๋ฒ ํต์ฌ ์ ๋ฆฌ๋ณธ์
๋๋ค.
1๋ถ๋ง ํฌ์ํด์ ์ ๋ฌธ๊ฐ์ ํ์ ํ์ธํด ๋ณด์ธ์.