Intel์ ๊ด์ ์ถ์ ๋ ๋๋ง ์์คํ ์ ์ฌ์ฉํ์ฌ ์ค๋น๋ ์ด๋ฏธ์ง ๋ ธ์ด์ฆ ์ ๊ฑฐ์ฉ ํํฐ ์ปฌ๋ ์ ์ ๊ฐ๋ฐํ๋ oidn 2.0(Open Image Denoise) ํ๋ก์ ํธ์ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐํํ์ต๋๋ค. Open Image Denoise๋ Embree ๊ด์ ์ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, GLuRay ์ฌ์ค์ ๋ ๋๋ง ์์คํ , OSPRay ๋ถ์ฐ ๊ด์ ์ถ์ ํ๋ซํผ์ ํฌํจํ ๊ณผํ ์ํํธ์จ์ด ์๊ฐํ ๋๊ตฌ(SDVis(์ํํธ์จ์ด ์ ์ ์๊ฐํ)) ๊ฐ๋ฐ์ ๋ชฉํ๋ก ํ๋ ๋๊ท๋ชจ oneAPI ๋ ๋๋ง ๋๊ตฌ ํคํธ ํ๋ก์ ํธ์ ์ผ๋ถ๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ๋ฐ OpenSWR ์ํํธ์จ์ด ๋์คํฐํ ์์คํ ์ฝ๋๋ C++๋ก ์์ฑ๋์์ผ๋ฉฐ Apache 2.0 ๋ผ์ด์ผ์ค์ ๋ฐ๋ผ ๊ฒ์๋์์ต๋๋ค.
์ด ํ๋ก์ ํธ์ ๋ชฉํ๋ ๊ด์ ์ถ์ ๊ฒฐ๊ณผ์ ํ์ง์ ํฅ์์ํค๊ธฐ ์ํด ์ ์ฉํ ์ ์๋ ๊ณ ํ์ง์ ํจ์จ์ ์ด๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ฌ์ด ๋ ธ์ด์ฆ ์ ๊ฑฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์ ์๋ ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋จ์ถ๋ ๊ด์ ์ถ์ ์ฃผ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณด๋ค ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ ์๊ฐ์ด ๋ง์ด ์์๋๋ ์ธ๋ถ ๋ ๋๋ง ํ๋ก์ธ์ค์ ๊ฒฐ๊ณผ์ ํ์ ํ๋ ์ต์ข ํ์ง ์์ค์ ์ป์ ์ ์์ต๋๋ค.
Open Image Denoise๋ MCRT(Monte Carlo Numerical Integration) ๊ด์ ์ถ์ ๊ณผ ๊ฐ์ ๋ฌด์์ ๋ ธ์ด์ฆ๋ฅผ ํํฐ๋งํฉ๋๋ค. ์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์์ ๊ณ ํ์ง ๋ ๋๋ง์ ์ป์ผ๋ ค๋ฉด ๋งค์ฐ ๋ง์ ์์ ๊ด์ ์ ์ถ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์ ๋ฌด์์ ๋ ธ์ด์ฆ ํํ์ ๋์ ๋๋ ์ํฐํฉํธ๊ฐ ๋ํ๋ฉ๋๋ค.
Open Image Denoise๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ํฝ์ ์ ๊ณ์ฐํ ๋ ํ์ํ ๊ณ์ฐ ์๋ฅผ ๋ช ๋ฐฐ๋ก ์ค์ผ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด๊ธฐ์ ๋ ธ์ด์ฆ๊ฐ ์๋ ์ด๋ฏธ์ง๋ฅผ ํจ์ฌ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์์ง๋ง ๋น ๋ฅธ ๋ ธ์ด์ฆ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํ์ฉ ๊ฐ๋ฅํ ํ์ง๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ์ ์ ํ ์ฅ๋น๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์๋ ๋๊ตฌ๋ฅผ ์ฆ์ ๋ ธ์ด์ฆ ์ ๊ฑฐ์ ํจ๊ป ๋ํํ ๊ด์ ์ถ์ ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฉํฑ ๋ฐ PC๋ถํฐ ํด๋ฌ์คํฐ์ ๋ ธ๋์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ข ๋ฅ์ ์ฅ์น์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ตฌํ์ SSE64, AVX4, AVX-2 ๋ฐ XMX(Xe Matrix Extensions) ๋ช ๋ น์ ์ง์ํ๋ ๋ค์ํ ํด๋์ค์ 512๋นํธ Intel CPU, Apple Silicon ์นฉ ๋ฐ Intel Xe GPU(Arc, Flex ๋ฐ Max ์๋ฆฌ์ฆ)๊ฐ ํ์ฌ๋ ์์คํ ์ ์ต์ ํ๋์ด ์์ต๋๋ค. NVIDIA(Volta, Turing, Ampere, Ada Lovelace ๋ฐ Hopper ์ํคํ ์ฒ ๊ธฐ๋ฐ) ๋ฐ AMD(RDNA2(Navi 21) ๋ฐ RDNA3(Navi 3x) ์ํคํ ์ฒ ๊ธฐ๋ฐ). SSE4.1์ ๋ํ ์ง์์ ์ต์ ์๊ตฌ ์ฌํญ์ผ๋ก ์ ์ธ๋์์ต๋๋ค.
Open Image Denoise 2.0 ๋ฆด๋ฆฌ์ค์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ:
- GPU๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๊ฐ์ ์์ ๊ฐ์ํ๋ฅผ ์ง์ํฉ๋๋ค. Intel Xe ์ํคํ ์ฒ, AMD RDNA2, AMD RDNA3, NVIDIA Volta, NVIDIA Turing, NVIDIA Ampere, NVIDIA Ada Lovelace ๋ฐ NVIDIA Hopper ๊ธฐ๋ฐ GPU์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ SYCL, CUDA ๋ฐ HIP ์์คํ ์ ํตํด GPU ์คํ๋ก๋ฉ ์ง์์ ๊ตฌํํ์ต๋๋ค.
- ์๋ก์ด ๋ฒํผ ๊ด๋ฆฌ API๊ฐ ์ถ๊ฐ๋์ด ์คํ ๋ฆฌ์ง ์ ํ์ ์ ํํ๊ณ , ํธ์คํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๊ณ , Vulkan ๋ฐ Direct3D 12์ ๊ฐ์ ๊ทธ๋ํฝ API์์ ์ธ๋ถ ๋ฒํผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ๋น๋๊ธฐ ์คํ ๋ชจ๋(oidnExecuteFilterAsync ๋ฐ oidnSyncDevice ํจ์)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์์คํ ์ ์๋ ๋ฌผ๋ฆฌ์ ์ฅ์น์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ํ API๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- UUID ๋๋ PCI ์ฃผ์์ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ฅ์น ID๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฅ์น๋ฅผ ์์ฑํ๋ oidnNewDeviceByID ํจ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- SYCL, CUDA ๋ฐ HIP๋ฅผ ํตํ ์ด์์ฑ์ ์ํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์๋ก์ด ์ฅ์น ๊ฒ์ ์ต์ (systemMemorySupported, ManagedMemorySupported, externalMemoryTypes)์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ํํฐ์ ํ์ง ์์ค์ ์ค์ ํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ฒ : opennet.ru