KR20130019674A - 단말 및 그 단말에서 어플리케이션 수행 방법 - Google Patents
단말 및 그 단말에서 어플리케이션 수행 방법 Download PDFInfo
- Publication number
- KR20130019674A KR20130019674A KR1020110081775A KR20110081775A KR20130019674A KR 20130019674 A KR20130019674 A KR 20130019674A KR 1020110081775 A KR1020110081775 A KR 1020110081775A KR 20110081775 A KR20110081775 A KR 20110081775A KR 20130019674 A KR20130019674 A KR 20130019674A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- processing
- processing unit
- cpu
- workload
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Abstract
본 발명은 단말 및 그 단말에서 어플리케이션을 수행하는 방법에 관한 것으로, 수행될 어플리케이션의 코드가 입력되면, 상기 어플리케이션의 가중치를 확인하는 과정과, 상기 확인된 가중치를 이용하여 할당 지수를 산출하는 과정과, 상기 산출된 할당 지수를 통해 상기 중앙 처리 장치 및 상기 그래픽 처리 장치 중 상기 어플리케이션을 수행할 처리 장치를 선택하는 과정과, 상기 선택된 처리 장치에서 상기 어플리케이션을 수행하는 과정으로 구성된다. 따라서 사용자가 지정한 가중치에 따라 어플리케이션 수행이 CPU에 할당될지 GPU에 할당될지가 결정된다. 이에 workload 분배에 대한 자유도가 높아서 한쪽 처리부에만 작업량이 쏠리는 현상이 방지될 수 있다.
Description
본 발명은 단말 및 그 단말에서 어플리케이션을 수행하는 방법에 관한 것으로, CPU(Central Processing Unit)과 GPU(Graphics Processing Unit)를 포함하는 단말 및 그 단말에서 어플리케이션을 수행할 처리부를 선택하여 어플리케이션을 수행하는 방법에 관한 것이다.
1990년대 초기까지만 해도 컴퓨터와 같은 단말에 장착된 그래픽 카드는 단순히 중앙 처리 장치(이하 CPU;Central Processing Unit)의 연산 결과를 그림이나 글자 신호로 변환하여 화면으로 출력하는 어댑터(Adapter; 변환기)와 같은 부품으로 인식되었었다. 그러나 1990년대 중반 이후 단말의 멀티미디어 컨텐츠, 특히 게임이 주목받으며, 그래픽 카드의 역할도 점차 변하기 시작했다.
좀 더 상세히 설명하면, 게임에 입체감을 부여하기 위한 3D 그래픽이 본격적으로 도입되었고, 화면을 보다 현실적으로 만들기 위한 각종 효과 및 질감 표현 기법이 점차 발전해갔다. 이러한 작업들은 CPU 하나만으로 처리하기에는 그 작업량이 많다. 이에 CPU를 보조할 그래픽 전용 프로세서인 GPU(Graphics Processing Unit)가 개발되었다.
GPU는 Graphics 연산을 위한 장치로 사용되지만, 최근에는 그 성능이 향상되어 일반연산까지 수행할 수 있도록 개발되었고 이를 범용 GPU(General-Purpose computing on Graphics Processing Units;GPGPU)라 한다. GPGPU는 multi-core로 구성된 구조 특성상 병렬 프로그램에 적합하다. 일반적으로 CPU와 GPU는 구조에 따라 동일한 메모리를 공유할 수도 있고, 각각의 메모리를 따로 가질수도 있다. 즉 CPU와 GPU는 각각의 메모리를 소유하면서 외부 BUS로 연결된 구조로 구성되거나, 동일한 메모리를 공유할 수 있다.
GPU의 성능이 향상됨에 따라 CPU와 GPU 간 작업량 할당 방법에 대하여 많은 연구가 되고 있다. 이중 Qilin의 Adaptive Mapping 방법은 Data Size에 따라 저장된 어플리케이션 수행 시간에 따라 CPU와 GPU에 작업량을 할당하는 방식이 대표적으로 대두되고 있다. 이 Adaptive Mapping 방법은 어플리케이션이 실제로 수행되기 전에 CPU와 GPU에서 각각 Training Run을 수행한다. 이때 Data Size는 Sampling을 통해 정해 지며, Training Run 수행 결과는 DB(Data Base)에 저장된다. 그리고 실제 어플리케이션이 수행될 때 DB에 저장된 수행 시간을 참조하여 어플리케이션 수행 시간이 짧은 처리부를 확인한다. 그리고 확인된 처리부에 해당 어플리케이션 업무이 할당된다.
그러나 DB에 미리 저장된 어플리케이션 수행 시간을 이용하여 이를 수행할 처리부를 선택하는 방법은 Training Run을 통해 DB 갱신이 필요하다. 이 경우 Training Run 실행 자체가 시스템 동작의 Overhead로 작용할 수 있다는 문제점이 있다. 또, Training Run을 실행할 때와 실제 프로그램이 동작할 때 환경이 다른 경우, CPU와 GPU는 동작 상황에 따라 workload가 달라지므로 DB에 저장된 시간이 맞지 않을 수 있다는 문제점이 발생한다. 그리고 Qilin의 Adaptive Mapping 방법은 1개 프로그램의 수행 속도만을 고려하였는데, 이를 경우 CPU/GPU의 load Balancing은 고려하지 않아 한쪽의 처리 장치에서만 이를 처리할 수 있다는 문제점이 있다. 따라서 본 발명은 단말 및 그 단말에서 어플리케이션에 따라 수행할 처리부를 선택하여 어플리케이션을 수행 방법을 제안한다.
상기와 같은 문제점을 해결하기 위해 본 발명에서 어플리케이션 수행 방법은 수행될 어플리케이션의 코드가 입력되면, 상기 어플리케이션의 가중치를 확인하는 과정과, 상기 확인된 가중치를 이용하여 할당 지수를 산출하는 과정과, 상기 산출된 할당 지수를 통해 상기 중앙 처리 장치 및 상기 그래픽 처리 장치 중 상기 어플리케이션을 수행할 처리 장치를 선택하는 과정과, 상기 선택된 처리 장치에서 상기 어플리케이션을 수행하는 과정을 포함하는 것을 특징으로 한다.
그리고 본 발명에서 상기 처리 장치를 선택하는 과정은 상기 어플리케이션이 할당될 처리 장치를 선택하기 위한 우선 순위 처리 모드 및 상기 우선 순위 처리 모드에 따른 처리 임계값을 확인하는 과정과, 상기 확인된 처리 임계값과 상기 할당 지수를 비교하여 상기 처리 장치를 선택하는 과정을 포함하는 것을 특징으로 한다.
또한 본 발명에서 상기 처리 장치를 선택하는 과정은 상기 할당 지수가 상기 처리 임계값 미만이면, 상기 어플리케이션의 코드를 상기 중앙 처리 장치에서 처리하기 위해 컴파일하는 과정을 포함하는 것을 특징으로 한다.
다음으로 본 발명에서 상기 처리 장치를 선택하는 과정은 상기 할당 지수가 상기 처리 임계값 이상이면, 상기 어플리케이션의 코드를 상기 그래픽 처리 장치에서 처리하기 위해 컴파일하는 과정을 포함하는 것을 특징으로 한다.
또한 상기와 같은 문제점을 해결하기 위해 본 발명에서 어플리케이션 수행 단말은 작업량 조절 정보 테이블을 저장하는 저장부와, 수행될 어플리케이션의 코드가 입력되면, 상기 작업량 조절 정보 테이블에 저장된 상기 어플리케이션의 가중치를 확인하고, 상기 확인된 가중치를 이용하여 할당 지수를 산출하여, 중앙 처리 장치 및 그래픽 처리 장치 중 상기 어플리케이션을 수행할 처리 장치를 선택하는 중앙 처리 장치와, 상기 중앙 처리 장치로부터 전달되는 바이너리를 통해 어플리케이션을 수행하는 그래픽 처리 장치를 포함하는 것을 특징으로 한다.
이때 본 발명에서 상기 중앙 처리 장치는 상기 어플리케이션이 할당될 처리 장치를 선택하기 위한 상기 작업량 조절 정보 테이블에 포함된 우선 순위 처리 모드 및 상기 우선 순위 처리 모드에 따른 처리 임계값을 확인하고, 상기 확인된 처리 임계값과 상기 할당 지수를 비교하여 상기 처리 장치를 선택하는 것을 특징으로 한다.
그리고 본 발명에서 상기 상기 중앙 처리 장치는 상기 할당 지수가 상기 처리 임계값 미만이면, 상기 어플리케이션의 코드를 상기 중앙 처리 장치에서 처리하기 위해 컴파일하는 것을 특징으로 한다.
마지막으로 본 발명에서 상기 중앙 처리 장치는 상기 할당 지수가 상기 처리 임계값 이상이면, 상기 어플리케이션의 코드를 상기 그래픽 처리 장치에서 처리하기 위해 컴파일하는 것을 특징으로 한다.
본 발명에 따르면, 사용자가 지정한 가중치에 따라 어플리케이션 수행이 CPU에 할당될지 GPU에 할당될지가 결정된다. 따라서 workload 분배에 대한 자유도가 높아서 한쪽 처리부에만 작업량이 쏠리는 현상이 방지될 수 있다. 또한 DB에 각 어플리케이션 수행 시간을 업데이트할 필요가 없으므로, 이에 대한 overhead가 줄어들 수 있다.
도 1은 본 발명의 실시예에 따른 단말의 구성을 도시한 도면.
도 2는 본 발명의 실시예에 따른 작업량 조절 정보 테이블을 도시한 도면.
도 3은 본 발명의 실시예에 따른 제1 우선 순위 모드 시 어플리케이션이 할당되는 작업량을 도시한 도면.
도 4는 본 발명의 실시예에 따른 제2 우선 순위 모드 시 어플리케이션이 할당되는 작업량을 도시한 도면.
도 5는 본 발명의 실시예에 따른 어플리케이션 수행 방법을 도시한 도면.
도 2는 본 발명의 실시예에 따른 작업량 조절 정보 테이블을 도시한 도면.
도 3은 본 발명의 실시예에 따른 제1 우선 순위 모드 시 어플리케이션이 할당되는 작업량을 도시한 도면.
도 4는 본 발명의 실시예에 따른 제2 우선 순위 모드 시 어플리케이션이 할당되는 작업량을 도시한 도면.
도 5는 본 발명의 실시예에 따른 어플리케이션 수행 방법을 도시한 도면.
'단말'는 데이터를 생성하거나, 외부로부터 송수신되는 데이터를 처리할 수 있는 정보 처리 기기를 의미한다. 여기서 단말은 컴퓨터, 노트북, 테블릿 PC, 휴대 단말, 스마트 폰 등이 포함되며, 적어도 두 개의 처리 장치 다시 말해, 중앙 처리 장치 및 그래픽 처리 장치를 포함한다.
'중앙 처리 장치(CPU; Central Processing Unit)'는 단어 그대로 단말의 중앙에서 모든 데이터를 처리하는 장치라는 의미로, 사용자로부터 입력된 명령어를 해석, 연산한 다음 그 결과를 출력하는 기능을 수행한다. CPU의 가장 기본적인 역할은 연산/계산 작업이다.
'그래픽 처리 장치(GPU;Graphics Processing Unit)'는 단말의 그래픽을 담당하는 장치로, 3D 그래픽을 주로 처리한다. 이에 GPU가 함께 구성된 단말에서 그래픽과 관련된 연산이 수행될 때 CPU의 부담이 줄어들 수 있다. 또한 GPU는 대량의 행렬과 벡터를 처리할 수 있으므로, 이러한 연산을 많이 사용하는 어플리케이션들을 수행할 수 있다.
'태스크(task)'는 단말이 내부에서 처리하는 단위로, 어플리케이션에서 입출력 시스템 프로그램 또는 중앙 처리기 등의 자원을 요구하는 실행 내용을 의미한다. 어플리케이션 수행시, 단말의 자원을 효과적으로 활용하기 위해 어플리케이션을 여러 개의 태스크로 구분한다.
'컴파일러(Compiler) 또는 컴파일(Compile)'은 고급 언어로 작성된 어플리케이션을 그와 의미적으로 동등하며, 단말에서 즉시 실행될 수 있는 형태의 목적 어플리케이션으로 바꾸어 주는 프로그램 또는 과정을 의미한다. 즉 단말에서 특정 어플리케이션이 수행되기 위해서 단말이 직접 이해할 수 있는 언어로 바꿔야 한다. 그리고 이러한 일을 하는 프로그램이 컴파일러이다.
컴파일을 하기 위해 입력되는 어플리케이션은 원시 어플리케이션이라 하고, 이 어플리케이션을 기술한 언어는 소스 코드(Source Code)라고 한다. 그리고 컴파일되어 출력되는 어플리케이션을 목적 어플리케이션이라 하고, 목적 어플리케이션을 기술한 언어가 목적 코드(Object Language 또는 Target Language)라 한다. 하나의 어플리케이션을 컴파일되어 목적 어플리케이션으로 변경되면, 원시 어플리케이션을 수정하지 않는 한 계속 반복해서 수행할 수 있다.
'바이너리(Binary)'는 0과 1의 두 숫자로만 이루어진 이진법으로, 어플리케이을 수행하기 위한 실행 파일을 의미한다. 즉 단말은 사용자에 의해 선택되는 어플리케이션을 수행하기 위해 해당 어플리케이션 소스 코드를 목적 코드로 컴파일링하고, 그리고 이를 통해 해당 어플리케이션을 수행하기 위한 바이너리를 생성한다.
'워크로드(Workload)'는 CPU 및 GPU에서 처리되는 작업량을 의미한다.
이하 첨부된 도면을 참조하여 본 발명의 동작 원리를 상세히 설명한다. 하기에서 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 본 발명의 실시예에 따른 단말의 구성을 도시한 도면이다.
도 1을 참조하면, 단말은 중앙 처리 장치(110), 그래픽 처리 장치(120), 저장부(130)로 구성된다.
중앙 처리 장치(CPU; Central Processing Unit)(110)는 단말을 구성하는 구성들의 전반적인 동작 및 상태를 제어하는 기능을 수행한다. CPU(110)는 단어 그대로 단말의 중앙에서 모든 데이터를 처리하는 장치라는 의미로, 사용자로부터 입력된 명령어를 해석, 연산한 다음 그 결과를 출력하는 기능을 수행한다. CPU(110)의 가장 기본적인 역할은 연산/계산 작업이다. 이를테면 사용자가 '0+1'이라는 명령을 내리면, CPU(110)는 이를 계산하여 '1'이라는 결과를 출력할 수 있다.
CPU(110)는 CPU Task queue(113), GPU Task queue(115) 및 워크로드 모니터부를 포함한다. CPU Task queue(113)는 CPU(110)에서 동작하는 어플리케이션의 태스크 정보를 어플리케이션이 수행되는 동안 저장할 수 있다. 또한 GPU Task queue(115)는 그래픽 처리 장치(Graphics Processing Unit;GPU)(120)에서 동작하는 어플리케이션의 태스크 정보를 어플리케이션이 수행되는 동안 저장할 수 있다. 다음으로 워크로드 모니터부(117)는 GPU(120)의 상태를 모니터하며, GPU(120)의 워크로드를 분석한다.
본 발명에서 CPU(110)는 어플리케이션의 설정된 가중치에 따라 어플리케이션을 수행할 처리 장치를 선택하여, 해당 처리 장치에서 어플리케이션을 수행하도록 한다. 이때 처리 장치는 CPU(110)와 GPU(120)를 의미한다.
좀 더 상세히 설명하면, CPU(110)는 수행될 어플리케이션이 선택되면, 선택된 어플리케이션의 원시 코드를 입력한다. 다음으로 CPU(110)는 입력된 원시 코드에 대응되는 어플리케이션에 대한 가중치 정보를 확인한다. 여기서 가중치 정보는 미리 설정된 작업량 조절 정보 테이블(135)을 참조로 확인된다. 여기서 작업량 조절 정보 테이블(135)은 해당 어플리케이션에 대한 가중치 정보를 포함하며, 저장부(130)에 저장된다. 그리고 CPU(110)는 확인된 가중치 정보를 이용하여 할당 지수를 산출한다. 할당 지수는 다음과 같은 수학식 1에 의해 산출된다.
여기서 X1, X2, X3,..., Xn은 작업량 조정 정보 테이블에 포함된 가중치 정보는 어플리케이션이 수행되기 위한 조건(X)을 각각 수치로 설정한 값을 의미한다. 또한 α, β, γ, δ, ..., ω는 각 조건별 가중치를 의미한다.
예를 들어 CPU에서 현재 동작하는 어플리케이션 지수 X1이 0.4, GPU에서 현재 동작하는 어플리케이션 지수 X2가 0.3, 동작하려는 어플리케이션에서 처리하는 Data 크기 지수 X3가 0.8, GPU의 현재 Workload(GPU usage) 지수 X4가 0.5이며, X1 항목의 가중치 α가 0.2, X2 항목의 가중치 β가 0.2, X3 항목의 가중치 γ가 0.5, X4 항목의 가중치 δ가 0.1이라고 가정한다. 이러한 경우, 할당 지수는 수학식 1을 통해 0.59로 산출된다.
이와 같은 수학식에 의해 산출되는 할당 지수는 0 내지 1까지의 값을 갖는다. 이렇게 산출된 할당 지수를 통해 CPU(110)는 해당 어플리케이션을 수행할 처리 장치를 선택할 수 있다. 그러기 위해 CPU(110)는 설정된 우선 순위 모드를 확인한다.
우선 순위 모드는 해당 어플리케이션이 중앙 처리 장치에서 수행될 것인지, 그래픽 처리 장치에서 수행될 것인지를 판단하기 위한 처리 임계값을 선택하는 모드이다. 따라서 우선 순위 처리 모드는 적어도 두 개의 모드로 구분된다. 그리고 처리 임계값은 각각 모드별로 대응되어 설정된다.
이에 설정된 우선 순위 모드에 따라 어느 처리 장치에서 해당 어플리케이션이 수행될 것인지를 결정할 수 있는 처리 임계값이 달라진다. 그리고 우선 순위 모드 및 각 우선 순위 모드에 따른 처리 임계값은 작업량 조절 정보 테이블(135)에 포함되어 있다.
우선 순위 모드를 확인한 CPU(110)는 우선 순위 모드에 따른 처리 임계값을 불러온다. 다음으로 CPU(110)는 산출된 할당 지수가 확인된 처리 임계값 미만인지 판단한다. 만약 할당 지수가 처리 임계값 미만이면, CPU(110)는 해당 어플리케이션 소스 코드를 CPU(110)에서 처리하기 위한 목적 코드로 컴파일한다. 반면에 할당 지수가 처리 임계값 미만이면, CPU(110)는 해당 어플리케이션 모드를 GPU(120)에서 처리하기 위한 목적 코드로 컴파일한다. 그리고 CPU(110)는 자신이 처리해야하는 어플리케이션이면, 해당 어플리케이션을 수행한다. 반면에 GPU(120)에서 처리해야하는 어플리케이션이면, CPU(110)는 해당 어플리케이션에 해당하는 바이너리를 생성하여 GPU(120)로 전달한다.
이와 같이 어플리케이션에 설정된 가중치를 이용하여 할당 지수를 산출하고, 산출된 할당 지수를 통해 어플리케이션을 수행할 처리 장치가 선택됨에 따라, CPU(110)는 CPU(110)와 GPU(120)의 작업량을 조절할 수 있다.
GPU(120)는 단말의 그래픽을 처리하는 기능을 수행한다. 즉 GPU(120)는 표시부에 표시되는 각종 데이터들과 관련된 그래픽 연산을 수행할 수 있다. 본 발명에서 GPU(120)는 CPU(110)로부터 전달되는 바이너리를 통해 해당 어플리케이션을 수행할 수 있다.
저장부(130)는 단말의 동작 및 상태에 따라 생성되는 데이터들을 저장한다. 여기서 저장부(130)는 작업량 조절 정보 테이블(135)을 저장한다. 작업량 조절 정보 테이블(135)은 해당 어플리케이션에 대한 여러 개의 가중치를 포함한다. 예를 들어 작업량 조절 정보 테이블(135)은 CPU(110) 또는 GPU(120)에서 해당 어플리케이션이 처리될 때 작업량에 대한 가중치, 어플리케이션의 데이터 크기(size)에 대한 가중치, CPU(110) 또는 GPU(120)에서 처리되는 어플리케이션 단위(task)의 가중치 등을 포함한다.
작업량 조절 정보 테이블(135)은 우선 순위 처리 모드 및 모드별 처리 임계값을 포함한다. 우선 순위 처리 모드는 F 모드와 T 모드로 표현될 수 있다. 그리고 모드별 처리 임계값은 공정성(Fairness) 임계값과 처리량(Throughput) 임계값으로 구분될 수 있다. 만약 우선 순위 처리 모드가 F 모드인 경우, 할당 지수와 비교되는 처리 임계값은 공정성(Fairness) 임계값이 될 수 있으며, 우선 순위 처리 모드가 T 모드인 경우, 할당 지수와 비교되는 처리 임계값은 처리량(Throughput) 임계값이 될 수 있다.
도면에 도시되지 않았지만, 단말은 사용자로부터 입력되는 명령을 전달하는 입력부, 단말의 동작 및 상태에 따라 생성되는 데이터 등을 표시하는 표시부, 외부로부터 데이터를 송수신하는 통신부 등과 같이 단말에서 수행되는 기능에 따라 다양한 구성들을 더 포함할 수 있다.
도 2는 본 발명의 실시예에 따른 작업량 조절 정보 테이블을 도시한 도면이다.
도 2를 참조하면, 작업량 조절 정보 테이블(135)은 어플리케이션에 대한 다양한 가중치 정보(210) 및 어플리케이션이 할당될 처리 장치를 선택하기 위한 우선 순위 처리 모드에 대한 정보(215)를 포함한다.
가중치 정보(210)는 어플리케이션이 수행되기 위한 조건(X) 및 가중치를 각각 수치로 설정한 값을 의미한다. 어플리케이션이 수행되기 위한 조건(X)으로, # of CPU Task, # of GPU Task, 데이터 크기(Data size), CPU 작업량(Workload), GPU 작업량 등이 포함된다. # of CPU Task 또는 # of GPU Task는 CPU 또는 GPU에서에서 해당 어플리케이션을 수행하기 위해 처리하는 단위를 나타낸다. 그리고 CPU 작업량 및 GPU 작업량은 CPU 및 GPU에서 처리되는 작업량을 의미한다. 이때 각각의 조건에 지수가 설정된다.
가중치 정보(210)에 따르면, 각각의 조건에 대하여 가중치가 설정된다. 예를 들어 도 2에서 도시된 바와 같이 # of CPU Task의 가중치는 0.2, # of GPU Task는 0.2, 데이터 크기의 가중치는 0.5, CPU 작업량의 가중치는 0.0 및 GPU 작업량의 가중치는 0.1로 설정될 수 있다. 각 조건에 따라 설정되는 조건에 해당하는 지수와 가중치는 단말의 특징에 따라 사용자에 의해 추가하거나 삭제할 수 있고, 단말 제조사에 의해 설정될 수 있다. 그리고 각 조건별로 기재되는 가중치는 본 발명에서 설명을 용이하게 하기 위해 기재된 것으로, 이에 한정되지 않는다.
또한 우선 순위 처리 모드에 대한 정보(215)는 해당 어플리케이션이 어느 처리 장치에서 수행될 것인지를 결정하기 위한 모드에 대한 정보이다. 다시 말해 우선 순위 처리 모드는 선택된 어플리케이션이 중앙 처리 장치에서 수행될 것인지, 그래픽 처리 장치에서 수행될 것인지를 판단하기 위해 미리 설정된 처리 임계값을 선택하는 모드이다. 여기서 우선 순위 처리 모드는 F 모드와 T모드로 구분될 수 있으며, F 모드는 어플리케이션 수행 속도를 고려하여 처리 장치를 선택하기 위한 모드이며, T 모드는 어플리케이션 수행에 따른 부하 분산을 고려하여 처리 장치를 선택하기 위한 모드이다.
우선 순위 처리 모드에 따라 처리 임계값은 적어도 두 개의 임계값을 포함할 수 있으며, 이 두 개의 임계값을 공정성(Fairness) 임계값과 처리량(Throughput) 임계값이라 칭한다. 공정성 임계값은 F 모드에서 사용되며, 해당 어플리케이션의 수행 속도에 따라 설정되는 임계값이다. 그리고 처리량 임계값은 T 모드에서 사용되며, CPU와 GPU의 부하 분산(load balancing)을 고려하여 설정되는 임계값이다. 우선 순위 모드에 따라 처리 임계값이 따로 설정되어있기 때문에. 우선 순위 모드 별로 어느 처리 장치에서 해당 어플리케이션이 수행될 것인지가 달라질 수 있다. 따라서 단말은 처리 임계값을 통해 CPU와 GPU에서 처리되는 작업량이 동일한 수준이 되도록 작업량을 할당할 수 있다.
도 3은 본 발명의 실시예에 따른 제1 우선 순위 모드 시 어플리케이션이 할당되는 작업량을 도시한 도면이다. 좀 더 상세히, 도 3은 우선 순위 모드가 F 모드로 설정된 경우, CPU와 GPU에 할당되는 작업량을 도시한 도면이다.
우선 순위 모드가 F 모드로 설정되었다는 것은 공정성(Fairness) 임계값(310)을 기준으로 CPU와 GPU에 할당되는 작업량을 조절하는 모드로 설정되었다는 것을 의미한다. 공정성 임계값(310)은 해당 어플리케이션의 수행 속도에 따라 설정되는 임계값이다.
도 3을 참조하면, 각 CPU와 GPU에 할당되는 작업량에서 공정성 임계값(310)을 기준으로, CPU에서 처리되는 작업량보다 GPU에서 처리되는 작업량이 많다. GPU는 멀티 코어(Multi-core)로 구성되어 할당된 작업들을 병렬 방식으로 처리하므로, 그 처리 속도가 빠르다. 따라서 공정성 임계값(310)을 기준으로 우선 순위 모드가 설정된 경우, 어플리케이션을 수행하는 속도가 빠른 처리 장치에 작업량이 좀 더 할당될 수 있다.
도 4는 본 발명의 실시예에 따른 제2 우선 순위 모드 시 어플리케이션이 할당되는 작업량을 도시한 도면이다. 좀 더 상세히, 도 4는 우선 순위 모드가 T 모드로 설정된 경우, CPU와 GPU에 할당되는 작업량을 도시한 도면이다.
우선 순위 모드가 T 모드로 설정되었다는 것은 처리량(Throughput) 임계값(410)을 기준으로 CPU와 GPU에 할당되는 작업량을 조절하는 모드로 설정되었다는 것을 의미한다. 처리량 임계값(410)은 CPU와 GPU의 부하 분산(load balancing)을 고려하여 설정되는 임계값이다.
도 4에 도시된 각 CPU와 GPU에 할당되는 작업량을 보면, 처리량 임계값(410)을 기준으로, GPU에서 처리되는 작업량보다 CPU에서 처리되는 작업량이 많다. CPU는 단말을 구성하는 모든 구성들의 상태 및 동작을 제어하므로, 처리할 수 있는 작업량이 그래픽용으로 제작된 GPU보다는 많다. 따라서 처리량 임계값(410)을 기준으로 우선 순위 모드가 설정된 경우, 어플리케이션을 처리하는 작업량이 많은 처리 장치에 작업량이 좀 더 할당될 수 있다.
도 5는 본 발명의 실시예에 따른 어플리케이션 수행 방법을 도시한 도면이다.
도 5를 참조하면, 단말은 510단계에서 수행될 어플리케이션에 대한 코드가 입력되면, 515단계에서 입력된 어플리케이션에 대한 가중치를 확인한다. 여기서 가중치는 미리 설정된 작업량 조절 정보 테이블을 참조로 확인된다. 작업량 조절 정보 테이블은 해당 어플리케이션에 대한 여러 개의 가중치를 포함한다. 예를 들어 작업량 조절 정보 테이블은 CPU 또는 GPU에서 해당 어플리케이션이 처리될 때 작업량에 대한 가중치, 어플리케이션의 데이터 크기(size)에 대한 가중치, CPU 또는 GPU에서 처리되는 어플리케이션 단위(task)의 가중치 등을 포함한다.
다음으로 단말은 520단계에서 확인된 가중치를 이용하여 할당 지수를 산출한다. 이때 산출되는 할당 지수는 0 내지 1까지의 값을 갖는다. 그리고 단말은 525단계에서 설정된 우선 순위 모드를 확인한다.
우선 순위 모드는 해당 어플리케이션이 중앙 처리 장치에서 수행될 것인지, 그래픽 처리 장치에서 수행될 것인지를 판단하기 위한 처리 임계값을 선택하는 모드이다. 처리 임계값은 적어도 두 개의 임계값인 공정성(Fairness) 임계값과 처리량(Throughput) 임계값을 포함한다. 그리고 우선 순위 모드에 따라 어느 처리 장치에서 해당 어플리케이션이 수행될 것인지를 결정할 수 있는 처리 임계값이 달라진다. 예를 들어, F 모드와 T 모드로 구분되는 우선 순위 처리 모드가 F 모드로 설정되어 있다면, 처리 임계값으로 공정성 임계값이 선택된다. 반면에 우선 순위 처리 모드가 T모드로 설정되어 있다면, 처리 임계값으로 처리량(Throughput) 임계값으로 선택된다.
그리고 단말은 530단계에서 우선 순위 모드에 따른 처리 임계값을 확인한다. 단말은 535단계에서 산출된 할당 지수가 확인된 처리 임계값 미만인지 판단한다. 만약 할당 지수가 처리 임계값 미만이면, 단말은 540단계에서 CPU에서 처리하기 위한 컴파일을 수행한다. 즉 단말은 해당 어플리케이션의 CPU용 바이너리로 컴파일한다. 반면에 할당 지수가 처리 임계값 이상이면, 단말은 545단계에서 해당 어플리케이션의 GPU용 바이너리를 읽어 온다. 이 때, GPU용 바이너리가 생성되어 있지 않다면 GPU에서 처리하기 위한 목적 코드로 컴파일하여 바이너리를 생성한다. 그리고 단말은 550단계에서 해당 처리 장치에서 어플리케이션을 수행한다. 즉 단말은 CPU에서 처리하기 위한 목적 코드를 이용하여 해당 어플리케이션을 CPU에서 처리한다. 또는 단말은 GPU에서 처리하기 위한 목적 코드를 이용하여 해당 어플리케이션을 GPU에서 처리한다.
이러한 과정들을 통해 CPU와 GPU의 상황에 따라 작업량 할당이 가능하다. 또한 CPU나 GPU 중 어느 하나의 작업량이 증가하면, 나머지 하나에 업무가 할당됨으로써 시스템의 효율이 향상된다
한편 본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 국한되지 않으며, 후술되는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
Claims (13)
- 중앙 처리 장치 및 그래픽 처리 장치를 포함하는 단말의 어플리케이션 수행 방법에 있어서,
수행될 어플리케이션의 코드가 입력되면, 상기 어플리케이션의 가중치를 확인하는 과정과,
상기 확인된 가중치를 이용하여 할당 지수를 산출하는 과정과,
상기 산출된 할당 지수를 통해 상기 중앙 처리 장치 및 상기 그래픽 처리 장치 중 상기 어플리케이션을 수행할 처리 장치를 선택하는 과정과,
상기 선택된 처리 장치에서 상기 어플리케이션을 수행하는 과정을 포함하는 것을 특징으로 하는 어플리케이션 수행 방법. - 제1항에 있어서, 상기 처리 장치를 선택하는 과정은
상기 어플리케이션이 할당될 처리 장치를 선택하기 위한 우선 순위 처리 모드 및 상기 우선 순위 처리 모드에 따른 처리 임계값을 확인하는 과정과,
상기 확인된 처리 임계값과 상기 할당 지수를 비교하여 상기 처리 장치를 선택하는 과정을 포함하는 것을 특징으로 하는 어플리케이션 수행 방법. - 제2항에 있어서, 상기 처리 장치를 선택하는 과정은
상기 할당 지수가 상기 처리 임계값 미만이면, 상기 어플리케이션의 코드를 상기 중앙 처리 장치에서 처리하기 위해 컴파일하는 과정을 포함하는 것을 특징으로 하는 어플리케이션 수행 방법. - 제2항에 있어서, 상기 처리 장치를 선택하는 과정은
상기 할당 지수가 상기 처리 임계값 이상이면, 상기 어플리케이션의 코드를 상기 그래픽 처리 장치에서 처리하기 위해 컴파일하는 과정을 포함하는 것을 특징으로 하는 어플리케이션 수행 방법. - 제2항에 있어서, 상기 우선 순위 처리 모드는
적어도 두 개의 모드로 구분되는 것을 포함하는 것을 특징으로 하는 어플리케이션 수행 방법. - 제5항에 있어서, 상기 처리 임계값은
상기 적어도 두 개의 모드별로 각각 대응되어 설정되는 임계값임을 특징으로 하는 어플리케이션 수행 방법. - 제1항에 있어서, 상기 가중치는
상기 중앙 처리 장치 또는 상기 그래픽 처리 장치에서 상기 어플리케이션을 수행하기 위해 처리하는 단위, 데이터 크기(Data size), 중앙 처리 장치 작업량, 그래픽 처리 장치 작업량 중 적어도 하나에 설정되는 값임을 특징으로 하는 어플리케이션 수행 방법. - 작업량 조절 정보 테이블을 저장하는 저장부와,
수행될 어플리케이션의 코드가 입력되면, 상기 작업량 조절 정보 테이블에 저장된 상기 어플리케이션의 가중치를 확인하고, 상기 확인된 가중치를 이용하여 할당 지수를 산출하여, 중앙 처리 장치 및 그래픽 처리 장치 중 상기 어플리케이션을 수행할 처리 장치를 선택하는 중앙 처리 장치와,
상기 중앙 처리 장치로부터 전달되는 바이너리를 통해 어플리케이션을 수행하는 그래픽 처리 장치를 포함하는 것을 특징으로 하는 어플리케이션 수행 단말. - 제8항에 있어서, 상기 중앙 처리 장치는
상기 어플리케이션이 할당될 처리 장치를 선택하기 위한 상기 작업량 조절 정보 테이블에 포함된 우선 순위 처리 모드 및 상기 우선 순위 처리 모드에 따른 처리 임계값을 확인하고, 상기 확인된 처리 임계값과 상기 할당 지수를 비교하여 상기 처리 장치를 선택하는 것을 특징으로 하는 어플리케이션 수행 단말. - 제9항에 있어서, 상기 중앙 처리 장치는
상기 할당 지수가 상기 처리 임계값 이상이면, 상기 어플리케이션의 코드를 상기 그래픽 처리 장치에서 처리하기 위해 컴파일하는 것을 특징으로 하는 어플리케이션 수행 단말. - 제9항에 있어서, 상기 우선 순위 처리 모드는
적어도 두 개의 모드로 구분되는 것을 포함하는 것을 특징으로 하는 어플리케이션 수행 단말. - 제11항에 있어서, 상기 처리 임계값은
상기 적어도 두 개의 모드별로 각각 대응되어 설정되는 임계값임을 특징으로 하는 어플리케이션 수행 단말. - 제8항에 있어서, 상기 가중치는
상기 중앙 처리 장치 또는 상기 그래픽 처리 장치에서 상기 어플리케이션을 수행하기 위해 처리하는 단위, 데이터 크기(Data size), 중앙 처리 장치 작업량, 그래픽 처리 장치 작업량 중 적어도 하나에 설정되는 값임을 특징으로 하는 어플리케이션 수행 단말.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110081775A KR20130019674A (ko) | 2011-08-17 | 2011-08-17 | 단말 및 그 단말에서 어플리케이션 수행 방법 |
US14/237,475 US20140189708A1 (en) | 2011-08-17 | 2012-08-17 | Terminal and method for executing application in same |
PCT/KR2012/006573 WO2013025081A1 (ko) | 2011-08-17 | 2012-08-17 | 단말 및 그 단말에서 어플리케이션 수행 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110081775A KR20130019674A (ko) | 2011-08-17 | 2011-08-17 | 단말 및 그 단말에서 어플리케이션 수행 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130019674A true KR20130019674A (ko) | 2013-02-27 |
Family
ID=47715281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110081775A KR20130019674A (ko) | 2011-08-17 | 2011-08-17 | 단말 및 그 단말에서 어플리케이션 수행 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140189708A1 (ko) |
KR (1) | KR20130019674A (ko) |
WO (1) | WO2013025081A1 (ko) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014142495A1 (en) * | 2013-03-14 | 2014-09-18 | Samsung Electronics Co., Ltd. | Image data processing method and electronic device supporting the same |
KR20150123677A (ko) * | 2014-04-25 | 2015-11-04 | 한양대학교 산학협력단 | 어플리케이션 로딩 장치 및 방법 |
US9411659B2 (en) | 2013-08-13 | 2016-08-09 | Samsung Sds Co., Ltd. | Data processing method used in distributed system |
CN108268639A (zh) * | 2018-01-18 | 2018-07-10 | 成都嗨翻屋文化传播有限公司 | 一种大数据环境下的指标计算方法 |
KR20200001712U (ko) | 2019-01-23 | 2020-07-31 | 강석현 | 조립식 개구부 덮개 |
WO2024179250A1 (zh) * | 2023-02-28 | 2024-09-06 | 华为技术有限公司 | 应用管理的方法及装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10542233B2 (en) * | 2014-10-22 | 2020-01-21 | Genetec Inc. | System to dispatch video decoding to dedicated hardware resources |
CN105808342B (zh) * | 2014-12-30 | 2019-12-13 | 中国电信股份有限公司 | 用于分配客户请求的方法、判断装置和系统 |
CN104850461B (zh) * | 2015-05-12 | 2018-05-11 | 华中科技大学 | 一种面向numa架构的虚拟cpu调度优化方法 |
JP6415405B2 (ja) * | 2015-07-31 | 2018-10-31 | 本田技研工業株式会社 | タスク制御システム |
US10445850B2 (en) * | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
US11262831B2 (en) | 2018-08-17 | 2022-03-01 | Hewlett-Packard Development Company, L.P. | Modifications of power allocations for graphical processing units based on usage |
US11474824B1 (en) * | 2020-05-08 | 2022-10-18 | Corel Corporation | Performance benchmarking-based selection of processor for generating graphic primitives |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7075541B2 (en) * | 2003-08-18 | 2006-07-11 | Nvidia Corporation | Adaptive load balancing in a multi-processor graphics processing system |
US8180922B2 (en) * | 2003-11-14 | 2012-05-15 | Cisco Technology, Inc. | Load balancing mechanism using resource availability profiles |
US7698575B2 (en) * | 2004-03-30 | 2010-04-13 | Intel Corporation | Managing power consumption by requesting an adjustment to an operating point of a processor |
US7466316B1 (en) * | 2004-12-14 | 2008-12-16 | Nvidia Corporation | Apparatus, system, and method for distributing work to integrated heterogeneous processors |
JP2008071261A (ja) * | 2006-09-15 | 2008-03-27 | Toshiba Corp | 画像処理システム及び画像処理方法 |
KR101467558B1 (ko) * | 2007-07-26 | 2014-12-01 | 엘지전자 주식회사 | 그래픽데이터 처리 장치 및 방법 |
US20090172693A1 (en) * | 2007-12-31 | 2009-07-02 | Nortel Networks Limited | Assigning work to a processing entity according to non-linear representations of loadings |
US8199158B2 (en) * | 2008-06-11 | 2012-06-12 | Intel Corporation | Performance allocation method and apparatus |
US8830245B2 (en) * | 2010-12-14 | 2014-09-09 | Amazon Technologies, Inc. | Load balancing between general purpose processors and graphics processors |
-
2011
- 2011-08-17 KR KR1020110081775A patent/KR20130019674A/ko not_active Application Discontinuation
-
2012
- 2012-08-17 US US14/237,475 patent/US20140189708A1/en not_active Abandoned
- 2012-08-17 WO PCT/KR2012/006573 patent/WO2013025081A1/ko active Application Filing
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014142495A1 (en) * | 2013-03-14 | 2014-09-18 | Samsung Electronics Co., Ltd. | Image data processing method and electronic device supporting the same |
US9491367B2 (en) | 2013-03-14 | 2016-11-08 | Samsung Electronics Co., Ltd. | Image data processing method and electronic device supporting the same |
US9411659B2 (en) | 2013-08-13 | 2016-08-09 | Samsung Sds Co., Ltd. | Data processing method used in distributed system |
KR20150123677A (ko) * | 2014-04-25 | 2015-11-04 | 한양대학교 산학협력단 | 어플리케이션 로딩 장치 및 방법 |
CN108268639A (zh) * | 2018-01-18 | 2018-07-10 | 成都嗨翻屋文化传播有限公司 | 一种大数据环境下的指标计算方法 |
KR20200001712U (ko) | 2019-01-23 | 2020-07-31 | 강석현 | 조립식 개구부 덮개 |
WO2024179250A1 (zh) * | 2023-02-28 | 2024-09-06 | 华为技术有限公司 | 应用管理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2013025081A1 (ko) | 2013-02-21 |
US20140189708A1 (en) | 2014-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20130019674A (ko) | 단말 및 그 단말에서 어플리케이션 수행 방법 | |
JP6437579B2 (ja) | 仮想化環境におけるインテリジェントgpuスケジューリング | |
US9858122B2 (en) | Data parallel computing on multiple processors | |
KR100962531B1 (ko) | 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법 | |
KR101855311B1 (ko) | 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘 | |
US8799871B2 (en) | Computation of elementwise expression in parallel | |
US8860736B2 (en) | Terminal and application execution method thereof | |
CN102446114B (zh) | 优化虚拟图形处理单元利用的方法和系统 | |
US20160217011A1 (en) | Application interface on multiple processors | |
KR101885211B1 (ko) | Gpu의 자원 할당을 위한 방법 및 장치 | |
EP3413198A1 (en) | Data parallel computing on multiple processors | |
US10970129B2 (en) | Intelligent GPU scheduling in a virtualization environment | |
EP2146283A2 (en) | Parallel runtime execution on multiple processors | |
US9201823B2 (en) | Pessimistic interrupt affinity for devices | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
CN114528090A (zh) | 基于Vulkan实现图形渲染的方法及相关装置 | |
KR20210021263A (ko) | 작업부하의 정적 매핑의 비순차적 파이프라이닝된 실행을 가능하게 하기 위한 방법들 및 장치 | |
JP2021034023A (ja) | アクセラレータにおいてヘテロジニアスコンポーネントを設定する方法及び装置 | |
KR20130080663A (ko) | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 | |
KR101755154B1 (ko) | 이종 연산 처리 장치에 대한 동적 작업 할당 방법 및 장치 | |
KR102417882B1 (ko) | Gpu 자원 관리 방법 및 이를 수행하기 위한 컴퓨팅 장치 | |
AU2016213890B2 (en) | Data parallel computing on multiple processors | |
KR102419972B1 (ko) | 영상 표시를 위한 클라이언트 장치, 서버 장치 및 영상 표시 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |