ݺߣ

ݺߣShare a Scribd company logo
pyOpenCL
2015/06/15
By SJ
(seongjun.kim.0312@gmail.com)
가난한 고학생들을 위해
인텔 GPU로 시작하는
저렴한 병렬처리
1
OpenCL?
• OpenCL은 애플이 제안하고 여러 반도체 업체가 동참한 병렬처리에 대한 산업 표
준 입니다.
• 그래픽 카드를 이용한 병렬처리(gpgpu)를 제공하고 있으며, nvidia의 cuda와 일종
의 경쟁 관계를 가지고 있습니다. (cuda가 더 편리하다는 평가 입니다. 그러나 업
체 독점 입니다.)
• 병렬처리는 요즈음 컴퓨터 과학과 로봇계의 핫 이슈인 머신러닝, 영상처리 등에 매
우 광범위하게 사용되며, 계산 시간을 줄이는데 적지 않은 역할을 하고 있습니다.
(약 30%의 속도 증가가 보고 됨)
2
누구를 위해?
• 이 짧은 슬라이드는 다음 독자를 대상으로 작성 되었습니다.
• Python과 c/c++ 문법에 대한 약간의 경험
• 병렬처리에 대한 뜨거운 관심
• 그러나 당장 좋은 그래픽 카드를 살 여유는 없음
• 윈도우즈 8 or 10 사용 중 (64bit를 상정함)
• 인텔의 내장형 그래픽 카드 사용 중 (hd3000~5500)
3
준비물
• 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)
4
intel runtime & anaconda
• 인텔의 런타임 환경을 설치 합니다.
• anaconda도 설치 합니다. 단, 전체 사용자를 위한 설치를 해 주어야 합니다. 그렇
지 않으면 path 설정을 수동으로 해야 하는 등의 번거로움이 발생 합니다.
• anaconda의 설치에 문제가 없으면 윈도우즈의 런처에서 ipython을 발견할 수 있
습니다. 또한, c:anaconda 폴더가 생성 되었음을 확인할 수 있습니다.
5
get_pip.py로 pip 설치
• 파일 탐색기를 열어 get_pip가 다운로드 된 디렉토리로 이동 합니다.
• 그 상태에서 shift+우클릭을 합니다.
• 여기서 명령 창 열기를 클릭 합니다.
• 열린 터미널에서 다음 명령을 입력 합니다.
• python get_pip
6
pyOpenCL 설치
• 이번엔 pyopencl-2015.1-cp27-none-win_amd64.whl가 다운로드 된 디렉토리로
이동 합니다. (보통은 C:UsersUSERNAMEDownloads 겠죠?)
• 그 상태에서 shift+우클릭을 합니다.
• 여기서 명령 창 열기를 클릭 합니다.
• 열린 터미널에서 다음 명령을 입력 합니다.
• python –m pip install pyopencl-2015.1-cp27-none-win_amd64.whl
7
pyOpenCV 설치
• 영상처리에 있어서 병렬처리는 상당히 매력적인 한 수 입니다. 사용하려는 코어를
위한 커널 코드와 메모리 할당은 약간은 귀찮고 어렵기도 하지만, 한번 익혀 두면
알고리즘의 성능 향상에 상당히 도움이 됩니다. 최근 발표된 opencv3은 opencl과
상당한 통합을 이룬바 있습니다.
• 자, 다운로드 했던 opencv-2.4.10.exe를 실행하면 어디에 압축을 풀지 물어 봅니다.
기억해 두시기 바랍니다.
• 압축이 모두 풀리면 어딘가에 opencv 폴더가 생성이 되어 있습니다.
• 탐색기를 이용해 ….opencvbuildpython2.7x64 로 이동 합니다.
• cv2.pyd 파일이 있을 것 입니다. 이 파일을 python의 site-package로 복사해 줍니
다. 예를들어, 제 경우에는…
• C:AnacondaLibsite-packages 입니다.
8
환경 변수 입력
• 물론 우리는 가난하니까 선택권이 별로 없지만, 친절한 OpenCL은 코드가 실행 될
때 마다 우리에게 자꾸 물어 옵니다. ‘너 cpu는 뭐 쓰고, gpu는 뭐 쓸래?’
• 고맙지만 사양 합니다. 고놈의 주디를 틀어 막기 위해 환경 변수를 미리 정해 놓기
로 합니다.
• 시스템 – 고급시스템설정 – 시스템 속성으로 갑니다.
• 환경 변수를 클릭하면 사용자 변수와 시스템 변수가 있습니다.
• 시스템 변수의 새로 만들기를 클릭 합니다.
• PYOPENCL_CTX와 0:1을 아래와 같이 입력 합니다.
9
확인!!
• 이제, 설치는 모두 끝났습니다. 잘 설치가 되었을까요?
• ipython을 실행 하고 다음과 같이 입력 해봅니다.
• import cv2
• import pyopencl
• 위의 두 라이브러리를 잘 로드 했다면 설치는 무사히 완료 된 것 입니다.
• 수고 하셨습니다.
10
뽀오나쓰 스테이지-
• 간단한 코드를 통해 코드 구조를 살펴 봅시다.
• 아래 코드는 python 코드가 컨텍스트를 만들고 작업 큐를 할당하며, 버퍼를 만들
어 커널 코드에 건네는 과정을 담고 있습니다. 이 코드에서 커널 코드는 메모리에
대한 작업은 하지 않습니다만 자신의 id를 확인하는 방법을 보여 줍니다.
11
좋은 예제들
• 현재 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)
• 그럼, 즐거운 병렬처리 되시기 바랍니다.
12

More Related Content

pyOpenCL 입문

  • 1. pyOpenCL 2015/06/15 By SJ (seongjun.kim.0312@gmail.com) 가난한 고학생들을 위해 인텔 GPU로 시작하는 저렴한 병렬처리 1
  • 2. OpenCL? • OpenCL은 애플이 제안하고 여러 반도체 업체가 동참한 병렬처리에 대한 산업 표 준 입니다. • 그래픽 카드를 이용한 병렬처리(gpgpu)를 제공하고 있으며, nvidia의 cuda와 일종 의 경쟁 관계를 가지고 있습니다. (cuda가 더 편리하다는 평가 입니다. 그러나 업 체 독점 입니다.) • 병렬처리는 요즈음 컴퓨터 과학과 로봇계의 핫 이슈인 머신러닝, 영상처리 등에 매 우 광범위하게 사용되며, 계산 시간을 줄이는데 적지 않은 역할을 하고 있습니다. (약 30%의 속도 증가가 보고 됨) 2
  • 3. 누구를 위해? • 이 짧은 슬라이드는 다음 독자를 대상으로 작성 되었습니다. • Python과 c/c++ 문법에 대한 약간의 경험 • 병렬처리에 대한 뜨거운 관심 • 그러나 당장 좋은 그래픽 카드를 살 여유는 없음 • 윈도우즈 8 or 10 사용 중 (64bit를 상정함) • 인텔의 내장형 그래픽 카드 사용 중 (hd3000~5500) 3
  • 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) 4
  • 5. intel runtime & anaconda • 인텔의 런타임 환경을 설치 합니다. • anaconda도 설치 합니다. 단, 전체 사용자를 위한 설치를 해 주어야 합니다. 그렇 지 않으면 path 설정을 수동으로 해야 하는 등의 번거로움이 발생 합니다. • anaconda의 설치에 문제가 없으면 윈도우즈의 런처에서 ipython을 발견할 수 있 습니다. 또한, c:anaconda 폴더가 생성 되었음을 확인할 수 있습니다. 5
  • 6. get_pip.py로 pip 설치 • 파일 탐색기를 열어 get_pip가 다운로드 된 디렉토리로 이동 합니다. • 그 상태에서 shift+우클릭을 합니다. • 여기서 명령 창 열기를 클릭 합니다. • 열린 터미널에서 다음 명령을 입력 합니다. • python get_pip 6
  • 7. pyOpenCL 설치 • 이번엔 pyopencl-2015.1-cp27-none-win_amd64.whl가 다운로드 된 디렉토리로 이동 합니다. (보통은 C:UsersUSERNAMEDownloads 겠죠?) • 그 상태에서 shift+우클릭을 합니다. • 여기서 명령 창 열기를 클릭 합니다. • 열린 터미널에서 다음 명령을 입력 합니다. • python –m pip install pyopencl-2015.1-cp27-none-win_amd64.whl 7
  • 8. pyOpenCV 설치 • 영상처리에 있어서 병렬처리는 상당히 매력적인 한 수 입니다. 사용하려는 코어를 위한 커널 코드와 메모리 할당은 약간은 귀찮고 어렵기도 하지만, 한번 익혀 두면 알고리즘의 성능 향상에 상당히 도움이 됩니다. 최근 발표된 opencv3은 opencl과 상당한 통합을 이룬바 있습니다. • 자, 다운로드 했던 opencv-2.4.10.exe를 실행하면 어디에 압축을 풀지 물어 봅니다. 기억해 두시기 바랍니다. • 압축이 모두 풀리면 어딘가에 opencv 폴더가 생성이 되어 있습니다. • 탐색기를 이용해 ….opencvbuildpython2.7x64 로 이동 합니다. • cv2.pyd 파일이 있을 것 입니다. 이 파일을 python의 site-package로 복사해 줍니 다. 예를들어, 제 경우에는… • C:AnacondaLibsite-packages 입니다. 8
  • 9. 환경 변수 입력 • 물론 우리는 가난하니까 선택권이 별로 없지만, 친절한 OpenCL은 코드가 실행 될 때 마다 우리에게 자꾸 물어 옵니다. ‘너 cpu는 뭐 쓰고, gpu는 뭐 쓸래?’ • 고맙지만 사양 합니다. 고놈의 주디를 틀어 막기 위해 환경 변수를 미리 정해 놓기 로 합니다. • 시스템 – 고급시스템설정 – 시스템 속성으로 갑니다. • 환경 변수를 클릭하면 사용자 변수와 시스템 변수가 있습니다. • 시스템 변수의 새로 만들기를 클릭 합니다. • PYOPENCL_CTX와 0:1을 아래와 같이 입력 합니다. 9
  • 10. 확인!! • 이제, 설치는 모두 끝났습니다. 잘 설치가 되었을까요? • ipython을 실행 하고 다음과 같이 입력 해봅니다. • import cv2 • import pyopencl • 위의 두 라이브러리를 잘 로드 했다면 설치는 무사히 완료 된 것 입니다. • 수고 하셨습니다. 10
  • 11. 뽀오나쓰 스테이지- • 간단한 코드를 통해 코드 구조를 살펴 봅시다. • 아래 코드는 python 코드가 컨텍스트를 만들고 작업 큐를 할당하며, 버퍼를 만들 어 커널 코드에 건네는 과정을 담고 있습니다. 이 코드에서 커널 코드는 메모리에 대한 작업은 하지 않습니다만 자신의 id를 확인하는 방법을 보여 줍니다. 11
  • 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) • 그럼, 즐거운 병렬처리 되시기 바랍니다. 12