이기종 멀티코어 임베디드 시스템 기반영상처리 애플리케이션
2015. 4. 27imageA
Embedded Software Developer Center
Agenda1. 개요2. 이기종 멀티코어 프레임워크3. 수행 내용4. 향후 과제
imageA 2
1. 개요imageA 3
프로젝트 정보• 프로젝트 명 : 임베디드 시스템 기반 이기종 멀티코어
영상처리 플랫폼 구축• 분야 : 이기종 멀티코어 /GPU/ 영상처리• 팀원– 공정표 : 시스템 , 알고리즘 설계 및 구현– 송승화 : 알고리즘 설계 및 구현– 정현석 : 시스템 및 애플리케이션 설계 및 구현
imageA 4
프로젝트 목표• GPU 를 연산장치로 사용할 수 있는 범용
임베디드 시스템의
imageA 5
프로젝트 목표• 이기종 멀티코어 영상처리 플랫폼을 바탕으로
imageA 6
프로젝트 목표• 데모 애플리케이션 개발을 통해
imageA 7
프로젝트 목표• 영상 분석 , 스트리밍 , 모바일 등으로의 응용 기반 확보
imageA 8
2. 이기종 멀티코어 프레임워크imageA 9
멀티코어 프로세서 발전과정
imageA 10
1die 1core x N
SMP
1die N core
1die SMP +ASMP
SingleCore
AMP
GPU
GPGPU 의 등장과 병렬 프로그래밍• 연산속도가 높은 GPU 를 다양하게 ( 범용적으로 )
활용하려는 요구에 따라 GPGPU(General Purpose Graphic Processing Unit) 등장
• GPGPU 를 활용한 병렬 처리는 영상 뿐 아니라 방대한 양의 데이터에 동일한 연산을 필요로 하는 모든 분야에서 유용
imageA 11
OpenCL 과 OpenCL C 언어의 등장• Apple 의 SW 아키텍트 Aaftab Munshi 가 OpenCL
프레임워크와 OpenCL C 언어를 제안 • OpenCL C 언어는 OpenCL 의 병렬 프로그래밍 언어• OpenCL 의 멀티플랫폼 지원 : GPGPU 확장만을 목표로
하지 않고 , 명시된 표준을 따르고 구동 가능한 드라이버를 지원하는 모든 종류의 프로세서에서 활용이 가능하도록 설계
imageA 12
OpenCL 플랫폼 모델
imageA 13
호스트(CPU core)
디바이스(CPU core)
디바이스(GPU)
디바이스계산 유닛계산 유닛계산 유닛계산 유닛
계산 유닛(Compute Unit)
ProcessingElement
Legacy program이여기서 수행된다 .int main(){ ...}
OpenCL C program이여기서 수행된다__kernel__ void func(){ ...}
단 하나의 호스트와 한 개 이상의 디바이스로 구성
OpenCL 아키텍처
imageA 14
Intel CPU디바이스 Nvidia GPU디바이스하드웨어계층 AMD GPU디바이스
디바이스드라이버계층Intel CPU디바이스 드라이버
(Opencl 1.2)
Nvidia GPU디바이스 드라이버(OpenCL 1.2)
AMD GPU디바이스 드라이버(OpenCL 2.0)
OpenCL계층Intel OpenCL Plat-
form(OpenCL 1.2)
NvidiaPlatform
(OpenCL 1.2)
AMDPlatform
(OpenCL 2.0)
표준 OpenCL Interface
IntelExtension
NvidiaExtension
AMDExtension
애플리케이션계층 OpenCL Application
OpenCV ocl
imageA 15
하드웨어OpenCL 플랫폼
cv::ocl::
OpenCV 응용프로그램OpenCV API
core highgui imgproc
기존 전통적인 모듈 cv::
ML objdetect
커널 코드 (*.cl)
ocl_utils ocl_wrappercl_runtime
OCL interface cl_context
3. 수행 내용imageA 16
구분• Open Source Hardware• OpenCV ocl PC Application• OpenCV ocl Embedded Application• GUI Application
imageA 17
Open Source Hardware• 개발 보드 : Hardkernel Odroid XU3
– Samsung Exynos5422 Cortex™-A15 2.0Ghz quad core and Cortex™-A7 quad core CPUs
– Mali-T628 MP6(OpenGL ES 3.0/2.0/1.1 and OpenCL 1.1 Full profile)
– Integrated power consumption monitoring tool
• OS : XUbuntu 14.04
imageA 18
Platform
imageA 19
OpenCV ocl PC Application• 얼굴 인식 알고리즘을 OpenCL 을 이용하여 GPU 에서 동작• 4 개의 동영상을 멀티 스레드로 동시에 얼굴 인식
알고리즘으로 처리하는 어플리케이션 샘플• CPU 로만 연산하는 경우와 GPU 로 오프로딩하여 연산하는
경우 자원 사용 확인
imageA 20
OpenCV ocl PC Application
imageA 21
• CPU only : CPU usage 97%
OpenCV ocl PC Application
imageA 22
• CPU+GPU : CPU usage 70% 소모전력↓
OpenCV oclEmbedded Application
imageA 23
• CLAHE + Gaussian Blur
OpenCV oclEmbedded Application
imageA 24
• CPU only : Total (A15+A7+GPU+MEM) 2.809W
OpenCV oclEmbedded Application
imageA 25
• CPU + GPU : Total 2.463W
OpenCV oclBenchmark Application
• GPU 개선 확인 가능한 벤치마크 데이터 표시
imageA 26
4. 향후 과제imageA 27
향후 과제1. ARM + Linux 기반 OpenCV ocl 이슈
1. ARM + Linux 기반에서 동작하도록 fix (OpenCV community 적극 참여 )
2. 또는 ocl 대신 OpenCL 코드를 OpenCV 에서 직접 사용하는 방법 검토 (OpenCV 3.0 custom OpenCL kernel 작성 )
2. Demo Algorithm : 1 번 결과에 따라 구현3. GUI Application : UI 및 UX 개선 , 알고리즘
프로파일링imageA 28
Demo Algorithm• Scene Change Detection
– 휴대폰 촬영 영상의 공유시 효율적 검색 및 내용 전달 (SNS 등 ) 을 위해 , GPU 를 활용 thumbnail 자동 생성
– 기존 scene change detection 알고리즘은 복잡한 방법을 많이 제시하고 있는데 일반 사용자 촬영 영상에는 적합하지 않음
imageA 29
Demo Algorithm• Scene Change Detection
– GPU 를 활용할 수 있는알고리즘 사용
imageA 30
imageA 31
Q&A