이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인

1,824 views
1,431 views

Published on

이기종 멀티코어 기반의 OpenCV 응용사례 및 효율적인 어플리케이션 디자인 발표자료

2013.09.24 발표

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,824
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인

  1. 1. 이기종 멀티코어 기반의 OpenCV 응용 사례 및 효율적인 어플리케이션 디자인 송승화
  2. 2. 이기종 멀티코어 기술 동향 ETRI 연구 현황 OpenSEED 활동 (OpenCV 응용 사례)
  3. 3. 이기종 멀티코어 기술 동향
  4. 4. WHY? 지난 십 년간 컴퓨터에 근본적인 변화가 찾아왔다 기존의 혁신을 이끌 던 것은 단순한 성능 그 자체 사람들의 관심 대상은 와트당 성능으로 옮겨졌다
  5. 5. 실제로 산업계에서 만들어지는 컴퓨터들은 근원적으로 바뀌고 있으며 우리가 사용하는 마이크로프로세서들은 다수의 저전력 코어들로 구성되어 있다 프로세서 입력 프로세서 출력 > 소모 전력 입력 출력 프로세서
  6. 6. 멀티코어가 거스를 수 없는 대세 그렇다면 모두 같은 종류(동종)가 될 것인가? 다른 종류(이종)이 될 것인가? Intel 80-코어 테라급 프로세서 16 14 GFLOPS/Watt 12 10 8 6 NVIDIS GTX 280 97W Intel Core2 쿼드 프로세서(Q6700) 4 2 0 236W 95W 65nm 공정으로 생산된 세 개의 프로세서에 대한 최고 성능 및 전력 소비량 그래프
  7. 7. The Challenges with Computing Today Power consumption Performance Programmer Productivity Portability
  8. 8. 전력 효율 Reducing power consumption is increasingly critical across all segments of computing. 전력 소모를 줄이는 것은 모든 컴퓨팅 분야를 통틀어 아 주 중요한 이슈로 부각되고 있다
  9. 9. 성능 그래픽 처리, 다양하고 무거운 멀티미디어 데이터 처리, 음성인식, 얼굴 인식, 증강 현실, 제스처 인식 등 다양한 요구사항을 위한 기술 들이 개발되고 성능을 위해 각 목적에 맞는 다양한 프로세서들이 존재
  10. 10. 쉬운 S/W 개발 CPU, GPU, DSP 그리고 무지하게 많은 Accelerator들 다양한 프로그래밍 언어, 스타일, SW 설계 이슈들이 소프트웨어 개발에 걸림돌이 되어선 안 된다
  11. 11. 호환성 새로운 기술 적용을 위해, 또는 비용 문제로 Platform (H/W chipset)이 바뀌어도 기존에 개발한 소프트웨어의 재 사용성이 용이해야 한다
  12. 12. But current CPUs and GPUs have been designed as separate processing elements and do not work together efficiently… 현재의 CPU와 GPU는 프로세싱 코어들이 분리되어 설계 되어있고 프로세서 간의 협업이 효율적으로 이루어지지 않는다. Each has a separate memory space, requiring an application to explicitly copy data from CPU to GPU and then back again. 각각의 프로세서는 분리된 메모리 공간을 사용하며 이는 응용 단계에서 CPU와 GPU 간에 반복적인 데이터 복사가 발생하게 된다 출처 : AMD HSA Introduction page
  13. 13. HSA Heterogeneous System Architecture HSA creates an improved processor design that exposes the benefits and capabilities of mainstream programmable compute elements, working together seamlessly. HSA 는 프로그래밍이 가능한 프로세서들(compute elements) 의 장점을 살릴 수 있고 프로세서간의 매끄러운 협업이 가능한 개선된 프로세서 디자인을 제안한다 출처 : AMD HSA Introduction page
  14. 14. 이기종 멀티코어 지원을 위한 기술들
  15. 15. AP (Application Processor) 패러다임 변화로 이기종 시스템 아키텍처 연합 설립
  16. 16. 출처 : HSA Foundation Structured for CPU, GPU, DSP, and other accelerators Building heterogeneous compute software ecosystem Defining key interface Programmers can focus on their algorithms
  17. 17. 출처 : HSA Foundation OpenCL, C++AMP, Python, JS, etc.
  18. 18. 정리 HSA는 단지 이기종 프로세서를 하나의 SoC에 물리적으로 구현하는 것 뿐만 아니라 이기종 프로세서를 효율적으로 활 용하기 위한 Software Stack 및 개발 지원을 위한 노력이 중 요하다 복잡한 HSA를 지원하기 위해 HSA Foundation, Khronos 와 같은 비영리 단체들이 표준을 정의 하고 기술 배포를 위한 노력을 하고 있다
  19. 19. ETRI 연구 현황
  20. 20. 연구목표 자료 제공 : ETRI
  21. 21. 연구 배경 자료 제공 : ETRI
  22. 22. 연구 현황 자료 제공 : ETRI 고성능 자원관리 OS CPU-GPU 로드밸런서
  23. 23. 연구 현황 자료 제공 : ETRI OpenMP 병렬 라이브러리 지원 에너지 효율형 자원관리 OS
  24. 24. 연구 현황 자료 제공 : ETRI 이기종 멀티코어 지원 개발도구
  25. 25. 기술 개발 로드맵 자료 제공 : ETRI
  26. 26. 2차년도 연구 진행 상황 • OpenGL ES 지원 – 1차년도 mesa 기반의 software 방식 – H/W 지원 드라이버 제공 – OpenCL 지원 드라이버 제공 • 운영체제 기술연구 – 공평성과 반응성을 동시에 고려한 스케줄링 기법 – CPU-GPU간 통신 속도 개선 연구 – 발열을 고려한 에너지 스케줄링 기법
  27. 27. OpenSEED 활동 (OpenCV 응용 사례)
  28. 28. Open SEED = Open Lab ETRI 기술 소개 및 배포, 기술 지원, 그리고 Ecosystem 구축을 위한 오픈 커뮤니티
  29. 29. Kick Off 2013년 2월 테스트베드 팀 모집 및 Kick Off 현재 3개 테스트베드 팀 가동 중 OpenCV + OpenCL 응용 및 성능평가 로드밸런서 커널의 실시간성 성능 향상 커널 모듈화 및 개발 도구 연구
  30. 30. 고성능 자원관리 OS 기반 OpenCV 응용 사례 2013년 - 고성능 자원관리 OS 포팅 - OpenCV 라이브러리 포팅 - 테스트 어플리케이션 구현 및 성능 비교 2014년 - CPU-GPU 로드밸런서 OS 포팅 - OpenCV+OCL(OpenCL) 라이브러리 포팅 - 테스트 어플리케이션 구현 및 성능 비교
  31. 31. 고성능 자원관리 OS와 태스크 스케줄링 thread T … Legacy Application Process T T Legacy Application Process Application Process with OpenCV Legacy Application Process Task tree 고성능 자원관리 OS Distributed Weighted RoundRobin Scheduler 태스크 병렬성 최적화 Core1 Core2 Core3 Quad core processor Core4
  32. 32. 고성능 자원관리 OS와 태스크 스케줄링 자료 제공 : ETRI
  33. 33. 기존 연구 단계에서 성능평가는 로드밸런싱 성능 평가를 위 해 순수한 CPU 연산만 수행 메모리 접근과 I/O가 수시로 발생하는 실제 응용 단계에서의 성능은 어떨까? 어떻게 어플리케이션을 디자인 해야 멀티코어의 활용을 극 대화 할 수 있을까?
  34. 34. 어플리케이션 디자인 이슈 가설 1 실제로는 어떤 프로세서 자원을 어떤 태스크에 할당 할지는 예측이 어렵다 (일반적으로 스케줄러는 태스크들의 CPU Affinity(CPU pinning)를 강제 하지 않는다) Cache hit 확률을 높이기 위해 메모리 자원을 공유가 많은 태스크들은 같은 코어 에서 연산하는 것이 효율적일 것이다 어플리케이션 특성을 잘 아는 개발자가 시스템 상황에 맞게 태스크 병렬성을 적 절히 이용하는 것이 좋을 것 User Thread Core 1 Core 2 OpenCV Library OpenCV CORE Library User Thread ? Core 3 Core 4 shared memory Window Display Thread OpenCV High GUI Library Camera Capture Thread I/O I/O
  35. 35. 어플리케이션 디자인 이슈 가설 2 태스크들이 많아지면 여러 코어에 분산될 것이다 어플리케이션 특성에 따라 가능한 한 태스크들을 코어에 분산 시키는 것이 좋을지 아니면 최대한 분산을 줄이는 것이 좋을지 고민해 볼 문제 User Thread User Thread Core 1 User Thread User Thread User Thread User Thread Core 2 User Thread User Thread Core 3 Camera Capture Thread Window Display Thread Core 4
  36. 36. 어플리케이션 디자인 이슈 가설 3 메모리 Copy의 오버헤드는 CPU-CPU 간 copy 보다 CPU-GPU 간 copy에서 더 클 것이다. -> 이는 zero-copy의 활용으로 부하를 줄일 수 있다 Memory Memory copy L2 Cache GPU Memory copy Core 1 Core 2 Core 3 Core 4 offloading User Thread User Thread User Thread Window Display Thread User Thread Camera Capture Thread
  37. 37. 소프트웨어 디자인을 간단하게 태스크가 어떤 코어의 자원을 활용할 것이다 라는 예측은 위험 태스크의 수를 적절히 조율 (태스크 병렬성을 적절히 활용) 태스크 간 자원 공유를 최소화 하자 메모리 복사를 최소화 하자 향후 이기종 시스템 기반 오픈소스 어플리케이션 구현을 완료하고 성능 평가 비교 및 최적화를 하는 시도를 할 것
  38. 38. 타겟 시스템 Odroid Q (하드커널 제조) Exynos4412 (Quad core ARM Cortex-A9) Mali-400 GPU
  39. 39. 고성능 자원관리 OS 커널 배포
  40. 40. OpenCV 라이브러리 빌드 및 포팅 OpenCV 라이브러리 빌드 카메라 테스트 Odroid Q 보드 OpenCV 포팅
  41. 41. 향후 검토 가능한 또 다른 활동들 Homogeneous System Application App Library OS Layer HW Heterogeneous System OpenMP OpenCL 고성능 자원관리 OS CPU-GPU 로드밸런서 OS ARM processor NEON Instruction
  42. 42. CPU-GPU 로드밸런서 OS 기반 OpenCV 테스트 계획 Processor : Exynos5 Octa Cortex™-A15 1.6Ghz quad core and Cortex™-A7 quad core CPUs GPU: Imagination 사의 PowerVR SGX544MP3 GPU OS: CPU-GPU 로드밸런서 Linux kernel 기반 Ubuntu Library: OpenCL EP stack, OpenCV+OCL Exynos5 코어에서 OpenCL이 지원될 예정
  43. 43. CPU-GPU 로드밸런서 OS 기반 OpenCV 테스트 계획 OCL (OpenCV의 OpenCL 모듈) 라이브러리 빌드 및 포팅 GPU 기반 어플리케이션의 소모 전력 측정 이기종 멀티코어 지원 개발도구로 테스트 어플리케이션 구현 GPU 기반 어플리케이션의 성능 측정
  44. 44. Q&A
  45. 45. 감사합니다
  46. 46. 참조 AMD HSA : http://developer.amd.com/resources/heterogeneouscomputing/what-is-heterogeneous-system-architecture-hsa/ HAS Foundation : http://hsafoundation.com/ Khronos OpenCL : http://www.khronos.org/opencl/ Khronos Web CL : http://www.khronos.org/webcl/ Open SEED : http://opensw-seed.org/ 하드 커널 : http://www.hardkernel.com/ OpenCL 프로그래밍 가이드 – Aaftab Munshi 외 4명 저
  47. 47. Appendix • 고성능 자원관리 OS 커널 빌드하기 • 고성능 자원관리 OS 커널 포팅하기 • OpenCV 라이브러리 빌드하기
  48. 48. 개발 환경 고성능 자원관리 커널 빌드 및 포팅을 위한 개발 환경은 Ubuntu 12.04 이후 버 전을 권장한다. Arm gcc (hard floating) 크로스 컴파일 툴체인이 설치되어야 한다. 툴체인은 하드커널 에서 제공 (ubuntu에서 직접 설치해도 되지만 Odroid Q에 설치된 운영체제와의 호환성 때문에 gcc 버전은 4.7.x로 맞춰 줘야 한다)
  49. 49. 고성능 자원관리 OS 커널 빌드 커널 및 패치 다운로드 커널 패치 적용 ]$ patch –p1 < OS-HP.PATCH 커널 빌드 Arm gcc hardfloating 툴체인이 설치되어 있어야 한다 ]$ sudo export ARCH=arm ]$ sudo export CROSS_COMPILE=arm-linux-gnueabihf]$ sudo make mrproper ]$ sudo make clean ]$ sudo make odroidq_ubuntu_defconfig ]$ sudo make zImage 커널 모듈 빌드 ]$ sudo export MOD_INSTALL_PATH=../mymodules ]$ sudo make modules ]$ sudo make modules_install
  50. 50. 고성능 자원관리 OS 커널 빌드 Odroid Q 보드에 커널을 포팅 하기 위해서 fastboot 를 사용한다 ]$ sudo apt-get install android-tools-fastboot [타겟보드] 타겟 보드와 호스트 PC를 OTG 케이블로 연결 후, 타겟 보드의 디버거를 통해 부트로더 모드를 진입하고 Fastboot 모드로 들어간다 (하드커널 참조) ]# fastboot fastboot mode OTG cable connected [호스트 PC] 빌드된 커널 이미지(zImage 파일)을 fastboot로 포팅 ]$ sudo fastboot kernel ./zImage

×