Englishํ”„๋ž‘์Šค์–ด์ŠคํŽ˜์ธ์–ด

์˜จ์›์Šค ํŒŒ๋น„์ฝ˜

Windows์šฉ UniSIMD ์–ด์…ˆ๋ธ”๋Ÿฌ ๋‹ค์šด๋กœ๋“œ

UniSIMD ์–ด์…ˆ๋ธ”๋Ÿฌ Windows ์•ฑ์„ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ Ubuntu ์˜จ๋ผ์ธ, Fedora ์˜จ๋ผ์ธ ๋˜๋Š” Debian ์˜จ๋ผ์ธ์—์„œ Win Wine ์˜จ๋ผ์ธ ์‹คํ–‰

์ด๊ฒƒ์€ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋ฅผ UniSIMD-v1.1.0c.zip์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” UniSIMD-์–ด์…ˆ๋ธ”๋Ÿฌ๋ผ๋Š” Windows ์•ฑ์ž…๋‹ˆ๋‹ค. ์›Œํฌ์Šคํ…Œ์ด์…˜์šฉ ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์ธ OnWorks์—์„œ ์˜จ๋ผ์ธ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OnWorks์™€ ํ•จ๊ป˜ UniSIMD-์–ด์…ˆ๋ธ”๋Ÿฌ๋ผ๋Š” ์ด ์•ฑ์„ ๋ฌด๋ฃŒ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์˜จ๋ผ์ธ์œผ๋กœ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

์ด ์•ฑ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ง€์นจ์„ ๋”ฐ๋ฅด์„ธ์š”.

- 1. ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ PC์— ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

- 2. ํŒŒ์ผ ๊ด€๋ฆฌ์ž https://www.onworks.net/myfiles.php?username=XXXXX์— ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

- 3. ์ด๋Ÿฌํ•œ ํŒŒ์ผ ๊ด€๋ฆฌ์ž์—์„œ ์ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

- 4. ์ด ์›น์‚ฌ์ดํŠธ์—์„œ ๋ชจ๋“  OS OnWorks ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹œ์ž‘ํ•˜์ง€๋งŒ ๋” ๋‚˜์€ Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

- 5. ๋ฐฉ๊ธˆ ์‹œ์ž‘ํ•œ OnWorks Windows OS์—์„œ ์›ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ ๊ด€๋ฆฌ์ž https://www.onworks.net/myfiles.php?username=XXXXX๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

- 6. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

- 7. Linux ๋ฐฐํฌ ์†Œํ”„ํŠธ์›จ์–ด ์ €์žฅ์†Œ์—์„œ Wine์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์•ฑ์„ ๋‘ ๋ฒˆ ํด๋ฆญํ•˜์—ฌ Wine๊ณผ ํ•จ๊ป˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๊ธฐ ์žˆ๋Š” Windows ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๊ฒŒ์ž„์„ ์„ค์น˜ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” Wine์„ ํ†ตํ•œ ๋ฉ‹์ง„ ์ธํ„ฐํŽ˜์ด์Šค์ธ PlayOnLinux๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Wine์€ Linux์—์„œ Windows ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์ง€๋งŒ Windows๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Wine์€ ๋ชจ๋“  Linux ๋ฐ์Šคํฌํƒ‘์—์„œ ์ง์ ‘ Windows ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค Windows ํ˜ธํ™˜์„ฑ ๊ณ„์ธต์ž…๋‹ˆ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ Wine์€ Windows๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  Windows ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก Windows๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ถฉ๋ถ„ํžˆ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

UniSIMD-์–ด์…ˆ๋ธ”๋Ÿฌ


Ad


๊ธฐ์ˆ 

UniSIMD ์–ด์…ˆ๋ธ”๋Ÿฌ๋Š” ์ „์ฒด์— ๊ฑธ์ณ ํ†ตํ•ฉ๋œ ๊ณ ๊ธ‰ C/C++ ๋งคํฌ๋กœ ์–ด์…ˆ๋ธ”๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
ARM, MIPS, POWER ๋ฐ x86 ์•„ํ‚คํ…์ฒ˜. BASE์™€
๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ๊ณตํ†ต API๊ฐ€ ์žˆ๋Š” SIMD ๋ช…๋ น์–ด ์„ธํŠธ๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง
์ฝ”๋“œ ๋ณต์ œ ์—†์ด ํ•œ ๊ณณ์—์„œ ์ž‘์„ฑํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์–ด์…ˆ๋ธ”๋Ÿฌ ์ž์ฒด๋Š” ๋ณ„๋„์˜ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ C/C++ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ํฌํ•จํ•ด์•ผ ํ•˜๋Š” ํ—ค๋” ํŒŒ์ผ.

ํ˜„์žฌ Intel SSE/SSE2/SSE4 ๋ฐ AVX/AVX2/AVX-512(32/64๋น„ํŠธ x86 ISA),
ARMv7 NEON/NEONv2, ARMv8 AArch32 ๋ฐ AArch64 NEON, SVE(32/64๋น„ํŠธ ARM ISA),
MIPS 32/64๋น„ํŠธ r5/r6 MSA ๋ฐ POWER 32/64๋น„ํŠธ VMX/VSX(๋ฆฌํ‹€/๋น… ์—”๋””์•ˆ ISA)
์Šค์นผ๋ผ ๊ฐœ์„ ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค(/w ์ˆ˜ํ‰ ์ถ•์†Œ).
3/4 ํ”ผ์—ฐ์‚ฐ์ž ๋ช…๋ น์–ด์—์„œ XNUMX/๋ณ‘ํ•ฉ ์ˆ ์–ด๊ฐ€ ์žˆ๋Š” ๋” ๋„“์€ SIMD ๋ฒกํ„ฐ
ํ˜„์žฌ 2/3 ํ”ผ์—ฐ์‚ฐ์ž SPMD ๊ตฌ๋™ ์ˆ˜์ง SIMD ISA์˜ ํ™•์žฅ์œผ๋กœ ๊ณ„ํš๋ฉ๋‹ˆ๋‹ค.

README ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.



๊ธฐ๋Šฅ

  • ======= UniSIMD ํ•ต์‹ฌ ๊ธฐ๋Šฅ =======
  • ํ†ตํ•ฉ, ๋ฒ”์šฉ, ์ด์‹ ๊ฐ€๋Šฅ, ํ˜ธํ™˜ ์ฝ”๋“œ
  • ๋ช…์‹œ์  ๋ ˆ์ง€์Šคํ„ฐ ํ• ๋‹น, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ
  • ์ฝ”๋“œ์šฉ 8๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ ์„ธํŠธ: 16, 32, 8(๋ฌด๋ฃŒ: 15, 30, XNUMX)
  • ๋‹จ์ผ, ์Œ ๋ฐ ์ฟผ๋“œ๋กœ ์ƒ์œ„ ์ˆ˜์ค€ SIMD ๋ ˆ์ง€์Šคํ„ฐ/์ž‘๋™
  • ์˜คํ”„์…‹/ํŒฉํ„ฐ๊ฐ€ ์žˆ๋Š” SIMD ์ •๋ ฌ ๋ฐฑ์—”๋“œ ๊ตฌ์กฐ
  • ๋ฒกํ„ฐ ๊ธธ์ด์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ์ˆ˜์ง SIMD ISA, ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
  • ๋™์‹œ ์Šค์นผ๋ผ + 128/256๋น„ํŠธ + ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ SIMD ์—ฐ์‚ฐ
  • fp16/fp128(ํ•˜ํ”„/์ฟผ๋“œ) SIMD ์ž‘์—…์„ ์œ„ํ•œ ISA ๊ตฌํ˜„
  • 4๊ฐœ์˜ ์ฃผ์š” ์•„์น˜์—์„œ C/C++, Compute, SPMD
  • ์ธํ…” SSE/SSE2/SSE4 ๋ฐ AVX/AVX2/AVX-512
  • ARMv7 ๋„ค์˜จ/NEONv2, ARMv8 AArch32/AArch64 ๋„ค์˜จ, SVE
  • MIPS r5/r6 MSA(์›Œ๋ฆฌ์–ด P5600, I6400/P6600)
  • ์ „์› VMX/VSX(PowerPC G4/G5, POWER6/7/8/9)
  • CISC, RISC, RISC์˜ CISC, ๋ฆฌํ‹€/๋น… ์—”๋””์•ˆ ISA
  • reg-reg, load/store, load-op ๋ช…๋ น์–ด ์ง€์›
  • ์ผ๋ฐ˜, ์ธ๋ฑ์Šค ๋ฐ ์Šค์ผ€์ผ ์ธ๋ฑ์Šค ์ฃผ์†Œ ์ง€์ • ๋ชจ๋“œ
  • FMA3 ์ง€์›(๋„ค์ดํ‹ฐ๋ธŒ ๋˜๋Š” ๋” ๋†’์€ ์ •๋ฐ€๋„ ์—๋ฎฌ๋ ˆ์ด์…˜)
  • ๊ธฐ๋ณธ 32๋น„ํŠธ ABI๋ฅผ ์œ„ํ•œ 64/64๋น„ํŠธ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ชจ๋“œ
  • BASE ๋ฐ SIMD ์ž‘์—…์„ ์œ„ํ•œ 32/64๋น„ํŠธ ์ฃผ์†Œ ์ง€์ •
  • 32/64๋น„ํŠธ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ SIMD ์š”์†Œ(fp+int)
  • ๋™์‹œ 32/64๋น„ํŠธ BASE(๋ธŒ๋ฆฌ์ง€, ๊ทœ์น™) ๋ฐ SIMD ์ž‘์—…
  • int8/int16(byte/half) BASE ops์— ๋Œ€ํ•œ ISA ๊ตฌํ˜„
  • ์ฝ”๋“œ์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ œ์–ด, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Œ
  • ์ตœ์‹  ํƒ€๊ฒŸ์—์„œ ๋น„ํŠธ ์ •ํ™•ํ•œ fp-compute์˜ ๊ฐ€๋Šฅ์„ฑ
  • QuadRay ์—”์ง„์—์„œ ์‚ฌ์šฉ


์˜ค๋””์–ธ์Šค (Audience)

๊ฐœ๋ฐœ์ž



ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

C++, ์–ด์…ˆ๋ธ”๋ฆฌ, C


์นดํ…Œ๊ณ ๋ฆฌ

์–ด์…ˆ๋ธ”๋Ÿฌ, ๋งคํฌ๋กœ

์ด๊ฒƒ์€ https://sourceforge.net/projects/unisimdassembler/์—์„œ๋„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๋ฌด๋ฃŒ ์šด์˜ ์ฒด์ œ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ์˜จ๋ผ์ธ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด OnWorks์—์„œ ํ˜ธ์ŠคํŒ…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋ฌด๋ฃŒ ์„œ๋ฒ„ ๋ฐ ์›Œํฌ์Šคํ…Œ์ด์…˜

Windows ๋ฐ Linux ์•ฑ ๋‹ค์šด๋กœ๋“œ

Linux ๋ช…๋ น

Ad