SlideShare a Scribd company logo
1 of 50
Download to read offline
이기종 멀티코어 기반의
OpenCV 응용 사례 및
효율적인 어플리케이션 디자인

송승화
이기종 멀티코어 기술 동향

ETRI 연구 현황

OpenSEED 활동
(OpenCV 응용 사례)
이기종 멀티코어 기술 동향
WHY?
지난 십 년간 컴퓨터에 근본적인 변화가 찾아왔다

기존의 혁신을 이끌 던 것은 단순한 성능 그 자체

사람들의 관심 대상은 와트당 성능으로 옮겨졌다
실제로 산업계에서 만들어지는 컴퓨터들은 근원적으로 바뀌고 있으며
우리가 사용하는 마이크로프로세서들은

다수의 저전력 코어들로 구성되어 있다

프로세서
입력

프로세서

출력

>

소모 전력

입력

출력
프로세서
멀티코어가 거스를 수 없는 대세
그렇다면
모두 같은 종류(동종)가 될 것인가? 다른 종류(이종)이 될 것인가?

Intel 80-코어 테라급 프로세서

16
14

GFLOPS/Watt

12
10
8
6

NVIDIS GTX 280

97W

Intel Core2 쿼드 프로세서(Q6700)

4
2
0

236W
95W
65nm 공정으로 생산된 세 개의 프로세서에 대한 최고 성능 및 전력 소비량 그래프
The Challenges with Computing Today

Power
consumption

Performance

Programmer
Productivity

Portability
전력 효율

Reducing power consumption is increasingly critical across all segments of
computing.

전력 소모를 줄이는 것은 모든 컴퓨팅 분야를 통틀어 아
주 중요한 이슈로 부각되고 있다
성능

그래픽 처리, 다양하고 무거운 멀티미디어 데이터 처리, 음성인식,
얼굴 인식, 증강 현실, 제스처 인식 등 다양한 요구사항을 위한 기술
들이 개발되고

성능을 위해 각 목적에 맞는 다양한 프로세서들이 존재
쉬운
S/W
개발

CPU, GPU, DSP 그리고 무지하게 많은 Accelerator들
다양한 프로그래밍 언어, 스타일, SW 설계 이슈들이

소프트웨어 개발에 걸림돌이 되어선 안 된다
호환성

새로운 기술 적용을 위해, 또는 비용 문제로
Platform (H/W chipset)이 바뀌어도

기존에 개발한 소프트웨어의 재 사용성이
용이해야 한다
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
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
이기종 멀티코어 지원을 위한 기술들
AP (Application Processor) 패러다임 변화로
이기종 시스템 아키텍처 연합 설립
출처 : HSA Foundation

Structured for CPU, GPU, DSP, and other accelerators
Building heterogeneous compute software ecosystem
Defining key interface
Programmers can focus on their algorithms
출처 : HSA Foundation

OpenCL, C++AMP, Python, JS, etc.
정리
HSA는 단지 이기종 프로세서를 하나의 SoC에 물리적으로
구현하는 것 뿐만 아니라 이기종 프로세서를 효율적으로 활
용하기 위한 Software Stack 및 개발 지원을 위한 노력이 중
요하다
복잡한 HSA를 지원하기 위해 HSA Foundation, Khronos 와
같은 비영리 단체들이 표준을 정의 하고 기술 배포를 위한
노력을 하고 있다
ETRI 연구 현황
연구목표
자료 제공 : ETRI
연구 배경
자료 제공 : ETRI
연구 현황

자료 제공 : ETRI

고성능 자원관리 OS

CPU-GPU 로드밸런서
연구 현황

자료 제공 : ETRI

OpenMP 병렬 라이브러리 지원

에너지 효율형 자원관리 OS
연구 현황

자료 제공 : ETRI

이기종 멀티코어 지원 개발도구
기술 개발 로드맵

자료 제공 : ETRI
2차년도 연구 진행 상황
• OpenGL ES 지원
– 1차년도 mesa 기반의 software 방식
– H/W 지원 드라이버 제공
– OpenCL 지원 드라이버 제공

• 운영체제 기술연구
– 공평성과 반응성을 동시에 고려한 스케줄링 기법
– CPU-GPU간 통신 속도 개선 연구
– 발열을 고려한 에너지 스케줄링 기법
OpenSEED 활동
(OpenCV 응용 사례)
Open SEED = Open Lab

ETRI 기술 소개 및 배포, 기술 지원,
그리고 Ecosystem 구축을 위한
오픈 커뮤니티
Kick Off
2013년 2월 테스트베드 팀 모집 및 Kick Off
현재 3개 테스트베드 팀 가동 중

OpenCV + OpenCL 응용 및 성능평가

로드밸런서 커널의 실시간성 성능 향상
커널 모듈화 및 개발 도구 연구
고성능 자원관리 OS 기반
OpenCV 응용 사례
2013년
- 고성능 자원관리 OS 포팅
- OpenCV 라이브러리 포팅
- 테스트 어플리케이션 구현 및 성능 비교
2014년
- CPU-GPU 로드밸런서 OS 포팅
- OpenCV+OCL(OpenCL) 라이브러리 포팅
- 테스트 어플리케이션 구현 및 성능 비교
고성능 자원관리 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
고성능 자원관리 OS와 태스크 스케줄링

자료 제공 : ETRI
기존 연구 단계에서 성능평가는 로드밸런싱 성능 평가를 위
해 순수한 CPU 연산만 수행

메모리 접근과 I/O가 수시로 발생하는 실제 응용 단계에서의
성능은 어떨까?

어떻게 어플리케이션을 디자인 해야 멀티코어의 활용을 극
대화 할 수 있을까?
어플리케이션 디자인 이슈
가설 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
어플리케이션 디자인 이슈
가설 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
어플리케이션 디자인 이슈
가설 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
소프트웨어 디자인을 간단하게
태스크가 어떤 코어의 자원을 활용할 것이다 라는 예측은 위험
태스크의 수를 적절히 조율 (태스크 병렬성을 적절히 활용)

태스크 간 자원 공유를 최소화 하자
메모리 복사를 최소화 하자

향후 이기종 시스템 기반 오픈소스 어플리케이션 구현을 완료하고 성능
평가 비교 및 최적화를 하는 시도를 할 것
타겟 시스템
Odroid Q (하드커널 제조)
Exynos4412 (Quad core ARM Cortex-A9)
Mali-400 GPU
고성능 자원관리 OS 커널 배포
OpenCV 라이브러리 빌드 및 포팅

OpenCV
라이브러리 빌드

카메라 테스트

Odroid Q 보드
OpenCV 포팅
향후 검토 가능한 또 다른 활동들
Homogeneous
System
Application

App

Library

OS Layer

HW

Heterogeneous
System

OpenMP

OpenCL

고성능 자원관리 OS

CPU-GPU
로드밸런서 OS

ARM processor NEON Instruction
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이 지원될 예정
CPU-GPU 로드밸런서 OS 기반
OpenCV 테스트 계획

OCL (OpenCV의 OpenCL 모듈)
라이브러리 빌드 및 포팅

GPU 기반 어플리케이션의
소모 전력 측정

이기종 멀티코어 지원 개발도구로
테스트 어플리케이션 구현

GPU 기반 어플리케이션의
성능 측정
Q&A
감사합니다
참조
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명 저
Appendix
• 고성능 자원관리 OS 커널 빌드하기
• 고성능 자원관리 OS 커널 포팅하기
• OpenCV 라이브러리 빌드하기
개발 환경
고성능 자원관리 커널 빌드 및 포팅을 위한 개발 환경은 Ubuntu 12.04 이후 버
전을 권장한다.
Arm gcc (hard floating) 크로스 컴파일 툴체인이 설치되어야 한다. 툴체인은
하드커널 에서 제공
(ubuntu에서 직접 설치해도 되지만 Odroid Q에 설치된 운영체제와의 호환성
때문에 gcc 버전은 4.7.x로 맞춰 줘야 한다)
고성능 자원관리 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
고성능 자원관리 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

More Related Content

What's hot

Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Ki-Hwan Kim
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍준혁 이
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요? 내훈 정
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성NAVER D2
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기Jaeseung Ha
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11OnGameServer
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화Jaeseung Ha
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010devCAT Studio, NEXON
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요chcbaram
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘Taewoo Lee
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Heungsub Lee
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDAyyooooon
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기Jaeseung Ha
 
242 naver-2
242 naver-2242 naver-2
242 naver-2NAVER D2
 

What's hot (20)

Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
Python의 계산성능 향상을 위해 Fortran, C, CUDA-C, OpenCL-C 코드들과 연동하기
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11
 
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
What is spark
What is sparkWhat is spark
What is spark
 
강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요강좌 02 ARM 펌웨어 개발 환경 개요
강좌 02 ARM 펌웨어 개발 환경 개요
 
GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘GPU를 위한 병렬 음원 방향 추정 알고리즘
GPU를 위한 병렬 음원 방향 추정 알고리즘
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDA
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
 
242 naver-2
242 naver-2242 naver-2
242 naver-2
 

Viewers also liked

스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안Smith Kim
 
모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법 모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법 마킨드(makiind)
 
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라cbs15min
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)훈주 윤
 
갱품앱 설명서
갱품앱 설명서갱품앱 설명서
갱품앱 설명서지은 김
 
트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획Mad Scientists
 
Ptsd 정신의학적치유
Ptsd 정신의학적치유Ptsd 정신의학적치유
Ptsd 정신의학적치유DuHun Jung
 
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터Choulhyouc Lee
 
어플리케이션프로모션사례
어플리케이션프로모션사례어플리케이션프로모션사례
어플리케이션프로모션사례Gori Communication
 
스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용지훈 정
 
Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발trustinlee
 
Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)Ho Hyun Lee
 
인터렉티브 디자인 3주차
인터렉티브 디자인 3주차인터렉티브 디자인 3주차
인터렉티브 디자인 3주차재현 조
 
2014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 201405162014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 20140516DuHun Jung
 
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현고양뉴스
 
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트mosaicnet
 
제일기획 이마트 기획서
제일기획 이마트 기획서제일기획 이마트 기획서
제일기획 이마트 기획서Yerim An
 
모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기Jae-hyung Park
 

Viewers also liked (20)

앱 제안서
앱 제안서앱 제안서
앱 제안서
 
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
스마트폰 기반 모바일뱅킹 서비스 동향 및 발전방안
 
모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법 모바일앱 시장현황 및 마케팅을 위한 25가지 방법
모바일앱 시장현황 및 마케팅을 위한 25가지 방법
 
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
세바시15분 문요한 정신과 전문의 - 스스로 행복을 허락하라
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)스마트 디바이스 트렌드 및 전망 (2013년)
스마트 디바이스 트렌드 및 전망 (2013년)
 
갱품앱 설명서
갱품앱 설명서갱품앱 설명서
갱품앱 설명서
 
트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획트라우마틱 메모리(Traumatic Memory) 제작 기획
트라우마틱 메모리(Traumatic Memory) 제작 기획
 
Ptsd 정신의학적치유
Ptsd 정신의학적치유Ptsd 정신의학적치유
Ptsd 정신의학적치유
 
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
가장 쉬운 안드로이드 앱 개발 방법 앱인벤터
 
어플리케이션프로모션사례
어플리케이션프로모션사례어플리케이션프로모션사례
어플리케이션프로모션사례
 
스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용스마트 디바이스의 이해와 활용
스마트 디바이스의 이해와 활용
 
Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발Apache MINA를 사용한 네트워크 어플리케이션 개발
Apache MINA를 사용한 네트워크 어플리케이션 개발
 
Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)Smart cloth ( 스마트 의류)
Smart cloth ( 스마트 의류)
 
인터렉티브 디자인 3주차
인터렉티브 디자인 3주차인터렉티브 디자인 3주차
인터렉티브 디자인 3주차
 
2014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 201405162014 협성대 인사연 춘계학술회의 프로그램 20140516
2014 협성대 인사연 춘계학술회의 프로그램 20140516
 
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
신세계, 스마트 기술을 통한 패션매장의 스마트 쇼핑 구현
 
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
사례로 본 모바일 웹/앱 기획, 제작 과정 및 포인트
 
제일기획 이마트 기획서
제일기획 이마트 기획서제일기획 이마트 기획서
제일기획 이마트 기획서
 
모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기모바일 서비스 기획 시작하기
모바일 서비스 기획 시작하기
 

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

SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람OpenStack Korea Community
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablup Inc.
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIJeongkyu Shin
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsJuseok Kim
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅NAVER D2
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Jeongkyu Shin
 
[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)NAVER D2
 
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)Covenant Ko
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316기한 김
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) VMware Tanzu Korea
 
Foss open sorucesw_6902
Foss open sorucesw_6902Foss open sorucesw_6902
Foss open sorucesw_6902승우 백
 
한컴MDS_국산 RTOS NEOS 제품 및 적용 사례
한컴MDS_국산 RTOS NEOS 제품 및 적용 사례한컴MDS_국산 RTOS NEOS 제품 및 적용 사례
한컴MDS_국산 RTOS NEOS 제품 및 적용 사례HANCOM MDS
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AITommy Lee
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼ibmrep
 
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing SystemOpenStack Korea Community
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack SolutionNalee Jang
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍흥배 최
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInho Kang
 
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례Yousun Jeong
 

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

SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
[OpenStack Days Korea 2016] Track2 - 데이터센터에 부는 오픈 소스 하드웨어 바람
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
 
System Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOpsSystem Infra와 Recovery 그리고 DevOps
System Infra와 Recovery 그리고 DevOps
 
[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅[232] 성능어디까지쥐어짜봤니 송태웅
[232] 성능어디까지쥐어짜봤니 송태웅
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
 
[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)
 
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
왜 개발자는 컴퓨터공학을 공부해야 할까? (비전공자는 컴퓨터공학 과목에서 무엇을 알아야할까?)
 
OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316OPEN_POWER8_SESSION_20150316
OPEN_POWER8_SESSION_20150316
 
Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS) Pivotal 101세미나 발표자료 (PAS,PKS)
Pivotal 101세미나 발표자료 (PAS,PKS)
 
Foss open sorucesw_6902
Foss open sorucesw_6902Foss open sorucesw_6902
Foss open sorucesw_6902
 
한컴MDS_국산 RTOS NEOS 제품 및 적용 사례
한컴MDS_국산 RTOS NEOS 제품 및 적용 사례한컴MDS_국산 RTOS NEOS 제품 및 적용 사례
한컴MDS_국산 RTOS NEOS 제품 및 적용 사례
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-AI
 
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼Ibm과 nvidia가 제안하는 딥러닝 플랫폼
Ibm과 nvidia가 제안하는 딥러닝 플랫폼
 
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
[OpenStack Days Korea 2016] Track4 - 해외 사례로 보는 OpenStack Billing System
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution
 
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
Enterprise 환경에서의 오픈소스 기반 아키텍처 적용 사례
 

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

  • 1. 이기종 멀티코어 기반의 OpenCV 응용 사례 및 효율적인 어플리케이션 디자인 송승화
  • 2. 이기종 멀티코어 기술 동향 ETRI 연구 현황 OpenSEED 활동 (OpenCV 응용 사례)
  • 4. WHY? 지난 십 년간 컴퓨터에 근본적인 변화가 찾아왔다 기존의 혁신을 이끌 던 것은 단순한 성능 그 자체 사람들의 관심 대상은 와트당 성능으로 옮겨졌다
  • 5. 실제로 산업계에서 만들어지는 컴퓨터들은 근원적으로 바뀌고 있으며 우리가 사용하는 마이크로프로세서들은 다수의 저전력 코어들로 구성되어 있다 프로세서 입력 프로세서 출력 > 소모 전력 입력 출력 프로세서
  • 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. The Challenges with Computing Today Power consumption Performance Programmer Productivity Portability
  • 8. 전력 효율 Reducing power consumption is increasingly critical across all segments of computing. 전력 소모를 줄이는 것은 모든 컴퓨팅 분야를 통틀어 아 주 중요한 이슈로 부각되고 있다
  • 9. 성능 그래픽 처리, 다양하고 무거운 멀티미디어 데이터 처리, 음성인식, 얼굴 인식, 증강 현실, 제스처 인식 등 다양한 요구사항을 위한 기술 들이 개발되고 성능을 위해 각 목적에 맞는 다양한 프로세서들이 존재
  • 10. 쉬운 S/W 개발 CPU, GPU, DSP 그리고 무지하게 많은 Accelerator들 다양한 프로그래밍 언어, 스타일, SW 설계 이슈들이 소프트웨어 개발에 걸림돌이 되어선 안 된다
  • 11. 호환성 새로운 기술 적용을 위해, 또는 비용 문제로 Platform (H/W chipset)이 바뀌어도 기존에 개발한 소프트웨어의 재 사용성이 용이해야 한다
  • 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. 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
  • 15. AP (Application Processor) 패러다임 변화로 이기종 시스템 아키텍처 연합 설립
  • 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. 출처 : HSA Foundation OpenCL, C++AMP, Python, JS, etc.
  • 18. 정리 HSA는 단지 이기종 프로세서를 하나의 SoC에 물리적으로 구현하는 것 뿐만 아니라 이기종 프로세서를 효율적으로 활 용하기 위한 Software Stack 및 개발 지원을 위한 노력이 중 요하다 복잡한 HSA를 지원하기 위해 HSA Foundation, Khronos 와 같은 비영리 단체들이 표준을 정의 하고 기술 배포를 위한 노력을 하고 있다
  • 22. 연구 현황 자료 제공 : ETRI 고성능 자원관리 OS CPU-GPU 로드밸런서
  • 23. 연구 현황 자료 제공 : ETRI OpenMP 병렬 라이브러리 지원 에너지 효율형 자원관리 OS
  • 24. 연구 현황 자료 제공 : ETRI 이기종 멀티코어 지원 개발도구
  • 26. 2차년도 연구 진행 상황 • OpenGL ES 지원 – 1차년도 mesa 기반의 software 방식 – H/W 지원 드라이버 제공 – OpenCL 지원 드라이버 제공 • 운영체제 기술연구 – 공평성과 반응성을 동시에 고려한 스케줄링 기법 – CPU-GPU간 통신 속도 개선 연구 – 발열을 고려한 에너지 스케줄링 기법
  • 28. Open SEED = Open Lab ETRI 기술 소개 및 배포, 기술 지원, 그리고 Ecosystem 구축을 위한 오픈 커뮤니티
  • 29. Kick Off 2013년 2월 테스트베드 팀 모집 및 Kick Off 현재 3개 테스트베드 팀 가동 중 OpenCV + OpenCL 응용 및 성능평가 로드밸런서 커널의 실시간성 성능 향상 커널 모듈화 및 개발 도구 연구
  • 30. 고성능 자원관리 OS 기반 OpenCV 응용 사례 2013년 - 고성능 자원관리 OS 포팅 - OpenCV 라이브러리 포팅 - 테스트 어플리케이션 구현 및 성능 비교 2014년 - CPU-GPU 로드밸런서 OS 포팅 - OpenCV+OCL(OpenCL) 라이브러리 포팅 - 테스트 어플리케이션 구현 및 성능 비교
  • 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. 고성능 자원관리 OS와 태스크 스케줄링 자료 제공 : ETRI
  • 33. 기존 연구 단계에서 성능평가는 로드밸런싱 성능 평가를 위 해 순수한 CPU 연산만 수행 메모리 접근과 I/O가 수시로 발생하는 실제 응용 단계에서의 성능은 어떨까? 어떻게 어플리케이션을 디자인 해야 멀티코어의 활용을 극 대화 할 수 있을까?
  • 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. 어플리케이션 디자인 이슈 가설 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. 어플리케이션 디자인 이슈 가설 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. 소프트웨어 디자인을 간단하게 태스크가 어떤 코어의 자원을 활용할 것이다 라는 예측은 위험 태스크의 수를 적절히 조율 (태스크 병렬성을 적절히 활용) 태스크 간 자원 공유를 최소화 하자 메모리 복사를 최소화 하자 향후 이기종 시스템 기반 오픈소스 어플리케이션 구현을 완료하고 성능 평가 비교 및 최적화를 하는 시도를 할 것
  • 38. 타겟 시스템 Odroid Q (하드커널 제조) Exynos4412 (Quad core ARM Cortex-A9) Mali-400 GPU
  • 39. 고성능 자원관리 OS 커널 배포
  • 40. OpenCV 라이브러리 빌드 및 포팅 OpenCV 라이브러리 빌드 카메라 테스트 Odroid Q 보드 OpenCV 포팅
  • 41. 향후 검토 가능한 또 다른 활동들 Homogeneous System Application App Library OS Layer HW Heterogeneous System OpenMP OpenCL 고성능 자원관리 OS CPU-GPU 로드밸런서 OS ARM processor NEON Instruction
  • 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. CPU-GPU 로드밸런서 OS 기반 OpenCV 테스트 계획 OCL (OpenCV의 OpenCL 모듈) 라이브러리 빌드 및 포팅 GPU 기반 어플리케이션의 소모 전력 측정 이기종 멀티코어 지원 개발도구로 테스트 어플리케이션 구현 GPU 기반 어플리케이션의 성능 측정
  • 44. Q&A
  • 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. Appendix • 고성능 자원관리 OS 커널 빌드하기 • 고성능 자원관리 OS 커널 포팅하기 • OpenCV 라이브러리 빌드하기
  • 48. 개발 환경 고성능 자원관리 커널 빌드 및 포팅을 위한 개발 환경은 Ubuntu 12.04 이후 버 전을 권장한다. Arm gcc (hard floating) 크로스 컴파일 툴체인이 설치되어야 한다. 툴체인은 하드커널 에서 제공 (ubuntu에서 직접 설치해도 되지만 Odroid Q에 설치된 운영체제와의 호환성 때문에 gcc 버전은 4.7.x로 맞춰 줘야 한다)
  • 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. 고성능 자원관리 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