KR20200117701A - Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법 - Google Patents

Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법 Download PDF

Info

Publication number
KR20200117701A
KR20200117701A KR1020190040211A KR20190040211A KR20200117701A KR 20200117701 A KR20200117701 A KR 20200117701A KR 1020190040211 A KR1020190040211 A KR 1020190040211A KR 20190040211 A KR20190040211 A KR 20190040211A KR 20200117701 A KR20200117701 A KR 20200117701A
Authority
KR
South Korea
Prior art keywords
kernel
gpu
memory
operating frequency
frequency
Prior art date
Application number
KR1020190040211A
Other languages
English (en)
Other versions
KR102165987B1 (ko
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 KR1020190040211A priority Critical patent/KR102165987B1/ko
Publication of KR20200117701A publication Critical patent/KR20200117701A/ko
Application granted granted Critical
Publication of KR102165987B1 publication Critical patent/KR102165987B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

DVFS 기법이 적용된 디바이스 및 주파수 설정 방법이 개시된다. DVFS 기법이 적용된 디바이스가 수행하는 주파수 설정 방법은 GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 상기 커널의 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 결정하는 단계; 및 상기 결정된 계산 집중도 및 메모리 집중도를 이용하여 상기 GPU에 대한 동작 주파수 및 상기 GPU가 커널을 실행하는 과정에서 액세스하는 메모리에 대한 동작 주파수를 각각 설정하는 단계를 포함할 수 있다.

Description

DVFS 기법이 적용된 디바이스 및 주파수 설정 방법{A DEVICE AND FREQUENCY SETTING METHOD USING DVFS TECHNIQUE}
본 발명은 DVFS 기법이 적용된 디바이스 및 주파수 설정 방법에 관한 것으로, 보다 구체적으로는 GPGPU 어플리케이션을 실행하는데 사용되는 GPU 및 메모리의 동작 주파수를 설정하는 기술에 관한 것이다.
GPU (Graphics Processing Units)는 대용량의 그래픽 데이터를 고속으로 처리하기 위한 장치로서, 최근 고해상도의 디스플레이 장치가 개발되면서 하드웨어적으로 높은 사양의 GPU가 개발되었다. 이에 따라, 기존에 CPU가 전통적으로 취급했던 응용 프로그램들의 계산을 GPU가 처리할 수 있게 되었으며, 일반적인 컴퓨팅 작업을 수행하는 것을 GPGPU(General Purpose computation on Graphics Processing Unit)라 한다.
한편, 모바일 디바이스는 배터리 환경의 제한적인 특성 때문에 에너지 소비의 효율에 대한 근본적인 문제점을 가지고 있으므로 GPU가 내장된 모바일 디바이스에서 GPGPU 어플리케이션을 에너지 효율적으로 실행하기 위한 다양한 소프트웨어 기법들이 소개되고 있으며, DVFS(Dynamic Voltage and Frequency Scaling) 기법은 그 중 하나이다. 구체적으로 인터벌 기반 DVFS 기법은 각 인터벌(간격)마다 예상 사용량을 예측하고, 필요한 예측 사용량만큼 동적 주파수를 조절하는 기법이다. 그러나 실제 어플리케이션의 사용량을 정확하게 예측하는 것은 한계가 있어 실제 어플리케이션을 실행하는데 필요한 성능 요구 사항을 충족시킬 수 없는 문제점이 있다.
본 발명은 GPGPU 어플리케이션을 실행하는데 사용되는 GPU 및 메모리의 동작 주파수를 동적으로 조절하는 디바이스 및 방법을 제공할 수 있다.
또한, 본 발명은 GPGPU 어플리케이션에 대한 GPU 및 메모리의 사용량을 정확하게 예측하기 위하여 향후 실행 되어질 GPU 커널의 코드를 분석하여 미래의 사용량을 예상하는 디바이스 및 방법을 제공할 수 있다.
또한, 본 발명은 GPGPU 어플리케이션에 대한 GPU 및 메모리의 사용량을 정확하게 예측하기 위하여 해당 GPGPU 어플리케이션에 대응하는 커널의 이전 마지막 사용량을 활용하는 디바이스 및 방법을 제공할 수 있다.
또한, 본 발명은 GPGPU 어플리케이션에 대한 GPU 및 메모리의 동작 주파수 변경 간격을 결정하기 위하여 해당 GPGPU 어플리케이션에 대응하는 커널의 이전 마지막 러닝 타임을 이용하는 디바이스 및 방법을 제공할 수 있다.
본 발명의 일 실시 예에 따른 DVFS 기법이 적용된 디바이스가 수행하는 주파수 설정 방법은 GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 상기 커널의 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 결정하는 단계; 및 상기 결정된 계산 집중도 및 메모리 집중도를 이용하여 상기 GPU에 대한 동작 주파수 및 상기 GPU가 커널을 실행하는 과정에서 액세스하는 메모리에 대한 동작 주파수를 각각 설정하는 단계를 포함할 수 있다.
상기 결정하는 단계는 상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 메모리 명령어가 차지하는 비율 및 상기 커널을 실행하는 GPU에 포함된 처리 소자(Processing Element, PE)들의 수에 기초하여 상기 커널의 메모리 집중도를 결정할 수 있다.
상기 결정하는 단계는 상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 계산 명령어가 차지하는 비율을 이용하여 상기 커널의 계산 집중도를 결정할 수 있다.
상기 설정하는 단계는 상기 디바이스가 지원하는 최대 주파수와 상기 결정된 계산 집중도를 이용하여 상기 GPU에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하는 단계; 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 러닝 타임에 기초하여 상기 GPU의 초기 동작 주파수를 변경하기 위한 간격을 결정하는 단계; 및 상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 GPU에 대한 초기 동작 주파수를 조절하는 단계를 포함할 수 있다.
상기 조절하는 단계는 상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 GPU에 대한 초기 동작 주파수를 조절할 수 있다.
상기 조절하는 단계는 상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 GPU에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 GPU에 대한 초기 동작 주파수를 감소시킬 수 있다.
상기 설정하는 단계는 상기 디바이스가 지원하는 최대 주파수와 상기 결정된 메모리 집중도를 이용하여 상기 메모리에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하는 단계; 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 실행에서의 러닝 타임에 기초하여 상기 메모리의 초기 동작 주파수를 변경하기 위한 간격을 결정하는 단계; 및 상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 메모리에 대한 초기 동작 주파수를 조절하는 단계를 포함할 수 있다.
상기 조절하는 단계는 상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 메모리에 대한 초기 동작 주파수를 조절할 수 있다.
상기 조절하는 단계는 상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 메모리에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 메모리에 대한 초기 동작 주파수를 감소시킬 수 있다.
본 발명의 일실시예에 따른 DVFS 기법이 적용된 디바이스는 프로세서를 포함하고, 상기 프로세서는 GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 상기 커널의 계산 집중도 및 메모리 집중도를 결정하고, 상기 결정된 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 이용하여 상기 GPU에 대한 동작 주파수 및 상기 GPU가 커널을 실행하는 과정에서 액세스하는 메모리에 대한 동작 주파수를 각각 설정할 수 있다.
상기 프로세서는 상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 메모리 명령어가 차지하는 비율 및 상기 커널을 실행하는 GPU에 포함된 처리 소자(Processing Element, PE)들의 수에 기초하여 상기 커널의 메모리 집중도를 결정할 수 있다.
상기 프로세서는 상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 계산 명령어가 차지하는 비율을 이용하여 상기 커널의 계산 집중도를 결정할 수 있다.
상기 프로세서는 상기 디바이스가 지원하는 최대 주파수와 상기 결정된 계산 집중도를 이용하여 상기 GPU에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하고, 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 실행에서의 러닝 타임에 기초하여 상기 GPU의 초기 동작 주파수를 변경하기 위한 간격을 결정하며, 상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 GPU에 대한 초기 동작 주파수를 조절할 수 있다.
상기 프로세서는 상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 GPU에 대한 초기 동작 주파수를 조절할 수 있다.
상기 프로세서는 상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 GPU에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 GPU에 대한 초기 동작 주파수를 감소시킬 수 있다.
상기 프로세서는 상기 디바이스가 지원하는 최대 주파수와 상기 결정된 메모리 집중도를 이용하여 상기 메모리에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하고, 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 실행에서의 러닝 타임에 기초하여 상기 메모리의 초기 동작 주파수를 변경하기 위한 간격을 결정하며, 상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 메모리에 대한 초기 동작 주파수를 조절할 수 있다.
상기 프로세서는 상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 메모리에 대한 초기 동작 주파수를 조절할 수 있다.
상기 프로세서는 상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 메모리에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 메모리에 대한 초기 동작 주파수를 감소시킬 수 있다.
본 발명은 GPGPU 어플리케이션을 실행하는데 사용되는 GPU 및 메모리의 동작 주파수를 동적으로 조절할 수 있다.
또한, 본 발명은 향후 실행 되어질 GPGPU 어플리케이션을 분석하여 미래의 사용량을 예상함으로 해당 GPGPU 어플리케이션에 대한 GPU 및 메모리의 사용량을 정확하게 예측할 수 있다.
또한, 본 발명은 GPGPU 어플리케이션에 대응하는 커널의 이전 마지막 사용량을 활용함으로써 해당 GPGPU 어플리케이션에 대한 GPU 및 메모리의 사용량을 정확하게 예측할 수 있다.
또한, 본 발명은 GPGPU 어플리케이션에 대응하는 커널의 이전 마지막 러닝 타임을 이용함으로써 해당 GPGPU 어플리케이션에 대한 GPU 및 메모리의 동작 주파수 변경 간격을 적응적으로 결정할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 디바이스의 구성도를 도시한 도면이다.
도 2와 도 3은 본 발명의 일 실시 예에 따른 간격 기반 DVFS 알고리즘이 동작 주파수를 변경하는 DVFS 간격이 고정되었을 때와 적응적으로 변경되었을 때의 낭비 시간과 러닝 타임의 표준 편차를 각각 보여주는 그래프이다.
도 4 및 도 5는 본 발명의 일 실시 예에 따른 다양한 GPGPU 어플리케이션에 대한 GPU의 사용량 편차 및 메모리의 사용량 편차를 각각 보여주는 그래프이다.
도 6은 본 발명의 일 실시 예에 따른 주파수 설정 과정을 도시한 플로우 챠트 이다.
도 7은 본 발명의 일 실시 예에 따른 주파수 설정 방법을 구체화한 알고리즘 1을 나타낸 도면이다.
도 8은 본 발명의 일 실시 예에 따른 주파수 설정 방법을 구체화한 알고리즘 2를 나타낸 도면이다.
도 9은 본 발명의 일 실시 예에 따른 주파수 설정 방법을 구체화한 알고리즘 3을 나타낸 도면이다.
도 10 및 도 11은 본 발명의 일 실시 예에 따른 에너지 소비 및 에너지 효율성의 결과를 도시한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시 예들을 상세하게 설명한다. 그러나, 실시 예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 실시 예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시 예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시 예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시 예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일 실시 예에 따른 디바이스의 구성도를 도시한 도면이다.
도 1을 참고하면 디바이스(100)는 프로세서(110)를 포함하고, 프로세서(110)는 GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 커널의 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 결정할 수 있다. 이후 프로세서(110)는 결정된 계산 집중도 및 메모리 집중도를 이용하여 GPU에 대한 동작 주파수와 GPU가 커널을 실행하는 과정에서 액세스하는 메모리에 대한 동작 주파수를 각각 설정할 수 있다.
특히, 본 발명은 GPU, 메모리에 대한 초기의 동작 주파수 뿐만 아니라, 디바이스(100)가 어플리케이션을 실행하는 중에 변경될 수 있는 동작 주파수의 범위도 설정할 수 있다.
디바이스들 중 모바일 디바이스는 휴대할 수 있는 특성 때문에 배터리 환경이 제한적인 특징을 가진다. 따라서, 비교적 긴 시간 동안 배터리를 사용하기 위하여 모바일 디바이스는 최대 퍼포먼스를 내는 반면 에너지 소비를 줄여야 하는 근본적인 문제점을 가진다. 이러한 기술적 목적을 달성하기 위해 다양한 기술들이 있으며, 동적 전압 및 주파수 설정 방법(dynamic voltage and frequency scaling, 이하 DVFS)은 그 중 하나이다. 하기의 식 1은 에너지와 전압, 주파수 등의 상관관계를 나타내는 식이다.
<식 1>
Figure pat00001
여기서, E 는 소비 에너지, P 는 소비 전력, c 는 모바일 디바이스 안의 CPU나 GPU에 따른 상수 값, F 는 동작 주파수, V 는 동작 주파수에 따라 요구되는 전압, tFV 값이 유지되는 동안의 시간 구간을 나타낸다.
전압 V 는 동작 주파수 F 값에 대하여 직접적으로 비례하는 것은 아니지만, 동작 주파수 값이 높아질수록 요구되는 전압 값 역시 디바이스의 안정적인 동작을 위해서 높아지게 된다. 따라서, 동작 주파수가 증가하면 소비되는 전력 및 에너지 역시 상당하게 증가하므로 소비되는 에너지를 최소화하기 위해서는 GPU의 동작 주파수를 효율적으로 조절하는 것이 필요하다는 것을 알 수 있다.
본 발명은 이러한 필요에 따라 제안된 DVFS 알고리즘 중 간격 기반 DVFS 알고리즘을 통한 주파수 설정 방법을 제공한다. 종래의 간격 기반 DVFS 알고리즘은 주기적으로 GPU의 작업 시간을 측정하고, 일정 기간에 걸친 GPU의 사용량인
Figure pat00002
를 계산할 수 있다. 이후 종래의 간격 기반 DVFS 알고리즘은 GPU에 대한 과거 N 기간 동안의 평균 사용량을 이용하여 다음 간격에서의 예상 사용량
Figure pat00003
을 하기의 식 2와 같이 추정할 수 있다.
<식 2>
Figure pat00004
여기서,
Figure pat00005
는 기간,
Figure pat00006
는 GPU의 실제 실행 시간,
Figure pat00007
은 윈도우(window) 크기를 각각 나타낸다.
이와 같이 종래의 간격 기반 DVFS 알고리즘은 식 2를 통해 다음 DVFS 간격에서의 예상 사용량이 계산되고, 이를 미리 설정된 최대/최소 문턱 값과 비교함으로써 다음 DVFS 간격에서의 GPU에 대한 동작 주파수를 설정할 수 있다. 즉, 종래의 간격 기반 DVFS 알고리즘은 계산된 예상 사용량이 미리 설정된 최대 문턱 값 보다 크면, GPU에 대한 동작 주파수를 증가시키고, 미리 설정된 최소 문턱 값보다 작으면, GPU에 대한 동작 주파수를 감소시킬 수 있다. 이와는 달리 계산된 예상 사용량이 미리 설정된 최대 문턱 값 보다 작고, 최소 문턱 값 보다 크면 현재 DVFS 간격에서의 동작 주파수를 유지할 수 있다.
그러나 이와 같은 종래의 간격 기반 DVFS 알고리즘은 안정적인 작업 부하 상황에서 잘 작동하는 특징을 가진다. 하지만, 연구자 또는 개발자가 일반 용도로 GPU를 프로그래밍 할 수 있기 때문에 대부분의 GPGPU 어플리케이션의 경우 작업 부하가 다양한 특징을 가질 수 있다. 이와 같이 작업 부하가 크게 변동되는 경우 시간에 따른 작업 부하의 추정은 부정확해지고, 이로 인해 GPU의 성능 요구 사항 또는 에너지 요구 사항을 충족시킬 수 없는 문제가 발생한다.
이러한 문제를 해결하기 위하여 본 발명의 프로세서(110)는 GPU를 통해 실행될 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 현재 DVFS 간격에서의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 GPU에 대한 동작 주파수를 설정하는 방법을 제공함으로써 미래의 작업 부하를 추정하는 새로운 접근법을 제공한다.
또한, 본 발명의 프로세서(110)는 GPU의 동작 주파수 뿐만 아니라 GPU가 커널을 시행하는 과정에서 액세스 하는 메모리에 대한 동작 주파수도 함께 설정함으로써 메모리의 병목 현상을 제거하여 성능을 향상시킬 수 있다. 보다 자세한 GPU 및 메모리의 동작 주파수 설정 방법은 이후의 도 2 내지 도 5를 통해 설명하도록 한다.
도 2와 도 3은 본 발명의 일 실시 예에 따른 간격 기반 DVFS 알고리즘이 동작 주파수를 변경하는 DVFS 간격이 고정되었을 때와 적응적으로 변경되었을 때의 낭비 시간과 러닝 타임의 표준 편차를 각각 보여주는 그래프이다.
종래의 간격 기반 DVFS 알고리즘은 DVFS 간격이 필요 이상으로 긴 경우 에너지가 불필요하게 소모될 수 있고, DVFS 간격이 필요 이상으로 짧은 경우 동작 주파수를 자주 측정하여 불필요하게 변경시킬 수 있다. 따라서, 간격 기반 DVFS 알고리즘은 적절한 DVFS 간격을 결정하는 것이 필요하다.
GPU는 DVFS 간격이 만료된 후에만 동작 주파수를 변경할 수 있기 때문에 커널의 실행이 종료된 이후에도 현재의 동작 주파수를 유지해야 한다. 도 2를 참고하면, DVFS 간격이 고정되었을 때와 적응적으로 변경되었을 때의 낭비 시간을 보여준다. 이때, 보다 구체적으로 도 2에서 제1 상자(파란색 상자)는 DVFS 간격이 고정 시간(ex, 100ms)일 때의 평균 낭비 시간을 보여주고, 제2 상자(주황색 상자)는 동일한 커널의 이전 실행에서의 러닝 타임(running time)을 DVFS 간격으로 설정했을 때의 평균 낭비 시간을 보여준다.
복수의 GPGPU 어플리케이션 중 bfs, Gaussian, lud, nw, 및 backprop의 경우, DVFS 간격이 고정 시간일 때 GPU가 커널의 작동을 끝내더라도 동작 주파수는 평균 84.75ms 이후에 수정될 수 있으며, 이로 인해 GPU에서 추가 에너지를 소모하게 된다. 이와는 달리 DVFS 간격이 동일한 커널의 이전 실행에서의 러닝 타임에 기반하여 DVFS 간격이 가변 시간을 가질 경우, 낭비 시간은 10.83ms로 줄어드는 것을 확인할 수 있다.
한편, GPGPU 어플리케이션 중 pathfinder와 kmeans의 경우, DVFS 간격이 고정 시간일 때가 가변 시간일 때에 비해 짧은 낭비 시간을 갖는다. 이는 pathfinder와 kmeans의 경우는 커널의 러닝 타임이 오래 걸리는 공통점이 있기 때문이다. 즉, pathfinder와 kmeans의 경우, 이전 실행에서의 긴 간격으로 인해, GPU는 커널이 종료 된 후에도 주파수를 유지해야 하고, 결과적으로 더 많은 에너지를 소비하게 된다.
이상의 결과를 통해 복수의 GPGPU 어플리케이션 중 bfs, Gaussian, lud, nw 및 backprop 경우의 낭비 시간이 감소된 이유는 커널의 실행에 대한 러닝 타임이 이전 실행에 대한 러닝 타임과 유사하기 때문에 발생한다는 것을 알 수 있다.
특히 도 3을 참고하면, 제1 상자(파란색 상자)는 DVFS 간격이 고정 시간 일 때의 러닝 타임에 대한 표준 편차를 보여주고, 제2 상자(주황색 상자)는 DFVS 간격이 가변 시간일 때의 러닝 타임에 대한 표준 편차를 보여준다.
DVFS 간격이 동일한 커널의 이전 실행에서의 러닝 타임으로 결정된 경우, 모든 GPGPU 어플리케이션에서 DVFS 간격이 고정 시간일 때 보다 러닝 타임의 표준 편차가 작은 것을 확인할 수 있다.
즉, 도 3을 통해 동일의 커널은 러닝 타임이 서로 비슷하다는 것을 알 수 있으며, 도 2를 통해 동일한 커널의 이전 실행에 대한 러닝 타임에 기초하여 DVFS 간격을 결정함으로써 낭비 시간을 줄일 수 있음을 알 수 있다.
이러한 결과를 바탕으로 본 발명의 프로세서(110)는 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 러닝 타임에 기초하여 GPU 및 메모리에 대한 동작 주파수를 변경하기 위한 DVFS 간격을 결정할 수 있다.
도 4 및 도 5는 본 발명의 일 실시 예에 따른 다양한 GPGPU 어플리케이션에 대한 GPU의 사용량 편차 및 메모리의 사용량 편차를 각각 보여주는 그래프이다.
GPGPU 어플리케이션이 실행되는 경우 대부분 반복적인 알고리즘이 사용되기 때문에 GPU는 여러 매개 변수를 사용하여 커널을 반복적으로 실행하는 경우가 많다. 이때, 동일한 커널을 실행한다는 것은 비슷한 패턴의 작업 부하가 발생하고, 이로 인해 GPU의 유사한 사용량이 반복된다는 것을 의미할 수 있다.
동일한 커널의 이러한 반복을 정확하게 분석하기 위하여 동일한 커널의 반복적인 실행을 통해 발생하는 사용률을 통해 측정된 제1 사용률 편차와 종래의 간격 기반 DVFS 알고리즘이 동작 주파수를 설정을 위해 이용하는 연속적인 사용률을 통해 측정된 제2 사용률 편차 간의 비교가 수행되었다.
도 4와 도 5는 Rodinia 벤치 마크에서 GPU와 메모리의 결과를 보여준다. 도 4와 도 5를 참고하면, 제1 상자(파란색 상자)는 종래의 간격 기반 DVFS 알고리즘이 동작 주파수를 설정을 위해 이용하는 연속적인 사용률을 통해 측정된 제2 사용률 편차이다. 그리고, 제2 상자(주황색 상자)는 동일한 커널이 연속적으로 실행되었을 때 발생하는 사용률을 통해 측정된 제1 사용률 편차이다.
모든 GPGPU 어플리케이션의 경우에 제1 사용률 편차가 제2 사용률 편차 보다 작거나 같으므로, 동일한 커널이 연속적으로 실행되었을 때 발생하는 사용률이 종래의 간격 기반 DVFS 알고리즘이 이용하는 연속적인 사용률 보다 높은 유사성을 가질 수 있다.
이러한 결과를 바탕으로 본 발명의 프로세서(110)는 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 GPU 및 메모리에 대한 동작 주파수를 설정할 수 있다.
즉, 프로세서는(110)는 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 현재의 DVFS 간격에서의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 GPU 및 메모리에 대한 동작 주파수를 설정할 수 있다.
구체적으로 프로세서(110)는 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, GPU 및 메모리에 대한 동작 주파수를 증가시키고, 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, GPU 및 메모리에 대한 동작 주파수를 감소시킬 수 있다.
도 6은 본 발명의 일 실시 예에 따른 주파수 설정 과정을 도시한 플로우 챠트 이다.
단계(610)에서, 디바이스(100)의 프로세서(110)는 GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 커널의 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 결정할 수 있다.
GPU의 기능 중 하나는 같은 워킹 그룹 내의 모든 워킹 항목이 동일한 명령을 병렬(Lock-step)로 실행한다는 것이다. CPU의 스레드(Thread)는 완전히 다른 코드 부분을 실행할 수 있지만, GPU의 워킹 항목은 동일한 워킹 그룹 내에 있으면 병렬로 수행될 수 밖에 없다.
이러한 Lock-step의 실행은 메모리 작업 부하가 증가하는 이유 중 하나 일 수 있다. GPGPU 어플리케이션은 동일한 워킹 그룹 내에서 많은 수의 워킹 항목을 사용할 수 있으며, 동시에 메모리에 액세스 할 수 있다. 이러한 동시 액세스는 GPU가 모든 워킹 항목에 대한 메모리 액세스 완료를 기다려야 하므로 성능과 에너지 효율성을 감소시킬 수 있다.
GPGPU 어플리케이션이 실행되는 동안 GPU 및 메모리의 주파수는 GPGPU 어플리케이션이 향후 제공 할 작업 부하에 따라 결정되어야 한다. 만약 GPGPU 어플리케이션이 계산 집중적인 요청을 하면 GPU가 병목 현상을 일으키므로 메모리의 주파수가 증가해도 성능이 향상되지 않는다. 또는 GPGPU 어플리케이션이 메모리 집중적인 요청을 하는 경우 GPU의 주파수가 증가해도 메모리가 병목 현상을 일으키므로 성능을 향상시킬 수 없다. 두 경우 모두 성능 상의 이점 없이 에너지를 소비하는 문제가 발생할 수 있다.
GPU의 캐시가 메모리에 대한 액세스 요청 수를 줄일 수는 있지만 모바일 디바이스의 GPU에서는 캐시 크기가 크지 않으며, 특히 GPGPU 어플리케이션의 경우에는 작업 중인 워킹 항목의 수가 매우 커질 수 있다.
결과적으로 많은 경우 메모리 집중도가 캐시 능력보다 높을 수 있으므로 GPU와 메모리의 적절한 동작 주파수를 위해 설정하기 위하여 커널의 메모리 집중도를 찾아야 한다.
프로세서(110)는 커널의 메모리 집중도를 결정하기 위해 GPU가 실행할 커널의 소스 코드를 조사할 수 있다. 구체적으로 복수의 처리 소자(Processing Element)들이 GPU에서 록 스텝 방식으로 동일한 명령을 실행하고 동시에 메모리에 액세스하기 때문에 커널의 메모리 명령어 수 이외에도 동작 중인 처리 소자들의 수는 메모리 집중도에 비례할 수 있다. 따라서, 프로세서(110)는 커널의 소스 코드 분석을 통해 확인된 전체 명령어 중 메모리 명령어가 차지하는 비율 및 커널을 실행하는 GPU에 포함된 처리 소자들의 수에 기초하여 하기의 식 3과 같이 커널의 메모리 집중도를 결정할 수 있다.
<식 3>
Figure pat00008
여기서,
Figure pat00009
은 커널의 메모리 집중도이고,
Figure pat00010
는 동작중인 처리 소자들의 수,
Figure pat00011
은 메모리 명령어의 수,
Figure pat00012
는 계산 명령어의 수를 나타낸다.
식 3을 통해 커널의 메모리 집중도가 커널 내의 메모리 명령어 비율과 커널을 실행하는 처리 소자들의 수에 비례함을 나타낸다. 이는 처리 소자들이 동시에 메모리에 액세스하기 때문이다.
커널을 실행할 때 물리적 GPU 코어(처리 소자)의 수
Figure pat00013
또는 워킹 그룹 내의 워킹 항목 수
Figure pat00014
는 주어진 커널을 동시에 실행할 처리 소자의 수
Figure pat00015
를 하기의 식 4와 같이 결정할 수 있다.
<식 4>
Figure pat00016
따라서, 프로세서(110)는 상기의 식 3과 식 4를 통해 GPU가 커널을 실행하기 전에 커널의 메모리 집중도
Figure pat00017
을 결정할 수 있다. 그러나 커널은 계산 명령어과 메모리 명령어를 모두 포함하고 있기 때문에 커널의 메모리 집중도는 커널을 실행하는 동안 변경 될 수 있다.
따라서, 프로세서(110)는 메모리 집중도와 커널의 실행 중에 동적으로 변하기 때문에 주파수를 고정하기 않고, 상기의 식 3에 따른 메모리 집중도를 기반으로 메모리의 주파수 범위를 설정할 수 있다. 구체적으로, 메모리와 GPU는 디바이스가 어플리케이션을 실행하는 과정에 동작 주파수가 변경될 수 있다. 이를 위해, 본 발명은 향후에 실행될 GPU 코드를 분석함으로써 계산 집중도와 메모리 집중도를 계산하고, 계산 집중도와 메모리 집중도를 이용하여 메모리와 GPU를 위한 초기의 동작 주파수를 결정할 수 있다. 그리고, 프로세서(110)는 디바이스가 향후에 어플리케이션을 실행하기 위해 동작 주파수의 범위를 미리 설정할 수 있다.
한편, 프로세서(110)는 커널의 계산 집중도를 하기의 식 5를 통해 획득할 수 있다.
<식 5>
Figure pat00018
이때, 프로세서(110)는 커널의 계산 집중도
Figure pat00019
를 결정하기 위하여 커널을 동시에 실행할 처리 소자의 수
Figure pat00020
를 곱하지 않는데, 이는 각 처리 소자가 개별적으로 실행될 수 있고 계산 집중도가 처리 소자들의 수에 비례하여 증가하지 않기 때문이다.
단계(620)에서, 프로세서(110)는 디바이스(100)가 지원하는 최대 주파수와 단계(610)을 통해 결정된 계산 집중도 및 메모리 집중도를 이용하여 GPU 및 메모리에 대한 동작 주파수 및 커널의 실행 중에 변경 가능한 동작 주파수의 주파수 범위를 추출할 수 있다. 보다 구체적으로 프로세서(110)는 최대 주파수와 계산 집중도의 곱, 최대 주파수와 메모리 집중도의 곱을 통해 앞으로 실행된 커널에 대한 GPU 및 메모리의 적절한 동작 주파수 및 동작 주파수의 변경 가능한 주파수 범위가 임시로 결정할 수 있다.
단계(630)에서, 프로세서(110)는 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 러닝 타임에 기초하여 임시로 결정된 GPU 및 메모리의 동작 주파수를 변경하기 위한 DVFS 간격을 결정할 수 있다.
단계(640)에서, 프로세서(110)는 결정된 DVFS 간격 마다 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 변경 가능한 주파수 범위 내에서 GPU 및 메모리의 동작 주파수를 조절할 수 있다.
보다 구체적으로, 프로세서(110)는 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 커널에 대한 현재 DVFS 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 GPU 및 메모리에 대한 동작 주파수를 조절할 수 있다.
일례로, 프로세서(110)는 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, GPU 및 메모리에 대한 동작 주파수를 증가시키고, 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, GPU 및 메모리에 대한 동작 주파수를 감소시킬 수 있다.
도 7은 본 발명의 일 실시 예에 따른 주파수 설정 방법을 구체화한 알고리즘 1을 나타낸 도면이다.
본 발명의 DVFS 알고리즘은 주로 어플리케이션 레벨 및 운영 체제 레벨로 구성될 수 있다. 어플리케이션 레벨의 DVFS 알고리즘은 GPU가 커널을 실행하기 전 GPU 및 메모리의 변경 가능한 주파수 범위를 설정하고, 운영 체제 레벨의 DVFS 알고리즘은 GPU가 커널을 실행하는 과정에서 동작 주파수를 변경 가능한 주파수 범위 내에서 미세하게 제어할 수 있다.
알고리즘 1은 어플리케이션 레벨에서 실행되는 DVFS 알고리즘으로 CPU가 실행해 주며, 앞으로 GPU가 실행하는 커널의 소스 코드를 이용하여 운영 체제 내부적으로 실행하는 DVFS 알고리즘을 위한 주파수 범위 및 DVFS 간격을 미리 설정할 수 있다. 알고리즘 1의 동작은 아래의 구성을 가질 수 있다.
(1) Lines 1-6 : GPGPU 어플리케이션이 처음 실행되는 경우 GPU에서 앞으로 실행될 커널의 소스 코드를 분석하여 계산하는 명령어들의 수인
Figure pat00021
와 메모리에 접근하는 명령어들의 수인
Figure pat00022
을 미리 찾아서 계산한 후 전체 명령어 중 계산하는 명령어들의 비율인
Figure pat00023
를 결정하고 기록함.
(2) Lines 7-10 : 디바이스가 지원하는 최대 주파수인
Figure pat00024
에서 계산하는 명령어들의 비율인
Figure pat00025
를 곱하여 GPU에서 앞으로 실행되어질 커널에 대한 적절한 주파수로 예상되는 예상 주파수
Figure pat00026
를 찾고, 디바이스가 지원하는 주파수들 중
Figure pat00027
이상의 주파수인
Figure pat00028
를 초기 동작 주파수로 추출함. 이후 GPU가 실행되는 동안 변경될 수 있는 동작 주파수의 범위를 범위 매개 변수
Figure pat00029
를 이용하여
Figure pat00030
부터
Figure pat00031
로 설정함.
(3) Lines 11-14 : GPU가 앞으로 실행할 커널이 이전에 실행된 적이 있고, 이전 마지막 실행에서의 러닝 타임이 간격 임계 값
Figure pat00032
보다 작은 경우, 앞으로도 빨리 끝날 것으로 예상하고, DVFS 간격을 이전 마지막 실행에서의 러닝 타임으로 결정함.
상기의 알고리즘 1은 GPU의 주파수 설정 방법에 대한 구성 만을 제공하지만 메모리의 경우, Line 4에서 식 5 대신 식 3 및 식 4가 이용될 뿐 나머지 구성은 동일할 수 있다.
위에서 언급한 바와 같이 알고리즘 1은 커널의 실행 중 사용되는 초기 동작 주파수와 변경 가능한 주파수 범위를 임시로 설정할 수 있다. 이를 위해서는 지원되는 주파수 목록을 알아야 하는데 모든 계산 디바이스들은 GPU와 메모리에 대해 서로 다른 주파수 목록을 가지고 있다. 따라서, 목록을 얻으려면 아래와 같이 C 언어로 표현된 새로운 데이터 유형을 정의해야 한다.
Figure pat00033
그런 다음 알고리즘 1은 아래의 함수를 추가하여 GPU 및 메모리에 지원되는 주파수 목록을 얻을 수 있다.
Figure pat00034
또한, 아래의 함수를 추가하여 GPU의 초기 동작 주파수 및 변경 가능한 주파수 범위를 설정할 수 있다.
Figure pat00035
이름에서 알 수 있듯이 SetGPUFrequency 함수는 일시적으로 GPU의 주파수를 설정하고, SetGPUMinLockFrequency 함수는 최소 주파수를 설정하며, SetGPUMaxLockFrequency 함수는 최대 주파수를 설정할 수 있다.
마찬가지로 알고리즘 1은 메모리의 주파수 범위를 설정하기 위하여 다음과 같은 기능을 추가할 수 있고, 메모리에 대해 GPU 함수와 동일한 작업을 수행할 수 있다.
Figure pat00036
알고리즘 1은 주파수 설정을 위해 계산 명령어 및 메모리 명령어의 수를 필요로 하는데 이를 찾기 위해서는 LLVM(Low Level Virtual Machine)을 통해 SPIR(Standard Portable Intermediate Representation) 코드를 생성하고, 전체 명령어의 수 및 로드/저장 명령어의 수를 계산할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 주파수 설정 방법을 구체화한 알고리즘 2를 나타낸 도면이다.
알고리즘 2 역시 어플리케이션 레벨에서 실행되는 DVFS 알고리즘으로 커널의 실행 후 버퍼에 커널 이름과 실행 시간(러닝 타임)을 기록하기 위해 호출될 수 있다. 이와 동시에 알고리즘 2는 GPU가 커널의 실행을 종료한 경우, 실행 전에 미리 설정해 둔 변경 가능한 주파수 범위 및 DVFS 간격 등의 설정을 해제할 수 있다.
도 9은 본 발명의 일 실시 예에 따른 주파수 설정 방법을 구체화한 알고리즘 3을 나타낸 도면이다.
알고리즘 3은 운영체제 레벨에서 실행되는 알고리즘으로 GPU가 커널을 실행하는 동안 DVFS 간격이 만료될 때마다 호출되어 CPU가 실행하며, GPU의 동작 주파수를 세밀하게 조절할 수 있다. 알고리즘 3의 동작은 아래의 구성을 가질 수 있다.
(1) Lines 1-3 : 현재 GPU가 실행 중인 커널에 대해 이전에 실행한 적이 없어 과거 사용량 변화에 대한 정보가 없다면 종래에 이미 존재하는 간격 기반 DVFS 알고리즘을 통해 동작 주파수를 조절함.
(2) Lines 4-12 : 현재 GPU가 실행 중인 커널이 이전에 실행한 적이 있다면, 동일 기간의 사용량과 문턱 값을 비교하여 동작 주파수를 조절함. 구체적으로 동일 기간의 사용량이 최대 문턱 값보다 큰 경우, 동작 주파수를 증가시키고, 최소 문턱 값보다 작은 경우, 동작 주파수를 감소시킴.
(3) Lines 13 : 현재 GPU가 실행 중인 커널의 이름, 운영 체제 안에서 해당 DVFS 알고리즘이 실행된 번호 및 새로운 사용량을 기록함.
도 10 및 도 11은 본 발명의 일 실시 예에 따른 에너지 소비 및 에너지 효율성의 결과를 도시한 도면이다.
평가를 위한 벤치 마크로, 본 발명은 성능 및 에너지 소비를 측정하기 위해 7 개의 GPGPU 애플리케이션을 사용하였다. Bfs(breadth first search)는 1,000,000 개의 노드를 가진 그래프를 병렬로 순회하고, Gaussian(Gaussian elimination)은 Gaussian elimination 방법을 사용하여 선형 시스템을 해결하며, Lud(LU decomposition)은 일련의 선형 방정식에 대한 해를 계산하는 GPGPU 어플리케이션이다.
또한, Nw(Needleman-Wunsch)는 DNA 서열 정렬을 위한 최적화 방법이고, pathfinder는 2D 그리드에서 가장 작은 누적 가중치를 갖는 경로를 찾으며, backprop은 연결 노드의 가중치를 전달하는 알고리즘이고, kmeans는 데이터 마이닝을 위한 클러스터링 알고리즘이다.
본 발명은 이와 같은 GPGPU 애플리케이션을 Android에 복사하고 성능 비교를 위해 사용했다. 본 발명은 알고리즘 1, 2, 3을 구현하고, 알고리즘 1의 파라미터
Figure pat00037
Figure pat00038
을 각각 1과 100으로 설정한 후 에너지 소비를 도 10와 같이 종래의 간격 기반 DVFS 알고리즘 및 GPGPU-Perf와 비교하였다.
소비된 에너지를 측정할 때 본 발명은 Odroid 내부의 INA231을 통해 소모된 전력을 측정하고 시간을 곱했으며, 소비된 에너지를 GPU와 메모리에 더하였다.
도 10을 참고하면, 제1 상자(파란색 상자)는 본 발명의 DVFS 알고리즘이 종래의 간격 기반 DVFS 알고리즘과 비교하여 향상된 에너지 소비의 비율을 나타내며 제1 상자(주황색 상자)는 본 발명의 DVFS 알고리즘이 GPGPU-Perf 알고리즘과 비교하여 향상된 에너지 소비의 비율을 나타낸다. 이때, 도 10에서 실선(빨간색 선) 대비하여 값이 1보다 작으면 비교 대상보다 에너지 소비가 감소한 것을 의미할 수 있다.
즉, 도 10을 참고하면, 종래의 간격 기반 DVFS 알고리즘 및 GPGPU-Perf와 비교할 때 본 발명의 DVFS 알고리즘은 각각 0.7 및 0.73만큼 평균 에너지 소비가 감소하는 것을 확인할 수 있다.
한편, 도 11을 참고하면, 제1 상자(파란색 상자)는 본 발명의 DVFS 알고리즘이 종래의 간격 기반 DVFS 알고리즘에 비해 향상된 에너지 효율성의 비율을 나타내며 제2 상자(주황색 상자)는 본 발명의 DVFS 알고리즘이 GPGPU-Perf 알고리즘에 비해 향상된 에너지 효율성의 비율을 나타낸 것이다.
도 11을 참고하면, 본 발명의 DVFS 알고리즘은 종래의 간격 기반 DVFS 알고리즘과 GPGPU-Perf에 비해 모든 케이스에서 에너지 효율성을 각각 3.42 배, 1.74 배 증가시키는 것을 확인 할 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐 만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시 예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술 분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시 예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100 : 디바이스
110 : 프로세서

Claims (19)

  1. DVFS 기법이 적용된 디바이스가 수행하는 주파수 설정 방법에 있어서,
    GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 상기 커널의 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 결정하는 단계; 및
    상기 결정된 계산 집중도 및 메모리 집중도를 이용하여 상기 GPU에 대한 동작 주파수 및 상기 GPU가 커널을 실행하는 과정에서 액세스하는 메모리에 대한 동작 주파수를 각각 설정하는 단계
    를 포함하는 주파수 설정 방법.
  2. 제1항에 있어서,
    상기 결정하는 단계는,
    상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 메모리 명령어가 차지하는 비율 및 상기 커널을 실행하는 GPU에 포함된 처리 소자(Processing Element, PE)들의 수에 기초하여 상기 커널의 메모리 집중도를 결정하는 주파수 설정 방법.
  3. 제1항에 있어서,
    상기 결정하는 단계는,
    상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 계산 명령어가 차지하는 비율을 이용하여 상기 커널의 계산 집중도를 결정하는 주파수 설정 방법.
  4. 제1항에 있어서,
    상기 설정하는 단계는,
    상기 디바이스가 지원하는 최대 주파수와 상기 결정된 계산 집중도를 이용하여 상기 GPU에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하는 단계;
    상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 러닝 타임에 기초하여 상기 GPU의 초기 동작 주파수를 변경하기 위한 간격을 결정하는 단계; 및
    상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 GPU에 대한 초기 동작 주파수를 조절하는 단계
    를 포함하는 주파수 설정 방법.
  5. 제4항에 있어서,
    상기 조절하는 단계는,
    상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 GPU에 대한 초기 동작 주파수를 조절하는 주파수 설정 방법.
  6. 제5항에 있어서,
    상기 조절하는 단계는,
    상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 GPU에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 GPU에 대한 초기 동작 주파수를 감소시키는 주파수 설정 방법.
  7. 제1항에 있어서,
    상기 설정하는 단계는,
    상기 디바이스가 지원하는 최대 주파수와 상기 결정된 메모리 집중도를 이용하여 상기 메모리에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하는 단계;
    상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 실행에서의 러닝 타임에 기초하여 상기 메모리의 초기 동작 주파수를 변경하기 위한 간격을 결정하는 단계; 및
    상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 메모리에 대한 초기 동작 주파수를 조절하는 단계
    를 포함하는 주파수 설정 방법.
  8. 제7항에 있어서,
    상기 조절하는 단계는,
    상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 메모리에 대한 초기 동작 주파수를 조절하는 주파수 설정 방법.
  9. 제8항에 있어서,
    상기 조절하는 단계는,
    상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 메모리에 대한 초기 동작 주파수를 증가시키고,
    상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 메모리에 대한 초기 동작 주파수를 감소시키는 주파수 설정 방법.
  10. 제1항 내지 제9항 중에서 어느 하나의 항의 방법을 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  11. DVFS 기법이 적용된 디바이스에 있어서,
    프로세서
    를 포함하고,
    상기 프로세서는,
    GPU를 통해 실행될 어플리케이션에 대응하는 커널의 소스 코드를 분석하여 상기 커널의 계산 집중도 및 메모리 집중도를 결정하고, 상기 결정된 계산 집중도(computation intensiveness) 및 메모리 집중도(memory intensiveness)를 이용하여 상기 GPU에 대한 동작 주파수 및 상기 GPU가 커널을 실행하는 과정에서 액세스하는 메모리에 대한 동작 주파수를 각각 설정하는 디바이스.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 메모리 명령어가 차지하는 비율 및 상기 커널을 실행하는 GPU에 포함된 처리 소자(Processing Element, PE)들의 수에 기초하여 상기 커널의 메모리 집중도를 결정하는 디바이스.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 커널의 소스 코드를 분석하여 획득한 전체 명령어 중 계산 명령어가 차지하는 비율을 이용하여 상기 커널의 계산 집중도를 결정하는 디바이스.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 디바이스가 지원하는 최대 주파수와 상기 결정된 계산 집중도를 이용하여 상기 GPU에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하고,
    상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 실행에서의 러닝 타임에 기초하여 상기 GPU의 초기 동작 주파수를 변경하기 위한 간격을 결정하며,
    상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 GPU에 대한 초기 동작 주파수를 조절하는 디바이스.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 GPU에 대한 초기 동작 주파수를 조절하는 디바이스.
  16. 제14항에 있어서,
    상기 프로세서는,
    상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 GPU에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 GPU에 대한 초기 동작 주파수를 감소시키는 디바이스.
  17. 제11항에 있어서,
    상기 프로세서는,
    상기 디바이스가 지원하는 최대 주파수와 상기 결정된 메모리 집중도를 이용하여 상기 메모리에 대한 초기 동작 주파수 및 상기 초기 동작 주파수의 변경 가능한 주파수 범위를 추출하고,
    상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 실행에서의 러닝 타임에 기초하여 상기 메모리의 초기 동작 주파수를 변경하기 위한 간격을 결정하며,
    상기 결정된 간격마다 상기 GPU를 통해 실행되는 커널과 동일한 커널에 대한 이전 마지막 실행에서의 사용량에 기초하여 상기 변경 가능한 주파수 범위 내에서 상기 메모리에 대한 초기 동작 주파수를 조절하는 디바이스.
  18. 제17항에 있어서,
    상기 프로세서는,
    상기 동일한 커널에 대한 이전 마지막 실행에서의 사용량을 상기 커널에 대한 현재 간격의 예상 사용량으로 판단하고, 판단된 예상 사용량과 미리 설정된 문턱 값을 이용하여 상기 메모리에 대한 초기 동작 주파수를 조절하는 디바이스.
  19. 제18항에 있어서,
    상기 프로세서는,
    상기 판단된 예상 사용량이 미리 설정된 최대 문턱 값 보다 큰 경우, 상기 메모리에 대한 초기 동작 주파수를 증가시키고, 상기 판단된 예상 사용량이 미리 설정된 최소 문턱 값 보다 작은 경우, 상기 메모리에 대한 초기 동작 주파수를 감소시키는 디바이스.
KR1020190040211A 2019-04-05 2019-04-05 Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법 KR102165987B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190040211A KR102165987B1 (ko) 2019-04-05 2019-04-05 Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190040211A KR102165987B1 (ko) 2019-04-05 2019-04-05 Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법

Publications (2)

Publication Number Publication Date
KR20200117701A true KR20200117701A (ko) 2020-10-14
KR102165987B1 KR102165987B1 (ko) 2020-10-15

Family

ID=72847131

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190040211A KR102165987B1 (ko) 2019-04-05 2019-04-05 Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법

Country Status (1)

Country Link
KR (1) KR102165987B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160015864A (ko) * 2014-08-01 2016-02-15 삼성전자주식회사 프로세서의 동적 전압 주파수 스케일링 방법
KR20160113214A (ko) * 2014-03-27 2016-09-28 인텔 코포레이션 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160113214A (ko) * 2014-03-27 2016-09-28 인텔 코포레이션 그래픽 처리 유닛 주파수의 동적 조절을 지원하는 방법 및 장치
KR20160015864A (ko) * 2014-08-01 2016-02-15 삼성전자주식회사 프로세서의 동적 전압 주파수 스케일링 방법

Also Published As

Publication number Publication date
KR102165987B1 (ko) 2020-10-15

Similar Documents

Publication Publication Date Title
US11062673B2 (en) Closed loop CPU performance control
CN107515663B (zh) 调整中央处理器内核运行频率的方法和装置
Chetsa et al. Exploiting performance counters to predict and improve energy performance of HPC systems
US7802236B2 (en) Method and apparatus for identifying similar regions of a program&#39;s execution
US8327172B2 (en) Adaptive memory frequency scaling
Guerreiro et al. DVFS-aware application classification to improve GPGPUs energy efficiency
JP5745038B2 (ja) マルチスレッドアプリケーションのパフォーマンスを解析する方法及びシステム
Austin et al. Measurement and interpretation of micro-benchmark and application energy use on the cray xc30
Rotem et al. H-EARtH: Heterogeneous multicore platform energy management
Rossi et al. Modeling power consumption for DVFS policies
KR20200042221A (ko) 모바일 단말 장치 내의 프로세서의 전력을 관리하는 장치 및 방법
Chetsa et al. Beyond cpu frequency scaling for a fine-grained energy control of hpc systems
KR102165987B1 (ko) Dvfs 기법이 적용된 디바이스 및 주파수 설정 방법
CN116909378A (zh) 一种基于深度强化学习的gpu动态能源效率优化运行时方法及系统
Ali et al. Optimal GPU frequency selection using multi-objective approaches for hpc systems
Monil et al. Incorporating Migration Control in VM Selection Strategies to Enhance Performance.
Rodriguez-Gonzalo et al. Improving the energy efficiency of MPI applications by means of malleability
Chetsa et al. Application-agnostic framework for improving the energy efficiency of multiple hpc subsystems
Choi et al. Analyzing the energy efficiency of the fast multipole method using a DVFS-aware energy model
Kim et al. Dynamic frequency scaling for embedded systems with memory intensive applications
Homayoun Heterogeneous chip multiprocessor architectures for big data applications
Bratek et al. Heterogeneous voltage frequency scaling of data-parallel applications for energy saving on homogeneous multicore platforms
Akgun et al. Kml: Using machine learning to improve storage systems
Zhu et al. Onac: optimal number of active cores detector for energy efficient gpu computing
Li et al. Memory Throttling on {BG/Q}: A Case Study with Explicit Hydrodynamics

Legal Events

Date Code Title Description
GRNT Written decision to grant