Lapack: ์‹œ์Šคํ…œ ๊ตฌ์ถ•

์— ๋งŒ๋“  2021๋…„ 02์›” 13์ผ  ยท  26์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Reference-LAPACK/lapack

ํ˜„์žฌ LAPACK์—๋Š” ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • Makefile ์ „์šฉ,
  • ์”จ๋ฉ”์ดํฌ, ๊ทธ๋ฆฌ๊ณ 
  • ์ค‘๊ฐ„์ž.

Meson ๋นŒ๋“œ๋Š” 2019๋…„ 1์›”์— ๋„์ž…๋œ ์ดํ›„ ๋ถˆ์™„์ „ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CMake์™€ Makefile ์ „์šฉ ๋นŒ๋“œ๋Š” ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. -frecursive ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‘˜ ์ด์ƒ์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์žˆ์œผ๋ฉด ์ ์–ด๋„ ์„ธ ๊ฐ€์ง€ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ๋งˆ์ง€๋ง‰ ํฌ์ธํŠธ๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ •ํ™•ํ•œ ๋ฌธ์ œ ๋ณด๊ณ ์„œ๋ฅผ ์ „๋‹ฌํ•˜๋”๋ผ๋„ Makefile๋กœ ๋นŒ๋“œํ–ˆ์„ ๋•Œ ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  26 ๋Œ“๊ธ€

๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด CMake ๋นŒ๋“œ๋Š” ํ˜„์žฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์„ ํƒ ๋ถ€๋ถ„(REAL, DOUBLE, COMPLEX ๋ฐ/๋˜๋Š” DOUBLE COMPLEX)๋งŒ ๋นŒ๋“œํ•˜๋Š” ์˜ต์…˜์„ ์ง€์›ํ•˜์ง€๋งŒ Makefile ์ „์šฉ ๋นŒ๋“œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (OpenBLAS์™€ ํ•จ๊ป˜ ๋ฐฐํฌํ•˜๋Š” ๋ณต์‚ฌ๋ณธ์—์„œ Makefile์„ ๋ณ€๊ฒฝํ–ˆ์œผ๋ฉฐ ์›ํ•˜๋Š” ๊ฒฝ์šฐ PR์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ด€๋ จ์ด ์—†๋Š” ์ผ๋ถ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์™ธํ•˜๋ ค๋ฉด ๋‹ค์‹œ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

CMake ๋นŒ๋“œ๋Š” ํ˜„์žฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(REAL, DOUBLE, COMPLEX ๋ฐ/๋˜๋Š” DOUBLE COMPLEX)์˜ ์ผ๋ถ€๋งŒ ๋นŒ๋“œํ•˜๋Š” ์˜ต์…˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ต์…˜์€ ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œ๋„ํ–ˆ์„ ๋•Œ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค(2020๋…„ 5์›”๊ฒฝ).

CMake ๋นŒ๋“œ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์œผ๋ฉฐ ์—ฌ๊ธฐ์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์˜ต์…˜์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณต์œ  ๋˜๋Š” ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์ถ•
  • ํ…Œ์ŠคํŠธ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”
  • 64๋น„ํŠธ ๋˜๋Š” 32๋น„ํŠธ ์ธ๋ฑ์Šค
  • ์ตœ์ ํ™” ๋ฐ ๋””๋ฒ„๊น… ๋นŒ๋“œ
  • ๋งคํŠธ๋ฆญ์Šค ์ƒ์„ฑ๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(TMG) ์˜ต์…˜, ๋‹ค๋ฅธ BLAS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ, BLAS++, LAPACK++...

์ข‹์€ ์ƒ๊ฐ. make๋กœ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ CMake๋กœ ci์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋นŒ๋“œ๋Š” ๋‚˜๋ฅผ ๋ช‡ ๋ฒˆ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ Makefile์€ ์ด๋Ÿฌํ•œ ์˜ต์…˜๋„ ๋งŽ์ด ์ง€์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(make.inc๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค). ํ…Œ์ŠคํŠธ ์—†์ด ๋นŒ๋“œ๋ฅผ ์›ํ•˜๋ฉด make lib ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ์ •์ ์œผ๋กœ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์ถ•์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ LAPACK์„ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ CMake๊ฐ€ ์ €์—๊ฒŒ ํ™•์‹คํ•œ ์Šน์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋๋‚ด๋ฉด readme์— ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๋นŒ๋“œ ์ง€์นจ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•, ํ”Œ๋ž˜๊ทธ, ํŠนํžˆ frecursive ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•. ์•„๋งˆ๋„ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ๋ฉ”๋ชจ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” gmake๋กœ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ ๋งŽ์€ ํŒจ์น˜๊ฐ€ ๋– ๋Œ์•„๋‹ค๋‹ˆ๊ณ  ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: lapack์„ ํŒจํ‚ค์ง€ํ•˜๋Š” Linux ๋ฐฐํฌํŒ). ์ด๋ฏธ ์žˆ๋Š” BUILD_DEPRECATED์™€ ๊ฐ™์ด make.inc์— BUILD_SHARED ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ccmake ๋ฐ cmake-gui๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์ง€ ์•Š๋Š” ํ•œ ๋‘˜ ๋‹ค CMake ๋นŒ๋“œ์—์„œ ๊ฝค ๋ชจํ˜ธํ•ฉ๋‹ˆ๋‹ค).

์ด๋ฏธ ์žˆ๋Š” BUILD_DEPRECATED์™€ ๊ฐ™์ด make.inc์— BUILD_SHARED ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ccmake ๋ฐ cmake-gui๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์ง€ ์•Š๋Š” ํ•œ ๋‘˜ ๋‹ค CMake ๋นŒ๋“œ์—์„œ ๊ฝค ๋ชจํ˜ธํ•ฉ๋‹ˆ๋‹ค).

์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ccmake ๋กœ ์ž‘์—…ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. autotools์—์„œ ์ƒ์„ฑํ•œ configure ์Šคํฌ๋ฆฝํŠธ์™€ ์œ ์‚ฌํ•œ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ cmake -DBUILD_SHARED_LIBS=ON -DBUILD_COMPLEX=OFF -DBUILD_DEPRECATED=ON -- ../lapack/
[snip]
-- Build deprecated routines: ON
-- Build single precision real: ON
-- Build double precision real: ON
-- Build single precision complex: OFF
-- Build double precision complex: ON
[snip]
$ git -C ~/lapack rev-parse HEAD
6e125a41a7d4905d905a7467d3239d3f0d14b22c

ํ™•์‹คํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์š”์ ์€ CMakelists.txt๋ฅผ ์ฝ๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋ช…๋ฐฑํ•œ ๋ฌธ์„œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(README๋Š” gmake์šฉ์œผ๋กœ ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋œ make.inc ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค). ccmake ๋ฐ cmake-gui๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜์ง€๋งŒ cmake๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ด ๋ชฉ๋ก์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CMAKE ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด CMAKE๋ฅผ ์‚ฌ์šฉํ•œ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ €๋ฅผ ๊ธฐ๋‹ˆํ”ผ๊ทธ ์‚ฌ์šฉ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๋Œ€ํ™”๋ฅผ ์ฝ์œผ๋ฉด์„œ Makefile์ด LAPACK์— ๋‚˜๋งŒ์„ ์œ„ํ•œ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ;)

๊ธ€์Ž„, ๋‚˜๋Š” ๋ชจ๋ฅธ๋‹ค.

์˜ˆ: ์—ฌ๋Ÿฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋ฉด ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ฃผ์žฅ์„ ๋ด…๋‹ˆ๋‹ค. (CMAKE, make ๋˜๋Š” meson์ด๋“ ๊ฐ„์—.) (์•„, ๋‚˜๋„ meson์„ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.)

CMAKE๋กœ ์˜ฎ๊ฒจ๊ฐˆ๊นŒ๋ง๊นŒ ๊ณ ๋ฏผ์ค‘์ธ๋ฐ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์ง€๊ด€๋ฆฌ๋„ ์ž˜ ๋ชฐ๋ผ์„œ์š”. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์˜ ์ด ๋ถ€๋ถ„์—์„œ ์ผํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ CMAKE๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ „์ฒด: ์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ํ‘œํ˜„ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

์šฐ๋ฆฌ ๋Œ€๋ถ€๋ถ„์€ (1) make๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  meson์„ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (2) CMAKE๋กœ๋งŒ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. (3) CMAKE ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ๋ฌธ์„œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‚œ ๊ดœ์ฐฎ์•„.

์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ช‡ ๊ฐ€์ง€ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ์–ด๋–ป๊ฒŒ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ๋ฌป๊ฒ ์Šต๋‹ˆ๋‹ค.

@martin-frbg: OpenBLAS์—์„œ ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋‚˜์š”?

OpenBLAS์—๋Š” "์ž‘๋™ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ง„" "์ „ํ†ต์ ์ธ" ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ Makefile์ด ์žˆ์œผ๋ฉฐ, ์ƒ์„ฑํ•˜๋Š” ํŒŒ์ผ์ด Makefile ๋นŒ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒฝ๊ณ ๋ฅผ ์—ฌ์ „ํžˆ ๋‚ด๋ฟœ๋Š” ์›๋ž˜ ์‚ฌ์šฉ์ž ์ œ๊ณต ๋Œ€์•ˆ์œผ๋กœ CMAKE๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” CMAKE๋ฅผ ๋ณ„๋กœ ์ข‹์•„ํ•˜์ง€ ์•Š์ง€๋งŒ ์ž‘๋™ํ•˜๋Š”(๋•Œ๋กœ๋Š” ๋น„์ •ํ†ต์ ์ด์ง€๋งŒ) cmake ๋นŒ๋“œ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” Makefile์ด ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  gmake๊ฐ€ ์—ฌ์ „ํžˆ cmake๋ณด๋‹ค ๋” ๋„๋ฆฌ ํผ์ ธ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ๋‚˜๋Š” ์ค‘๊ฐ„์ž ์ง€์›์˜ ์—ญ์‚ฌ๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค - _๋งŒ์•ฝ_ ์ด๊ฒƒ์ด ์•„๋ฌด๋„ ์•Œ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•  ๋งŒํผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š” ์ผํšŒ์„ฑ "๋‹ด์žฅ ๋„ˆ๋จธ๋กœ ๋˜์ ธ์ง„" ๊ธฐ์—ฌ์˜€๋‹ค๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๊ณ„์† ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ค‘๊ฐ„์ž ์ง€์›์˜ ์—ญ์‚ฌ๋ฅผ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์•„๋ฌด๋„ ์•Œ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š” ์ผํšŒ์„ฑ "๋‹ด์žฅ ๋„ˆ๋จธ๋กœ ๋˜์ ธ์ง„" ๊ธฐ๊ณ ๋ผ๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Meson ๋นŒ๋“œ๋Š” PR #311์˜ LAPACK์œผ๋กœ ๋‚™ํ•˜์‚ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ . ๊ทธ๊ฒƒ์ด 3.9.0์— ๋ฐ›์•„๋“ค์—ฌ์ง„๋‹ค๋ฉด(๋‹จ์ง€ ๊ฐœ๋… ์ฆ๋ช…์œผ๋กœ๋ผ๋„), ๋ฐ”๋กœ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ์กฐ๊ธˆ ์ด์ƒํ•˜๊ฒŒ ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๋‚˜๋Š” @therault ์—๊ฒŒ ์—ฐ๋ฝํ•˜์—ฌ ๊ทธ๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ์ž์‹ ์˜ ์˜๊ฒฌ์„ @therault ๊ฐ€ ๋งํ•œ

Open MPI๋Š” autoconf(automake, autoconf, configure, Makefiles)๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

PaRSEC ๋ฐ DPLASMA์˜ ๊ฒฝ์šฐ CMake๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ตฌ์„ฑ์— ์ต์ˆ™ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋•๊ธฐ ์œ„ํ•ด

๋‚˜๋Š” configure์™€ CMake๋ฅผ ๋ชจ๋‘ ์œ ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ํ•˜๋‚˜์˜ ์ฃผ์š” ํ”„๋กœ์ ํŠธ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์˜ 100%๋ฅผ CMake์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๊ตฌ์„ฑ์—์„œ ์ง€์›๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด ์ ์  ์ค„์–ด๋“ค๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ์ฒœ์ฒœํžˆ ๋ฐœ์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๊ตฌ์„ฑ ๋ฒ„์ „ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์ค‘๋‹จํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์— ๋Œ€ํ•ด ๋‘ ๊ฐœ์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ๋ชจ๋“  ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋‘ ๊ฐœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋™๊ธฐํ™”๋ฅผ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค. configure๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋น ์กŒ๊ณ , ์œ ์ง€ ๋ณด์ˆ˜๋Š” ์‹œ๊ฐ„์„ ํ• ์• ํ•  ์ˆ˜ ์žˆ๋Š” ๋” ์ข‹์€ ์ผ์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.) ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ ์‹œ์Šคํ…œ์— ๋งž๊ฒŒ ์กฐ์ •ํ•˜์—ฌ ์ž‘์—…์„ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‘ ๋นŒ๋“œ ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ํ•ดํ‚น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ CMake ๋˜๋Š” ๊ตฌ์„ฑ ๋ชจ๋‘ ์‹ค๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ/์ˆ˜ํ•™์ž/์šฐ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค... ์™œ ๊ทธ ๊ธฐ๊ณ„์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ํ”Œ๋ž˜๊ทธ์˜ ์กฐํ•ฉ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ, CMake ๋˜๋Š” autoconf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ์ผ์„ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋ฉด ๋ฒฝ์— ๋ถ€๋”ชํž ๊ฒƒ์ž…๋‹ˆ๋‹ค :) ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ ๋œ ๋ถˆํ‰ํ•˜์‹ญ์‹œ์˜ค.

์˜ค๋Š˜ ์ €๋Š” CMake๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ๊ฐ€ ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. CMake๋Š” Makefile ๋Œ€์‹  Ninja ํŒŒ์ผ์„ ์ž˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Ninja๋Š” Make -j๋ณด๋‹ค 2~3๋ฐฐ ๋น ๋ฅด๊ฒŒ PaRSEC๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ configure/autoconf๊ฐ€ Ninja ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์‹œ๋„ํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค... ์ด์ „์— ninja๋ฅผ ์‹œ๋„ํ•œ ์ ์ด ์—†๊ณ  LAPACK์— CMake ๋ฒ„์ „์ด ์žˆ๋Š” ๊ฒฝ์šฐ cmake -G Ninja๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค(์ปดํ“จํ„ฐ์— Ninja๋ฅผ ์„ค์น˜ํ•œ ํ›„). ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด 'make' ๋Œ€์‹  cmake๋ฅผ ์‹คํ–‰ํ•œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ 'ninja'๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, ๊ทธ๊ฒƒ์€ ๋†€๋ผ์šด :)

๋งŒ์•ฝ ๋‹น์‹ ์ด ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด LAPACK์— configure-to-cmake ๊ธ€๋ฃจ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.
(์ด ์Šคํฌ๋ฆฝํŠธ๋Š” autoconf/m4 ๊ธฐ๋ฐ˜์ด ์•„๋‹ˆ๋ฉฐ configure --with-feature=value ๋ฅผ cmake -DFEATURE=value ์— ๋Œ€ํ•œ ํ˜ธ์ถœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

LAPACK์€ configure๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. autoconf/automake/configure ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์„ cmake์™€ ๋™์‹œ์— ์œ ์ง€ํ•˜๊ณ  autotools ์ž์ฒด๊ฐ€ ์ง€์†์ ์œผ๋กœ "์ง„ํ™”"ํ•˜๊ณ  m4 ๋งคํฌ๋กœ ๋“ฑ์— ์˜์กดํ•˜๋Š” ๊ฒƒ์ด ๊ณ ํ†ต์Šค๋Ÿฌ์šธ ๊ฒƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

CMAKE๋กœ ์˜ฎ๊ฒจ๊ฐˆ๊นŒ๋ง๊นŒ ๊ณ ๋ฏผ์ค‘์ธ๋ฐ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์ง€๊ด€๋ฆฌ๋„ ์ž˜ ๋ชฐ๋ผ์„œ์š”.

์ด๊ฒƒ์ด Makefiles๋ฅผ ๊ณ ์ˆ˜ํ•˜๋Š” ์ฃผ์š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

์ „์ฒด: ์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ํ‘œํ˜„ํ•ด ์ฃผ์‹ญ์‹œ์˜ค.

Meson ๋นŒ๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์›๋ž˜ ์ž‘์„ฑ์ž๋Š” ๋ถˆ์™„์ „ํ•œ ๋นŒ๋“œ๋ฅผ ์ œ์ถœํ–ˆ์œผ๋ฉฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ณ‘ํ•ฉ๋œ ํ›„์—๋Š” ๋Œ์•„์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์—ด๊ธฐ ์ „์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด Meson ๋นŒ๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๊นŒ?

CMake๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ๊ณผ ์™„์ „ํžˆ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ๊ฐ€ ์žˆ๋Š” ์ด์‹ ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ๋ณ„, ์ปดํŒŒ์ผ๋Ÿฌ๋ณ„ ๋˜๋Š” ๋Œ€์ƒ๋ณ„ ์˜ต์…˜์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: gethostname() ์™€ ๊ฐ™์€ C ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์—†๋Š” ๊ธฐ๋Šฅ์„ ์„ ํƒ์ ์œผ๋กœ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด). CMake์—๋Š” ๊ฐ•๋ ฅํ•œ ๊ฐœ์ฒด ํŒŒ์ผ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด git ๋ถ„๊ธฐ๋ฅผ ์ „ํ™˜ํ•œ ๊ฒฝ์šฐ์—๋„ make ๋ฅผ ๊ณ„์† ์ž…๋ ฅํ•˜์—ฌ ๋นŒ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CMake๋Š” ๋‚˜๋จธ์ง€ UNIX ์—์ฝ”์‹œ์Šคํ…œ๊ณผ ์›ํ™œํ•˜๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ถœํ•˜๊ณ  ์ถœ๋ ฅ์— ๋”ฐ๋ผ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด pkg-config๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CMake๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ 2016๋…„์ด์—ˆ๊ณ  ๊ทธ ์ดํ›„๋กœ x86, x86-64, armv7 ๋ฐ aarch64 ๋ช…๋ น์–ด ์„ธํŠธ ์•„ํ‚คํ…์ฒ˜์—์„œ Linux, Mac, iOS ๋ฐ Android ์‹œ์Šคํ…œ์šฉ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ๊ณ„์† ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ฃผ์š” Linux ๋ฐฐํฌํŒ๊ณผ ๋‚ด๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์Šˆํผ์ปดํ“จํ„ฐ(Grid 5000, Jean Zay, JUWELS, GRICAD, Eagle II)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šˆํผ์ปดํ“จํ„ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์ „ ๋ฆด๋ฆฌ์Šค์™€ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค(3.18+)๋ฅผ ํฌํ•จํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CMake ๊ฐ€์šฉ์„ฑ์— ์–ด๋ ค์›€์„ ๊ฒช์€ ์œ ์ผํ•œ ํ”Œ๋žซํผ์€ CentOS 7์ด์ง€๋งŒ ํ•ญ์ƒ CMake tarball์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  tarball ๋‚ด๋ถ€์˜ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GNU Make๋กœ๋งŒ CMake๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CMake๋Š” ์ €์—๊ฒŒ ๋”ฑ ๋งž์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋นŒ๋“œ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ œ ๊ฒฝํ—˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Bazel: 1GB ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์žˆ๋Š” Raspberry Pi์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฑฐ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ˜ธ๊ทธ, ๋ชจ๋“  ์ข…์†์„ฑ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์ •์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ ํ•จ
  • autotools๋ฅผ ๋‹ค์Œ ์‚ฌ์šฉ์ž๋กœ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜์ด์—†๋Š”, ๊ฐ™์€ configure ๊ฐ€ (๋‹น์‹ ์ด ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋ชจ๋“  ์˜ต์…˜์„ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค CMake ์•Š์Šต๋‹ˆ๋‹ค์™€ ccmake ์—๋งŒ ์‹คํ–‰ ํ›„ cmake ํ•œ ๋ฒˆ).

์˜ค๋Š˜ ์ €๋Š” CMake๋ฅผ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ๊ฐ€ ํ•˜๋‚˜ ์žˆ์Šต๋‹ˆ๋‹ค. CMake๋Š” Makefile ๋Œ€์‹  Ninja ํŒŒ์ผ์„ ์ž˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Ninja๋Š” Make -j๋ณด๋‹ค 2~3๋ฐฐ ๋น ๋ฅด๊ฒŒ PaRSEC๋ฅผ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.

์ข‹์Šต๋‹ˆ๋‹ค. Ninja๋Š” ๊ณผ๊ฑฐ์— Fortran์„ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ. ninja #1265 , ์ฆ‰, ์ผ๋ถ€ ๋ฐฐํฌํŒ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Debian 9?).

์ด ๊ฒฝ์šฐ ์ผ๋ฐ˜ makefile์ด ๋” ์‰ฝ๊ณ  ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
HPC ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์œ ์ง€ Cmake ์‚ฌ์šฉ์— ๋งค์šฐ ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ฐœ๋ฐœ์ž๋Š” ๊ณผ๋„ํ•œ ๋ฌธ์„œ ์ฝ๊ธฐ๋กœ ์ธํ•ด ๋นŒ๋“œ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ํ‘œ์ค€ ๋ช…๋ช… ์ฒด๊ณ„๋ฅผ ๋”ฐ๋ฅด๋Š” ๋ฐ ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํŒจํ‚ค์ง€๋Š” ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ์ด๋ฆ„์„ "์กฐ์ •"ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„ํ‘œ์ค€ ๋ช…๋ช… ์ฒด๊ณ„๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. (autoconf+์˜ ๊ฒฝ์šฐ ์•ฝ๊ฐ„ ์‚ฌ์‹ค์ด์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ๋” ํ‘œ์ค€ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค)
  2. cmake์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋””๋ฒ„๊ทธํ•˜๋ ค๋ฉด cmake ์ „๋ฌธ๊ฐ€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์–ด๋ ค์›€์„ ๊ฒช์Šต๋‹ˆ๋‹ค... :(
  3. ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค( make.inc ). ์ด๋Š” ๋นŒ๋“œ ์‹œ ๋ช…๋ น์ค„์—์„œ ๋ชจ๋“  bulild-options๋ฅผ ๊ฐ•์ œ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— cmake๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข‹์€ ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋” ์‰ฌ์šด ์ฐฝ ์ง€์›
  2. ์ข…์†์„ฑ์„ ๋ณด๋‹ค ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— cmake ํŒŒ์ผ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(์ข‹์€ ์ด์ ).

๊ทธ๋Ÿฌ๋‚˜ LAPACK์˜ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์—๋Š” ์ข‹๊ณ  ๋‚˜์จ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ ์ˆ˜์‹ญ ๋…„ ๋™์•ˆ ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ์‚ฌ๋žŒ๋“ค์€ ์ด์— ์ต์ˆ™ํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ๋น ๋ฅธ ๋ณ‘๋ ฌ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ํ˜„์žฌ makefile ์‹œ์Šคํ…œ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์—†์ง€๋งŒ ๋” ๋งŽ์€ ๊ฒƒ์ด ์ง€์›๋œ๋‹ค๋ฉด ์–ด๋–ค ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ ์–ด๋–ค ์˜ต์…˜์„ ์ง€์›ํ•˜๋Š”์ง€ ์ ˆ๋Œ€์ ์œผ๋กœ ๋ถ„๋ช… ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค ...

@langou ๋‹˜ ๊ณผ ๋น„์Šทํ•œ ์ƒํ™ฉ์ธ ๊ฒƒ

๋‚˜๋Š” cmake๋ฅผ ๋ชจ๋ฅธ๋‹ค. ๋ชจ๋“  ๊ตฌ์„ฑ์ด ์ด๋ฏธ ์ค€๋น„๋˜์–ด ์žˆ๊ณ  travis ๊ตฌ์„ฑ์„ ์—ด๊ณ  ์‹คํ–‰๋˜๋Š” ํ–‰์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐํ•˜์—ฌ ์ด ํ”„๋กœ์ ํŠธ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•ด์„œ๋งŒ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™์•„์š”. Makefile์€ ์•ฝ๊ฐ„ ๋œ ๋งˆ๋ฒ•์ ์ด๊ณ  ๋” ๋‚ฎ์€ ์ˆ˜์ค€์œผ๋กœ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„ ์ด ํ”„๋กœ์ ํŠธ์—์„œ ์ผํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฐ˜ํ–ฅ์„ ์ผ์œผํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ˆœ์ „ํžˆ ๊ฐœ์ธ์ ์ธ ์šฉ๋„๋ผ๋ฉด gmake๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ด์ง€๋งŒ ํ˜„์žฌ cmake์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ Makefile์— ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€์ƒ.

๊ทธ๋Ÿฌ๋‚˜ cmake๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ ๋‚˜๋Š” cmake๋‚˜ gmake๊ฐ€ ์ž˜ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•˜๋‚˜๋งŒ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์™ธ๋ถ€ ๋ชฉ์†Œ๋ฆฌ์ด์ง€๋งŒ conda-forge ์—์„œ ํ•ดํ‚น , ๊ธฐ๋ณธ Windows ์ง€์› ๋“ฑ).

CMake ๊ตฌ๋ฌธ์— ์ต์ˆ™ํ•ด์ง€๋ ค๋ฉด ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜์ง€๋งŒ, ๋‚ด ์ธ์ƒ์€ ์ด๊ฒƒ์ด ์ž˜ ์œ ์ง€๋˜๊ณ  ๋ฌธ์„œํ™”๋˜์–ด ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋กœ, ๋งŽ์€ ๊นŒ๋‹ค๋กœ์šด ๋นŒ๋“œ ๋ฌธ์ œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ•ด๊ฒฐ/์ถ”์ƒํ™”ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจํ‚ค์ง•์—๋„ ์ฐธ์—ฌํ•˜๊ณ  ์žˆ์œผ๋ฉฐ (์ฃผ๊ด€์ ์œผ๋กœ) CMake๋กœ์˜ ์ด๋™์ด ์ ์  ๋” ๋งŽ์•„์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์™ธ๋ถ€์˜ ๋˜ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ์ƒ๋‹นํ•œ ์–‘์˜ C/C++ ๋นŒ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ž‘์—…์—์„œ CMake๋กœ ๋„ˆ๋ฌด ๋งŽ์€ ์–ด๋ ค์›€์„ ๊ฒช์€ ํ›„ Meson์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๊ธด ๋ฌธ์ œ ๋ชฉ๋ก์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

SciPy ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Python distutils ์ด ํ๊ธฐ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋Š ์‹œ์ ์—์„œ CMake ๋˜๋Š” Meson์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„ธ ๊ฐ€์ง€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋ฉด ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ถˆ์ผ์น˜ ๋ฐ/๋˜๋Š” ์ถ”๊ฐ€ ์ž‘์—…์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์˜ ์˜๊ฒฌ๊ณผ ์ œ ์ƒ๊ฐ์—๋Š” ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ณ ์œ ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ @therault ์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ/์ˆ˜ํ•™์ž/์šฐ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค... ์™œ ๊ทธ ๊ธฐ๊ณ„์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ํ”Œ๋ž˜๊ทธ์˜ ์กฐํ•ฉ์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ, CMake ๋˜๋Š” autoconf๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ์ผ์„ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ๋ ค๊ณ  ํ•˜๋ฉด ๋ฒฝ์— ๋ถ€๋”ชํž ๊ฒƒ์ž…๋‹ˆ๋‹ค :) ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ๋ถˆํ‰ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ ๋œ ๋ถˆํ‰ํ•˜์‹ญ์‹œ์˜ค.

์—ฌ๋Ÿฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ํ•œ ๊ฐ€์ง€ ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ง€์›๋˜๋Š” ๋ชจ๋“  ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ํฌํ•จํ•˜๋„๋ก CI์—์„œ ๋” ๋งŽ์€ ๊ตฌ์„ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ชจ๋“  ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•จ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๊ฒƒ์„ ์ œ์‹œํ•˜๊ณ  README์—์„œ ๋นŒ๋“œ ์‹œ์Šคํ…œ ์ค‘ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์„ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ: _์ด ์Šค๋ ˆ๋“œ์—์„œ @martin-frbg, @christoph-conrads ๋ฐ @thijssteel ์ด ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ _๊ณต์œ  ๋ฐ ์ •์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ CMake๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. (๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— Meson ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์žˆ๋Š”์ง€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. README์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ด ์˜ต์…˜ ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์ค‘๋‹จํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.)

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ recursive ํ”Œ๋ž˜๊ทธ์˜ ๋ฌธ์ œ๋Š” ํ…Œ์ŠคํŠธ ๋ฃจํ‹ด xeigtstz (https://github.com/Reference-LAPACK/lapack/issues/335# ์ฐธ์กฐ). ๋ฌธ์ œ์˜๊ฒฌ-485021575). ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋ฉด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  1. ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ธฐ๋ณธ CMake ๊ตฌ์„ฑ ๋ฐ ๋ˆ„๋ฝ๋œ ๋‹ค๋ฅธ ์œ„์น˜์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜
  2. make.inc.* ํŒŒ์ผ์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์•ฝ๊ฐ„์˜ ์˜คํ•ด wrt -frecursive ์ œ ์ƒ๊ฐ์—๋Š” ์ด๊ฒƒ์€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์ฝ”๋“œ์˜ ์˜ฌ๋ฐ”๋ฅธ ๊ธฐ๋Šฅ์— ํ•„์š”ํ•˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ ๋นŒ๋“œ ํŒŒ์ผ์—์„œ ์ œ๊ฑฐํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถ€์ž‘์šฉ์€ xeigtstz์˜ ๊ฒฝ์šฐ ๋งค์šฐ ํฐ ๋กœ์ปฌ ๋ฐฐ์—ด์„ ์Šคํƒ์— ๋ฐฐ์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. TESTING/EIG Makefile์—์„œ๋งŒ ์ด ์˜ต์…˜์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ์— ๋„์›€์ด ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ `-fopenmp'๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ์•”์‹œ๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ํ•ด๋‹น ํ…Œ์ŠคํŠธ์˜ ๋น„์ •์ƒ์ ์œผ๋กœ ํฐ ์Šคํƒ ์ œํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์—ฌ๊ธฐ์— ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” LAPACK์ด "๋‹จ์ˆœํ•œ" ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. make ์‹œ์Šคํ…œ๋งŒ ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•˜๊ณ  ์˜ค๋žซ๋™์•ˆ ์ถฉ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ํ•˜์ง€๋งŒ.. ์œˆ๋„์šฐ๋„ ์žˆ๊ณ .. ์œˆ๋„์šฐ ๋•Œ๋ฌธ์— cmake๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜ CMake์˜ ์‚ฌ๋žŒ๋“ค์ด ๊ตฌ์„ฑ ์ž‘์—…์„ ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์šฐ๋ฆฌ๊ฐ€ ํ˜ผ์ž์ธ ๊ฒƒ ๊ฐ™๊ณ  @langou ์ฒ˜๋Ÿผ ์‹ค์ œ๋กœ ๋งˆ์Šคํ„ฐํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ LAPACK์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” Cmake๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๊ทธ๋“ค์ด ์ข‹์•„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ: ์ด๊ฒƒ์€ Cmake์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค... ํ˜„์žฌ๋กœ์„œ๋Š” ๋ถˆํ–‰ํ•˜์ง€๋งŒ ๋ฏธ๋ž˜์—๋Š” ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.

๋‚ด ํˆฌํ‘œ: @abouteiller ๋ฐ @ @therault ์˜ ์กฐ์–ธ์„

์ด์ œ LAPACK์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” Cmake๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๊ทธ๋“ค์ด ์ข‹์•„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  ๋‹จ ํ•˜๋‚˜์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ฐ–์ž๊ณ  ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฐ€์ •์€ Makefile๊ณผ CMake ๊ธฐ์ˆ ์ด ๊ฑฐ์˜ ๊ณ ๋ฅด๊ฒŒ ๋ถ„ํฌ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•ด์ฃผ์„ธ์š”. ํ•˜์ง€๋งŒ ๋‚ด ์ธ์ƒ์€ ์ด๊ฒƒ์ด ์ผ๋ฐ˜ LAPACK ๊ธฐ๊ณ ์ž ์‚ฌ์ด์—์„œ ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Makefiles๋Š” ์ธ๊ธฐ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ณ  CMake ์ง€์‹์€ ๊ฐ•๋ ฅํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ดํ‹€๊ฐ„์˜ ํ† ๋ก  ๋์— -frecursive ํ”Œ๋ž˜๊ทธ๋Š” ๋ถ„๋ช…ํžˆ CMake์™€ Makefile ๋นŒ๋“œ ์‚ฌ์ด์˜ ์œ ์ผํ•œ ์ฐจ์ด์ ์ด๋ฉฐ Travis CI์—์„œ๋Š” CMake๋งŒ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ธฐ์—ฌ์ž๋ฅผ ๋ชฐ์•„๋‚ธ๋‹ค๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ํ–‰๋ณตํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํ•˜๋‚˜์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์€ ์ด์น˜์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(์ •๊ทœ ๊ธฐ์—ฌ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€์— ๋Œ€ํ•œ ๋‚˜์˜ ํŒ๋‹จ์€ ์ˆ˜๋ฝ๋œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์˜ ์ฒ˜์Œ 5ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

Agree.. BTW, ์žฌ๊ท€ ํ”Œ๋ž˜๊ทธ๋Š” #492๊ฐ€ ์žˆ๋Š” ๊ธฐ๋ณธ CMake ๋ฐ Makefile ๊ตฌ์„ฑ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Travis CI์— Makefile ๋นŒ๋“œ๋ฅผ ํฌํ•จํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

PR #500์€ ์—ฌ๊ธฐ์— ๋ณด๊ณ ๋œ Makefile๊ณผ CMake ๋นŒ๋“œ ์‹œ์Šคํ…œ ๊ฐ„์˜ ๋ถˆ์ผ์น˜๋ฅผ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค. https://github.com/Reference-LAPACK/lapack/pull/500#issuecomment -788164244 ์ฐธ์กฐ

์•ˆ๋…•ํ•˜์„ธ์š” @ilayn์ž…๋‹ˆ๋‹ค. Meson / CMake / Makefile ์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์„ธ ๊ฐ€์ง€ ์‹œ์Šคํ…œ์„ ๋ชจ๋‘ ์ง€์›ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ˜„์žฌ๋กœ์„œ๋Š” CMake์™€ Makefile์„ ์„ ํ˜ธํ•˜๋ฏ€๋กœ Meson์„ ํ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Meson์„ ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๋ง์€ ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” Meson์„ ์œ ์ง€ ๊ด€๋ฆฌํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค. ๊ณง Meson์„ ํ‡ด์—ญ์‹œํ‚ค๋Š” PR์„ ์ œ์ถœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ค„๋ฆฌ์•™.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰