TensorFlow๋ CUDA๋ง ์ง์ํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. OpenCL ์ง์์ ์ถ๊ฐํ๋ ค๋ฉด ๋ฌด์์ ํด์ผ ํฉ๋๊น?
Google์ด ๋
์ CUDA๋ฅผ ์ํด OpenCL์ ๋ฒ๋ฆฐ ๊ฒ์ ์ด์ํฉ๋๋ค.
์ต์ํ Eigen ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ OpenCL์ ์ง์ํด์ผ ํฉ๋๋ค.
:+1:
:+1:
:+1:
์์ง์๊ฐ๋ฝ๊ณผ ๊ทธ ๋ชจ๋ ๊ฒ.
OpenCL๋ก Tensor Flow๋ฅผ ํ์ฅํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฏธ OpenCL ์นดํ๋ฅผ ์ถ์ํ์ต๋๋ค. https://github.com/amd/OpenCL-caffe. ๋ฐ๋ผ๊ฑด๋ ๊ทธ๊ฒ์ ๊ฐ๋ฒผ์ด ๋ฐฉ์์ผ๋ก ํตํฉ ๋ ์ ์์ต๋๊น? ํจ๊ป ์์ ํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ์ฌ๋์ด ์์ต๋๊น?
@gujunli ์ฌ๊ธฐ์ AMD๋ฅผ ๋ง๋์ ๋ฐ๊ฐ์ต๋๋ค. /cc @naibaf7 @lunochod
ํ๋ฅญํ ๊ฒ์ ๋๋ค.
:+1:
Eigen/OpenCL/SYCL์ฉ /cc @lukeiwanski
@gujunli ํ์คํ ๊ธฐ์ฌ์ ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค. ์ธ์ ์์ํ ๊ณํ์ธ์ง ์๋ ค์ฃผ์ธ์.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ฌ๊ธฐ Codeplay์์ ์ฐ๋ฆฌ๋ SYCL(OpenCL ์์ ์๋ ์ต์ C++ ๋ ์ด์ด)์ ์ฌ์ฉํ์ฌ GPU์์ ์คํ๋๋ Eigen์ ํ ์๋ฅผ ์กฐ์ฌํ๊ณ ์์ต๋๋ค. ์ง๊ธ๊น์ง ์์งํ ๋ด์ฉ์์ GPU ํ ์ ๋์์ธ์ CUDA์ ๋งค์ฐ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ์์ผ๋ฉฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ, ํนํ SYCL ๋ฐ OpenCL 1.2 ๋ฒ์ ์ ๋ํ ์ธํฐํ์ด์ค ๋ณ๊ฒฝ์ด ํ์ํฉ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋ ๊น์ด ํ๊ณ ๋๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๋ฉด / ์ฐ๋ฆฌ๋ ๊ธฐ์ฌํ๋ ๋ฐ ๊ฐ์ฅ ๊ด์ฌ์ด ์์ต๋๋ค.
๊ฐ์ฌ ํด์,
๋ฃจํฌ
@lukeiwanski ํผ๋๋ฐฑ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. @benoitsteiner ๋ eigen์ ํ ์ ํ์ฅ ๋ถ๋ถ์์ ์์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
:+1: ๋๊ตฐ๊ฐ๊ฐ ๊ณํ์ ์ธ์ฐ๊ณ ์์ ์ ์์ ์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ OpenCL/SYCL ์ฝ๋ฉ์ ๋์ธ ์ ์์ต๋๋ค. ์ ๋ Boost.Compute๋ฅผ OpenCL์ฉ ๋ํผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค(์ปค๋ ์คํ, ํ ์คํธ, ํ ํ๋ฆฟ์ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค).
+1
:+1:
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
๊ณ์ํด์ ์์์ ์ ํ๊ธฐ ์ํด SYCL/OpenCL 1.2 ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ ์ ๋ง๋๋ก Eigen ์ธํฐํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๊ณ์ ์กฐ์ฌํ๊ณ ์์ต๋๋ค.
์ด๊ธฐ์ข
ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ( OpenCL / SYCL ๋ฟ๋ง ์๋๋ผ )์ ๋์์ผ๋ก ํ๋ ํฉ๋ฆฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ๋์ค๋ฉด ์ ์์๋ฅผ ์์ฑํฉ๋๋ค.
๊ฐ์ฌ ํด์,
๋ฃจํฌ
๊ณ์ ์
๋ฐ์ดํธํด ์ฃผ์ธ์. AMD์ฉ opencl-caffe๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. ๋๋๋ณด๊ณ ์๋ค
ํ
์ ํ๋ฆ.
๊ฐ์ฌ ํด์.
์ค๋ฃจ
2015๋
12์ 8์ผ ์ค์ 10์ 19๋ถ์ "Luke Iwanski" [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
๊ณ์ ์๋ ค๋๋ฆฌ๊ธฐ ์ํด ๋ณ๊ฒฝ ๋ฐฉ๋ฒ์ ๊ณ์ ์กฐ์ฌ ์ค์ ๋๋ค.
SYCL/OpenCL 1.2 ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ ์ ๋ง๋ ๊ณ ์ ์ธํฐํ์ด์ค.
ํฉ๋ฆฌ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ๋์ค๋ฉด ์ ์์๋ฅผ ์์ฑํฉ๋๋ค.๊ฐ์ฌ ํด์,
๋ฃจํฌโ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -162967662
.
/cc @ptillet @gongzg ์ธํ ์์ ์ด์ ๋ํ ๊ด์ฌ์ด ์์ต๋๊น? AMD ํฌํฌ, Intel ํตํฉ๋์ง ์์ PR, ๋ ๋ค๋ฅธ ์ค๋น๊ณต์ AMD PR, ์ฅ๊ธฐ ์คํ ์ด์ง ์ฌ์ฉ์ PR์ด ์๋ Caffe์ ๊ฐ์ด ์ฌ๊ธฐ์์ OPENCL์ ์กฐ๊ฐํํ์ง ์๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ญ์ฌ์ ๊ด์ฌ์ด ์๋ค๋ฉด https://github.com/BVLC/caffe/pull/2610 ๋๊ธ์ ๋ณผ ์ ์์ต๋๋ค.
@bhack ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๊ด์ฌ์ด ์์ต๋๋ค. ์๋ ค ์ค์ ๊ณ ๋ง์. Eigen์ OpenCL/SYCL ๊ตฌํ์ ๋ํ ์ ์์ด ์์ผ๋ฉด ์ธํ ์ธก์์ ๋ฌด์์ ํ ์ ์๋์ง ์ ์ ์์ต๋๋ค.
:+1:
https://github.com/ptilet/isaac ์ ํฅ๋ฏธ๋ก์ด ์ด๋์ ํฐ๋ธ๋ ์ฌ๊ธฐ์์ Eigen ํ ์ ํ์ฅ์ ์์กดํ๋ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ ๋ ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค. @benoitsteiner ์ ๋ฆฌํ ์ ์๋์?
์ด๊ฒ์ ๋ก๋๋งต์ ํฌํจ๋์์ง๋ง ๋ฐฉํฅ/๋ถํธ์คํธ๋ฉ์ด ์ ๋ง ์ ์ฉํ ์ ์๋๋ก ๊ธฐ์ฌ๋ก ํ๊ทธ๋๊ธฐ๋ ํ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์กฐ์งํ๋ ๋ฐ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. OpenCL ์ง์์ ๋ด๋นํ๋ ์ฌ๋
์ด์ ํ
์ ํ๋ฆ?
์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
์ค๋ฆฌ
2016๋ 1์ 19์ผ ํ์์ผ ์ค์ 7์ 50๋ถ์ bhack [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด๊ฒ์ ๋ก๋๋งต์ ํฌํจ๋์์ง๋ง ๊ธฐ์ฌ๋ก ํ๊ทธ๊ฐ ์ง์ ๋์ด
direction/bootstrap์ ์ ๋ง ์ ์ฉํ ์ ์์ต๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172894538
.
๊ตฌ์ค๋ฆฌ - ่ฐทไฟไธฝ
์กฐ์ ๊ณผํ ์ฐ๊ตฌ์ค
์ผ๋ฆฌ๋
ธ์ด ๋ํ๊ต ์ด๋ฐ๋ ์ดํ์ธ
Benoit๊ฐ ๊ธฐ๋ฅ์ ์ง์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ Benoit๋ก ๊ฐ์ ํ์ง๋ง Junli๋ ๋น์ ์ด ๊ทธ๊ฒ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค! ๊ด์ฌ ์๋ ์ฌ๋๋ค์ ์ด๋ฉ์ผ์ด๋ ํฌ๋ผ ์ค๋ ๋๋ก ์์ํ์๊ฒ ์ต๋๊น?
@benoitsteiner ๋ ํ์ํ์ง ์์์ ์ ์๋ ์ดํด ๊ด๊ณ์์ ๋ํด ๋ ๋ง์ด ์๊ณ ์์ต๋๋ค.
์ด ์ค๋ ๋(๋๋ ์ด ๋ฌธ์ )์ ์์ต๋๋ค. ๊ทธ๊ฐ ์กฐ์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
์ค๋ณต ์์
์ ํผํ์ญ์์ค.
2016๋
1์ 19์ผ ํ์์ผ ์ค์ 11:42 Dan McLaughlin [email protected]
์ผ๋ค:
๋๋ Benoit๊ฐ ๊ธฐ๋ฅ์ ์ค์ค๋ก ํ ๋นํ๊ธฐ ๋๋ฌธ์ ์ถ์ธกํ์ง๋ง
๋น์ ์ ๊ทธ๊ฒ์ ์ป์๋ค Junli! ์ด๋ฉ์ผ์ด๋ ํฌ๋ผ ์ค๋ ๋๋ก ์์ํ ์ ์์ต๋๋ค.
์ดํด ๊ด๊ณ์?โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172963537
.
๋ด๊ฐ ๊ด์ฌ. ๋ก๋๋งต์ด ์์ต๋๊น?
2016๋ 1์ 19์ผ ์ค์ 11์ 46๋ถ์ Martin Wicke [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@benoitsteiner ๋ ํ์ํ์ง ์์์ ์ ์๋ ์ดํด ๊ด๊ณ์์ ๋ํด ๋ ๋ง์ด ์๊ณ ์์ต๋๋ค.
์ด ์ค๋ ๋(๋๋ ์ด ๋ฌธ์ )์ ์์ต๋๋ค. ๊ทธ๊ฐ ์กฐ์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
์ค๋ณต ์์ ์ ํผํ์ญ์์ค.2016๋ 1์ 19์ผ ํ์์ผ ์ค์ 11:42 Dan McLaughlin [email protected]
์ผ๋ค:๋๋ Benoit๊ฐ ๊ธฐ๋ฅ์ ์ค์ค๋ก ํ ๋นํ๊ธฐ ๋๋ฌธ์ ์ถ์ธกํ์ง๋ง
๋น์ ์ ๊ทธ๊ฒ์ ์ป์๋ค Junli! ์ด๋ฉ์ผ์ด๋ ํฌ๋ผ ์ค๋ ๋๋ก ์์ํ ์ ์์ต๋๋ค.
์ดํด ๊ด๊ณ์?โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -172963537
.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ํ์ ํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
Tensorflow๊ฐ ์์กดํ๋ CUDA ์ข ์์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก์ด ์์ต๋๊น?
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ฆ๊ฐ์ ์ธ OpenCL ๋์์ ๊ฐ์ง ์ ์๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@hsaputra
clFFT, clBLAS(๋๋ ViennaCL)๊ฐ ์์ต๋๋ค. ๋์ ์์ฑ๊ธฐ๋ CPU ์์ฑ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ GPU๋ก ์ ์กํ๊ฑฐ๋ RNG์ฉ์ผ๋ก ๋ค๋ฅธ ๊ธฐ์กด ์ปค๋์ โโ์ฌ์ฉํ๋ ์กฐ๊ธ ๋ ๊น๋ค๋กญ์ต๋๋ค(์ปค๋ฐ๋ ์์).
๊ฐ์ฅ ํฐ ํจ์ ์ ๋ค์ ํจ์จ์ ์ธ ์ปจ๋ณผ๋ฃจ์ ๊ตฌํ(cuDNN๊ณผ ๊ฐ์ ๊ฒ)์ด ๋ ๊ฒ์ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ๋ํ ๊ฒฝํ์ด ์์ต๋๋ค.
https://github.com/BVLC/caffe/pull/2610
https://github.com/BVLC/caffe/pull/2195
https://github.com/amd/OpenCL-caffe
Tensorflow๋ Eigen์ผ๋ก ์ ์คํธ๋ฆผ๋ ํ ์ ํ์ฅ์ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋์ Eigen์ ๋ํ Opencl/Sycl ์ง์์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ์ค๋ ๋ ๋ณด๊ธฐ
@naibaf7 ๊ฐ์ฌํฉ๋๋ค. ์, ํ์ฌ OpenCL์ฉ cuDNN์ ๋ํ ์คํ ๊ฐ๋ฅํ ๋์์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์น์ฌ์ดํธ http://opencl.org ๋ ์ด์ ๊ฐ์ ์คํ ์์ค ํฌํ ํ๋ก์ ํธ๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค! ์ฐ๋ฆฌ๋ ํ์ฌ ์น์ฌ์ดํธ์ ํ์ํ ๋ชจ๋ ๋๊ตฌ๋ฅผ ์ค์นํ๊ณ ์์ผ๋ฉฐ https://github.com/OpenCL/ ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ํ ๊ณต๊ฐ์ด ์์ต๋๋ค. ๋์ค์ ์ฌ๋ฌ ์ ํ์ ํ๋์จ์ด๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ๋น๋ ์๋ฒ๋ฅผ ์ถ๊ฐํ๊ณ ๋ค์ ๋ถ์ผ์ ๋ํ ์ ๋ฌธ ์ง์์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์๋ง์ ํ๋์จ์ด์์ ์ต๊ณ ์๋๋ก ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ.
๋ค์ ์ฃผ์ GEGL์ ๋ํ ์ด์ ๊ณํ์ ์์ํ์ง๋ง ๊ธฐ๊บผ์ด ์ฌ๋ฌ๋ถ์ ์ง์ํฉ๋๋ค.
@bhack ํด๋น ์ค๋ ๋์์ ์ฌ๊ธฐ์์ @lukeiwanski ๊ฐ ๊ทธ๊ฒ์ ์กฐ์ฌํ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ธฐ๊บผ์ด ์์ ํ ์ ์๋ ์ฌ๋๋ค์ด ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์กฐ์ ํ๋ ค๋ฉด @benoitsteiner , @lukeiwanski ๋๋ @gujunli ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค. Benoit๋ ์กฐ์ฉํ์ต๋๋ค. ์๋ง๋ ํด๊ฐ ์ค์ผ ๊ฒ์ ๋๋ค.
์ด ์ด๋์ ํฐ๋ธ์ ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค.
์๋ ๋ชจ๋,
Eigen์ ํ ์ ๋ชจ๋์ OpenCL์ฉ SYCL๋ก ์ด์ํ๋ ๋ ธ๋ ฅ์ ์กฐ์ ํ ๊ฒ์ ๋๋ค. ์ด๋ฏธ ๋๋ถ๋ถ ์๋ํ๋ ๊ฒ์ด ์์ง๋ง ์์ง ๊ฒํ ํ ์ค๋น๊ฐ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ํธํฉ๋๋ค. ์ฝ๋ ๊ธฐ๋ฐ์ ๋ํ ์นจ์ ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค. SYCL์ eigen์ด ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ ๋จ์ผ ์์ค C++ ํ ํ๋ฆฟ ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค.
๋ก๋๋งต ๋์์ธ์ด ์งํ ์ค์ด๋ฏ๋ก ๋๋ฌด ์ค๋ ๊ฑธ๋ฆฌ์ง๋ ์์ ๊ฒ์ ๋๋ค.
๊ฐ์ฌ ํด์,
๋ฃจํฌ
@lukeiwanski ์ ์คํธ๋ฆผ๊ณผ ์์ ์ค์ด๊ฑฐ๋ ์ฐ๋ฝ ์ค์ ๋๊น? Eigen์ ์ ์คํธ๋ฆผ์์ ์น์ธ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
+1
์ข์ ์์ @lukeiwanski , ๋์์ด ํ์ํ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
๊ฐ๋ฐ์/์ฐ๊ตฌ์์ด ์ฌ์ฉํ ์ ์๋ SYCL ๊ตฌํ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค ํ๋ซํผ์์?
@lukeiwanski SYCL์ Eigen๊ณผ ๊ด๋ จ๋ ํ ํ๋ฆฟ ๋ฉํํ๋ก๊ทธ๋๋ฐ์ ์์ ๊ณ ๋ คํ ๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๋ด ์์ ์ ์ ๊ฒฝ๋ง๊ณผ ์ ํ ๋์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ์ป์ OpenCL ๊ฒฝํ์ด ์๋ ์๋ จ๋ C++ ๊ฐ๋ฐ์์ ๋๋ค. ์ ๋ ์ด ๋ ธ๋ ฅ์ ๋๊ณ SYCL๊ณผ ํจ๊ป ๊ฐ๋ฐ์ ์์ํ๊ณ ์ถ์ต๋๋ค.
@bhack ์ฐ๋ฆฌ๋ @benoitsteiner ์ ์ ์ดํ๊ณ ์์ง๋ง ๋๋ฌด ๋ง์ ๋ ธ๋ ฅ์ ํฌ์ํ๊ธฐ ์ ์ ์ ์คํธ๋ฆผ ์ ์ง ๊ด๋ฆฌ์์ ์ ์์ ๋ํด ๋ ผ์ํ ๊ฒ์ ๋๋ค.
@DanMcLaughlin , @ville-k ์ฐ๋ฆฌ๋ SYCL, ComputeCpp(https://www.codeplay.com/products/computecpp) ๊ตฌํ์ ๊ฐ๋ฐ ์ค์ ๋๋ค. ๋ ์์ธํ ์ ๋ณด๋ฅผ ์ํ์๋ฉด ์ ํ๋กํ์ ์๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํตํด ์ ์๊ฒ ์ฐ๋ฝํด ์ฃผ์๊ฒ ์ต๋๊น?
@lukeiwanski ๊ณํ์ ๊ดํ ์ ๋ฐ์ดํธ/์ถ์ ์ด ์์ต๋๊น?
+1.
๋
ธํธ๋ถ์ AMD GPU์ Intel GPU๊ฐ ์์ต๋๋ค. ๋ ๋ค OpenCL ๋๋ผ์ด๋ฒ๊ฐ ์๊ณ AMD์ ์ง์์ด ํจ์ฌ ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ 2๊ฐ์ OpenCL ์ฅ์น๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง ๊ฒ์
๋๋ค. OpenCL ์ฅ์น๋ก ํ์ฅํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
๊ด์ฌ์ ๊ฐ์ ธ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
์ด ์์ ์์ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ํ๋ ์ด๋ค ๊ฒ๋ ํ๊ท๋ฅผ ๋์
ํ์ง ์๋๋ก ํ
์คํธ ์ธํ๋ผ๋ฅผ ์ค์ ํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ @benoitsteiner ์ ์ฐ๋ฝํ์ฌ ๊ทธ๊ฐ ์ง๊ธ๊น์ง ํ ์ผ๊ณผ ์ผ์นํ๋์ง ํ์ธํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์์ง ํตํฉ ํ๋ก์ธ์ค๋ฅผ ์ํ ๋ก๋๋งต์ ์์ฑ ์ค์ ๋๋ค. ๋ช ํํ ํด์ผ ํ ๋ช ๊ฐ์ง ๋น์ฆ๋์ค ์ธ๋ถ ์ฌํญ์ด ์์ผ๋ฏ๋ก ๋ช ์ฃผ ์์ ์๋ฃํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ฌํด ๋ง๊น์ง OpenCL์ Eigen์ ํตํด TensorFlow๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฌ ํด์,
๊ด์ฌ์๋. ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค.
์ข์ต๋๋ค. ์ค์ ๋ก Google ๋ด๋ถ์ ์ผ์ข ์ ๋๊ธฐํ๋ฅผ ์ฌ์ฉํ๋ Codeplay์ ๋ ธ๋ ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ์ AMD์ Intel ๊ฐ์ ์์ ์ญํ ์ ๋ฌด์์ ๋๊น?
/cc @keryell SYCL/FPGA ์ธ๊ณ์์ ์ด์ ๋ํ ๊ด์ฌ์ด ์๋ ๊ฒฝ์ฐ
์ต๊ทผ์ ์ด ํ ๋ก ์ ๋ ๋ง์ ๊ธฐ์ฌ๋ฅผ ํ์ง ๋ชปํ ๊ฒ์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ์ง๋ 2์ฃผ ๋์ ์ ์ ์๊ฐ ๊ฐ๋ ์ฐผ์ต๋๋ค.
TensorFlow ์ธก์์ OpenCL ์์ ์ ์กฐ์ ํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ์ ํ์ฌ ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ ธ๋ ฅ์ ๊ตฌ์กฐํํ๋ ๋ฐ ๋์์ด ๋๋๋ก [email protected]์ด๋ผ๋ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์์ต๋๋ค.
@bhack ํ์คํ FPGA์ ๊ณ ๊ธ C++์ ๊ด์ฌ์ด ์์ต๋๋ค :-)
TensorFlow๋ triSYCL์ ๋ํ ์ข์ ๊ฒ์ฆ ์ฌ์ฉ ์ฌ๋ก์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ฌ๊ธฐ ๋๊ตฐ๊ฐ๊ฐ ์ด ์ฃผ์ ์ ๋ํ ์ธํด์ญ์ ์ฐพ๊ณ ์๋ค๋ฉด ๋ช ๊ฐ์ง ์ง์ฑ
์ด ์์ต๋๋ค. ๋ด๊ฐ ๊ทธ๋ค์ ์น์ฌ์ดํธ๋ฅผ ์ ๋ขฐํ๋ค๋ฉด Codeplay๋ ๋ช๋ช ์ฌ๋๋ค์ ์ฐพ๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@karlrupp ๋ฐ @hughperkins ์๊ฒฌ์ ์ ๋ง ๊ด์ฌ์ด ์์ต๋๋ค. ๊ทธ๋ค์ด ์๋ก์ด Google ๊ทธ๋ฃน์ ๋ํ ํ ๋ก ์ ์ฐธ์ฌํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@benoitsteiner ์ ๋ฐ์ดํธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. @KhronosGroup ์ ๋ชจ๋ ๊ด๋ จ ํํธ๋(Google, Nvidia, Amd, Intel, Codeplay, Xilinx ๋ฑ)๊ฐ ํ์คํ๋ ๋ฐฉ์์ผ๋ก API์ ๊ฐ์ cudnn์ ํ๋ณดํ๋ค๋ฉด ํ๋ฅญํ ๊ฒ์ ๋๋ค. ์ผ์ข ์ Khronos openvx ์ปดํจํฐ ๋น์ ํ์คํ ๋ ธ๋ ฅ์ด์ง๋ง ๋ฅ ๋ฌ๋์ ์ํ ๊ฒ์ ๋๋ค.
@bhack ์ด๋ค ์๋ก์ด Google ๊ทธ๋ฃน์ธ๊ฐ์?
๊ทธ ์ธ์ OpenCL๊ณผ CUDA๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด ๋๋ฌด ๋ค๋ฆ ๋๋ค. CUDA๋ ํ ํ์ฌ๊ฐ ๋ชจ๋ ๊ฒ์ ์์ ํ ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ ๊ทธ๋๋ก ์๋ํ๋ฏ๋ก ๋ฐ์ด๋๋ฆฌ Blob์ ํฌํจํ ์ ์์ผ๋ฉฐ ์ต์ข ์คํ ํ์ผ์ ๋ฌด์์ด ์๋์ง ๋๊ฐ ์ ์ ์์ต๋๋ค. SyCL ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๊ณ (๋ด ๊ฑฑ์ ์ด ์์ต๋๋ค...) SyCL ์ปดํ์ผ๋ฌ ๊ณต๊ธ์ ์ฒด๊ฐ ๋ชจ๋ ๊ฐ๋ฅํ ๋์ ์ํคํ ์ฒ๋ฅผ ์์ ํ ์ ์ดํ์ง ์๋ ํ OpenCL์์๋ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค(์ค์ ๋ก ๊ฐ๋ฅ์ฑ์ด ์๊ฑฐ๋ ๋ถ๊ฐ๋ฅํจ). ์ ๋ฐ์ ์ผ๋ก, ์ ์๊ฐ์๋ ์ข์ OpenCL ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ๊ธฐ ์ ๊ธฐ ์ฝ๊ฐ์ ์กฐ์ ์ด์์ด ํ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์๋ง๋ ๋น์ ์ด ๋ฃ๊ณ ์ถ์๋ ๊ฒ์ ์๋์ง๋ง ๋น์ ์ ๋ด ์๊ฒฌ์ ๋ฌผ์์ต๋๋ค :-)
@karlrupp ๊ตฌ๊ธ ๊ทธ๋ฃน์ ๋์ https://github.com/tensorflow/tensorflow/issues/22#issuecomment -176406416์ ์ฐธ์กฐํ์ธ์.
์ฌ๋ฌ ๋ฐฑ์๋(CPU, GPU, MIC)์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ธํฐํ์ด์คํ๋ ViennaCL์ ๋ํ ํ๋ฅญํ ๊ฒฝํ์ด ์๊ธฐ ๋๋ฌธ์ ๊ทํ์ ์๊ฒฌ์ ๋ฌผ์์ต๋๋ค. Tensorflow๋ Eigein ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ Google ์
์คํธ๋ฆผ์์ ์ ๊ณตํ ์๋ก์ด ํ
์ ํ์ฅ์ ์์กดํฉ๋๋ค(CUDA ๋ฐฑ์๋์๋ง ํด๋น). ๋๋ ๊ทธ๋ค์ด ์ด ๊ฐ๋ฐ ๊ธฐ๊ฐ ๋์ ViennaCL์์ ์ด๋ฏธ ๊ฒช์๋ ๋ชจ๋ ํจ์ ์ ๋ง์ด ๊ฒฝํํ์ง ์์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@bhack ์ ํฌ๋ ํ์ฌ ์ด๋ฒ ์ฃผ ์์ ํ์์ ๋๋ฉด ํ์๋ฅผ ํ๊ณ ์์ง๋ง DNN ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ด์ผ๊ธฐ์ธ์ง ์๋์ง๋ ๋งํ ์ ์์ต๋๋ค. :-)
@keryell ์์ ํ์์ ๋์๋ฅผ ์ํด ๋ ธ๋ ฅํ์ญ์์ค ;)
@karlrupp ๋ง์ต๋๋ค. OpenCL๊ณผ CUDA๋ ๋๋ฌด ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์๋ฅผ ๋ค์ด CUDA ๋ฐ OpenMP 4.5์์ ๋ณผ ์ ์๋ ๋จ์ผ ์์ค ์ธก๋ฉด์ ์ํํธ์จ์ด ์์ง๋์ด๋ง ๊ด์ ์์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค. ์ด๊ฒ์ด ์ค์ C++ ํ๋ก๊ทธ๋๋จธ๋ฅผ ์ํ SYCL ํ์ค์ด ์๋ ์ด์ ์ ๋๋ค. SYCL์ ์ธ์ด ํ์ฅ์ด ์๊ณ ์ผ๋ถ OpenMP ์ธก๋ฉด(์์ )์ด ์๋ ์คํ ๋ก์ด๋์์ CUDA๋ก ๋ณผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ธ SYCL ์ฅ์น ์ปดํ์ผ๋ฌ๋ SPIR-V ์ปค๋์ ์์ฑํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
์ด์์ฑ์ ๋ํ ๊ทํ์ ์ฐ๋ ค๋ OpenCL 2.1 ๋ฐ Vulkan์์ ๋ฐ๋์ ์์ฉํด์ผ ํ๋ SPIR-V ํ์ค(Vulkan ๋ฐ OpenCL ์ธ๊ณ์์ nVidia PTX/AMDIL/...์ ํด๋์ฉ ๋๋ฑ๋ฌผ)์ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๋ฐ๋ผ์ SPIR-V๋ฅผ ์์ฑํ๋ ํ๋ฐํธ ์๋๊ฐ ์๋ ๊ฒฝ์ฐ ์คํํ ํ๋์จ์ด์ ์ธ๋ถ ์ฌํญ์ ๋ํ ํน๋ณํ ์ง์์ด ํ์ํ์ง ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. LLVM IR๊ณผ SPIR-V ์ฌ์ด์ Khronos ์คํ ์์ค ์๋ฐฉํฅ ๋ณํ๊ธฐ๊ฐ ์์ผ๋ฏ๋ก ์์ ํ ์๋ก์ด ์์ญ์ด ์ด๋ฆฝ๋๋ค.
@keryell ๋๋ SPIR-V๊ฐ ํ ๊ฑธ์ ๋ ๋์๊ฐ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์ ํ ์งํ ์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์ง๋ ์์ต๋๋ค.
์คํํ ํ๋์จ์ด์ ์ธ๋ถ ์ฌํญ์ ๋ํ ํน๋ณํ ์ง์์ด ํ์ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ ํํ ๋์ผํ๋ค๊ณ ์ฃผ์ฅํ๋ OpenCL 1.0 ๋ง์ผํ ์ ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ์ ๋๊น? ์ต๋ ์ฑ๋ฅ์ ๋ชฉํ๋ก ํ๋ค๋ฉด _ํญ์_ ๊ธฐ๋ณธ ํ๋์จ์ด์ ์ธ๋ถ ์ฌํญ์ผ๋ก ๋ด๋ ค๊ฐ์ผ ํฉ๋๋ค. ์ด๊ฒ์ ํนํ ๋น ๋ฅธ ํ ์ ์์ถ์ ๋งฅ๋ฝ์์ ๊ทธ๋ ์ต๋๋ค.
... @scott-gray๊ฐ ๋ค์จ ์ผ๋ก ์์ฐํ ๊ฒ์ฒ๋ผ
@karlrupp
์ด๊ฒ์ ์ ํํ ๋์ผํ๋ค๊ณ ์ฃผ์ฅํ๋ OpenCL 1.0 ๋ง์ผํ ์ ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ์ ๋๊น?
ใ . :-)
์ต๋ ์ฑ๋ฅ์ ๋ชฉํ๋ก ํ๋ ๊ฒฝ์ฐ ํญ์ ๊ธฐ๋ณธ ํ๋์จ์ด์ ์ธ๋ถ ์ ๋ณด๋ก ์ด๋ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ํนํ ๋น ๋ฅธ ํ ์ ์์ถ์ ๋งฅ๋ฝ์์ ๊ทธ๋ ์ต๋๋ค.
๋ฌผ๋ก , ๊ทธ๋ฌ๋ 2์ฐจ ์ต์ ํ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ์ฒด ํ ํ๋ฆฟ C++ ์ฝ๋์ ์๋น ๋ถ๋ถ์ ๊ฐ์ํ๋ ๋ฐฉ์์ผ๋ก ์คํํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
์ต์ ํ๋ฅผ ์ํด ์ต์ ํ๋ ๋ฐ์ด๋๋ฆฌ ์ปค๋์ NervanaSys๋ก ๊ฟฐ๋งค๊ฑฐ๋ SYCL์ด ์์ C++์ด๋ฏ๋ก asm("...")์ ๋ง์ #ifdef์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋์ ์ํคํ ์ฒ๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค. :-) ์ฆ, SPIR-V๋ ๊ทธ ์์ฒด๋ก ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ธ๋ผ์ธ VHDL ๋๋ Verilog๋ฅผ ์ด๋ ์์ ์ ๋ฃ์ ์ ์๋ ์ด์ ๋ฅผ ์ ์ ์์ต๋๋ค. :-)
๊ทธ๋ฌ๋ ๋ณด๋ค ๊ตฌ์ฒด์ ์ผ๋ก, ์ต๊ทผ์ ๋์ ๋ ํ์ ๊ทธ๋ฃน ์์ ์ ์ด์ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ข์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ด๋ฉฐ ๊ฐ๋จํ ๋ด์ฅ ad-hoc ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋์์ด ๋ ์ ์์ต๋๋ค.
C++์๋ X ๋๋ Y ํ๋์จ์ด์ ๋ ์ ํฉํ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด clBLAS ๋๋ ๊ธฐํ ํ๋ ์์ํฌ์์ ์ฌ์ฉ๋๋ ๋๋ถ๋ถ์ ์ฝ๋ ์์ฑ๊ธฐ๋ฅผ ๋์ฒดํ ์ ์๋ ํฅ๋ฏธ๋ก์ด ๋ฉํํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
๋ํ C++17์ N4355๋ ์กฐ๋ง๊ฐ ๊ฒ์์ ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
@karlrupp , @bhack tensorflow ์ ๊ทผ ๋ฐฉ์์ ์ผ๋ฐ์ ์ธ ์ ๊ฒฝ๋ง์ ํ์ํ ๋๋ถ๋ถ์ ์์ ์ ๋ํด ํ๋์จ์ด ์ถ์ํ(ํ ์ ๋ชจ๋)์ ์์กดํ๋ ๋ฐ๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์์ ์๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: cudnn)์ ์์กดํฉ๋๋ค. ์ ๋ง ์ค์ํ ์ฑ๋ฅ์ ๋๋ค. ํ๋์จ์ด ์ถ์ํ๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ๋๋ถ๋ถ์ TensorFlow ์์ ์ ํ ๋ฒ๋ง ๊ตฌํํ๊ณ ์ถฉ๋ถํ ์ฑ๋ฅ ์ด์์ ๊ฐ์๊ธฐ์์ ์คํํ ์ ์์ต๋๋ค.
@bhack ์ ์ ๋ ๋ค์ฐจ์ ๋ฐฐ์ด์ ์ข์ํฉ๋๋ค. ๋ํ ์ฐ๋ฆฌ์ ๊ด์ฌ ์์ญ์๋ ์ด๋ฌํ ๋ฌธ์ ์ ๊ด์ฌ์ด ์๋ ๋ชจ๋ ์ฌ๋๋ค ์ด ํ์ค์ผ๋ก ์๋ ดํ๋๋ก ํ๋ C++ ์์ํ์ SG14๊ฐ ์์ต๋๋ค.
https://groups.google.com/a/isocpp.org/forum/#!forum/sg14
๋ฌผ๋ก SYCL์ ๋
ผ์ ์ค์
๋๋ค. :-)
@benoitsteiner ์ฃผ๋ก ํ๋ง ๋ฐ ์ปจ๋ณผ๋ฃจ์ ์ ์ํด cudnn์์ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ ๊ณต๊ธ์ ์ฒด๊ฐ ์์ฒด ๋ฐ์ด๋๋ฆฌ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์์ ์ ์ํ ์์ฒด ํ๋์จ์ด๋ก API๋ฅผ ์์ฐํ๋ค๋ฉด ํ์ฅ ๊ฐ๋ฅํ ์ ๊ทผ ๋ฐฉ์์ด ์๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ค์ํ ์ผ๋ถ API ํธ์ถ์ ์ด๋ค ์์ผ๋ก๋ ํ์คํํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@keryell ํนํ vector/SIMD ํธ์ถ ์์ ์์ ์๋ก์ด SG14 c++์ Matrix/Tensor์ ๋ํ ์ ๋ง ํฅ๋ฏธ๋ก์ด ์ฃผ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฌด๋ ์ปจ๋ณผ๋ฃจ์ , ํ๋ง ๋ฐ ๊ธฐํ ์ ์ฉํ "์์ ํ๋" ๋ฅ ๋ฌ๋ ์ธํฐํ์ด์ค์ ๋ํด ์ด์ผ๊ธฐํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ ์ด ํน์ ํ์คํ ํ์ ๊ทธ๋ฃน์๋ Nvidia, Intel, Amd, CodePlay ๋ฑ์ ์ฌ๋๋ค์ด ์์ง๋ง ๋ค๋ฅธ ๊ทธ๋ฃน์ ์๋ ๊ฒฝ์ฐ์๋ Google์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
:+1:
@bhack ์, SG14์๋ ์์ง ๊ธฐ๊ณ ํ์ต ์คํ์ผ ์ ์์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐธ์ฌ๋ ์ด๋ ค ์์ผ๋ฏ๋ก ๋ช ๊ฐ์ง ์ ์์ ๋ณด๋ผ ์ ์์ต๋๋ค. :-) ํ์ง๋ง ์๋ง๋ SG6(์ซ์ ์ฃผ์ )์ด ๋ ์ ์ ํ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๋ค์ด ์์ง ์์ ์ ๋ฉ์ผ๋ง ๋ฆฌ์คํธ/ํฌ๋ผ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
@gujunli OpenCL Caffe๋ Android์์ ์คํ๋๋์? ์ฌ๊ธฐ์ ์ง๋ฌธํด์ ์ฃ์กํ์ง๋ง ๋ค๋ฅธ ๊ณณ์์ ์ง๋ฌธํ ์ ์๋ ๊ณณ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค. :) Android ๊ธฐ๊ธฐ์์ ์คํ๋๋ ๋ฅ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง GPU๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ํ์ฌ๋ก์๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. (ํ ๋ ธ์ผ๋ฉด ๋งํด์ค!)
@krikru
๊ณต์(๊ทธ๋ฌ๋ ์คํ์ ์ธ) OpenCL Caffe ๋ธ๋์น๋ Android GPU์์ ์คํ๋๋๋ก ๋ง๋ค ์ ์์ง๋ง ํ์ฌ ์ฑ๋ฅ์ ์ต์ ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ์ต๋๋ค. https://github.com/sh1r0/caffe-android-lib/issues/23 ๋ฐ https://github.com/BVLC/caffe/tree/opencl์ ์ฐธ์กฐํ์ญ์์ค.
cudnn์ ์ง์ ํ ๋์์ Tensor, NdConvolution, NdPooling ์ฐ์ฐ์ ๋ฐ (์๋ง๋) ํ์คํ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์๋ ๋ค๋ฅธ ์ฐ์ฐ์๋ฅผ ์ง์ํ๋ OpenVx ํ์ค ๊ฐ์ฒด ์ ํ์ฅ์ผ ์ ์์ต๋๋ค.
๋ํ cudnn ํ์ ๋ชจ๋ ๋ฆด๋ฆฌ์ค์์ ์ด๋ค ์๋ก์ด API์ ์ฐ์ฐ์๋ฅผ ๋์
ํ ์ง ์ ํํด์ผ ํฉ๋๋ค. ๋ฌผ๋ก ํ์ค์ cudnn ๋ฆด๋ฆฌ์ค๋งํผ ๋น ๋ฅด๊ฒ ์ด๋ํ ์๋ ์์ง๋ง ์ผ๋ถ ์์
๋ฐ ๊ฐ์ฒด์๋ ํ์คํํ๊ธฐ์ ์ถฉ๋ถํ "์ธ์ฉ ๊ธฐ๋ก"์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@hughperkins ํ์ฌ๋ก์๋ ๋ฅ ๋ฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ํ์ง ์์์ต๋๋ค. ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ฌ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋์ง ์์๋ณด๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ์ฐฐ์ ํ๊ณ ์์ต๋๋ค. Android์์ cltorch์ DeepCL์ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? Android ์ ์ฉ Torch ๊ตฌํ์ด ์๊ธฐ ๋๋ฌธ์ cltorch๊ฐ Android์์ ์๋ํ๋ค๊ณ ๊ฐ์ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Android์์ ์๋ํ๊ณ _๊ทธ๋ฆฌ๊ณ _ OpenCL์ ์ฌ์ฉํ๋ ๊ตฌํ์ด ์ด๋ฏธ ์์๋ค๋ฉด ์ ๊ทธ๋ฐ ๊ตฌํ์ ํ์๊น์? ํ์ง๋ง ๋ด๊ฐ ๋ ์ ์์์ด์ผ ํ์์ง๋ ๋ชฐ๋ผ.
@hughperkins ์ด๋ค ์ด์ ๋ก ๋๋ ํ ์น-์๋๋ก์ด๋ ๊ฐ ์๋๋ก์ด๋์ ๊ณต์ ํ ์น ๊ตฌํ์ด๋ผ๊ณ ์์ํ์ต๋๋ค. ์ฆ, cltorch๋ฅผ ํฌํจํ์ฌ ๋ค๋ฅธ ํ ์น ๊ตฌํ(์ ์ด๋ ๊ณต์์ ์ด์ง ์์)์ ์๋๋ก์ด๋์์ ์ํํ๊ฒ ์คํ๋ ๊ฐ๋ฅ์ฑ์ด ์์์ ์๋ฏธํฉ๋๋ค. ์ ๊ทธ๋ฐ ์๊ฐ์ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๋น์ฐํ ๋ง์ด ์ ๋๋ค.
์... Soumith ์ข ๋ฅ์ ์กฐ์ ํ๋ถ ๊ฐ๋ฐ. ๊ทธ๋ Facebook AI Research์์ ์ผํฉ๋๋ค. ๊ทธ๋์, ํ ์น-์๋๋ก์ด๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ Soumith์ ์ํ๊ธฐ ๋๋ฌธ์ ๊ณต์์ ์๋นํ ๊ฐ๊น๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ์ด์ ๋ก ์ฝ์ด์ ์ผ๋ถ๊ฐ ์๋ ์๋ ์์ต๋๋ค. ํด๋น ๋ฆฌํฌ์งํ ๋ฆฌ ๋๋ https://groups.google.com/forum/#!forum/torch7 ์์ ๋ฌธ์ ๋ก ์ง๋ฌธํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ค์ ๋ก Soumith๋ https์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ์ฌ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. //groups.google.com/forum/#!forum/torch7 , ์๋ง๋ ๊ฑฐ๊ธฐ์ ์ง๋ฌธ์ ๊ฒ์ํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค.
cltorch๋ฅผ ํฌํจํ์ฌ Android์์ ์ํํ๊ฒ ์คํ๋๋ ๋ค๋ฅธ Torch ๊ตฌํ(์ ์ด๋ ๊ณต์์ ์ด์ง๋ ์์)์ด ์์์ ์๋ฏธํฉ๋๋ค.
cltorch๋ ํ ์น์ ๊ตฌํ์ด ์๋๋๋ค. ํ๋ฌ๊ทธ์ธ์ด๋ฉฐ OpenCL์ ์ ๊ณตํฉ๋๋ค. ๋ ๋ค ํ์ํฉ๋๋ค.
cltorch๋ ํ ์น์ ๊ตฌํ์ด ์๋๋๋ค. ํ๋ฌ๊ทธ์ธ์ด๋ฉฐ OpenCL์ ์ ๊ณตํฉ๋๋ค. ๋ ๋ค ํ์ํฉ๋๋ค.
์, ์ค๋ช ๊ฐ์ฌํฉ๋๋ค.
@naibaf7 OpenCL Caffe ๋ธ๋์น์ AMD์ OpenCL Caffe ๊ตฌํ์ ์ด๋ฆ ์ธ์ ๊ณตํต์ ์ด ๋ ์์ต๋๊น? ๋์ ๋น๊ตํ๊ฑฐ๋ ์ฑ๋ฅ์ ์ฐจ์ด๊ฐ ์๋์ง ์๊ณ ์์ต๋๊น? OpenCL ๋ถ๊ธฐ๊ฐ ์ต์ ์ ์ฑ๋ฅ๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๊ณ ์๋๋ค. ๊ทธ๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ๋ฌด์์ด๋ฉฐ ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ ๋ฌด์์ ๋๊น? Android์์ ์๋ํ๋ ๊ฒ์ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ฃผ์ ๋ฅผ ๋ฒ์ด๋๊ณ ์์ต๋๋ค
@bhack ์, ์ด ์ค๋ ๋๋ฅผ ๊ฐ๋ก์ฑ์ ์ฃ์กํฉ๋๋ค. ์ด๋์์ ์ง๋ฌธ์ ํด์ผ ํ ์ง ๋ชฐ๋์ ๋ฟ์ ๋๋ค.
@krikru
Caffe ๋ธ๋์น์์ ์ด์ ๋ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ณ Android ๋ฐ OpenCL๋ก ํ๋๊ทธ๋ฅผ ์ง์ ํ์ญ์์ค. ๊ทธ๋ฌ๋ฉด ์ด์ ๋ํด ๋ ๋
ผ์ํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ํด์.
@keryell 3์์ ๋ค์ f2f SG14 ํ์๋ Google์์ ์ฃผ์ตํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๋ด๋ถ์ ํ ์ํ๋ก๊ฐ ์์ต๋๊น?
/cc @jfbastien
์๋ง๋ @benoitsteiner ๋ ํ์ง์ธ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅผ ์ ์์ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ด๋ฒคํธ ์ ์ ํ๋ก๋ฆฌ๋ค ์ญ์จ๋น์์ ์๋ง์ ์์ ํ C++ F2F๊ฐ ์์ต๋๋ค.
https://isocpp.org/files/papers/N4568.pdf
๋ถํํ๋ ๋๋ ๊ทธ๋ค ์ค ์ด๋ ๊ฒ์๋ ์ฐธ์ํ ์ ์์ต๋๋ค.
CppCon 2015 ์์ ๊ณ์ฐ ๋ฌผ๋ฆฌํ ๋ฐ ์์ฉ ์ํ์ ์ํ C++ ๋ค์ฐจ์ ๋ฐฐ์ด์ ๋ํด ๋ ผ์ํ๋์ง ์ฌ๋ถ๋ ์ ์ ์์ต๋๋ค.
+1
@bhack ๋ค์ฐจ์ ๋ฐฐ์ด์ ๋ํด ์ง์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํฅ๋ฏธ๋กญ๊ณ ์ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ง C++์์ ๊ทธ๋๋ก ๋น์คํ๊ธฐ์๋ ๋๋ฌด ์์์ ์ผ๋ก ๋ณด์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ ๋ Boost.MultiArray๋ฅผ ์ฌ์ฉํ๋ฉฐ Boost.MultiArray์ ์ธ๋ จ๋ ๋ฒ์ ์ด ๋ ์์ ์์ต๋๋ค.
WG21 ์๋ ๋ช ๊ฐ์ง ๋ ผ๋ฌธ ์ด ์์ต๋๋ค. ๋ณด์๋ค์ํผ Google์ @jfbastien์ WG21 ์์ ์ผ๋ถ ํ๋์ ํ์ผ๋ฉฐ 3์์ Google์์ SG14 f2f ํ์๋ฅผ ์ฃผ์ตํ๋ ๋ฐ ๋์์ ์ฃผ๊ธฐ๋ ํ์ต๋๋ค.
@bhack @keryell ์ธ๋ถ ์ฌํญ์ด OpenCL/tensorflow์ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ํ ๋ก ์ SG14 ๋ฉ์ผ๋ง ๋ฆฌ์คํธ ๋ก ๊ฐ์ ธ๊ฐ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์, ๋ ์ด์ ๋ชจ๋ ์ธ๋ถ ์ฌํญ๊ณผ ํจ๊ป ๋ ์ด์ ์๊ฒฉํ๊ฒ ์ ํ๋์ง ์์ต๋๋ค. Eigen/sycl ์ง์ ์ธ cudnn ํธ์ถ ๊ณํ์ด ์์ต๋๊น?
+1 ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์ฃผ์ . ๊ณง ์ถ์๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด ์ค๋ ๋๋ ๋งค์ฐ ํฅ๋ฏธ๋กญ์ต๋๋ค. ๋๋ ์๋๋ก์ด๋์์ ์๋ํ๋ ์นดํ๋ฅผ ์ป์ผ๋ ค๊ณ ๋ ธ๋ ฅํด ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋๋ผ์ด ๊ฒ ๊ฐ์ต๋๋ค. Mali gpu๋ก ์คํ๋๋ caffe๋ cpu๋ณด๋ค 2-3๋ฐฐ ๋๋ฆฌ์ง๋ง ์ฝ 4-5๋ฐฐ ๋ ์๋์ง ํจ์จ์ ์ ๋๋ค. ํ ์คํธ๋ Galaxy S6(Mali T760, Peak Performance 200 GFlops)์์ ์คํ๋์์ต๋๋ค.
GEMM์ caffe์์ ์ปจ๋ณผ๋ฃจ์ ์ ํต์ฌ์ด๋ฏ๋ก Android์์ ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ViennaCL์ ์ผ๋ถ ๊ฐ๋จํ ์ปค๋๋งํผ ํจ์จ์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ ํฐ ํ๋ ฌ(2k x 2k)์ ๋ํด GPU๋ฅผ CPU๋งํผ ๋น ๋ฅด๊ฒ ์คํํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก GPU๊ฐ ํจ์ฌ ๋ ๋น ๋ฅผ ๊ฒ์ผ๋ก ์์ํ๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ฌ์ ํ โโ์ง๊ด์ ์ด์ง ์์ต๋๋ค.
๋ณด๋ค:
https://github.com/strin/mocha-profile
์ปค๋ ๊ตฌํ์ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
GEMM์ฉ OpenCL ์ปค๋: https://github.com/strin/gemm-android
์ด๊ฒฌ์๋ ์ฌ๋?
@strin ์ด ์ค๋ ๋ https://community.arm.com/thread/4935๋ฅผ ์ด๋ฏธ ํ๋ก์ฐํ์ จ์ต๋๊น?
@bhack ๊ณต์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ์ค๋ ๋๋ ๋งค์ฐ ํฅ๋ฏธ๋กญ๊ฒ ๋ณด์ ๋๋ค. ์ ์ํ ๋๋ก DVFS๋ฅผ ์ผ๋ ค๊ณ ํ์ง๋ง ViennaCL์์ sgemm์ ๋ํด ์ค์ํ ์ฑ๋ฅ์ด ๋ํ๋์ง ์์์ต๋๋ค.
+1
@strin MALI SDK์์ ๋ง์ง๋ง sgemm ๋ฒ์ ์ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น?
Tensorflow๊ฐ ๋ฆ์์ต๋๋ค! ์ ์
https://gist.github.com/jarutis/ff28bca8cfb9ce0c8b1a
์ด๊ฒ์ ์ ๋ต์ ์ํฅ์ ๋ฏธ์น ๊ฒ์
๋๋ค: http://lists.llvm.org/pipermail/llvm-dev/2016-March/096576.html?
ํธ์งํ๋ค:
"StreamExecutor๋ ํ์ฌ ๋๋ถ๋ถ์ Google ๋ด๋ถ GPGPU ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐํ์์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ด ์ค๋
์ท์ GPGPU ๋ฐํ์ ์ญํ ์ ํ๋ ์คํ ์์ค TensorFlow_ ํ๋ก์ ํธ์ ํฌํจ๋์ด ์์ต๋๋ค."
+1
์์ ํ๋ ์ฌ๋๋ค์ด tensorflow๊ฐ 1.0์ ๊ฐ๊น์์ง ๋๊น์ง CUDNN ๋์ ๋ฌธ์ ๋ฅผ ๊ทน๋ณตํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@martinwick ์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋๋ ๋น์ ์ ์ปค๋ฐ์ด ์ด๊ฒ์ ๊ณ ์น ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ์ ์ฅ์์์ ํญ์ ๋์ผํ ์ปค๋ฐ ์ฃผ์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.) https://github.com/tensorflow/skflow/issues/22
์ค ๊นํ๋ธ
@vrv ์ด์ ๊ทํ๊ฐ ์ฐ๋ฆฌ์๊ฒ ๋งค์ฐ ํต๋ณด๋ฅผ ํ์์ผ๋ ์คํธ๋ฆผ ์คํ์ ์ ๋ต์ ๋ํ ํผ๋๋ฐฑ์ ์ฃผ์ค ์ ์์ต๋๊น? ;)
OpenCL ์ง์ ๋ถ์กฑ์ ํฌํจํ์ฌ ๋ชจ๋ ๊ฒ์ ๋ํด GitHub๋ฅผ ๋น๋ํ ๊ฒ์ ๋๋ค. ;)
@benoitsteiner ๊ฐ ๋ ๋ง์ ์๊ฒฌ์ ์ ์ํ ์ ์์ต๋๋ค. '์คํธ๋ฆผ ์งํ์' ์ ๋ต์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ฌ ์คํธ๋ฆผ ์คํ๊ธฐ ๋ฒ์ ๊ณผ CuDNN ๋ฐ Eigen์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๋ชจ๋ ํจ๊ป ์ ์๋ํ๋ฏ๋ก OpenCL ์ธก๋ฉด์์ ๊ณํ์ด ์ด๋ป๊ฒ ๋ณ๊ฒฝ๋์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ด ๋ง์:
"StreamExecutor๋ ๋ฌด์์
๋๊น?
==========================
StreamExecutor ๋ CUDA ๋ฐ OpenCL ํธ์คํธ ์ธก ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ(๋ฐํ์)์ ๋ํ ํตํฉ ๋ํผ์
๋๋ค. ํธ์คํธ ์ฝ๋๊ฐ ๋์ผํ๊ฒ ์๋ํ๋ ๋ฐ์ดํฐ ๋ณ๋ ฌ ์ปค๋์ ์ฌ์ฉํ๋ CUDA ๋๋ OpenCL ์ฅ์น๋ฅผ ๋์์ผ๋ก ํ ์ ์์ต๋๋ค."
๋ฏธ๋ฆฌ ์ค๋น๋ ์์
===================
StreamExecutor๋ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ๋ณ๋ ฌ ์์
์ ์ํด ๋ฏธ๋ฆฌ ์ ์๋ ์ฌ๋ฌ ์ปค๋์ ์ ๊ณตํฉ๋๋ค.
์ง์๋๋ ์์
ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@keryell ์๋ ํ์ธ์, ์ ๋ Xilinx C++ ๋๋ OpenCL๊ณผ ๊ฐ์ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ FPGA์์ TensorFlow๋ฅผ ๊ตฌํํ๋ ๋ฐ๋ ๊ด์ฌ์ด ์์ต๋๋ค. ๊ณํ์ด ์๋ค๋ฉด ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค.
@henline Opencl ๋ฐ ๊ด๋ จ Canned์์ StreamExecutor์ ์ญํ ์ด ๋ฌด์์ธ์ง ์ค๋ช
ํ ์ ์์ต๋๊น?
Tensorflow์ ๋ํ ์์
. ๋๋ ์ด๊ฒ์ด Eigen ๋ฐ cudnn(๋์ฒด?)์ SyCL ๊ณํ๊ณผ ์ด๋ป๊ฒ ํตํฉ๋๋์ง ์ฌ์ ํ ์ ์ ์์ต๋๋ค.
:+1: ์ ๋ ์ด์ ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค.
@bhack StreamExecutor๋ CUDA ๋ฐํ์ ๋ฐ ์ผ๋ถ CUDA ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: cublas ๋๋ cudnn)์ ๋์ผํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ์ฐ๋ฆฌ๊ฐ Eigen์ ์ฌ์ฉํ๋ GPU ์ปค๋์ ์์ฑํด์ผ ํฉ๋๋ค.
@benoitsteiner ๊ทธ๋์ ์ฌ์ ํ ๋ ๊ฐ์ ์ปค๋์ ์์ฑํด์ผ ํฉ๋๊น? ํ๋๋ CUDA์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ Opencl์ฉ์ ๋๊น?
@benoitsteiner ๋ด๋ถ์ ์ผ๋ก ์์ง tensorflow/tensorflow/stream_executor/opencl/ ๋์๋ฌผ์ด ์๋์? "Canned operator"๋ ์ด๋ป์ต๋๊น?
@bhack Eigen์ ์ฌ์ฉํ๋ฉด ํ ๋ฒ ์ํํ๋ ค๋ ๊ณ์ฐ์ ์ค๋ช
ํ๋ ํํ์์ ์์ฑํ ์ ์์ผ๋ฉฐ CPU์์ ํด๋น ํํ์์ ํ๊ฐํ๋ ์ปค๋(ํ๊ฐ์๋ผ๊ณ ํจ)์ ์๋์ผ๋ก ์์ฑํ๊ณ CUDA ์ฅ์น์์ ํํ์์ ํ๊ฐํ๋ ๋ค๋ฅธ ์ปค๋์ ์์ฑํ ์ ์์ต๋๋ค. Eigen์์ OpenCL์ ์ง์ํ๋ฉด(๊ฑฐ์ ๊ฐ๊น์์ง๊ณ ์์) OpenCL ์ปค๋๋ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.
์ฑ๋ฅ์ด ์ค์ํ ๋ช ๊ฐ์ง TensorFlow ์์
(์: ์ปจ๋ณผ๋ฃจ์
)์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ต์ ํ๋ ์ปค๋ ๋ฐ/๋๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ด๋ฌํ ์์
์ ๋ํ ์ข์ OpenCL ๊ตฌํ์ด ํ์ํฉ๋๋ค.
:+1:
https://bitbucket.org/benoitsteiner/eigen-opencl์์ ๋ ๋ง์ ์ฝ๋๋ฅผ ํธ์ํ ๊ณํ์ด ์์ต๋๊น? sycl ์ปดํ์ผ๋ฌ๋ ์ด๋ป์ต๋๊น? ๊ณต๊ฐ๋ ์คํ ์์ค GPU ๋์ ๊ตฌํ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
@bhack @benoitsteiner
์ ๋ ๊ณง Caffe์ OpenCL์ ๋ํ cuDNN ๋์ฒดํ(์ด ์์
์ ์ํํ๋ ๋ฐ ๊ฐ์ฅ ์ค์ํ ์ฑ๋ฅ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ปจ๋ณผ๋ฃจ์
๋ถ๋ถ๋ง)์ ์ถ์ํ ์์ ์
๋๋ค. ์๋ง๋ Tensorflow ํฌํธ์๋ ์ฌ์ฉ๋ ๊ฒ์
๋๋ค.
@bhack : Codeplay๋ opencl ์ธก๋ฉด์์ ๋ง์ ๋ฐ์ ์ ์ด๋ฃจ์์ต๋๋ค. ์์ผ๋ก ๋ช ์ฃผ ๋์ https://bitbucket.org/benoitsteiner/eigen-opencl ์ ๋ํ ๋๋์ ์ธ ํธ์๋ฅผ ๊ธฐ๋ํด ์ฃผ์ญ์์ค.
@naibaf7 : Convolution ์ฐ์ฐ์ ๋น ๋ฅธ ๊ตฌํ์ TensorFlow์์ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค. ๊ธฐ๋๋ฉ๋๋ค.
@benoitsteiner ์ข์ ์บ์น, ๊ทธ๋ค์ ์์๋ฅผ ์ป์์ต๋๋ค
@benoitsteiner ์ด๋ป๊ฒ cuda ๊ตฌํ์ ๊ฐ๋จํ ์ ๊ฑฐํ ์ ์์ต๋๊น? '#ifdef GOOGLE_CUDA'๊ฐ ๋๋ฌด ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ก๋ CUDA๋ฅผ ์๋ฏธํ๊ธฐ๋ ํ๊ณ ๋๋ก๋ GPU๋ฅผ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ก๋๋งต ์ ๋๋ฌํ๊ธฐ ๋๋ฌธ์(_Platforms_ ์ฐธ์กฐ): OpenCL ์ง์์ด TensorFlow์ ์ธ์ ์ํฅ์ ๋ฏธ์น ์ง ๋๋ต์ ์ผ๋ก ์ ์ ์์ต๋๊น? ๋ฒ์ 0.9 / 1.0์ด ๋ง์์ ๋์๋์? 2016๋ 3/4๋ถ๊ธฐ? ์๋๋ฉด 2017๋ ์ด ๋ ํ์ค์ ์ ๋๊น?
@benoitsteiner eigen-opencl https://bitbucket.org/benoitsteiner/eigen-opencl ์ด opencl ํ ์ ํ๋ฆ ๊ฐ๋ฐ์ ์ง์ํ ๋งํผ ์ถฉ๋ถํ ์ค๋น๋์ด ์์ต๋๊น?
tensorflow๋ Eigen ํ ์์๋ง ์์กดํฉ๋๊น ์๋๋ฉด Eigen์ ๋ค๋ฅธ ์ข ์์ฑ์ด ์์ต๋๊น?
@NEELMCW Codeplay๋ Eigen Tensor์ OpenCL์ ๋ํ ๋ถ๋ถ ์ง์์ ๋ฐฉ๊ธ ์ถ์ํ์ต๋๋ค. ์ฝ๋๋ ์ด bitbucket ์ ์ฅ์ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ TensorFlow๋ Eigen ํ ์์ ์์กดํฉ๋๋ค. ์ ํ ๋์ ์ฐ์ฐ์ ์ํ Eigen์ ๋ํ ์ถ๊ฐ ์ข ์์ฑ์ด ์์ง๋ง ์ด๋ฌํ ์ฐ์ฐ์ OpenCL ํธํ ๊ตฌํ์ ์ ๊ณตํ ํ์๋ ์์ต๋๋ค(์ต์ํ ์ด๊ธฐ์๋ ์๋). ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ TensorFlow์์ OpenCL ์ง์์ ์์ํ๊ธฐ์ ๋งค์ฐ ์ข์ ์์น์ ์์ต๋๋ค.
๊ธฐ์ฌ์ ๊ด์ฌ์ด ์์ผ์๋ฉด ์ด ์คํ๋ ๋์ํธ ์์ ์ํํด์ผ ํ ์์ ์ ์ถ์ ํ๊ธฐ ์์ํ์ต๋๋ค.
@benoitsteiner ์ ๋ C++11 OpenCL BLAS ๋ผ์ด๋ธ๋ฌ๋ฆฌ(https://github.com/CNugteren/CLBlast)์ ์ ์์ด๋ฉฐ ํ์ฌ ๊ทธ๊ณณ์์ ๋ฐ์ ๋ฐ๋ ์ง์์ ๊ตฌํํ๊ณ ์์ต๋๋ค. ์ ๋ ์ด ํ๋ก์ ํธ์ BLAS/GEMM ๋ถ๋ถ์ ๊ธฐ์ฌํ๊ณ /๋๋ ๊ทํ์ ์๊ตฌ์ ๋ ์ ๋ง๋๋ก CLBlast๋ฅผ ์์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
@CNugteren
CLBlast๋ ์ด์ OpenCL-Caffe์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณด์
จ๋์? :)
libDNN ์ปจ๋ณผ๋ฃจ์
๋ ๋ณผ ๊ธฐํ๊ฐ ์์๋์?
@naibaf7 ๋ดค์ด, ๋ค! :) ๋๋ ์ง๊ธ๊น์ง libDNN์ ์ ํ ๋ณด์ง ์์์ง๋ง ์ ํํ ๋ฌด์์ ์๋ฏธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ปจ๋ณผ๋ฃจ์ ์ด GEMM์ ์ฌ์ฉํ์ฌ ๊ตฌํ๋์๋ค๊ณ ๊ฐ์ ํฉ๋๊น?
@CNugteren
๋ค, ๊ทธ๋ฅ ์ดํด๋ณด์๊ณ libdnn์ ๋ํ ๊ฐ์ ์ฌํญ์ด๋ ํ๋ ํ์ ์ฃผ์๋ฉด ์ข์ ๊ฒ ๊ฐ์์.
(https://github.com/naibaf7/caffe/blob/master/src/caffe/greentea/libdnn.cpp).
GEMM์ ์ฌ์ฉํ์ง๋ง ์์์ (BLAS๋ฅผ ํตํ์ง ์๊ณ ์์
๊ทธ๋ฃน ์์ค์์ ์์ GEMM๋ง)์ ์ฌ์ฉํ๋ฏ๋ก ๋ ๋์ ์์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ณ ์ค๊ฐ ๋ฒํผ๊ฐ ํ์ํ์ง ์์ต๋๋ค(GEMM ์ฒด๊ณ๋ก ๋ฐ์ดํฐ๋ฅผ ํ๊ธฐ ์ํด).
๋ชจ๋ ์๋ ,
@benoitsteiner ์ฐ๋ฆฌ์ ํธ์๋ฅผ ์ธ๊ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
์ด ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ค๋ฉด SYCL ์ปดํ์ผ๋ฌ๊ฐ ํ์ํฉ๋๋ค. ํ์ฌ ์ง์๋๋ ์ ์ผํ ์ปดํ์ผ๋ฌ๋ Codeplay์ ํ๊ฐ ํ๋ก๊ทธ๋จ์ ํตํด ์ฌ์ฉํ ์ ์๋ Codeplay์ ComputeCpp์ ๋๋ค. ComputeCpp๋ 2016๋ ํ๋ฐ์ ๊ณต๊ฐ ์คํ ๋ฒ ํ๋ก ๋ฌด๋ฃ๋ก ์ ๊ณต๋ ์์ ์ด๋ฉฐ 2017๋ ์๋ ๋ฌด๋ฃ ๋ฒ์ (ComputeCpp Community Edition)์ผ๋ก ์ถ์๋ ์์ ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋๊ตฌ๋ AMD ๋๋ Intel GPU์ ๊ฐ์ OpenCL ์ฅ์น์์ TensorFlow๋ฅผ ์ปดํ์ผํ๊ณ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ CPU.
btw. ์ด ๋ฌธ์ ์ OpenCL ๋ ์ด๋ธ์ด ์์ด์ผ ํฉ๋๊น? :)
๊ฐ์ฌ ํด์,
๋ฃจํฌ
์คํ ์์ค ๋๊ตฌ๋ก๋ ์ปดํ์ผํ ์ ์๊ธฐ๋ฅผ ์ง์ฌ์ผ๋ก ๋ฐ๋๋๋ค. @keryell ์ Opencl ๋ธ๋์น ๊ฐ ์ด๋ป๊ฒ ์งํ๋๊ณ ์์ต๋๊น?
@bhack ๋จผ์ CPU OpenMP ํธ์คํธ ์ฅ์น ๋ชจ๋์์ triSYCL๊ณผ ํจ๊ป ์๋ํ ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ง๊ธ TensorFlow/Eigen ๋น๋ ์์คํ ์ ๋ค์ด๊ฐ ๋์ญํญ์ด ์์ต๋๋ค. :-( ๋๊ตฐ๊ฐ๊ฐ ์๋ํ๊ณ ์ถ๋ค๋ฉด ์์ ๋กญ๊ฒ ์๋ํ์ญ์์ค. :-)
https://github.com/keryell/triSYCL/commits/opencl ์ OpenCL ์ํธ ์ด์ฉ์ฑ ๋ชจ๋์์ ๊ณง OpenCL ์ปค๋์ ์คํํ ์ ์๋๋ก ํ์ฉํด์ผ ํ์ง๋ง Clang/LLVM ์์๋ผ์ด๋๊ฐ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๊ฟ๊พธ๋ SYCL ๋จ์ผ ์์ค ๋ชจ๋์์๋ ๊ทธ๋ ์ง ์์ต๋๋ค. SYCL์์ ์ปค๋์ ์ถ์ถํฉ๋๋ค. ๊ทธ๋ฌ๋ Khronos๋ ์ต๊ทผ AMD์ Intel์ ๊ตฌ์ฑ ์์๋ฅผ ์คํ ์์คํํ์ฌ OpenCL C++ 2.2 ๋ฐ SPIR-V๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ต๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ "๋จ์ง" ์๊ฐ์ ๋ฌธ์ ์ ๋๋ค...
๋๊ตฐ๊ฐ Tensorflow๊ฐ OpenCL(AMD GPU)๊ณผ ํจ๊ป ์คํ๋ ์ ์๋ ์๊ธฐ์ ๋ํ ์ถ์ ์น๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ/์ฌ์ฉ์ฑ ๊ณก์ ์ด ์ด๋ป๊ฒ ์๊ฒผ์ต๋๊น? ๋ชจ๋ ๊ณผ๊ฑฐ ์ ๋ณด๋ฅผ ์คํ ๊ฐ๋ฅํ ํ๋์จ์ด ๊ตฌ๋งค ์ ๋ณด๋ก ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. :)
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@djan92
๋ถํํ๋ ์ฌ์ฉํ ์ ์์ ๋๊น์ง 1๋
์ ๋ฌ๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง ๋๋ถ๋ถ์ ์์ง ์ค๋น๊ฐ ์๋ฃ๋์ง ์์์ต๋๋ค.
๋ํ ์์ ํ ๋๊ตฌ ์คํ์ OpenSource๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ์ฆ์ ์จ๋ณด๋๋ก ์ด๋ํ ๊ฒ์
๋๋ค.
@naibaf7
๋ถํํ๋ ์ฌ์ฉํ ์ ์์ ๋๊น์ง 1๋ ์ ๋ฌ๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง ๋๋ถ๋ถ์ ์์ง ์ค๋น๊ฐ ์๋ฃ๋์ง ์์์ต๋๋ค.
๋ํ ์์ ํ ๋๊ตฌ ์คํ์ OpenSource๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ์ฆ์ ์จ๋ณด๋๋ก ์ด๋ํ ๊ฒ์ ๋๋ค.
SYCL ํฌํธ๊ฐ ์ค๋น๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๋์ CL ๋ฒ์ ์ ๋จผ์ ๊ตฌํํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ฌ๊ธฐ์ ๊ธฐ๊บผ์ด ๋์์ ์ค ์ฌ๋๋ค์ด ๊ฝค ์์ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค. 1๋ ์ ๋๋ฌด ๊ธธ๊ฒ ๋ค๋ฆฝ๋๋ค.
@djan92
๋ค, ๋ง์ต๋๋ค. #22๋ ๊ฑฐ์ 8๊ฐ์์ด ์ง๋ฌ๊ณ 100๊ฐ ์ด์์ ๊ฒ์๋ฌผ์ด ์์ต๋๋ค! ์ ๋ณด๊ฐ ํฉ์ธ๋ฆด ์ ์์ต๋๋ค!
๋๊ตฐ๊ฐ Tensorflow๊ฐ OpenCL(AMD GPU)๊ณผ ํจ๊ป ์คํ๋ ์ ์๋ ์๊ธฐ์ ๋ํ ์ถ์ ์น๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
TensorFlow๋ (Tensor ๋ชจ๋์์) ํ ์ ๊ณ์ฐ์ ์ํด Eigen ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. SYCL(https://bitbucket.org/benoitsteiner/opencl ๋ถ๊ธฐ Codeplay)์ ์ฌ์ฉํ์ฌ OpenCL 1.2์ ๋ํ ๋ถ๋ถ ๊ตฌํ์ ์ปค๋ฐํ์ต๋๋ค. ์ด ์์ ์ SYCL์ ์ฌ์ฉํ ์ด์ ๋ TensorFlow์ ์ด ์น์ ์ด C++ ํํ์ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ OpenCL์ฉ SYCL์์๋ ๊ฐ๋ฅํ์ง๋ง OpenCL C์์๋ ์ง์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ปจ๋ณผ๋ฃจ์ ์ด๋ BLAS์ ๊ฐ์ TensorFlow์ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๋ OpenCL C๋ฅผ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ์ ๋ ComputeCpp(Codeplay์ SYCL ์ปดํ์ผ๋ฌ)๋ฅผ bazel ๋น๋ ์์คํ ์ ํตํฉํ๋ ์์ ์ ํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๊ณง ์ค๋น๋ ๊ฒ์ ๋๋ค(์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ฐ๋ฅด์ญ์์ค: https://github.com/benoitsteiner/tensorflow-opencl/ ). ์๋ฃ๋๋ฉด ComputeCpp๋ฅผ ์ฌ์ฉํ์ฌ OpenCL SPIR(์: AMD ๋๋ Intel)์ ์ง์ํ๋ ์์คํ ์์ TensorFlow๋ฅผ ๊ฐ์ํํด์ผ ํฉ๋๋ค. ๋ ๋ง์ TensorFlow๋ฅผ ๊ฐ์ํํ๊ณ ๋ ๋ง์ OpenCL ๊ตฌํ๊ณผ triSYCL ์คํ ์์ค SYCL์ ์ง์ํ๊ธฐ ์ํ ์ถ๊ฐ ์์ ์ด ๊ณ์๋ ๊ฒ์ ๋๋ค. SYCL ๋ฐ OpenCL์ ๋ค์ค ๊ณต๊ธ์ ์ฒด์ ๋ก์ดํฐ ํ๋ฆฌ ๊ฐ๋ฐฉํ ํ์ค์ด๋ฏ๋ก AMD GPU๋ฟ๋ง ์๋๋ผ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ง์ํ ์ ์๋ ํ๋ซํผ๊ณผ ์ฅ์น๊ฐ ๋ง์ด ์์ต๋๋ค.
ComputeCpp Community Edition ์ปดํ์ผ๋ฌ๋ 2016๋ ํ๋ฐ์ ๋ฌด๋ฃ๋ก ์ ๊ณต๋ ์์ ์ ๋๋ค(๋ฒ ํ ํ์: ์์ ํ ์ ํฉ์ฑ์ 2017๋ ์ด์ ๋ฌด๋ฃ๋ก ์ถ์๋ ์์ ).
TensorFlow์ C++๊ฐ ์๋ ๋ถ๋ถ(์: BLAS ๋ฐ ์ปจ๋ณผ๋ฃจ์ )์ ๊ฐ์ํํ๋ ์์ ์ SYCL ์์ด ์ํํ ์ ์์ผ๋ฉฐ ๋ณ๋๋ก ๊ตฌํํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋์จ์ด ๊ณต๊ธ์ ์ฒด๋ ๊ฐ์ํ๋ฅผ ๋์ธ ์ ์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ํด ์์ฒด์ ์ผ๋ก ์ต์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ๋๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ํด C++์ ํจ๊ป Eigen์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ/์ฌ์ฉ์ฑ ๊ณก์ ์ด ์ด๋ป๊ฒ ์๊ฒผ์ต๋๊น?
์ฐ๋ฆฌ๋ ์ค์ ์ด ๊พธ์คํ ํฅ์๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ๋ค์ํ ์ฅ์น์์ ๊ฐ์ํํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ด "๊ด๋ฆฌ๋๋ ํ ์" ์์ ํญ๋ชฉ์ด ์๋ ์ด์ ์ด๋ฏ๋ก ํธ์คํธ์ ์ฌ๋ฌ ์ฅ์น ๊ฐ์ ๋ฐ์ดํฐ ์ด๋์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ์ฌ๋ก์๋ ๊ด๋ฒ์ํ ์ฅ์น์์ ์ฑ๋ฅ์ด ์ด๋ป๊ฒ ๋ฌ๋ผ์ง์ง ์์ธกํ๊ธฐ ์ด๋ ต์ต๋๋ค. ํ์ฌ ๊ฐ์ํ๋๋ ๊ฒ์ ๊ฑฐ์ ์์ง๋ง TensorFlow์์ ๊ณต๊ฐ ํ์ค ๊ฐ์ํ๋ฅผ ํ์ฉํ๋ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค.
@naibaf7
๋ถํํ๋ ์ฌ์ฉํ ์ ์์ ๋๊น์ง 1๋ ์ ๋ฌ๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๊ธฐ๋ณธ ์์ ์ด ๊ณง ์๋ฃ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐฉํ ํ์ค ๊ธฐ๋ฐ ๊ฐ์์ ์ง์ํ๊ธฐ ์ํด ์ฝ๋ ๋ด์ ๊ธฐ๋ณธ ์ธํ๋ผ๋ฅผ ๋ฐฐ์นํ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ปค๋ฎค๋ํฐ ์ง์์ ํตํด ๊ฐ์ํ๋๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ์ด 1๋ ์ด๋ด์ ์ค๋น๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
๋ํ ์์ ํ ๋๊ตฌ ์คํ์ OpenSource๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ์ฆ์ ์จ๋ณด๋๋ก ์ด๋ํ ๊ฒ์ ๋๋ค.
ComputeCpp๋ 2016๋ ์ ๋ฌด๋ฃ๋ก ๊ณต๊ฐ๋ ์์ ์ ๋๋ค. ์คํ ์์ค triSYCL ์ง์์ด ๋ค๋ฐ๋ฅผ ๊ฒ์ ๋๋ค. ์คํ ์์ค OpenCL์ ์ด๋ฏธ pocl, Shamrock, Clover, Beignet์์ ์ง์๋ฉ๋๋ค.
@robertwgh
Eigen์ C++ ํ
์ ์ฝ๋๋ SYCL์ด ์์ผ๋ฉด OpenCL C๋ก ์ฝ๊ฒ ์ด์ํ ์ ์์ง๋ง OpenCL C์์ ์ ์๋ํ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด ์คํ๋ ๋์ํธ๋ฅผ ์ดํด๋ณด์ธ์. https://docs.google.com/spreadsheets/d /1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid =0 ๋ฐ ๋ฌด๋ฃ ์ฑ์ฐ๊ธฐ ์ผ๋ฐ OpenCL C๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ธฐ๋ฅ(์: BLAS ๋ฐ ์ปจ๋ณผ๋ฃจ์
)์ ์ด๋ฆ์ ์
๋ ฅํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๊ณต๊ฐ ๋ฆด๋ฆฌ์ค ์ ์ ComputeCpp์ ๋ํ ํ๊ฐ ๋ฒ์ ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ํ์๋ ๋ถ์ ๋ฉ์ผ ์ฃผ์ธ์ :)
@lukeiwanski ํ๋ฅญํฉ๋๋ค. ์ ๋ฐ์ดํธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ชจ๋ ๊ธฐ๋ฅ์ 1๋ ์ด๋ด์ ์๋ฃํ๋ ๊ฒ์ด ์ณ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
LLVM์์ Streamexecutor์ ๋ ๋ค๋ฅธ ๋จ๊ณ
rx 480์์ ๊ฐ์์ ์ป์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๊น?
@benoitsteiner
LibDNN ๋
๋ฆฝ ์คํํ์ ํตํฉ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
https://github.com/naibaf7/libdnn
์ด ์์ ์ด ์งํ ์ค์ ๋๋ค. Beignet 2.0์ด ์ฐ๋ง๋๋ฉด ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์ง๊ธ Skylake์ Iris๋ ๋ง์ ์ ์ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ดํด๋ณด๊ณ ์ถ๋ค๋ฉด ์ต๊ทผ pull ์์ฒญ์ด https://github.com/benoitsteiner/tensorflow-opencl/pull/1 ์ ์ถ๊ฐ๋์์ต๋๋ค.
Imagination(GPU)์ OpenCL SDK์ ์ก์ธ์คํ๋ ค๋ฉด NDA๊ฐ ํ์ํ๋ฉฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก tensorflow๋ฅผ ์คํํ ์ ์์ต๋๊น?
@์๋ ํ๋ง
OpenCL ํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ธฐ ์ํด ๊ณต๊ธ์
์ฒด๋ณ ํค๋ ํ์ผ์ด ํ์ํ์ง ์์ต๋๋ค. https://www.khronos.org/registry/cl/api/1.2/cl.hpp ์์ cl.hpp๋ฅผ ์๋ํ๊ณ ๋ค๋ฅธ SDK์์ opencl.h/cl.h๋ฅผ ์๋ํ์ญ์์ค. ์๋ฅผ ๋ค์ด - ์ ๋ ์ต์ํ 3๊ฐ์ OpenCL ํ๋ซํผ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ชจ๋ ํ๋ซํผ์ด ํ๋์ ๊ณต์ /usr/include/CL/cl.h์์ ์๋ํฉ๋๋ค.
OpenCL์์ ์คํ๋๋ TensorFlow๋ ์์ง ์ง์ํ์ง ์์ต๋๋ค. ์งํ์ค์ธ ์์ ์ ๋๋ค. ํ์ฌ ์ฐ๋ฆฌ๋ AMD GPU๋ฅผ ์ฐ๊ตฌํ๊ณ ์์ต๋๋ค. PowerVR ์ง์์ด ๋ฐ๋ผ์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์ ๊ธฐ์ฌํ๊ณ ์ถ๋ค๋ฉด ๋น์ฌ(Codeplay)์ ์ง์ ์ฐ๋ฝํด์ผ ํฉ๋๋ค. PowerVR์์ TensorFlow๋ฅผ ์คํํ๋ ค๋ฉด ์กฐ๊ธ ๋ ์งํ์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
@inferrna ๊ฐ์ฌํฉ๋๋ค. ๋ฒค๋๋ณ ๊ตฌํ์ ์จ๊ธฐ๋ OpenGL๊ณผ ๋น์ทํด ๋ณด์ ๋๋ค.
@andrerichards ๊ฐ๋ฐ์ ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฝ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ https://www.codeplay.com/products/computecpp ํ์ด์ง์์ "๊ด์ฌ ๋ฑ๋ก"์ ํด๋ฆญํ๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ฐ๋ฐ์ ํ๋ก๊ทธ๋จ์ ์ฐธ์ฌํ๊ฒ ๋๋ฉฐ ์ด @alephman์์ ํจ๊ป ์์
ํ ์ ์์ต๋๋ค.
์ํ๋ค๋ฉด ์คํ ์์ค ๋์์ผ๋ก ์ปดํ์ผํ ์ ์๋๋ก ๊ณต๋ ๊ธฐ์ฌ๋ ํ ์ ์์ต๋๋ค. https://github.com/tensorflow/tensorflow/issues/22#issuecomment -221841173 ์ฐธ์กฐ
์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ!
Tensorflow ์ง์์ด Nvidia Cuda ์ธ๋ถ๋ก ํ์ฅ๋๋ค๋ ์์์ ๋ค์ผ๋ ๋งค์ฐ ๊ธฐ์ฉ๋๋ค. http://www.amd.com/en-us/products/processors/laptop-processors#sectionOne ๊ณผ ๊ฐ์ APU์์๋ ์๋ํ๋๋ก ๊ณ ๋ คํ๊ณ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
@kgocheva
APU๋ CPU์ GPU ๋ถ๋ถ ๋ชจ๋์ ๋ํด OpenCL์ ์ง์ํฉ๋๋ค.
์ด๊ฒ์ OpenCL ์ง์์ด ์ค๋น๋๋ฉด ๊ฑฐ์ ์ฆ์ ์๋ํด์ผ ํฉ๋๋ค.
ํํธ, ์ด๋ฏธ APU๊ฐ ์๊ณ ๋ค๋ฅธ ML ํ๋ ์์ํฌ๋ฅผ ์๋ํ๋ ค๋ ๊ฒฝ์ฐ BVLC OpenCL Caffe๊ฐ ์ด๋ฏธ ์๋ํฉ๋๋ค.
@ naibaf7 ์ค๋ช ๊ฐ์ฌํฉ๋๋ค. ์ ๋ Tensorflow๋ฅผ ๋ก์ปฌ์์ ์คํํ๊ธฐ ์ํ ๋น์ฉ ํจ์จ์ ์ธ ํ๋์จ์ด/์ํํธ์จ์ด ์กฐํฉ์ ์ฐพ๊ณ ์์ผ๋ฉฐ OpenCL ๊ฐ๋ฐ ์งํ ์ํฉ์ ํ์คํ ๋ฐ๋ฅผ ๊ฒ์ ๋๋ค.
@hughperkins
์๊ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ง๋ง im2col/col2im ๋ฐ ๊ธฐํ ์ปจ๋ณผ๋ฃจ์
๊ตฌํ๊ณผ ๊ฐ์ ๋ถ๋ถ์ด ์ค์ ๋ก GCLA์ ๋ฌธ์ ์ธ ๊ฒฝ์ฐ ์ธ๋ถ API๋ก ํ๋ฌ๊ทธ์ธ๋ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๊ทธ๋ฌํ ์์
์ ์์ ์์๊ฒ๋ ๋ ์ข์ ์ ์์ต๋๋ค.
@hughperkins ์ฐ๋ฆฌ๋ OpenCL 1.2์ฉ SYCL์ ํตํด OpenCL์ TensorFlow๋ก ๊ฐ์ ธ์ค๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid =1625897530์์ "todos" ๋ฐ ์งํ ์ํฉ์ ํ์ธํ์ธ์.
์ต๊ทผ์ ComputeCpp Comunity Edition์ด๋ผ๋ SYCL https://www.codeplay.com/products/computesuite/computecpp ์ฉ ์ปดํ์ผ๋ฌ๋ฅผ ์ถ์ํ์ต๋๋ค. ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ์๋ ํ ์ ์์ต๋๋ค!
๋ํ ๊ณ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ https://bitbucket.org/benoitsteiner/opencl/branch/ComputeCpp ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๋ค. TensorFlow์ MNIST๊ฐ ์๊ตฌํ๋ ๋จ๊ณ์ ๋๋ฌํ๋ ๊ฒ์
๋๋ค. ๋ช ๊ฐ์ง๊ฐ ๋จ์ ์์ต๋๋ค.
์ ์ฝ ์กฐ๊ฑด๊ณผ ๊ด๋ จํ์ฌ ํ์ฌ ComputeCpp CE ๋ฆด๋ฆฌ์ค๋ Ubuntu 14.04 64๋นํธ ๋ฐ CentOS 64๋นํธ๋ฅผ ์ง์ํ๋ ํ๋ซํผ์ ๋ํด Intel(CPU, GPU) ๋ฐ AMD(CPU, GPU)์ ๋ํด ํ
์คํธ๋์์ต๋๋ค.
ComptueCpp๋ ๋ฌด๋ฃ๋ก ๋ค์ด๋ก๋ํ ์ ์์ผ๋ฉฐ ์์ฉ ๋ฐ ์คํ ์์ค ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ <3๊ฐ์ ์ด๋ฆฐ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ :)
@lukeiwanski ์ฌ๊ธฐ ์ค๋ ๋์์ ๋ ผ์/์ง๋ฌธํด์ ์ฃ์กํฉ๋๋ค. ํ์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ ๊ด์ฌ์ด ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ Codeplay๊ฐ OpenCL ๊ตฌํ์ ์ํ SYCL์ ๋งค์ฐ ๊ด์ฌ์ด ์๋ค๋ ๊ฒ์ ์ดํดํ๋ฉฐ ์ด๋ฏธ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ์์ ์ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ค๋ ์์์ ๋ค์์ต๋๋ค. ๋๋. ์๋ฅผ ๋ค์ด Movidius ๊ด๊ณ์์ ๊ฒ์๋ฌผ์ ์ฝ์์ต๋๋ค. ํ์ง๋ง ์ด์ ๋ํ ๊ตฌ๊ธ์ ๊ธฐ์ฌ๋ ๊ณผ์ฐ ๋ฌด์์ธ์ง ๋ฌป๊ณ ์ถ๋ค. AMD ๋ฑ์ ์ ์ธํ๊ณ Movidius๊ฐ Codeplay์ ํํธ๋๋ก ๋ฑ๋ก๋์ด ์๊ธฐ ๋๋ฌธ์ OpenCL์ฉ SYCL์ ๊ถ์ฅํ๊ฑฐ๋ ์ง์ํ๋ ๊ฒ๋ ์ดํดํ ์ ์์ง๋ง ์ ๊ฐ ์๋ ํ Google์ ๊ทํ์ ํํธ๋๊ฐ ์๋๋ฉฐ ์ง๊ธ๊น์ง ๊ธฐ์ฌํ์ง ์์์ต๋๋ค!
์คํดํ์ง ๋ง์ธ์. ์ ๋ ๋น์ ์ ์์ ์ ์ ๋ง ์ข์ํ์ง๋ง, ๋ ธ๋ ฅ์ ํตํฉํ๊ณ , ์์์ ๋ชจ์ผ๊ณ , Google๊ณผ ํจ๊ป ์ผํ๋ ค๊ณ ํ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ด ์๋๊น์? ๋ด๊ฐ ๋ณด๊ธฐ์๋ TensorFlow์ฉ OpenCL์ ๋ง์ ๋ค๋ฅธ ๋น์ฌ์๋ค์ด ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ด ๋น์ฌ์๋ค์ด ํจ๊ป ๊ฐ๋ฐํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ฒญ๋ ์ ์ฌ๋ ฅ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค!
๋ด๊ฐ ํ๋ฆด ์ ์๊ณ ์ด๊ฒ์ด ์ถฉ๋ถํ ๋ ผ์๋์๋ค๋ฉด ์ค์ค๋ก ์ฌ๊ณผํ์๊ธฐ ๋ฐ๋๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฌ์ ํ Google(๋๋ ๋ค๋ฅธ ๋น์ฌ์)์ด ์ด ๋ฌธ์ ์ ๋ํด ํ๋ ฅํ๋ ค๋ ์ฃผ์ ์๋๋ฅผ ์์ง ๋ชปํ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ ์ปค๋ฎค๋ํฐ๊ฐ ์ด๋ป๊ฒ ์ง์ ์ ์ธ ๊ธฐ๋ถ, ํ ์คํธ ๋๋ ๊ธฐํ ๋ฐฉ๋ฒ์ ํตํด (๋ ์ ๊ฐ์ธ๊ณผ ๊ฐ์ด) ๋๊ฑฐ๋ ์ง์ํ ์ ์์ต๋๋ค.
@ascenator ์ฐ๋ฆฌ Google์ ๊ฑฐ์ 12๊ฐ์ ๋์ ์ด ํ๋ก์ ํธ์์ Luke ๋ฐ ๊ทธ์ Codeplay ๋๋ฃ์ ๊ธด๋ฐํ๊ฒ ํ๋ ฅํด ์์ต๋๋ค. ์ด๋ฌํ ๋ ธ๋ ฅ์ ๋ํ Codeplay์ ๊ณตํ์ ์์ฒญ๋ฌ์ผ๋ฏ๋ก OpenCL๊ณผ ๊ด๋ จ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์์ด์ Codeplay๊ฐ ์ฃผ๋๊ถ์ ์ก๋๋ก ํด์ผ ํ๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ฃผ์ ์ ๋ํด ๋ง์ด ๋ฃ์ง ๋ชปํ ์ด์ ์ ๋๋ค :)
์ด์ ComputeCpp ์ปดํ์ผ๋ฌ๊ฐ ๋๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก ์ง๊ธ๊น์ง ์ํํ ์์ ์ ๋ณํฉํ ๊ณํ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋จผ์ ์ฐ๋ฆฌ๋ ๊ธฐ์กด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ถ์์ ํ๊ฒ ๋ง๋ค์ง ์๋๋ก ํฌ๊ด์ ์ธ ํ ์คํธ ์ธํ๋ผ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ถ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๋ ธ๋ ฅ์ ๋ํ ๋ชจ๋ ๊ธฐ์ฌ๋ฅผ ํ์ํ๋ฏ๋ก ๋์์ด ํ์ํ๋ฉด ์ธ์ ๋ ์ง ์ ์๊ฒ ์ฐ๋ฝํ์ญ์์ค. ์ฐ๋ฆฌ๋ ํนํ ํ๋ ฌ ๊ณฑ์ ๊ณผ ์ปจ๋ณผ๋ฃจ์ ์ ์ํ ๊ณ ์ฑ๋ฅ OpenCL ์ปค๋์ ๊ด์ฌ์ด ์์ต๋๋ค. ์ฌ๋ฌ ํ๋ณด๊ฐ ์ ์๋์์ง๋ง ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด๋ ํตํฉ ๋ฐฉ๋ฒ์ ์กฐ์ฌํ๊ธฐ ์์ํ์ง ์์์ต๋๋ค.
@benoitsteiner ์ค๋ช ํด์ฃผ์ ์ ๊ฐ์ฌํ๊ณ ์๋ชป๋ ์ ๋ณด ์ฃ์กํฉ๋๋ค! ์ด๊ฒ์ ๋งค์ฐ ์ข๊ณ ์ ๋งํ๊ฒ ๋ค๋ฆฝ๋๋ค! ๊ทธ๋ฌ๋ฉด ComputeCpp๋ฅผ ํ์คํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. TensorFlow์ ๋ํ OpenCL ์ง์์ด ์ ๋ง ๊ธฐ๋๋ฉ๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ์ด ๋ก๋ด ๊ณตํ(๋ฅ ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด TensorFlow๋ฅผ ์ฐ๊ตฌํ๊ณ ์ฌ์ฉํ๋ ๋ถ์ผ)์ ๋ํ ๋ง์ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ ์ ์ด๋ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ณ ํ ์คํธ/๋๋ฒ๊ทธ๋ฅผ ์๋ํ ๊ฒ์ ๋๋ค. ์ธํ ์นฉ๊ณผ ํ ์คํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ARM CPU๊ฐ ์์ต๋๋ค.)
@hughperkins... ์ฃ์กํฉ๋๋ค๋ง ์ด๊ฒ์ ์ฌ๊ธฐ์์ ์์ ํ ๋ฒ์ด๋ ์ฃผ์ ๊ฐ ์๋๊ฐ์? ์ด๊ฒ์ด OpenCL TF์ ์ด๋ค ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ ๋ ์ฌ๊ธฐ์์ ํ๋ ฌ ๊ณฑ์ ๋ฐ ์ปจ๋ณผ๋ฃจ์ ์ปค๋์ ๋ํ ์กฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ ๊ฒ์ธ์ง, ๊ทธ๋ฆฌ๊ณ SPIR-V๋ฅผ ์์ฑํ CompiteCpp์ ๋ํ ์ ํจํ ์คํ ์์ค ๋์ ์ด ๋ ๊ฒ์ธ์ง ์๊ณ ์ถ์ต๋๋ค.
๋ ๊ฐ์ ์๋ก์ด Kronos Group ํ์ค์ด https://www.khronos.org/news/press/khronos-launches-dual-neural-network-standard-initiatives ์์ ๋ฐํ๋์์ต๋๋ค.
๋์์ด ๋๋ค๋ฉด ๋ ๋์ isaac ๋ฒ์ ์ด ์ถ์๋์์ต๋๋ค: https://github.com/ptillet/isaac , Maxwell, Pascal ๋ฐ Fiji์์ clBLAS ๋ฐ cuBLAS์ ๋นํด ์๋นํ ์๋ ํฅ์์ ์ ๊ณตํฉ๋๋ค. ๋ํ 1D ๋ฐ 2D ์ถ์๋ฅผ ์ํด Tensorflow๋ณด๋ค ๋น ๋ฅธ(์ ๋ ฅ ์ธ์) ์ปค๋์ ์ ๊ณตํฉ๋๋ค.
@hughperkins ๋ CUDA-OpenCL ๋ณํ๊ธฐ๋ณด๋ค ๋ชจ๋ OpenCL ์ฅ์น์ ๋ํด CUDA ์ปดํ์ผ๋ฌ๋ฅผ ์์ฑํ ๊ธฐํ๊ฐ ๋ ๋ง์ ๊ฒ ๊ฐ์ต๋๋ค.
@hughperkins OpenCL 2.0์ SVM ๊ธฐ๋ฅ์ด ํฌ์ธํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊น์? Nvidia(AMD, Intel, ARM, Qualcomm)๋ฅผ ์ ์ธํ ๋ชจ๋๊ฐ OpenCL 2.0์ ์ง์ํ๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋๊น์?
@hughperkins ๊ทธ๊ฒ์ blas ๊ตฌํ ์์ฒด์ ๋๋ค. clblas ๋ฐ cublas ํค๋์ ์ผ๋ถ ๊ธฐํธ๋ฅผ ๊ตฌํํ๋ฏ๋ก ์ฌ์ปดํ์ผ ๋ฐ ์ฝ๋ ์์ ์ด ์์ต๋๋ค. ํ์์ ์ด๋ค. ๋ค๋ฅธ ํค๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ clblast.h์ ๋ํ ์ผ๋ถ ๊ธฐํธ๋ฅผ ๊ตฌํํ ์๋ ์์ต๋๋ค. ์ด์ญ์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@marty1885
์ค๋ง. AMD๋ AMDGPU-PRO ๋๋ผ์ด๋ฒ์์ 1.2 ์ง์์ผ๋ก ๋์๊ฐ์ต๋๋ค. ์์ ํ 2.0 ์ง์์ด ๋๋ฆฌ ๋ณด๊ธ๋ ๋๊น์ง ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ํ์คํ ๋จ๊ธฐ์ ์ธ ํด๊ฒฐ์ฑ
์ ์๋๋๋ค.
@hughperkins
๋ด ์ฝ๋๊ฐ ๋ช ๋ฐฑํ OpenCL ๊ท์น์ ์๋ฐํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์, ํฌ์ธํฐ๋ฅผ ํฌํจํ๋ ๋ชจ๋ __global ๊ตฌ์กฐ(์: ๋ฐฐ์ด ๋๋ ๊ตฌ์กฐ์ฒด)๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ํด๋น ํฌ์ธํฐ๊ฐ ๋ค๋ฅธ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค(OpenCL์ ํ ์ฅ์น๊ฐ ๋ค๋ฅธ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ ์ ์๋ ๋ค์ค ์ฅ์น ํจ๋ฌ๋ค์์ ์ง์ํฉ๋๋ค). ๊ทธ๋ฌ๋ OpenCL ์ฝ๋์ ๋ํ ์ค๊ฐ ๋ฒ์ญ ์์ด IR ์์ค์์ ๊ทน๋ณตํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ๊ฐ์ ํ ๊ฒ์ ๋๋ค. :)
@benoitsteiner , @henline , https://github.com/henline/streamexecutordoc ์์ streamexecutor๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก CL ๋ฒ์ ๋ฏธ๋ฆฌ ์ค๋น๋ ์์ (DNN, BLAS์ ๊ฐ์)์ ์ง์ํ์์ ๋ํ๋ ๋๋ค. Google์ด ์ด๋ฏธ Tensorflow์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋ clDNN, clBLAS ๊ตฌํ์ ๊ฐ์ง๊ณ ์์ง๋ง ์์ง ์คํ ์์ค๊ฐ ์๋์ ์์ฌํฉ๋๊น?
๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ ์ํํธ์จ์ด ์ํคํ
์ฒ๋ฅผ ์ ์งํ๋ ค๋ ๊ฒฝ์ฐ OpenCL 2.0+ ๋ฐ SYCL 2.2๊ฐ SVM์ ์ง์ํฉ๋๋ค.
OpenCL 2.0+๋ ์๋ฅผ ๋ค์ด AMD ๋ฐ Intel GPU์์ ์ง์๋ฉ๋๋ค. ์๋ฒ ๋๋ ์ธ๊ณ์์๋ ํธ์คํธ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ฐ์ด์ค ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น์ฉ์์ ์ด์ ๋ก ์ข
์ข
๋์ผํ๊ธฐ ๋๋ฌธ์ OpenCL 1.x์์๋ ์ข
์ข
๋ถ์์ฉ์ ์ํด ์ง์๋ฉ๋๋ค.
@keryell
๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ฃผ๋ชฉํ ๋งํ ํ๋ซํผ์ธ Linux + ์๋ก์ด AMD GPU(RX 480, ๊ณง ์ถ์๋ Vega)๋ ํ์ฌ๋ก์๋ OpenCL 1.2๋ง ์ง์ํฉ๋๋ค... ๊ทธ๋ฆฌ๊ณ ์ธ์ ๋ณ๊ฒฝ๋ ์ง ๋๊ฐ ์๊ฒ ์ต๋๊น(๋ด ์์์ 1๋
ํ์
๋๋ค). OpenCL 2.0์ฉ Beignet(์คํ ์์ค Linux Intel)๋ ์ฌ์ ํ ๋ฒ๊ทธ๊ฐ ๋ง์ ์๋ง์
๋๋ค. ์์ ๋ฒ์ ์๋ 1.2๊ฐ ์์ต๋๋ค.
๋ํ OpenCL ํธํ ์นฉ์ ๋ง๋๋ ๋ชจ๋ ์๊ท๋ชจ ํ์ฌ๊ฐ 1.2 ์ง์์ ๊ฐ์ ํ ๋์ด๋ด๊ณ ์๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด. ๋ฐ๋ผ์ OpenCL 2.0์ ์์กดํ๋ ๋ชจ๋ ๊ฒ์ ์ค์ ๋ก ๋งค์ฐ ๋์ ์ ์๋ฅ ์ ๋ณด์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ์๊ฐ์๋.. ์ด๋ค ํ๋์จ์ด ๊ณต๊ธ์ ์ฒด๋ผ๋ SPIR-V๋ฅผ ๊ธํ๊ฒ ์ฌ์ฉํด์ผ ํฉ๋๊น? Vulkan์ ๋ํ ๊ทธ๋ํฝ/์ ฐ์ด๋ ์๋ ฅ์ด Opencl ์ธก์์ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@naibaf7 OpenCL 2์ ๋ํ ๋
ผ์๋ก ๋์๊ฐ๊ฑฐ๋ ๋ง๊ฑฐ๋, ์ด๋ ์์ ์์ ์ค์ ๋ฌผ๊ฑด์ด ์ ๋ฌ๋์ด์ผ ํฉ๋๋ค... ๊ทธ๋ ์ง ์์ผ๋ฉด TensorFlow๊ฐ ์คํ ์ค์ธ nVidia GPU ๋ฐ CUDA๊ฐ ์ด๋ฏธ ์์ต๋๋ค... :-)
๊ทธ๋ฌ๋ ๋ฌผ๋ก SVM์ด ์๋ TensorFlow ๋ฒ์ ์๋ ์ฝ๊ฐ์ ๊ด์ฌ์ด ์์ต๋๋ค.
@keryell Vulkan SPIR-V๊ฐ ๋๋ผ์ด๋ฒ์์ ์ผ๋ง๋ ์๋ํฉ๋๊น(์ด๋ฏธ ์ข์ ์ฅ์น ์ ์ฉ ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์์) ์ต์ Opencl ๋ฒ์ ์ ํธ์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
@naibaf7 Khronos ๋ชจ์์ ๋ค์ ์ฃผ์ OpenCL๊ณผ Vulkan ์ฌ๋๋ค๊ณผ ํจ๊ป ์์ธ์์ ์ด๋ฆฌ์ง๋ง ํ ๋ก ์ ๊ณต๊ฐ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ ์ธ๊ณ๊ฐ ๋ค๋ฅธ ์ธ๊ณ๋ฅผ ๊ฐ์ ํ๊ณ ์ธ์ ๊ฐ๋ TensorFlow์ ์ด์ ์ด ์๋ค๋ ๊ฒ์ ์ข์ ์๊ฐ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. :-)
@keryell
๋ค, ์ ๋ ๊ทธ๋ค์ด DeepLearning์ ์ ์ตํ ๋ด์ฉ์ ๋ํด ๋
ผ์ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. :)
์ถํ ํด์! HIP ํ๋ก์ ํธ๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ์ผ๋ฏ๋ก ๋ฐ๋์ ํ์ธํ์ญ์์ค. ๊ทธ๋ค์ ์๋์ผ๋ก ๋ณํํด์ผ ํ๋ ํญ๋ชฉ์ ์ ์ํ๋ HIP๋ผ๋ ์๋ก์ด ์ธ์ด๋ฅผ ๋ง๋ค๊ธฐ๋ก ์ ํํ์ต๋๋ค(์: ๊ณ์ฐ ์์ค์ ํ์ธํ์ฌ ๋ฐฐ์ ๋ฐ๋ ์ง์ ํ์ธ). ํ๋ก์ ํธ๊ฐ ์งํ๋๋ ๋์ ์๋ ๋ฒ์ญ์ ์์ ์ค์ด๋ค ๊ฒ์ ๋๋ค. ์ฐธ์กฐ: https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP
๋ด๊ฐ ์ ์ํ๋ ๊ฒ์ HIP๋ฅผ ์ฌ์ฉํ๊ณ Tensorflow ๋๋ ์์ ์ ๋ชฉํ๋ฅผ ๋ฐ์ ์ํค๋ ๋ฐ ๋ฐฉํด๊ฐ ๋๋ ๋ช ๊ฐ์ง ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๊ฒ์ ๋๋ค. ์ด์ LLVM์ ์ดํดํ๊ฒ ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฏธ ์์ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ์๊ฐ ์์ต๋๋ค.
@hughperkins
์ด https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/get_started/os_setup.md#create -the-pip-package-and-install์ ๋ฐ๋ผ ํฌํฌ๋ก ํ์ด์ฌ ๋ชจ๋์ ๋น๋ํ ์ ์์ต๋๋ค.
INFO: From Compiling tensorflow/core/kernels/gather_functor_gpu.cu.cc:
gpus/crosstool: -x cuda
gpus/crosstool: using cocl
gpus/crosstool: PATH=/usr/bin:/usr/local/bin /usr/local/bin/cocl -D_FORCE_INLINES -gencode=arch=compute_30,\"code=sm_30,compute_30\" -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNDEBUG -DEIGEN_MPL2_ONLY -std=c++11 -I. -Ibazel-out/local_linux-py3-opt/genfiles -Iexternal/bazel_tools -Ibazel-out/local_linux-py3-opt/genfiles/external/bazel_tools -Iexternal/eigen_archive -Ibazel-out/local_linux-py3-opt/genfiles/external/eigen_archive --compiler-bindir=/usr/bin/gcc -I . -fPIC -x cu -O2 -c -o bazel-out/local_linux-py3-opt/bin/tensorflow/core/kernels/_objs/gather_functor_gpu/tensorflow/core/kernels/gather_functor_gpu.cu.pic.o tensorflow/core/kernels/gather_functor_gpu.cu.cc
dirname: invalid option -- 'O'
Try 'dirname --help' for more information.
์ ๋ ์ฐ๋ถํฌ 16.04๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉฐ dirname์ coreutils-8.25-2ubuntu2์์ ๊ฐ์ ธ์์ต๋๋ค.
@hughperkins ์ด ์ง์นจ์ผ๋ก ์ ์ฅ์์ TF dockerfile์ ์กฐ์ ํ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฝ๊ฒ ์ค์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์, ๋ ๊ธฐ๋ฅ์ ์ธ ๊ฒ์ด ์์ ๋. ๊ธฐ๋ณธ์ ์ผ๋ก ๊ทํ๊ฐ ๊ฒ์ํ ์ด ์ง์นจ์ ์ฌ๋ณธ์ด์ ๊ณผ๊ฑฐ์ ๋๋ค.
ATI 6770M(OpenCL 1.2)์ด ์ค์น๋ 2015๋ ํ๋ฐ MacBook์ MacOS 10.10.5์์ ์ด๊ฒ์ ์คํ ์ค์ ๋๋ค.
Xcode 8, Anaconda(Python 3.5) ๋ฐ clang+llvm์ ํด๋นํ๋ MacPorts๋ฅผ ์ค์นํ์ต๋๋ค.
sudo ํฌํธ ์ค์น clang-3.8 llvm-3.8
NUM_PROCS=$(system_profiler SPHardwareDataType | grep "์ด ์ฝ์ด ์" | cut -d ":" -f 2)
perl -pi.bak -e 's|(CLANG)=.+|$1=/opt/local/libexec/llvm-3.8/bin/clag++|' ๋ฉ์ดํฌํ์ผ
perl -pi -e 's|(LLVM_CONFIG)=.+|$1=/opt/local/bin/llvm-config-mp-3.8|' ๋ฉ์ดํฌํ์ผ
perl -pi -e 's|(LLVM_INCLUDE)=.+|$1=/opt/local/libexec/llvm-3.8/include|' ๋ฉ์ดํฌํ์ผ
grep -Rl 'include "CL/' * | xargs perl -pi.bak -e 's|include "CL/|"OpenCL/|g' ํฌํจ
make -j ${NUM_PROCS}
์ด๊ฒ์ ๋ด๊ฐ ์ป๋ ํ :
$ make -j ${NUM_PROCS}
mkdir -p ๋น๋
mkdir -p ๋น๋
mkdir -p ๋น๋
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/hostside_opencl_funcs.o -std=c++11 -fPIC -g -O2 -I pwd
/include -I pwd
/src/EasyCL src/hostside_opencl_funcs.cpp
/opt/local/libexec/llvm-3.8/bin/clang++ -I/usr/lib/llvm-3.8/include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT -D__STDC_LIMIT_MACROS -std=c++11 -fcxx-exceptions -c -o build/mutations.o -g -I/opt/local/libexec/llvm-3.8/include src/mutations.cpp
/opt/local/libexec/llvm-3.8/bin/clang++ -I/usr/lib/llvm-3.8/include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT -D__STDC_LIMIT_MACROS -std=c++11 -fcxx-์์ธ -c -o build/struct_clone.o -g -I/opt/local/libexec/llvm-3.8/include src/struct_clone.cpp
/opt/local/libexec/llvm-3.8/bin/clang++ -I/usr/lib/llvm-3.8/include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT -D__STDC_LIMIT_MACROS -std=c++11 -fcxx-์์ธ -c -o build/readIR.o -g -I/opt/local/libexec/llvm-3.8/include src/readIR.cpp
src/hostside_opencl_funcs.cpp:17์ ํฌํจ๋ ํ์ผ:
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl.h:91:16: ๊ฒฝ๊ณ : 'ํธ์คํธ' ์์ฑ์ด ๋ฌด์๋จ [-Wignored-attributes]
์์ฑ ((ํธ์คํธ)) ์ธ๋ผ์ธ unsigned long long atomicExch(ํ๋ฐ์ฑ unsigned long long _p, unsigned long long val) {
^^
src/hostside_opencl_funcs.cpp:194:33: ์ค๋ฅ: 'in' ๋ฉค๋ฒ ํจ์์ ๋ํ ํธ์ถ์ด ๋ชจํธํฉ๋๋ค.
launchConfiguration.kernel->in(์คํ์
);
~ ~ ~ ~ ~~~ ^~
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:101:15: ์ฐธ๊ณ : ํ๋ณด ํจ์
CLKernel in(๋ถ๋๊ฐ);^^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:104:15: ์ฐธ๊ณ : ํ๋ณด ํจ์CLKernel *in(int32_t ๊ฐ);^^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:106:15: ์ฐธ๊ณ : ํ๋ณด ํจ์CLKernel *in(int64_t ๊ฐ);^^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:108:15: ์ฐธ๊ณ : ํ๋ณด ํจ์CLKernel *in(uint64_t ๊ฐ);^^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:110:15: ์ฐธ๊ณ : ํ๋ณด ํจ์CLKernel *in(uint32_t ๊ฐ);^^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:73:15: ์ฐธ๊ณ : ํ๋ณด ํจ์๊ฐ ์คํ ๊ฐ๋ฅํ์ง ์์: 'size_t'(์ผ๋ช
'unsigned long ') 'easycl::CLArray *'์ฒซ ๋ฒ์งธ ์ธ์์ ๋ํดCLKernel *in(CLArray *clarray1d) { ๋ฐํ ์
๋ ฅ(clarray1d);
}^^/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/src/EasyCL/CLKernel.h:91:36: ์ฐธ๊ณ : ํ๋ณด ํจ์ ํ
ํ๋ฆฟ์ด ์คํ ๊ฐ๋ฅํ์ง ์์: 2๊ฐ์ ์ธ์๊ฐ ํ์ํ์ง๋ง 1๊ฐ๊ฐ ์ ๊ณต๋จ์ฃผํ
src/struct_clone. cpp:245 :12: ๊ฒฝ๊ณ : 11 ์ด๊ฑฐํ ๊ฐ์ด ์ค์์น์์ ์ฒ๋ฆฌ๋์ง ์์: 'HalfTyID', 'X86_FP80TyID', 'FP128TyID'... [-Wswitch]
์ค์์น(typeID) {
^^
1๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ์์ฑ๋์์ต๋๋ค.
launchConfiguration.kernel->in((int64_t)offset);
์ด ํจ์น๊ฐ ์๋ํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด๊ฒ์ ์ ์ฉํ ํ ๋น๋๋ฅผ ๊ณ์ํ๋ฉด size_t ๋ค์์คํ์ด์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
$ make -j ${NUM_PROCS}
mkdir -p ๋น๋
mkdir -p ๋น๋
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/hostside_opencl_funcs.o -std=c++11 -fPIC -g -O2 -I pwd
/include -I pwd
/src/EasyCL src/hostside_opencl_funcs.cpp
/opt/local/libexec/llvm-3.8/bin/clang++ -I/usr/lib/llvm-3.8/include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT -D__STDC_LIMIT_MACROS -std=c++11 -fcxx-exceptions -o build/ir-to-opencl -g -I/opt/local/libexec/llvm-3.8/include src/ir-to-opencl.cpp build/struct_clone .o ๋น๋/readIR.o src/ir-to-opencl-common.cpp ๋น๋/mutations.o /opt/local/bin/llvm-config-mp-3.8 --ldflags --system-libs --libs all
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/cocl_events.o -std=c++11 -fPIC -g -O2 -I pwd
/src/CLBlast/include -I pwd
/include -I pwd
/src/EasyCL src/cocl_events.cpp
/opt/local/libexec/llvm-3.8/bin/clang++ -I/usr/lib/llvm-3.8/include -fPIC -fvisibility-inlines-hidden -ffunction-sections -fdata-sections -g -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT -D__STDC_LIMIT_MACROS -std=c++11 -fcxx-exceptions -o build/patch-hostside -g -I/opt/local/libexec/llvm-3.8/include src/patch-hostside.cpp ๋น๋/readIR.o ๋น๋/ mutations.o ๋น๋/struct_clone.o src/ir-to-opencl-common.cpp /opt/local/bin/llvm-config-mp-3.8 --ldflags --system-libs --libs all
src/hostside_opencl_funcs์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค. cpp:17 :
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl.h:91:16: ๊ฒฝ๊ณ : 'ํธ์คํธ' ์์ฑ์ด ๋ฌด์๋จ [-Wignored-attributes]
์์ฑ ((ํธ์คํธ)) ์ธ๋ผ์ธ unsigned long long atomicExch(ํ๋ฐ์ฑ unsigned long long _p, unsigned long long val) {
^^
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/cocl_blas.o -std=c++11 -fPIC -g -O2 -I pwd
/src/CLBlast/include -I pwd
/include -I pwd
/src/EasyCL src/cocl_blas.cpp
1๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ์์ฑ๋์์ต๋๋ค.
/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/cocl_error.o -std=c++11 -fPIC -g -O2 -I pwd
/src/CLBlast/include -I pwd
/include -I pwd
/src/EasyCL src/cocl_error.cpp
src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค. cpp:15 :
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl_blas.h:8:9: ์ค๋ฅ: 'std' ๋ค์์คํ์ด์ค์ 'size_t'๋ผ๋ ์ ํ์ด ์์ต๋๋ค. ๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํ๋์?
typedef std::size_t cublasStatus_t;
^ ~ ~
size_t
/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จ
typedef SIZE_TYPE size_t;
^^
src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค. cpp:15 :
/Users/erybski/git/tensorflow-cl/third_party/cuda-on-cl/include/cocl/cocl_blas.h:17:5: ์ค๋ฅ: 'std' ๋ค์์คํ์ด์ค์ 'size_t'๋ผ๋ ์ ํ์ด ์์ต๋๋ค. ๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํ๋์?
std::size_t cublasCreate(cublasHandle_t ํฌ๋ค);^ ~ ~size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จtypedef SIZE_TYPE size_t;^^src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค.
๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํ๋์?std::size_t cublasDestroy(cublasHandle_t ํธ๋ค);^ ~ ~size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จtypedef SIZE_TYPE size_t;^^src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค.
๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํ๋์?std::size_t cublasSgemm(cublasHandle_t blas, int transA, int transB, int M, int N, int K,^ ~ ~size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จtypedef SIZE_TYPE size_t;^^src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค.
๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํ๋์?std::size_t cublasSetPointerMode(cublasHandle_t ํธ๋ค, cublasPointerMode_t ๋ชจ๋);^ ~ ~size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จtypedef SIZE_TYPE size_t;^^src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค.
๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํฉ๋๊น?std::size_t cublasGetPointerMode(cublasHandle_t ํธ๋ค, cublasPointerMode_t *๋ชจ๋);^ ~ ~size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จtypedef SIZE_TYPE size_t;^^src/cocl_blas์ ํฌํจ๋ ํ์ผ์ ์์ต๋๋ค.
๋จ์ํ 'size_t'๋ฅผ ์๋ฏธํฉ๋๊น?std::size_t cublasSetStream(cublasHandle_t ํธ๋ค, cudaStream_t streamId);^ ~ ~size_t/opt/local/libexec/llvm-3.8/bin/../lib/clang/3.8.1/include/stddef.h:62:23: ์ฐธ๊ณ : 'size_t'๊ฐ ์ฌ๊ธฐ์ ์ ์ธ๋จtypedef SIZE_TYPE size_t;^^/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/cocl_memory.o -std=c++11 -fPIC -g -O2 -I pwd
/src/CLBlast/include -I pwd
/include -I pwd
/src/EasyCL src/cocl_memory.cpp/opt/local/libexec/llvm-3.8/bin/clang++ -c -o build/cocl_device.o -std=c++11 -fPIC -g -O2 -I pwd
/src/CLBlast/include -I pwd
/include -I pwd
/src/EasyCL src/cocl_device.cpp7๊ฐ์ ์ค๋ฅ๊ฐ ์์ฑ๋์์ต๋๋ค.make: *_* [build/cocl_blas.o] ์ค๋ฅ 1make: * * ๋๋์ง ์์ ์์
์ ๊ธฐ๋ค๋ฆฌ๋ ์ค....
์ค๋ ๋๋ฅผ ๊ณ์ ์ฝ์ ์ ์๋๋ก ๊ธด ๋ก๊ทธ์จ ์์ ์ ํธ์ํ ์ ์์ต๋๊น?
์ง๋ฌธ: ์ฃผ์ ๊ณต๊ฐ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๊ณ ์์ต๋๊น?
@hughperkins SYCL ์ฌ์์ ์น์
5.8("์ฃผ์ ๊ณต๊ฐ ๊ณต์ ")์ ์ค๋ช
๋์ด ์์ต๋๋ค.
๊ตฌํ์ด ๋ค์ํ ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ์ฒ๋ฆฌํด์ผ ํ๋ ๋ฐฉ๋ฒ. ์ด
PlayStation 3์ ๋ํด ์ํ๋ ์ด์ ์์
๊ณผ ์ ์ฌํ๋ฉฐ ์ ์ค๋ช
๋์ด ์์ต๋๋ค.
์ด ๋ฐฑ์: ์คํ๋ก๋ โ ์ด๊ธฐ์ข
์ผ๋ก ์ฝ๋ ๋ง์ด๊ทธ๋ ์ด์
์๋ํ๋ฉํฐ์ฝ์ด ์์คํ
๋๋ C++: Clang์ ์ฌ์ฉํ์ฌ ๋จ์ผ ์์ค SYCL ๋ฐ HSA ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ ์ง์
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@hughperkins ๋ด ARM ๋ณด๋๋ฅผ ์ ์ฉํ๊ธฐ ์ํด tensorflow-opencl repo ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๊น? ๋ด ARM ๋ณด๋์๋ opencl 1.2๋ฅผ ์ง์ํ๋ Imagination GPU๊ฐ ์์ต๋๋ค.
tf/intel ์ง์์ ๊ฒ์ํ๋ ๋์ ์ด ์ค๋ ๋๋ฅผ ์ฐ์ฐํ ๋ฐ๊ฒฌํ์ต๋๋ค.
Intel MacBook Pro๊ฐ ์์ต๋๋ค. ์ด๋ป๊ฒ ๋์๋๋ฆด๊น์? ๋๋ c/c++๋ฅผ ๋ชจ๋ฅด์ง๋ง ๋น๋/์ปดํ์ผ/ํ ์คํธ ์ง์นจ์ ๋ฐ๋ฅด๊ณ (pastebin) ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค...
derek$ system_profiler SPDisplaysDataType
๊ทธ๋ํฝ/๋์คํ๋ ์ด:
Intel Iris:
Chipset Model: Intel Iris
Type: GPU
Bus: Built-In
VRAM (Dynamic, Max): 1536 MB
Vendor: Intel (0x8086)
Device ID: 0x0a2e
Revision ID: 0x0009
Metal: Supported
Displays:
Color LCD:
Display Type: Retina LCD
Resolution: 2560 x 1600 Retina
Retina: Yes
Pixel Depth: 32-Bit Color (ARGB8888)
Main Display: Yes
Mirror: Off
Online: Yes
Automatically Adjust Brightness: Yes
Built-In: Yes
PL2202W:
Resolution: 1680 x 1050 @ 60 Hz
Pixel Depth: 32-Bit Color (ARGB8888)
Display Serial Number: 05884C7A57014
Mirror: Off
Online: Yes
Rotation: Supported
Adapter Type: Apple Mini DisplayPort To VGA Adapter
Automatically Adjust Brightness: No
Adapter Firmware Version: 1.03
@hughperkins ์ง์ํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
arm ํ๋ซํผ์์ cuda-on-cl์ ์ปดํ์ผํ๋ ค๊ณ ํฉ๋๋ค. cuda-on-cl์ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
๋ด ARM ๋ณด๋ ์ ๋ณด:
arm64, gcc 4.9, clang ๋ฐ llvm 3.5, openCL 1.2
* clang++-3.8 ๋ฒ์ ์ ์ฌ์ฉํด์ผ ํ๋์? *
์์ ํด๋ก --์ฌ๊ท https://github.com/hughperkins/cuda-on-cl
๋ง๋ค๋ค
์ค๋ฅ:
clang++-3.8: ๋ช
๋ น์ ์ฐพ์ ์ ์์
๋ค์๊ณผ ๊ฐ์ด Makefile์ ํธ์งํฉ๋๋ค. CLANG=clang++ LLVM_CONFIG=llvm-config LLVM_INCLUDE=/usr/include/llvm
๊ทธ๋ฐ ๋ค์ ๋ค์ ๋ง๋ญ๋๋ค.
์ค๋ฅ:
src/mutations.h:3:10: ์น๋ช
์ ์ธ ์ค๋ฅ: 'llvm/IR/Module.h' ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค.
make run-test-cocl-cuda_sample์ ์คํํด ๋ณด์ญ์์ค.
make: cocl: ๋ช
๋ น์ ์ฐพ์ ์ ์์
@hughperkins ํ๋ฒ ํด๋ณด๊ฒ ์ต๋๋ค.
tensorflow๋ก keras๋ฅผ ํ ์คํธํ๋ ๋์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
keras$ KERAS_BACKEND=tensorflow pytest3
์ถ๋ ฅ ์ค๋ฅ:
Invalid kernel name, code -46, kernel _ZN5Eigen8internal15EigenMetaKernelINS_15TensorEvaluatorIKNS_14TensorAssignOpINS_9TensorMapINS_6TensorIfLi1ELi1EiEELi16ENS_11MakePointerEEEKNS_18TensorCwiseUnaryOpINS0_12scalar_rightIffNS0_17scalar_product_opIffEEEEKNS4_INS5_IKfLi1ELi1EiEELi16ES7_EEEEEENS_9GpuDeviceEEEiEEvT_T0_
__internal__ build log:
"/tmp/OCL11307T1.cl", line 3: error: variable with automatic storage duration
cannot be stored in the named address space
local float mem[1024];
์ํธ:
inline float __shfl_down_3(float v0, int v1, int v2) {
local float mem[1024];
int tid = get_local_id(0);
int warpid = tid % 32;
int warpstart = tid - warpid;
mem[tid] = v0;
//barrier(CLK_LOCAL_MEM_FENCE);
int warpsrc = warpid + v1;
warpsrc = warpsrc >= 32 ? warpid : warpsrc;
return mem[warpstart + warpsrc];
}
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ์ด๋ฆ์ ricardo์ ๋๋ค. ์ ๋ C++ ๊ฒฝํ์ด ๋ง์ C++ ํ๋ก๊ทธ๋๋จธ์ด๋ฉฐ Cuda์ ๋ํ ์ง์์ด ๊ฑฐ์ ์์ต๋๋ค. ์ด ๋ ธ๋ ฅ์ ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค. ์ด ์ผ์ ์ด๋ป๊ฒ ๊ธฐ์ฌํ ์ ์์ต๋๊น?
์, Mali-T628 MP6(OpenGL ES 3.0/2.0/1.1 ๋ฐ OpenCL 1.1 ์ ์ฒด ํ๋กํ)์ด ์๋ Odroid Xu3๊ฐ ์์ต๋๋ค.
OS์์ ์คํ: LUbuntu 1404 64๋นํธ
๋๋ ์์ ํ ์ค์น๋ฅผ ๋ง๋ค๊ณ ์ด ํ๋ซํผ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ ๊ฒ์
๋๋ค.
๋ฒ๊ทธ์ ๋ํด ๋ฒ๊ทธ ๋ชฉ๋ก(Bugzilla์ ๊ฐ์ ๊ฒ)์ด๋ ๋ฒ๊ทธ ๋ชฉ๋ก์ด ์๋ ์คํ๋ ๋์ํธ๊ฐ ์์ต๋๊น?
๊ฑด๋ฐฐ!
HIP๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/blob/master/docs/markdown/hip_faq.md#how -does-hip-compare-with-opencl
https://github.com/RadeonOpenCompute/hcc
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45
"๋น์ ์ ์์์ด ์ด๋ฃจ์ด์ง๊ณ ์์ต๋๋ค. Eigen์ HIP๋ฅผ ํตํด AMD GPU๋ฅผ ํตํด ์ด์๋๊ณ ์์ต๋๋ค. ๋น์ ์ ์์ฒญ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์ ์ฐ๋ฆฌ์ ๋ชจ๋ GFX8 GPU์ ํจ๊ป ์ ๊ณต๋๋ FLOAT16์ ์ง์ํ๋ ํ์คํ๋ ๋๊ตฌ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋์ง์
๋๋ค. ์์์ด ์ด๋ฃจ์ด์ก์ต๋๋ค."
AMDGPU ์ปดํ์ผ๋ฌ์ ๊ฐ๋ฐ ๋ถ๊ธฐ๋ ์ด์ FP16/Int16์์ Float ๋ฐ ๊ทธ ๋ฐ๋๋ก ๋ณํํ๊ธฐ ์ํด ์ํฅ ๋ณํ ๋ฐ ํํฅ ๋ณํ ๋ช
๋ น์ด๋ก FP16/Int16์ ์๋ฎฌ๋ ์ดํธํ๋ ๋์ Float16 ๋ฐ Int16 ๊ธฐ๋ณธ ๋ช
๋ น์ด๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.
์ด๊ฒ์ ๋ณํ ๋ฐ ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฐ ์ ํ์ ํ๋ ฌ ๊ณฑ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์คํํ๋ ํผ์ง ํ๋์จ์ด์ ๋ํ f16 ํ ์คํธ์ ๋๋ค."
๋ํ ๊ด๋ จ์ด ์์ง๋ง 1.2 ๋์ syCL/openCL 2.0์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. nvidia๋ ์ด๋ฏธ CUDA๋ฅผ ํตํด ์ง์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ openCL 2.0์ AMD์ Intel Windows ๋๋ผ์ด๋ฒ ๋ชจ๋์์ ์ง์๋ฉ๋๋ค. ๋ํ AMD๋ ๊ณง Linux์ฉ un openCL 2.0 ๋๋ผ์ด๋ฒ(Intel์์ ์ฌ์ฉํ ์ ์์, opensource magic)๋ฅผ ๊ณต๊ฐํ ๊ฒ์ด๋ผ๊ณ ๋ฐํ์ต๋๋ค(Intel์ ์ด๋ฏธ ์ฑ์์ด ํ์ํ Linux openCL 2.0 ๊ตฌํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.) Intel๊ณผ AMD์ ๋ฌผ์ด๋ณด๋ฉด ์๋ง๋ ํ ์ํ๋ก๋ ๊ฒฝ์ ์ ์ด์ต์ ์ํด ์ค์ํ๊ธฐ ๋๋ฌธ์ ์์ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ์ด๋ฏธ ์ด ์ฝ๋ฉํธ ์น์ ์์ ๊ทธ๋ค์ด ๋๊ณ ์ถ๋ค๊ณ ๋งํ์ต๋๋ค. ๋ํ ๋ชจ๋ ์ฃผ์ ARM ์ ์กฐ์ฌ๋ openCL 2.0์ ์ง์ํฉ๋๋ค. ์ด๊ฒ์ Android(Google์ ๊ฒฝ์ ์ ์ด์ต์ ํด๋น), ๋ผ์ฆ๋ฒ ๋ฆฌ์ ๊ฐ์ ์ค๋งํธ TV ๋ฑ์ ๋ง์ ๊ธฐํ๋ฅผ ์ด ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๊ธฐ์๋ ๊ฒฐ๊ตญ ์ง์๋์ง ์๋ ํ๋์จ์ด์ ๋ํ opencl 1.2 ํด๋ฐฑ ๊ณ์ธต์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ตฌํ์ ๋ํ openVX(ํ์ฌ ๋ชจ๋ ์ฃผ์ ํ๋์จ์ด ์ ์กฐ์
์ฒด๊ฐ ์ง์ํ๊ณ AMD๋ ์คํ ์์ค ๊ตฌํ์ด ์์)์ https://www.khronos.org/news/press/khronos-launches-dual-neural-network ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด Spir-V(Vulkan ๋ฐ openGL์์ ๋์์ ์ฌ์ฉํ ์ ์์)์
๋๋ค.
์ด๋ฏธ ๋งํ ๊ฒ์ ๋ณต์ ํ๊ณ ์๋ค๊ณ ๋งํ ์ ์์ง๋ง ์ข
ํฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก tensorflow๊ฐ HSA๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น?
http://www.hsafoundation.com
HSA๋ Android์์ ํ๋ฅญํ ๊ฒ์
๋๋ค.
HIP๊ฐ ์ ์ฉํ์ง ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ผ๋ถ AMD ์นด๋์์๋ง ์ง์๋๋ฏ๋ก ๋ชจ๋ ์ฅ์น๋ฅผ ์ง์ํ๋ ค๋ฉด OpenCL ๊ตฌํ์ด ํ์ํฉ๋๋ค. HIP ๊ตฌํ์ด ํ์ ํ๊ฒ ๋ ๋น ๋ฅด๋ค๋ฉด ์ฌ์ ํ ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค. ๊ทธ๋ด ์๋ ์์ง๋ง ์์ง ๋ง์ ๋ฒค์น๋งํฌ(HIP ๋ OpenCL)๋ฅผ ๋ณด์ง ๋ชปํ์ต๋๋ค. ๋ ๋ค๋ฅธ ์ด์ ๋ cudnn์ ๋์ฒดํ๋ MLOpen(HC๋ก ์์ฑ๋จ)์ผ ์ ์์ง๋ง ์ด๊ฒ์ด ์ผ๋ง๋ ๋น ๋ฅธ์ง ๋๋ ์ด๋ค ๊ธฐ๋ฅ์ ์ง์ํ๋์ง ์ ํ ๋ชจ๋ฆ ๋๋ค.
TensorFlow๋ ๋งค์ฐ ๋ฎ์ ์์ค์ด๊ธฐ ๋๋ฌธ์ HSA๋ฅผ ์ง์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ HC(๋ฐ HIP)๊ฐ ๊ทธ ์์ ๊ตฌํ๋๋ฉฐ if(pocl์ด ๊ทธ๋ ๊ฒ ํจ) ์์ OpenCL์ ๊ตฌํํ ์๋ ์์ต๋๋ค.
๋ฆฌ๋ฃจํผ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ๊ธฐ์ ๋์์ด ๋ ๊น์? http://mozakai.blogspot.ca/2012/05/reloop-all-blocks.html
@hughperkins ์ปดํ์ผ๋ฌ์ ์ฝ๊ฐ์ ์ง์ ์ด ์๋ ๊ฒ์ ๋ณด๋ ๋ฐ๊ฐ์ง๋ง TensorFlow์ ์ฃผ์ ์์ ๋ฒ์ด๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋์ ์ปดํ์ผ๋ฌ ํ๋ก์ ํธ์ GitHub ํ์ด์ง์์ ๋ง์ ์๊ท๋ชจ ํ ๋ก ์ค๋ ๋๋ฅผ ์์ํด์ผ ํฉ๋๋ค. ๋ ์ง์ค์ ์ด๊ณ ์์ฐ์ ์ผ ๊ฒ ๊ฐ์์.
https://github.com/kripken/emscripten-fastcomp/blob/master/lib/Target/JSBackend/Relooper.cpp ๋ ์์ต๋๋ค.
๊ด๋ จ ๋ ผ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/kripken/emscripten/blob/master/docs/paper.pdf?raw=true
์ด๊ธฐ OpenCL/SyCL ์ง์์ https://github.com/tensorflow/tensorflow/pull/5267 ์ ์ฌ์ฉํ์ฌ ๋ง์คํฐ์์ ๋ณํฉ๋์์ต๋๋ค.
์ถํํฉ๋๋ค!
@keryell Btw, triSYCL ์ ์ฅ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ์ต๋๊น? ๊ทธ๊ฒ์ ์ฌ๋ผ์ง ๊ฒ ๊ฐ๊ณ ๊ณต๊ฐ์ ์ผ๋ก ์ก์ธ์คํ ์ ์๋ Khronos์ Gitlab์ ๋ํ ์ฐธ์กฐ๋ง ์ฐพ์ ์ ์์ต๋๋ค.
ํธ์ง: ๊ฐ์ธ ํด๋ก ์ ์ฐพ์์ต๋๋ค. amd์ ํด๋ก ๋ง ์ฌ๋ผ์ก์ต๋๋ค.
@bhack , mac ํ๋ซํผ์์ opencl-docker๋ฅผ ์ง์ํฉ๋๊น?
@alephman ์ ๋ OSX ํ๋ซํผ์ด ์์ง๋ง ์คํ ๋ช ๋ น์ ์ฝ๊ฐ ์กฐ์ ํ๋ฉด ์๋ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@bhack @alephman : ์์ mac์ ๋ํ ๋ด ์๊ฒฌ์ ์ฐธ์กฐํ์ญ์์ค. ๋น๋ ์ง์นจ์ ์๋ ค ์ฃผ์๋ฉด ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
@olesalscheider : ์, triSYCL์ด AMD์์ Xilinx https://github.com/Xilinx/triSYCL ๋ก ์ด๋ํ์ง๋ง ๋ง์ต๋๋ค. ๋ด GitHub ์์ ๊ณต๊ฐ์ ๋ฒ์ ๋ https://github.com/keryell/triSYCL ์์ ์๋ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์์ง TensorFlow์์ triSYCL์ ์๋ํ์ง ์์์ต๋๋ค. ์๋ํ๊ธฐ ์ํด ์ํํด์ผ ํ ํฐ ๋น๋ ๊ตฌ์ฑ ์์ ์ด ์ด๋ฏธ ์์ต๋๋ค.
@keryell triSYCL ์ํ๋ ๋ฌด์์ ๋๊น?
Intel beignet opencl 2.0 ์ง์์ด ๊ฑฐ์ ์๋ฃ๋์์ต๋๋ค!
http://phoronix.com/scan.php?page=news_item&px=Beignet-Birthday-CL2
@bhack triSYCL์ ํ์ฌ Xilinx์์ ์ฃผ๋ก ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. ์ฌ์ ํ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์์ต๋๋ค. Clang/LLVM ๊ธฐ๋ฐ ๊ฐ์ ์ปดํ์ผ๋ฌ๋ ์ฅ์น์์ ์์ ํ ๋จ์ผ ์์ค ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ์ํด ์์ง ๊ฐ๋ฐ ์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ ๊ตฌํ๋ OpenCL ํธํ์ฑ ๋ชจ๋๋ ์ ๊ทผ์๊ฐ ํํํ ์ข ์์ฑ์ ๋ฐ๋ผ ์ง์ฐ ์ ์ก์ ์ํํ๋ SYCL ๋ฐํ์์ผ๋ก ํธ์คํธ์ ์ปค๋ ๊ฐ์ ํต์ ์ ๋จ์ํํจ์ผ๋ก์จ ์ด๋ ์ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ด Mac์ OpenCL๊ณผ ํธํ๋ฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ OpenCL๋ก ๋ด ํ ์ํ๋ก๋ฅผ ์คํํ ์ ์์ต๋๊น? ๋ฐฉ๊ธ ์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ ๋ tensorflow์์ opencl์ด ์ง์๋๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
@hughperkins ๋ด Mac์๋ clinfo
๋ช
๋ น์ด ์์ต๋๋ค. ์ด๋ป๊ฒ ํด์ผ ํ๋์? ๊ทธ๋ฌ๋ ๋๋ clang์ ์ฌ์ฉํ์ฌ opencl์ ๋ํ ํ
์คํธ ์ฝ๋ ๋ฅผ ์ฌ๊ธฐ ์์ ์ปดํ์ผํ ์ ์์ผ๋ฉฐ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
clang -framework OpenCL dumpcl.c -o dumpcl && ./dumpcl
Device Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz supports OpenCL 1.2
Device Intel(R) Iris(TM) Graphics 6100 supports OpenCL 1.2
@hughperkins ์๊ฒ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ์ด์ computecpp๋ฅผ ์๋ํ ๊ฒ ๊ฐ์๋ฐ ๋งฅ๋ถ ์์คํ ์ ์์ง computecpp์์ ์ง์๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์๋ก์ด ์ ๋ฐ์ดํธ๋ฅผ ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ๋ด๊ฐ ํ ์ ์๋ ์ ์ผํ ์ผ์ ๋๋ค(TT). BTW, ๋ด Iris 6100์ 8์ธ๋๋ก OpenCL 1.2์ ์ ํฉํฉ๋๋ค.
@hughperkins ์ SYCL 1.2๋ OpenCL 1.2์ ๋ํ ์ ํ์ ์ด๋ฉฐ SYCL 2.2๋ OpenCL 2.2์ ๋ํ ์ ํ์ ์
๋๋ค.
SYCL์ OpenCL ํธํ ๋ชจ๋๋ฅผ ํ์๋ก ํ๋ ๊ฒ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด SYCL์ ์ค์ ๋ก OpenCL์ ์ ํ ํ์๋ก ํ์ง ์๊ธฐ ๋๋ฌธ์ "์ ํ์ ์ผ๋ก"๋ผ๊ณ ๋งํ์ต๋๋ค. ์ค์ ๋ก SYCL์ ์ด๊ธฐ์ข
์ปดํจํ
์ ์ํ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ๋ชจ๋ธ์ด๋ฉฐ ๋ฌด์์ด๋ ์์์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌผ๋ก ์ค์ ๊ตฌํ์๋ OpenCL๋ ํ์ํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์,
์ ๋ ๋น๋ถ๊ฐ TensorFlow ๋ฐ Keras๋ก ํ์ต/์์ ์ค์ด๋ฉฐ macOS์์ OpenCL ์ง์์ด ์๋ํ๋๋ก ํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค... macOS ์ฃผ๋ณ์์ ์ํ๋ ์์ ์ ๋ํ ์์์ด ์์ต๋๊น?
TensorFlow ์ปดํ์ผ์ ์ฑ๊ณตํ์ง๋ง OpenCL์ฉ์ผ๋ก ๊ตฌ์ฑํ๋ ค๊ณ ํ๋ฉด computeCpp 1.2 ์์น๋ฅผ ๋ฌป๋ ๋ฉ์์ง๊ฐ ํ์๋๊ณ macOS์ฉ ComputeCpp๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๋ณด์ธ์. ๊ฒฐ์ฝ ML/Tensorflow/๋๋ OpenCL์ ์ ๋ฌธ๊ฐ๋ ์๋์ง๋ง ๋ด์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋จํ ์ข ์์ฑ์ ์ฌ์ฉํ๋ ํตํฉ ๋ฐ AMD GPU๊ฐ ์๋ ์์คํ ์์ Tensorflow์ ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ํ๋ ์๋ จ๋ Mac ๊ทธ๋ํฝ ๊ฐ๋ฐ์์ ๋๋ค. :)
๋ด๊ฐ ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์์ต๋๋ค?
ํธ๋๋น์ค ๋ก๊ทธ @hughperkins ์์ OS X์ ๋ง์ง๋ง ์ปดํ์ผ ์คํจ๋ฅผ ๋ณด๋ฉด 'xcode-select --install'์ ์คํํ๋ฉด ํด๊ฒฐ๋ ์ ์์ต๋๊น? /usr/include ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. Xcode ๋ฒ ํ๋ฅผ ๋ฆด๋ฆฌ์ค๋ก ์ ๋ฐ์ดํธํ ๋ ์ด ๋ฌธ์ ๊ฐ ์์๊ณ ์ผ๋ถ C++ ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
XLA ์ปดํ์ผ๋ฌ(https://www.tensorflow.org/versions/master/resources/xla_prerelease.html)๊ฐ ๋ฐ์ดํฐ ํ๋ฆ ๊ทธ๋ํ์์ LLVM ์ฝ๋ ์์ฑ์ ์ ๊ณตํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ spir-v ๋ฐ Vulkan์ ์ปดํจํ API์ ๋งค์ฐ ์ฝ๊ฒ ์ก์ธ์คํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ฝ๋ ์์ฑ์ด ์ ๋ฆฌ๋๋ฉด Android์์ ์คํ๋๋ ์ฌ์ฉ๋์ง ์๋ ํตํฉ GPU๊ฐ ๋ง๋ค๋ ์ ์ ๊ฐ์ํ ๋ Google์ด Vulkan ํธํ์ฑ์ ์ ๊ณตํ์ง ์๋๋ค๊ณ ์์ํ ์ ์์ต๋๋ค.
@hughperkins
๋น ๋ฅด๊ฒ: ์ง๊ธ์ ๋ง์ถคํ C++/Object-C ์ฝ๋๋ฒ ์ด์ค์์ Inception v3๋ฅผ ์คํํ๊ณ ๋์ฝ๋ฉ๋ ๋น๋์ค ํ๋ ์์ ๋คํธ์ํฌ์ ์ ๋ฌํ๊ณ ์์ต๋๋ค. ๋ฎ์ ์์ค์ ์๊ตฌ ์ฌํญ์ ์๊ธฐ์๋ TF์ ๋ํด ์ถฉ๋ถํ ์์ง ๋ชปํ์ง๋ง ๋์ ์์ค: ๋ชจ๋ธ ๋ก๋, ์ธ์ ์คํ, ์๋ํ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ์์งํ ๋งํด์ 100% ํธํ์ฑ์ ์๋ฏธํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐ ๋์์ด ๋์ง ์๋๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก TF /InceptionV3๋ฅผ ์ฌ์ฉํ C++ ์ด๋ฏธ์ง ์ธ์์ด ์ ์ ์ถ๋ฐ์ ์ด์์ต๋๋ค.
Mac์์ ์คํ ์ค์ธ cuda-on-cl: ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ธํ์ผ๋ฉฐ ๋ด ์์คํ ์์ ๋น๋๋ฅผ ๋๋ฒ๊ทธ ๋ฐ ์คํํ๊ณ ๋ค์ํ ํ๋์จ์ด ์์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. Dual D700, Nvidia Mac ๋ ธํธ๋ถ ๋ฐ ๋ฐ์คํฌํ ์์คํ .
์์ธํ ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค. ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋ฐ๋ผ ๊ฐ๋ฉฐ ์ต์ ์ ๋คํด ๋์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
ํด, ์ผ๋ถ ๊ธฐ๋ฅ์ด ๋งคํ๋๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ค๋ฉด http://chrec.cs.vt.edu/cu2cl/ ์ ์ฐธ์กฐํ์ญ์์ค.
์ฐ๋ฆฌ ํ์ฌ StreamComputing์๋ ๋น๋ ํ ์คํธ ๋ฐ ๋ฒค์น๋งํน์ ์ํ ๋ค์ํ GPU๊ฐ ์์ผ๋ฉฐ ์ด๋ฅผ ๊ณ ๊ฐ ํ๋ก์ ํธ์ ์ฌ์ฉํฉ๋๋ค. Github์ Jenkins์ ์ฐ๊ฒฐํ์ฌ ๋งค์ฃผ ์คํํ๋๋ก ํ ์ ์์ต๋๋ค.
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ด๋ฒ ์ฃผ์ ๊ตฌ์ฒด์ ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์ฃผ์ ๋ก ๋ค์ ๋์๊ฐ๊ฒ ์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ๋ด ์คํ์์ Gensim ๋ฐ Keras/tensorflow๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ/๊ตฌ๋ฌธ ์ผ์น ๋ถ์์ ๊ดํ ๊ฒ์ ๋๋ค.
ํ ์คํธ์ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค
AMD ์นด๋๊ฐ ์๋ Windows PC๊ฐ ์์ต๋๋ค.
AMD ์นด๋๊ฐ ์๋ MBP
Intel ํตํฉ GPU๊ฐ ์๋ MB
์๋
ํ์ธ์ @hughperkins - ์ ๋ ์ค๋ ์ ๋
AMD R9 390 8GB์์ ์์ ํ
์คํธ ์ธํธ๋ฅผ ์งํํ๊ณ ์์ต๋๋ค. ์ง๊ธ๊น์ง ์ด๋ฏธ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ป์์ต๋๋ค. logistic_regression.py
๋ nan
$ ๋ฅผ ํ๋ จํ๊ณ ๋ฐํํ์ง ์์ต๋๋ค. ๊ทธ๋์, ์ข์! ๋ง์ง๋ง์ segfault๊ฐ ๋ฐ์ํ๋ฏ๋ก ์คํฌ๋ฆฝํธ ๋๋ cl ์ฝ๋์ ์ค๋ฅ๊ฐ ์๋์ง ์กฐ์ฌํ๊ฒ ์ต๋๋ค.
๋ด ๊ฒฐ๊ณผ๋ฅผ ์ด๋์ ํธ์ํด์ผ ํฉ๋๊น? ๊ฐ์ฅ ์ ์ฉํ ์ ์๋ ๊ณณ์ผ๋ก?
์์ ๋ด์ฌ์๊ฐ ๊ทํ์๊ฒ ํธ์ํ ์ ์๋ ํ์ค ๊ฒฐ๊ณผ ์ธํธ๋ฅผ ์์ฑํ๋ ํ์ค "ํ
์คํธ ์คํฌ๋ฆฝํธ"๋ฅผ ์ป์ ์ ์์ต๋๊น(๋๋ ๋ก์ปฌ CI ๋๋ ๊ธฐํ ๋ฌด์์ด๋ )?
py.test
๋ ์ด๋ค ์๋ฃจ์
๋ณด๋ค ์ข์ต๋๋ค. pip
๊ฑฐ๋ฆฌ์ ์์ผ๋ฉฐ tensorflow
์ค์น ํ๋ก์ธ์ค์ ์ผ๋ถ์
๋๋ค.
ํ ์คํธ๋ฅผ ์์ํ ์ดํ๋ก ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์ฌ์ค์ ๋ฐ๊ฒฌํ์ผ๋ฉฐ Python ์ถ๋ ฅ๋ง์ผ๋ก๋ ๋๋ฒ๊ทธํ ์ ์์ ์๋ ์์ต๋๋ค.
Ctrl-C
์ ๋ํ ์๋ต ์์, ํ๋ก์ธ์ค๋ pkill -9
'd์ฌ์ผ ํจ)ํ๊ฑฐ๋ ๋ฆ๊ฒ ์ถฉ๋ํ ์ ์์ต๋๋ค. ์ ํจ์ฑ ๊ฒ์ฌ ๋ถ๋ถ์์ ๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ. ์ถฉ๋(์ธ๊ทธํดํธ)์ Xorg๋ฅผ ๋ค์ด์ํฌ ์ ์์ต๋๋ค.๋ฐ๋ผ์ GPU ์ธก์ ํด๊ฒฐ๋์ง ์์ ํญ๋ชฉ์ด ์๊ณ ์ด๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด ์ข์ segfault๊ฐ ํ์ํฉ๋๊น? ์ ๋ ์์ง GPU ๋ชจ๋ธ์ด๋ OpenCL์ ๋ํด ์ ๋ชฐ๋ผ์ ์ฌ๊ธฐ์์ ๋ง์ ๊ธฐ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ๋๋ก ์กฐ์ฌํ๋ ค๋ฉด GPU ๋๋ฒ๊น ์ถ๋ ฅ์ด ํ์ํ ์ ์์ต๋๋ค.
๋ํ, ๋๋ ๋น์ ์ด github์์ AMD์ ํจ๊ป ์๋ค๊ณ ์๊ฐํ์ง๋ง, ๋น์ ์ ์ด ๋ชจ๋ CUDA-on-CL ์์ ์ ์์ ์ ์๊ฐ์ ํ๋ "๋ถ๋ ์์ด์ ํธ"์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ์ผ์ ์ฃผ๋ํด ์ฃผ์ ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด GPU ํฌ๋ผ์ฐ๋ ํ๋ฉ์ ํตํด ์ฌ๋ฌ๋ถ์ ๋ ธ๋ ฅ์ ๊ธฐ์ฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ๋๋ Patreon์ ์ค์ ํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์ ๋ํ ์๊ฐ ๊ธฐ๋ถ์ ๋ฑ๋กํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
AMD GPU์ ๊ด๋ จํ์ฌ ์ฐ๋ฆฌ๋ AMD์ ํํธ๋์ ๋๋ค. ๋์ณค์ ์๋ ์๋ 8์ผ ์ ์ ๋ด ๋ฉ์์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฐ๋ฆฌ ํ์ฌ StreamComputing์๋ ๋น๋ ํ ์คํธ ๋ฐ ๋ฒค์น๋งํน์ ์ํ ๋ค์ํ GPU๊ฐ ์์ผ๋ฉฐ ์ด๋ฅผ ๊ณ ๊ฐ ํ๋ก์ ํธ์ ์ฌ์ฉํฉ๋๋ค. Github์ Jenkins์ ์ฐ๊ฒฐํ์ฌ ๋งค์ฃผ ์คํํ๋๋ก ํ ์ ์์ต๋๋ค.
๊ฐ ์ปค๋ฐ์์ ์คํ๋๋ CI ์๋ฒ๋ฅผ ์ค์ ํ ๊ฐ๋ฅ์ฑ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๋ฌธ์ ์์ด์. Jenkins๊ฐ ๋ก๊ทธ ํ์ผ์ ๋น๋ ๋ก๊ทธ ๋๋ ํฐ๋ฆฌ์ ์ธ ์ ์๋๋ก ํ๋ก์ ํธ์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ด ํ์ํ ์ ์์ต๋๋ค. ๋๋ ๋จ์ง ๋น์ ์๊ฒ ์คํธ ๋ฉ์ผ์ ๋ณด๋ด์ ์ฐ๋ฆฌ๊ฐ ํ ๋ก ํ ์ ์๋๋ก ํ๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ด๋ฏธ ๋ณด์ จ๊ฒ ์ง๋ง ๋ง์ SYCL ํญ๋ชฉ์ด TensorFlow์ ํธ์๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ง ์์ ํ์ง ์๊ณ ํด์ผ ํ ์ผ์ด ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋๋ฌํ๊ธฐ ์ํด ์ ์งํ๊ณ ์์ต๋๋ค.
๊ธฐ์ฌ์ ๊ด์ฌ์ด ์๊ฑฐ๋ ํ์ฌ ์ํ๊ฐ ๊ถ๊ธํ๋ค๋ฉด ์๋ ๋ถ์์ ํ์ธํ์ญ์์ค.
ํ๋ถ ๊ตฌ์กฐ
Google์ @benoitsteiner ์ TensorFlow ํฌํฌ(https://github.com/benoitsteiner/tensorflow-opencl)๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ
์คํธํ๋๋ก ์ค์ ๋ ๋ ๋์ ๋จธ์ ์ ์น์ ํ๊ฒ ๊ธฐ๋ถํ์ต๋๋ค.
๋ ๋ค AMD GPU๊ฐ ์์ต๋๋ค.
CL_DEVICE_NAME : ํ์์ด
CL_DRIVER_VERSION : 1912.5(VM)
๊ทธ๋ฆฌ๊ณ
CL_DEVICE_NAME : ํผ์ง
CL_DRIVER_VERSION : 1912.5(VM)
Codeplay์์ ์ฐ๋ฆฌ๋ ๋ด๋ ์๋ ์ ์ฉ ๋จธ์ ์ ์ฐพ๊ณ ์์ต๋๋ค. OpenCL ์ฅ์น ๋ค์์ฑ ์ ์ฉ ๋ฒ์๋ฅผ ๊ฐ์ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ง์ํ๋ ๊ด๋ จ ํ๋ซํผ์ ๋ํ ํ
์คํธ ๋น๋ ์๋ฒ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ ์ฌ๋์ด ์๋ค๋ฉด ์ ๋ฉด์์ ๊ธฐ์ฌ์๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค.
ํ์ฌ ์๊ตฌ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฐ๋ถํฌ 14.04
- SPIR์ ์ง์ํ๋ OpenCL ๋๋ผ์ด๋ฒ(Intel CPU/GPU ๋๋ AMD GPU)
@VincentSC ์๋ง๋ ๋น์ ์ด ๊ทธ๊ฒ์ ๋์ธ ์ ์์ต๋๊น?
ํ
์คํธ
ํผ์ง ๋จธ์ ( https://ci.tensorflow.org/job/tensorflow-opencl/127/consoleFull )์์ ์ฐ๋ฆฌ๋ 164๊ฐ์ ์คํจ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
ํ์์ด ๋จธ์ ( https://ci.tensorflow.org/job/tensorflow-opencl/129/consoleFull )์์๋ 56๊ฐ๊น์ง ์คํจํ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์คํจํ ๊ทธ๋๋์ธํธ ํ ์คํธ๋ฅผ ์์ ํ๊ณ ํผ์ง ๋จธ์ ์์ ์ถ๊ฐ ์คํจ์ ์์ธ์ ์กฐ์ฌํ๊ณ ์์ต๋๋ค.
์์ด๊ฒ
์ง๋ ๋ช ๊ฐ์ ๋์ ์ฐ๋ฆฌ๋ Reshaping, Slicing, Basic Reduction ๋ฑ์ ํฌํจํ์ฌ TensorFlow์ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ทน์ ์ผ๋ก ๊ตฌํํด ์์ต๋๋ค. ํ์ฌ ์ฐ๋ฆฌ๋ Contraction์ ๊ตฌํํ๊ณ ์์ต๋๋ค. ์์ธํ ๋ถ์์ https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid =0์ Eigen Tensor ํญ์์ ํ์ธํ ์ ์์ต๋๋ค.
ํ
์ํ๋ก์ฐ
Abs, Floor, IsFinite, Log, Pow, Mul ๋ฑ์ ํฌํจํ ๋ง์ Coefficient-wise ์ฐ์ฐ๊ณผ Reshape, Shape, Identity, Fill ๋ฑ๊ณผ ๊ฐ์ Tensor Manipulations๊ฐ ๊ตฌํ๋์์ต๋๋ค.
์์ธํ ๋ถ์์ https://docs.google.com/spreadsheets/d/1YbHn7dAFPPG_PgTtgCJlWhMGorUPYsF681TsZ4Y4LP0/edit#gid =1719702219์ TensorFlow Kernels ํญ์์ ํ์ธํ ์ ์์ต๋๋ค.
์กฐ์ง
์์ ์คํ๋ ๋์ํธ์๋ ์ ์ฒด ๊ณํ, ๊ณ ์ ํ
์, TensorFlow ์ปค๋, ๋ชจ๋ธ๊ณผ ๊ฐ์ ํ๋ก์ ํธ์ ๋
ธ๋ ฅ์ ๋ถ๋ฅํ๋ ์ฌ๋ฌ ํญ์ด ์์ต๋๋ค.
์ฐธ์ฌ๋ฅผ ์ํ์๋ฉด ์์
์ค์ธ ํญ๋ชฉ ์์ ์ด๋ฆ์ ๊ธฐ์ฌํ๊ฑฐ๋ ๋๋ฝ๋ ์ค์ํ ์ฌํญ์ ์ถ๊ฐํ์ญ์์ค.
๊ฐ์ฌ ํด์,
๋ฃจํฌ
์ด ๋ก๋๋งต์ด ํ์ฑํ๋์ด ์์ต๋๊น?
@lukeiwanski ๋ค, ๋ฌธ์ ์์ต๋๋ค. [email protected] ๋ฅผ ํตํด ์ ํฌ์๊ฒ ์ฐ๋ฝํ์ญ์์ค.
์ด ๋ชจ๋ ๋ด์ฉ์ ์ฝ์ ํ macOS/OS X์์ OpenCL์ ์ฌ์ฉํ๊ธฐ ์ํ ํ์คํ ์๋ฃจ์ ์ด ์์ง ์๋ ๊ฒ ๊ฐ์ต๋๊น? OpenCL ์ง์์ผ๋ก Tensorflow C++๋ฅผ ์ปดํ์ผํ๋ ค๊ณ ํ์ต๋๋ค(๋๊ตฐ๊ฐ๊ฐ ์ง์ ํ ๊ฒ์ฒ๋ผ SYCL 1.2์ฉ ComputeCpp๊ฐ ํ์ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค).
์ฃผ์๋ฅผ ๋๋ฌ๋ณด์์ง๋ง SYCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ด๋ก๋, ์ปดํ์ผ ๋๋ ๋น๋ํ ์์น๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ๊ธฐ https://www.codeplay.com/ ์ ๋๊น? ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ง๋งํ๋ค์...๊ฐ์ฌํฉ๋๋ค.
@dylib ๋ด๊ฐ ์๋ ํ macOS์ฉ ComputeCpp๋ ์์ง ์์ต๋๋ค. ์ฆ, macOS์ฉ OpenCL์ด ์ค๋น๋์ง ์์์ต๋๋ค.
์ฌ์ ํ AMD ์นด๋ ๋ฐ ์ด๋งค ๋๋ผ์ด๋ฒ https://github.com/tensorflow/tensorflow/issues/6497์ ์ฌ์ฉํ์ฌ Ubuntu 16.04์์ ์๋ํ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ด ์๋์?
OpenCL ์ง์์ผ๋ก ์ปดํ์ผ๋ TF๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ /usr/local/computecpp/bin/computecpp_info ์ถ๋ ฅ์ ํ์ธํด์ผ ํ์ต๋๋ค. ๋ด ๊ฒฝ์ฐ์๋
Device is supported : NO - Unsupported vendor
CL_DEVICE_NAME : Pitcairn
CL_DEVICE_VENDOR : Advanced Micro Devices, Inc.
์ด์ GPU์์ TF๋ฅผ ์คํํ๊ธฐ ์ํ ๋ ๊ฐ์ง ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
์ ํ๋ ์์ ์ฅ์น(๊ณต๊ธ์
์ฒด๋ณ)์์ ์ ์๋ํ์ง๋ง ๋
์ CUDA
์ ํ๋ ์์ ์ฅ์น(computecpp ๊ฐ๋ฐ์์ ์ํด) ๋ฐ ๋
์ ์ ์ธ computecpp์์ ์๋ชป๋ ์์
์ฌ์ ํ OpenCL์ ์ง์ํ์ง ์์ต๋๋ค.
@inferrna ์ ์ฒด TensorFlow ๋ฌธ์์ OpenCL ํน์ ์น์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ณง tensorflow.org ์ฌ์ดํธ์ ๊ฒ์๋ ๊ฒ์ ๋๋ค.
@benoitsteiner opencl ์ปจ๋ณผ๋ฃจ์ ์ง์์ ํ์ฌ ์ํ๋ ๋ฌด์์ ๋๊น? ๊ธฐ์กด ์ปค๋์ โโ์ง์ ํ์ฉํ ๊ณํ์ ๋๊น? ํ๋ ฌ ๊ณฑ์ ์ ์ด๋ป์ต๋๊น?
๋์ฐฉ ์์ ์๊ฐ์ด ์์ต๋๊น?
HIP๋ฅผ ์ฌ์ฉํ์ฌ CUDA ์ฝ๋๋ฅผ ํ๋ซํผ์ ๊ตฌ์ ๋ฐ์ง ์๋ ์ฝ๋๋ก ์ด์ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/blob/master/docs/markdown/hip_porting_guide.md
AMD๊ฐ ์์ ์ค์ธ ๊ฒ ๊ฐ์ต๋๋ค: https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45#issuecomment -269827686
XLA ๋ฐฑ์๋ LLVM IR์ https://github.com/KhronosGroup/SPIRV-LLVM์ ์ฌ์ฉํ์ฌ SPIR-V๋ก ๋ณํํ ์ ์์ต๋๊น?
์ด๊ฒ์ ์ด๋ค๊ฐ์? ์ด ํจํค์ง๋ Radeon GPU์์ ์๋ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@bhack https://github.com/tensorflow/tensorflow/issues/6449#issuecomment -269245727์์
@lukeiwanski XLA๊ฐ ๋น์ ์ ๋ ธ๋ ฅ์๋ ์ํฅ์ ๋ฏธ์น ๊น์?
XLA ๋ฐ SYCL ์๋ฃจ์ ์ ๋ค์ํ ์ํฉ์ ๋ํด ๋ณด์์ ์ ๋๋ค. SYCL์ ์์ ํ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ์ฑ๊ณผ ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. XLA๋ ๊ทธ๋ํ์์ ์ ์ ์๋ ํจํด์ ์ต์ ํํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
XLA์ ๋ํ ๋์ ์ดํด๋ LLVM ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐํ์์ ๊ธฐ์กด TensorFlow ๊ทธ๋ํ๋ฅผ ์ต์ ํํ๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ํ์ ์ฌ์ฉ๋ ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์ปดํ์ผ๋ฌ์์ ์ต์ ํ ๋จ๊ณ๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
SYCL ์ ๊ทผ ๋ฐฉ์์ ๊ฐ๋ฐ์๊ฐ ํ์๋ก ํ๋ CUDA ์์ค์ ํ๋ก๊ทธ๋๋ฐ์ ์ ๊ณตํ๋ ์ ์ผํ ์ ๊ทผ ๋ฐฉ์์
๋๋ค.
SYCL์ ํตํด ์ฐ๋ฆฌ๋ ๋ชจ๋ TensorFlow Ops์ ๋ํ ์ง์์ ์ ๊ณตํ๊ณ ์๋ก์ด ์์ ์ ๊ฐ๋ฐ์ ์ฉ์ดํ๊ฒ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
์ฆ, SYCL์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๊ณ ์ฑ๋ฅ ์์ ์ ๋งค์ฐ ์ฝ๊ฒ ์์ฑํ ์ ์์ผ๋ฉฐ XLA๋ ๊ทธ๋ํ์ ๋ชจ๋ ์์ ์ ์ง์ํ๋ ๊ฒฝ์ฐ ์ ์ฒด ๊ทธ๋ํ๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค.
XLA ๋ฐฑ์๋ LLVM IR์ https://github.com/KhronosGroup/SPIRV-LLVM์ ์ฌ์ฉํ์ฌ SPIR-V๋ก ๋ณํํ ์ ์์ต๋๊น?
๊ทธ๊ฒ์ด ๊ฐ๋ฅํ์ง ์์ ์ด์ ๊ฐ ์์ต๋๋ค.
@lukeiwanski ๊ฐ์ฌํฉ๋๋ค. ํนํ https://www.tensorflow.org/versions/master/experimental/xla/develping_new_backend ๋ฅผ ์ฐพ๊ณ ์์์ต๋๋ค.
@k-hashimoto: ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ TensorFlow๋ฅผ Khronos Group์ ํ์ค์ธ OpenCL๋ก, ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก Khronos Group์ ํฌ์คํธ๋ชจ๋ C++ ๋จ์ผ ์์ค ํ์ค์ธ OpenCL SYCL๋ก ์ด์ํ๋ ๊ฒ์ ๋ํด ๋
ผ์ํ๊ณ ์์ต๋๋ค.
ROCm์ ์ผ๋ถ ๊ณต๊ธ์
์ฒด์ ๋ ๋ค๋ฅธ ๋นํ์ค ์๋ฃจ์
์ฒ๋ผ ๋ณด์
๋๋ค.
๋
์ ์๋ฃจ์
์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ด๋ฏธ ์ ์๋ํ๋ TensorFlow์ CUDA ๋ฒ์ ์ด ์์ต๋๋ค. :-)
๋์: OpenCL์ ๋ํ ๋ํ/๋ ธ๋ ฅ์ ์ ์งํ๊ณ ๊ณต๊ธ์ ์ฒด๊ฐ ํด๋น ๊ฐ๋ฐฉํ ํ์ค ์์ ์๋ ๋ชจ๋ ๊ฒ์ ๊ตฌํํ๋๋ก ํฉ๋๋ค.
2017๋ 1์ 17์ผ 10:01:32 GMT+00:00์์ Ronan Keryell [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@k-hashimoto: ์ฌ๊ธฐ์์ TensorFlow๋ฅผ
Khronos Group์ ํ์ค์ธ OpenCL๊ณผ ์ค์ ๋ก ๋ ๋ง์ OpenCL SYCL,
Khronos Group์ ํฌ์คํธ๋ชจ๋ C++ ๋จ์ผ ์์ค ํ์ค.
ROCm์ ์ผ๋ถ ๊ณต๊ธ์ ์ฒด์ ๋ ๋ค๋ฅธ ๋นํ์ค ์๋ฃจ์ ์ฒ๋ผ ๋ณด์ ๋๋ค.
๋ ์ ์๋ฃจ์ ์ ๊ด์ฌ์ด ์๋ค๋ฉด ์ด๋ฏธ CUDA๊ฐ ์์ต๋๋ค.
์ ์๋ํ๋ TensorFlow ๋ฒ์ . :-)--
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -273076892
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
:+1:
๐
:+1:
์ด ๋ฉ์์ง๋ ๋ฉ์ผ ๋ฐฐ๋ฌ ์ํํธ์จ์ด์ ์ํด ์๋์ผ๋ก ์์ฑ๋์์ต๋๋ค.
๊ทํ๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ํ๋ ์ด์์ ํด๋น ์ฃผ์๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
๋ฐ๋ ์ฌ๋. ์ด๊ฒ์ ์ผ์์ ์ธ ์ค๋ฅ์
๋๋ค. ๋ค์ ์ฃผ์๊ฐ ์ฐ๊ธฐ๋์์ต๋๋ค.
[email protected]
๋๋ฉ์ธ biomassiv.es๊ฐ ํ์ฉ๋๋ ์๊ฐ๋น ์ต๋ ์ด๋ฉ์ผ ์(111/100(111%))๋ฅผ ์ด๊ณผํ์ต๋๋ค. ๋ฉ์์ง๋ ๋์ค์ ๋ค์ ์๋๋ฉ๋๋ค.
------- ์ด๊ฒ์ ๋ชจ๋ ํค๋๋ฅผ ํฌํจํ๋ ๋ฉ์์ง์ ์ฌ๋ณธ์
๋๋ค. ------
์์ : github-smtp2-ext6.iad.github.net์์ ([192.30.252.197]:48606 helo=github-smtp2b-ext-cp1-prd.iad.github.net)
esmtps๊ฐ ์๋ chi-server32.websitehostserver.net(TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)
(Exim 4.87)
( [email protected] ์์ ๋ดํฌ)
์์ด๋ 1cWmiQ-0032as-W9
[email protected]์ฉ; 2017๋
1์ 26์ผ ๋ชฉ์์ผ 10:16:03 -0600
๋ ์ง: 2017๋
1์ 25์ผ ์์์ผ 04:09:21 -0800
DKIM-์๋ช
: v=1; a=rsa-sha256; c=ํธ์ํจ/ํธ์ํจ; d=github.com;
s=pf2014; t=1485346161;
bh=N1Pjga2Q9PtEE8ncEMXBtSJzd3kd6HAkJRnj6H2dDEg=;
h= From:Reply-To :To:Cc:In-Reply-To: References:Subject :List-ID:
๋ชฉ๋ก- ์์นด์ด๋ธ:๋ชฉ๋ก-๊ฒ์๋ฌผ :๋ชฉ๋ก- ๊ตฌ๋
์ทจ์:๋ณด๋ธ ์ฌ๋;
b=e5r+VKm/UtpLYj0OCnfEPSYlL6a7xCOd9bN+jS3gify2mRv/g4kofW7ZrEeDyeJT+
GvddVV/w5htZFUbHy9+92pYUHGEYEn2XrmFqc6ZFVoPqBsPW5Cxk31O3Kvi1cwuSPI
g8J4X/qvl1DT+yKrh1es7CeXkr23c8mFNgWkG5qk=
๋ณด๋ธ ์ฌ๋: Miguel Angel [email protected]
๋ต์ฅ: tensorflow/tensorflow [email protected]
๋ฐ๋ ์ฌ๋: tensorflow/tensorflow [email protected]
์ฐธ์กฐ: ๊ตฌ๋
[email protected]
๋ฉ์์ง ID:
์ ํ์ ํ์ฌ:
์ฐธ์กฐ:
์ ๋ชฉ: Re: [tensorflow/tensorflow] OpenCL ์ง์(#22)
๋ง์ ๋ฒ์ : 1.0
์ฝํ
์ธ ์ ํ: ๋ฉํฐํํธ/๋์;
๊ฒฝ๊ณ="--==_mimepart_5888957158d12_78b73ff902fe113c148134";
๋ฌธ์ ์งํฉ=UTF-8
์ฝํ
์ธ ์ ์ก ์ธ์ฝ๋ฉ: 7๋นํธ
์ฐ์ ์์: ๋ชฉ๋ก
X-GitHub-Sender: migpradel
X-GitHub-์์ ์: ๋ฐ์ด์ค๋งค์ค
X-GitHub-์ด์ : ๊ตฌ๋
๋ชฉ๋ก ID: tensorflow/tensorflow
๋ชฉ๋ก ์์นด์ด๋ธ: https://github.com/tensorflow/tensorflow
๋ชฉ๋ก-๊ฒ์๋ฌผ: [email protected]
๋ชฉ๋ก-๊ตฌ๋
์ทจ์:
https://github.com/notifications/unsubscribe/AELU4lfFKxIqjh4jaQkUHuRKD7zj_eKCks5rVztxgaJpZM4Gex3i
X-์๋ ์๋ต-์ต์ : ๋ชจ๋
X-GitHub-์์ ์-์ฃผ์: [email protected]
----==_mimepart_5888957158d12_78b73ff902fe113c148134
์ฝํ
์ธ ์ ํ: ํ
์คํธ/์ผ๋ฐ;
๋ฌธ์ ์งํฉ=UTF-8
์ฝํ
์ธ ์ ์ก ์ธ์ฝ๋ฉ: 7๋นํธ
--
์ด ์ค๋ ๋์ ๊ฐ์
ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -275092277
----==_mimepart_5888957158d12_78b73ff902fe113c148134
์ฝํ
์ธ ์ ํ: ํ
์คํธ/html;
๋ฌธ์ ์งํฉ=UTF-8
์ฝํ
์ธ ์ ์ก ์ธ์ฝ๋ฉ: 7๋นํธ
โ
์ด ์ค๋ ๋์ ๊ฐ์
ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub ์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์ .
----==_mimepart_5888957158d12_78b73ff902fe113c148134--
์ฌ๊ธฐ ์๋ก์ด. ๋ฏธ๋์ tensorflow์์ OpenCL ์ง์์ด ์์ ๊ฒ์ธ์ง ๋ฌป๊ณ ์ถ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด FPGA์์ tensorflow๋ฅผ ์คํํ๊ธฐ ์ํ ์ง์์ด ์์ ๊ฒ์
๋๊น?
๊ฐ์ฌํฉ๋๋ค
@atinzad : OpenCL ๋๋ SYCL ๋ฒ์ ๋ฐ ์์ค ์ฝ๋๊ฐ FPGA ํ๊ฒฝ์์ ์ง์๋๋ ๊ฒฝ์ฐ ์. ๊ทธ๋ฌ๋ TensorFlow๋ ์๋ง๋ ๋ค์ํ ์๋จ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ด์๋ ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ์ด๋๊ฐ์ FPGA์์ ์คํ ์ค์ธ ์ผ๋ถ๊ฐ ์์ ์ ์์ต๋๋ค...
์ด๋จธ๋. https://www.youtube.com/watch?v=LqLyrl-agOw
sycl ๊ฐ๋ฐ ๋ ธ๋ ฅ๊ณผ ์ค๊ธฐ ๋น์ ์์ PTX๊ฐ ์๋ SPIR-V๋ฅผ ๋์์ผ๋ก ํ๋ XLA์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?
์ ๋ง ์ข์ ์ง๋ฌธ์ ๋๋ค. ์๋ง๋ - ๊ด๋ จ๋ ์ฌ๋๋ค์ ์? ์๋ ๊ฒ์ด ๋งค์ฐ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค!
2017๋ 2์ 16์ผ ์คํ 1์ 35๋ถ์ bhack [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
sycl ๊ฐ๋ฐ ๋ ธ๋ ฅ๊ณผ ์ค๊ธฐ ๋น์ ์์ PTX๊ฐ ์๋ SPIR-V๋ฅผ ๋์์ผ๋ก ํ๋ XLA์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
sycl ๊ฐ๋ฐ ๋ ธ๋ ฅ๊ณผ ์ค๊ธฐ ๋น์ ์์ PTX๊ฐ ์๋ SPIR-V๋ฅผ ๋์์ผ๋ก ํ๋ XLA์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?
@bhack ์ด์ TensorFlow Dev Summit์์ ์ด๋ฆด ํ๋ฅญํ ํ ๋ก ์ด ๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฆฌ์์ค/๊ธฐ๊ณ ์ ํ์ํ ํ๋ก๊ทธ๋๋จธ ์ ํ์ ๋ํด ๋ฌธ์ํ์ญ๋๊น?
๊ทธ๋ ๋ค๋ฉด OpenCL/SYCL ์ ๊ทผ ๋ฐฉ์์์ C++ ํ๋ก๊ทธ๋๋จธ/OpenCL C ํ๋ก๊ทธ๋๋จธ๋ ์ ์ํ๊ฒ ์๋๋ฅผ ๋์ด๊ณ ๊ธฐ์ฌํ ์ ์์ต๋๋ค. XLA ์ ๊ทผ ๋ฐฉ์์ ์ปดํ์ผ๋ฌ/llvm ๊ฒฝํ์ด ํ์ํฉ๋๋ค.
XLA๋ ํ์ฅ์ ๋ฐ๋ผ ๋ ๋ง์ ๊ด๋ จ ๋ฆฌ์์ค๊ฐ ์๋ Google์ ๋ด๋ถ ํ๋ก์ ํธ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ํํธ์ผ๋ก ๊ทธ๋ค์ ์์ ์ ํจ์ฌ ๋ ํฝ๋๋ค. ์ปดํ์ผ๋ฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ฌ์ด ์์ ์ด ์๋๋๋ค.
๊ทธ๋ ์ง ์๊ณ ๋ชจ๋ธ์ ๋ํด ๋ฌป๋ ๊ฒฝ์ฐ:
์์ https://github.com/tensorflow/tensorflow/issues/22#issuecomment -272908870์์ ์ธ๊ธํ๋ฏ์ด ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ๋ ธ๋ ฅ์ ๋ณด์์ ์ธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋ณด๊ณ ์์ผ๋ฉฐ ๋ ๋ค ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ค๋ฆ ๋๋ค. ๋๋ ์ฌ์ ํ ๊ทธ ๋ง์ ๋์ํ๋ค.
์๋ฅผ ๋ค์ด @tatatodd ๋ ํ๋ ์ ํ ์ด์ ์์ ์ผ๋ถ Ops๊ฐ XLA๋ฅผ ๋์์ผ๋ก ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์ธ๊ธํ์ต๋๋ค. ๊ทธ ๊ฐ๊ทน์ ๋ฉ์ธ ์ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
๊ณ ๋ คํด์ผ ํ ๋ค๋ฅธ ์ฌํญ์ ์๋ก์ด ํ๋ซํผ์ ๋๋ค. ๋๋ ์๋ก์ด ์นฉ์ด GPU๋ณด๋ค ๋ ์์ฃผ ๋์ค๋ ๊ฒฝํฅ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ์ฃผ์ฅ์ ์ํด ๋ชจ๋ฐ์ผ ๋ฐ ์๋ฒ ๋๋ ํ๊ฒฝ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค(์์น์ ๋์ผํจ).
๋ฐ๋์ฒด๊ฐ SYCL/OpenCL์ ์ง์ํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก TF ์ง์์ ๋ฐ์ ์ ์์ต๋๋ค(์ผ๋ถ ์ฑ๋ฅ ์กฐ์ ์ด ํ์ํ ์ ์์).
์ํคํ ์ฒ๊ฐ ๋ ํนํ๊ณ ์ด์ ๋ํ LLVM ๋ฐฑ์๋๊ฐ ์์ง ์๋ ๊ฒฝ์ฐ XLA์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค(๋๋ฌด ์์ฃผ ๋ฐ์ํ์ง๋ ์์ง๋ง ์ฌ์ ํ ๋ฐ์ํจ). ๋ ์์ฃผ ๋ฐ์ํ๋ ๊ฒ์ ์ํคํ ์ฒ๊ฐ ์ฝ๊ฐ ๋ณ๊ฒฝ๋ ๋ค์ ์๋ก์ด ์ต์ ํ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด ์ต์ ํ ๋จ๊ณ๋ฅผ ์์ ํ์ฌ ์ด์ ์ ์ป๋ ๊ฒ์ ๋๋ค. ์ปค๋ ์ฝ๋๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
XLA์ ๋ํด ์์ธํ ์ดํด๋ณด์ง๋ ์์์ง๋ง XLA๋ PTX ์ปค๋ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ์ด๋ป๊ฒ๋ CUDA API๋ฅผ ํธ์ถํด์ผ ํ๋ฏ๋ก ๋์ SPIR-V ์ปค๋์ ์คํํ๋ ค๋ฉด OpenCL ๋๋ Vulkan์ผ๋ก ์ด์ํด์ผ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์น์ํด์ง๊ธฐ ์ํ ๋ ๋ค๋ฅธ ํ๋ ์์ํฌ์ธ StreamExecutor๋ฅผ ๊ฑฐ์น๊ฒ ๋ ๊ฒ์ ๋๋ค. ์๋ง๋ ์๋นํ ๋ ธ๋ ฅ์ด ํ์ํ ๊ฒ์ ๋๋ค.
์ฆ, ๋ฐ๋์ฒด ํ์ฌ์ ๊ฐ๋ฐ์ ๋ชจ๋๊ฐ ๋ชฉํ๋ก ์ผ์ ์ ์๋ ๋งค์ฐ ํํธํ๋/์ ํ๋ ์ํ๊ณ์์ ํตํฉ๋/์์ ์ ์ธ ํ๋ซํผ์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. XLA๊ฐ ์ง์์ ์ฝ์ํด์ผ ํ๋ ๊ณณ.
@benoitsteiner ๋๋ @drpngx ๋ ๋ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ง์ ๊ฐ์ /๊ฒฐ๋ก ์ผ๋ก ์์ ํ๊ณ ์์ผ๋ฏ๋ก XLA์ ๋ํ ๋ด๋ถ ์ง์์ ๋ ๋ง์ด ์ ๊ณตํ ์ ์์ต๋๋ค.
์, ์ ๋ ํธํ๊ฒ ์ํตํ๊ธฐ ์ํด ์ฌ๋ ์ฑ๋์ ๋ง๋ค์์ด์ https://tensorflowopencl.slack.com/shared_invite/MTQzNDQ0NzgzNzAyLTE0ODcyOTE1NjctMDZhM2RkODRlYg
์์ด๋:
Slack ๋งํฌ๋ ๋ ์ด์ ์ ํจํ์ง ์์ต๋๋ค. ๊ฐ์
์ ์ํ์๋ฉด ์ ์๊ฒ ํ์ ์ฃผ์ธ์.
๋๋ ๊ทธ๊ฒ์ด ์ณ๊ณ ๋ถ๋ถ์ ์ผ๋ก ๋ฐ๋์ฒด ์์ฐ์๊ฐ ์งํฅํ๋ ๋ฐฉํฅ์ ๋ฌ๋ ค ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
"์ด ๋ฐฑ์๋๋ ํจ์จ์ ์ธ ๋ฐฉ์์ผ๋ก XLA HLO ๊ณ์ฐ์ ๋ํ๋ด๋ ๋ฐ ํ์ํ LLVM IR์ ๋ด๋ณด๋ธ ๋ค์ LLVM์ ํธ์ถํ์ฌ ์ด LLVM IR์์ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ๋ด๋ณด๋
๋๋ค." ๋ฐ๋ผ์ LLVM IR์ SPIR-V๋ก ๋ณํ๋ ์ ์์ต๋๋ค . ๊ทธ๋ฌ๋ Opencl SPIRV ๋ฐฉ์ธ ์ Vulkan๊ณผ ๋ค๋ฆ
๋๋ค . Streamexecutor๋ LLVM ๋ณ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ํธ์๋๊ณ ์์ผ๋ฉฐ ์๋ @henline ์ค๋ช
์์ ์๋ ๊ณํ์ opencl์ ํฌํจํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
/ ์ฐธ์กฐ @ dneto0
http://phoronix.com/scan.php?page=news_item&px=OpenCL-2.0-NVIDIA-Preps
Nvidia๋ ๊ณง Linux์ Windows ๋ชจ๋์์ opencl 2.0์ ์ง์ํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ YUGE์
๋๋ค!
์ฑ๋ฅ๋ฉด์์๋ CUDA๋ณด๋ค ๋๋ฆด ์ ์์ต๋๋ค.
Noveau ์ง์์ SPIR-V๋ฅผ ์ฌ์ฉํ์ฌ Opencl ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ํ๊ณ ์์์ ๊ธฐ์ตํ์ญ์์ค. ์ํ๊ฐ ์ฝ๊ฐ ์ค๋๋์์ง๋ง ์๋ก์ด ์ปค๋ฐ์ด ์์ต๋๋ค.
Opencl์ ๋ณธ์ง์ ์ผ๋ก Cuda๋ณด๋ค ๋๋ฆฌ์ง ์์ต๋๋ค. ๋จ์ง nvidia๊ฐ ๊ทธ์ opencl ๋๋ผ์ด๋ฒ๋ฅผ ๋ฌด๋ ฅํ์์ผ ์์ฅ์ ์ฌ์ค์ ์ ๊ทธ๊ณ ์์ ๋ฟ์
๋๋ค.
๊ทธ๋ฌ๋ nvidia์ ์ ๋์ฃผ์๋ ๋ง์นจ๋ด ์ข
๋ง์ ๋ง์ดํ๊ณ ์์ผ๋ฉฐ ๊ทธ๋ค์ ๋ถ๋๋ํ ๋ฐ๊ฒฝ์์ ๊ดํ์กฐ์ฐจ๋ ๊ทธ๋ค์ ๊ตฌํ์ง ๋ชปํ ๊ฒ์
๋๋ค. ์ธ์์ ์ธ Cuda ์๋ ๋ฒ์ญ๊ธฐ HIP ์ฌ์ฉ( https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP)
๊ณง ์ถ์๋ vega apus, dgpus ๋ฐ ARM์ด Windows์ ์ ๊ณต๋๊ณ Nvidia์๋ โโ๋ฏธ๋๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์
๊ณ์์ opencl/syCL/HIP/HSA๋ฅผ ์กฐ๋ง๊ฐ ๋๊ท๋ชจ๋ก ์ง์ํด์ผ ํ๋ ์ด์ ์
๋๋ค.
์๋ ํ์ธ์, tensorflow๊ฐ ์๋ก์ด AMD Radeon Instinct๋ฅผ ์ง์ํ ๊ณํ์ธ๊ฐ์? (http://instinct.radeon.com/en-us/)
์๋ ํ์ธ์, FPGA์ ๋ํ TF-OpenCL ์ง์์ ์ง์ ์ด ์์ต๋๊น?
@alexivia https://github.com/iteong/tensorflow/blob/master/tensorflow/stream_executor/platform.h#L30 ์ ๋ช ๋ฌ ์ ์ ์ ๊ฑฐ๋์์ผ๋ฉฐ Streamexecutor ๋ก๋๋งต์ ๋ช ํํ์ง ์์ต๋๋ค.
@bhack ๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค
๊ทธ๋ ๋ค๋ฉด ์ง์์ด ์๊ฑฐ๋ ์ฌ๋ฐ๋ฅธ ์๋์ด ๋ณด์ฅ๋์ง ์๋๋ค๋ ์๋ฏธ์
๋๊น?
๋ํ, ์ด ์ค๋ ๋์์ ์ฝ์ ๋ด์ฉ์์ ํ
์คํธ๊ฐ ์ฃผ๋ก AMD GPU์ ๊ดํ ๊ฒ์์ ์์์ต๋๋ค... ์ด OpenCL ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ Nvidia GPU์์ ๋คํธ์ํฌ๋ฅผ ํ๋ จํ๋ ์ฌ๋์ด ์์ต๋๊น?
Streamexecutor๋ LLVM ๋ณ๋ ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ด๋ฆ์ด ๋ฐ๋์๊ณ ํ์ฌ๋ acxxel ์ ๋๋ค.
Google ํ์์ด streamexecutor์ https://reviews.llvm.org/rL285111์ ์ฐจ์ด์ ๊ณผ ๋ก๋๋งต์ ์ค๋ช ํ ์ ์์ต๋๊น?
CC @zheng-xq
@henline ๊ณผ @jlebar ๋ streamexecutor์ https://reviews.llvm.org/rL285111์ ์ฐจ์ด์ ์ ๋ตํ๋ ์ ๋ฌธ๊ฐ์ ๋๊น?
Axcell๊ณผ StreamExecutor๋ ๋ณ๊ฐ์ ํ๋ก์ ํธ์ ๋๋ค. ํ์ฌ ๋ณํฉํ ๊ณํ์ด ์์ต๋๋ค. ์ ํํ ๊ณํ์ธ์ง ์ฌ๋ถ๋ TensorFlow ์ฌ๋๋ค์๊ฒ ๋งก๊ธฐ๊ฒ ์ต๋๋ค.
๊ทธ๋์ StreamExecutor์ StreamExecutor llvm๋ ๊ฐ์ ํ๋ก์ ํธ๊ฐ ์๋์๋์?
๋ง์ต๋๋ค. ๊ทธ๋ค์ ๊ฐ์ ํ๋ก์ ํธ๊ฐ ์๋๋๋ค.
2017๋ 3์ 16์ผ ๋ชฉ์์ผ ์ค์ 11:06์ bhack [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๊ทธ๋์ StreamExecutor์ StreamExecutor llvm๋ ๊ฐ์ ํ๋ก์ ํธ๊ฐ ์๋์๋์?
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-287143104 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAJMh_4ODoCVglGRbFBs8UmtSEm6D47_ks5rmXoUgaJpZM4Gex3i
.
@jlebar ๋ค์ ๋ฒ์ ํฌ๋ฆฌ์์ดํฐ๋ธ ์ ๋ ๋ค์ด๋ฐ ;) ํ์ง๋ง ์๋ง๋ ์ฐฝ์์ฑ์ ๋ถ์กฑ์ด ์๋๋ผ TF์์ ์ ์ง ๊ด๋ฆฌ๋๋ ๋๊ตฌ๋ก ๋ถ๊ธฐ๋ ๋ด๋ถ ๋๊ตฌ์ ์ ์คํธ๋ฆผ ๋ ธ๋ ฅ์ด์์ ๊ฒ์ ๋๋ค..
@bhack , ์ฐ๋ฆฌ ๋ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ต๋๋ค. ์ ํํ ์ฐ๋ฆฌ๊ฐ ๋ณ๊ฒฝํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ ๋
StreamExecutor๋ฅผ LLVM ๋๋งค๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์
์ด์ "Acxxel"์ด๋ผ๊ณ ํฉ๋๋ค.
ํผ๋์ ๋๋ ค ์ฃ์กํ๊ณ ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค..
ํ์คํ ๋ฐฐ์ฐ๋ ๊ณผ์ .
2017๋ 3์ 16์ผ ๋ชฉ์์ผ ์ค์ 11์ 24๋ถ์ bhack [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@jlebar https://github.com/jlebar ๋ค์ ๋ฒ ํฌ๋ฆฌ์์ดํฐ๋ธ ์ ๋ ๋ค์ด๋ฐ
;) ํ์ง๋ง ์๋ง๋ ์ฐฝ์์ฑ ๋๊ธฐ์ ๋ถ์กฑ์ด ์๋๋ผ ๊ทธ์
์ ์ง๋ ๋๊ตฌ๋ก ๋ถ๊ธฐ๋ ๋ด๋ถ ๋๊ตฌ์ ์ ์คํธ๋ฆผ ๋ ธ๋ ฅ
TF์์..โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-287148247 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAJMh0MMZvdTJ-bUoa71FBrEqHqFpDjvks5rmX5IgaJpZM4Gex3i
.
์, StreamExecutor, ๊ณ ์ ํ SyCL, XLA ์ฌ์ด์ ์ฌ์ ํ ์ฝ๊ฐ์ ํผ๋์ด ์์ต๋๋ค(์ค์ ๋ก ์ผ๋ถ ์ฌ๋ผ์ด๋์์๋ CPU ๋ฐ opencl ์ด์ธ์ CUDA ๋ฐฑ์๋๋ง ์์).
์ถฉ๋
Google์์ ์ด ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด Apple์ด๋ AMD์ ์ด์ผ๊ธฐํ ์ฌ๋์ด ์์ต๋๊น? AMD ์ฌ๋๋ค ์ ๋๋ฌด ๊ธธ์ ์์ด ๋ฌธ์ ๊ฐ ์๋์ง์กฐ์ฐจ ๋ชจ๋ฅด๊ณ Nvidia๊ฐ ์ ๊ทธ๋ ๊ฒ ํฐ ์์ฅ ์ ์ ์จ์ ๊ฐ์ง๊ณ ์๋์ง ๊ถ๊ธํดํ๊ณ ์์ต๋๋ค. ๋๋ Apple AI ํ์ด ์ฌ๊ธฐ์์ ๊ธฐ๊บผ์ด ๋์์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค... OpenCL์ด 2013๋ ์ดํ๋ก ๊ทธ๋ค์ ํธ์์ ํฌ๊ธฐํ์ง ์์๊ณ ๋ ๋์ ๊ฒ์ ๊ทธ๋ค์ ์์ฌ๊ฐ Google์ ํ๋ฅผ ๋ด์ง ์์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ํ ์ต์ ์ ๋ณด๋ ๋ฌด์์ ๋๊น?
TF 1.1 ๋ฆด๋ฆฌ์ค ๋ ธํธ ์ ๋ฐ๋ฅด๋ฉด Mac GPU(Nvidia๋ง ํด๋น) ์ง์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ด๊ฒ์ด OpenCL ์ ๊ทผ ๋ฐฉ์์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
PR ์ํ๋ ํ๋ก์ฐํ ์ ์์ต๋๋ค. https://github.com/tensorflow/tensorflow/pull/9117
๊ฐ์ฌ ํด์! ์ง๋ ๋ช ๋ฌ ๋์ ์ด ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ณ ์์ต๋๋ค. 2013๋ ๋ถํฐ OpenCL 1.2๋ฅผ ๊ณ ์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ Apple OpenCL ์ฝ์์ ๋ํด ํ์ ์ด ์์ต๋๋ค(Apple์ ์์ง SPIR 1.2 ์ง์์ ์ ๊ณตํ์ง ์์).
OpenCL์ TensorFlow๊ฐ ๊ทํ์ ์์ ์ ๋์์ด ๋๋ค๋ฉด ์ ์๊ฒ ์๋ ค์ฃผ์ญ์์ค. ๋ฅ ๋ฌ๋์ ์ฐ๊ตฌ ๋ฐ ์ค์ต์ ๋ฐ์ ์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ๋ฒ์์์ ๋์์ ๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ ํ์ฌ๋ ๊ธฐ๊ธฐ ๋ด ์ถ๋ก ์์ ์ ์ผ๋ถ๋ก ๋ค์ํ GPU์ ๋ง๊ฒ ์กฐ์ ๋ TensorFlow์ฉ OpenCL ๋ฐฑ์๋๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. Windows ๋ฐ Mac์ ๊ณตํต ๊ตฌ์ฑ์ ํฌํจํ์ฌ ์ฃผ์ ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํ GPU ์ ํ๊ตฐ์์ ํ ์คํธํ์ต๋๋ค. ์ถฉ๋ถํ ๊ด์ฌ์ด ์๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ผ์ข ์ ๊ณต๊ฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ต๋๋ค. ๋ํ Metal(Apple GPU) ๋ฐ LLVM(CPU)๊ณผ ํจ๊ป ์ ๋ก ์ข ์์ฑ ๋ฐฐํฌ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์์ด๋์ด๋ ๋ชจ๋ ์ฅ์น์ ๋ฅ ๋ฌ๋์ ์ํ ํ๋ฅญํ ์ง์์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
@choongng - ์ด ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ์ ์ฉํ๊ณ ๋์์ด ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ด ๊ฐ์ธ ํ๋ก์ ํธ https://github.com/Synopsis/ ๋ OS X์ OpenCL๊ณผ Metal for iOS ๋ฐ Desktop ๋ฐฐํฌ์ ์ด์ ์ ํฌ๊ฒ ๋๋ฆด ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด Tensorflow์ ์ ์ ํ๊ฒ ๋์ ๋๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์๋ง์ ๊ฐ๋ฐ์๋ค์๊ฒ ์์ฒญ๋ ํํ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
@์ถฉ๋
ํ์ฌ์์ OpenCL ๋ฒ์ ์ด๋ ๋ ํฅ๋ฏธ๋ก์ด TensorFlow์ Metal ๋ฒ์ ์ ๊ฒ์ํ๋ฉด ์ด๊ฒ์ด ๋ง์ ์ฌ๋๋ค์๊ฒ ์ข์ ์์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ TensorFlow๋ฅผ ์ป๊ธฐ ์ํด NVidia ์นด๋๋ก eGPU๋ฅผ ๊ตฌ์ถํ๋ ๊ณผ์ ์ ์์ต๋๋ค. / ๋ด ์์ ์ ์ํด ๋ด MBP์์ ์คํ ์ค์ธ Keras...
๊ด์ฌ ์๋ ๋ถ๋ค์ ... eGPU.io ์ปค๋ฎค๋ํฐ๋ก ์ด๋
@์ถฉ๋
๋๋ ์ด๊ฒ์ ๋ณด๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ ๊ฒ์ด๋ฏ๋ก ๋น์ ์ด ๊ทธ๊ฒ์ ์ถ๊ตฌํ ์ ์์ด ๋งค์ฐ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค! ํนํ TF๊ฐ CL ์ง์์ ์ํด ์ ํํ ๊ฐ๋ต์ ์ธ ๋น๊ณต๊ฐ ์์ค ์ปดํ์ผ๋ฌ๊ฐ ํ์ํ์ง ์์ ๊ฒฝ์ฐ..
2017๋ 4์ 26์ผ 03:33:51 GMT+01:00์ Choong Ng [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
OpenCL์ TensorFlow๊ฐ ๊ทํ์ ์์ ์ ๋์์ด ๋๋ค๋ฉด ์ ์๊ฒ ์๋ ค์ฃผ์ญ์์ค.
๋ด๊ฐ ๋ฅ ๋ฌ๋์ ์ฐ๊ตฌ์ ์ค์ต์ ๋ฐ์ ์ํค๋ ๋ฐ ๋์์ ์ค ์ ์๋ค๋ฉด
๋์์ ์ข์ํฉ๋๋ค. ์ฐ๋ฆฌ ํ์ฌ๋ TensorFlow์ฉ OpenCL ๋ฐฑ์๋๋ฅผ ๊ตฌ์ถํ์ต๋๋ค.
์จ๋๋ฐ์ด์ค ์ถ๋ก ์์ ์ ์ผ๋ถ๋ก ๋ค์ํ GPU์ ๋ง๊ฒ ์กฐ์ ๋์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ค์์ ํฌํจํ ์ฃผ์ ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํ GPU ์ ํ๊ตฐ์์ ํ ์คํธํ์ต๋๋ค.
Windows ๋ฐ Mac์ ์ผ๋ฐ์ ์ธ ๊ตฌ์ฑ. ๊ด์ฌ์ด ์ถฉ๋ถํ๋ค๋ฉด
์ผ์ข ์ ๊ณต๊ฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์์ต๋๋ค. Metal(Apple GPU)๋ ์์ต๋๋ค.
๋ฐ LLVM(CPU)๊ณผ ํจ๊ป ์ ๋ก ์ข ์์ฑ ๋ฐฐํฌ๋ฅผ ์ํํฉ๋๋ค. ๊ทธ๋งํผ
๋ชจ๋ ์ฅ์น์ ๋ฅ ๋ฌ๋์ ๋ํ ํ๋ฅญํ ์ง์์ ์ ๊ณตํ๋ ์์ด๋์ด์ ๋๋ค.--
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -297220160
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
ํ๋ช ์ ์ผ ๊ฒ ๊ฐ์์ ;)
@choongng ์ด ๋
์๋ค๊ณผ ํ์ ํฉ์น๋ฉด ๋์์ด ๋์ง ์์๊น
https://github.com/benoitsteiner/tensorflow-opencl
@cathalgarvey ๊ทธ๋ ๋ค๋ฉด ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ ์ํ ์คํ ์์ค ์ปดํ์ผ๋ฌ๋ ๋ฌด์์
๋๊น? ์ผ์์ ๋ง์ ์ฅ์น๋ฅผ ์ฒ๋ฆฌํ๋ ์คํ ์์ค OpenCL ํธํ ์๋ฃจ์
์ ์ฐพ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค...
์ฐ๋ฆฌ๋ ์ด๋ค ์ ์์ ์ด๋ป๊ฒ๋ ์๋ฃจ์
์ ๋ถํธ์คํธ๋ฉํด์ผ ํฉ๋๋ค...
๋๋ ๊ทธ๊ฒ์ด ์ฌ์ด ์์ ์ด๋ผ๊ณ ๋งํ์ง ์์๋ค. ๊ทธ๋ฌ๋ OpenCL์ด ๋ฌธ์ ๊ฐ ์๋๋๋ค. ๊ฒฐ๊ตญ CUDA๋ ์์ ํ ๋ ์ ์ ์ด๋ฉฐ TensorFlow๊ฐ ์ ํํ OpenCL ์ต์ ๋ณด๋ค ํจ์ฌ ๋์ฉ๋๋ค.
์ฆ, ํด๋์ฉ ๋ฏธ๋ค์จ์ด ๋ฐํ์ ๋๋ arrayfire ๋ฑ์ ํฌํจํ์ฌ ์ฒ์๋ถํฐ ์์ํ๋ ๊ฒฝ์ฐ CL ๋๋ cuda ์์คํ ์ ๋ํ ์ต์ ์ด ์์ต๋๋ค. Tensorflow๋ CUDA์ ๋๋ฌด ๋ฌถ์ฌ ์์ต๋๋ค.
๋ ๋ง์ ์ฌ์ฉ์์๊ฒ ๋๋ฌํ๊ณ ์์ฅ ์ํ๊ณ๋ฅผ ์ฌ๊ฐํ๊ฒ ์ฑ์ฅ์ํฌ ์ ์์์๋ ์ฌ๋๋ค์ด CUDA๋ก ์ปค๋์ ๊ธฐ๊บผ์ด ์์ฑํ์ง๋ง CL์ฉ์ผ๋ก ์์ฑํ๋ ๊ฒ์ ์ฃผ์ ํ๋ค๋ ์ฌ์ค์ด ์ค๋ง์ค๋ฝ์ต๋๋ค. ๋ชจ๋ ์ฌ๋์ ์ํ ๊ฐ๋ฐฉํ ํ๋ซํผ์๋ ์ง๊ฐ์ ์ ์ธ ์ด์ ์ด ์์ผ๋ฉฐ ์ฅ๊ธฐ์ ์ผ๋ก ๋ชจ๋ ์ฌ๋์๊ฒ ํฐ ๋น์ฉ ์ ๊ฐ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
SYSCL์ด ๊ฒฐ๊ตญ ๊ทธ๋ ๊ฒ ๋๋ ๋ฐฉ์์ด๋ผ๋ฉด ํ๋ฅญํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ผ๋ถ ์ ๋ช ์ธ์ฌ๋ค์ ๊ณต๊ฐ ํ์ค์ ๋ชฉ์ ์ ๋ฌด์ํ๊ฒ ํ๋ ํ๋ฆฐ์ง ๋ ์ ์ต์ ์ ๊ตฌ๋งคํ๋ ๋์ ๊ณต๊ฐ SYSCL ๋ฐฐํฌ์ ๋์ ํฌ์ํ์ง ์์ต๋๊น?
2017๋ 4์ 28์ผ 09:13:06 GMT+01:00์์ Ronan Keryell [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@cathalgarvey ๊ทธ๋ ๋ค๋ฉด ์ฌ์ฉํ๊ฒ ๋ค๊ณ ์ ์ํ ์คํ ์์ค ์ปดํ์ผ๋ฌ๋ ๋ฌด์์ ๋๊น?
์คํ ์์ค OpenCL ํธํ ์๋ฃจ์ ์ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
์ผ์์ ๋ง์ ์ฅ์น๋ฅผ ์ฒ๋ฆฌํ์ญ์์ค ...
์ฐ๋ฆฌ๋ ์ด๋ค ์ ์์ ์ด๋ป๊ฒ๋ ์๋ฃจ์ ์ ๋ถํธ์คํธ๋ฉํด์ผ ํฉ๋๋ค...--
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -297936468
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
์ด ๋งฅ๋ฝ์์ ๋ฌป๊ณ ์ถ์ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ Tensorflow์ ๊ฐ์ ์ผ๋ถ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ๋ CUDA์ ๋์์ผ๋ก opencl์ ์ฌ์ฉ์ ๋ค์ ๋ฏธ์ง๊ทผํ๊ฒ ํ์ํ๊ณ ์์ต๋๋ค. ๋ฌผ๋ก CUDA๋ cuDNN์ด ๊ฐ๋ฐ๋ "์ธ์ด"์ผ ๋ฟ์ด๋ฉฐ (๋ด ์ดํด๊ฐ ๋ง๋ค๋ฉด) ๋๋ถ๋ถ์ ๋ฅ ๋ฌ๋ ์ธ์ด๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ๋งฅ๋ฝ์์ cuDNN์ opencl ๋ฒ์ ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ํ AMD๋ ์ง์์ ์ผ๋ก ๊ฐ๋ฐ ์ค์ด๋ฉฐ rocM์ด๋ผ๊ณ ๋ถ๋ฅด๋ CUDA์ ๋ํ ์คํ ์์ค ๋์์ ๋ํด ์ด์ผ๊ธฐํด ์์ต๋๋ค. ๊ทธ๋ค์ ๋ํ miOpen์ด cuDNN(์ผ๋ฐ์ ์ธ ๋ฅ ๋ฌ๋ ๊ธฐ๋ฅ์ ์ํ ์์ ์ด์ ๋ธ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๊ณผ ๋๋ฑํ๋ค๊ณ ์ด์ผ๊ธฐํ๊ณ ์์ง๋ง ์์ง ์ถ์๋์ง ์์์ต๋๋ค. AMD ์ ๊ทผ ๋ฐฉ์์ ์ข ๋ ์ด์ฒด์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋จ์ํ GPU๋ก ํค๋น ์ปดํจํ ์ ๋ด๋ณด๋ด๋ ๊ฒ์ด ์๋๋๋ค.
์ด๋ฐ ๋งฅ๋ฝ์์ ๋๋ ์ง์ฌ์ผ๋ก ํผ๋์ค๋ฝ๋ค. ์์ ๋์ด๋ ๊ฒ๊ณผ ๊ฐ์ opencl ๋ ธ๋ ฅ์ ์ด๋ป๊ฒ ์๋ก ๋ง์ต๋๊น? NVIDIA GPU์ ๊ฒฝ์ฐ ์ฝ์ต๋๋ค....CUDA๊ฐ ์๊ณ CUDA๋ก ์์ฑ๋ cuDNN์ด ์์ต๋๋ค. ๋นNVIDIA/๋๋ ์ด ๊ฒฝ์ฐ AMD์ ๊ฒฝ์ฐ ํจ์ฌ ๋ ๋ช ํํด ๋ณด์ ๋๋ค. HIP๋ ์ธ์ ์ ํธ๋ฉ๋๊น? HCC๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํธ๋๋ ๊ฒฝ์ฐ๋ ์ธ์ ์ ๋๊น? ์ธ์ opencl์ ์ ํธํฉ๋๊น? ์ด๋ค ํต์ฐฐ๋ ฅ์ด๋ผ๋ ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
@cathalgarvey ์ด ๋ชจ๋ ๊ฑฐ๋ํ ์ํํธ์จ์ด/ํ๋์จ์ด ์ธํ๋ผ ๋ค์๋ ๋ง์ ์ ์น๊ฐ ์์ต๋๋ค... :-(
์์ํ ๊ณผํ์ ๊ธฐ์ค์ ๊ทผ๊ฑฐํ ๊นจ๋ํ ํด๊ฒฐ์ฑ
์ ๊ฟ๊ฟ ์ ์๋ค ํ๋๋ผ๋ ์ค์ฉ์ฃผ์์ ์ด์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
Google์ TensorFlow ์ํคํ
์ฒ๋ฅผ ๋๋ฌด ๋ง์ด ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ด๊ฒ์ด OpenCL ๊ธฐ๋ฐ ์ํคํ
์ฒ๊ฐ ๋งค์ฐ ์ ์ฌํด์ผ ํ๋ ์ด์ ์ด๋ฉฐ ํ์ ์์ค์ ๋จ์ผ ์์ค๊ฐ ์๋ OpenCL C ์๋ฃจ์
๋์ "CUDA ๋ฐํ์"๊ณผ ๊ฐ์ ๋จ์ผ ์์ค C++๊ฐ ํ์ํฉ๋๋ค. Khronos ์์ญ์์ OpenCL์ ๋จ์ผ ์์ค C++ ๋ฒ์ ์ SYCL์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์์ผ๋๋์ ๊ธฐ๋ฐ์ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ธ๋ฆฐ์ ๋ค๋ฅด์ค ๋ ์ด์ ๋ํด ๋
ผ์ํด ๋ณด๊ฒ ์ต๋๋ค. :-)
๊ทธ ๋์ https://github.com/triSYCL/triSYCL ๋ฐ SYCL์ ๋ค๋ฃจ๋ TensorFlow & Eigen ๋ธ๋์น์ ์์ ๋กญ๊ฒ ๊ธฐ์ฌํ์ญ์์ค...
@keryell XLA:GPU :OpenCL๋ SyCL์ ๊ณํ๋์ด ์๋์ง ์์ญ๋๊น?
์๋ ํ์ธ์ @benoitsteiner , ๋ค์๊ณผ ๊ด๋ จํ์ฌ:
์ ์ฒด TensorFlow ๋ฌธ์์ OpenCL ํน์ ์น์ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ณง tensorflow.org ์ฌ์ดํธ์ ๊ฒ์๋ ๊ฒ์ ๋๋ค.
OpenCL์ ๋ํด tensorflow.org์์ ๊ฒ์ํ๋๋ฐ ์ค์ํ ๊ฒ์ ์ฐพ์ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ชจ๋๊ฐ ๋ฐ๋ก ์ฌ๊ธฐ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ ๊ฐ์ต๋๋ค. "๊ณง"์ ______ ์ด์ ์ ์๋ฏธํฉ๋๊น? ( _์ฌ๊ธฐ์ ์ฌ๋ฏธ์๋ ํ์ ์ฝ์ _ ).
Mac์์ ์๋ํ๋ Tensorflow OpenCL
๋ฅผ ์์ฑํ๋ ค๋ฉด ๋ค๋ฅธ ๊ฒ์ด ํ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง(๊ทธ๋์!) ๊ทํ์ repo๋ฅผ ์ปดํ์ผํ ์ ์์์ต๋๋ค. ์ธ๊ธ๋ triSYCL
์ปดํ์ผ๋ฌ๋ฅผ ๋น๋ํ๋ ค๊ณ ์๋ํ์ง๋ง ์ฌํ๊ฒ๋ ์คํจํ์ต๋๋ค.
@bhack SI Google์์ ์ผํ์ง ์์์ XLA ์ธ๋ถ ์ฌํญ์ ๋ํด ์ ํ ๋ชจ๋ฆ ๋๋ค...
@dylib ๋ถํํ๋ ์ด ๋ชจ๋ ๊ฒ์ ์งํ ์ค์ธ ์์ ์ ๋๋ค...
@keryell ๋ค ์๊ฒ ์ต๋๋ค.. ์ผ๋ถ ํ์์์ ๋ ผ์๊ฐ ๋์๋์ง ๊ถ๊ธํฉ๋๋ค.
OpenCL์ CUDA์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฆ
๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ด ๋์ HIP๋ก ์ด์๋๋ ๊ฒ์ ํ์คํ ๋ณผ ๊ฒ์
๋๋ค.
๊ทธ๋์ +1 ์ ์ํ ์ฌ๋ฌ๋ถ ๋ชจ๋์๊ฒ.
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP
HIP๋ฅผ ํตํด ๊ฐ๋ฐ์๋ CUDA ์ฝ๋๋ฅผ ์ด์ ๊ฐ๋ฅํ C++๋ก ๋ณํํ ์ ์์ต๋๋ค. NVIDIA ๋๋ AMD GPU์์ ์คํ๋๋๋ก ๋์ผํ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ ์ ์์ต๋๋ค.
HIP์ ๋ํด ์๋ ์ฌ๋์ ๋ง์ง ์์ต๋๋ค.
tensorflow ๋ฐ HIP์ ๋ํ ์์ธํ ์ ๋ณด๋ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/37
๊ทธ๋ฆฌ๊ณ
https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/issues/45
์ฐธ๊ณ ์ฌํญ:
๋๋ ์ฐ๋ฆฌ๊ฐ Nvidia ๋ AMD์ ๋ํด ์ธ์ฐ๊ฑฐ๋ ์๋ํด์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋๋ผ์ด ํ๋์จ์ด์ ์ํํธ์จ์ด ์๋๋ฅผ ๋ง๋ค์ด๊ฐ๋ ์กด๊ฒฝ๋ฐ๋ ๊ธฐ์
๋ค์
๋๋ค. ๋์ ๋ ํฐ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ tensorflow๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ง์คํด์ผ ํฉ๋๋ค.
๋ฐ์ธ๋ฉ์ ํตํด ๋ง์ ์ธ์ด๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฒ์ ์ด๋ฏธ ์ข์ ์ถ๋ฐ์ ์ด์ง๋ง ๊ฐ๋ฅํ ํ ๋ง์ ํ๋์จ์ด๋ฅผ ๋์์ผ๋ก ํด์ผ ํฉ๋๋ค. (ํด๋ผ์ฐ๋ ์๋ฃจ์
์ด ํ๋ฅญํ๋๋ผ๋ ํญ์ ์ ๋ต์ ์๋๋๋ค)
์ฌ๊ธฐ Stream์์ HIP์ ๋ํ ๊ฒฝํ์ด ์์ต๋๋ค. ํ ๋ฒ ๋ณผ๊ฒ์.
"์ฐ๋ฆฌ ํ์ฌ๊ฐ ๋ ๋ซ๋ค"๋ ์ฃผ์ฅ์ ๋์ํฉ๋๋ค. TensorFlow๊ฐ ํ๊ฒํ ํด์ผ ํ๋ GPU๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ์ค์ฉ์ ์ด๊ณ ์ ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด Intel GPU ๋๋ ์๋ฒ ๋๋ GPU(Qualcomm, ARM, Imagination), RaspBerry Pi - ์ ๋๋ ์๋์ค?
AMD ๋ผ๋ฐ์จ ๋ฒ ๊ฐ ํ๋ก ํฐ์ด ์๋์
์ฐ๋ฆฌ๋ ROCm ๊ฐ๋ฐฉํ ์ํํธ์จ์ด ํ๋ซํผ๊ณผ ๊ธฐ๊ณ ํ์ต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์์ ์ผ๋ก ๊ณต๊ฒฉ์ ์ผ๋ก ๊ฐ์ ํ๊ณ ์์ต๋๋ค. ๋ํ Caffe(4์ ์ถ์)์ ๊ฐ์ ๊ฐ๋ฐฉํ ๊ธฐ๊ณ ์ง๋ฅ ํ๋ ์์ํฌ๋ ์ง์ํฉ๋๋ค. ์ด๋ฒ ๋ถ๊ธฐ ํ๋ฐ์ Torch์ ๋ํ ์ง์์ ์ ๊ณตํ ๊ณํ์ด๋ฉฐ Tensor Flow ๊ฐ ์์ ์ค์ ๋๋ค.
๊ทธ๋ค์ ์ด๋ฏธ Caffe๋ฅผ ์ถ์ํ์ผ๋ฉฐ ์ด ์ค๋ ๋์์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋น๋/ํ ์คํธ์ ๋ํ ๊ฒฝํ์ ๊ณต์ ํ๋ ๊ฒ์ ๋ฃ๋ ๋ฐ ๋งค์ฐ ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค.
https://github.com/ROCmSoftwarePlatform/hipCaffe
์ค์น๋ฅผ ์์ํ์ง๋ง clinfo
๊น์ง CL์ด ํ์ํ ๋ชจ๋ ๊ฒ์ด ์ ์ง๋๋ ์ฅ์ ๋ฌผ์ ๋ถ๋ช์ณค์ต๋๋ค. ์ด๊ฒ์ด ์ผ๋ถ ์ํํธ์จ์ด ๋ฌธ์ ๋๋ฌธ์ธ์ง ์๋๋ฉด ๋ด ์นด๋(R9 390)๊ฐ ๋จ์ํ ROCm์์ ์ง์๋์ง ์๋ ๊ฒ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
2017๋ 5์ 17์ผ 15:18:32 GMT+01:00์ Bryan Li [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
AMD ๋ผ๋ฐ์จ ๋ฒ ๊ฐ ํ๋ก ํฐ์ดํ
์ฐ๋ฆฌ๋ ROCm ๊ฐ๋ฐฉํ ์ํํธ์จ์ด ํ๋ซํผ์ ์ง์์ ์ผ๋ก ๊ณต๊ฒฉ์ ์ผ๋ก ๊ฐ์ ํ๊ณ ์์ต๋๋ค.
๋ฐ ๊ธฐ๊ณ ํ์ต ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ฐ๋ฆฌ๋ ๋ํ ์คํ ๋จธ์ ์ ์ง์ํ๊ณ ์์ต๋๋ค
Caffe(4์ ์ถ์)์ ๊ฐ์ ์ธํ ๋ฆฌ์ ์ค ํ๋ ์์ํฌ. ๋์ค์ ์ด
๋ถ๊ธฐ์ Torch์ ๋ํ ์ง์์ ์ ๊ณตํ ๊ณํ์ด๋ฉฐ Tensor Flow ๋
์ํ.--
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -302103815
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
@cathalgarvey ์ ๋ AMD GPU์์ Caffe OpenCL ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ ์ ์๋ํฉ๋๋ค. make run test
ํ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ํ
์คํธ ํต๊ณผ
๋ฐ๊ฐ์ต๋๋ค. HW/SW ์ค์ ์ ๋ํด ์ฌ์ญค๋ด๋ ๋ ๊น์? ์๋ฅผ ๋ค์ด, ๋น์ ์ ์ด๋ค ์นด๋
์ฌ์ฉ, Linux์ ๋ฐฐํฌํ/๋ฒ์ ๋ฑ์ ๋ฌด์์
๋๊น?
์ด์ ์ AMDGPU-pro๊ฐ ์์์ง๋ง ROCm์ ์ค์นํ ๋ ์ ๊ฑฐํ์ต๋๋ค.
์ ๋ฅผ ๋ฐฉํดํ๋ ์ ์ฐ์ด ์์ ์ ์์ต๋๋ค.
--
@onetruecathal / @ [email protected]
2017๋
5์ 17์ผ ์์์ผ ์คํ 3์ 50๋ถ, Bryan Li [email protected]
์ผ๋ค:
@cathalgarvey ์ ๋ AMD GPU์์ Caffe OpenCL ๋ธ๋์น๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ
๊ทธ๊ฒ์ ์ ์๋ํฉ๋๋ค. ์คํ ํ ์คํธ๊ฐ ํ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ๋๋ก ํฉ๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
@cathalgarvey
libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libblas-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev cmake python-numpy
cmake -DViennaCL_INCLUDE_DIR=<wherever you downloaded ViennaCL>/ViennaCL-<version> -DOPENCL_INCLUDE_DIRS=<wherever you downloaded ViennaCL>/ViennaCL-<version>/CL/ -DOPENCL_LIBRARIES=/opt/amdgpu-pro/lib/x86_64-linux-gnu/libOpenCL.so.1 ..
์, ์์ OpenCL ๋ถ๊ธฐ ์ธ์๋ naibaf7์ amd ๋ฐ hd ๊ทธ๋ํฝ์ ์ฌ์ฉํ๋ ์์ฉ ํ๋์จ์ด์ ๋ํ ์ค์๊ฐ ์ถ๋ก ์ ์ํด ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ์ฑ ์ (๊ณง) ์ถํํ ์์ ์ ๋๋ค.
์; OpenCL ๋ถ๊ธฐ๊ฐ ์๋ hipCaffe์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ต๋๋ค.
https://github.com/ROCmSoftwarePlatform/hipCaffe
hipCaffe๋ฅผ ๋น๋/ํ
์คํธํ๊ธฐ ์ํด ROCm์ ์ค์นํ๋ฉด ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
AMDGPU-pro, ์๋ง๋ ๋๋ ๋ฐ๋๋ผ ๋ธ๋์น๋ฅผ ๋ค์ ์๋ํ ๊ฒ์
๋๋ค. ๋ณ๋ก๋ค
๋ฌธ์ํ, ๋ถํํ๋ .. ๋๋ ๋ธ๋ผ์ธ๋ "๋ฉ์ดํฌ"๋ฅผ ์๋ํ๊ณ ๋ณผ ๊ฒ์
๋๋ค.
๊ทธ๋์ ๋๋ ์ฌ์ ํ AMD์ ๋ํ ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ฒฝํ์ ๋ฃ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
ROCm/HIP ์คํ; Tensorflow ํฌํฌ์์ ์์
ํ๊ณ ์๋ค๋ฉด ํ๋ฅญํ ๊ฒ์
๋๋ค.
์ค์ ๋ก 3/4 ์ด์์ AMD ์นด๋ ๋ชจ๋ธ์์ ์๋ํ๋ค๋ฉด
์ผ์์.
--
@onetruecathal / @ [email protected]
2017๋
5์ 17์ผ ์์์ผ ์คํ 4:09, Bryan Li [email protected]
์ผ๋ค:
@cathalgarvey
Caffe OpenCL ๋ธ๋์น(ํ ์คํธ๋ ์ปค๋ฐ
c61d48746b2df1d237c64abc7416342ce98f3251)
OS: ์ฐ๋ถํฌ 16.04.2 LTS
Polaris(RX460), ํผ์ง(Fury X) ๋ฐ ํต๊ฐ(W7100)์์ ํ ์คํธ๋จ
๋๋ผ์ด๋ฒ: Linux 16.40 ์ด์์ฉ AMDGPU-Pro ๋๋ผ์ด๋ฒ
๋น์๋CL
์ผ๋ฐ ์ข ์์ฑ: libprotobuf-dev libleveldb-dev libsnappy-dev
libopencv-dev libhdf5-serial-dev protobuf-์ปดํ์ผ๋ฌ libatlas-base-dev
libblas-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
libboost-all-dev cmake git python-numpy cmake
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
@cathalgarvey ๋๋ ๊ทธ๋ค์ด ์์ ํ ํฌํฌ๊ฐ ์๋ ํํ ๋ฐฑ์๋์์ ์์
ํ๊ณ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๊ฒ์ ์ฌํ๊ณ ๋
ธ๋ ฅ์ ๋๋๋ ๊ฒ๋ฟ์
๋๋ค.
์ด๋ฏธ ์ถฉ๋ถํ ๋๊ตฌ๊ฐ ์์ต๋๋ค :/
@YvanDaSilva AMD์ ๋ ธ๋ ฅ์ ํ์ฌ ์ฝ๊ฐ ์๋ชป ์กฐ์ ๋์์ต๋๋ค(์, ๋ชจ๋ ํฌํฌ). ๋ํ Caffe์ OpenCL ๋ถ๊ธฐ์ ๋ฌ๋ฆฌ ์์ง ๋ค์ํ ์ฅ์น์์ ์ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฅผ ๋ค์ด...
@naibaf7 ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
์์งํ ์ธ์ ์์์ด ๋ถ์กฑํ ๊ฒ ๊ฐ๊ณ ๋ชจ๋ ๋ฉด์์ ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ : ETH์ ์ ๊ฒฝ ์ ๋ณดํ์ด ์๋์ง ๋ชฐ๋์ต๋๋ค ;) ์ข์์!
@cathalgarvey ๋ ๊ฐ์ ํ์ ๋๋ฅผ ์ํ ROCm/HIP ์คํ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ ๋ Sea Islands ์นด๋๋ก AMGPU-pro ๋ฐ AMDGPU๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ ์ฉํ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
@YvanDaSilva
๊ทธ๋ค์ ๋ด ์๋ Caffe OpenCL ํ๋ก์ ํธ๋ฅผ ํ์ํ์ง๋ง ๋ถํํ๋ ์ ์กฐ์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ AMD ์ฐ๊ตฌ์ AMD์ ๋
๋ฆฝ์ ์ธ ์ฌ๋๋ OpenCL ํฌํธ์์ ๋ณ๋ ฌ๋ก ์์
ํ์ต๋๋ค. ์ด์ AMD ์ฐ๊ตฌ ํ์ ์ด์ ์กด์ฌํ์ง ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ์ค์ ๋ก Tesla์์ ์ผํฉ๋๋ค ์์จ์ฃผํ์ฐจ ํ๋ก์ ํธ) ์ด์ ... ๋๋ฌด ๋ถํํ ์ฌ๊ฑด์ ์ฐ์์
๋๋ค.
๋๋ ์ฌ์ ํ ๊ทธ๋ค๊ณผ ํ๋ ฅํ๊ณ ์ฐ๋ฝํ๊ณ ์์ต๋๋ค. Vega๋ ์ฌ๋ฏธ์์ ๊ฒ์
๋๋ค :)
@naibaf7 ๋ฐ๊ฐ์ต๋๋ค. ํ์ด์ ๋น๋๋ค! ๋ด๊ฐ Heig-vd์ ์์ ๋ ๊ทธ๋ฌํ ์ฐ๊ตฌ๊ฐ ์์๋ค๋ฉด ๋ถ๋ช ํ ์์ฌ๋ฅผ ๊ณ์ํ์ ๊ฒ์ ๋๋ค.
๋ค... ๊ทธ๋ ๊ฒ ์๊ฐํ์ต๋๋ค. ์์ ์ ๋๋ฌด ๋ง๊ณ ์ด ๋ถ์ผ์์ ์ฌ์ฉํ ์ ์๋ ์ธ์ ์์์ ๊ฑฐ์ ์์ต๋๋ค.
๊ทธ ๋ชจ๋ ๊ฒ์ด ํ๋ฅญํ๊ฒ ๋ค๋ฆฌ์ง๋ง TensorFlow๊ฐ OpenCL SYCL๊ณผ ํจ๊ป ์๋ํ๋๋ก ํ๋ ๋
ผ์์ ๋ค์ ์ด์ ์ ๋ง์ถ๊ณ ๊ณต๊ธ์
์ฒด๋ณ ์๋ฃจ์
๋ฟ๋ง ์๋๋ผ... :-)
RoC์ ๋ค๋ฅธ HiP๊ฐ ๊ฐ์์ ๋ฌธ์ ๋ฅผ ๋
ผ์ํ ์ ์๋ ์์ฒด GitHub๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค...
@ naibaf7 : ์ ์ด๋ ๋๋ ์ฌ์ ํ OpenCL ์์ญ์ ์์ต๋๋ค. ๋ค์ ํด๋ฝ์ ๊ฐ์
ํ์ธ์! :-)
@keryell ์์ ์ค์ธ Tensorflow ์ฉ HIP ํฌํธ๊ฐ ์๋ค๋ฉด HIP์ ๋ํ ๋ ผ์๊ฐ ์ ํจํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฒฐ๊ตญ ๊ณต์ Tensorflow-on-CL ์๋ฃจ์ ์ ํ๋ซํผ๊ณผ ์ปค๋ ์ง์์ด ํฌ๊ฒ ์ ํ๋ ๋ ์ SYCL ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ฏ๋ก CUDA์์ ๋ฒ์ด๋ ์ ์๋ ์๋ก์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ "๊ณต๊ธ์ ์ฒด๋ณ" HIP ์๋ฃจ์ ๋ณด๋ค ๋ ๋์ ๊ฒ์ ์๋๋๋ค.
HIP๋ ํ์ฌ ๋๋ถ๋ถ AMD๊ฐ ํ๊ณ ์์ ์ ์์ง๋ง AFAIK๋ ๊ณต๊ฐ ํ์ค์ ๋๊น? ์๋ง๋ ๋ด๊ฐ ํ๋ ธ์ ๊ฒ์ด๋ค. ํ์ง๋ง AMD๊ฐ tensorflow-on-HIP ํฌํธ๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ฉด ๊ณต์ tensorflow-on-SYCL ํฌํธ๋ณด๋ค ์ฆ์ ๋ ๊ฐ๋ฐฉ์ ์ผ ๊ฒ์ ๋๋ค.
HIP๋ CUDA์ ํ์ ์งํฉ์ด๋ฏ๋ก CUDA๋งํผ ๊ฐ๋ฐฉ์ ์ ๋๋ค.
์์์ด ๊ด์ฐฎ์; HIP-the-API๋ CUDA-the-API์ ํ์ ์งํฉ์ด์ง๋ง NVidia๊ฐ Oracle ์ฑ๋๋ง์ ์์ํ ๋งํผ ์ถฉ๋ถํ ๊ฐ๋งํ์ง ์๋ ํ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ๋ ์ง ์์ฌ๋ฉ๋๋ค. ๋๋ AMD๊ฐ ~ ์ด๋ ค ์๋ค๊ณ ์๊ฐํ๋ HIP์ฉ ๋ฐํ์/์ปดํ์ผ๋ฌ๋ฅผ ์ธ๊ธํ๊ณ ์์์ต๋๋ค.
ํธ์ง : ์์ ๋ด์ฉ์ด ๋ฌด๋กํ๊ฒ ๋ค๋ฆฌ์ จ๋ค๋ฉด ์ฃ์กํฉ๋๋ค. ์์ ๋ด ์ ์ฅ์ ๋ช ํํ ํ๋ ค๊ณ ํฉ๋๋ค!
Vulkan๊ณผ Opencl์ด ์ตํฉ ๋ฉ๋๊น?
@cathalgarvey ํ ๋ก ์ ๋ถ๋ช
ํ ์ ํจํ์ง๋ง ์ฌ๊ธฐ์์๋ ๊ทธ๋ ์ง ์์ต๋๋ค...
ํ์ฌ GitHub์ ์์ผ๋ฉฐ Khronos Group ํ์ค์ ์ฌ์ฉํ์ฌ TensorFlow ๋ฐ Eigen ํฌํธ์ ๋ํด ๋
ผ์ํ๊ณ ์์ต๋๋ค.
ํธ์ํฐ๋ ํ์ด์ค๋ถ ๋ด๋ฒผ๋ฝ์ด ์๋๋๋ค... :-)
๋ฐ๋ผ์ ์ด๋ฌํ ํ๋ก์ ํธ์ ๋ํ ๋ช ๊ฐ์ง ์ปค๋ฐ์ ๊ธฐ์ฌํ์ญ์์ค! :-)
OpenCL ์ฅ์น๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก Codeplay์ SYCL ๊ตฌํ์ธ ComputeCpp๋ก TensorFlow๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํ ์ค์ ๊ฐ์ด๋์ ์ ๋ฒ์ ์ด ์์ต๋๋ค. ์ด์ ๋ํ ํผ๋๋ฐฑ์ ๋ณด๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. https://www.codeplay.com/products/computesuite/computecpp/guides/how-to-setup-tensorflow-with-computecpp
ํ ์คํธ๋์ง ์์ AMD GPU์์ ์ด ์์ ์ ์ํํ๋ ์ฑ๊ณต๋ฅ ์ด ์ด๋ ์ ๋์ธ์ง ์๊ณ ์์ต๋๊น? AMD Radeon Pro 460 @rodburns์ฉ์ผ๋ก ํ ์คํธ๋์๋์ง ํนํ ๊ด์ฌ์ด ์์ต๋๋ค. ํ ์คํธ๋์ง ์์ GPU์ ๋ํ ํฌ๋ง์ด ์๋ค๋ฉด ๋ด Macbook ๋ ธํธ๋ถ์์ ์ฐ๋ถํฌ๋ฅผ ์คํํ๋ ๋ฐ ๋ช ์๊ฐ์ ๋ณด๋ด๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
@samhains ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ํ ์คํธํ์ง ์์์ง๋ง ์๋ํด ๋ณผ ์ ์์ต๋๋ค. SPIR ํ์ฅ์ ์ง์ํ๋ Ubuntu์ ํจ๊ป ์ผ๋ถ ์ด์ AMD ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋๋ ์์ง ๊ทธ ๋๋ผ์ด๋ฒ๊ฐ ๋ฌด์์ธ์ง ์์๋ผ ์ ์์์ต๋๋ค.
@samhains ์ฝ๋ ํ๋ ์ด ๊ฒฝ๋ก๊ฐ ์ ๋ฌ๋์ง ์์ผ๋ฉด ๋ง์นจ๋ด Ubuntu/Mac์์ ์ค์ ์ฌ์ฉ ์ํ์ ์๋ tf-coriander ๋ฅผ ๋์น์ง ๋ง์ธ์.
ํ์ฌ convnets, ์๋ฐฉํฅ rnns ๋ฑ์์ ํ ์คํธ ์ค์ด๋ฉฐ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. "๋ฐ๋๋ผ" OpenCL 1.2์์ ์คํ๋๋ฏ๋ก ๋น๊ต์ ์ค๋๋ ํ๋์จ์ด์ ๋ฐฉ๋ํ ๋ฒ์์์ Tensorflow๋ฅผ ํ์ฑํํด์ผ ํฉ๋๋ค.
๋ฌธ์ ๋ ํ์ฌ Tensorflow 0.11์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ๊ฒ์ ๋๋ค.
@๋ก๋๋ฒ์ค. https://www.codeplay.com/products/computesuite/computecpp/guides/how-to-setup-tensorflow-with-computecpp ๋งํฌ์ ๋์ด๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ผํด ๋ณด์์ต๋๋ค.
๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ: /home/sayantan/.cache/bazel/_bazel_sayantan/6f05f78a1e215999d72e42c1e87a8c1d/external/protobuf/ BUILD:609 :1: ์ ์ธ๋์ง ์์ ํฌํจ์ด '@protobuf/.google/_apithon_impl ๊ท์น์ ํฌํจ๋จ ':
์ค์ ๋ก ์์ค์์ tensorflow๋ฅผ ์ปดํ์ผํ๋ ค๊ณ ํ๋ฉด ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ ์ผ์ฐ ์ปดํ์ผํ์ง๋ง ๋ฌด์์ด ๋ฐ๋ ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
@rahasayantan ๋ฌด์์ด ํฌํจ๋ฉ๋๊น? --config=sycl ์์ด ์ปดํ์ผํ ๋๋ ์ป์ ์ ์์ต๋๊น?
@lukeiwanski : ๋ด๊ฐ ์ดํดํ๋ ๋ฌธ์ ๋ Bazel์ด Protobuf๋ฅผ ์ปดํ์ผํ๋ ค๊ณ ํ๊ณ ํ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ๊ฑฐ๋ ๋ค์ด๋ก๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ์ฌ๊ท ํ์ ๋ชจ๋๋ก ํ์ํ์ง๋ง ์ฌ์ ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. --config = sycl ์์ด๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฌ์ค tensorflow ๋ฉ์ธ ํ๋ก์ ํธ์์ git pull์ ํ ๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด openCL๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ํ์ ์ํํ๋ ๋ฐฉ์์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. git ์์ด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ํ๋ก์ ํธ zip์ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ๊ณ ์ปดํ์ผํ๋ฉด ์ ๋๋ก ์ปดํ์ผ๋์ง๋ง ๋ถํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋ ์ด๋ฏธ ๋น์ ์ GIT ํ๋ก์ ํธ์์ ์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ณ ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๋๋ ๊ทธ ์ค๋ ๋์ ๋ถํ ์ค๋ฅ์ ๊ด๋ จ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ ๊ฒ์ ๋๋ค(์ค๋ณต๋๋ ์ ์ ์์). ์๋ตํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์คํ ์์ค triSYCL์ด ๋์ฐฉํฉ๋๋ค. https://github.com/triSYCL/triSYCL/pull/45 ์ฐธ์กฐ
๋๋ ์ ์ ์ด๋ค. TF ์ง์ OpenCL์ ๊ด์ฌ์ด ๋ง์ต๋๋ค. ์ด ์ค๋ ๋์์ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
์...์ฌ๋ฏธ์์ง๋ง ์? Tensorflow๊ฐ cuda๋ฅผ ์ ํํ์ง๋ง ์ฒ์์๋ opencl์ ์ ํํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ด๊ฐ ์ถ์ธกํ๋ ์ด๋ค ์์ ์ ์ด์ ?
์๋ ํ์ธ์ @tensorflower-gardener์ ๋๋ค.
@hughperkins ๋ OpenCL 1.2 ์ฅ์น์์ NVIDIAยฎ CUDAโข ์ฝ๋๋ฅผ ์คํํ ์ ์๋ Coriander ๋ฅผ ๋ง๋ค์์ต๋๋ค. TF๋ฅผ OpenCL 1.2 ์ฅ์น์ ์ฐ๊ฒฐํด์ผ ํ๋ ํ์์ ๋ง๋์ง ์ดํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ์ ์ ์๋ฌผ์ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด ๊ทธ์ ์ด๋ฆ๊ณผ ๊ธฐ์ฌ๋๋ฅผ ์น์ ํ๊ฒ ํ์ํ์ญ์์ค.
Mac์ ๋ํ OpenCL
์ง์์ ๋ํ ํฌ๋ง์ด ๊ฑฐ์ tf.zero
๋ก ๋ฐ๋์์ต๋๋ค. ๋๋ TensorFlow Mac์ด ๋ ์ด์ GPU ์ง์์ ๋ ์ด์ ์ ๊ณตํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์ฝ์์ต๋๋ค(1.2+):
Note: As of version 1.2, TensorFlow no longer provides GPU support on Mac OS X.
TF-Coriander๋ Mac์์ ํ ์คํธ๋์์ผ๋ฏ๋ก ๋ฒ์ ํจ๋ฆฌํฐ์ ๋๋ฌํ๋ฉด ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
2017๋ 6์ 22์ผ 11:46:51 CEST, dylib [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
Mac์ ๋ํ
OpenCL
์ง์์ ๋ณผ ์ ์๋ค๋ ํฌ๋ง์ด ์ฌ๋ผ์ง ๊ฒ ๊ฐ์ต๋๋ค.
์ฝ๊ฐtf.zero
. ๋๋ ๋ฐฉ๊ธ ๊ฑฐ๊ธฐ์ Mac์ด ๋ ์ด์ ์์ ๊ฒ์ด๋ผ๊ณ ์ฝ์์ต๋๋ค.
๋ชจ๋ GPU ์ง์(1.2+):Note: As of version 1.2, TensorFlow no longer provides GPU support on Mac OS X.
https://www.tensorflow.org/install/install_mac
--
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -310331281
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
์ด์ eGPU์ n Nvidia 980 Ti๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ผ์ด๋ฒ๊ฐ ์๋ํ๊ณ Cuda๊ฐ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ฌํ๋ค.
์์ง ๋ด ๊ตฌ์ฑ์์ Tensor Flow๋ฅผ ์ฌ์ฉํด ๋ณผ ์๊ฐ์ด ์์์ต๋๋ค.
๋ด ์ปดํจํฐ์ ์น๋๋ผ์ด๋ฒ์ Cuda ํดํท์ด ์ค์น๋์ด ์๊ณ Cuda ์ํ์ด ์ ์๋ํฉ๋๋ค.
@cathalgarvey ๋น์ ์ tf-coriander์์ convnet์ ํ ์คํธํ๋ค๊ณ ๋งํ์ง๋ง ์์ง convnet์ด ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. tf-coriander๋ฅผ ์ฌ์ฉํ์ฌ GPU์์ convnet์ ์คํํ ์ ์๋์ง ๋ช ํํ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
tensorflow๊ฐ OS X์์ ๋ ์ด์ GPU๋ฅผ ์ง์ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ฃผ๋ฌธํ eGPU ์ค์ ๊ณผ ํจ๊ป Tensorflow๋ฅผ ์ฌ์ฉํ ๊ณํ์ด์์ต๋๋ค.
@justinrmiller ๊ทธ๋ค์ ๋ ์ด์ mac os์์ ํ ์คํธํ ์ ์๋ค๊ณ ์ฃผ์ฅํ๋ฏ๋ก ์ง์์ ์ค๋จํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๊ฒ์ ๋ฏฟ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ํ์ด ์์๋ผ์ egpus ๊ด๊ณ ์ ์๋ก์ด nvidia ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์ด์ ๊ทธ๋ ์ง ์์ต๋๋ค.
@tscholak ๋ค ๋ง์ต๋๋ค. ์ egpu ์ธํด๋ก์ ๋ฅผ ์ฌ์ฉํ์ฌ Windows ์์๋ฅผ ์์ํ ๋ฒ๋ฆฌ๋ ค๊ณ ํ์ต๋๋ค.
Nvidia ์นด๋๊ฐ eGPU ์ธํด๋ก์ ์์ ์๋ํ๋๋ผ๋ Apple์ ๊ณต์์ ์ผ๋ก ๊ฐ๋ฐ ํคํธ์์ RX580๋ง ์ง์ํ๋ฏ๋ก OpenCL์ ํ์์ฑ์ด ์ฌ๋ผ์ง์ง ์์ ๊ฒ์์ ๋ช ์ฌํ์ญ์์ค.
Mac์ OpenCL์ 1.2์ด๋ฏ๋ก ํ์ฑ ๋๋ผ์ด๋ฒ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ๋ฐ. TF์ Metal ์ง์์ ์ถ๊ฐํ๋ ๊ฒ์ ํ๋ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
(Eigen ๋ฐ ์คํธ๋ฆผ ์คํ๊ธฐ ํ์ฑํ) ํ์ง๋ง ๊ฐ๋ฅํฉ๋๋ค.
2017๋
7์ 16์ผ ์ผ์์ผ ์คํ 3:17 Ferdia McKeogh [email protected]
์ผ๋ค:
Nvidia ์นด๋๋ eGPU ์ธํด๋ก์ ์์ ์๋ํ์ง๋ง Apple์
๊ฐ๋ฐ ํคํธ์์ RX580๋ง ๊ณต์์ ์ผ๋ก ์ง์ํ๋ฏ๋ก
OpenCL์ ์ฌ๋ผ์ง์ง ์์ต๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-315634166 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/ACFkv3bmDr_KFSydC-QW_xbuR008pvLXks5sOm_kgaJpZM4Gex3i
.
macOS์ฉ GPU ์ง์ ์ค๋จ์ ๋ํด ๋งค์ฐ ์ ๊ฐ์ ๋๋ค.
Apple์ ๋ถ๋ช ํ ์กฐ๋ง๊ฐ Nvidia GPU๋ก ๋ณ๊ฒฝํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ macOS์์ GPU์ ๋ํ OpenCL ์ง์์ ๊ณ์ ์ฐพ๊ณ ์์ต๋๋ค.
Tensorflow๋ ์ ๊ฐ ์ ํํ ์์ง์ ๋๋ค. ๋ด MacBook Pro ๋๋ ๋ฏธ๋์ iMac Pro์์ ๋ก์ปฌ๋ก GPU ๊ฐ์์ ์ฌ์ฉํ๋ฉด ์ ๋ง ๋ฉ์ง ๊ฒ์ ๋๋ค.
Microsoft์ ๊ฒฝ์ฐ Apple์ ๋ฐฉํดํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง๋ง Google์๋ ๋ฐ์คํฌํฑ OS๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก์๊ฒ๋ง ํผํด๋ฅผ ์ค๋๋ค.
์์งํ ๋๋ณด๋ค ๋ ๋๋ํ ์ฌ๋์ด Mac OS 10.13์ MPS - ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ง์ ์ ๊ฒฝ๋ง ๊ธฐ๋ณธ ์์๋ฅผ ์ง์ํ๋ ๊ธ์ ์ฑ๋ฅ ์ ฐ์ด๋๋ฅผ ํตํฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ด์ผ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ฐ์ผ ๋ฐ ๋ฐ์คํฌํ iOS ๋ฐ macOS Tensorflow ์ถ๋ก ๋ฐฐํฌ๋ฅผ ์ํ ์ต์ ๊ณ ์ฑ๋ฅ GPU๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ๋๋ก Apple ํ๋ฆฌ๋ฏธํฐ๋ธ๋ก ํ๋ จํ ์๋ ์์ง๋ง(์๋ฌด๊ฒ๋ ์ ๊ณตํ์ง ์์) Tensorflow ์ง์์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํ ๊น์? Apple ํ๋ซํผ์ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ๋ ํํ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ตฌ๊ธ์ด ์ด๊ฒ์ ๋ด๋ถ์ ์ผ๋ก ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ ๋ ์ค์ค๋ก ๊ทธ๊ฒ์ ์๋ํ๋ ๋ฐ ํ์ํ ๊ธฐ์ ์ด ๊ฑฐ์ ์์ต๋๋ค. ์ด ์์ด๋์ด๋ฅผ ๊ฒ์ํ์ฌ ๋๋ณด๋ค ๋ ์ฌ๋ฅ ์๋ ์ฌ๋๋ค์ด ์ด ์์ด๋์ด๋ฅผ ๋ฐ์๋ค์ผ ์ ์๋๋ก ํฉ๋๋ค.
:)
Apple์ ์ค๋ก์ง Apple ๊ธฐ๊ธฐ๋ฅผ ํ๋งคํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. Google์ Google์ ๋๊ท๋ชจ ์๋น์ค๋ฅผ ๊ณ ์ฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
ํ๋์ Apple ๋ ธํธ๋ถ๊ณผ ๊ฐ์ ๋จ์ผ ์ฅ์น๋ก AI(ํ์ต)๋ฅผ ์ํํ๋ ค๋ ๊ฒฝ์ฐ "๋ฅ ๋ฌ๋" ๋์ "ํผ์ ๋ฌ๋"์ ์ํํ๋ฏ๋ก ์์ต์ ์ด์ธ์ ์์ ์ ํฌ๊ธฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ถ๋ก ๊ฒฐ๊ณผ ๋จ์ผ ์ฅ์น(๋ฉํฐ์ฝ์ด ์ ํ๊ฐ ๋ง์ง ์์ ๊ฒฝ์ฐ์๋)์์ ๋จ์ผ ์ฌ์ฉ์์ ๋ํ ํ๋ จ๋ ๋ชจ๋ธ์ GPU๋ฅผ ํตํด ๊น๋ํ๊ฒ ์ํ๋ ์ ์์ง๋ง CPU์์๋ง ์๋ฒฝํ๊ฒ ์ํํ ์ ์์ต๋๋ค.
๋ฐ๋ฉด์ ํ์ต์ ์ํด ๋งค์ฐ ํฐ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ๋งค์ฐ ํฐ ๋์ ๊ณ ๊ฐ ๊ทธ๋ฃน์ ํ๋ จ๋ ์ถ๋ก ์ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ GPU๊ฐ ์ ๋์ ์ผ๋ก ํ์ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฌํ ๊ท๋ชจ๋ก ์ํํ๋ ๊ฒ์ ๋คํธ์ํฌ ๋ฌธ์ ๋ก ์ธํด ์ฝ์ง ์์ต๋๋ค. TPU-Pods ๋ฌผ๋ฆฌ์ ์ํคํ ์ฒ๋ฅผ ์ดํด๋ณด์ญ์์ค. ๋ฉํฑ์ ๋์ฒ์ ์ ์์ต๋๋ค(์๋ฒ ๊ฐ ํต์ ์ ์ํ ์ ์ฉ ๊ด์ฌ์ ๊ฐ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณผ๋ถํ ๋ฉํฐ ์ฝ์ด ์๋ฒ๋น ์ฌ๋ฌ GPU).
๋งฅ๋ถ ํ๋ก๊ฐ ์์ต๋๋ค. ํด๋ผ์ฐ๋๋ก ์ด๋ํ๊ธฐ ์ข์ ๋จ๋ง๊ธฐ์ ๋๋ค :-D
Metal์ TF๋ iOS๋ก๋ ํ์ฅํ ์ ์์ต๋๋ค. ๊ด์ฌ ์๋ ์ฌ๋์ด ์๋ค๋ฉด ๋จผ์ Eigen์ Metal ์ง์์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค(OpenCL์ ์ฐธ์กฐ๋ก ์ฌ์ฉํ ์ ์์).
@rogerpasky ํ๊ต์์๋ ๋ชจ๋ธ ํ๊ฐ๋ฟ๋ง ์๋๋ผ ํ์ต ๋ชจ๋ธ์๋ Tensorflow๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ฐ๊น์ด ์ฅ๋์ ์ด๊ฒ์ ๋ค์ ๋ฐ๋ณตํด์ผ ํ ๊ฒ์ ๋๋ค. ๋ ๊ฐ์ ํ์์๊ฒ๋ GPU ๊ต์ก์ด ํ์์ด๋ฏ๋ก ๋ง์ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๋ช ์ ๋์ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ์๋๋๋ค.
@rogerpasky ๋ Mac์์ ๋ก์ปฌ๋ก ๋ชจ๋ธ ๋ฐ ์๋ฃจ์ ์ ๊ฐ๋ฐํ๋ ๊ธฐ๋ฅ์ ๊ดํ ๊ฒ์ ๋๋ค.
@rogerpasky๋ ์ ์คํ๊ฒ ๋์ํ์ง ์์ต๋๋ค. ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ค์ค GPU ์๋ฃจ์ ์ ์ธํฐ๋ท ์๋น์ค์ ์ ํฉํ์ง๋ง ์ ๋ ๋ช ์๊ฐ ๋์ ์ ๋ฌธ๊ฐ ์์ค์ ํด์๋์ ์์ถ๋์ง ์์ HD, 2K, 4K ์์์ ๋ํด ์ถ๋ก ์ด ์คํ๋๋ ์ ๋ฌธ ๋น๋์ค ์ ์ ํ์ดํ๋ผ์ธ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ํด๋ผ์ฐ๋์ ์ ๋ก๋ํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ b) Google์ด๋ ๋๊ตฌ์๊ฒ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค. c) ํ์ฉํ๊ณ ์ ํ๋ ๋ก์ปฌ์ ๋ค์ค GPU ์ง์ ์์คํ (Mac ๋ฐ Windows)์ผ๋ก ๊ฐ๋ ์ฐฌ ๊ณต๊ฐ์ด ์๊ณ d) ๋ฐ๋ฉด ๋จ์ผ ์ด๋ฏธ์ง์ ๋ํ ์ถ๋ก ์ CPU์์ ๊ด์ฐฎ์ต๋๋ค. ์ฌ๋ฌ ๊ทธ๋ํ๋ฅผ ํตํด ์ถ๋ก ์ ์ํด ์ ์ฒด ์ํ๋ฅผ ์คํํ๋ฉด 100% MPS ๋ CPU์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ๊ฐ ํ์ค ์ง์/ํฌ์ฉ์ ๊ฑฐ๋ถํ๊ณ ๋์ Nvidia ์ ์ฉ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค์ ์ฌ์ฉ ์ฌ๋ก๋ ๋น๋๊ธฐ ๊ตฌ๋ฉ์ด ๋์ด ์ ๋ง ๋ถ๋๋ฝ์ต๋๋ค.
์ด๊ฒ์ ํํ ๋ฆฌ์ผ์ ์คํํ๋ ์ทจ๋ฏธ ํ๋๊ฐ์ ์ ํด ์์ฒญ์ด ์๋๋๋ค. GPU ์ถ๋ก ์ ์ค์ ํ๋์จ์ด์ ๋ค์ํ ์ํฌ๋ก๋์ ๋ํ ๋ค์ํ GPU/CPU ์ ํ๊ตฐ์ ์ง์ํ๋ ๊ฒ์ฒ๋ผ ์ค์ํฉ๋๋ค. Google์ด ์ด ๋ฌธ์ ๋ฅผ ์ง์งํ๊ฒ ๋ฐ์๋ค์ด๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. TF์ ๊ฐ์ ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ๋ง์ ๋ค์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์์ ํ๋ ค๋ ๊ฒ์ด ์๋๋ผ ์ปค๋ฎค๋ํฐ์ ๋ค๋ฅธ ๊ด์ ์ ์ ๊ณตํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
@pldelisle , @tscholak , @vade ์ ๋ฅผ ์คํดํ์ง ๋ง์ญ์์ค. ๊ฐ๊ณ ์ถ๊ณ , ์ด ์ค๋ ๋์์ ๊ฒ์ํ๋ฉด ๋๋ ์ํฌํฐ๋ก ํฉ๋ฅํ์ง๋ง, ๋ด๊ฐ ๊ทธ๊ฒ์ ๋ฐ๋ผ์จ ํ ๋๋ ๋ด๊ฐ ๊ทธ๋ ๊ฒ ์๊ฐํ๊ธฐ ๋๋ฌธ์๊ฐ ์๋๋ผ ๋ด๊ฐ ์ด ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค. MacBook์ ์์ฒ ๊ฐ์ ๋น๋์ค๋ก ๊ต์ก์ ๋ฐ์ผ๋ฉด ๋ น์๋ด๋ฆด ๊ฒ์ ๋๋ค :-D), ๊ทธ๋ฌ๋ ์ค์ ์ฐ์ ์ฌ์ค๊ณผ ํจ๊ป. ์งง์ ์๊ฐ ์์ ํด๊ฒฐ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ๋ง์ธ์(IMHO, iPhone/Android ๋ฌธ์ ์ดํ๋ก Apple๊ณผ Google์ด ์๋ก๋ฅผ ์ซ์ดํ๊ธฐ ๋๋ฌธ์ ํด๊ฒฐ๋์ง ์์ ๊ฒ์ ๋๋ค).
@rogerpasky ์ด๋ฏธ Mac OS์์ nvidia GPU์ ๋ํ ์ง์์ด ์์์ต๋๋ค. 1.2์์ ๋ฐฉ๊ธ ์ ๊ฑฐ๋์์ต๋๋ค.
Note: As of version 1.2, TensorFlow no longer provides GPU support on Mac OS X.
eGPU(Sonnet's) ์ฃผ๋ฌธ์ ์ทจ์ํ๊ณ ๋ด ๊ฒ์ ์ฅ๋น์์ Linux๋ฅผ ๋์ผ ๋ถํ ํ ์์ ์ด์ง๋ง ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ ์ง์ํ์ง ์๋ ๊ฒ์ ์ข์ง ์์ต๋๋ค. eGPU(๋ชจ๋ธ ๊ต์ก)๋ฅผ ์ฌ์ฉํ์ฌ Mac์์ ์ด ์์ ์ ์ํํ๊ณ ์ถ์์ง๋ง ์ง๊ธ์ ๊ทธ๋ ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. https://github.com/lengstrom/fast-style-transfer
@rogerpasky Er, CoreML์ด Keras๋ฅผ ํตํด ํ ์ ํ๋ฆ ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ง์ํ๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์ญ๋๊น? Apple์ Google์ '๋ฏธ์ํ์ง' ์์ต๋๋ค. ๋น์ฆ๋์ค๋ ๋น์ฆ๋์ค์ ๋๋ค. Apples ๊ณต๊ธ์ ์ฒด ์ค ํ๋๋ ์ผ์ฑ์ ๋๋ค. ์ ์ ๋์ ์ฝ์ด๋ณด์ญ์์ค. ๊ตฌ๊ธ, ์ ํ, ์ผ์ฑ์ ๊ธฐ์ ์ด๊ณ ๋ ๋ฒ๋ ์ผ์ ํ ๊ฒ์ ๋๋ค. ์ฐธ๊ณ ๋ก. ์ MacBook Pro๋ ์์ฒ ํธ์ ์ํ์ ๋ํ ์ถ๋ก ์ ์คํํ ๊ฒฐ๊ณผ ๋ น์ง ์์์ต๋๋ค. ์ ๋ CUDA๊ฐ ์ฑํํ๊ธฐ์ ๋งค์ฐ ํธ๋ฆฌํ๊ณ Nvidia์ ์ง์์ ์ธ ์ง์๊ณผ AMD์ ๋์น ๊ธฐํ๊ฐ ์ฐ๋ฆฌ๋ฅผ ์ฌ๊ธฐ๊น์ง ์ค๊ฒ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ฌ์ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ณ๊ฒฝ ๋น์ฉ ๋ ์ฑ๋ฅ ๋ธํ ๋ ์ฝ์ค ์ ์ง ๋น์ฉ์ ๋๋ค.
๋๋ ์ด๋ค ์ฒ์ฌ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ ์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
OpenCL, Mac, iOS, CoreML, Vulkan ๋ฑ๊ณผ ๊ฐ์ ์๋ก์ด ์ฅ์์ ๋ฅ ๋ฌ๋์ ๋์ ํ๋ ๊ฒ์ ๋ํ ๊ณต๋ ํ ๋ก ์ ์ํด Google ๊ทธ๋ฃน์ ๋ง๋ค์์ต๋๋ค. ์ด๋ฌํ ์ผ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ ค๋ฉด ๊ฐ์ ํ์ฌ ์ฌ์ฉ ๋ฉ๋ชจ๋ฅผ ๊ฒ์ํ์ธ์. ๊ฒฝ์ฐ ๋๋ ๋ฌธ์ ์ ์ด๋ค ๋ถ๋ถ์ ์์ ํ๊ณ ์๋์ง. ์ด๋ฏธ MIOpen, Codeplay์ ์์ , TF-Coriander ๋ฐ ์ฐ๋ฆฌ ํ์ฌ์ ๋ด๋ถ ํ๋ก์ ํธ(Vertex.AI)๋ฅผ ํฌํจํ์ฌ ๋ ๋ง์ ํ๋ซํผ์ TF๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ด์ฌํ ๋ ธ๋ ฅํ๋ ์ฌ๋๋ค์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ ธ๋ ฅ์ ๋ชจ๋ ๋ฐ์ ํ๊ฒ ๊ด๋ จ๋์ด ์์ผ๋ฏ๋ก ๊ฐ๋ฐ์์ ์ฌ์ฉ์๋ฅผ ํ ๊ณณ์์ ๋ชจ๋ ๋ชจ์ผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
https://groups.google.com/forum/#!forum/deep -learning-everywhere
@benoitsteiner @hughperkins @cathalgarvey
@rogerpasky @vade @tscholak @pldelisle @adityaatluri @chocol4te @justinrmiller
@justinrmiller ์ ๋ Tensorflow 1.2.1(CUDA 8, cuDNN 6)์ ์คํํ๋ Sierra(Sonnet ์ธํด๋ก์ ์ Titan Xp)์ eGPU๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์.
tensorflow/core/common_runtime/gpu/gpu_device.cc:1045] Creating TensorFlow device (/gpu:0) -> (device: 0, name: TITAN Xp, pci bus id: 0000:4f:00.0)
In [5]: tf.__version__
Out[5]: '1.2.1'
@danbarnes333 ๋ฉ์ง๋ค์! ์ ๋ณด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
@danbarnes333 ์ด๋ป๊ฒ tf 1.2๋ฅผ cuDNN 6์ผ๋ก ๋น๋ํ๊ฒ ๋์๋์? LLVM์ ์ฌ์ฉํ์ จ๋์? GCC? cuDNN 5๋ก ๋น๋ํ๋ ๋ฐ๋ง ์ฑ๊ณตํ์ต๋๋ค...
์ฐธ๊ณ ๋ก https://machinelearning.apple.com/
@tscholak ๋๋ ์ด๊ฒ์ OpenCL์ ์ ์งํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ๊ฒ์ํ์ง ์๊ฒ ์ง๋ง ์ฌ๊ธฐ ์ ๋จ๊ณ๋ฅผ ์์ฝํ์ง ์์ต๋๋ค.
@choongng ๊ตฌ๊ธ ๊ทธ๋ฃน์ ๊ฐ์ ํ๋๋ฐ ์ ์ ํ ๊ฒ ๊ฐ์์. ๊ทธ๋ผ ์ฌ๊ธฐ์ ์ํ๊ฒ ์ต๋๋ค ;-)
๋จธ์ ๋ฌ๋/๊ณ ์ฑ๋ฅ/GPU ์ปดํจํ ์ ๊ฒฝ์์ด ์น์ดํ ์์ฅ์ ๋๋ค. ์ข๋ ์ซ๋ NVidia๋ ์์ฅ ์ ์ง๋ฐฐํ๊ณ ์นด๋์ ์ํํธ์จ์ด๋ฅผ ๋ฒ ์คํธ์ ๊ฐ๊น๊ฒ ์ ์งํฉ๋๋ค. ์์ฐ๊ณผ ๊ธฐํ์ด ์๋ ๊ฒฝ์ฐ ํ์ฌ๋ก์๋ NVidia์ ๊ฑฐ์ ๊ณ ์ ๋์ด ์์ต๋๋ค.
๋๋ ๊ตฌ์ AMD ์นด๋("Bonaire")์ ์์ฐ ์ด ์ ํ ์๋ ์ทจ๋ฏธ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ด์ ํ์ฌ Arch Linux์์ ๋
์ AMD OpenCL 2 ๊ตฌํ์ผ๋ก caffe
๋ฅผ ์คํํ๊ณ ์์ผ๋ฉฐ ์ค๋ ์์นจ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก AMD์ ์คํ ์์ค MIOpen
๋ฅผ ์คํํ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ผ๋ถ ๋ชจ๋ธ์ ํ๋ จํ ์ ์์ต๋๋ค. Bonaire๋ ์ฝ 1800 GFLOPS ๋จ์ ๋ฐ๋์์ ์ ์ ์ ์ด๋ฃน๋๋ค. ๋ฐ๋ผ์ TensorFlow๊ฐ Bonaire์์ OpenCL๊ณผ ํจ๊ป ์คํ๋์ง ์์ผ๋ฉด TensorFlow๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒ์
๋๋ค.
์์ฐ์ด ๋ง์ ์ฒ๋ผ ๋ํ๋์ผ ํ๋ค๋ฉด Intel CPU์ NVidia ์นด๋๋ฅผ ๊ตฌ์ ํ๊ณ ๊ณต๊ธ์ ์ฒด๊ฐ ์ง์ํ๋ ๋ ์ ์ํํธ์จ์ด๋ฅผ ์คํํ ๊ฒ์ ๋๋ค. Google, Red Hat, Canonical ๋ฐ AMD์ ๊ฐ์ ๊ณต๊ธ์ ์ฒด์ ๋ํ ๋ฌด๋ฃ QA๋ฅผ ์๋ฃํ์ต๋๋ค.
3๋ ๋์ ๊ฐ์ง๊ณ ์๋ GPU์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ป๋ ๋ฐ 3๊ฐ์(๋ฐ 3๊ฐ์ ๋ฐฐํฌํ - Fedora 25, Ubuntu 16.04 LTS ๋ฐ Arch)์ด ๊ฑธ๋ ธ์ต๋๋ค. Fedora์ ๋ฒ๊ทธ ํธ๋์ปค์ ๋ด ์ด๋ฆ์ด ์๋ ์์ ๋์ง ์์ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค. Ubuntu์ Freedesktop.org๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๊ทธ๊ฒ์ ๊ณ ์น ์ฌ๋๋ค์ ๋๋ถ๋ถ์ ๋์ ๋ฐ์ง ๋ชปํ๊ฑฐ๋ ๋ค๋ฅธ ์ผ์ ํ๊ธฐ ์ํด ๋์ ๋ฐ๊ณ ์์ต๋๋ค.
์, AMD์ ์๋ก์ด CPU๋ ์ธ์์ ์ ๋๋ค. ๊ทธ๋ ์ต๋๋ค. ๋๋ถ๋ถ์ ์ํํธ์จ์ด๋ ์คํ ์์ค์ด์ง๋ง ์์ฐ๊ณผ ๊ธฐํ์ด ์ํฉ์ ๋ฐ๊ฟ๋๋ค. ์ง์์ด ํต์ฌ์ ๋๋ค. ์ง์์ด ์ ๋ถ์ ๋๋ค!
@znmeb TF์ GCN ์ด์ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋์ง์กฐ์ฐจ ๋ชฐ๋์ต๋๋ค.
๋ด ํํํฐ์์๋ AMD ๋
์ ๋๋ผ์ด๋ฒ๊ฐ GCN1์ฉ ์ด์ Linux ์ปค๋์์๋ง ์๋ํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฐฐํฌํ(์ฐ๋ถํฌ 14.01.x)๋ง ์ง์ํ์ต๋๋ค. (SYCL์ ํตํด TF + openCL์ ์ป์ต๋๋ค(7970์์ ํ
์คํธ๋์ง ์์))
๋ด๊ฐ ์ผํ๋ ๊ณณ์์๋ ์ ์ฒด R&D ๋ถ์์์ ๊ทธ๋ฆฐ ํ์ ์ด์ํฉ๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ PHD๋ฅผ ๊ฐ์ง๊ณ ์๊ณ cuda(๋๋ OCL)์ ํ ์ค์ ์์ฑํ์ง ์์ ๊ฒ์ ์ ์ธํ๊ณ ๋ชจ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ตฌ๋ Keras
์ํฌ๋ก๋๋ฅผ ๊ฐ์ํํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ์์ต๋๋ค. ๋๋ ์ฌํ์ฉ๋ ๊ด์ฐ GPU์์ ๋ ๋ฒ์งธ ์ถ์ ์ง๋ด๋ ค๊ณ ํ๋ ์ผ์ข
์ ๊ดด์ง์
๋๋ค.
๊ทธ๋ฆฐ ํ ์ง์ ์ด์ธ์ tl;dr์ AMD GPU ์์ฅ ์ ์ ์จ์ด ํ์๋๋ ๊ฒฝ์ฐ์๋ง ํ์๋ฉ๋๋ค.
๋ญ๊ณผ ๊ณ๋์ ๋ฌธ์ ์
๋๋ค. ๋๋ vega์ ๋ํ ํฌ๋ง์ด ์์ง๋ง ... ์ ... 1080Ti ํฌ๋ฌ๋ ์๋๋๋ค.
@acoye FWIW๋ 4์๋ถํฐ ์ค๋์ฑ ๋ฐ ์ธํฐ๋ท ๊ฒ์ ํ ์ด๋ฒ ์ฃผ๋ง์ ์ ๋ฅผ ๋ฐ๋ ค์จ GitHub ๊ฒ์๋ฌผ์ ๋๋ค. https://github.com/BVLC/caffe/issues/5804#issuecomment-318789942 . https://github.com/cdeterman/gpuR/issues/77#issuecomment-318814154 ๋ ์ฐธ์กฐํ์ธ์. ๊ทธ๊ฒ์ด ์ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค. Bonaire๋ฅผ ์ฌ์ฉํ์ฌ R์์ ์ ํ ๋์ํ์ ๊ฐ์ํํ๋ ค๊ณ ํ์ต๋๋ค.
@acoye
์ต์ Linux ๋ฐฐํฌํ์ผ๋ก ์ด๋ํ์ฌ AMDGPU ๋๋ผ์ด๋ฒ๊ฐ ํ์ฑํ๋๊ณ RADEON์ด ๋นํ์ฑํ๋๊ณ ์ปค๋ ๊ตฌ์ฑ์์ CONFIG_DRM_AMDGPU_SI=Y
๋ฐ/๋๋ CONFIG_DRM_AMDGPU_CIK=Y
๊ฐ ์ค์ ๋ 4.11/4.12์ ๊ฐ์ ์ต์ ์ฌ์ฉ์ ์ ์ ์ปดํ์ผ๋ ์ปค๋์ ์ฌ์ฉํ ์ ์์ต๋๋ค. initramfs => ์ต์ AMDGPU-PRO OpenCL์ 7970(Tahiti)์ฉ AMD ํ์จ์ด๋ ๋ชจ๋ GCN ์นด๋์์ ์๋ํฉ๋๋ค. FGLRX(์ด์ Linux ๋ฐฐํฌํ์์)์ RADEON ๋๋ผ์ด๋ฒ๋ฅผ ํตํ Clover๋ ์์ด๋ฒ๋ฆฌ์ธ์. ๋ ๋ค ํ์ ์์ค์
๋๋ค.
GCN ์ด์ ์นด๋๋ ์์ด๋ฒ๋ฆฌ์ญ์์ค. Caffe์ฉ Windows์์ OpenCL์ ์ฌ์ฉํ์ฌ ํ
์คํธํ์ง๋ง ์ฑ๋ฅ์ ์ด๋ฌํ ์ค๋๋ ์นด๋์ ๋
ธ๋ ฅํ ๊ฐ์น๊ฐ ์์ต๋๋ค. 2012๋
์ดํ์ ๋ชจ๋ AMD ์นด๋๋ ์ด์จ๋ GCN์ด์ด์ผ ํฉ๋๋ค.
@ naibaf7 ์ด์ AMD์ ์คํ ์์ค ์คํ์ ์๋์ํค๋ ค๊ณ ๋ช ์๊ฐ์ ๋ณด๋์ต๋๋ค. MIOpen
๋ฐ ํด๋น ์ข
์์ฑ์ ์ป์์ง๋ง hcc
์ ์ฌ์ ํ ์ผ๋ถ ๋นํธ๊ฐ ๋๋ฝ๋์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ ์ป์ผ๋ ค๋ฉด ์ฌ์ฉ์ ์ ์ ์ปค๋ ๋น๋๋ฅผ ์ํํด์ผ ํ ์๋ ์์ต๋๋ค. ์ ๋ CUDA ์ฝ๋๋ฅผ ์ด์ํ๊ฑฐ๋ GPU์์ ์ปดํ์ผ๋ C++๋ฅผ ์คํํ๋ ๊ฒ์ ๋ํด ๋ณ๋ก ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ;-)
๋๋ ๋ํ ๊ทธ๋ค์ ์น์ฌ์ดํธ์์ ์ด์ ๋ธ๋ฌ๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ ๋ณด์์ต๋๋ค. ์ด์ ๋ธ๋ฌ์์ FORTH๋ก ๊ฐ๋ ๊ฒ์ด ์ฝ๊ธฐ ๋๋ฌธ์ ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค. ;-)
@znmeb ์, ๋ํ RX 480์์ ์ผ๋ถ MIOpen ๋ฐ TensorFlow ํญ๋ชฉ์ ์๋์ํค๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ง๋ง ์ฃผ์ ๊ฐ๋ฐ ์ฅ๋น๋ฅผ ํ๊ดดํ๊ณ ์ถ์ง ์์ผ๋ฏ๋ก ๋์ IOMMU ๊ฐ์ํ๋ฅผ ์ฌ์ฉํ๊ณ Ubuntu 16.04 ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. RX 480. AMD ๋๋ผ์ด๋ฒ๋ ๊ฐ์ํ์ ๋งค์ฐ ์น์ํฉ๋๋ค(๊ฒ์ ์นด๋์ฉ์ผ๋ก ๋ง๋ค์ด์ง nVidia ๋๋ผ์ด๋ฒ์ ๋ฌ๋ฆฌ Quadro ๋๋ผ์ด๋ฒ๋ง ๊ฐ๋ฅ).
@znmeb sudo apt-get install rocm miopen-hip
ํ๋ฉด ๋ฉ๋๋ค.
@adityaatluri Arch User Repository์ ์์ง๋ง ์ค์น๋์ง ์์ต๋๋ค. GitHub ์์ค์์๋ ์ค์น๋์ง ์์ต๋๋ค. ๊ฐ๋จํ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ๋ช ๊ฐ์ง ์ข ์์ฑ์ ์ฐพ์ ์ ์์ต๋๋ค.
@znmeb ์ฌ๊ธฐ(https://github.com/RadeonOpenCompute/ROCm/issues)์์ ๋ฌธ์ ๋ฅผ ์์ฑํ์ฌ ๋ ผ์ํ ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
@adityaatluri ๋ฌผ๋ก ์ ๋๋ค - ์ ๋ ๋จน์ผ๋ฌ ๊ฐ๊ณ ์์ง๋ง ๋์์ฌ ๋ ์ ์ถํ ๊ฒ์ ๋๋ค.
@ebrevdo AMD ํ๋ก์ธ์๊ฐ ์ฅ์ฐฉ๋ Mac์์ tensorflow GPU๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
@gautam1858 https://news.ycombinator.com/item?id=14894653
์ฐ๋ฆฌ ํ์ฌ๋ ํ๋์ OpenCL ๋ฅ ๋ฌ๋์ ๋ํด ์์ ํด ์์ผ๋ฉฐ ๋ช ๊ฐ์ง ์ด๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ๋๋ฆด ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๊น์ด ์์ผ ๋ด์ Keras์ ์ด์ ์ ๋ง์ถ๊ณ ์์ง๋ง (๋งค์ฐ) ์คํ์ ์ธ TensorFlow ์ง์๋ ๊ตฌ์ถํ์ผ๋ฉฐ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค ํ์ ๋ค์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. AMD์ ์ด๊ธฐ ์ฒ๋ฆฌ๋ ์์น๋ฅผ ํฌํจํ ์์ธํ ๋ด์ฉ: http://vertex.ai/blog/bringing-deep-learning-to-opencl
๋ฉ์๋!
์์ ๊ผฌ์ง์: AFAIK, MIOpen์ ROCm๋ฟ๋ง ์๋๋ผ OpenCL์๋ ์ฐ๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ AMD ์ ์ฉ์ด ์๋๋๋ค. ํ์๊ฐ ์๋ง๋ ๋ ๋น ๋ฅด์ง๋ง ์ฌ์ ํ ๊ทธ๋ ์ต๋๋ค. MIOpen์ "GPU์ Open Source Neural Networks On GPU"์ ๋ํ ์์ฒญ๋ ์ง์ ์ด๋ฉฐ AMD๋ OpenCL์์ ์ ์๋ํ๋ค๋ฉด ์ด์ ๋ํ ์์ฒญ๋ ์ ๋ขฐ๋ฅผ ๋ฐ์ ์๊ฒฉ์ด ์์ต๋๋ค.
2017๋
8์ 14์ผ ์คํ 5:19 "Choong Ng" ์์ฑ:
์ฐ๋ฆฌ ํ์ฌ๋ ํ๋์ OpenCL ๋ฅ ๋ฌ๋์ ๋ํด ์์
ํด ์์ผ๋ฉฐ ๋ช ๊ฐ์ง ์ด๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ๋๋ฆด ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๊น์ด ์์ผ ๋ด์ Keras์ ์ด์ ์ ๋ง์ถ๊ณ ์์ง๋ง (๋งค์ฐ) ์คํ์ ์ธ TensorFlow ์ง์๋ ๊ตฌ์ถํ์ผ๋ฉฐ ์ด๊ธฐ ๋ฆด๋ฆฌ์ค ํ์ ๋ค์ ์ดํด๋ณผ ๊ฒ์
๋๋ค. AMD์ ์ด๊ธฐ ์ฒ๋ฆฌ๋ ์์น๋ฅผ ํฌํจํ ์์ธํ ๋ด์ฉ: http://vertex.ai/blog/bringing-deep-learning-to-opencl (http://vertex.ai/blog/bringing-deep-learning-to-opencl)
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์
๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub(https://github.com/tensorflow/tensorflow/issues/22#issuecomment-322235416)์์ ํ์ธํ๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐ(https://github.com/notifications/unsubscribe-auth)ํ์ธ์. /ABHR3VYHXFDEX0gPHTGLSbFeHjPfEfsXks5sYHOGgaJpZM4Gex3i).
@cathalgarvey ์์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. MIOpen ๋ฌธ์(https://rocmsoftwareplatform.github.io/MIOpen/doc/html/install.html#prerequisites)์ ์์คํ ์๊ตฌ ์ฌํญ์ ๋ํ ๋ด ์๊ฒฌ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง ๋ ๋์ ๋งํฌ.
์ ๊น, ๋๋ ์ง๊ธ 10๋ถ ๋์ ์ด ์ค๋ ๋/ํธ๋ฅผ ์ฝ๊ณ ์์ต๋๋ค. ์ค๊ฐ์ ๋ณด๊ณ ๋๋จธ์ง๋ ๊ฑด๋๋ฐ์์ต๋๋ค. AMD GPU๊ฐ ์์ง ์ง์๋ฉ๋๊น?
Kernel/OS(์ฝ๋ ํ๋ ์ด)์ ์์ฃผ ์ค๋๋ ์กฐํฉ์์๋ง ์๋ํ๋ ๊น๋ค๋ก์ด ํ์ ์์ค ์ฌ์ฉ: ์
tensorflow์ ์ด์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ง ์ผ๋ถ ๋น์ ํ์ฑ์ ์ง์ํ์ง ์์ต๋๋ค(tf-coriander): ์.
์ ๋ง: ๊ณต์์ ์ผ๋ก๋ ์๋๋๋ค. AMD๊ฐ HIP๋ก ํฌํ ํ๊ณ ์์ง๋ง 3๊ฐ์ ์ ๋ ์ด๋ด์ ์ง์ ์ด ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๋ค๋ฅธ ํ๋ ์์ํฌ๋ ์ด๋ฏธ ๊ทธ๋ค์ ๋ ธ๋ ฅ์ผ๋ก ์ ์๋ํ๊ณ ์์ต๋๋ค.
2017๋ 8์ 18์ผ 02:09:55 GMT+01:00, abrad1212 [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ ๊น, ๋๋ ์ง๊ธ 10๋ถ ๋์ ์ด ์ค๋ ๋/ํธ๋ฅผ ์ฝ๊ณ ์์ต๋๋ค. ๋๋ ๋ฐ์ ์ป์๋ค
๋๋จธ์ง๋ ๊ฑด๋๋ฐ์์ต๋๋ค. AMD GPU๊ฐ ์์ง ์ง์๋ฉ๋๊น?--
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -323233294
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
FWIW ์ต์ ๋ฒ์ ์ PyGpu๋ CUDA ๋๋ OpenCL์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด ์์น ์์์ ๋ชจ๋ ์ํํธ์จ์ด๊ฐ ์ค์น๋์ด ์์ง๋ง ์์ง ํ ์คํธํ์ง ์์์ต๋๋ค.
@abrad1212 ์, ์ด ๋ฌธ์ ๋ ํ๋์ ๊ณ์๋์์ต๋๋ค. ๋ ธ๋ ฅ์ ๋ฐฉ๋ํ๊ณ ๋ง์ ์ฌ๋๋ค์ด @cathalgarvey๊ฐ ์ธ๊ธํ๋ฏ์ด "์๋์ํค๋ ค๊ณ " ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
์ฐ๋ฆฌ ์ธก์์ ์ฝ๊ฐ์ ์ ๋ฐ์ดํธ. Ubuntu 16.04์ฉ AMDGPU-pro ๋๋ผ์ด๋ฒ ์คํ์์ ComputeCpp 0.3.0์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. ์ง์นจ์ http://deep-beta.co.uk/tensorflow-1-3-on-ubuntu-16 ์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ํ ์ฐ๋ฆฌ๋ ํ์ฌ ๋ค์ํ ๋ชจ๋ธ์ ์ฑ๋ฅ ๊ฐ์ ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๋ค. ํด์ผ ํ ์ผ์ด ๋ง์ง๋ง ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ณ ์์ต๋๋ค.
@lukeiwanski ๋ฒค์น๋งํน์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ ๋ฌด์์ ๋๊น? Keras์ ํฌํจ๋ ๋ชจ๋ธ์ ์๊ฐ์ ์ธก์ ํ๊ณ TF+cuDNN+K80์ ๋ํด ์ ๊ทํํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ด๊ณ ์ต์ ํ๋ ๊ตฌ์ฑ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ์ ๋ฐฉ๋ฒ๋ก ์ Max Woolf(http://minimaxir.com/2017/06/keras-cntk/)์ ๋น์ทํฉ๋๋ค. ์ฝ๋๊ฐ ๋ง์ง๋ ์์ง๋ง ๊ณต์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์น ์ฌ์ดํธ(http://vertex.ai)์ ์ฒ๋ฆฌ๋ ์์น๊ฐ ์์ผ๋ฉฐ, ์ฐ๋ฆฌ ์ฝ๋๋ Xception ์ถ๋ก ์์ TF 1.2๋ณด๋ค ์ฝ๊ฐ ๋น ๋ฅด๋ฉฐ ๋ ๋ง์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ํ ๋น๊ตํ๋ ๊ฒ์ด ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค.
Windows ์๋ฃจ์ ์ด ์์ต๋๊น? ๋ด PC์ Ubuntu๋ฅผ ์ค์นํ๊ณ ์ถ์ง๋ง ํ์ฌ ์ค์นํ ๊ณต๊ฐ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค.
์ฐ๋ถํฌ 14.04
ํ
์ํ๋ก ๋ง์คํฐ ๋ธ๋์น
opencl ์ง์์ ๋น๋ํ๊ณ opencl ์ธํ
CPU ๋ฐํ์๋ง ์ค์นํ์ต๋๋ค.
ํ์ด์ฌ 2.7
https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
ํ์ด์ฌ classify_image.py ์คํ
opencl ๋๋ผ์ด๋ฒ๋ฅผ ํธ์ถํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค. (๋๋ ๋ด โโopencl icd ๋ํผ๋ฅผ ์ถ๊ฐํ์ง๋ง ์๋ฌด๊ฒ๋ ๋ณด์ง ๋ชปํ์ต๋๋ค)
python ์ฝ๋์ ์ถ๊ฐํด์ผ ํ๋ ๊ตฌ์ฑ์ด ์์ต๋๊น?
sess.graph.device('/cpu0')์ฒ๋ผ
๊ทธ๋ฌ๋ Eigen์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ skcl ๊ฐ์ด๋๋ OpenCL์ ์ง์ํ๋ CPU์์ ์คํํ ์ ์์ต๋๋ค. (๋ํ ์ด ๊ฐ์ด๋ ์ฝ๋๋ ์ฝ๊ฐ ๊ตฌ์์ด๋ฏ๋ก ์์ ์ด ํ์ํฉ๋๋ค)
https://developer.codeplay.com/computecppce/latest/getting-started-with-eigen
๋๊ตฌ๋ ์ง tensorflow python ์ธํฐํ์ด์ค๊ฐ OpenCL ์ง์๊ณผ ํจ๊ป ์คํ๋ ์ ์๋ ๋ฐฉ๋ฒ์ ํ์ธํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด opt ์ธํธ๋ก tensorflow๋ฅผ ๋น๋ํ๋ฉด ์ค์ ๋ก tensorflow ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค. --config=์ฃผ๊ธฐ
์ด ๋ช
๋ น์ผ๋ก tensorflow๋ฅผ ๋น๋ํ์ญ์์ค.
bazel ๋น๋ -c opt /tensorflow/tools/pip_ ํจํค์ง:build_pip_package
์๋ง๋ ๋๋ forget --config=sycl์ ๋น๋ํฉ๋๋ค.
๋น๋ ๋ช
๋ น์ ์๋ํ๊ณ OpenCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ์ป์ ํ ์ฌ๊ธฐ์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
bazel ๋น๋ -c opt tensorflow/tools/pip_ ํจํค์ง:build_pip_package
@ joe8086 ์๋๋ก tf.Session ์์ฑ์ ์์ ํ๋ฉด ํฐ๋ฏธ๋์ ๋ก๊ทธ๊ฐ ํ์๋ฉ๋๋ค. ์ด๊ฒ์ ์ด๋์์๋ SYCL์ ์ธ๊ธํ๊ณ ์์ต๋๊น?
tf.Session(config=tf.ConfigProto(log_device_placement=True))
Eigen ๊ฐ์ด๋์ ๋ํด ์ต์ ๋ฒ์ ์ด ์๋ ํน์ ํผ๋๋ฐฑ์ด ์์ต๋๊น?
@rodburns ๊ฐ์ฌํฉ๋๋ค.
๋ด ์ค๋ฅ๋ ๋น๋ tensorflow ๋ฏธ์ค ๊ตฌ์ฑ ์ต์
--config=sycl์
๋๋ค.
์ด ๋ถ๊ธฐ ์ฝ๋๋ก ์ด ์ต์
์ ์ถ๊ฐํ ํ https://github.com/lukeiwanski/tensorflow.git
OpenCL ๋ฐฑ์๋๋ก ์คํ๋๋ ํ
์ํ๋ก๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
Eigen ๊ฐ์ด๋์ ๊ฒฝ์ฐ ์ฃผ์ ์ค๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1, ์ฌ๋ฐ๋ฅธ ํฌํจ ํ์ผ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
2, ๋ฐฐ์ด์ ๊ฒฝ์ฐ Tensor, TensorMap์ด ์ฌ๋ฐ๋ฅธ ํ
ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.
3, static_cast์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ํ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ด ํ ๋ก ์ฃผ์ ์ ์ฝ๊ฐ์ ๋์์ด ๋ ์ ์๋ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ญ์์ค.
1, Main tensorflow๋ --config=sycl์ด ์ฌ๋ฐ๋ฅธ tensorflow๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
2, CPU OpenCL์ ์ฌ์ฉํ๋ฉด ๋ด ํ๊ฒฝ์์ ์ผ๋ฐ CPU ๊ตฌํ๋ณด๋ค ์๋๊ฐ ์ฝ 4x~8x ์๋น๋ฉ๋๋ค.
์๊ฐ ํ์ด์ฌ classify_image.py
2017-09-07 16:56:29.076054: I tensorflow/core/platform/cpu_feature_guard.cc:137] ๊ทํ์ CPU๋ ์ด TensorFlow ๋ฐ์ด๋๋ฆฌ๊ฐ ์ฌ์ฉํ๋๋ก ์ปดํ์ผ๋์ง ์์ ๋ช
๋ น์ ์ง์ํฉ๋๋ค: SSE4.1 SSE4.2 AVX
2017-09-07 16:56:29.077967: W ./tensorflow/core/common_runtime/sycl/sycl_device.h:49] OpenCL CPU๋ฅผ ์๋ํ๋ ComputeCpp์์ ์ง์ํ๋ OpenCL GPU๊ฐ ์์ต๋๋ค.
2017-09-07 16:56:29.159775: I ./tensorflow/core/common_runtime/sycl/sycl_device.h:66] ๋ค์ OpenCL ์ฅ์น๋ฅผ ์ฐพ์์ต๋๋ค.
2017-09-07 16:56:29.159825: I ./tensorflow/core/common_runtime/sycl/sycl_device.h:68] id: 0, ์ ํ: CPU, ์ด๋ฆ: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz, ๊ณต๊ธ์
์ฒด: Intel(R) Corporation, ํ๋กํ: FULL_PROFILE
2017-09-07 16:56:30.213375: W ./tensorflow/core/framework/op_def_util.cc:333] Op BatchNormWithGlobalNormalization์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. GraphDef ๋ฒ์ 9์์ ์๋์ด ์ค์ง๋ฉ๋๋ค. tf.nn.batch_normalization()์ ์ฌ์ฉํ์ญ์์ค.
์์ด์ธํธ ํฌ๋, ํฌ๋, ํฌ๋ ๊ณฐ, ์ฟค๋ฒ ์ด, Ailuropoda melanoleuca (์ ์ = 0.89107)
์ธ๋, ์ธ๋, ์ธ๋ ์ธ๋, ์ธ๋ ๋ธ๋ ๋น์นด์ฐ๋คํฌ์ค(์ ์ = 0.00779)
๋ ์ ํฌ๋, ๋ ์ ํฌ๋, ํฌ๋, ๊ณฐ ๊ณ ์์ด, ๊ณ ์์ด ๊ณฐ, Ailurus fulgens(์ ์ = 0.00296)
์ปค์คํฐ๋ ์ ํ (์ ์ = 0.00147)
Earthstar (์ ์ = 0.00117)
์ค์ 1m44.473์ด
์ฌ์ฉ์ 2m8.980s
์์คํ
1m20.024s
์ฌ๋ฌ๋ถ, ์ ๋ ์ด ์ ์ฒด ์ค๋ ๋๋ฅผ ์ฝ์ง๋ ์๊ฒ ์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ์ ์ง๋ฌธ์ ๋ตํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค! ์์ง AMD GPU์ ํจ๊ป Tensorflow๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด๋ค ์ด์ ์ฒด์ ์์ RX Vega๋ก ํ ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
@M3L0NM4N ํ ... ์ค๋ ๋๋ฅผ ๋ฐ๋ผ๊ฐ์ง๋ ์์์ง๋ง ์ ์ด๋ CPU OpenCL์์๋ ์ง๊ธ ํ ์คํธ ๊ฐ๋ฅํ OpenCL ์ฝ๋๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์ AMD GPU("Bonaire")๊ฐ ์๊ณ GPU์ CPU์์ ๋ชจ๋ OpenCL์ ์คํํ๊ณ ์์ผ๋ฏ๋ก ์ด๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค. ์ฃผ๋ง์ ํ ๋ฒ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ด GPU์ OpenCL TensorFlow๊ฐ ์ ๋ง ํ์ํฉ๋๋ค.
tf-๊ณ ์๋ https://github.com/hughperkins/tf-coriander ์๋ํฉ๋๋ค.
macos์์ tensorflow 1.3 gpu/opencl ์ง์์ด ์์ต๋๊น?
์ต์ ๋ด์ค: GitHub ์์ค์์ OpenCL์ ์ฌ์ฉํ์ฌ TensorFlow 1.3.1์ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ์ต๋๋ค. ๋ฌธ์์ ๋๋ฝ๋ ๋ถ๋ถ์ด ๊ฝค ์์ผ๋ฉฐ GPU์์ ์์ง ์คํ์ ์๋ํ์ง ์์์ง๋ง ์ต์ํ OpenCL์ด ์๋ CPU์์๋ ์๋ํฉ๋๋ค. BTW, CPU OpenCL์ด ์ค์น๋์ด ์์ง ์๊ณ GPU OpenCL๋ง ์ค์น๋์ด ์์ต๋๋ค.
OpenCL GPU๊ฐ ์๋ TensorFlow์ ๋ํ ํ ์คํธ ์ฌ๋ก๊ฐ ์๋ ์ฌ๋์ด ์์ต๋๊น? ๋๋ ๊ฒฐ๊ตญ ๋ ์์ ์ ์ํด ํ๋๋ฅผ ๋ง๋ค์ด์ผ ํ์ง๋ง ๋น ๋ฅธ ํ์ธ์ ๋ฐ๋์ต๋๋ค.
@znmeb ๋ค, ์ ๊ฐ ๋ณด๊ณ ํ ๋ฌธ์ ์ ํ ์คํธ ์ฑ์ด ์์ต๋๋ค. https://github.com/hughperkins/tf-coriander/issues/64
๊ทํ์ ๊ฒฝ์ฐ์ ์๋ํ๋์ง ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
@unoexperto ์ - ์๋ํ์ง๋ง(์ถฉ๋ํ์ง ์์) OpenCL์ ์ฐพ์๋์ง ์ฌ๋ถ๋ ํ์๋์ง ์์ต๋๋ค.
ย python ./hello-tensorflow.py
b'Hello, TensorFlow!'
์ฌ๊ธฐ์์ ์ต์ ์ ์กฐ์น๋ ๋ฌธ์๋ฅผ ์์ฒญํ๊ธฐ ์ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ์ ์ถํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ( ./configure
๋น๋๋ฅผ ์์ค์์ ์คํํ ๋) OpenCL์ฉ ์ฝ๋ ๊ฐ ์๋ค๋ ๊ฒ์ด ๋ถ๋ช
ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ํผ ๊ทธ๋ ๊ฒ ์ฐพ์์ต๋๋ค.
@znmeb ๋ด ๊ฒฝ์ฐ GPU ์ฅ์น ์ ํ์ ๋ํ ์ด๊ธฐ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์ธ์ํ๊ธฐ ๋๋ฌธ์ ๊ทํ์ ๊ฒฝ์ฐ์ GPU ์ฅ์น๋ฅผ ์ฐพ์๋์ง ์์ฌ์ค๋ฝ์ต๋๋ค. tensorflow/core/common_runtime/gpu/gpu_device.cc
์ด๋๊ฐ์ ์ฝ์์ printf
๋ฅผ ์ถ๊ฐํ์ฌ ๋ค์ ์ปดํ์ผํ ์ ์์ต๋๋ค.
@unoexperto ํ ๋ก Google ๊ทธ๋ฃน์ ๊ฐ์ ํ์ฌ ๋ฌธ์ ์์ฒญ์ ๊ฒ์ํ์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๋ ๋ง์ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ธฐ ์ ์ ๋๊ตฐ๊ฐ ์๋ตํ๋์ง ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค.
@znmeb ์ด๋ค ์ง์นจ์ ๋ฐ๋ฅด๊ณ ์์ต๋๊น? clinfo๋ฅผ ์คํํ์ จ์ต๋๊น? computecpp_info๋ฅผ ์คํํ์ จ์ต๋๊น? OpenCL ๋๋ผ์ด๋ฒ๊ฐ ์์๋๋ก ์ค์น๋์์์ ๋ํ๋ ๋๊น? Ubuntu 14.04์ ๋ํ ์ง์นจ์ https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow ์ ์์ผ๋ฉฐ 16.04๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ http://deep-beta.co์ ๋ช ๊ฐ์ง ์คํ ์ง์นจ์ด ์์ต๋๋ค. uk/tensorflow-1-3-on-ubuntu-16-04-lts/
@rodburns clinfo ๋ฐ clpeak ๋ ๋ค ์คํ๋ฉ๋๋ค. ๋๋ ์ต๊ทผ์ ์ด๊ฒ์ ํ์ง ์์์ง๋ง, ์์ค์์ caffe๋ฅผ ๋น๋ํ๊ณ ํ ์คํธ๋ฅผ ์คํํ๋ฉด ํ์คํ GPU์ ๋ฟ์ต๋๋ค. ๊ทธ๋์ OpenCL/GPU ๋๋ผ์ด๋ฒ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ํ๊ณ ์๋ค๊ณ ํ์ ํฉ๋๋ค.
์ ๋ Arch Linux๋ฅผ ์ฌ์ฉ ์ค์ ๋๋ค. ์ปค๋์ LTS์ธ linux-lts 4.9.52-1์ ๋๋ค. ์ค์ํ ๊ฒฝ์ฐ "Bonaire"๋ 32๋นํธ ๋ชจ๋์์ ์ต๋ ์ฝ 1.7TFLOPS์ด๋ฉฐ AMD GPU์ "Sea Island" ์ ํ๊ตฐ์ ์์ต๋๋ค.
bin/computecpp_info
********************************************************************************
ComputeCpp Info (CE 0.3.2)
********************************************************************************
Toolchain information:
GLIBC version: 2.26
GLIBCXX: 20160609
This version of libstdc++ is supported.
********************************************************************************
Device Info:
Discovered 1 devices matching:
platform : <any>
device type : <any>
--------------------------------------------------------------------------------
Device 0:
Device is supported : UNTESTED - Untested OS
CL_DEVICE_NAME : Bonaire
CL_DEVICE_VENDOR : Advanced Micro Devices, Inc.
CL_DRIVER_VERSION : 2442.7
CL_DEVICE_TYPE : CL_DEVICE_TYPE_GPU
If you encounter problems when using any of these OpenCL devices, please consult
this website for known issues:
https://computecpp.codeplay.com/releases/v0.3.2/platform-support-notes
๋๊ตฐ๊ฐ ํ ์คํธ ๋ก๊ทธ๋ฅผ ์์งํฉ๋๊น? ๋ด ์ฅ์น๊ฐ ํ ์คํธ๋์ง ์์์ผ๋ฏ๋ก ํ ์คํธํ ๊ฒ์ด๋ผ๊ณ ํฉ๋๋ค. ;-)
Sycl/OpenCL์ฉ TensorFlow๋ฅผ ๋น๋ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค!
๊ตฌ์ฑ:
์ฐ๋ถํฌ 16.04
ํ
์ํ๋ก r1.3
์คํCL 2.0
ComputeCpp CE 0.3.2(computecpp_info ํ์ธ)
์ธํ
HD ๊ทธ๋ํฝ 620
๋ฐ์ ค 0.5.4
์ค์น ์ง์นจ(OpenCL Intel/ComputeCpp ๋น๋):
https://software.intel.com/en-us/articles/opencl-drivers#philinux
https://www.codeplay.com/portal/03-30-17-setting-up-tensorflow-with-opencl-using-sycl
์ค๋ฅ:
ERROR: /home/erwang/workspace/ia/tf_original/tensorflow/tensorflow/core/kernels/BUILD:1695:1: C++ compilation of rule '//tensorflow/core/kernels:adjust_contrast_op' failed (Exit 1)
In file included from tensorflow/core/kernels/adjust_contrast_op.cc:19:
In file included from ./tensorflow/core/kernels/adjust_contrast_op.h:18:
In file included from ./third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:
In file included from external/eigen_archive/unsupported/Eigen/CXX11/Tensor:14:
In file included from external/eigen_archive/Eigen/Core:299:
In file included from external/local_config_sycl/crosstool/../sycl/include/SYCL/sycl.hpp:20:
In file included from external/local_config_sycl/crosstool/../sycl/include/SYCL/sycl_interface.h:54:
external/local_config_sycl/crosstool/../sycl/include/SYCL/multi_pointer.h:342:3: error: multiple overloads of 'global_ptr' instantiate to the same signature 'void (pointer_t)' (aka 'void (__attribute__((address_space(1))) float *)')
๋ด CPU์ ํ๋ จ ๋ชจ๋ธ์ ์ค๋ ๊ฑธ๋ฆฌ๊ณ OpenCL/GPU ๊ฐ์์ด ์ ๋ง ํ์ํฉ๋๋ค...
@ErwanGalline ์ฐ๋ฆฌ๋ Eigen( https://bitbucket.org/benoitsteiner/opencl/pull-requests/16/changes-required-for-new-computecpp-ce/diff#comment-None )์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ๋ฐ์ดํธํ๋ ์ค์ ๋๋ค. ๋ณด๊ณ ์๋ ๋ฌธ์ ๋ฅผ ์์ ํ์ญ์์ค.
๋ํ ์ฐ๋ฆฌ๋ Eigen์ ๋ํ ์ ์คํธ๋ฆผ ์ฑ๋ฅ ๊ฐ์ ์ ์ค๋นํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์ฝ๊ฐ ๊น๋ค๋กญ๊ณ ๋ณํฉ ์ถฉ๋์ ํ๋ฆ์ ํผํ๊ธฐ ์ํด @benoitsteiner ์ ์กฐ์ ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ๋๋ฌํ๊ณ ์์ต๋๋ค.
AMD ์ฌ์ฉ์์ ๊ฒฝ์ฐ ํฌํฌ๋ฅผ ์ฌ์ฉํด ๋ณผ ๊ฒ์ ์ ์ํฉ๋๋ค: https://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu
Ubuntu 16.04์ ๋ํ ์ค์ ์ง์นจ์ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค. http://deep-beta.co.uk/tensorflow-1-3-on-ubuntu-16-04-lts/
์์ ์ธ๊ธํ Eigen ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋ ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ tensorflow์ ์
์คํธ๋ฆผ์ด ๋ฉ๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@lukeiwanski ๊ทํ์ ํฌํฌ๋ AMD R9 Nano/AMD FirePro GPU๋ง ์ง์ํฉ๋๊น?
@lukeiwanski GPU๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํ
์คํธ ์ฌ๋ก๊ฐ ์์ต๋๊น? radeontop
๋ก ๋ชจ๋ํฐ๋งํ ์ ์์ง๋ง TensorFlow ์์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ํฉ๋๋ค.
@ZixuanLiang ์๋ ๋ฟ๋ง ์๋๋ผ..
์ฐ๋ฆฌ๋ ํ์ฌ AMD(R9 380, R9 Nano, FirePro)์์ ํ
์คํธํ๊ณ ์์ต๋๋ค. Intel GPU๊ฐ ์ผ๋ถ ๋๋ผ์ด๋ฒ ๋ฒ๊ทธ๋ฅผ ๋
ธ์ถํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์์ ์ฌํญ์ด ์ ๊ณต๋ ์์ ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Renesas R-Car๋ฅผ ๋ฐํํ์ผ๋ฉฐ ๋ ๋ง์ ๊ฒ์ด ๋ค๋ฐ๋ฅผ ๊ฒ์ผ๋ก ๊ธฐ๋ํฉ๋๋ค.
Xilinx๊ฐ triSYCL https://github.com/tensorflow/tensorflow/pull/12882 ์ ๋ํ ์ ์คํธ๋ฆผ ์ง์์ ์ ๊ณตํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ FPG(?) - @keryell ์ ์ด์ ๋ํด ๋ ๋ง์ด ์์์ผ ํฉ๋๋ค.
@znmeb bazel test -c opt --config=sycl --test_output=all //tensorflow/python/kernel_tests:basic_gpu_test
๋ ๊ณต์ ํ ๊ฒ์ฆ์ด์ด์ผ ํฉ๋๋ค. ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
INFO: From Testing //tensorflow/python/kernel_tests:basic_gpu_test:
==================== Test output for //tensorflow/python/kernel_tests:basic_gpu_test:
2017-10-05 10:53:52.727745: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2017-10-05 10:53:53.059908: I ./tensorflow/core/common_runtime/sycl/sycl_device.h:66] Found following OpenCL devices:
2017-10-05 10:53:53.059926: I ./tensorflow/core/common_runtime/sycl/sycl_device.h:68] id: 0, type: GPU, name: Tonga, vendor: Advanced Micro Devices, Inc., profile: FULL_PROFILE
.....
@lukeiwanski ๊ฐ์ฌํฉ๋๋ค AMD GPU์์ ์๋ํด๋ณด๊ฒ ์ต๋๋ค
@lukeiwanski ๋น๋ ๋ฐ ํ ์คํธ๊ฐ ๋ด Bonaire์์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ ๋ Python 3.6์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ง์นจ์์๋ Python 2.7์ ์ฌ์ฉํฉ๋๋ค. 2.7์ ์ฌ์ฉํด์ผ ํฉ๋๊น ์๋๋ฉด 3.6์ด ์๋ํฉ๋๊น?
@znmeb ๋ค์ https://github.com/tensorflow/tensorflow/issues/6533#issuecomment -273852647 Python 3.6์ด ์๋ํด์ผ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@lukeiwanski ํ์ฌ TF๋ฅผ ๊ตฌ์ถํ ์ ์๋ ComputeCpp ๋ฒ์ ์ธ๊ฐ์?
0.3.2์ 0.1.4 ์ฌ์ด์ ๋ค์ํ ๋ฒ์ ์ ์๋ํ์ง๋ง ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์์์ต๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ "'global_ptr'์ ๋ค์ค ์ค๋ฒ๋ก๋๊ฐ ๋์ผํ ์๋ช
์ผ๋ก ์ธ์คํด์คํ๋จ" ์ค๋ฅ๋ก ๋๋ฌ์ต๋๋ค.
Btw, TF ์์ค์์ TensorDeviceSycl.h ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ฆ์ด ๋ฐ๋ ํ์ผ์ธ๊ฐ์? ํ์ฌ ์์ค์ ํจ์น๋ฅผ ์ ์ฉํ ์ ์์ต๋๊น?
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@eLvErDe ComputeCpp 0.3.2 ๋น๋ ๊ฐ๋ฅ: https://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu
์ ์คํธ๋ฆผ์๋ ์ด๋ฅผ ์์ ํ๋ Eigen ํจ์น๊ฐ ์์ต๋๋ค. https://github.com/tensorflow/tensorflow/issues/22#issuecomment -334154564 ์ฐธ์กฐ
bazel ๋น๋ ์ค์ ์ด Eigen ํจ์น๋ฅผ ์ฝ์ ํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น? ๊ณ ์ ๋ฒ์ ์ ์ป์ผ๋ ค๋ฉด Eigen tgz ๋ฒ์ ์ ์ด๋๊ฐ์ ๋ถ๋ช์ณ์ผ ํ ๊น์?
๊ณ ๋ง์, ์๋ด.
https://github.com/lukeiwanski/tensorflow/commit/8468d65e87e083337f18616f75ac56d3296d6ab1
์ด ์ปค๋ฐ์ ๋น๋ํ๊ธฐ์ ์ถฉ๋ถํ ๊น์?
์, ๋น์ ์ ๊ทธ๊ฒ์ ์ฒด๋ฆฌ ์ ํ ํ ์ ์์ด์ผํฉ๋๋ค
์ฌํ๊ฒ๋, ๊ทธ๊ฒ์ ๋ถ๋ช ํ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๋ค์์ ๋ค์ ๋น๋ ์คํจ ์ค ์ผ๋ถ์ ๋๋ค.
external/eigen_archive/Eigen/src/Core/util/BlasUtil.h:63:63: error: no type named 'ReturnType' in 'Eigen::ScalarBinaryOpTraits<cl::sycl::vec<float, 4>, std::complex<float>, Eigen::internal::scalar_product_op<cl::sycl::vec<float, 4>, std::complex<float> > >'
typedef typename ScalarBinaryOpTraits<LhsScalar,RhsScalar>::ReturnType Scalar;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
external/eigen_archive/Eigen/src/Core/util/BlasUtil.h:69:34: error: invalid operands to binary expression ('const cl::sycl::vec<float, 4>' and 'const std::complex<float>')
{ return conj_if<ConjLhs>()(x) * conj_if<ConjRhs>()(y); }
~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
@eLvErDe ์ปดํ์ผํ๋ ค๋ฉด ์ ์ฉํด์ผ ํ๋ ์ปค๋ฐ์ด ๊ฑฐ์ ์์ต๋๋ค.
dev/amd_gpu์ ํ์ ์ฌ์ฉํ๊ฑฐ๋ ํ์ฌ ๋ถ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ ค๋ ๊ฒฝ์ฐ .. dev/amd_gpu๋ฅผ ๋ณํฉํ ์ ์์ต๋๋ค.
์ฌ์ค ์ ๋ ๋น๊ณต์ Debian/Ubuntu ํจํค์ง์์ ์์ ์ค์ด๋ฏ๋ก ๊ณต์ 1.3.1 ๋ฆด๋ฆฌ์ค์ ๊ฐ๊น๊ฒ ์ ์งํ๋ ค๊ณ ํฉ๋๋ค. OpenCL ์ง์ ์์ด๋ ์ด ์ ์์ง๋ง ์ฌ๋ฐ๋ฅด๊ฒ ์ง์๋๋ ์ฆ์ ํ์ฑํํ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ํ ์คํธ ๋ชฉ์ ์ผ๋ก ๋ธ๋์น์ ๋ํด ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ ์๋ ์์ง๋ง ์ค๋์ ์ถฉ๋ถํฉ๋๋ค. ;)
๊ด์ฐ ์ฅ๋น์๋ ์ฝ 10๊ฐ์ง ์ข ๋ฅ์ AMD GPU๊ฐ ์์ต๋๋ค. (์ฐ๋ถํฌ 16.04 ๋ฐ amdgpu-pro๋ฅผ ์คํํ๋ 7970์์ RX 480์ผ๋ก). ๋ด๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ํ ์คํธํ์ฌ ๊ธฐ์ฌํ ์ ์๋์ง ์๋ ค์ฃผ์ญ์์ค.
๋ด๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ํ ์คํธํ์ฌ ๊ธฐ์ฌํ ์ ์๋์ง ์๋ ค์ฃผ์ญ์์ค.
https://github.com/ROCmSoftwarePlatform/hipCaffe ๋ ์ด๋ป์ต๋๊น?
https://github.com/ROCmSoftwarePlatform/hipeigen
2017๋ 10์ 17์ผ ํ์์ผ ์ค์ 10์ 54๋ถ์ slundell [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๊ด์ฐ ์ฅ๋น์๋ ์ฝ 10๊ฐ์ง ์ข ๋ฅ์ AMD GPU๊ฐ ์์ต๋๋ค. (์์
7970 - ์ฐ๋ถํฌ 16.04 ๋ฐ amdgpu-pro๋ฅผ ์คํํ๋ RX 480). ํ ์ ์๋์ง ์๋ ค์ฃผ์ธ์
๋ฌด์์ด๋ ํ ์คํธํ์ฌ ๊ธฐ์ฌํ์ญ์์ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-337309059 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AA6MNxXJ-G3nCQUA9RucrJ8y4vs5NPtLks5stOnbgaJpZM4Gex3i
.
@lukeiwanski ํฌํฌ๊ฐ macOS์์๋ AMD GPU๋ฅผ ์ง์ํฉ๋๊น?
์๋
,
GPU(Mali-T720)๊ฐ ํ์ฑํ๋ Android ๊ธฐ๊ธฐ์ฉ Ubuntu16.04 x64์์ tensorflow API๋ฅผ ๊ตฌ์ถํ๊ณ ์์์ต๋๋ค.
๋ด OS ์ ๋ณด:
์ฐ๋ถํฌ 16.04 x64
์ปดํจํฐ GPU: NVIDIA 1080Ti
์ฟ ๋ค 8.0
CUDNN 5.1(๋น๋์ cuda ๋๋ cudnn์ ์ฌ์ฉํ์ง ์์ง๋ง)
๋ฐ์ ค 0.5.2
ComputeCpp CE 0.3.2
๋ด build.sh๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค
'
bazel ๋น๋ -c opt --config=sycl //tensorflow/contrib/android:libtensorflow_cc.so --cxxopt="-
std=c++11" --cxxopt="-DTENSORFLOW_DISABLE_META" --verbose_failures --
crosstool_top=//external:android/crosstool --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --
cpu=armeabi-v7a
'
๋น๋ํ๊ธฐ ์ ์. LD_LIBRARY_PATH=my_sycl_lib_path=$LD_LIBRARY_PATH๋ฅผ ๋ด๋ณด๋ด๊ณ ' --config=sycl ' ์์ด ๋น๋ํ๋ ๊ฒ์ด ์ข๊ณ ์ฌ๋ฐ๋ฅธ libtensorflow_cc.so๋ฅผ ์ป์์ง๋ง ' --config=sycl '์ ์ฌ์ฉํ๋ฉด ์ต์ข
๊ฒฐ๊ณผ์ -lComputeCpp๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ปดํ์ผ ์ค๋ฅ
๋ค์๊ณผ ๊ฐ์ ์ ์ฒด ๋ก๊ทธ:
์ค๋ฅ: /home/e0024/workspace/tensorflow/tensorflow/contrib/android/BUILD:102:1: '//tensorflow/contrib/android:libtensorflow.so' ๊ท์น ์ฐ๊ฒฐ ์คํจ: link_dynamic_library.sh ์คํจ: ๋ช
๋ น ์คํ ์ค๋ฅ
(cd /home/e0024/.cache/bazel/_bazel_e0024/783dad02ec856015f56356584726dd10/execroot/org_tensorflow && \
์์ ํ๊ฒฝ - \
COMPUTECPP_TOOLKIT_PATH=/home/e0024/workspace/source/computeCppForSYCL1.2 \
HOST_CXX_COMPILER=/usr/bin/g++ \
HOST_C_COMPILER=/usr/bin/gcc \
LD_LIBRARY_PATH=/home/e0024/workspace/source/computeCppForSYCL1.2/lib:/home/e0024/workspace/caffe/build/lib:/home/e0024/workspace/cudnn/lib64: \
๊ฒฝ๋ก=/home/e0024/bin:/home/e0024/.local/bin:/home/e0024/workspace/Anaconda2/bin:/opt/cuda:/home/e0024/workspace/source/protoc-3.3.0- linux-x86_64/bin:/home/e0024/workspace/bazel/output:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/ ๊ฒ์:/usr/local/games:/snap/bin \
PWD=/proc/self/cwd \
PYTHON_BIN_PATH=/home/e0024/workspace/Anaconda2/bin/python \
PYTHON_LIB_PATH=/home/e0024/workspace/Anaconda2/lib/python2.7/site-packages \
TF_NEED_CUDA=0 \
TF_NEED_OPENCL=1 \
์ธ๋ถ/bazel_tools/tools/cpp/link_dynamic_library.sh ๋ฌด์ ๋ฌด์ ๋ฌด์ ์ธ๋ถ/androidndk/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -shared -o bazel-out/arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/tensorflow/contrib/android/libtensorflow.so '-Wl,-rpath,$ORIGIN/../../../ _solib_armeabi-V7A / _U @local_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_Usycl_Ssycl_Slib '-Lbazel ์์ / ํ - ๋ฆฌ๋
์ค - androideabi-4.9-V7A - GNU-libstdcpp-์ตํธ / ๋น / _solib_armeabi-V7A / _U @local_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Slocal_Uconfig_Usycl_Ssycl_Slib -Wl, ์ ์ฒด์ ์ธ ์์นด์ด๋ธ bazel ์์ / ํ -linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/tensorflow/c/libc_api.a -Wl,-no-whole-archive -Wl,-whole-archive bazel-out/arm-linux-androideabi- 4.9-v7a-gnu-libstdcpp-opt/bin/tensorflow/core/libandroid_tensorflow_lib.lo -Wl,-no-whole-archive -Wl,-whole-archive bazel-out/arm-linux-androideabi-4.9-v7a-gnu -libstdcpp-opt/bin/tensorflow/core/kernels/libandr oid_tensorflow_kernels.lo -Wl,-no-whole-archive -Wl,-whole-archive bazel-out/arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/tensorflow/core/libandroid_tensorflow_lib_lite.lo -Wl ,-no-whole-archive -Wl,-whole-archive bazel-out/arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/tensorflow/core/libprotos_all_cc.a -Wl,-no-whole -archive -Wl,-์ ์ฒด ์์นด์ด๋ธ bazel-out/arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/external/protobuf/libprotobuf.a -Wl,-no-whole-archive -Wl, -์ ์ฒด ์์นด์ด๋ธ bazel-out/arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/external/protobuf/libprotobuf_lite.a -Wl,-no-whole-archive -lComputeCpp ์ธ๋ถ/androidndk/ndk/ ์์ค/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a ์ธ๋ถ/androidndk/ndk/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libsupc++.a -landroid -llog -lm -z defs -s -Wl,--gc-sections '-Wl,-soname=libtensorflow.so' -Wl,--version-script tensorflow/c/version_script.lds -lz -static-libgcc - no-canonical-prefixes '-march=armv7-a' -Wl,--fix-cortex-a8 '--sysroot=external/androidndk/ndk/platforms/android-14/arch-arm'): com.google.devtools.build.lib.shell.BadExitStatusException: ํ๋ก์ธ์ค๊ฐ ์ข
๋ฃ๋จ ์ํ 1.
์ธ๋ถ/androidndk/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../.. /Ssoarm-linux-androideabi/bin/ld: ๊ฒฝ๊ณ : ํธํ๋์ง ์๋ bazel-out/arm-linux-androideabi-4.9-v7a-gnu-libstdcpp-opt/bin/_solib_armeabi-v7a/_U@local_Uconfig_Usycl_S_Ssycl_Csyclrt___Uexternal_Csyclrt___Uexternal_Ssycl ๋์ ๊ฒ์ ComputeCpp์ฉ
์ธ๋ถ/androidndk/ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../.. /arm-linux-androideabi/bin/ld: ์ค๋ฅ: -lComputeCpp๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
collect2: ์ค๋ฅ: ld๊ฐ 1 ์ข
๋ฃ ์ํ๋ฅผ ๋ฐํํ์ต๋๋ค.
๋์ //tensorflow/contrib/android:libtensorflow.so ๋น๋ ์คํจ
์ ๋ณด: ๊ฒฝ๊ณผ ์๊ฐ: 617.736์ด, ์๊ณ ๊ฒฝ๋ก: 54.66์ด
์.... GPU(Mali-T720)๊ฐ ํ์ฑํ๋ ํ๋ชฉ์ tensorflow API๋ฅผ ๊ตฌ์ถํ๊ณ ์ถ์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ๊ฒฝํ์ด๋ ์ ์์ ๋จ๊ธธ ์ ์๋ค๋ฉด ๊ฐ์ฌํฉ๋๋ค. ํ ๋๋ฐ.
๋ค์ ์ฃผ Arm TechCon, @laMia482 ์์ ์ ๊ฐ์ฐ์ ๋ค์ผ๋ฌ ์ค์ธ์! http://schedule.armtechcon.com/session/running-tensorflow-machine-learning-on-arm-embedded-hardware/850230
์์ง ์ฝ๊ฒ ๊ตฌํ ์ ์๋ SPIR-V๋ฅผ ์ง์ํ๋ Mali ๋๋ผ์ด๋ฒ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Arm CPU ์ง์ ๋ฐ SPIR-V ์ง์์ด ํฌํจ๋ Android์ฉ ComputeCpp ๋ฐํ์์ด ํ์ํฉ๋๋ค(์์ง ์ ๊ณต๋์ง ์์). ๊ทธ๋์, ๋น์ ์ ๋จ์ง _์กฐ๊ธ_ ์กฐ๊ธ๋ง ์ฐธ์์ผ ํ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ(Vertex.AI)๋ OpenCL์์ Keras ์คํ์ ์ง์ํ๋ ๋ฅ ๋ฌ๋ ์คํ์ธ PlaidML์ ๊ณต๊ฐํ์ต๋๋ค. TensorFlow ์ง์์ด ์์ ๋์ด ์์ต๋๋ค. ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์, Mac ์ง์์ด ์งํ ์ค์ ๋๋ค(Windows๋ ํฌํจ). http://vertex.ai/blog/announcing-plaidml @ggaabe
@choongng ํด๋ณด๊ณ ์ถ์์ง๋ง ์คํจ.
pip search plaidml
๋ฐํ
plaidml (0.1.0rc3) - PlaidML machine learning accelerator
ํ์ง๋ง pip install plaidml
๋๋ pip install plaidml==0.1.0rc3
๋ณด๊ณ
Could not find a version that satisfies the requirement plaidml (from versions: )
No matching distribution found for plaidml
@hy9be tensorflow ์์ OpenCL์ ์ง์ํ๋ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ๋ณด๋ค๋ plaidml ์ ์ฅ์ ์์ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๋ ๊ฒ์ด ๋ ์ ์ ํ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ ์ค์น ์ง์นจ์ ๋ณด๋ฉด pip install ๋ช ๋ น์ด ์ฌ๋ฐ๋ฅด์ง ์์ ์ ์์ต๋๋ค.
๊ทํ์ ๊ด์ฌ๊ณผ ์ธ์ ์ฐ์ค์ ๋ํด @andrewrichards ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
ํ์ง๋ง ํ์ฌ ๋(๋ํ์์)๋ Android ๊ธฐ๊ธฐ์์ Tensorflow๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ๋น๋ํ๊ณ GPU(Mali-T720)๋ฅผ ํ์ฑํํ๊ธฐ ์ํด SPIP-V๋ฅผ ์ง์ํ๋ Mali ๋๋ผ์ด๋ฒ์ Arm CPU๊ฐ ์๋ Android์ฉ ComputeCpp ๋ฐํ์์ ํ๋ณดํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ ๋ฌด์์ ๋๊น? ์ง์ ๋ฐ SPIR-V ์ง์.
CodePlay ํํ์ด์ง์์ ComputeCpp(Ubuntu16.04 x64 with bin/doc/include/lib/)๋ฅผ ๋ค์ด๋ก๋ํ๊ธฐ ๋๋ฌธ์ ์ด์ ๋ค์์ ์คํํ์ต๋๋ค.
bazel build -c opt --config=sycl //tensorflow/contrib/android:libtensorflow_cc.so --cxxopt="-std=c++11" --cxxopt="-DTENSORFLOW_DISABLE_META" --verbose_failures --crosstool_top=//external:android/crosstool --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cpu=armeabi-v7a
์ค๋ฅ๋ libComputeCpp.so incompatible
๋ผ๊ณ ํ์๋์ด ์์ผ๋ฏ๋ก Arm CPU ์ง์ ๋ฐ SPIR-V ์ง์์ด ํฌํจ๋ Android์ฉ ComputeCpp๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ์ง๋ง Android ComputeCpp๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์์ค ์ฝ๋๋ฅผ ์ฐพ์ ์ ์์๊ณ github์ ์ํ๋ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฌ Android์ฉ ComputeCpp๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋ง์ํ์ จ๋๋ฐ, Android ๊ธฐ๊ธฐ๋ฅผ ์ง์ํ ๊ณํ์ด ์๊ฑฐ๋ ์ง์๋๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ฐ์ ์ ์์ต๋๊น?
AMD GPU ๋ฐ Linux ์ฌ์ฉ์๋ฅผ ์ํด AMD๋ ์ต๊ทผ ์ฌ๊ธฐ ์ tensorflow์ HIP ํฌํธ๋ฅผ ์ถ์ํ์ต๋๋ค. ๊ด์ฌ์ด ์์ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ํ ์คํธํ์ง ์์์ต๋๋ค.
ํ ์คํธํ ์ ์์ต๋๋ค. ๊ณ์ ์ง์ผ๋ด ์ฃผ์ญ์์ค. ๊ทธ๋๋ CI์ ์คํจํ ๊ฒ ๊ฐ์ต๋๋ค.
์ค์ ๋ก ์คํจํ๊ณ ์์ต๋๋ค. ์์ง ์ด๊ธฐ ๋จ๊ณ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ํ
์คํธํ๊ณ MNIST ์์ ์์ ์ฆ์ segfault๋ฅผ ์ป์์ต๋๋ค.
๋ด๊ฐ ์ฌ๊ธฐ์ ๋ญ ์๋ชปํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค.
$ python ./convolutional.py
I tensorflow/stream_executor/dso_loader.cc:130] Couldn't open CUDA library libhipblas.so. LD_LIBRARY_PATH: :/home/masa/project/rendering/RadeonProRender-Baikal/Bin/Release/x64:/usr/local/lib64:/opt/CodeXL_2.5-25:/usr/lib/x86_64-linux-gnu/:/opt/CodeXL_2.5-25/RuntimeLibs/QT/
I tensorflow/stream_executor/cuda/cuda_blas.cc:2305] Unable to load HIPBLAS DSO.
I tensorflow/stream_executor/dso_loader.cc:130] Couldn't open CUDA library libhipfft.so. LD_LIBRARY_PATH: :/home/masa/project/rendering/RadeonProRender-Baikal/Bin/Release/x64:/usr/local/lib64:/opt/CodeXL_2.5-25:/usr/lib/x86_64-linux-gnu/:/opt/CodeXL_2.5-25/RuntimeLibs/QT/
I tensorflow/stream_executor/cuda/cuda_fft.cc:344] Unable to load cuFFT DSO.
I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libhip_hcc.so locally
I tensorflow/stream_executor/dso_loader.cc:130] Couldn't open CUDA library libhiprng.so. LD_LIBRARY_PATH: :/home/masa/project/rendering/RadeonProRender-Baikal/Bin/Release/x64:/usr/local/lib64:/opt/CodeXL_2.5-25:/usr/lib/x86_64-linux-gnu/:/opt/CodeXL_2.5-25/RuntimeLibs/QT/
I tensorflow/stream_executor/cuda/cuda_rng.cc:338] Unable to load cuRAND DSO.
I tensorflow/stream_executor/dso_loader.cc:139] successfully opened CUDA library libMIOpen.so locally
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
W tensorflow/stream_executor/cuda/cuda_driver.cc:633] creating context when one is currently active; existing: 0x7f94fa357e90
I tensorflow/core/common_runtime/gpu/gpu_device.cc:892] Found device 0 with properties:
name: Fiji [Radeon R9 FURY / NANO Series]
major: 2 minor: 0 memoryClockRate (GHz) 1
pciBusID 1๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ
Total memory: 4.00GiB
Free memory: 3.75GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:913] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Fiji [Radeon R9 FURY / NANO Series], pci bus id: 1๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ)
Initialized!
I tensorflow/core/kernels/conv_ops.cc:604] running auto-tune for Convolve
Invoking clang-ocl on "/tmp/miopen-MIOpenUtilKernels.cl-c377-1df5-8b6a-884c/MIOpenUtilKernels.cl"
/opt/rocm/bin/clang-ocl -DNUM_CH_PER_WG=1 -DNUM_IM_BLKS_X=1 -DNUM_IM_BLKS=4 -DLOCAL_MEM_SIZE=432 -DSTRIDE_GT_1=0 -DTILE_SZ_X=32 -DTILE_SZ_Y=8 -DUSE_IM_OFF_GUARD=1 -mcpu=gfx803 -Wno-everything MIOpenUtilKernels.cl -o /tmp/miopen-MIOpenUtilKernels.cl-c377-1df5-8b6a-884c/MIOpenUtilKernels.cl.o
writing gemm kernel to "/tmp/miopen-tinygemm.cl-836e-c4d4-abd3-b292/tinygemm.cl"
Invoking clang-ocl on "/tmp/miopen-tinygemm.cl-836e-c4d4-abd3-b292/tinygemm.cl"
/opt/rocm/bin/clang-ocl -mcpu=gfx803 -Wno-everything tinygemm.cl -o /tmp/miopen-tinygemm.cl-836e-c4d4-abd3-b292/tinygemm.cl.o
GCN assember path: /opt/rocm/opencl/bin/x86_64/clang
Arugment: --version
Invoking clang-ocl on "/tmp/miopen-MIOpenConvDirUniC.cl-f5fc-85f4-7079-a024/MIOpenConvDirUniC.cl"
/opt/rocm/bin/clang-ocl -DMLO_HW_WAVE_SZ=64 -DMLO_DIR_FORWARD=1 -DMLO_FILTER_SIZE0=5 -DMLO_FILTER_SIZE1=5 -DMLO_FILTER_PAD0=2 -DMLO_FILTER_PAD1=2 -DMLO_N_OUTPUTS=32 -DMLO_N_INPUTS=1 -DMLO_BATCH_SZ=64 -DMLO_OUT_WIDTH=28 -DMLO_OUT_HEIGHT=28 -DMLO_OUT_BATCH_STRIDE=25088 -DMLO_OUT_CHANNEL_STRIDE=784 -DMLO_OUT_STRIDE=28 -DMLO_IN_WIDTH=28 -DMLO_IN_HEIGHT=28 -DMLO_IN_BATCH_STRIDE=784 -DMLO_IN_CHANNEL_STRIDE=784 -DMLO_IN_STRIDE=28 -DMLO_IN_TILE0=28 -DMLO_IN_TILE1=8 -DMLO_OUT_TILE0=28 -DMLO_OUT_TILE1=8 -DMLO_GRP_TILE0=16 -DMLO_GRP_TILE1=8 -DMLO_ACTIVE_ALUS=112 -DMLO_N_ALUTILES_PERSTACK=2 -DMLO_OUT_PIX_TILE0=2 -DMLO_OUT_PIX_TILE1=2 -DMLO_N_STACKS=1 -DMLO_N_OUT_TILES=8 -DMLO_N_OUT_TILES_PERSTACK=16 -DMLO_N_IN_TILES_PERSTACK=1 -DMLO_N_READ_PROCS=128 -DMLO_CONV_BIAS=0 -DMLO_ALU_VTILE0=14 -DMLO_ALU_VTILE1=4 -mcpu=gfx803 -Wno-everything MIOpenConvDirUniC.cl -o /tmp/miopen-MIOpenConvDirUniC.cl-f5fc-85f4-7079-a024/MIOpenConvDirUniC.cl.o
Invoking clang-ocl on "/tmp/miopen-MIOpenConvFFT.cl-2fbf-2ba2-0088-ebfc/MIOpenConvFFT.cl"
/opt/rocm/bin/clang-ocl -DCFF_TRANSP_WT_MOD16=1 -DCFF_CGEMM_CHOICE_0=1 -DCFF_IMG_SZ_28_28 -DCFF_IMG_H=28 -DCFF_IMG_W=28 -DCFF_BATCH=64 -DCFF_NFILTER=32 -DCFF_CHANNELS=1 -DCFF_HALFW=1148928 -mcpu=gfx803 -Wno-everything MIOpenConvFFT.cl -o /tmp/miopen-MIOpenConvFFT.cl-2fbf-2ba2-0088-ebfc/MIOpenConvFFT.cl.o
Segmentation fault (core dumped)
@masahi - rocm 1.6.4 base๊ฐ ์ค์น๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
@bensander ๊ฐ์ฌํฉ๋๋ค, ์ ๊ทธ๋ ์ด๋ํ๊ฒ ์ต๋๋ค.
@bensander AMD ์คํ์์ ๋ค๋ฅธ ๊ฒ์ด ํ์ํฉ๋๊น? ์ง๊ธ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ์คํ ์์ค "amdgpu" ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ AMD ๋ ์ opencl ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฟ์ ๋๋ค.
@masahi - rocm ๋ฐ rocm-libs(์: "apt-get install rocm rocm-libs")๋ฅผ ์ค์นํ๋ ๊ฒฝ์ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๋๋ค. ์ ์ฅ์์ rocm_docs์๋ ์์ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ ์ ์ฒด ์ง์นจ์ด ์์ต๋๋ค.
@bensander rocm 1.6.4๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ(1.6.3์ด ์๋๋ผ) ์คํํ๊ณ ์๋์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น?
@masahi ๋ ์ถ์ธก์ผ ๋ฟ์ ๋๋ค. ์ฌ๊ธฐ๊ฐ ์๋๋ผ AMD ๋๋ RoCM ํ๋ก์ ํธ์ ๊ฐ์ด ๋ฌธ์ ์ ๊ด๋ จํ์ฌ ๋ ๊ด๋ จ์ด ์๋ ๊ณณ์์ ์ง๋ฌธํด์ผ ํฉ๋๋ค...
@keryell ๋ง์ต๋๋ค. ์ฃผ์ ์์ ๋ฒ์ด๋ฌ์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฉ์ถฅ๋๋ค.
์ด์จ๋ ๋ด ์์คํ
์์ hiptensorflow๊ฐ ์๋ํ๋๋ก ํ ์ ์์์ต๋๋ค. ๋์ค์ ๊นจ๋ํ Ubuntu ์ค์น๋ก ์๋ํ๊ฒ ์ต๋๋ค.
@masahi - ๋ฌธ์ ๋ฅผ ์ด์ด์ฃผ์๋ฉด ์ค์ ํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์, @bensander์ AMD์ ๋ค๋ฅธ ์ฌ๋๋ค ๋๋ถ์ hiptensorflow ๊ฐ ์๋ํ ์ ์์๋ค๋ ๊ฒ์ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ๋น ๋ฅธ ์์ ๊ฐ์ด๋์์ ๋ชจ๋ ์์ ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
๊ฐ์ฌ ํด์
ROCm์ ์ฌ์ฉํ์ฌ AMD ํ๋์จ์ด์์ TensorFlow๋ฅผ ์๋ํ๋ ค๋ ์ฌ๋๋ค์ ์ํด AMD Fury Nano๋ฅผ ์ฌ์ฉํ์ฌ Fast.ai ๋
ธํธ๋ถ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ ๋ธ๋ก๊ทธ๋ฅผ ์์ฑํ์ต๋๋ค.
http://briansp2020.github.io/2017/11/05/fast_ai_ROCm/
๐ ๊ธฐ๋๋ฉ๋๋ค!
์ ์ ํ Tensorflow ์ง์์ฒ๋ผ ๋ค๋ฆฌ๋ ROCm 1.7์ด ๊ณง ์ถ์๋ฉ๋๋ค!
https://www.phoronix.com/scan.php?page=news_item&px=AMD-ROCm-1.7-์ถ์
AMD GPU์ ๋ํ Tensorflow ํฌํธ:
https://github.com/ROCmSoftwarePlatform/hiptensorflow/blob/hip/README.ROCm.md
๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ ์๋ํฉ๋๋ค. ๋ด ํ๋์จ์ด ์ค์ :
GPU: AMD ๋ผ๋ฐ์จ RX 480
CPU: ์ธํ
์ ์จ 2603 v3
MB: ์ํผ๋ง์ดํฌ๋ก x10srl-f
ํต์ฌ์ ๋ง๋๋ณด๋์ด๊ณ CPU๋ PCIe v3๋ฅผ ์ง์ํด์ผ ํฉ๋๋ค.
์ฑ๋ฅ์ Nvidia 980Ti์ ์ ์ฌํฉ๋๋ค.
"์ง์๋๋" Ubuntu 16.04 LTS ์ค์น์์ ์๋ํ๋๋ก "์ง์๋๋" AMD ๋๋ผ์ด๋ฒ๋ ์ป์ ์ ์์ต๋๋ค. ๊ณํ๋ ๋ ธํํ?
znmeb, ๋น์ ์ AMD GPU๋ ๋ฌด์์ ๋๊น? ๋์ผ GPU๊ฐ ์๋ ๊ฒฝ์ฐ BIOS์์ ์ง์๋์ง ์๋ GPU๋ฅผ ๋นํ์ฑํํฉ๋๋ค.
์ ์ฒด ์ค๋ ๋๋ฅผ ์ฝ์ ์ ์์ต๋๋ค... MacOS(sierra +)์ OpenCL์์ tensorflow์ ํ์ฌ ์ํ๋ ๋ฌด์์
๋๊น? ํนํ, Intell Iris GPU๊ฐ ์๊ณ ์์ค Tf+Open CL ์ง์์์ ๋น๋ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค.
๋ํ tf corrainder๋ ๋ฒ์ 1.2์์ ์ ์คํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
@varun19299 FWIW์๋ OpenCL์ฉ Intel SDK๊ฐ ์์ต๋๋ค. ์ ๊ณ ๋ Sandy Bridge ๋ฉํฑ์ ์ด SDK๊ฐ ์์ง๋ง ๊ทํ์ ์ปดํจํฐ์์๋ ์๋ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. https://software.intel.com/en-us/intel-opencl
์ด๊ฒ์ ํ์ฌ ์ฐ๋ถํฌ๊ฐ ์๋ Linux ์์คํ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ์ ๋๊น? ๋ก๋๋งต ํ์ด์ง๋ ์ฌ๊ธฐ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
@pfc ํ์ฌ Ubuntu๊ฐ ์๋ Linux์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋ฌด์์ ๋๊น? ์ผ๋ฐ์ ์ผ๋ก OpenCL์ ์ฌ์ฉํ๋ TensorFlow? ์๋๋ฉด AMD GPU์์ OpenCL์ ์ฌ์ฉํ๋ TensorFlow์ ๋๊น? OpenCL์ ์ฌ์ฉํ์ฌ TensorFlow๋ฅผ ์คํํ๋ ค๋ ์ ์ผํ ์ด์ ์ด๊ธฐ ๋๋ฌธ์ ํ์๋ก ๊ฐ์ ํ๊ฒ ์ต๋๋ค. NVidia GPU์ ๊ฒฝ์ฐ NVidia ๋๋ผ์ด๋ฒ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ CPU ์ ์ฉ์ ๊ฒฝ์ฐ OpenCL์์ ์ป์ ์ ์๋ ๊ฒ์ด ์์ต๋๋ค.
์ ๋ ๋ช ์ฃผ ์ ์ ๋ ์ ComputeCpp SYCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ AMD "Bonaire"(Sea Islands ์ํคํ ์ฒ) GPU๋ฅผ ์ฌ์ฉํ์ฌ Arch Linux์์ ์ด ์์ ์ ์ํํ์ต๋๋ค. ํ ์คํธํด์ผ ํ๋ ์๋ก์ด ComputeCpp ๋ฆด๋ฆฌ์ค๊ฐ ์์ง๋ง ์๋ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ AMDGPU Pro ๋ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Ubuntu 16.04.3์์ ์คํ๋์ง ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. 16.04.2์์ ์ ๊ทธ๋ ์ด๋ํ๋ฉด ๋ ์๋ก์ด Linux ์ปค๋๊ณผ X Server๊ฐ ๋์ ๋์์ผ๋ฉฐ AMD๋ ์์ง ์๋ํ๋ ์ ํ์ ์ถ์ํ์ง ์์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Driver-Compatibility-Advisory-with-Ubuntu-16.04.2-and-16.04.3.aspx ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. Ubuntu์์ AMD OpenCL์ด ์๋ํ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ CUDA ์ฝ๋๋ฅผ OpenCL ์ฝ๋๋ก ๋ณํํ๋ ์คํ์ AMD ๋ฒ์ ์ TensorFlow๊ฐ ์์ง๋ง ์ ๋ ํ ์คํธํ์ง๋ ์์์ต๋๋ค. ์ง์๋๋ ๋๋ผ์ด๋ฒ๊ฐ ์์ผ๋ฉด ์ธ๋ชจ๊ฐ ์์ต๋๋ค.
https://github.com/ROCmSoftwarePlatform/hiptensorflow/tree/hip/rocm_docs ๋ AMD ํ๋์จ์ด์์ ํ ์ ํ๋ฆ์ ์คํํ๊ธฐ ์ํด ๊ณต์์ ์ผ๋ก ์ง์๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
@bensander ROCm ๋ฐํ์์ Ubuntu 16.04.3์์ ์๋ํฉ๋๊น? ๋๋ ๊ทธ๊ฒ์ ์๋์ํค์ง ๋ชปํ์ต๋๋ค.
์ถ์ : AMDGPU-Pro ์ค์ ์ด Ubuntu 16.04.3์์ ์๋ํ๋์ง ์ฌ๋ถ์ ๋ํ ํต์ฐฐ๋ ฅ์ด ์์ต๋๊น? ๋ค๋ฅธ ํ๋ก์ ํธ์ ํ์ํฉ๋๋ค.
ํ , ๋๋ Ubuntu๋ฅผ ์ด๋์์๋ ์ฆ๊ธฐ์ง ์์ง๋ง (๊ทธ๋ฆฌ๊ณ ํ์ง ์์ ๊ฒ์ ๋๋ค) CentOS 7 w/ repos์ GTX1080TI๊ฐ ์๊ณ ์ปค๋ 4.14.x์ ์ต์ Nvidia ๋ฒ ํ ๋๋ผ์ด๋ฒ๋ฅผ ์คํํ๋ฏ๋ก ํ ์คํธํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋์์ด ๋๋ค๋ฉด ์ค๋ ์ด๋ ์์ ์ ๊ฑฐ๊ธฐ์ ์์ต๋๊น?
--
์ ๋งฅ๊ทธ๋ก๋
2017๋ 12์ 7์ผ 07:28์ M. Edward (Ed) Borasky [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@bensander ROCm ๋ฐํ์์ Ubuntu 16.04.3์์ ์๋ํฉ๋๊น? ๋๋ ๊ทธ๊ฒ์ ์๋์ํค์ง ๋ชปํ์ต๋๋ค.
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
@sammcj ์๋ฒฝํ๊ฒ ์ข์ CUDA ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ฐ OpenCL๊ณผ ํจ๊ป NVidia GPU๋ฅผ ์คํํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋จ์ง ๋น์ ์ ์ํด ๊ทธ๊ฒ์ ํ ์คํธํ๋ ๋ฐ ๋์์ด!
์ ํ ์คํธ๊ฐ ํ์ํ์ง ์๋ค๋ฉด ๊ฑฑ์ ํ์ง ๋ง์ธ์. ์ ๊ฐ ์ ์ํ ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ๋๋ cuda TBH๋ก ๊ทธ ๋จธ์ ์ ์๋ํ์ง๋ ์์๊ณ , ํ์ฌ๋ก์๋ Docker๋ฅผ ํตํด OpenCL์ ์ฌ์ฉํ ์ ์๋ MacOS์์๋ง ์๋ํ์ต๋๋ค.
--
์ ๋งฅ๊ทธ๋ก๋
2017๋ 12์ 7์ผ 08:16 M. Edward (Ed) Borasky [email protected] ์ด ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@sammcj ์๋ฒฝํ๊ฒ ์ข์ CUDA ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ฐ OpenCL๊ณผ ํจ๊ป NVidia GPU๋ฅผ ์คํํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ธ์.
@znmeb ์ ๋ ComputeCpp SYCL์ ์๋ํ๋ ค๊ณ ํ์ง๋ง ์ฐ๋ถํฌ ์ค์น ํ๋ก๊ทธ๋จ๋ง ์ ๊ณตํ๊ณ (์ ๋ ์์น์ ์์ต๋๋ค) aur ์ค์น ์คํฌ๋ฆฝํธ๊ฐ ์์๋์์ต๋๋ค. ์๋ํ ์ ์๋ค๋ ์์์ ๋ฃ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ด๊ฐ ์ถฉ๋ถํ ์ ๋งํ๋ค๋ฉด ๋๋ ๊ทธ๊ฒ์ ์๋ ํ ์ ์์ต๋๋ค.
@bensander ์ ํํ ADM ์ง์์ ๋ฐ๋ ๋ฐ ํ์ํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ด ์ฝ๋๊ฐ TF๋ก ๋ฐฑํฌํ
๋์ง ์์๊ณ ์ฝ๋๊ฐ TF 1.4๋ฅผ ๋์์ผ๋ก ํ๋ค๋ ์ ์ ๊ฐ์ํ ๋ ํด๋น ์ฝ๋๊ฐ 2๊ฐ์ ์ ์ ๋ง์ง๋ง์ผ๋ก ์
๋ฐ์ดํธ๋์๋ค๋ ์ฌ์ค์ด ๊ฑฑ์ ๋ฉ๋๋ค. 0
ํ์ฌ๋ก์๋ tensorflow๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ Nvidia์ ์ฐ๊ฒฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ด๋ ์ฐ๋ฆฌ "ํ๋ฉธ์" ํ๋ก๊ทธ๋๋จธ์๊ฒ๋ ๊ทธ๋ ์ต๋๋ค. ๋ฌธ์ ๋ถ์กฑ/์
๋ฐ์ดํธ๋ ๋ก๋๋งต์ ๋์์ด ๋์ง ์์ต๋๋ค. ๋๋ ๋ด๊ฐ ํ ์ ์๋ ์ด๋ค ์์ผ๋ก๋ ๋์์ฃผ๋ ๊ฒ์ ๊บผ๋ฆฌ์ง ์์ ๊ฒ์ด์ง๋ง, ๋๋ ์ง๊ธ๊น์ง ์ผ์ ํ๋ ๋ฐ ๊ฑฐ์ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค.
@pfc Arch์์ ComputeCpp SYCL์ด ์๋ํ๋๋ก ํ์ต๋๋ค. ๋ด๊ฐ ํ ๋ ์น์ฌ์ดํธ์ ๋ฐ์ด๋๋ฆฌ tarball์ด ์์์ต๋๋ค.
SYCL 1.2.1 ๋ฆด๋ฆฌ์ค์ ๋ํ ์ด ๋ด์ค์์
https://www.roboticstomorrow.com/news/2017/12/06/the-khronos-group-releases-finalized-sycl-121-/11107/
๊ทธ๊ฒ์ ๋งํ๋ค :
_์๋ก์ด ์ฌ์์ 3๊ฐ์ ๊ฐ๋ณ ๊ตฌํ์์ ์ป์ ์ค์ํ ๊ฒฝํ๊ณผ TensorFlow์ ๊ฐ์ ๊ธฐ๊ณ ํ์ต ํ๋ ์์ํฌ ๊ฐ๋ฐ์์ ํผ๋๋ฐฑ์ ํตํฉํฉ๋๋ค. ์ด๋ ํ์ฌ ์๋ CUDA ๊ฐ์๊ธฐ ๋ฐฑ์๋์ ํจ๊ป SYCL์ ์ง์ํฉ๋๋ค._
์ด์ SYCL์ด ๊ตฌ์ถ๋ OpenCL 1.2๋ฅผ ์ง์ํ๋ AMD GPU์์ TensorFlow๋ฅผ "์ฝ๊ฒ" ์คํํ ์ ์๋ค๋ ์๋ฏธ์ ๋๊น?
AMD ํ๋์จ์ด์ฉ ์ผ๋ถ ์ ์์ค ์ํํธ์จ์ด/๋๋ผ์ด๋ฒ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋์จ์ด๋ TensorFlow ๋๋ OpenCL ํ์ค ๋๋ SYCL์ด ์๋ ๋๋ถ๋ถ์ ๊ณ ์ฅ๋ ๋ฌผ๊ฑด์ด ์๋ ๊ณณ์ด๋ผ๋ ์๋ฏธ์์ "์ฝ๊ฒ"์ ๋๋ค. ;-) ์๋ํ๋ AMD GPU ๋๋ผ์ด๋ฒ์ ์๋ํ๋ OpenCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค๋ฉด AMD GPU์ TensorFlow๊ฐ ์๋ ๊ฒ์ ๋๋ค.
AMD Bonaire(Sea Islands ์ํคํ ์ฒ)์ ๋ํ ๋์ ์์ ์ค์ :
amdgpu
์ปค๋ ๋ชจ๋์ด ๋ก๋๋๊ณ radeon
์ปค๋ ๋ชจ๋์ด ๋ธ๋๋ฆฌ์คํธ์ ์๋ Arch Linux
์์น ์ฌ์ฉ์ ์ ์ฅ์ ํจํค์ง opencl-amd
ComputeCpp ๋ผ์ด๋ธ๋ฌ๋ฆฌ
@lukeiwanski ์ ํฌํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ด ์ํฌ์คํ
์ด์
์ ์์ค์์ ๋น๋๋ TensorFlow:
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-334154564
"AMD GPU ๋๋ผ์ด๋ฒ๊ฐ ์๋ํ๊ณ OpenCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ํ๋ค๋ฉด AMD GPU์ TensorFlow๊ฐ ์๋ ๊ฒ"์ด๋ผ๊ณ ๋งํ ๊ฒ์ ์ฝ๊ฐ ๋๋์ต๋๋ค. TensorFlow "๊ณต์" ๋ฒ์ ์ด OpenCL์์ ์คํ๋์ง ์๋๋ค๋ ๊ฒ์ ์ดํดํ์ต๋๋ค(CUDA๋ง ํด๋น). ์ ๊ฐ ํท๊ฐ๋ ธ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ด๋ ์ผ๋ถ Keras ์ฝ๋๊ฐ AMD Redeon HD 6970์ด ์ค์น๋ iMac์์ ์คํ๋๋๋ก ํ์ฉํ๋ PlaidML ํ๋ก์ ํธ๋ฅผ ์ฐพ์์ ๋งค์ฐ ๊ธฐ๋ปค์ต๋๋ค. (https://groups.google.com/forum/#!topic/plaidml-dev/ksFMgxjgKrM ) AFAIK ๋น์ ์ ๋ํ ๊ทธ ํ๋ ์ ์ํฌ๋ฅผ ์๋ํ์ต๋๋ค.
Tensorflow๊ฐ ์ด๋ฏธ ์คํ ์ค์ด๋ฉด Ubuntu VirtualBox์์ TensorFlow๋ฅผ ์คํํ๊ฒ ์ต๋๋ค(CPU๋ง ํด๋น).
@PALYGAP VirtualBox๊ฐ Mac ํธ์คํธ์์ Linux ๊ฒ์คํธ๋ก OpenCL์ ๋ด๋ณด๋ด์ง ์๋๋ค๊ณ ์๊ฐํ๊ณ Ubuntu 16.04.3์ด ํ์ฌ ์๋ํ์ง ์์ต๋๋ค. ์ ๋ Mac์ด ์์ผ๋ฏ๋ก ํ ์คํธํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
OpenCL์ ํตํด AMD์์ TensorFlow ์์ ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๊ณ ์ฑ๊ณตํ ์ฌ๋์ด ์์ต๋๊น?.
@mohnkhan @lukeiwanski ํฌํฌ๊ฐ ์๋ํ๊ณ ์์ต๋๋ค(Arch Linux) - https://github.com/tensorflow/tensorflow/issues/22#issuecomment-349877056 ์ฐธ์กฐ . ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๊ฒ์ํ๊ธฐ ์ ์ ๋ ๋ง์ AMDGPU-Pro ์์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. https://github.com/corngood/archlinux-amdgpu/pull/54 ์ฐธ์กฐ .
@znmeb ์ ๋ ฅ ๊ฐ์ฌํฉ๋๋ค
@mohnkhan BTW, AMD๋ ์ปดํ์ผ๋ฌ ๋๊ตฌ ์ฒด์ธ์ ์ฌ์ฉํ์ฌ CUDA ์ฝ๋๋ฅผ OpenCL ์ฝ๋๋ก ๋ณํํ๋ ์์ ํ ์คํ ์์ค์ธ ๋์ฒด ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ์ ์ ๊ฐ์ ์ค๋๋ ์นด๋์ ์ํ๊ฐ ์ด๋ค์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ธฐ์ฌ๋ฅผ ์ฐ์ค ์์ ์ด๋ผ๋ฉด ์ค๋ช ๋ ํด์ฃผ์๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ ๊ฐ์์(์ ์ฒด ๊ทธ๋ฆผ์ ๋ณด๋ ๋ฐ 3์๊ฐ ์์).
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๊ฒฐ๊ตญ ๋น์ ์ ์ด๋งํ๋ OpenCL 1.2(w/ cl_khr_spir ext)๋ก ๋ฐ๋ก ์ธ๋ํ๋ ๊ฒ์ ๋๋ค.
๋์ HIP๋ SYCL๊ณผ ๋ฐ๋ ๋๋ ๋ ๋ค๋ฅธ ๋ฐฑ์๋์ด๋ฉฐ ROCm๋ง์ ๋์์ผ๋ก ํฉ๋๋ค(๋๋ nvidia gpu๊ฐ ์๋ ๊ฒฝ์ฐ cuda๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ ๋๋ค).
AMD๋ ์ปดํ์ผ๋ฌ ํด์ฒด์ธ์ ์ฌ์ฉํ์ฌ CUDA ์ฝ๋๋ฅผ OpenCL ์ฝ๋๋ก ๋ณํํ๋ ์์ ํ ์คํ ์์ค์ธ ๋์ฒด ๊ฒฝ๋ก๋ฅผ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค.
์๋์. ๋น์ ์ HIP์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ .. ์ค์ ๋ก ๊ทธ๊ฒ ์ ๋ถ์
๋๋ค. ๊ฒฐ๊ตญ ์ฝ๋ ๋ฅผ โโ. OpenCL์ด ์๋๋๋ค .
๊ทธ๋ฐ ๋ค์ HIP๋ ๋ด๊ฐ ๋งํ๋ฏ์ด ROCm์์ ์คํ๋ฉ๋๋ค.
ROCm์ OpenCL์ ์คํํ๋ ๊ธฐ๋ฅ ์ด๊ธฐ๋ ํ์ง๋ง (์ง์๋๋ ์นด๋ ์์) ๊ด๊ณ๊ฐ "ํ์ ๊ณ์ธต ๋ด"๊ฐ ์๋ ROCm์์๋ง ์ด๋ป๊ฒ ์ ๋ฌ๋๋์ง ๋ชจ๋ ์ฌ๋์๊ฒ ๊ฐ์กฐํฉ๋๋ค.
๋น์ ์ด ์๊ฐํ๊ณ ์๋ ๊ฒ์ ๊ณ ์ ์ผ ์ ์์ต๋๋ค.
์ ์ ๊ฐ์ ์ค๋๋ ์นด๋์ ์ํ๊ฐ ์ด๋ค์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ ์ ์์ฝํ์๋ฉด: ์์ ํ ๊ธฐ๋ฅ์ ๊ฐ์ถ AMDGPU-PRO, amdgpu-pro-opencl-only ๋๋ผ์ด๋ฒ ์ง๊ธ ํ๊ณ ์๋ ๊ฒ์ฒ๋ผ ... ๋๋ ๋๊ตฐ๊ฐ๊ฐ ๋ง์นจ๋ด ํด๋ก๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค ๋๊น์ง 10๋ ์ด ๋๋ ๋๊น์ง ๊ณ์ ๊ธฐ๋ค๋ฆฌ์ญ์์ค.
๋ํ, fglrx... ํ์ง๋ง pre-gcn ์นด๋์ ๊ถ์ฅํ๊ธฐ ์ด๋ ต๋ค๋ฉด ๋ฒ ์ผ์ ๋ฎ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค.
@mirh
๊ทธ๋์ SYCL์ ๋ ๋๊ฑฐ๋ ... ๋๋ ๋ค๋ฅธ ๋ ์์ ๋ค๊ณ TensorFlow, Theano(์ ์ง๋๊ณ ์์), CNTK ๋๋ PlaidML ๋ฐฑ์๋๊ฐ ์๋ Keras๋ก ๋ชจ๋ ์์ ์ ์ํํฉ๋๋ค. ์์ ํ ์์ง๋์ด๋ง ๊ฒฝ์ ํ์ ๊ด์ ์์ ๋ณผ ๋ Keras / PlaidML์ TensorBoard๋ฅผ ์ด๋ป๊ฒ๋ ์ป์ ์ ์๋ค๋ฉด ํฐ ์น์์ ๋๋ค.
@mirh ๋ชจ๋ ๋งํฌ๊ฐ ํฌํจ๋ ์ข์ ์์ฝ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. 3์๊ฐ์ ๋ญ๋นํ์ง ์์ผ์ ๊ฒ ๊ฐ์์... :-)
ROCm์ด ๋ด ์ํฌ์คํ ์ด์ ์์ ์คํ๋๋์ง ์ฌ๋ถ๋ ์ ์ ์์ต๋๋ค. ์ ๋๋ ์๋์ค๋ก ๋ตํ ์ ์๋ ์คํ ์์ค ํ๋์จ์ด ํ ์คํฐ๊ฐ ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ํ ๋ฌธ์ ๋ฅผ ์ด์๊ณ ์๋ต์๋ฐ์ง ๋ชปํ์ต๋๋ค.
๋ด๊ฐ ๋น์ ์๊ฒ ๊ฝค ์ฌ๋ฌ ๋ฒ ๋งํ๋ฏ์ด, ๊ทธ๊ฒ์ ์๋ํ์ง ์์ ๊ฒ์
๋๋ค.
Pre GCN 3์ธ๋ GPU์๋ ROCm์ด ์ ํ ์๋ํ๊ฑฐ๋ ์ํํ ์ ์๋ ํ๋์จ์ด๊ฐ ๋ถ์กฑํฉ๋๋ค.
SPIR(-V).. ๋ฌด์จ ๋ง์์ ํ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๊ฑธ ์ ๊ฒฝ์ฐ๋๊ฑด ๋น์ ์ ์ผ์ด ์๋๋๋ค. Computecpp๋ SYCL "๋ช ๋ น"์์ ์ด๋ฅผ ๋ง๋ค๊ณ ๋ชจ๋ (opencl) ๋๋ผ์ด๋ฒ ๋น์ฆ๋์ค์ ๋๋ค.
๋น์ ์ ๋ด๊ฐ ์ ์ ์ ์ผ๋ก amdgpu-pro-opencl-only๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ทธ๋ ๋ฌด์์ด โโ๋ฌธ์ ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ํธ์ง: Luke์ ์ฝ๋๊ฐ ์ฐฉ๋ฅํ๊ธฐ ์ํด ์ผ์ข
์ ETA๋ฅผ ๊ฐ๋ ๊ฒ๋ ๋ฉ์ง ๊ฒ์
๋๋ค.
@znmeb ์ ์ฌ๋ฌ๋ถ
(L) ์ฐ๋ถํฌ 17.10์ด ์์ต๋๋ค. ์ปค๋ 4.14.x ๋ฐ AMDGPU Pro 17.40 ๋๋ผ์ด๋ฒ์ OpenCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ถ์ด ์คํ๋๊ณ ๋ด AMD A12-9800E APU์์ ๋ฌธ์ ์์ด clinfo ๋๋ Boinc(์: Engima @Home , Milkyway@Home)์ ๊ฐ์ OpenCL ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์์ต๋๋ค.
๋ํ tensorflow(ํ์ฌ ๋ฒ์ 1.4.1) CPU ๋ฒ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ tensorflow์ OpenCL ๋ฒ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผํ์ง ๋ชปํ์ต๋๋ค. ์ ๋ ๋ฐ๋๋ผ ํ ์ํ๋ก์ฐ 1.4.1 ๋ฐ @lukeiwanski ํฌํฌ์ "dev/ amd_gpu " ๋ถ๊ธฐ์ ํจ๊ป computecpp 0.5(๋ฑ๋กํ ํ์ ์์ด ๋ค์ด๋ก๋ํ ์ ์๋ ํ์ฌ ๋ฒ์ )๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ tensorflow์ OpenCL ๋ฒ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผํ ์ฌ๋์ด ์ด๋ค ๋ฒ์ ์ computecpp ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋ค tensorflow git์ ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
๊ฐ์ฌํฉ๋๋ค
@AlphasCodes Ubuntu์์ ์คํ ์ค์ธ ๊ฒ์ด ์์ต๋๋ค. ๋ชจ๋ ์์ ์ Arch์ ์์ต๋๋ค. ์์คํ ์ด Ubuntu 16.04.3์ผ๋ก ์ด์ค ๋ถํ ๋์์ง๋ง AMD ๋ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ง ์๋ํ์ง ์์ต๋๋ค. ๋ด๊ฐ ์๋ ํ 17.10์์๋ ์ง์๋์ง ์์ง๋ง 17.10์์ ์๋ํ๋ OpenCL ์กฐ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ธ ๋ฒ์งธ ๋ถํ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋์คํฌ ๊ณต๊ฐ์ด ์ถฉ๋ถํฉ๋๋ค. ;-)
์ด๋ค ์ข ๋ฅ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๊น? ๋น๋ ์ค๋ฅ์ธ ๊ฒฝ์ฐ Bazel ๋นํธํ์ฑ์ด ์์ ์ ์์ต๋๋ค. Bazel์ TensorFlow์ฒ๋ผ ๋์์์ด ์์ผ๋ก ๋์๊ฐ๊ณ ์์ผ๋ฉฐ ๋๋ก๋ ํ๋๊ฐ ๋ค๋ฅธ ํ๋๋ณด๋ค ์์๊ฒ ๋ ๊ฒ์ ๋๋ค.
"์ง์๋์ง ์์"์ ๋ฌด์์ ์๋ฏธํฉ๋๊น?
์ด .
์ฐ๋ถํฌ์ ๊ฒฝ์ฐ 16.04.3๋ง ์ง์๋๋ค๊ณ ํฉ๋๋ค.
ํธ์ง: '์์ ํ' AMDGPU-PRO ๋๋ผ์ด๋ฒ์๋ ์ปค๋ 4.9๊ฐ ํ์ํฉ๋๋ค. ๋ฌธ์ ์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๊ด์ฌ์ด ์๋ ์ฌ๋์ด ์๋ค๋ฉด AMDGPU-Pro Driver 17.40์ Arch๋ก ์ด์ํ๋ ์์ ์ด ์งํ ์ค์ด๋ฉฐ GitHub( https://github.com/corngood/archlinux-amdgpu/pull/54 )์์ ๋งค์ฐ ํ์ฑํ๋์ด ์์ต๋๋ค.
@mirh ๊ฐ ์ง์ ํ๋ฏ์ด TensorFlow๋ OpenCL์ด ์๋ SYCL์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์์ผ ํฉ๋๋ค. "AMD ์นด๋์ TensorFlow"๋ผ๋ ๋ค๋ฅธ ์นด๋๋ฅผ ์ด์ด์ผ ํ ๊น์?
์๋์, ์์ ํ ํฉ๋ฒ์
๋๋ค.
tensorflow๊ฐ ๊ฒฐ๊ตญ opencl ์ฅ์น์์ ์คํ๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋ชฉํ์
๋๋ค. ํฉ๋ฒ์ ์ด๊ณ ๋์
๋๋ค.
์ค์ ๋ก SYCL์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋งํ๋ ๊ฒ์ ๋ด๊ฐ ๋ง๋ ๊ธฐ์ ์ ์ธ ์ํฐ๋ฆฌ์ผ ๋ฟ์ด์์ต๋๋ค. ๋ง์ ์ฒ๋ผ ๋ฌด์์์ ์ธ ๊ธฐ์ ์ ์ด๋ฌํ ๋ชจ๋ ์ฝ์ด๊ฐ ์ ๋ฅผ ๋ฏธ์น๊ฒ ๋ง๋ค์๊ธฐ ๋๋ฌธ์
๋๋ค.
ํธ์ง: ๋๋ ๋ํ ๊ทธ๋ค์ ์์ฒญ๋ ์์
์ ๋ํด ๋ชจ๋ codeplay ์ฌ๋๋ค์๊ฒ ๊ฐ์ฌํ๊ณ ์ถ์ต๋๋ค.
amd๋ฅผ ์ํด ํน๋ณํ ์ ์๋ ๊ฒ์ ์ํ๋ค๋ฉด hiptensorflow ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ง๋ง ROCm ์ ์ฉ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ฐ, ์ด ์ฃผ์ฅ์ ๋ค๋ก ํ๊ณ ๊ฐ์.
์ข์์. ๋น๋๋ฅผ ๋ค์ ์ํํ๊ณ ์ฃผ๋ง๊น์ง ์ปดํ์ผ ์ค๋ฅ๋ฅผ ์ ๊ณตํ ์ถฉ๋ถํ ์๊ฐ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ์ง๋ง ๊ธฐ์กด ๋ฌธ์๋ฅผ ์ github ์ ์ฅ์์ ์ถ๊ฐํ์ต๋๋ค.
์์ธํ ๋ด์ฉ์ https://github.com/AlphasCodes/DeepLearning ์ ์ฐธ์กฐํ์ญ์์ค(๋ด ํ๋์จ์ด/์ํํธ์จ์ด ์ค์ + AMD OpenCL ์ค์ + Tensorflow ์ค์ ).
@mirh ๋ "[...] [๋น์ ์] ํ๋๊ฒ ๋ง๋๋ ๋ง๋ฒ์ฒ๋ผ ๋ฌด์์์ ์ธ ๊ธฐ์ [...]์ ์ฝ์ด"๋ฅผ ๋ช ํํ ํ๊ธฐ ์ํด:
Khronos Group ์์ญ์์ OpenCL์ ํ์ ์์ค์ ๋น๋จ์ผ ์์ค API์ด๊ณ SYCL์ ์์ ์์ค์ ๋จ์ผ ์์ค C++ DSeL(๋๋ฉ์ธ๋ณ ์๋ฒ ๋๋ ์ธ์ด)์ ๋๋ค. SYCL์ OpenCL ์์ ๊ตฌ์ถ๋ ๊ฒ์ผ๋ก ์์๋๋ฏ๋ก SYCL์ ์ฌ์ฉํ ๋ ์ ์ด์ฑ์ผ๋ก ์ธํด OpenCL์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
TensorFlow๋ ๋จ์ผ ์์ค CUDA์ ํจ๊ป ๋จ์ผ ์์ค C++ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ Eigen์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋์ค์ OpenCL๋ก ์ด์๋์์ ๋ ๋จ์ผ ์์ค C++๋ฅผ ๊ฐ๋ Khronos Group์ ํ์ค ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ SYCL์ด ์ ํ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ CUDA์ ๋ํด ์๊ฐํด๋ณด๋ฉด ํจ์ฌ ๋ ๋ฏธ๋ฌํฉ๋๋ค.
๊ฑฐ์ ๋ชจ๋ ์ฌ๋์ด ์ค์ ๋ก "CUDA Runtime API"๋ผ๋ CUDA์ ๊ณ ๊ธ ๋จ์ผ ์์ค ๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ์ด๋ป๊ฒ ๋ SYCL๊ณผ ์ ์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ค์ ๋ก OpenCL๊ณผ ์ ์ฌํ๊ณ "CUDA ๋ฐํ์ API" ๊ตฌํ ์์ฒด์์ ์ฌ์ฉ๋๋ "CUDA ๋๋ผ์ด๋ฒ API"๋ผ๊ณ ํ๋ CUDA์ ๋ ์๋ ค์ง ์ ์์ค ๋น ๋จ์ผ ์์ค ๋ฒ์ ์ด ์์ต๋๋ค.
์ผ์ข ์ FAQ์ด๊ธฐ ๋๋ฌธ์ https://en.wikipedia.org/wiki/SYCL ๋ฐ https://en.wikipedia.org/wiki/CUDA ๋ฅผ ์กฐ๊ธ ๋ช ํํ ํ์ต๋๋ค.
TensorFlow์ ํจ๊ป ์ฌ์ฉํ๋ SYCL ๊ตฌํ์ธ ComputeCpp๋ ์์ง Ubuntu 17.10์ ์ง์ํ์ง ์์ต๋๋ค. ํ์ฌ LTS์ธ Ubuntu 16.04๋ฅผ ๊ณ ์ํด์ผ ํฉ๋๋ค. ์ง์นจ ๋ฐ ์ ์ ์กฐ๊ฑด์ https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow ์ ์์ต๋๋ค.
์ ์ณ๋๊ณ , TensorFlow์ ๋ํ OpenCL ์ง์์ ๋จ์ง AMD ์ฅ์น ์ง์์ ์๋ฏธํ์ง ์์ต๋๋ค. SYCL ํตํฉ์ ๋ค๋ฅธ OpenCL ์ฅ์น๋ ํ์ฑํํฉ๋๋ค. TensorFlow๋ก ์ํ ์ค์ธ ์์ ์ ์ผ๋ถ๋ก ARM ๋ฐ Intel GPU์ ๋ํ ์ง์์ ์ด๋ค ํ์ฌ์ ์ต์ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด ์ ๊ณต๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ R-Car ํ๋ซํผ์ ๋ํด์๋ Renesas ๊ฐ์๊ธฐ ํ๋ก์ธ์์ ๋ํ ์ง์์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
@rodburns ๊ฐ์ฌํฉ๋๋ค! ๋๋ ์ด๊ฒ์ด Arch User Repository์ opencl-amd ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Arch Linux(4.14.4 ์ปค๋)์์ ์๋ํ๊ณ ์์ต๋๋ค. ์นด๋๋ Bonaire(GCN 2.0)์ ๋๋ค. ํด๋น ํ์ด์ง์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
GCN 2์ธ๋(์ผ๋ช
1.1)๊ฐ ์๋ ๊ฒฝ์ฐ 2.0์ ์กด์ฌํ์ง ์์ต๋๋ค.
(๋๋ฌด ํํ์ ์ด๋ผ๊ณ ๊ตฌ๋ถ๋ ค์ผ ํจ)
์ฑ๊ณต!
@lukeiwanski ํฌํฌ์ ์ต์ "dev/amd_gpu" ๋ถ๊ธฐ ์ปค๋ฐ์ด ๋ด Tensorflow OpenCL ์ปดํ์ผ ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค. SysCL 1.2.1 ๊ด๋ จ ์ปค๋ฐ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
Tensorflow OpenCL ๋ฒ์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ปดํ์ผํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ด Tensorflow ์ค์ ๋ฌธ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ํ ํฅํ ๋ค์ํ Tensorflow ์ค์ (๋น CPU ์ต์ ํ, CPU ์ต์ ํ, OpenCL)์์ ์ค์ ์ ์ผ๋ถ ๋ฒค์น๋งํฌ๋ฅผ ์ฐพ์ ์ ์๋ ๋ฒค์น๋งํฌ ํ์ด์ง๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
AMDGPU Pro ๋๋ผ์ด๋ฒ ๋ฒ์ 17.50๋ ์๋ํฉ๋๋ค. ๊ด๋ จ AMD OpenCL ์ค์ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค.
๋ชจ๋ ๊ธฐ์ฌ์์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋ช ๊ฐ์ง ๋ฒค์น๋งํฌ๋ฅผ ์ํํ๋๋ฐ iGPU๊ฐ matmul_bench.py โโ๋ฒค์น๋งํฌ๋ฅผ ์ ์ธํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ 4๊ฐ์ CPU ์ค๋ ๋๋ณด๋ค ๋๋ฆฐ ๊ฒ ๊ฐ์ต๋๋ค.
OpenCL Tensorflow ์คํ์ ์ด๊ธฐํ๋ CPU ์ ์ฉ OpenCL Tensorflow ์คํ๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค. CPU์ ๊ฒฝ์ฐ 5์ด, OpenCL์ ๊ฒฝ์ฐ 1-2๋ถ ์ ๋์ ๋๋ค.
์๋ฌด๋ ๊ทธ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๊น?
์๊ฒ ์ต๋๋ค. ๋ฌธ์ ํด๊ฒฐ์ ๋ ํ์ต๋๋ค.
์ ๋ ์ฌ์ ํ Arch์์ ์ปดํ์ผํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
์ด์ ์ฌ์ฉํ ๊ฒ .
14์๊ฐ ํ(์, ์ ๊ฐ์๋ ๋งค์ฐ ๋๋ฆฝ๋๋ค) ์๋ํ๊ณ ์ถ๋ค๋ฉด ์ด ๋ฐ์ด๋๋ฆฌ ๋ฅผ ์ป์์ต๋๋ค.
๋๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์์ ๋ด๋ ค๊ณ ๋ ธ๋ ฅํ์ง๋ง ๋ถํํ๋ ๋๋ ํ ์ ์์์ต๋๋ค. ๋ค์์ ๋ํด ์๋ ์ฌ๋์ด ์๋๋ฅผ ๋์ด๋ ๋ฐ ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
์์ ๋ ผ์ ๋๋ถ๋ถ์ AMD ์นฉ์์ OpenCL ๊ฐ์์ผ๋ก Tensorflow๋ฅผ ์คํํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋์์ต๋๋ค. ๋ด๊ฐ ์ด ๋ง์ ํ๋ ๊ฒ์ด ๋ง์ต๋๊น? Opencl์ ์ง์ํ๋ ํตํฉ ๊ทธ๋ํฝ ์นด๋(์ธํ HD 5000)๋ฅผ ์ฌ์ฉํ์ฌ GPU ๊ฐ์ ํ ์ํ๋ก๋ฅผ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
@znmeb ์๋ ํ์ธ์ Ed, ๋ต๋ณํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ด ์์คํ ์์ OpenCL์ ๋ค์ด๋ก๋ํ์ฌ ์คํ ์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ด ์ง๋ฌธ์ - ์ค์ ๋ก OpenCL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด tensorflow๋ฅผ ์ปดํ์ผํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
https://developer.codeplay.com/computecppce/latest/getting-started-with-tensflow
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ธํ
https://github.com/codeplaysoftware/computecpp-sdk/issues/78#issuecomment -352411192์
๋๋ค.
@AlphaCode ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ธฐํ ์๊ฐ๊ณผ ๊ด๋ จํ์ฌ OpenCL์ด ์๋ํ๋ ๋ฐฉ์์ ์คํ ์ ์ ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ๊ฒ์ด๋ฏ๋ก ์์ ์๊ฐ์ ์ปดํ์ผ ํ๋ก์ธ์ค์ ๋๋ค.
@brainwave Intel ์ฅ์น์ ๊ฒฝ์ฐ ์คํ ์ค์ธ ์ฅ์น์ ๋ํ ์ ํ์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ @mirh ๊ฐ ์๋ ์ค๋ ๋๊ฐ ์์ต๋๋ค . ์ด๋ฌํ ์ฅ์น ์ ํ์ด ์ ํ๋ ์ด์ ๋ Intel ๋๋ผ์ด๋ฒ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ง๋ง ์ง์์ ๊ฐ์ ํ๋ Intel ์ฅ์น์ ๋ํด ์ ๋ฐ์ดํธ๋ ๋๋ผ์ด๋ฒ๋ฅผ ๊ณง ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ทธ๋์ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก TensorFlow๋ฅผ ๋ค์ ์ปดํ์ผํ์ฌ ์์ฒด Intel ํ๋์จ์ด๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฝ๋๋ฒ ์ด์ค์์ ์ฅ์น ์ ํ์ ์ ๊ฑฐํ๋ ค๊ณ ํฉ๋๋ค.
@AlphasCodes ์ฌ๋ฌ๋ถ, ์์งํ ์ง๋ฌธ์ ๋ํด ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ํ์ง๋ง ์ด ๋น๋๊ฐ AMD GPU ์ ์ฉ์ธ ์ด์ ๋ ๋ฌด์์ ๋๊น? OpenCL์ด ํ์ค์ด ๋์ด์ผ ํ์ง ์์ต๋๊น? OpenCL 2.0 ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๋ Intel Carbon X1์์ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๊ณ ์์ต๋๊น?
๋ ๋ฒ ๋งํฌ๋ ๋ฌธ์ ๋ฅผ ์ฝ์ผ๋ฉด amd gpu์ ๋ํ ๋ด์ฉ์ด ์์์ ์ ์ ์์ต๋๋ค.
์ธํ
์ ํ์ฌ ์ ์ธ๋์ง๋ง ์ฌ์ฉ์๋ฅผ ๊ฐ์ ํ๋ ค๋ ๊ฒ๊ณผ๋ ๊ด๋ จ์ด ์์ผ๋ฉฐ ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ค์ ๋ก ์๋ ๊ฒฝ์ฐ ๋
ผ์ํ์ญ์์ค.
jupyter ๋ ธํธ๋ถ๊ณผ ํจ๊ป amd_gpu ๋ถ๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ ์ค๋ ๋๊ฐ ๋จ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ด์ฌ์ ๊ณ์ฐ์ด ์๋ฃ๋ ํ์๋ ์ฌ์ ํ ํ๋์ CPU๋ฅผ 100% ์ฌ์ฉํฉ๋๋ค. ์ปค๋์ ๋ค์ ์์ํ๋ฉด ์๋ชป๋ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์ด๊ฒ์ ๊ฒฝํํฉ๋๊น?
@brainwave @unoexperto
AMD OpenCL ํ๋์จ์ด๋ง ์๊ธฐ ๋๋ฌธ์ Intel OpenCL์ ๋ํด ๋์์ ๋๋ฆด ์ ์์ต๋๋ค.
@desperadoduck
์ ๋ ์์ง jupyter๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ ๋ ์ผ๋ฐ bash ์
ธ๊ณผ ๊ฐ์ Python 3 ํ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค( ๋ด Python 3 + Tensorflow ์ค์ ์ฐธ์กฐ). ํ์ง๋ง ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ต๋๋ค. ๊ณ์ฐ์ด ์๋ฃ๋ ํ์๋ ํ์ด์ฌ ํ๋ก์ธ์ค์์ CPU ์ฌ์ฉ๋์ด ์์ต๋๋ค.
@rodburns
์ ๋ณด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ธฐ ์ปดํ์ผ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๊น? ์๋ฅผ ๋ค์ด 50%๋ง ์ฌ์ฉํ๋ ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ CPU ์ค๋ ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@brainwave @rodburns
Linux์์ Intel GPU(Gen9)์ ๊ฒฝ์ฐ PlaidML์์ ์ผ๋ฐ ๋น์ ๋คํธ๋ก ๋ฒค์น๋งํนํ ๋ Intel์ ์คํ ์์ค Beignet ๊ตฌํ๊ณผ ํ์ ์์ค ๊ตฌํ์ผ๋ก ํจ์ฌ ๋ ๋์ DNN ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค. Beignet์ ๋ํ ์ค์นํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
ubuntu17.10์์ ์ธํ ๊ทธ๋ํฝ hd615(7์ธ๋ CPU)๋ฅผ ์ง์ํฉ๋๊น?
linux64์ฉ opencl dirver SRB5.0์ ubuntu17.10์์ ์ ์คํ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ซ๋์ ์
๋ฐ์ดํธ๋์ง ์์์ต๋๋ค.
https://bitbucket.org/mehdi_goli/opencl/branch/IntelGPU
์ ์ ์ฌ๋์ ์ํด ์์ 2๊ฐ(๋๊ฐ!)๊ฐ์ ๊ฒ์๋ฌผ๋ง ์ฝ์ ์ ์์ต๋๊น?
https://github.com/codeplaysoftware/computecpp-sdk/issues/78 ์์ ์ธํ
GPU(๋๋ amd cpu) ์ง์ ๋ถ์กฑ์ ๋ํด ๋
ผ์ํ์ญ์์ค.
@znmeb ๋ค์ํ ์ปดํจํ
๋ฆฌ์์ค(์: cpu, gpu, DSP, ๊ธฐํ ๋ณด์กฐ ํ๋ก์ธ์)๋ฅผ ์ต๋ํ ํ์ฉํ๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค.
์ฌ์ค, ํ๋์จ์ด ๊ณต๊ธ์
์ฒด์ ์ง์์ ๋ฐ๋ผ ๋ค๋ฆ
๋๋ค: dirver ๋ฐ OS.
๋ด๊ฐ ์๋ ํ, vedio ๋๋ผ์ด๋ฒ์ ์ ํ์ผ๋ก ์ธํด Intel GPU์ nvida GPU๋ฅผ ๋์์ ๋น๋์ค์ฉ์ผ๋ก ํ์ฑํํ ์ ์์ต๋๋ค. (๋น์ ์ ๊ทธ๋ค ์ฌ์ด๋ฅผ ์ ํํ ์ ์์ต๋๋ค).
๊ทธ๋ฌ๋ opencl์ ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ๋ค "์ฅ์น"์
๋๋ค.
@choongng ํฅ๋ฏธ๋กญ๊ฒ๋ ์ฐ๋ฆฌ๋ Beignet์ ํ์ฑํํ๋ ๋ฐ ๋์์ ์ฃผ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์์ ์ ์ํํ์ง๋ง ์ด ํ๋ก์ ํธ์ ํ๋์ ๋ค์ ์กฐ์ฉํด์ง ๊ฒ ๊ฐ์ต๋๋ค.
@znmeb ์, ์ด๋ค GPU๋ผ๋ ์์ ๋ฌธ์ ์์ ํจ์ฌ ๋ ๋์ ์ฑ๋ฅ์ ๋ฐํํ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ๊ทธ๋๋ ์ฝ๊ฐ์ ์ง์ ์ด ์์ด ๋คํ์ ๋๋ค!
@unoexperto ComputeCpp with TensorFlow๋ Intel GPU๋ฅผ ํฌํจํ๋ SPIR OpenCL ์ค๊ฐ ๋ช ๋ น์ด๋ฅผ ์ง์ํ๋ ๋ชจ๋ ํ๋์จ์ด์์ ์ฌ์ฉํ ์ ์์ง๋ง ์ฌ๊ธฐ ์ค๋ ๋์์์ ๊ฐ์ด ํ์ฌ ๋๋ผ์ด๋ฒ๊ฐ ํ์ฌ ์๋ํ๊ณ ์๋ค๊ณ ์๊ฐํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ์คํ์ ๋ฐฉ์งํ์ต๋๋ค. . ์ผ๋ถ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ Intel ๋๋ผ์ด๋ฒ์ ํจ๊ป ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋ฏ๋ก ํด๋น ์ ํ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ๋ํ OpenCL ๋๋ผ์ด๋ฒ๊ฐ ์๋ ARM ๋ฐ Renesas ํ๋ก์ธ์์ ๋ํด ์ด ๊ธฐ๋ฅ์ ํ์ฑํํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
@sxpc722 ๊ทธ๋ฌ๋ฉด ์๋ํด์ผ ํฉ๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์ ์์คํ ์ Windows 10์ด๊ณ ์ ๋์ ์ผ๋ก ํด์ผ ํ ๋๊น์ง Linux๋ก ์ด์ค ๋ถํ ํ ๊ณํ์ด ์์ต๋๋ค! ๊ณต๊ธ์ ์ฒด์ ๋๋ผ์ด๋ฒ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ๊ทธ๋ฅผ ์ถ์ ํ๋ ๊ฒ์ด ์ง๊ฒน์ต๋๋ค(AMD๋ฅผ ๋ณด๊ณ ์์ต๋๋ค). ์ฌ์ค, ๋์ผํ AMD ์ด์ ๋ก ๋ด ์ํฌ์คํ ์ด์ ์ Windows ํํฐ์ ์ ๋ ์ ์์ต๋๋ค. ;-)
14์ผ ๋์ ํ๋์ด ์์์ผ๋ฉฐ ์ด ๋ฌธ์ ์๋ ๋ด๋น์๊ฐ ์์ต๋๋ค. ๊ทธ์ ๋ฐ๋ผ ๋ ์ด๋ธ ๋ฐ/๋๋ ์ํ๋ฅผ ์ ๋ฐ์ดํธํ์ญ์์ค.
๋ด ํ ์คํธ์ ๋ฐ๋ฅด๋ฉด Tensorflow AMD OpenCL ์ฑ๋ฅ์ ๋งค์ฐ ๋๋ฆฝ๋๋ค. ๊ทธ๋์ ๋ค๋ฅธ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ก ๋ช ๊ฐ์ง ๊ธฐ๋ณธ ํ ์คํธ๋ฅผ ํ์ต๋๋ค. ์ฌ๊ธฐ ๋ด GitHub ํ์ด์ง์์ ์ค์ ๋ฐ ๋ฒค์น๋งํฌ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๊ธด ์ด์ผ๊ธฐ๋ฅผ ์งง๊ฒ. ๋ค๋ฅธ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ๋ ํ์ฌ Tensorflow AMD OpenCL๋ณด๋ค ์ฝ 10๋ฐฐ ๋น ๋ฆ ๋๋ค.
@AlphasCodes @znmeb TF ํ์ด ์ค๋ ๋๋ฅผ TF ์ ์ฉ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ์ ํธํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. PlaidML ํ๋ก์ ํธ์์ PlaidML ๊ด๋ จ ๋ํ๋ฅผ ํธ์คํธํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฆ, TensorFlow ์์ฒด์ ๋น OpenCL ํ๋ซํผ(์: ํ์ฌ ํ๋กํ ํ์ ํํ๋ก ์กด์ฌํ๋ iOS์ฉ Apple Metal)์ ๊ถ๊ทน์ ์ผ๋ก ์ง์ํ๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค.
@choongng ๊ทธ์ ๋ฐ๋ผ ๋ด ๋ฉ์์ง๋ฅผ ํธ์งํ ์ ๋ณด์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@znmeb AMD A12-9800E iGPU๋ GCN v3์ด์ด์ผ ํฉ๋๋ค.
๋ด๊ฐ ๋ฒค์น๋งํฌ/ํ ์คํธ๋ฅผ ํ๋ ์ฃผ๋ ์ด์ ๋ "AMD๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ฅ ๋ฌ๋ ๋ชจํ์ ์ํด Nvidia๋ก ์ ํํ์ญ์์ค"๋ผ๋ ์ง๋ฌธ์ ๋ํ ๋ต์ ์ฐพ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ต์ ์ ๋๋ค. ๋๋ AMD์ ์คํ ์์ค ์ ๊ทผ ๋ฐฉ์์ ์ ๋ง ์ข์ํ์ง๋ง ๋ ๊ฐ์ง ์์ธ์ผ๋ก ์ธํด Nvidia๋ก ์ ํํ ๊ฒ์ ๋๋ค. ๋จผ์ ๋ฅ ๋ฌ๋ ์ํํธ์จ์ด ์คํ(์: Tensorflow)์ Nvidia์์ ํจ์ฌ ๋ ์ฑ์ํ์ต๋๋ค. ๋ ๋ฒ์งธ๋ก ๋ด ํน์ ์๊ตฌ ์ฌํญ์ ๋ํด ์ ๊ณตํ๋ ๊ทธ๋ํฝ ์นด๋(Dan A4 SFX ์ผ์ด์ค์ ๋ง์์ผ ํ๊ณ ๋ช ์๊ฐ ๋์ ์ต๋ ๋ถํ์์ ๋งค์ฐ ์กฐ์ฉํ๊ฑฐ๋ ๊ฑฐ์ ์์์ด ์์ด์ผ ํจ)๋ AMD ์ธก์ ๋งค์ฐ ์ ํ์ ์ด๊ฑฐ๋ ์์ ์กด์ฌํ์ง ์์ต๋๋ค.
์ธํ GPU๊ฐ ์ง์๋ฉ๋๊น? ๋ด Iris Pro๋ ์ค๋ ํ๋ จ์ ์กฐ๊ธ์ด๋๋ง ๊ฐ์ํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ์์ ์ธํ GPU(๋๋ amd cpu) ์ง์ ๋ถ์กฑ์ ๋ํด ๋ ผ์ํ์ญ์์ค. codeplaysoftware/computecpp-sdk#78
https://github.com/codeplaysoftware/computecpp-sdk/issues/82
์ด ๋ฌธ์ ์ ์ํ๋ฅผ ํ์ ํ๋ ค๊ณ ํฉ๋๋ค. ์ด ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋งํ๋ ๊ฒ์ด ์ณ์ต๋๊น?
https://github.com/lukeiwanski/tensorflow
...ComputeCpp๋ก ๊ตฌ์ถ๋ ๊ฒ์ด ํ์ฌ ์ผ๋ฐ์ ์ธ AMD GPU ์ง์์ผ๋ก Tensorflow๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์ต์์ ์ต์ ์ ๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด ๋น๋๊ฐ CPU๋ณด๋ค ์๋ ํฅ์์ ์ ๊ณตํ๋ค๋ ๋ฒค์น๋งํฌ ์ฆ๊ฑฐ๊ฐ ์์ต๋๊น?
"์ผ๋ฐ AMD GPU ์ง์"์ด ์๋ฏธํ๋ ๋ฐ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ ๋ง ์ค๋๋ dGPU ๋๋ APU๋ฅผ ์๋ฏธํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ต์ (2์ธ๋ GCN ์ด์)์ด ์๋ ๊ฒฝ์ฐ ROCm์์ ์คํ๋๋ hipTensorFlow(v1.0.1)๊ฐ ๊ฝค ์ ์๋ํ์ต๋๋ค.
@briansp2020 ์ ์, ROCm์ ๋ํ AMD์ ์์ ์ ๋ณด์์ต๋๋ค. ๋ถํํ๋ ๊ทธ๋ค์ Linux๋ง ์ง์ํ๊ณ ๋ค๋ฅธ OS์ ๋ํ ์ง์์ ๋ก๋๋งต์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Windows๋ฅผ ์ง์ํ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๊ธฐ๋ํ๊ณ ์์ต๋๋ค.
@mjmax Windows์์ ์ฌ์ฉํ ์ ์๋ GPU ๊ฐ์ ํ ์ํ๋ก ํจํค์ง๊ฐ ์์ต๋๊น? GPU ๊ฐ์ ๋ฅ ๋ฌ๋์ ์ํ๋ค๋ฉด Linux๊ฐ ์ ์ผํ ์ ํ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. TensorFlow๊ฐ OpenCL๋ก ํฌํ ๋๋ฉด Windows๋ก ํฌํ ํ๊ธฐ๊ฐ ๋ ์ฌ์ธ๊น์? GPU ๊ฐ์์ด ์๋ Windows์์ CUDA๊ฐ ์ง์๋ ๋ TensorFlow๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ด์ ๊ฐ ํ์คํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ์ด์ ์ฃผ์ ๋ฅผ ๋ฒ์ด๋ ๊ฒ ๊ฐ์ง๋ง GPU ๊ฐ์ํ๋ Windows์ฉ TensorFlow ๋ฐ/๋๋ PyTorch์ ๋ํด ์๋ ์ฌ๋์ด ์๋ค๋ฉด ์ ๋ ์๊ณ ์ถ์ต๋๋ค...
@briansp2020 ๋ด๊ฐ ์๋ ํ, Tensorflow๋ ์ด๋ฏธ Windows์์ Nvidia GPU ๊ฐ์์ ์ง์ํฉ๋๋ค.
CL tensofrflow๋ ์ด๋ฏธ Linux์์ ์๋ง์
๋๋ค. ๊ณง ์๋ฌด ๊ฒ๋ ๊ธฐ๋ํ์ง ๋ง์ญ์์ค.
๊ฑฐ๊ธฐ์์ ์๋๋ฅผ ๋์ด๊ณ ์ถ๋ค๋ฉด plaidML๋ง ์์ต๋๋ค.
(๊ทธ๋ฆฌ๊ณ ์ ๋ฐ, ์ฐ๋ฆฌ๋ ์ด๋ฏธ 500๊ฐ์ ๋๊ธ์ ๋ฌ์์ต๋๋ค. ์ ๋ง, ์ ๋ง๋ก ํ์ํ ๊ฒฝ์ฐ์๋ง ๊ฒ์ํ๋๋ก ๋
ธ๋ ฅํฉ์๋ค)
@mirh OpenCL Caffe๋ Windows์์ ์๋ํฉ๋๋ค. ๋ฌผ๋ก ๊ธฐ๋ฅ ๋ฉด์์ TensorFlow๋ ์๋์ง๋ง ๋ชจ๋ ๊ณณ์ ๋ฐฐํฌํด์ผ ํ๋ ์ํํธ์จ์ด์๋ ๊ฝค ๊ฒฌ๊ณ ํฉ๋๋ค.
openCL ํฌํธ๋ฅผ AMD๊ฐ ์ง์ํ๋ HIP ํฌํธ๋ก ๊ต์ฒดํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
ใ
! @LifeIsStrange ์ธ์์ ์ฌ์ค ๊ต์ฅํ ์ด์ํด์... AMD์ HiP ๋ง์ผํ
ํ์์ ์ผํ๊ณ ์๋์? :-)
์ด ๋ฌธ์ ์ ์ฃผ์ ์ธ "OpenCL ์ง์"์ ์ดํด๋ณด์ญ์์ค.
์ด๋ Khronos ํ์ค https://en.wikipedia.org/wiki/OpenCL ์ ๊ดํ ๊ฒ์ด๋ฉฐ OpenCL Khronos ์์ ๊ทธ๋ฃน์ ๋ค๋ฅธ SYCL ํ์ค์ "๊ฐ์" ์น์ ๋์ ๋ํ๋ฉ๋๋ค.
๋ฌผ๋ก ์ด ๋ฌธ์ ๋ฐ์ ์๋ ์ธ๊ณ๊ฐ ์์ง๋ง ๊ทธ๊ฒ์... ๋ฐ๊นฅ์ชฝ์ ์์ต๋๋ค! :-)
์ด๋ฏธ ๋๋ฌด ๊ธด ํ ๋ก ์ ๋ํด ์์์ ๊ฒ์๋ฌผ์ ๊ฒ์ํ์ฌ ์ฐ์ฃผ์ ์ํธ๋กํผ๋ฅผ ๋ฌด์ฌ์ฝ ์ฆ๊ฐ์ํค์ง ๋ง์ญ์์ค... :-)
๊ทธ๋ฐ๋ฐ ์ด ๋๊ธ์ ๋น์ ๋ฟ๋ง ์๋๋ผ ์ฌ๊ธฐ ์๋ ๋ช๋ช ๋ค๋ฅธ ํฌ์คํฐ๋ค์๊ฒ๋ ์ ์ฉ๋ฉ๋๋ค.
์ด๊ฒ์ ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ GitHub ๋ฌธ์ ์
๋๋ค. ์ฌ๋๋ค์ด ๋๊ตฌ A ๋๋ B๋ฅผ ์ข์ํ๊ฑฐ๋ ์ซ์ดํ๋ ๋ฐฉ๋ฒ์ ๋ํ FaceBook ํ์ด์ง๊ฐ ์๋๋ผ OpenCL ํ์ค์ ์ง์ํ๋ ์ฅ์น์์ TensorFlow๋ฅผ ์คํํ๋ ๊ฒ์
๋๋ค. :-)
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ณผ ์ ์๋ ์ด ๋ฌธ์ ์ ๊ด๋ จ๋ ์ผ๋ถ git ์ปค๋ฐ์ ์์ ๋กญ๊ฒ ๋ณด๋ด์ฃผ์ญ์์ค...
OpenCL https://github.com/hughperkins/tf-coriander ๋ฅผ ์ง์ํ๋ TensorFlow ํฌํฌ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก @benoitsteiner ์ ์์ https://github.com/benoitsteiner/tensorflow-opencl
IMHO, ์ฃผ๋ฅ TF๊ฐ ์ฌ์ ํ ์์ ์ ๋ณํฉํ์ง ์์๋ค๋ ๊ฒ์ ์ฐ์ค๊ฝ์ค๋ฝ์ต๋๋ค.
์ฌ๊ธฐ์์ lomg-as-it-is-OpenCL์ ์คํํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๊น, ์๋๋ฉด ์ค์ ๋ก ๋ ๋น ๋ฅด๊ฒ ์คํํ๋๋ก ํฉ๋๊น? ๋๋ ๊ฑฐ๋ฃฉํ ์ ์์ด ์๋๋ผ ์ฌ๋ฌ GPU์์ ๋น ๋ฅด๊ฒ ์คํ๋๋ ๋ฐ ์ง์คํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. LifeIsStrange์ ์ด์ ์ AMD GPU์์ ์๋ํ๋๋ก ํ๋ ๊ฒ์ด๋ฉฐ HIP๋ ํ๋นํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์ด์ ์ Intel GPU ๋๋ Android์์ ์๋ํ๋๋ก ํ๋ ๊ฒ์ด๋ฉฐ OpenCL์ด ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ ๋๋ค. GPU ์ธ์ด๋ ์๋ง์ด๋ฏ๋ก ์ค์ฉ์ ์ผ๋ก ์ ์งํ์ญ์์ค.
์ฌ๊ธฐ์์ ์ผ๋ถ ์ฃผ์์ ์ฝ์ผ๋ฉด ์ฑ๋ฅ์ด OpenCL ํฌํธ์ ๋ฌธ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ถํํ๋ ์ฃผ๋ณ์ ๋ง์ ๋ฒค์น๋งํฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฒค์น๋งํฌ๊ฐ ์์ต๋๊น? https://github.com/AlphasCodes/DeepLearning/blob/master/Tensorflow_Benchmarks.md
์ ๊ฐ ์๊ธฐ๋ก๋ CUDA์ OpenCL์ ๋น๊ตํ๋ฉด ๋ค๋ฅธ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฒค์น๋งํน์ด ์ด๋ ต์ต๋๋ค. ์์ฌ๋๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด, nVidia๋ OpenCL ๊ตฌํ์ ์๋์ ์ผ๋ก ๋ง๋ค๊ฑฐ๋ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ๋์ผํ ํ๋์จ์ด์์ ๋ฒค์น๋งํนํ๋ฉด ํญ์ CUDA๊ฐ ๋ฉ์ง๊ฒ ๋ณด์ ๋๋ค.
2018๋ 2์ 12์ผ 14:26:11 GMT+00:00์ VincentSC [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ฌ๊ธฐ์์ lomg-as-it-is-OpenCL์ ์คํํ๋ ๋ฐ ์ค์ ์ ๋์์ต๋๊น?
์ค์ ๋ก ๋ ๋น ๋ฅด๊ฒ ์คํ๋๋๋ก ํ์๊ฒ ์ต๋๊น? ์ฑ์ค๋ฌ์ด ์ ์์ ์์์ผ๋ฉด ์ข๊ฒ ์ง๋ง,
์ฌ๋ฌ GPU์์ ๋น ๋ฅด๊ฒ ์คํ๋๋๋ก ํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ๋ผ์ดํ์์ด์ฆ์คํธ๋ ์ธ์ง
์ด์ ์ AMD GPU์์ ์๋ํ๋๋ก ํ๋ ๊ฒ์ด๋ฉฐ HIP๋
๊ฐ๊ฐ. ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ๋ Intel GPU ๋๋
Android, OpenCL์ด ํจ์ฌ ๋ ํฉ๋ฆฌ์ ์ ๋๋ค. GPU ์ธ์ด๋
์๋ง์ด๋ฏ๋ก ์ค์ฉ์ ์ผ๋ก ์ ์งํ์ญ์์ค.์ฌ๊ธฐ ๋๊ธ ์ค ์ผ๋ถ๋ฅผ ์ฝ์ผ๋ฉด ์ฑ๋ฅ์ด ๋ฌธ์ ์ ๋๋ค.
OpenCL ํฌํธ. ๊ทธ๋ฌ๋ ๋ถํํ๋ ์ฃผ๋ณ์ ๋ง์ ๋ฒค์น๋งํฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ด๊ฒ๋ณด๋ค ๋ ๋ง์ ๋ฒค์น๋งํฌ๊ฐ ์์ต๋๊น?
https://github.com/AlphasCodes/DeepLearning/blob/master/Tensorflow_Benchmarks.md--
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment -364936498
--
K-9 Mail์ ์ฌ์ฉํ์ฌ Android ๊ธฐ๊ธฐ์์ ๋ณด๋์ต๋๋ค. ์ ๊ฐ๋ตํ ์ค๋ช
์ ๋ถํ๋๋ฆฝ๋๋ค.
2๊ฐ์ ์ซ์๋ง ๋น๊ตํ๋ ๊ฒ์ ์ ๋ณด๊ฐ ์๋๋๋ค. NVidia์ OpenCL์ด ๋ค๋ฅธ GPU์์ 4๋ฐฐ ์๋๋ก ์คํ๋๋ ๊ฒฝ์ฐ ์ ๋ฐ ์๋๋ก ์คํ๋๋์ง ๋๊ฐ ์ ๊ฒฝ์ ์ฐ๊ฒ ์ต๋๊น?
๋ค์๊ณผ ๊ฐ์ ๋ฒค์น๋งํฌ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐธ์กฐ ๋ฒค์น๋งํฌ๋ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ผ๋ถ ๊ณ ๊ธ GPU๊ฐ ์์ผ๋ฏ๋ก ์ซ์๋ฅผ ์ ๋ ฅํ ์ฅ์๋ง ์์ผ๋ฉด ๋ฉ๋๋ค(๊ฑด๋ฌผ ๋ฌธ์์ ๋ํ ๋งํฌ ํฌํจ).
OpenCL ์ง์ ์ฌ์ค์ด ๋์ด์ผ ํฉ๋๋ค.
cuda๋ ๋๋ฌด ์ ํ์ ์ด๋ฉฐ nvidia๋ ๊ณต์ ํ๊ณ ์ถ์ง ์์ต๋๋ค.
cuda๋ Nv GPU์์๋ง ์๋ํฉ๋๋ค.
TensorFlow์ ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์
๋๋ค.
๋ค๋ฅธ "TensorFlow"๊ฐ ๋์ค์ง๋ง TensorFlow๋ณด๋ค ๋ ๋ง์ ์ง์์ ํ๋ค๋ฉด.
TensorFlow๊ฐ ์ฌ์ ํ Windows์์ cuda๋ง ์ง์ํ๋ ๊ฒฝ์ฐ.
์ ์ผํ ์ ํ์ด ์๋ TensorFlow๋ฅผ ์ธ์ํด์ผ ํฉ๋๋ค.
OpenCL์ด HIP๋ณด๋ค ๋์ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋๋ OpenCL์ด ๊ฒฌ์ธ๋ ฅ์ ์ป๋ ๋ฐ ์คํจํ์ผ๋ฉฐ ์ด ์์ ์์ OpenCL์ ์ง์ํ๋ ๊ฒ์ ์๋ง๋ ์ ์ฒด ์ปค๋ฎค๋ํฐ/์ฐ์ ์ ์ญ์์ฐ์ ์ด๊ณ ์์ ๋ญ๋น์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. TensorFlow๊ฐ HIP๋ฅผ ์ง์ ์ง์ํ๊ณ ์ปดํ์ผ๋ฌ/๋๊ตฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด์์ฑ์ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ํํธ์จ์ด๊ฐ ํ๋์ ์ธ์ด/ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ง์ํ๋ ๊ฒ์ด ๋ ์ข์ง ์์ต๋๊น?
์ํํธ์จ์ด๋ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด ์ง์ํด์ผ ํ๋ ๊ฒ์ ์ง์ํด์ผ ํฉ๋๋ค.
ํ๋์จ์ด๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ HIP๋ ๋ชจ๋ ์ข
๊ณผ ํธ๋ฃจ๋ผ๊ธฐ (์ ์ด๋ ์ข
์ด์)์
๋๋ค. ๊ทธ๋ฌ๋ ์ด ์ธ์์ "์ต์ amd ๋ฐ nvidia ์นด๋"๋ง ์๋ ๊ฒ์ ์๋๋๋ค.
์ด์ ์ ๋ฐ, ์ ์ ์ฌ๋์ ์ํด, ๊ทธ๊ฒ์ ๋ํ ์ด๋ค ๋ฌธ์ ๋ผ๋ ์ฌ๊ธฐ ์์ ๋ถํํ์ญ์์ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ์ ์ง์์ ๊ด์ฌ์ด ์๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ ์ํด ์ฌ๊ธฐ ์ ์์ต๋๋ค.
๋๋ SPIR-V๊ฐ ํ๋์จ์ด ๊ฐ ๋์์ผ๋ก CUDA๋ฅผ ์ง์ ๋์ฒดํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
http://alphanew.net/index.php?section=alphanew&site=overview&lang=eng&newsID=111
Google์ด ์ฌ์ ํ CUDA์ ์์กดํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋์์ด ๋ ๊น์?
OpenCL ๋์ ์์ฑ(Thomas Wang's):
uint wang_hash(uint seed)
{
seed = (seed ^ 61) ^ (seed >> 16);
seed *= 9;
seed = seed ^ (seed >> 4);
seed *= 0x27d4eb2d;
seed = seed ^ (seed >> 15);
return seed;
}
void wang_rnd_0(__global unsigned int * intSeeds,int id)
{
uint maxint=0;
maxint--;
uint rndint=wang_hash(id);
intSeeds[id]=rndint;
}
float wang_rnd(__global unsigned int * intSeeds,int id)
{
uint maxint=0;
maxint--;
uint rndint=wang_hash(intSeeds[id]);
intSeeds[id]=rndint;
return ((float)rndint)/(float)maxint;
}
// initialize each thread's own random number seed
__kernel void rnd_0(__global unsigned int * intSeeds)
{
int id=get_global_id(0);
wang_rnd_0(intSeeds,id);
}
// get a new random value by each thread
__kernel void rnd_1(__global unsigned int * intSeeds)
{
int id=get_global_id(0);
float randomFloat=wang_rnd(intSeeds,id);
}
OpenCL SHA3hashing(๋๊ฐ ์์ฑํ๋์ง ์์ด๋ฒ๋ฆผ)
https://gist.github.com/tugrul512bit/c8170f74846e36e350607664f12c525c
์ด ๋ฌธ์ ๋ ์ธ๋ถ ๊ธฐ์ฌ๋ฅผ ์ด๋ํ๋ฏ๋ก ์์์ธ์ ์ ๊ฑฐํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด contributions welcome
๋ ์ด๋ธ์ ์ ๊ฑฐํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด ๋ฌธ์ ๋ ์ธ๋ถ ๊ธฐ์ฌ๋ฅผ ์ด๋ํ๋ฏ๋ก ์์์ธ์ ์ ๊ฑฐํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด contributions welcome
๋ ์ด๋ธ์ ์ ๊ฑฐํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
OpenCL์ ์ง์ํ๋ ๊ฒ์ Google์ ์ด์ต์
๋๋ค.
ํน์ (ํ์ฌ/๋ธ๋๋/๊ณต๊ธ์
์ฒด)์ ํน์ ํ๋์จ์ด๋ฅผ ์ํํธ์จ์ด์ ๋ํ ์ข
์์ฑ์ผ๋ก ์ฌ์ฉํ๋ฉด ํ๋์จ์ด์ ๋ํด ๋ ๋ง์ ๋น์ฉ์ ์ง๋ถํด์ผ ํ๊ณ ์์ฅ ๊ฒฝ์์ ๋น์ฉ์ ๋ฎ์ถฅ๋๋ค.
Google์ ์ฒ์๋ถํฐ ํญ์ ์์ฉ ํ๋์จ์ด์ ๊ดํ ๊ฒ์ด์์ต๋๋ค. ์ด๋ Google์ ์ฑ๊ณต(์์ฅ ์ง๋ฐฐ๋ ฅ)์ ์ฌ์ ํ ๊ฒฐ์ ์ ์ด์๊ณ , ๋ฐ์ดํฐ ์ผํฐ ์ด์ ๋น์ฉ์ด ๋ฎ์ Gmail(์ ์ฅ ๊ณต๊ฐ) ๋ฐ Google Photos(์ ์ฅ ๊ณต๋ฐฑ ๋ฐ ์๋ ํ๊ทธ ์ถ๊ฐ).
@wesamco ์๋์, ๋ฐ๋์ Google์ ์ด์ต์ด ๋๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ค์ IIRC์ธ "TensorBoard"๋ผ๊ณ ํ๋ ์์ฒด ํ๋์จ์ด๋ฅผ ๋ง๋ญ๋๋ค. OpenCL ๋ฐ CUDA/CUDnn์ ์ฐํํ๊ณ ๋ณด๋๊ฐ ์์ TensorFlow ์ฝ๋๋ฅผ ์คํํ๋๋ก ํ ์ ์์ต๋๋ค.
์์ TensorFlow ์ฝ๋.
๊ทธ๋ฐ ๊ฒ์ ์์ต๋๋ค. ๊ฐ๊ณต๋์ง ์์ ์์๊ณผ ๋ค๋ฆ ๋๋ค. TPU์๋ ๋ค์ํ ์ ํ์ ํธ์ถ์ ์ฒ๋ฆฌํ๋ ์์ฒด DNN ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์์ ๋ ผ์๋ฅผ ๋ค์ ํ๋์ ๋ชฉ๋ก์ผ๋ก ์์ถํด์ผ ํ ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฐ๋ผ์ ์ํ๋ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ์ง์์ ์์ํ์ญ์์ค. ๊ฐ ๊ทธ๋ฃน์ด ํ๋ก์ ํธ์ ๋ํ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
OpenCL์ ์ ์ฒด ์ธ์ด์์ SPIRV(์ปค๋)๋ก ํํ๋๋ ์ธ์ด ์ ์/ํ๋์จ์ด ์ฌ์์ผ๋ก ๋ณํ๋์์ผ๋ฉฐ OpenCL ๋๋ผ์ด๋ฒ์ ๊ฐ์ ํ๋ซํผ ์์์ ์คํ๋ ์ ์์ผ๋ฉฐ ๋์ค์ Vulkan ๋๋ผ์ด๋ฒ์์๋ ์คํ๋ ์ ์์ต๋๋ค. (ํ๋ซํผ). ๋ฐ๋ผ์ SYCL์ ์ง์ํ๋ฉด OpenCL๋ ์ง์ํฉ๋๋ค.
์๋ฒฝํ ์์ฝ์ด์ง๋ง plaidml์ GPU์์๋ ์คํ๋ฉ๋๋ค.
ํ์ฌ tensorflow๊ฐ ์๋ โโkeras์ ๋ฐฑ์๋์
๋๋ค. ๊ทธ๋์ ๊ทธ๊ฒ์ ์ฝ๊ฐ OT์
๋๋ค.
์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ,
@VincentSC ๋ค์ํ ๋
ธ๋ ฅ์ ๋ํ ํ๋ฅญํ ์์ฝ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋ฐ๋ผ์ ์ํ๋ ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ์ง์์ ์์ํ์ญ์์ค. ๊ฐ ๊ทธ๋ฃน์ด ํ๋ก์ ํธ์ ๋ํ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
SYCL ์ ๊ทผ ๋ฐฉ์์ ์ด์ ๋ค์ํ ํ๋ซํผ/์ฅ์น๋ฅผ ์ง์ํฉ๋๋ค. ์ ๊ฐ ์ธ๊ธํ ์ ์๋ ๊ฒ๋ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
AMD์ ๊ฒฝ์ฐ ์์์ ์ธ๊ธํ GPU๋ ๋ ๊ฑฐ์ OpenCL์ด ํ์ฑํ๋ AMDGPU-Pro ๋๋ผ์ด๋ฒ 17.40-xxx๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ค๋ฅธ ์๋ฆฌ์ฆ๊ฐ ์๋ํ์ง ์๋ ๋ถ๋ช
ํ ์ด์ ๋ ๋ณด์ด์ง ์์ต๋๋ค(SPIR/SPIR-V๊ฐ ์ง์๋๋ค๋ ๊ฐ์ ํ์)
์ฐ๋ฆฌ๊ฐ ์ง์คํ๊ณ ์๋ ์ฃผ์ ํ๋ซํผ์ Linux์ ๋๋ค. ๊ทธ๋ฌ๋ ํฅํ Windows๋ฅผ ํ์ฑํํ๊ธฐ ์ํด ์ง์์ ์ธ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์์ต๋๋ค. ๊ฐ๊น์ด ์ฅ๋์ OSX๋ฅผ ์ง์ํ ๊ณํ์ ์์ต๋๋ค. ๋๋ ์ฌํ ์ผ๊ตด์ ์๊ณ ์๋ค.
์ฐ๋ฆฌ์ ์ด์ ์ CNN์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ํ์ฌ ์ฑ๋ฅ์ ์ต์ ํ๋์ง ์์์ผ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ๋ณผ ์ ์๋ ๊ณณ ๊ทผ์ฒ์ ์์ต๋๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ค๋ฅธ ๋์์์ ๋๋ถ๋ถ์ ๋ชจ๋ธ์ ๋ํด CPU ์ฑ๋ฅ์ ๋ฅ๊ฐํ๊ณ ์์ต๋๋ค.
๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ์ํํ๊ณ TensorFlow์ ์ ์ฒด ์ปดํ์ผ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด(๋ํ ์ด์์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด) Eigen, BLAS ๋ฐ DNN ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์
ํ๊ณ ์์ต๋๋ค.
์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ TensorFlow์ ๊ฐ์ ๋ณต์กํ ํ๋ก์ ํธ์ ์ฝ๊ฒ ํตํฉํ ์ ์๋ ์ด์ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํ๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์๋์์ ํ์ฌ ๊ณต์ ํ ์ ์๋ ์ฑ๋ฅ ๊ทธ๋ํ๋ฅผ ์ฐธ์กฐํ์ธ์. ๊ทธ๊ฒ๋ค์ ๋ด ํฌํฌ https://github.com/lukeiwanski/tensorflow/tree/dev/amd_gpu(271093b21cc5ca38e8699e154b5cada96bd7ac0d )์์ ๊ฐ์ ธ์์ต๋๋ค.
์ฌ์ฉ๋ ๋ฒค์น๋งํฌ๋ https://github.com/tensorflow/benchmarks ์
๋๋ค.
๊ทธ๋ํ๋ Intel i7-4790K ๊ฒฐ๊ณผ๋ก ์ ๊ทํ๋ฉ๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๋ฉด TensorFlow๋ฅผ ๋ฐ๋ฅด๋๋ก Eigen์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ฒ์ฒํ ์ ์คํธ๋ฆผํฉ๋๋ค.
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ฃจํฌ
GPU/OpenCL์ ์ง์ํ๋ ๋ชจ๋ฐ์ผ ์ฅ์น์ ๋ฅ ๋ฌ๋ ์ถ๋ก ์ ์ํด Adreno, Mali ๋ฐ PowerVR GPU์ ์ต์ ํ๋ MACE ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ๋ฒค์น๋งํฌ ๊ฒฐ๊ณผ ์ ๋๋ค.
@keryell @benoitsteiner , ํตํฉ์ ํ์ํ tensorflow ๋ฐ trisycl ๋ฒ์ . ์ต์ trisycl ๋ฆด๋ฆฌ์ค๋ก tensorflow(1.9)๋ฅผ ๋น๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ถํํ๋ ์ต์ TensorFlow๋ ํ์ฌ triSYCL์ด ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ํ์ฌ ์ ์ผํ๊ฒ ์์ ํ ํธํ๋๋ SYCL ๊ตฌํ์ธ ComputeCpp๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค...
Tensorflow๋ Google Brain์์ ์ง์ํ๊ณ Google์ nVidia์ ํํธ๋์ญ์ ๋งบ๊ณ ์์ต๋๋ค. Tensorflow์์ OpenCL์ ์ง์ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํฐ OpenCL ์ปค๋ฎค๋ํฐ ๋
ธ๋ ฅ์ด ํ์ํฉ๋๋ค
OpenCL ์ง์ ๋ถํ๋๋ฆฝ๋๋ค!
OpenCL์ ์ฐ๋ฆฌ์๊ฒ๋ ๋ ์ ํฉํฉ๋๋ค.
@Makhaon ๋๋. NVIDIA ๊ทธ๋ํฝ ์นด๋๊ฐ ์๋ ์ปดํจํฐ๋ฅผ ์ด ์ฌ์ ๊ฐ ์์ต๋๋ค.
์์ 2๊ฐ์ ๊ฒ์๋ฌผ ์ธ์๋ ์ด์ AMD์ Vega GPU(Raven Ridge APU ๋ด๋ถ์ GPU ํฌํจ)๊ฐ FLOPS์ ๋ ๋ฐฐ์์ FP16์ ์ํํ ์ ์์ผ๋ฏ๋ก TF๊ฐ OpenCL์ ํตํด ์ง์ํ ์ ์๋ค๋ฉด ์ ๋ง ๋์์ด ๋ ๊ฒ์ ๋๋ค. ์ ์ ์์ฐ. ๋ํ ์ด๋ค ์ค ๋ง์ ์ฌ๋๋ค์ด ํ์์ผ ๊ฒ์ด๋ฉฐ, DNN ์ฌ์ ์ ์์์ ์ผ๋ก TF๋ฅผ ์ฌ์ฉํ๊ฒ ํ๋ฉด ๊ทธ๋ค์ ์๋ง๋ TF๋ฅผ ๊ณ์ ๊ณ ์ํ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ TF์ ๋ํด ์ด์ผ๊ธฐํ ๊ฒ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ํ์ฅํ๋ ๋ฐ ๋์์ด ๋๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
๋๋ ์ด ์ค๋ ๋๊ฐ ๊ฐ๋ฐ์๋ค์๊ฒ ๋๋ถ๋ถ ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค(๋๋ฌด ๋ง์ ๋
ธ์ด์ฆ - ๊ทธ๋ฆฌ๊ณ ๋ ์ถ๊ฐํ ๊ฒ์
๋๋ค ;-). ํ์ง๋ง ๋ง์ ์๊ฒฌ์ด ์์ ์ ๋์น๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
AMD ์นด๋๋ก Tensorflow๋ฅผ ์คํํ๋ ค๋ฉด OpenCL์ด ์ํ๋ ๊ฒ์ด ์๋๋๋ค . https://github.com/ROCmSoftwarePlatform/ ์ผ๋ก ์ด๋ํ์ฌ ROCm ์คํ์ ์ค์นํ์ธ์. AFAIK AMD์ ํ์ฌ ์ ๋ต์ Tensorflow/pytorch์ฉ OpenCL ๋์ ROCm์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค .
Generic OpenCL์ ๋๋ฌด ๋ง์ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ์ผ๋ฉฐ AMD์ ์ถฉ๋ถํ ์ฑ๋ฅ ์ด์ ์ ์ ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ๋ฐ๋ผ์ ์ด ํฐ์ผ์ OpenCL๋ง ์ฌ์ฉํ๋ ARM ํ๋ซํผ์ ์คํํ๋ ๊ฒฝ์ฐ ์๋ง ์ ์ฉํฉ๋๋ค.
(๋ฉด์ฑ ์กฐํญ: Tensorflow ๊ฐ๋ฐ์ ๋ํ ์ค์ ๋ด๋ถ๊ฐ ์๋ ์ธ๋ถ์ธ์ ๋ถ๊ณผํ๋ฏ๋ก ์์ ์ ๋ณด๊ฐ ์์ ํ ์๋ชป๋์๊ฑฐ๋ ์คํด์ ์์ง๊ฐ ์์ ์ ์์ต๋๋ค. ๋ ์ ์๊ณ ์๋ค๋ฉด ๋ถ๋ด ์์ด ์ ๋ฅผ ๋น๋ํ์ญ์์ค.)
์๋ก์ด GPU ์คํ๋ก๋๊ฐ ํฌํจ๋ llvm์ ์ด๋ป์ต๋๊น? ๊ทธ๋ฌ๋ฉด tensorflow์ cuda ํน์ ์ฝ๋ ์ฌ์ด์ ์๋นํ ์์ค์ ์ถ์ํ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
์์ ๋จ 10๊ฐ์ ๊ฒ์๋ฌผ์ ์ฝ๊ณ ์๋ํ ์ ์๋ lukeiwanski/codeplaysoftware์ ํฌํฌ๊ฐ ์ด๋ฏธ ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ฆฐ ์ฌ๋ฌ๋ถ์ ์ด๋ป์ต๋๊น?
(๋ํ ํ ๋ฒ ์ฌ๊ฐํ ์ข
๋ฅ์ ์คํ ์์ค ๋
ธ๋ ฅ์ ๊ธฐ์ฌํ ๊ฒ์ ๋ํด xiaomi์ ๋ชจ์๋ฅผ ๋ฒ์ต๋๋ค)
@FelixSchwarz ROCm์ด OpenCL์ ์ฌ์ฉํ๋ค๋ ์ฌ์ค์ ์๊ณ ๊ณ์๊ธฐ ๋๋ฌธ์ Linux์์ AMD์ ์ฌ์ฉ์ ๊ณต๊ฐ OpenCL ๋๋ผ์ด๋ฒ์ ๋๋ค(์ด๊ฒ์ด Windows๋ฅผ ์ง์ํ์ง ์๋ ์ด์ ์ ๋๋ค). ๋ฐ๋ผ์ Linux์์ AMD์ ๋๋ผ์ด๋ฒ ์์ฝ์์คํ ์ด ์๋ํ๋ ๋ฐฉ์์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ์ปค๋ ์ธก ๋๋ผ์ด๋ฒ AMDGPU ๋ฐ AMDKFD(ํ์ฌ AMDGPU๋ก ๋ณํฉ๋จ) ๋ค์ ์ฌ์ฉ์ ๊ณต๊ฐ ๋๋ผ์ด๋ฒ RadeonSI(OpenGL์ฉ) RadV/AMDVLK(Vulkan์ฉ) ๋ฐ ROCm(OpenCL์ฉ)์ด ์์ต๋๋ค.
์ด ๋ฒ๊ทธ ๋ฐ ๊ธฐํ ํฌํฌ์ ์ญํ ๊ด๊ณ๋ก ํ๋จํ๋ฉด Google์ ์ด์ ๋ํด ์ ํ ๊ด์ฌ์ด ์์ผ๋ฉฐ ๊ณต์ ์ ์ฅ์์์ ์ด๋ฅผ ๊ตฌํ ํ์ง ์์ ๊ฒ์ ๋๋ค. ๋๋ ๋ชจ๋ ์ฌ๋์๊ฒ ์๋ชป๋ ํฌ๋ง์ ์ฃผ์ง ์๊ธฐ ์ํด ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃ(๋๋ ์ ๊ธ)ํ๋ ๋ฐ ํฌํํ ๊ฒ์ ๋๋ค.
๋ฌธ์ ๋ ์ฌ๊ธฐ์์ ๋ค์์ ์ํํ ๋ชจ๋ ์ฌ๋๋ค์ ์ต์ํ ์ฌ๊ธฐ์์ ์ง์ ํด์ผ ํฉ๋๋ค.
ํ์ฐ์ ์ผ๋ก ๋ค์ ์ฝ๋ ๋ค.
2018๋ 9์ 15์ผ(ํ ) 09:45 Anton Kochkov [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ด ๋ฒ๊ทธ์ ๋ค๋ฅธ ํฌํฌ์ ์ญํ์ผ๋ก ํ๋จํ๋ฉด Google์๋ 0์ด ์์ต๋๋ค.
๊ด์ฌ์ ๊ฐ๊ณ ๊ณต์์ ์ผ๋ก ์ด๋ฅผ ๊ตฌํ ํ์ง ์์ ๊ฒ์ ๋๋ค.
์ ์ฅ์. ๋๋ ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฑฐ๋ ์ ๊ทธ๋ ๊ฒ์ ํฌํํ ๊ฒ์ ๋๋ค.
๋ชจ๋ ์ฌ๋์๊ฒ ๊ฑฐ์ง ํฌ๋ง์ ์ฃผ์ง ๋ง์ญ์์ค.โ
์ด ์ค๋ ๋์ ๊ฐ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/tensorflow/tensorflow/issues/22#issuecomment-421535747 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AB1qNyDrfbiQ4h3kQyqObEfpK3O0FqRGks5ubKIBgaJpZM4Gex3i
.
Movidius Pi Hat์ ์ง์ํ๋ TensorRT๊ฐ ์์ต๋๋ค. Movidius Pi Hat์ Google์ 45๋ฌ๋ฌ์ง๋ฆฌ "AIY โโVision Kit"์ ๋๋ค. Google์ Target์ ์ฐ๊ฒฐํ์ฌ ๊ตฌ๋งคํฉ๋๋ค.
์ด๊ฒ์ CUDA ๋๋ Nvidia์ ๊ด๋ จ์ด ์์ต๋๊น? ์ธํ ์นฉ์ ์ฌ์ฉํ๋ค๊ณ ํฉ๋๋ค. ํต์ฌ์ ์๋ง๋ ์นฉ์ด FPGA์ผ๊น์? ๋๊ตฌ๋ ์ง ๊ทธ๊ฒ์ ๋ํด ๋ ์๊ณ ์์ต๋๊น?
๋๋ ํฐ Movidius ์ ๋์ ๋ํด ๊ฝค ์๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์ถ๋ก ์ผ ๋ฟ์ด๋ฉฐ TensorFlow ๋๋ Caffe ์ฌ์ ์ปดํ์ผ๋ ๋ชจ๋ธ์ ์คํํฉ๋๋ค. IIRC๋ ๋ชจ๋ 16๋นํธ ๋ชจ๋์ ๋๋ค.
Movidius ์นฉ ์์ฒด๋ ํจ์ฌ ๋ ๊ฐ๋ ฅํ์ง๋ง SDK๋ฅผ ๋ฐ์ผ๋ ค๋ฉด ์๊ฒฉ์ ๊ฐ์ถ ํํธ๋์ฌ์ผ ํฉ๋๋ค.
ํ ์ opencl์ ์ฌ์ฉํ๋ ค๋ ๋ค๋ฅธ ์ฌ๋์ ๋ํ ๋งํฌ๊ฐ ์์ต๋๋ค.
https://github.com/hughperkins/tf-coriander
https://github.com/ChiahungTai/tensorflow-cl
https://github.com/guoyejun/tensorflow-cl
https://github.com/honggui/tensorflow-cl
https://github.com/benoitsteiner/tensorflow-opencl
https://github.com/lukeiwanski/tensorflow (์ ์ฅ์๊ฐ ์ค๋๋จ)
https://github.com/codeplaysoftware/tensorflow
๋ํ ํ์ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
https://documen.tician.de/pyopencl/
https://pypi.org/project/DeepCL/
https://www.khronos.org/sycl/
์์ ํ๋ก์ ํธ๋ฅผ ์์ ๋กญ๊ฒ ์ถ๊ฐํ์ญ์์ค.
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ์ด ๋ฌธ์ ๋ 3๋ ์ด ๋์์ต๋๋ค.
๋ค, ๊ฒ์๋ฌผ์ ๋ง์ง๋ง ํ ์ค๋ง ๋ณด์ธ์.
@ filips123 ์๋์, ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉฐ ์์ธก ๊ฐ๋ฅํ ๋ฏธ๋์๋ ์์ ๊ฒ์ ๋๋ค. ๊ทธ ๊ฐ๋ฅ์ฑ์ ์ธ๊ณ์ธ์ ์นจ๊ณต๊ณผ ์๊ฐ์ ๊ฑฐ์ฌ๋ฌ ์ฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ๋ณด๋ค ๋ฎ์ต๋๋ค.
์ด ์ธํ
์ด๋์
ํฐ๋ธ PlaidML์ ์ถฉ๋ถํ ์ ์๋ํ๋ฏ๋ก ํ์ธํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
https://github.com/plaidml/plaidml
Mac์ opencl ๋๋ metal์์ ์คํ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ๋ด๊ฐ ์ฐพ๊ณ ์๋ Macbook Pro AMD GPU์ ํจ๊ป ์๋ํฉ๋๋ค.
ํํธ PlaidML์์ Pytorch ์ง์์ ํฌํํ๋ ๋ฐ ๋์์ ์ฃผ์ค ์ ์์ต๋๊น? https://github.com/plaidml/plaidml/issues/63
PlaidML์ ํ์คํ ๋ชจ๋ ํ๋ฅญํ๊ณ ๋ฉ์ง๋๋ค(์๋ฅผ ๋ค์ด, tf์ cuda ์์ฒด๋ณด๋ค opencl์ nvidia gpu์์ ๋ ๋ง์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.)
๊ทธ๋ฌ๋ keras์ ๋ฐฑ์๋์
๋๊น? ์์๋ค์ํผ tensorflow๋ฅผ ์์ ํ ๋์ฒดํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋
ผ์ํ๋ ์ ์ฅ์์
๋๊น?
(์ต์ tf ๋ฒ์ ์ ๋ชจ๋ธ์ keras๋ก ์ง์ ๋ด๋ณด๋ผ ์ ์๋ค๋ ๊ฒ์ ์ดํดํ๋ ๊ฒ ๊ฐ์ต๋๊น? ๊ทธ๋์ ๊ฑฐ๊ธฐ์ ..)
์ด์จ๋ , ๋ค ๋ฒ์งธ๋ก, ๋ง์ฝ ๋น์ ์ด opencl์ ๋ํ ์ต์ ์๋ฃจ์
์ ์ ํ๊ณ ์ฌ์ ํ ํ๋ฐํ ๊ฐ๋ฐ๋๊ณ ์๋ ๊ฒ( ๋ํ ์ค์ ๋ก ์ธ์ ๊ฐ๋ ์ฌ๊ธฐ์ ๋ณํฉ๋ ์ค์ ๊ธฐํ๊ฐ ์๋ ๊ฒ)์ ์ํ๋ค๋ฉด, ๋จ์ง ์ฝ๋ ํ๋ ์ด ์คํ์ด ์์ต๋๋ค.
๋ค์:
https://developer.codeplay.com/computecppce/latest/tensorflow-overview
https://github.com/Rbiessy/tensorflow/tree/dev/amd_gpu
PlaidML์ ํ์คํ ๋ชจ๋ ํ๋ฅญํ๊ณ ๋ฉ์ง๋๋ค(์๋ฅผ ๋ค์ด, tf์ cuda ์์ฒด๋ณด๋ค opencl์ nvidia gpu์์ ๋ ๋ง์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.)
๊ทธ๋ฌ๋ keras์ ๋ฐฑ์๋์ ๋๊น? ์์๋ค์ํผ tensorflow๋ฅผ ์์ ํ ๋์ฒดํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋ ผ์ํ๋ ์ ์ฅ์์ ๋๊น?
(์ต์ tf ๋ฒ์ ์ ๋ชจ๋ธ์ keras๋ก ์ง์ ๋ด๋ณด๋ผ ์ ์๋ค๋ ๊ฒ์ ์ดํดํ๋ ๊ฒ ๊ฐ์ต๋๊น? ๊ทธ๋์ ๊ฑฐ๊ธฐ์ ..)์ด์จ๋ , ๋ค ๋ฒ์งธ ๋น์ด๋จน์ ์๊ฐ ๋์, ๋ง์ฝ ๋น์ ์ด opencl์ ๋ํ ์ต์ ์๋ฃจ์ ์ ์ ํ๊ณ ์ฌ์ ํ ํ๋ฐํ ๊ฐ๋ฐ๋๊ณ ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ํ๋ค๋ฉด(_๋ํ_ ์ค์ ๋ก ์ธ์ ๊ฐ๋ ์ฌ๊ธฐ์ ๋ณํฉ๋ ์ค์ ๊ธฐํ๊ฐ ์๋ ๊ฒ), ๋จ์ง ์ฝ๋ ํ๋ ์ด ์คํ์ด ์์ต๋๋ค.
๋ค์:
https://developer.codeplay.com/computecppce/latest/tensorflow-overview
https://github.com/Rbiessy/tensorflow/tree/dev/amd_gpu
์ฃ์กํฉ๋๋ค. tensorflow ์ง์์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ๋ด ๊ฐ์ ์ ์ธ ๋๋๋ keras gpu ์ง์ == tensorflow ์ง์์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
plaidML์ ์ ๋ง ๋ฉ์ง๋๋ค. ์ผ๋ผ์ค์์ ์๋ํฉ๋๋ค.
๋ฌผ๋ก plaidML ๋ฐฑ์๋(์: tf.image.ssim)์์ ์์
ํ๊ธฐ ์ํด ์ผ๋ถ tf ์ฝ๋๋ฅผ ์์ ์ผ๋ผ์ค๋ก ์ ์กํด์ผ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ฒฐ๊ณผ - ๋ด ์ฝ๋๋ NVIDIA ๋ฐ AMD ์นด๋์์ ์๋ํฉ๋๋ค.
๋ํ plaidML์ ์ฐ๊ตฌ์์๊ฒ ์ฒ๊ตญ์ ๋๋ค. "ํ์ผ" ์ธ์ด๋ก ์์ฑํ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ํด ์๋์ผ๋ก ๊ทธ๋ผ๋์ธํธ๋ฅผ ์์ฑํ๊ณ GPU์์ ํ ์ํ๋ก์ 80% ์๋๋ก ์๋ํฉ๋๋ค.
๊ทธ๋์ ML ์ฐ๊ตฌ์์ด ์ฌ์ ํ PyTorch๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. Intel์ plaidML๋ก ML ๊ณผํ์ ํฅ์์ํค์?
@iperov ์ค์ ๋ก ์๋ฌด๋ PlaidML์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ฅผ ์๊ณ ์ถ์ต๋๊น?
Tensorflow์ CUDA ๋ฐฑ์๋์ ๋นํด AMD์ OpenCL ๊ตฌํ์์ ๊ฐ๋ จํ๊ฒ ๋๋ฆฌ๊ฒ ์คํ๋๋ฏ๋ก ์ฌ์ฉํ๋ ์ด์ ์ ์ ๋ฐ ์ด์์ด ์์ต๋๋ค. CPU์ ํจ๊ป Tensorflow๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฒฝ์๋ ฅ์ด ์๊ฑฐ๋ PlaidML์ ์ฌ์ฉํ๋ ํ๋์จ์ด๋ฅผ ์์ ํ ๋ฅ๊ฐํ๋ ์ฑ๋ฅ์ด ๋๋ฌด ๋์ฉ๋๊น?
์๋ฌด๋ ์์ ์ํ ๊ต์์ ๊ฐ์ ์ฌ๋๋ง์ด ๊ตฌ์ฑํ ์ ์๋ ์ ๋ฌธ์ ์ธ Tile ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ์งํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
์ด๊ฒ์ #2์ ๊ฑฐ์ ๊ด๋ จ์ด ์์ง๋ง Intel์ด Vertex.AI๋ฅผ ์ธ์ํ ์ดํ๋ก ๊ทธ๋ค์ PlaidML์ ๋ํด ๋ ์ด์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. GPU ์ปดํจํ ๊ฐ์ ๋จธ์ ๋ฌ๋์ ์ํ ์ธํ ์ ์๋ฃจ์ ์ Tensorflow, PyTorch ๋๋ ๊ธฐํ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ๋ฅผ ๋ฐฑ์๋๋ก ๋์์ผ๋ก ํ๊ธฐ ์ํด ํ์ฌ nGraph ๋ก ์๋ ค์ง ๋ฅ ๋ฌ๋์ ์ํ ์๋ก์ด ์ปดํ์ผ๋ฌ๋ฅผ ๋์ ํ๊ณ ์์ต๋๋ค. nGraph๊ฐ ์์ผ๋ฉด ๋ ์ด์ PlaidML์ ์ค๊ฐ์๋ก ๊ณ์ ๊ฐ๋ฐํ ์ด์ ๊ฐ ์์ต๋๋ค.
์ฌ๋๋ค์ ์ ์ง ๊ด๋ฆฌ ๋๋ ๊ธฐํ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ด์ ๋ก PyTorch๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์์ฝํ์๋ฉด PlaidML์ Intel์ ๋๊ตฌ์ด๋ฉฐ ๊ณํ์ ๋ง์ง๋ง ๋ถ๋ถ์์ PyTorch๊ฐ ์ญํ ์ ์ํํ ์๋๊ฐ ์์ ๊ฒ์ ๋๋ค. nGraph์ ํ์ฌ Intel GPU ๋ฐฑ์๋๋ OpenCL 2.1์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๊ทธ ์ค Intel๋ง ์ค์ ๊ตฌํ์ ํ๊ณ ์์ผ๋ฏ๋ก Intel์ ์์ํ๊ฒ ๊ธฐ๊ณ ํ์ต์ ๊ฐ์ ๋ณด๋ค๋ ์ค์ค๋ก๋ฅผ ์ํด ์กด์ฌํฉ๋๋ค. Intel์ด ๊ณ์ํด์ nGraph๋ฅผ ๊ฐ๋ฐํ ๋ ๋ง์ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ์ OpenCL, Metal ๋๋ Vulkan์ ๋ณ๋ ์์ค ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๊ณผ ํธํ๋์ง ์๋ ํ ํ๋ฆฟํ๋ ์ปค๋์ด ์์ผ๋ฏ๋ก OpenCL 2.1๋ง์ผ๋ก๋ GPU ๋ฐฑ์๋ ๊ธฐ๋ฐ์ ๊ณ์ ์ ์งํ ์ ์์ต๋๋ค. ์คํ ๋ชฉ์ ์ผ๋ก ๋ง. Intel์ ์ต์ข GPU ๋ฐฑ์๋๋ ์๋ง๋ SYCL 2.2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ฑฐ๋ OpenMP์ ๊ฐ์ด ์์ ํ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์ด๋ฉฐ ๊ณต๊ธ์ ์ฒด๋ณ ์๋ฃจ์ ์ ๊ฐ์ ธ์ฌ ์๋ ์์ต๋๋ค.
AMD์ ๊ฒฝ์ฐ ๋๊ฐ ์ ๊ฒฝ์ ์ฐ๋์? OpenCL์ ๊ทธ๋ค๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ ๋ง์นจ๋ด HIP์ ๋ํ ์์ ์ผ๋ก ์ผ๋ถ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค ...
@iperov ์ค์ ๋ก ์๋ฌด๋ PlaidML์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ฅผ ์๊ณ ์ถ์ต๋๊น?
- Tensorflow์ CUDA ๋ฐฑ์๋์ ๋นํด AMD์ OpenCL ๊ตฌํ์์ ๊ฐ๋ จํ๊ฒ ๋๋ฆฌ๊ฒ ์คํ๋๋ฏ๋ก ์ฌ์ฉํ๋ ์ด์ ์ ์ ๋ฐ ์ด์์ด ์์ต๋๋ค. CPU์ ํจ๊ป Tensorflow๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฒฝ์๋ ฅ์ด ์๊ฑฐ๋ PlaidML์ ์ฌ์ฉํ๋ ํ๋์จ์ด๋ฅผ ์์ ํ ๋ฅ๊ฐํ๋ ์ฑ๋ฅ์ด ๋๋ฌด ๋์ฉ๋๊น?
- ์๋ฌด๋ ์์ ์ํ ๊ต์์ ๊ฐ์ ์ฌ๋๋ง์ด ๊ตฌ์ฑํ ์ ์๋ ์ ๋ฌธ์ ์ธ Tile ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ์งํ๋ ๋ฐ ๊ด์ฌ์ด ์์ต๋๋ค.
- ์ด๊ฒ์ #2์ ๊ฑฐ์ ๊ด๋ จ์ด ์์ง๋ง Intel์ด Vertex.AI๋ฅผ ์ธ์ํ ์ดํ๋ก ๊ทธ๋ค์ PlaidML์ ๋ํด ๋ ์ด์ ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. GPU ์ปดํจํ ๊ฐ์ ๋จธ์ ๋ฌ๋์ ์ํ ์ธํ ์ ์๋ฃจ์ ์ Tensorflow, PyTorch ๋๋ ๊ธฐํ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ๋ฅผ ๋ฐฑ์๋๋ก ๋์์ผ๋ก ํ๊ธฐ ์ํด ํ์ฌ nGraph ๋ก ์๋ ค์ง ๋ฅ ๋ฌ๋์ ์ํ ์๋ก์ด ์ปดํ์ผ๋ฌ๋ฅผ ๋์ ํ๊ณ ์์ต๋๋ค. nGraph๊ฐ ์์ผ๋ฉด ๋ ์ด์ PlaidML์ ์ค๊ฐ์๋ก ๊ณ์ ๊ฐ๋ฐํ ์ด์ ๊ฐ ์์ต๋๋ค.
์ฌ๋๋ค์ ์ ์ง ๊ด๋ฆฌ ๋๋ ๊ธฐํ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ด์ ๋ก PyTorch๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์์ฝํ์๋ฉด PlaidML์ Intel์ ๋๊ตฌ์ด๋ฉฐ ๊ณํ์ ๋ง์ง๋ง ๋ถ๋ถ์์ PyTorch๊ฐ ์ญํ ์ ์ํํ ์๋๊ฐ ์์ ๊ฒ์ ๋๋ค. nGraph์ ํ์ฌ Intel GPU ๋ฐฑ์๋๋ OpenCL 2.1์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๊ทธ ์ค Intel๋ง ์ค์ ๊ตฌํ์ ํ๊ณ ์์ผ๋ฏ๋ก Intel์ ์์ํ๊ฒ ๊ธฐ๊ณ ํ์ต์ ๊ฐ์ ๋ณด๋ค๋ ์ค์ค๋ก๋ฅผ ์ํด ์กด์ฌํฉ๋๋ค. Intel์ด ๊ณ์ํด์ nGraph๋ฅผ ๊ฐ๋ฐํ ๋ ๋ง์ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ์ OpenCL, Metal ๋๋ Vulkan์ ๋ณ๋ ์์ค ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๊ณผ ํธํ๋์ง ์๋ ํ ํ๋ฆฟํ๋ ์ปค๋์ด ์์ผ๋ฏ๋ก OpenCL 2.1๋ง์ผ๋ก๋ GPU ๋ฐฑ์๋ ๊ธฐ๋ฐ์ ๊ณ์ ์ ์งํ ์ ์์ต๋๋ค. ์คํ ๋ชฉ์ ์ผ๋ก ๋ง. Intel์ ์ต์ข GPU ๋ฐฑ์๋๋ ์๋ง๋ SYCL 2.2๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ฑฐ๋ OpenMP์ ๊ฐ์ด ์์ ํ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฒ์ด๋ฉฐ ๊ณต๊ธ์ ์ฒด๋ณ ์๋ฃจ์ ์ ๊ฐ์ ธ์ฌ ์๋ ์์ต๋๋ค.
AMD์ ๊ฒฝ์ฐ ๋๊ฐ ์ ๊ฒฝ์ ์ฐ๋์? OpenCL์ ๊ทธ๋ค๊ณผ ๊ด๋ จ์ด ์์ผ๋ฉฐ ๋ง์นจ๋ด HIP์ ๋ํ ์์ ์ผ๋ก ์ผ๋ถ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค ...
ํด๋ํฐ, raspberry pi odroid ๋ฑ๊ณผ ๊ฐ์ ์ ๋จธ์ ๋ด๋ถ์ ๋ชจ๋ GPU๋ ์ด๋ป์ต๋๊น?
๊ทธ๋ค์ opencl์ ์ง์ํ์ง ์์ต๋๊น?
Google์ Android์ GPU์ tensorflow๋ฅผ ์ฝ์
ํ๋ ๋ฐ ์ ๊ฒฝ์ ์จ์ผ ํฉ๋๋ค.
์ ๊ฒฝ๋ง ๊ต์ก์ ๊ฐ์ฅ ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Nvidia GPU์์๋ง ์คํ๋๋ฉฐ Nvidia GPU๋ฅผ ์ ์ ๋ ๋น์ธ๊ฒ ๋ง๋ญ๋๋ค(์ฌ๋๊ณผ ํ์ฌ๊ฐ ์ ๋ฌธ์ ์ธ ์ ๊ฒฝ๋ง ๊ต์ก์ ์ํด์๋ง ๊ตฌ์
ํ๊ธฐ ๋๋ฌธ์). ๊ทธ๋ฌ๋ฉด Google์ ๋ ๋ง์ ๋์ ์๊ฒ ๋ฉ๋๋ค.
@Degerz ๋น์ ์ ์ด๋ ํ์ฑ์์ ์์ต๋๊น?
tf-CPU์ AMD GPU๋ฅผ ์ด๋ป๊ฒ ๋น๊ตํ ์ ์์ต๋๊น?
tf-CPU๋ณด๋ค ๋น ๋ฅธ plaidML x30์ AMD GPU
- Tensorflow์ CUDA ๋ฐฑ์๋์ ๋น๊ตํ์ฌ AMD์ OpenCL ๊ตฌํ์์ ๊ฐ๋ จํ๊ฒ ๋๋ฆฌ๊ฒ ์คํ๋๋ฏ๋ก ์ฌ์ฉํ๋ ์ด์ ์ ์ ๋ฐ ์ด์์ด ์์ต๋๋ค.
๋ด deepfakes ํ ์คํธ์์ OpenCL์ 20%๋ง ๋๋ ค์ง์ง๋ง ์ผ๋ถ ๋ฏธ๋ ๋คํธ์ํฌ์์๋ OpenCL์ด 20% ๋ ๋น ๋ฆ ๋๋ค.
๋ด ํ๋ก์ ํธ DeepFaceLab์๋ AMD์ ์ง์์ ๊ธฐ๋ค๋ ค์จ ๋ง์ ์ฌ์ฉ์๊ฐ ์์ต๋๋ค. ๋ฅํ์ดํฌ๊ฐ ๋ง์นจ๋ด AMD ์นด๋์์ ํ๋ จ๋ ์ ์๊ฒ ๋์์ ๋ ์ผ๋ง๋ ๋ง์ ์ฌ๋๋ค์ด ๊ธฐ๋ปํ์ต๋๊น?
๋ํ plaidML์ ๊ธฐ๋ณธ์ ์ผ๋ก AMD/IntelHD๋ฅผ ์ง์ํ๋ keras์ ์ ์ผํ ๋ฐฑ์๋์
๋๋ค.
keras์ฉ ์ AMD ๋ฐฑ์๋๊ฐ ๋ํ๋๋ฉด ๋ฌผ๋ก ๋ด ํ๋ก์ ํธ๊ฐ ํด๋น ๋ฐฑ์๋๋ก ์ ํ๋ฉ๋๋ค.
PyTorch์๋ ๋ฏธ๋๊ฐ ์์ต๋๋ค.
plaidML์์ ๋ฌด์์ ์ ์งํด์ผ ํฉ๋๊น? Ops๋ ์๋ ๋ฏธ๋ถ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌํ ๊ฒ์ด ์์ต๋๋ค.
์์ ์ํ ๊ต์์ ๊ฐ์ ์ฌ๋๋ง์ด ๊ตฌ์ฑํ ์ ์๋ ํ์ผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
๊ธฐ๊ณ ํ์ต์ ์ํ ๊ต์๋ค์ด ๋ฐ๋ช ํ ๊ฒ ์๋๋๊น?
@talregev ARM ๋๋ Broadcom์ ์ด๋ป์ต๋๊น? ์ ์๋ ์๋ง๋ ํ์ OpenCL ๊ตฌํ์ ๊ฐ์ง๊ณ ์๊ณ ํ์๋ OpenCL ๋๋ผ์ด๋ฒ๋ฅผ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ์ง๋ ์์ต๋๋ค! ํ๋์จ์ด ๊ณต๊ธ์ ์ฒด๋ฅผ ์ํ ์ ๋ฅํ ์ปดํจํ ์คํ์ ๋ง๋ค๊ณ ์ ์งํ๋ ๊ฒ์ Google์ ์ฑ ์์ด ์๋๋๋ค...
@iperov PlaidML ์ ๋ ์ด์ด๋ฅผ ์๋ฒ ๋ฉํ์ฌ ์ ๊ฒฝ๋ง์ ํ๋ จํ๋ ๊ฒ์ด ๊ณ ํต์ค๋ฝ๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์๋์? PlaidML์ ๋ํ DenseNet์ ์ ํฉํ์ง ์๊ฑฐ๋ ๊ณ์ฐ ๊ทธ๋ํ๊ฐ ์ ์ ์ด๋ฉฐ PlaidML์ด RNN๊ณผ๋ ์ ์๋ํ๋ค๋ ์ฌ์ค๊ณผ ๊ฐ์ ๋ง์ ๋ค๋ฅธ ์ ํ ์ฌํญ์ด ์์ต๋๊น?
๋น์ ์ ํ๋ก์ ํธ์ ๊ดํด์๋, ๊ทธ๊ฒ์ ๋ํด ๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. MIOpen์ด ์ ์คํธ๋ฆผ๋๋ฉด AMD๊ฐ ๊ณง ๋ค์ดํฐ๋ธ GPU ๋ฐฑ์๋๋ฅผ ์ ๊ณตํ ์์ ์ด๋ฏ๋ก Tensorflow์ ๊ฐ์ ๋ ๋์ ๊ฒ์ผ๋ก ์ด๋ํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ฑ๋ฅ๋ฉด์์ ๋จผ์ง. ์ด์จ๋ ์ธํ iGPU์ ๊ด์ฌ์ด ์๋ ์ฌ๋์ ๋๊ตฌ์ ๋๊น? ์ธํ ์ด ๋ฏธ๋์ ๊ฐ๋ณ ๊ทธ๋ํฝ ํ๋์จ์ด์์ ๊ณ ์ฑ๋ฅ ๋ฅ ๋ฌ๋์ ์ ๊ณตํ๋ ๋ฐ ์ง์ ์ผ๋ก ์ ๋ ํ๋ค๋ฉด ๋ค๋ฅธ ์ ํ(AMD/HIP ๋ฐ Nvidia/CUDA)์ด ์ด์ ์ ์ ๊ณตํ๋ ๊ฒ์ฒ๋ผ ๋จ์ผ ์์ค ์ต์ ์ ์ ๊ณตํ ๊ฒ์ ๋๋ค...
PyTorch์๋ ๋ฏธ๋๊ฐ ์์ต๋๋ค.
๋ง์ด ๋ถ๋ฌ์? PyTorch๋ PlaidML๋ณด๋ค โโ~10๋ฐฐ ๋ ์ธ๊ธฐ๊ฐ ์์ผ๋ฉฐ DL์ ์ต์ ๊ธฐ์ ์ PyTorch, ๋ค์ํ ๊ธฐ์ฌ์์์ ์ฝ๊ฒ ๊ตฌํ๋๋ฉฐ Intel์ด ๊ฑฐ์ ํ ๋ฌ ๋์ PlaidML์ ๊ธฐ์ฌํ์ง ์์ ๋์ Facebook์์ ์ ๊ทน์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.
plaidML์์ ๋ฌด์์ ์ ์งํด์ผ ํฉ๋๊น? Ops๋ ์๋ ๋ฏธ๋ถ ๊ฐ๋ฅํ๋ฉฐ ์ ์ง ๊ด๋ฆฌํ ๊ฒ์ด ์์ต๋๋ค.
๋ฐ๋ผ์ PlaidML์ ์์ผ๋ก ์๋ก์ด ์์ ์ฌํญ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ฐ์ง ์์์ผ ํ๋ค๋ ์ ์ ์๋ ค๋๋ฆฝ๋๋ค. ์ฝ๋ ๊ฐ์ ์ ๊ฐ์น๋ฅผ ๋ณด์ง ๋ชปํ๋ค๋ฉด PlaidML์ ๋์ ๋๋ ๊ฒฐํจ์ ์ธ์ ํ๋๋ก ์ค๋ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค...
๊ธฐ๊ณ ํ์ต์ ์ํ ๊ต์๋ค์ด ๋ฐ๋ช ํ ๊ฒ ์๋๋๊น?
๊ฐ๋ ์ฑ๋ณด๋ค ์ฐ์ํจ์ด ๋ถ๋ช ํ ์ ํธ๋๋ Tile์ ๊ฒฝ์ฐ ํนํ ๊ทธ๋ค์ด ๊ตฌ์ฑํ๋ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋ง์ ์ ์ฌ์ ๊ธฐ์ฌ์๊ฐ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋๋ ค์ํ๋ ์ด์ ๋ ์ ํ ์ด์ํ์ง ์์ต๋๋ค...
๋ง์์ฌ, STFUํ๊ณ ๋์ ์ผํฐ๋ก ๋์๊ฐ๊ธธ ๋ฐ๋๋๋ค. ํ์ผ ์ ์์ ๊ดํ ์ด๋ฉ์ผ์ ๋ฐ๋ ๊ฒ์ด ๊ฒฌ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํฐ์ผ์์ ๊ตฌ๋ ์ ์ทจ์ํด์ผ ํฉ๋๋ค. ๋ถํํ๋ ์ ์ง ๊ด๋ฆฌ์๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐํ์ง ์์ต๋๋ค.
@gunan @caisq @sanjoy ์ข ํด์ฃผ์ค ์ ์๋์?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Google์ด ๋ ์ CUDA๋ฅผ ์ํด OpenCL์ ๋ฒ๋ฆฐ ๊ฒ์ ์ด์ํฉ๋๋ค.