AVX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค์ž‘๋™์„ ์ผ์œผํ‚ค๋Š” ๋ฒ„๊ทธ๊ฐ€ Linux ์ปค๋„์—์„œ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฆด๋ฆฌ์Šค 5.2 ์ดํ›„์˜ Linux ์ปค๋„์—์„œ๋Š” ๋ช…์‹œ๋œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌ๋˜๋Š” ์‹ ํ˜ธ ์ฒ˜๋ฆฌ๊ธฐ์—์„œ ๋ฐ˜ํ™˜ํ•  ๋•Œ AVX ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์„ ์œ„๋ฐ˜ํ•˜๋Š” ์˜ค๋ฅ˜(ํŽ˜์ด์ง€ ์˜ค๋ฅ˜)์ž…๋‹ˆ๋‹ค. ์ปค๋„์ด GCC 9์—์„œ ๋นŒ๋“œ๋œ ๊ฒฝ์šฐ AVX ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ๊ณ„์‚ฐ๊ณผ ๊ด€๋ จ๋œ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋žจ("-pthread")์„ ์‹คํ–‰ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค(์ด์ „ GCC ๋ฆด๋ฆฌ์Šค์—์„œ ๋นŒ๋“œ๋œ ๊ฒฝ์šฐ GCC 9 ์บ์‹œ์ด๋ฏ€๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ๋ ˆ์ง€์Šคํ„ฐ์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ ๋กœ์ปฌ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ, ์ด์ „ ๋ฒ„์ „์˜ GCC๋Š” ๋งค๋ฒˆ ์ด๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ ์†์ƒ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์กฐ๊ธฐ์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ˆˆ์— ๋„๊ณ  ์ž์ฃผ ๊ด€์ฐฐ๋˜๋Š” ์˜ค๋ฅ˜์˜ ์ง•ํ›„ ๊ฐ•์ฒ  ์ถฉ๋Œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ, Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ๊ธ‰๋œ ๋ฌธ์ œ๋กœ ์ธํ•ด Go ํ”„๋กœ๊ทธ๋žจ์€ ์ผ๋ฐ˜์ ์œผ๋กœ "๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜: ์ž˜๋ชป๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๋˜๋Š” nil ํฌ์ธํ„ฐ ์—ญ์ฐธ์กฐ", "๋Ÿฐํƒ€์ž„: ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฐ˜ํ™˜ PC" ๋ฐ "์„ธ๊ทธ๋จผํŠธ ์œ„๋ฐ˜" ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์กฐ๊ธฐ์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ์ปค๋„์˜ ๋ฒ„๊ทธ๋Š” ์ˆ˜์ •๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅ์„ฑ๋„ ๊ฒ€ํ† ์ค‘ ์ถ”๊ฐ€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํฌ์ƒํ•˜๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” Linux ์ปค๋„์˜ ์˜ค๋ฅ˜๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด Go ์–ธ์–ด ๋Ÿฐํƒ€์ž„์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€