pyOpenCL 입문
-
Upload
seongjun-kim -
Category
Engineering
-
view
1.234 -
download
1
Transcript of pyOpenCL 입문
![Page 1: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/1.jpg)
1
pyOpenCL
2015/06/15
By SJ
가난한 고학생들을 위해인텔 GPU 로 시작하는
저렴한 병렬처리
![Page 2: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/2.jpg)
2
OpenCL?
• OpenCL 은 애플이 제안하고 여러 반도체 업체가 동참한 병렬처리에 대한 산업 표준 입니다 .
• 그래픽 카드를 이용한 병렬처리 (gpgpu) 를 제공하고 있으며 , nvidia 의 cuda 와 일종의 경쟁 관계를 가지고 있습니다 . (cuda 가 더 편리하다는 평가 입니다 . 그러나 업체 독점 입니다 .)
• 병렬처리는 요즈음 컴퓨터 과학과 로봇계의 핫 이슈인 머신러닝 , 영상처리 등에 매우 광범위하게 사용되며 , 계산 시간을 줄이는데 적지 않은 역할을 하고 있습니다 . ( 약 30%
의 속도 증가가 보고 됨 )
![Page 3: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/3.jpg)
3
누구를 위해 ?
• 이 짧은 슬라이드는 다음 독자를 대상으로 작성 되었습니다 .
• Python 과 c/c++ 문법에 대한 약간의 경험
• 병렬처리에 대한 뜨거운 관심
• 그러나 당장 좋은 그래픽 카드를 살 여유는 없음
• 윈도우즈 8 or 10 사용 중 (64bit 를 상정함 )
• 인텔의 내장형 그래픽 카드 사용 중 (hd3000~5500)
![Page 4: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/4.jpg)
4
준비물
• pyOpenCL 설치를 완료 하기 위해서 다음과 같은 파일들이 준비 되어야 합니다 .
• intel OpenCL Runtime: 무엇보다 중요한 런타임 입니다 . (
https://software.intel.com/en-us/articles/opencl-drivers, OpenCL™ Runtime 15.1 for
Intel® Core™ and Intel® Xeon® Processors for Windows* OS (64-bit & 32-bit))
• anaconda: python 과 numpy, matplolib 등의 유용한 라이브러리가 포함 됩니다 . (
http://continuum.io/downloads, 64bit, python 2.7)
• get_pip.py: python 패키지 관리자인 pip 를 설치하기 위한 스크립트 입니다 . (
https://pip.pypa.io/en/latest/installing.html)
• pyOpenCL wrapper: python 과 OpenCL 을 연결하기 위한 wrapper 입니다 . (
http://www.lfd.uci.edu/~gohlke/pythonlibs/,
pyopencl 2015.1 cp27 none win_amd64.whl‑ ‑ ‑ ‑ )
• OpenCV: python 과 OpenCV 를 연결하기 위한 wrapper 입니다 .
(http://sourceforge.net/.../opencv-2.4.10.exe/download)
![Page 5: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/5.jpg)
5
intel runtime & anaconda
• 인텔의 런타임 환경을 설치 합니다 .
• anaconda 도 설치 합니다 . 단 , 전체 사용자를 위한 설치를 해 주어야 합니다 . 그렇지 않으면 path 설정을 수동으로 해야 하는 등의 번거로움이 발생 합니다 .
• anaconda 의 설치에 문제가 없으면 윈도우즈의 런처에서 ipython 을 발견할 수 있습니다 .
또한 , c:\anaconda 폴더가 생성 되었음을 확인할 수 있습니다 .
![Page 6: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/6.jpg)
6
get_pip.py 로 pip 설치
• 파일 탐색기를 열어 get_pip 가 다운로드 된 디렉토리로 이동 합니다 .
• 그 상태에서 shift+ 우클릭을 합니다 .
• 여기서 명령 창 열기를 클릭 합니다 .
• 열린 터미널에서 다음 명령을 입력 합니다 .
• python get_pip
![Page 7: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/7.jpg)
7
pyOpenCL 설치
• 이번엔 pyopencl-2015.1-cp27-none-win_amd64.whl 가 다운로드 된 디렉토리로 이동 합니다 . ( 보통은 C:\Users\USERNAME\Downloads 겠죠 ?)
• 그 상태에서 shift+ 우클릭을 합니다 .
• 여기서 명령 창 열기를 클릭 합니다 .
• 열린 터미널에서 다음 명령을 입력 합니다 .
• python –m pip install pyopencl-2015.1-cp27-none-win_amd64.whl
![Page 8: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/8.jpg)
8
pyOpenCV 설치
• 영상처리에 있어서 병렬처리는 상당히 매력적인 한 수 입니다 . 사용하려는 코어를 위한 커널 코드와 메모리 할당은 약간은 귀찮고 어렵기도 하지만 , 한번 익혀 두면 알고리즘의 성능 향상에 상당히 도움이 됩니다 . 최근 발표된 opencv3 은 opencl 과 상당한 통합을 이룬바 있습니다 .
• 자 , 다운로드 했던 opencv-2.4.10.exe 를 실행하면 어디에 압축을 풀지 물어 봅니다 .
기억해 두시기 바랍니다 .
• 압축이 모두 풀리면 어딘가에 opencv 폴더가 생성이 되어 있습니다 .
• 탐색기를 이용해 … .\opencv\build\python\2.7\x64 로 이동 합니다 .
• cv2.pyd 파일이 있을 것 입니다 . 이 파일을 python 의 site-package 로 복사해 줍니다 .
예를들어 , 제 경우에는…
• C:\Anaconda\Lib\site-packages 입니다 .
![Page 9: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/9.jpg)
9
환경 변수 입력
• 물론 우리는 가난하니까 선택권이 별로 없지만 , 친절한 OpenCL 은 코드가 실행 될 때 마다 우리에게 자꾸 물어 옵니다 . ‘ 너 cpu 는 뭐 쓰고 , gpu 는 뭐 쓸래 ?’
• 고맙지만 사양 합니다 . 고놈의 주디를 틀어 막기 위해 환경 변수를 미리 정해 놓기로 합니다 .
• 시스템 – 고급시스템설정 – 시스템 속성으로 갑니다 .
• 환경 변수를 클릭하면 사용자 변수와 시스템 변수가 있습니다 .
• 시스템 변수의 새로 만들기를 클릭 합니다 .
• PYOPENCL_CTX 와 0:1 을 아래와 같이 입력 합니다 .
![Page 10: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/10.jpg)
10
확인 !!
• 이제 , 설치는 모두 끝났습니다 . 잘 설치가 되었을까요 ?
• ipython 을 실행 하고 다음과 같이 입력 해봅니다 .
• import cv2
• import pyopencl
• 위의 두 라이브러리를 잘 로드 했다면 설치는 무사히 완료 된 것 입니다 .
• 수고 하셨습니다 .
![Page 11: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/11.jpg)
11
뽀오나쓰 스테이지 -
• 간단한 코드를 통해 코드 구조를 살펴 봅시다 .
• 아래 코드는 python 코드가 컨텍스트를 만들고 작업 큐를 할당하며 , 버퍼를 만들어 커널 코드에 건네는 과정을 담고 있습니다 . 이 코드에서 커널 코드는 메모리에 대한 작업은 하지 않습니다만 자신의 id 를 확인하는 방법을 보여 줍니다 .
![Page 12: pyOpenCL 입문](https://reader036.fdocument.pub/reader036/viewer/2022082316/55cae54dbb61eb4c788b4720/html5/thumbnails/12.jpg)
12
좋은 예제들
• 현재 Apple 소속인 Aaftap Munshi 아저씨는 OpenGL 에도 많은 영향을 끼쳤습니다 .
그의 책인 OpenCL Programming Guide 는 입문서로 손색이 없습니다 . (http://
www.amazon.com/OpenCL-Programming-Guide-Aaftab-Munshi/dp/0321749642)
• 또한 , 이 책의 모든 코드는 깃헙에 모두 공개 되어 있습니다 . (https://
github.com/bgaster/opencl-book-samples)
• 그럼 , 즐거운 병렬처리 되시기 바랍니다 .