KR20110116553A - 미디어 프로세싱 애플리케이션 실행 장치 및 방법 - Google Patents

미디어 프로세싱 애플리케이션 실행 장치 및 방법 Download PDF

Info

Publication number
KR20110116553A
KR20110116553A KR1020100036022A KR20100036022A KR20110116553A KR 20110116553 A KR20110116553 A KR 20110116553A KR 1020100036022 A KR1020100036022 A KR 1020100036022A KR 20100036022 A KR20100036022 A KR 20100036022A KR 20110116553 A KR20110116553 A KR 20110116553A
Authority
KR
South Korea
Prior art keywords
media processing
configuration
kernel
computational
computational kernel
Prior art date
Application number
KR1020100036022A
Other languages
English (en)
Inventor
조승모
송효정
이승학
임동우
장오영
서성종
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020100036022A priority Critical patent/KR20110116553A/ko
Priority to US12/982,098 priority patent/US20110258413A1/en
Publication of KR20110116553A publication Critical patent/KR20110116553A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Abstract

이종 멀티 코어 시스템에서 미디어 프로세싱 애플리케이의 수행 성능을 향상시키기 위한 미디어 프로세싱 애플리케이션 실행 장치 및 방법이 제공된다. 애플리케이션 실행 장치는, 미디어 프로세싱 애플리케이션을 구성하는, 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널에 대하여, 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정하는 구성 결정부와, 결정된 구성에 따라서, 미디어 프로세싱 애플리케이션을 실행하는 이종의 멀티 코어를 포함하는 실행부를 포함한다.

Description

미디어 프로세싱 애플리케이션 실행 장치 및 방법{Apparatus for executing media processing application and method thereof}
멀티 코어 시스템에 관한 것으로, 더욱 상세하게는, 이종 멀티 코어 시스템에서 미디어 프로세싱 애플리케이션을 수행시키는 장치 및 방법에 관한 것이다.
미디어 프레임워크는 미디어 프로세싱 애플리케이션을 만들 때, 그 구성요소인 소프트웨어 모듈들이 어떻게 결합되고 동작하는지를 정의하는 명세(specification)이다. 미디어 프레임 워크는 예를 들어, OpenMax, G streamer 등을 들 수 있다. 미디어 프레임 워크는 미디어 프로세싱 애플리케이션이 미디어 프로세싱 컴포넌트들을 이용한 파이프라인으로 구성될 때, 각 미디어 프로세싱 컴포넌트들이 갖추어야 할 인터페이스를 정의한다. 여기에서, 각 미디어 프로세싱 컴포넌트는 CPU(cental processing unit), DSP(digital signal processor), GPU(graphic processing unit) 등의 코어에서 수행될 수 있다.
그러나, 각 미디어 프로세싱 컴포넌트는 통상적으로 하나의 대상 코어를 가정하고 대상 코어에 최적화되도록 개발되며, 따라서 미리 정해진 대상 코어에서만 수행된다. 따라서 미디어 프로세싱 컴포넌트들은 미리 정해진 대상 코어 이외의 다른 코어나 향후에 개발될 코어에서는 수행될 수 없다.
이종 멀티 코어 시스템에서 미디어 프로세싱 애플리케이션의 수행 성능을 향상시키기 위한 미디어 프로세싱 애플리케이션 실행 장치 및 방법이 제공된다.
일 측면에 따른 애플리케이션 실행 장치는, 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널에 대하여, 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정하는 구성 결정부와, 결정된 구성에 따라서, 미디어 프로세싱 애플리케이션을 실행하는 이종의 멀티 코어를 포함하는 실행부를 포함한다.
구성 결정부는, 컴퓨테이셔널 커널에 대하여 정의된 컴퓨테이셔널 커널이 수행가능한 디바이스 정보를 이용하여, 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어를 포함하는 구성의 조합에 대한 가능한 조합을 추출하고, 가능한 조합 중에서 최적의 조합을 선택할 수 있다.
구성 결정부는, 추출된 조합에서, 미디어 프로세싱 애플리케이션에 설정된, 컴퓨테이셔널 커널에 대하여 디바이스 정보들 간의 선호 순위를 나타내는 정보를 이용하여, 각 컴퓨테이셔널 커널이 가장 선호하는 디바이스 정보에 매칭되는 코어의 조합부터 시작하여 조합을 변경하면서, 샘플링 데이터를 가지고 성능을 시험할 수 있다.
구성 결정부는, 처음에 성능 시험을 시작한 구성에서 컴퓨테이셔널 커널 수행 시간이 가장 긴 컴퓨테이셔널 커널의 대상 코어부터 차례로 2번째로 선호되는 코어로 변경하면서 성능을 측정할 수 있다.
각각의 미디어 프로세싱 컴포넌트들에 대하여, 하나의 미디어 프로세싱 컴포넌트와 다른 미디어 프로세싱 컴포넌트를 연결하는 포트, 각 미디어 프로세싱 컴포넌트들의 수행을 위하여 구성된 컴퓨테이셔널 커널, 컴퓨테이셔널 커널 간의 통신을 위한 인터널 버퍼, 포트, 컴퓨테이셔널 커널 및 인터널 버퍼 사이의 데이터 흐름의 방향이 정의될 수 있다.
미디어 프로세싱 애플리케이션은 이종 멀티 코어 프로세서를 위한 언어를 사용하여 작성될 수 있다.
다른 측면에 따른, 미디어 프로세싱 애플리케이션 실행 방법은, 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널에 대하여, 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정하는 단계와, 결정된 구성에 따라서, 미디어 프로세싱 애플리케이션을 실행하는 단계를 포함한다.
다양한 종류의 이종 멀티 코어 시스템에서 미디어 프로세싱 애플리케이션의 수행 성능 및 이동성(portability)을 향상시킬 수 있다.
도 1은 이종의 멀티 코어를 포함하는 미디어 프로세싱 애플리케이션 실행 장치의 구성의 일 예를 나타내는 도면이다.
도 2는 이종 멀티 코어에서 수행될 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 대해 정의되는 그래프의 일 예를 나타내는 도면이다.
도 3은 이종 멀티 코어에서 수행될 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 대해 정의되는 그래프의 다른 예를 나타내는 도면이다.
도 4는 도 1의 장치에서 미디어 프로세싱 애플리케이션을 실행하는 방법의 일 예를 나타내는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 이종 멀티 코어 프로세서를 포함하는 미디어 프로세싱 애플리케이션 실행 장치의 구성의 일 예를 나타내는 도면이다.
애플리케이션 실행 장치(100)는 구성 결정부(110), 실행부(120) 및 메모리(130)를 포함한다. 애플리케이션 실행 장치(100)는 PDA, PMP, TV, MP3 플레이어, 모바일 폰 등 다양한 전자 장치일 수 있다.
애플리케이션 실행 장치(100)는 미디어 프로세싱 애플리케이션을 실행한다. 미디어 프로세싱 애플리케이션은 OpenCL(Open Computung Language), CUDA(Compute Unified Device Architecture)와 같은 이종 멀티 코어 프로세서를 위한 언어를 사용하여 작성될 수 있다. 미디어 프로세싱 애플리케이션은 미디어 프로세싱 컴포넌트들로 구성될 수 있다. 미디어 프로세싱 컴포넌트는 미디어 프로세싱 애플리케이션을 구성하는 각각의 기능 블록을 나타낸다. 예를 들어, 미디어 프로세싱 컴포넌트들은 소스(sources), 싱크(sinks), 코덱(codecs), 필터(filters), 스플리터(splitters), 믹서(mixers) 등과 같은 데이터 처리 모듈에 대응할 수 있다.
미디어 프로세싱 애플리케이션이 이종의 멀티 코어를 포함하는 시스템에 설치되어 이용될 때, 미디어 프로세싱 컴포넌트를 구성하는 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정하기 위하여 각 미디어 프로세싱 컴포넌트들은 다음과 같이 정의될 수 있다.
각각의 미디어 프로세싱 컴포넌트들에 대하여, 하나의 미디어 프로세싱 컴포넌트와 다른 미디어 프로세싱 컴포넌트를 연결하는 포트, 각 미디어 프로세싱 컴포넌트들의 수행을 위하여 구성된 컴퓨테이셔널 커널, 컴퓨테이셔널 커널 간의 통신을 위한 인터널 버퍼, 포트, 컴퓨테이셔널 커널 및 인터널 버퍼 사이의 데이터 흐름의 방향이 정의될 수 있다. 미디어 프로세싱 컴포넌트는 그래프로 나타낼 수 있으며, 그래프에서, 포트, 컴퓨테이셔널 커널 및 인터널 버퍼는 노드로 표시되고, 데이터 흐름 방향은 노드 사이의 에지로 표시될 수 있다.
컴퓨테이셔널 커널(computational kernel)은 소프트웨어 중에서 수행 시간이 많이 걸리는 특정 부분, 즉, 핵심(kernel)적인 부분의 코드를 의미하며, 운영체제의 커널과 구별된다. 예를 들어, 미디어 프로세싱 컴포넌트가 비디오 코덱인 경우, 미디어 프로세싱 컴포넌트에는 움직임 보상(motion compensation) 커널, 디블록(deblock) 커널, CABAC(Context-adaptive binary arithmetic coding) 커널 등이 포함될 수 있다.
컴퓨테이셔널 커널에 대하여, 각 컴퓨테이셔널 커널이 수행가능한 적어도 하나의 디바이스 정보가 정의될 수 있다. 또한, 각 컴퓨테이셔널 커널에 대하여, 각 컴퓨테이셔널 커널이 수행가능한 디바이스 정보가 복수 개인 경우, 디바이스 정보들 간의 선호 순위를 나타내는 정보가 정의될 수 있다. 여기에서, 디바이스 정보는 컴퓨테이셔널 커널이 수행될 코어에 대한 장치의 타입 정보를 나타낼 수 있다. 예를 들어, 커널 1에 대하여, 1순위의 선호 디바이스는 CPU이고, 2순위의 선호 디바이스는 GPU이고, 3순위의 선호 디바이스는 DSP로 정의될 수 있다.
포트에 대하여, 포트가 입력 타입인지 출력 타입인지를 나타내는 포트의 타입 및 버퍼의 사이즈가 정의될 수 있다. 버퍼의 사이즈는 포트를 통하여 데이터가 전송될 때 이용되는 버퍼의 사이즈를 의미한다. 인터널 버퍼에 대하여, 버퍼 사이즈가 정의될 수 있다.
구성 결정부(110)는 적어도 하나의 미디어 프로세싱 컴포넌트로 구성된 미디어 프로세싱 애플리케이션을 수행하기 위하여, 미디어 프로세싱 컴포넌트를 구성하는 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정한다. 즉, 구성은, <컴퓨테이셔널 커널, 코어 타입>의 조합일 수 있다. 구성 결정부(110)는 미디어 프로세싱 애플리케이션이 이종의 멀티 코어에 대하여 최적의 동작이 수행되도록 하는 구성을 결정할 수 있다.
실행부(120)는 결정된 구성에 따라서, 미디어 프로세싱 애플리케이션을 실행한다. 실행부(120)는 시스템 내에 존재하는 정보 처리를 위한 칩인 프로세서일 수 있다. 실행부(120)는 하나의 칩 위에 복수 개의 코어(121, 122, 123, 124)를 포함하는 멀티 코어(multicore) 프로세서일 수 있다.
코어는 하나의 프로세서 내에 존재하는 여러 기능을 수행하는 처리 모듈을 나타낸다. 코어에는, 기능 및 특성에 따라서, CPU, GPU, DSP 등의 여러 타입이 존재한다. 일 예로, 코어는 인텔 x86, ARM Cortex-A8, TI DSP C64x, IT(Imagination Technology) SGX530 등이 있다. 도 1에는 4개의 코어가 도시되어 있으나, 코어의 개수에 제한되지 않는다.
또한, 실행부(120)는 2가지 이상의 다른 특성을 가지는 코어가 하나의 칩 위에 집적된 이종 멀티 코어 프로세서(Heterogeneous multicore processor)는 프로세서일 수 있다. 따라서, 실행부(120)에 포함되는 멀티 코어는 최대 처리가능한 벡터 크기, 전력 소모량, 컨텍스트 스위칭 시간(context swtiching time) 등이 서로 다를 수 있다. 예를 들어, 프로세서 TI OMAP3의 경우 ARM Cortex-A8, TI DSP C64x 및 IT SGX530을 포함한다.
이하에서, 구성 결정부(110)의 상세 구성 및 동작에 대하여 설명한다. 도 1에 도시된 바와 같이, 구성 결정부(110)는, 구성 추출부(112) 및 구성 선택부(114)를 포함할 수 있다.
구성 추출부(112)는 각 미디어 프로세싱 컴포넌트마다, 각 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널들에 대하여, 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행가능한 디바이스 정보를 이용하여, 각 컴퓨테이셔널 커널들이 수행될 디바이스의 조합에 대한 가능한 조합을 추출한다.
이를 위해, 우선, 구성 추출부(112)는 미디어 프로세싱 애플리케이션이 설치되어 수행될 애플리케이션 실행 장치(100)의 실행부(120)가 어떤 코어들로 이루어졌는지 확인할 수 있다. 구성 추출부(112)는 실행부(120)에서 디바이스 정보를 관리하는 코어로 API를 이용하여 실행부(120)의 장치 정보를 얻을 수 있다. OpenCL의 경우, 구성 추출부(112)는 clGetPlatformInfo() 또는 clGetDeviceInfo()와 같은 API를 이용하여 실행부(120)의 디바이스 정보를 얻을 수 있다. 예를 들어, 구성 추출부(112)는 API를 이용하여 실행부(120)가 2개의 CPU, 1개의 GPU 및 1개의 DSP로 구성됨을 인식할 수 있다.
구성 선택부(114)는 구성 추출부(112)에 의해 추출된 조합 중에서 최적의 조합을 선택할 수 있다. 구성 선택부(114)는, 가능한 조합 중에서, 선호 순위를 나타내는 정보를 이용하여, 각 컴퓨테이셔널 커널이 가장 선호하는 디바이스 정보에 매칭되는 코어의 조합부터 조합을 변경하면서 성능을 시험할 수 있다.
최적의 구성을 결정하기 위한 동작은 미디어 프로세싱 애플리케이션이 애플리케이션을 실행할 단말 장치에 설치될 때 튜닝 과정에서 수행될 수 있다.
구성 선택부(114)는 각 컴퓨테이셔널 커널이 수행가능한 대상 코어들을 대상으로 미디어 프로세싱 애플리케이션에 대하여 컴파일링을 수행할 수 있다. 구성 선택부(114)는 컴파일링된 커널들에 대한 성능 측정을 통하여, 최적의 구성을 결정할 수 있다. 이때, 구성 선택부(114)는 수행가능한 모든 구성에 대한 경우를 추출하고, 미리 설정된 규칙에 따라서 추출된 경우에 대한 성능 측정을 위한 구성의 우선 순위를 결정할 수 있다. 그런 다음, 구성 선택부(114)는 성능 측정을 위한 구성의 우선 순위에 따라 우선순위가 높은 구성부터 샘플링 데이터를 가지고 성능을 측정할 수 있다.
여기에서, 성능 측정을 위한 구성의 우선 순위를 결정하기 위하여 미리 설정된 규칙은 다음과 같을 수 있다.
구성 선택부(114)는 미디어 프로세싱 컴포넌트 개발자에 의해 지정한 코어에 우선적으로 컴퓨테이셔널 커널들을 할당하여, 각각의 수행시간을 측정할 수 있다. 구성 선택부(114)는 모든 경우에 대하여 샘플 데이터를 이용하여 성능을 측정할 수 있으며, 우선 순위가 높은 몇 가지 경우에 대해서만 성능을 측정할 수 있다.
구성 선택부(114)는 하나의 컴퓨테이셔널 커널이 수행하는 한 코어가 여러 개 있을 때, 각 컴퓨테이셔널 커널에 대하여 선호 순위가 가장 높은 구성에 최우선 순위를 부여하여 성능을 측정할 수 있다. 구성 선택부(114)는 처음에 성능 시험을 시작한 구성에서 컴퓨테이셔널 커널 수행 시간이 가장 긴 컴퓨테이셔널 커널의 대상 코어부터 차례로 2번째로 선호되는 코어로 변경하면서 성능을 측정할 수 있다. 또한, 구성 선택부(114)는 미디어 프로세싱 컴포넌트의 그래프상에서 인접한 컴퓨테이셔널 커널들을 되도록 같은 코어상에서 수행하도록 할 수 있다.
구성 선택부(114)는 이와 같은 여러 가지 규칙을 하나 이상 조합하여 여러 가능한 경우의 수의 구성에 대하여 우선 순위를 결정할 수 있다.
예를 들어, 구성 선택부(114)는 1개의 컴퓨테이셔널 커널의 대상 코어를 바꾸면서 다음과 같이 성능을 측정할 수 있다.
우선, 구성 선택부(114)는 컴퓨테이셔널 커널들을 수행시간 순으로 정렬하고, 수행시간이 긴 컴퓨테이셔널 커널부터 수행시간이 가장 짧은 컴퓨테이셔널 커널까지, 각각 컴퓨테이셔널 커널이 2번째로 선호하는 대상 코어로 변경하면서 각 구성에 대한 성능을 측정할 수 있다. 그런 다음, 구성 선택부(114)는 수행시간이 긴 컴퓨테이셔널 커널부터 수행시간이 가장 짧은 컴퓨테이셔널 커널까지, 각각 컴퓨테이셔널 커널이 3번째로 선호하는 대상 코어로 변경하면서 각 구성에 대한 성능을 측정할 수 있다.
또한, 구성 선택부(114)는 2개의 컴퓨테이셔널 커널의 대상 코어를 바꾸면서 다음과 같이 성능을 측정할 수 있다. 우선, 구성 선택부(114)는 2개의 컴퓨테이셔널 커널의 쌍(예를 들어, <컴퓨테이셔널 커널 1, 컴퓨테이셔널 커널 2>)의 조합을 만들고, 그 수행시간의 합이 큰 순서에 따라 정렬할 수 있다. 구성 선택부(114)는 각 2개의 컴퓨테이셔널 커널의 쌍에 대해서, 수행 시간의 합이 가장 긴 컴퓨테이셔널 커널의 쌍부터 그 컴퓨테이셔널 커널들이 2번째로 선호하는 대상 코어로 구성을 변경하면서, 각 구성에 대한 성능을 측정할 수 있다. 그런 다음, 구성 선택부(114)는 각각 컴퓨테이셔널 커널의 쌍이 3번째로 선호하는 대상 코어로 변경하면서 각 구성에 대한 성능을 측정할 수 있다.
구성 선택부(114)는 샘플 데이터의 수행 시간이 짧을 수록 높은 것으로 성능을 결정할 수 있다. 예를 들어, 미디어 프로세싱 컴포넌트가 영상 프레임을 처리하는 인코더인 경우, 성능은 시간당 프레임 처리량으로 측정할 수 있다.
구성 선택부(114)가 최적의 성능을 내는 구성을 결정하면, 결정된 구성에 따라 미디어 프로세싱 애플리케이션이 실행부(120)에서 실행될 수 있다. 이때, 미디어 프로세싱 컴포넌트의 그래프의 에지를 이용하여 컴퓨테이셔널 커널 간 의존관계(dependency)를 결정할 수 있다. 따라서, 실행부(120)는 구성 선택부(114)에서 생성한 미디어 프로세싱 컴포넌트에 대한 정의 내용 중에서 데이터 흐름 정보를 이용하여 실행될 컴퓨테이셔널 커널에 대한 토폴로지컬 오더를 정할 수 있다. 예를 들어, 토폴로지컬 오더는 컴퓨테이셔널 커널 1, 컴퓨테이셔널 커널 2, 컴퓨테이셔널 커널 3 및 컴퓨테이셔널 커널 4의 순으로 실행되는 것으로 결정될 수 있다.
그런 다음, 실행부(120)는 미디어 프로세싱 컴포넌트들에 대한 입력 포트 및 출력 포트로 송수신되는 데이터를 위한 버퍼 및 인트라 버퍼의 기능을 위한 메모리 오브젝트들을 메모리(130)에 할당할 수 있다. 실행부(120)는 결정된 구성에 따라 각 컴퓨테이셔널 커널들을 각 코어에 컴파일하여 수행할 수 있다.
미디어 프로세싱 애플리케이션이 OpenMax 기반 애플리케이션인 경우, 미디어 프로세싱 컴포넌트의 실행을 개시하기 위한 EmptyThisBuffer(), FillThisBuffer()와 같은 API를 이용할 수 있다. EmptyThisBuffer()는 미디어 프로세싱 컴포넌트의 입력 포트에 수행할 데이터를 담은 버퍼를 전달하여 처리하게 하는 방식으로 수행된다. FillThisBuffer()는 미디어 프로세싱 컴포넌트의 출력 포트에 결과를 저장할 버퍼를 전달하여 처리하게 만드는 방식이다.
이와 같이, 다양한 종류의 이종 멀티 코어 시스템에서 효율적으로 수행될 수 있도록 정의된 미디어 프로세싱 컴포넌트로 구성되는 미디어 프로세싱 애플리케이션을 이용하여, 미디어 프로세싱 애플리케이션의 수행 성능 및 이동성(portability)을 향상시킬 수 있다.
도 2는 이종 멀티 코어에서 수행될 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 대해 정의되는 그래프의 일 예를 나타내는 도면이다.
도 2의 그래프에서, K1(210)은 컴퓨테이셔널 커널-1을 나타내고, K2(220)는 컴퓨테이셔널 커널-2를 나타내고, K3(230)은 컴퓨테이셔널 커널-3을 나타내고, K4(240)는 컴퓨테이셔널 커널-4를 나타낸다. 예를 들어, K1(210)에 대해서는 수행가능한 디바이스 정보가 CPU 및 GPU로 정의될 수 있으며, 가장 선호되는 코어는 CPU라고 정의될 수 있다.
P1(212)는 K1(210)의 입력 포트를 나타내고, P2(214)는 K2(220)의 입력 포트를 나타낸다. 예를 들어, P1(212)에 대하여 버퍼 타입이 입력 타입이고, 버퍼 사이즈가 10kB인 경우, K1(210)이 수행되기 위해서는 10kB에 해당하는 데이터가 P1(212)을 통해 입력되어 있어야 함을 의미한다. P3(222)는 K3(230)의 출력 포트를 나타내고, P4(224)는 K4(240)의 출력 포트를 나타낸다.
IB1(232)는 K1(210)과 K3(230) 사이의 인터널 버퍼를 나타내고, IB2(234)는 K2(214)와 K3(230) 사이의 인터널 버퍼를 나타내고, IB3(236)은 K2(214)와 K4(224) 사이의 인터널 버퍼를 나타낸다.
도 1의 실행부(120)에서는, 도 2에 도시된 그래프에서의 토폴로지컬 순서 즉, K1(210), K2(220), K3(230), K4(240)의 순서로 컴퓨테이셔널 커널들이 각 코어로 인큐(enqueue)되어, 컴퓨테이셔널 커널들이 각 코어로 로딩되어 수행될 수 있다.
도 3은 이종 멀티 코어에서 수행될 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 대해 정의되는 그래프의 다른 예를 나타내는 도면이다.
하나의 미디어 프로세싱 애플리케이션이 미디어 프로세싱 컴포넌트 1(310; MP-comp 1) 및 미디어 프로세싱 컴포넌트 2(320; MP-comp 2)로 구성되고, MP-comp 1(310) 및 MP-comp 2(320)는 도 3에 도시된 바와 같이 표현된다고 가정한다. 이와 같은 그래프는 좀 더 상세하게 아래와 같이 나타낼 수 있다.
MP-comp 1(310):
포트 A1(in) → 컴퓨테이셔널 커널-1(CPU, GPU) → 인터널 버퍼(10KB) → 컴퓨테이셔널 커널-2(CPU) → 포트 A2(out)
MP-comp 2(320):
포트 B1(in) → 컴퓨테이셔널 커널-3(CPU, DSP) → 인터널 버퍼(20KB) → 컴퓨테이셔널 커널-4(GPU, CPU) → 포트 B2(out)
()안의 내용은 노드의 속성을 나타내고, → 는 데이터 흐름 방향을 나타낸다.
이와 같은 미디어 프로세싱 애플리케이션을 수행하기 위한 구성은 여러가지 경우의 수를 가질 수 있다. 도 1의 구성 결정부(110)는 이러한 여러가지 경우의 수의 구성 중에서 최적의 구성을 결정하기 위한 동작을 수행할 수 있다.
도 3에서 {<컴퓨테이셔널 커널-1, CPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, CPU>, <컴퓨테이셔널 커널-4, GPU>}이 미디어 프로세싱 컴포넌트 개발자에 의해 가장 선호하는 것으로 미리 설정된 구성이라고 가정한다. 구성 결정부(110)는 컴퓨테이셔널 커널들에 대하여 가장 선호하는 것으로 설정된 코어에 우선적으로 샘플링 데이터를 이용하여 성능을 측정할 수 있다. 이 경우, 컴퓨테이셔널 커널-1(210), 컴퓨테이셔널 커널-2(220), 컴퓨테이셔널 커널-3(230), 및 컴퓨테이셔널 커널-4(240)의 수행 시간이 각각 40, 30, 20 및 10으로 측정되었다고 가정한다.
구성 결정부(110)의 구성 선택부(114)는 컴퓨테이셔널 커널들을 수행시간 순으로 정렬하고, 수행시간이 긴 컴퓨테이셔널 커널부터 수행시간이 가장 짧은 컴퓨테이셔널 커널까지, 각각 컴퓨테이셔널 커널이 2번째로 선호하는 대상 코어로 변경하면서 각 구성에 대한 성능을 측정할 수 있다. 따라서, 구성 결정부(210)는 수행 시간이 가장 긴 컴퓨테이셔널 커널-1(210)부터 수행시간이 가장 짧은 컴퓨테이셔널 커널-4(240)까지 차례로 2번째로 선호하는 코어로 변경하면서 성능을 측정할 수 있다. 이와 같은 동작은 선호 정보에 있는 코어들에 대하여 모두 성능 측정이 끝날 때까지 반복될 수 있다.
따라서, 구성 결정부(110)는 다음의 순서 1, 2, 및 3의 순서대로 구성의 성능을 측정할 수 있다.
1. 가장 선호하는 구성
{<컴퓨테이셔널 커널-1, CPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, CPU>, <컴퓨테이셔널 커널-4, GPU>}
2. 1개의 컴퓨테이셔널 커널을 변경하는 경우
{<컴퓨테이셔널 커널-1, GPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, CPU>, <컴퓨테이셔널 커널-4, GPU>} →
{<컴퓨테이셔널 커널-1, CPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, DSP>, <컴퓨테이셔널 커널-4, GPU>} →
{<컴퓨테이셔널 커널-1, CPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, CPU>, <컴퓨테이셔널 커널-4, CPU>}
또한, 구성 선택부(114)는 각 2개의 컴퓨테이셔널 커널의 쌍에 대해서, 수행 시간의 합이 긴 컴퓨테이셔널 커널의 쌍부터 수행 시간이 가장 짧은 컴퓨테이셔널 커널의 쌍까지 그 컴퓨테이셔널 커널들이 2번째로 선호하는 대상 코어로 구성을 변경하면서, 각 구성에 대한 성능을 측정할 수 있다. 예를 들어, 2개의 컴퓨테이셔널 커널 쌍에 대하여 코어를 변경하면서 성능을 측정하는 경우, 아래의 3.과 같은 순서로 성능이 측정될 수 있다.
3, 2개의 컴퓨테이셔널 커널을 변경하는 경우
{<컴퓨테이셔널 커널-1, GPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, DSP>, <컴퓨테이셔널 커널-4, GPU>} →
{<컴퓨테이셔널 커널-1, GPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, CPU>, <컴퓨테이셔널 커널-4, CPU>} →
{<컴퓨테이셔널 커널-1, CPU>, <컴퓨테이셔널 커널-2, CPU>, <컴퓨테이셔널 커널-3, DSP>, <컴퓨테이셔널 커널-4, CPU>}
이러한 방식으로 수행하면, 최대 Nd^Nk 만큼의 구성에 대한 경우의 수가 존재할 수 있다. 여기에서, Nd는 애플리케이션 실행 장치(100)에 있는 코어의 수이고, Nk는 하나의 미디어 프로세싱 애플리케이션 내의 모든 컴퓨테이셔널 커널의 수이다.
도 4는 도 1의 장치에서 애플리케이션을 실행하는 방법의 일 예를 나타내는 도면이다.
애플리케이션 실행 장치(100)는 미디어 프로세싱 컴포넌트를 구성하는 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정한다(410). 애플리케이션 실행 장치(100)는 적어도 하나의 미디어 프로세싱 컴포넌트로 구성된 미디어 프로세싱 애플리케이션이, 이종의 멀티 코어에 대하여 최적의 동작이 수행되도록 하는 구성을 결정할 수 있다.
애플리케이션 실행 장치(100)는 각 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널들에 대하여, 컴퓨테이셔널 커널이 수행가능한 디바이스 정보를 이용하여, 컴퓨테이셔널 커널 및 컴퓨테이셔널 커널이 수행될 코어를 포함하는 구성의 조합에 대한 가능한 조합을 추출하고, 가능한 조합 중에서 최적의 조합을 선택할 수 있다. 이때, 애플리케이션 실행 장치(100)는 구성 결정부는, 가능한 조합에서, 선호 순위를 나타내는 정보를 이용하여, 각 컴퓨테이셔널 커널이 가장 선호하는 디바이스 정보에 매칭되는 코어의 조합부터 시작하여 조합을 변경하면서 성능을 시험할 수 있다.
애플리케이션 실행 장치(100)는 결정된 구성에 따라서, 미디어 프로세싱 애플리케이션을 이종의 멀티 코어에서 실행한다(420).
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.

Claims (10)

  1. 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널에 대하여, 상기 컴퓨테이셔널 커널 및 상기 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정하는 구성 결정부; 및
    상기 결정된 구성에 따라서, 상기 미디어 프로세싱 애플리케이션을 실행하는 이종의 멀티 코어를 포함하는 실행부를 포함하는 미디어 프로세싱 애플리케이션 실행 장치.
  2. 제1항에 있어서,
    상기 구성 결정부는, 상기 컴퓨테이셔널 커널에 대하여 정의된 상기 컴퓨테이셔널 커널이 수행가능한 디바이스 정보를 이용하여, 컴퓨테이셔널 커널 및 상기 컴퓨테이셔널 커널이 수행될 코어를 포함하는 구성의 조합에 대한 가능한 조합을 추출하고, 상기 가능한 조합 중에서 최적의 조합을 선택하는 미디어 프로세싱 애플리케이션 실행 장치.
  3. 제1항에 있어서,
    상기 구성 결정부는, 상기 추출된 조합에서, 상기 미디어 프로세싱 애플리케이션에 설정된, 상기 컴퓨테이셔널 커널에 대하여 상기 디바이스 정보들 간의 선호 순위를 나타내는 정보를 이용하여, 각 컴퓨테이셔널 커널이 가장 선호하는 디바이스 정보에 매칭되는 코어의 조합부터 시작하여 조합을 변경하면서, 샘플링 데이터를 가지고 성능을 시험하는 미디어 프로세싱 애플리케이션 실행 장치.
  4. 제3항에 있어서,
    상기 구성 결정부는, 처음에 성능 시험을 시작한 구성에서 컴퓨테이셔널 커널 수행 시간이 가장 긴 컴퓨테이셔널 커널의 대상 코어부터 차례로 2번째로 선호되는 코어로 변경하면서 성능을 측정하는 미디어 애플리케이션 실행 장치.
  5. 제1항에 있어서,
    각각의 미디어 프로세싱 컴포넌트들에 대하여, 하나의 미디어 프로세싱 컴포넌트와 다른 미디어 프로세싱 컴포넌트를 연결하는 포트, 각 미디어 프로세싱 컴포넌트들의 수행을 위하여 구성된 컴퓨테이셔널 커널, 컴퓨테이셔널 커널 간의 통신을 위한 인터널 버퍼, 상기 포트, 상기 컴퓨테이셔널 커널 및 상기 인터널 버퍼 사이의 데이터 흐름의 방향이 정의되는 미디어 프로세싱 애플리케이션 실행 장치.
  6. 제1항에 있어서,
    상기 미디어 프로세싱 애플리케이션은 이종 멀티 코어 프로세서를 위한 언어를 사용하여 작성된 미디어 프로세싱 애플리케이션 실행 장치.
  7. 미디어 프로세싱 애플리케이션을 구성하는 미디어 프로세싱 컴포넌트에 속하는 컴퓨테이셔널 커널에 대하여, 상기 컴퓨테이셔널 커널 및 상기 컴퓨테이셔널 커널이 수행될 코어의 조합에 관한 구성을 결정하는 단계; 및
    상기 결정된 구성에 따라서, 상기 미디어 프로세싱 애플리케이션을 실행하는 단계를 포함하는 미디어 프로세싱 애플리케이션 실행 방법.
  8. 제7항에 있어서,
    상기 구성을 결정하는 단계는,
    상기 컴퓨테이셔널 커널에 대하여 정의된 상기 컴퓨테이셔널 커널이 수행가능한 디바이스 정보를 이용하여, 컴퓨테이셔널 커널 및 상기 컴퓨테이셔널 커널이 수행될 코어를 포함하는 구성의 조합에 대한 가능한 조합을 추출하는 단계; 및
    상기 가능한 조합 중에서 최적의 조합을 결정하는 단계를 포함하는 미디어 프로세싱 애플리케이션 실행 방법.
  9. 제7항에 있어서,
    상기 구성을 결정하는 단계는,
    상기 추출된 조합에서, 상기 미디어 프로세싱 애플리케이션에 설정된, 상기 컴퓨테이셔널 커널에 대하여 상기 디바이스 정보들 간의 선호 순위를 나타내는 정보를 이용하여, 각 컴퓨테이셔널 커널이 가장 선호하는 디바이스 정보에 매칭되는 코어의 조합부터 시작하여 조합을 변경하면서, 샘플링 데이터를 가지고 성능을 시험하는 미디어 프로세싱 애플리케이션 실행 방법.
  10. 제9항에 있어서,
    상기 구성을 결정하는 단계는,
    처음에 성능 시험을 시작한 구성에서 컴퓨테이셔널 커널 수행 시간이 가장 긴 컴퓨테이셔널 커널의 대상 코어부터 차례로 2번째로 선호되는 코어로 변경하면서 성능을 측정하는 미디어 애플리케이션 실행 방법.
KR1020100036022A 2010-04-19 2010-04-19 미디어 프로세싱 애플리케이션 실행 장치 및 방법 KR20110116553A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100036022A KR20110116553A (ko) 2010-04-19 2010-04-19 미디어 프로세싱 애플리케이션 실행 장치 및 방법
US12/982,098 US20110258413A1 (en) 2010-04-19 2010-12-30 Apparatus and method for executing media processing applications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100036022A KR20110116553A (ko) 2010-04-19 2010-04-19 미디어 프로세싱 애플리케이션 실행 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20110116553A true KR20110116553A (ko) 2011-10-26

Family

ID=44789091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100036022A KR20110116553A (ko) 2010-04-19 2010-04-19 미디어 프로세싱 애플리케이션 실행 장치 및 방법

Country Status (2)

Country Link
US (1) US20110258413A1 (ko)
KR (1) KR20110116553A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130091368A (ko) * 2012-02-06 2013-08-19 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707314B2 (en) * 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
US9594594B2 (en) * 2012-10-18 2017-03-14 Advanced Micro Devices, Inc. Media hardware resource allocation
US9910683B2 (en) * 2014-03-28 2018-03-06 Lenovo (Singapore) Pte. Ltd. Dynamic application optimization
US9942631B2 (en) * 2015-09-25 2018-04-10 Intel Corporation Out-of-band platform tuning and configuration
US10152243B2 (en) * 2016-09-15 2018-12-11 Qualcomm Incorporated Managing data flow in heterogeneous computing
JP7100154B6 (ja) * 2018-04-20 2022-09-30 オッポ広東移動通信有限公司 プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体
US11188348B2 (en) * 2018-08-31 2021-11-30 International Business Machines Corporation Hybrid computing device selection analysis

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513057B1 (en) * 1996-10-28 2003-01-28 Unisys Corporation Heterogeneous symmetric multi-processing system
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US7694107B2 (en) * 2005-08-18 2010-04-06 Hewlett-Packard Development Company, L.P. Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units
US8261270B2 (en) * 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
ITTO20060500A1 (it) * 2006-07-06 2008-01-07 St Microelectronics Srl Sistema per l'elaborazione distribuita di contenuti multimediali in reti di comunicazione, in particolare di tipo domestico, relativo procedimento e prodotto informatico
US7685409B2 (en) * 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US8286196B2 (en) * 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US20090288092A1 (en) * 2008-05-15 2009-11-19 Hiroaki Yamaoka Systems and Methods for Improving the Reliability of a Multi-Core Processor
US8683471B2 (en) * 2008-10-02 2014-03-25 Mindspeed Technologies, Inc. Highly distributed parallel processing on multi-core device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130091368A (ko) * 2012-02-06 2013-08-19 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치

Also Published As

Publication number Publication date
US20110258413A1 (en) 2011-10-20

Similar Documents

Publication Publication Date Title
KR20110116553A (ko) 미디어 프로세싱 애플리케이션 실행 장치 및 방법
US9684944B2 (en) Graph-based application programming interface architectures with node-based destination-source mapping for enhanced image processing parallelism
US9710876B2 (en) Graph-based application programming interface architectures with equivalency classes for enhanced image processing parallelism
US8782645B2 (en) Automatic load balancing for heterogeneous cores
US20170083313A1 (en) CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
CN106030538B (zh) 通过编译器和os支持分离出i/o执行的系统和方法
AU2014203218B2 (en) Memory configuration for inter-processor communication in an MPSoC
US20100095303A1 (en) Balancing A Data Processing Load Among A Plurality Of Compute Nodes In A Parallel Computer
US9569221B1 (en) Dynamic selection of hardware processors for stream processing
US20100095091A1 (en) Processor, Method and Computer Program
US20200073677A1 (en) Hybrid computing device selection analysis
US9239732B2 (en) Unrolling aggregation operations in asynchronous programming code having multiple levels in hierarchy
CN111061485A (zh) 任务处理方法、编译器、调度服务器和介质
CN108037951B (zh) 一种dtp处理器的中断快速切换方法及装置
CN110032407A (zh) 提升cpu并行性能的方法及装置和电子设备
JP6567215B2 (ja) アーキテクチャ選定装置、アーキテクチャ選定方法およびアーキテクチャ選定プログラム
CN114840256A (zh) 一种程序数据级并行分析方法、装置及相关设备
Jung et al. Multiple program/multiple data molecular dynamics method with multiple time step integrator for large biological systems
US10140538B2 (en) Computing control device, computing control method, and computer readable medium
CN114327643B (zh) 机器指令预处理方法、电子设备及计算机可读存储介质
Nguyen et al. Lu factorization: Towards hiding communication overheads with a lookahead-free algorithm
US11704262B2 (en) Systems, apparatus, and methods of conveyor belt processing
JP7287743B2 (ja) コンパイラのためのワークロード指向定数伝播
Sheng et al. Fifo exploration in mapping streaming applications onto the ti omap3530 platform: Case study and optimizations
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid