KR20170102726A - 이종 컴퓨팅 방법 - Google Patents

이종 컴퓨팅 방법 Download PDF

Info

Publication number
KR20170102726A
KR20170102726A KR1020160025212A KR20160025212A KR20170102726A KR 20170102726 A KR20170102726 A KR 20170102726A KR 1020160025212 A KR1020160025212 A KR 1020160025212A KR 20160025212 A KR20160025212 A KR 20160025212A KR 20170102726 A KR20170102726 A KR 20170102726A
Authority
KR
South Korea
Prior art keywords
cpu
gpu
application program
learning
workload
Prior art date
Application number
KR1020160025212A
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 KR1020160025212A priority Critical patent/KR20170102726A/ko
Priority to US15/167,861 priority patent/US20170255877A1/en
Publication of KR20170102726A publication Critical patent/KR20170102726A/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • 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/3442Recording 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 planning or managing the needed capacity
    • G06F15/18
    • 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/5061Partitioning or combining of resources
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 오프라인 및 온라인 학습을 통하여 효과적으로 작업량을 분배할 수 있도록 한 이종 컴퓨팅 방법에 관한 것이다.
본 발명의 실시예에 의한 이종 컴퓨팅 방법은 응용 프로그램들의 컴파일 및 런타임을 이용하여 알고리즘을 오프라인 학습시키는 단계와; 모바일 기기에서 제 1응용 프로그램이 실행되는 단계와; 상기 알고리즘을 이용하여 상기 제 1응용 프로그램의 CPU 및 GPU의 작업량을 분배하는 단계와; 상기 제 1응용 프로그램의 CPU 및 GPU의 작업량을 재설정하기 위하여 온라인 학습을 수행하는 단계와; 상기 제 1응용 프로그램의 CPU 및 GPU 작업량을 상기 온라인 학습 결과에 대응하여 재설정하는 단계를 포함한다.

Description

이종 컴퓨팅 방법{HETEROGENEOUS COMPUTING METHOD}
본 발명의 실시예는 이종 컴퓨팅 방법에 관한 것으로, 오프라인 및 온라인 학습을 통하여 효과적으로 작업량을 분배할 수 있도록 한 이종 컴퓨팅 방법에 관한 것이다.
이종 컴퓨팅이란, CPU(Central Processing Unit)에서 처리하던 작업을 GPU(Graphics Processing Unit)와 나누어 처리하는 것을 의미한다. GPU는 그래픽 처리에 특화되었지만, 최신 기술의 발달로 CPU의 작업 일부를 담당하는 것이 가능해졌다.(일례로, GPGPU : General-Purpose computing on Graphics Processing Units)
CPU는 직렬 처리에 최적화된 하나 이상의 코어로 구성되고, 이에 따라 순차적인 작업을 빠른 처리 속도로 처리할 수 있다. 이에 반하여, GPU는 백 개 이상의 코어로 구성되고, 이에 따라 단순 작업을 병렬처리 하기에 적합하다.
따라서, 본 발명은 오프라인 및 온라인 학습을 통하여 효과적으로 작업량을 분배할 수 있도록 한 이종 컴퓨팅 방법을 제공하는 것이다.
본 발명의 실시예에 의한 이종 컴퓨팅 방법은 응용 프로그램들의 컴파일 및 런타임을 이용하여 알고리즘을 오프라인 학습시키는 단계와; 모바일 기기에서 제 1응용 프로그램이 실행되는 단계와; 상기 알고리즘을 이용하여 상기 제 1응용 프로그램의 CPU 및 GPU의 작업량을 분배하는 단계와; 상기 제 1응용 프로그램의 CPU 및 GPU의 작업량을 재설정하기 위하여 온라인 학습을 수행하는 단계와; 상기 제 1응용 프로그램의 CPU 및 GPU 작업량을 상기 온라인 학습 결과에 대응하여 재설정하는 단계를 포함한다.
실시 예에 의한, 상기 응용 프로그램들 및 상기 제 1응용 프로그램은 WebCL로 작성된다.
실시 예에 의한, 상기 온라인 학습이 끝난 후, 상기 제 1응용 프로그램의 현재루틴을 종료하고, 상태값을 반환하는 단계와; 상기 종료된 현재루틴 및 상기 상태값을 이용하여 상기 제 1응용 프로그램의 시작지점을 설정하는 단계와; 상기 온라인 학습에 대응하여 상기 CPU 및 상기 GPU의 작업량을 분배하는 단계와; 상기 시작시점부터 상기 제 1응용 프로그램을 실행하는 단계를 더 포함한다.
실시 예에 의한, 상기 온라인 학습은 백그라운드에서 수행된다.
실시 예에 의한, 상기 오프라인 학습 단계는 상기 응용 프로그램들의 컴파일로부터 특징값을 추출하는 단계와; 상기 CPU 및 GPU의 작업량 비율을 변경하면서 상기 응용 프로그램들의 런타임을 분석하는 단계와; 상기 추출값 및 상기 런타임 분석 결과에 대응하여 상기 알고리즘을 학습시키는 단계를 포함한다.
실시 예에 의한, 상기 특징값은 메모리 접근 횟수, 부동소수점 연산 개수, 상기 CPU 및 상기 GPU 간 데이터 전이 횟수, 반복 루프의 크기 중 적어도 하나가 포함된다.
실시 예에 의한, 상기 알고리즘은 상기 제 1응용 프로그램의 컴파일로부터 추출된 특징값을 이용하여 상기 CPU 및 상기 GPU의 작업량을 분배한다.
실시 예에 의한, 상기 특징값은 메모리 접근 횟수, 부동소수점 연산 개수, 상기 CPU 및 상기 GPU 간 데이터 전이 횟수, 반복 루프의 크기 중 적어도 하나가 포함된다.
실시 예에 의한, 상기 온라인 학습을 수행하는 단계는 코어당 작업 아이템의 수를 변경하면서 성능이 포화 상태인지를 판단하는 제 1단계와; 상기 제 1단계에서 성능이 개선된 경우, 상기 CPU 및 GPU의 작업량 비율을 변경하면서 상기 제 1단계를 반복하는 제 2단계와; 상기 제 1단계에서 성능이 개선되지 않는 경우, 상기 온라인 학습을 종료하는 제 3단계를 포함한다.
실시 예에 의한, 상기 포화 상태로 판단되는 시점은, 상기 코어당 작업 아이템의 수가 증가될 때 상기 제 1응용 프로그램의 실행시간이 미리 설정된 임계시간 이내로 단축될 때이다.
실시 예에 의한, 상기 코어당 할당되는 상기 작업 아이템의 수는 선형적으로 증가된다.
실시 예에 의한, 상기 코어당 할당되는 상기 작업 아이템의 수는 지수 함수적으로 증가된다.
실시 예에 의한, 상기 성능은 상기 제 1응용 프로그램의 실행속도를 이용하여 판단한다.
본 발명의 실시예에 의한 이종 컴퓨팅 방법에 의하면 알고리즘을 오프라인에서 학습시키고, 학습된 알고리즘을 이용하여 모바일 기기에서 응용 프로그램의 CPU 및 GPU의 작업량을 분배한다. 이후, 응용 프로그램이 실행되는 동안 온라인 학습을 통하여 CPU 및 GPU의 작업량, 코어당 할당되는 작업 아이템의 수를 재설정한다. 그리고, 온라인 학습 결과를 반영하여 모바일 기기에서 응용 프로그램을 실행시킨다. 즉, 본원 발명은 오프라인 학습 및 온라인 학습을 통하여 응용 프로그램의 CPU 및 GPU 비율을 최적으로 설정할 수 잇다.
도 1은 본 발명의 실시예에 의한 오프라인 학습 방법을 나타내는 흐름도이다.
도 2는 본 발명의 실시예에 의한 이종 컴퓨팅 환경에서 작업량을 분배하는 과정을 나타내는 흐름도이다.
도 3은 본 발명의 실시예에 의한 온라인 학습 방법을 나타내는 흐름도이다.
이하 첨부한 도면을 참고하여 본 발명의 실시예 및 그 밖에 당업자가 본 발명의 내용을 쉽게 이해하기 위하여 필요한 사항에 대하여 상세히 기재한다. 다만, 본 발명은 청구범위에 기재된 범위 안에서 여러 가지 상이한 형태로 구현될 수 있으므로 하기에 설명하는 실시예는 표현 여부에 불구하고 예시적인 것에 불과하다. 즉, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있다.
모바일 기기는 빠른 속도로 신제품이 나오며, 그에 따라 프로그램의 호환성을 확보하기가 점점 어려워지고 있다. 일례로, 특정 모바일 기기를 기반으로 개발되는 제 1응용 프로그램은 특정 모바일 기기를 제외한 다른 모바일 기기에서 정상적으로 구동되지 않을 수 있다.
제 1응용 프로그램이 특정 모바일 기기를 제외한 다른 모바일 기기들에서 정상 구동되도록 하는 것은 상당한 노력과 시간을 필요로 한다. 실제로, 제 1응용 프로그램의 호환성 작업에는 제 1응용 프로그램의 개발보다 더 많은 노력과 시간이 필요하기도 하다.
한편, HTML5 표준을 준수하는 웹 브라우저에서 동작하는 응용 프로그램은 모바일 기기의 종료와 무관하게 동일하게 동작한다. 또한, 컴파일이 거의 필요없는 실시간 디버깅이 가능한 웹 브라우저의 특성 때문에 디버깅 시간을 단축하여 생산성을 높일 수 있다. 최근의 모바일 기기들은 고성능의 CPU 및 GPU를 탑재하기 때문에 웹 브라우저의 속도 등이 향상되고, 이에 따라 웹 브라우저를 기반으로 하는 응용 프로그램의 활용 가능성이 높아지고 있다.
한편, 대규모 연산을 위한 병렬 처리 언어로서 OpenCL을 기반으로 한 WebCL(Web computing language)이 크로노스 그룹에 의하여 표준화되었다. WebCL은 이종 컴퓨팅 병렬 처리 언어로 CPU뿐 아니라 GPU도 연산 디바이스로 사용할 수 있으며, 심지어 FPGA(Field-programmable gate array), DSP(Digital signal processor)와 같은 이종 컴퓨팅 디바이스를 지원한다.
응용 프로그램의 작업을 처리하는 데 있어서, CPU 및 GPU의 장단점은 매우 명확하다. 주로 반복되는 연산처리가 많은 경우 GPU의 코어들에서 서로 다른 데이터 영역에 대해 병렬 처리한 후 결과를 내는 것이 유리하다. 반면에, 순차적인 작업(즉, 앞의 작업 결과가 뒷 작업의 입력으로 필요한 경우)이 많은 경우 CPU의 빠른 처리 속도를 이용하는 것이 좋다. 그러나, 이외에도 코어당 할당되는 작업, 메모리 접근 횟수, CPU와 GPU간 데이터 전송 횟수 등 다양한 요소들이 CPU 및 GPU의 작업량 분배에 영향을 미친다.
현재에는 프로그래머가 다양한 요소들을 반영하여 CPU 및 GPU간 작업량이 분배되도록 응용 프로그램을 개발(즉, 코딩)한다. 하지만, 프로그래머가 분배한 작업량은 모바일 기기 각각의 특성을 반영하지 못한다. 또한, 모바일 기기 각각의 특성이 반영되도록 응용 프로그램을 개발하는 경우, 많은 시간이 추가로 필요하기 때문에 웹 브라우저의 장점을 살리기 어렵다. 따라서, 효과적으로 작업량을 분배할 수 있는 이종 컴퓨팅 방법이 요구되고 있다.
도 1은 본 발명의 실시예에 의한 오프라인 학습 방법을 나타내는 흐름도이다.
도 1을 참조하여 본 발명의 실시예에 의한 오프라인 학습 방법을 설명하면 다음과 같다. 오프라인 학습에 사용되는 모바일 기기는 일반적으로 널리 사용되는 CPU 및 GPU를 포함할 수 있다.
<WebCL 프로그램 준비 : S100>
먼저, WebCL로 작성된 다수의 응용 프로그램들이 준비된다. S100 단계에서 준비되는 응용 프로그램들은 알고리즘 학습을 위한 것으로, CPU 및 GPU의 비율에 대응하여 다양하게 준비될 수 있다. 일례로, S100 단계에서는 CPU 비율이 높은 응용 프로그램들, GPU 비율이 높은 응용 프로그램들, CPU 및 GPU 비율이 비슷한 프로그램들이 준비될 수 있다.
<컴파일 분석 및 특징값 추출: S102, S104>
이후, S100 단계에서 준비된 응용 프로그램들 각각의 컴파일을 분석하여 특징값을 추출한다. 여기서, 특징값은 CPU 및 GPU 작업량 분배에 필요한 값들을 의미한다. 일례로, 특징값으로는 메모리 접근 횟수, 부동소수점 연산 개수, CPU 및 GPU 간 데이터 전이 횟수, 반복 루프의 크기 중 적어도 하나가 포함될 수 있다.
<프로그램 런타임 분석 및 최적 작업량 분배 : S106, S108>
S100 단계에서 준비된 응용 프로그램 각각을 실행하면서, 최적의 작업 분배량을 결정한다. 일례로, 응용 프로그램이 실행될 때 CPU 및 GPU의 작업 할당량을 변경하면서 최고의 성능이 나오도록 CPU 및 GPU의 작업 분배량을 결정할 수 있다.
한편, S100 단계에서 S108 단계를 거치면, 컴파일 분석에 대응한 CPU 및 GPU의 작업 분배량을 알 수 있다. 즉, 컴파일에서 추출된 특징값들에 대응하여 실제 CPU 및 GPU의 최적 작업 분배량을 알 수 있다.
<기계 학습 알고리즘 수행 : S110>
S104 단계에서 추출된 특징값과 S108 단계에서 결정된 CPU 및 GPU의 작업 분배량은 알고리즘의 훈련 데이터 집합으로 이용된다. 다시 말하여, S104 단계에서 추출된 특징값과 S108 단계에서 결정된 CPU 및 GPU의 작업 분배량을 이용하여 알고리즘 학습을 수행한다.
상세히 설명하면, 응용 프로그램들은 지속적으로 생성되기 때문에, 모든 응용 프로그램의 컴파일에 대응한 런타임 분석은 실질적으로 불가능하다. 따라서, 본원 발명에서는 S104 단계에서 추출된 특징값 및 S108 단계에서 결정된 CPU 및 GPU의 작업 분배량을 이용하여 알고리즘을 학습시킨다. 이와 같이 학습된 알고리즘은 응용 프로그램의 컴파일로부터 추출된 특징값을 이용하여 CPU 및 GPU의 작업량을 분배할 수 있다.
즉, 본원 발명에서는 알고리즘을 오프라인에서 학습시키고, 이에 따라 알고리즘을 이용하여 CPU 및 GPU의 작업량을 분배할 수 있다.
도 2는 본 발명의 실시예에 의한 이종 컴퓨팅 환경에서 작업량을 분배하는 과정을 나타내는 흐름도이다.
도 2를 참조하여 본 발명의 실시예에 의한 이종 컴퓨팅 환경에서 작업량을 분배하는 과정을 설명하면 다음과 같다.
<응용 프로그램 시작 : S200>
먼저, 특정 모바일 기기에는 오프라인에서 학습된 알고리즘이 설치된다. 이와 같은 알고리즘은 별도의 프로그램 형태로 특정 모바일 기기에 설치될 수 있다. 이후, 설명의 편의성을 위하여 알고리즘을 포함한 프로그램을 분배 프로그램이라 칭하기로 한다. 분배 프로그램이 설치된 특정 모바일 기기에서 WebCL로 작성된 응용 프로그램이 실행된다.
<컴파일 분석 및 작업량 분배 : S202, S204>
응용 프로그램이 시작된 후 분배 프로그램은 응용 프로그램의 컴파일을 분석하여 특징값을 추출한다. 여기서, 특징값은 메모리 접근 횟수, 부동소수점 연산 개수, CPU 및 GPU 간 데이터 전이 횟수, 반복 루프의 크기 중 적어도 하나가 포함될 수 있다. 특징값이 추출된 후 알고리즘은 특징값에 대응하여 CPU 및 GPU 별 작업량을 분배한다.
S204 단계에서 알고리즘에서 분배되는 작업량은 오프라인 학습에 대응하여 기계적으로 결정된다. 추가로, 특정 모바일 기기에 설치되는 알고리즘(즉, 분배 프로그램)은 지속적으로 업데이트될 수 있고, 이에 따라 S204 단계에서 분배되는 작업량의 정확도가 향상될 수 있다.
<응용 프로그램 수행 : S206>
S204 단계에서 작업량이 분배된 후, 응용 프로그램이 실행된다. 한편, S204 단계에서 분배된 CPU 및 GPU 작업량에 대응하여 응용 프로그램은 정적 스케줄링에 의하여 수행되고, 이에 따라 S204 단계에서 결정된 CPU 및 GPU의 작업량은 변하지 않는다.
<백그라운드 온라인 학습 : S208>
응용 프로그램이 실행되는 동안 분배 프로그램은 응용 프로그램의 CPU 및 GPU 작업량 변경을 위한 온라인 학습을 수행한다.
상세히 설명하면, S204 단계에서 알고리즘에 의하여 분배된 작업량은 기계적으로 분배되는 것으로, 응용 프로그램이 실행되는 기기의 특성을 반영하지 못한다.
일례로, 알고리즘은 일반적으로 널리 사용되는 CPU 및 GPU를 이용하여 오프라인 학습을 하기 때문에, 응용 프로그램이 실행되는 특정 모바일 기기에 포함된 CPU 및 GPU의 특성을 반영하지 못한다. 따라서, 본원 발명에서는 특정 모바일 기기의 하드웨어의 특성이 반영되도록 온라인 학습을 수행하고, 이에 따라 CPU 및 GPU의 작업량을 최적의 상태로 설정할 수 있다. 또한, 온라인 학습을 통하여 코어당 작업 아이템의 수도 최적의 상태로 설정하고, 이에 따라 응용 프로그램의 실행속도를 향상시킬 수 있다.
추가로, GPU에서 처리된 결과는 최종적으로 CPU에 의하여 웹 브라우저에 반영되기 때문에 GPU 및 CPU간 인터페이스(일례로, PCI-e) 속도는 응용 프로그램의 속도에 큰 영향을 미친다. 인터페이스 속도는 모델링이 힘들기 때문에 온라인 학습을 이용하여 특정 모바일 기기의 특성을 반영한다. S208의 온라인 학습 방법에 대해서는 이후 상세히 설명하기로 한다.
한편, 온라인 학습이 진행되는 동안에도 응용 프로그램은 안정적으로 수행되어야 한다. 따라서, 온라인 학습은 백그라운드에서 수행된다.
<응용 프로그램 종료 : S210>
S210 단계에서는 응용 프로그램의 종료 여부를 판단한다. S210 단계에서 응용 프로그램이 종료되는 경우, 온라인 학습 단계로 종료된다. 이 경우, 응용 프로그램은 S204 단계에서 분배된 작업량에 대응하여 실행 및 종료된다.
<온라인 학습 종료 : S212>
S210 단계에서 응용 프로그램이 종료되지 않은 경우, 분배 프로그램은 온라인 학습이 종료되었는지를 판단한다. 온라인 학습이 종료되지 않았다면 온라인 학습이 지속적으로 수행된다.(S206 내지 S212 단계를 반복)
<현재 루틴 종료 및 상태값 반환 : S214>
S212 단계에서 온라인 학습이 종료되었다면, 현재 루틴을 종료함과 동시에 상태값을 반환한다. 이를 위하여, 분배 프로그램은 응용 프로그램의 런타임 작업을 추적하는 프로세스를 포함한다.
<시작지점 설정 : S216>
이후, 분배 프로그램은 S214 단계에서 종료된 루틴 및 상태값 등을 이용하여 응용 프로그램의 시작 지점을 설정한다. 일례로, 종료된 루틴이 시작 지점으로 설정될 수 있다.
<동적 스케줄링에 의한 응용 프로그램 수행 : S218>
이후, 분배 프로그램은 온라인 학습 결과에 대응하여 CPU 및 GPU 작업량 비율, 코어당 작업 아이템 수를 재설정한다. 그리고, 재설정된 결과를 반영하여 동적 스케줄링을 이용하여 시점 지점부터 응용 프로그램을 재실행한다. 추가적으로, 온라인 학습 결과는 특정 모바일 기기의 메모리 등에 저장된다. 이후, 응용 프로그램이 실행될 때 온라인 학습 결과를 반영하여 응용 프로그램의 작업량(CPU 및 GPU 비율, 코어당 작업 아이템의 수 등을 포함)이 결정된다.
즉, 본 발명에서는 특정 모바일 기기에서 WebCL 응용 프로그램이 실행되는 경우, 적어도 한번 온라인 학습을 수행하여 결과를 저장한다. 그리고, 응용 프로그램이 실행될 때 온라인 학습에 의하여 저장된 결과를 이용하여 작업량을 배분함으로써 최적의 성능을 확보할 수 있다.
상술한 바와 같이, 본 발명에서는 오프라인을 이용하여 알고리즘을 학습시키고, 이 알고리즘을 이용하여 응용 프로그램 실행시 CPU 및 GPU의 작업량을 할당한다. 이 경우, 알고리즘에 의하여 CPU 및 GPU의 작업량이 자동적으로 할당되기 때문에 응용 프로그램의 실행 성능을 어느 정도 확보할 수 있다.
추가적으로, 본 발명에서는 응용 프로그램이 실행되는 동안 온라인 학습을 이용하여 특정 모바일 기기의 하드웨어 특성이 반영되도록 CPU 및 GPU의 작업량을 재설정함으로써, 응용 프로그램의 실행 성능을 최적화할 수 있다.
도 3은 본 발명의 실시예에 의한 온라인 학습 방법을 나타내는 흐름도이다.
도 3을 참조하여 본 발명의 온라인 학습 방법을 설명하면 다음과 같다.
<초기 CPU/GPU 작업량 분배 : S2081>
특정 모바일 기기에서 응용 프로그램이 실행된 후, 알고리즘에 의하여 CPU 및 GPU에 작업량이 분배된다. 즉, 상술한 S204 단계에서 알고리즘은 응용 프로그램의 컴파일로부터 추출된 특징값을 이용하여 CPU 및 GPU 별 작업량을 분배한다.
<초기 작업 아이템 크기 설정 : S2082>
CPU 및 GPU에 작업량이 분배된 후 코어당 작업 아이템이 할당된다. 일례로, 최초 단계에서는 코어당 하나의 작업 아이템이 할당될 수 있다.
<성능 측정 : S2083>
이후, 분배 프로그램은 S2081 단계에서 분배된 CPU 및 GPU 별 작업량과, S2082 단계에서 코어당 할당된 작업 아이템을 이용하여 응용 프로그램의 성능을 측정한다. 일례로, 분배 프로그램은 응용 프로그램의 실행시간 등을 이용하여 성능을 측정할 수 있다.
<성능 포화 상태 : S2084>
응용 프로그램의 성능이 측정된 후 분배 프로그램은 S2083 단계에서 측정된 성능이 포화 상태인지를 판단한다. 이와 관련된 상세한 설명은 S2085 단계에서 설명하기로 한다.
<작업 아이템 크기 변경 : S2085>
S2084 단계에서 성능이 포화 상태로 판단되지 않는 경우 분배 프로그램은 코어당 할당되는 작업 아이템 수를 변경한다. 일례로, 분배 프로그램은 코어당 두 개의 작업 아이템을 할당할 수 있다.
상세히 설명하면, 분배 프로그램은 S2083 단계, S2084 단계 및 S2085 단계를 적어도 두 번 이상 반복한다. S2083 단계 내지 S2085 단계에서 분배 프로그램은 코어당 작업 아이템의 수를 변경하면서 응용 프로그램의 실행시간을 측정한다.
일반적으로, 코어당 작업 아이템의 수가 증가되면, 응용 프로그램의 실행시간이 단축된다. 그리고, 코어당 작업 아이템의 수가 어느 정도 이상 할당되면, 응용 프로그램의 실행시간이 코어당 작업 아이템 수 증가와 무관하게 어느 정도 일정하게 유지된다. 이를 위하여, 본 발명에서는 임계시간을 미리 설정하고, 코어당 작업 아이템의 수가 증가될 때 상기 제 1응용 프로그램의 실행시간이 임계시간 이내로 단축되는 경우 성능이 포화된 것으로 판단할 수 있다. 추가로, 임계시간은 다양한 모바일 기기의 특성을 고려하여 실험적으로 결정될 수 있다.
한편, S2085 단계에서 코어당 할당되는 작업 아이템의 수는 선형적으로 증가될 수 있다. 또한, S2085 단계에서 코어당 할당되는 작업 아이템의 수는 지수 함수적으로 증가될 수 있다. 코어당 할당되는 작업 아이템의 수가 선형적으로 증가되는 경우 성능이 포화되는 시점을 정확하게 파악할 수 있다. 또한, 코어당 할당되는 작업 아이템의 수가 지수 함수적으로 증가되는 경우 S2083 단계 내지 S2085 단계에 할당되는 시간을 최소화할 수 있다.
<성능 개선 : S2086>
S2084 단계에서 성능이 포화 상태로 판단되는 경우, 분배 프로그램은 이전과 비교하여 성능이 개선되었는지를 판단한다. 일례로, 분배 프로그램은 CPU 및 GPU의 작업량 비율 및 코어당 작업 아이템의 수를 변경한 후, 응용 프로그램의 실행 속도를 이전(작업량 변경 전)과 비교함으로써 성능이 개선되었는지를 판단할 수 있다.
<CPU/GPU 작업량 비율 변경 : S2087>
S2086 단계에서 성능이 개선되었다고 판단되는 경우, CPU 및 GPU의 비율을 변경한다. 이후, S2083 단계 내지 S2087 단계를 반복하면서 코어당 작업 아이템의 수, CPU 및 GPU의 비율을 최적의 상태로 변경할 수 있다.
추가적으로, S2086 단계에서 성능이 개선되지 않았다고 판단되는 경우, 온라인 학습이 종료된다.
이후, S212 단계 내지 S218 단계에 의하여 온라인 학습에 의하여 결정된 CPU 및 GPU의 비율, 코어당 작업 아이템의 수 등이 반영되고, 이에 따라 응용 프로그램의 실행속도가 향상될 수 있다.
본 발명의 기술 사상은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 지식을 가진 자라면 본 발명의 기술 사상의 범위 내에서 다양한 변형예가 가능함을 이해할 수 있을 것이다.
전술한 발명에 대한 권리범위는 이하의 특허청구범위에서 정해지는 것으로써, 명세서 본문의 기재에 구속되지 않으며, 청구범위의 균등 범위에 속하는 변형과 변경은 모두 본 발명의 범위에 속할 것이다.

Claims (13)

  1. 응용 프로그램들의 컴파일 및 런타임을 이용하여 알고리즘을 오프라인 학습시키는 단계와;
    모바일 기기에서 제 1응용 프로그램이 실행되는 단계와;
    상기 알고리즘을 이용하여 상기 제 1응용 프로그램의 CPU 및 GPU의 작업량을 분배하는 단계와;
    상기 제 1응용 프로그램의 CPU 및 GPU의 작업량을 재설정하기 위하여 온라인 학습을 수행하는 단계와;
    상기 제 1응용 프로그램의 CPU 및 GPU 작업량을 상기 온라인 학습 결과에 대응하여 재설정하는 단계를 포함하는 것을 특징으로 하는 이종 컴퓨팅 방법.
  2. 제 1항에 있어서,
    상기 응용 프로그램들 및 상기 제 1응용 프로그램은 WebCL로 작성된 것을 특징으로 하는 이종 컴퓨팅 방법.
  3. 제 1항에 있어서,
    상기 온라인 학습이 끝난 후,
    상기 제 1응용 프로그램의 현재루틴을 종료하고, 상태값을 반환하는 단계와;
    상기 종료된 현재루틴 및 상기 상태값을 이용하여 상기 제 1응용 프로그램의 시작지점을 설정하는 단계와;
    상기 온라인 학습에 대응하여 상기 CPU 및 상기 GPU의 작업량을 분배하는 단계와;
    상기 시작시점부터 상기 제 1응용 프로그램을 실행하는 단계를 더 포함하는 것을 특징으로 하는 이종 컴퓨팅 방법.
  4. 제 1항에 있어서,
    상기 온라인 학습은 백그라운드에서 수행되는 것을 특징으로 하는 이종 컴퓨팅 방법.
  5. 제 1항에 있어서,
    상기 오프라인 학습 단계는
    상기 응용 프로그램들의 컴파일로부터 특징값을 추출하는 단계와;
    상기 CPU 및 GPU의 작업량 비율을 변경하면서 상기 응용 프로그램들의 런타임을 분석하는 단계와;
    상기 추출값 및 상기 런타임 분석 결과에 대응하여 상기 알고리즘을 학습시키는 단계를 포함하는 것을 특징으로 하는 이종 컴퓨팅 방법.
  6. 제 5항에 있어서,
    상기 특징값은 메모리 접근 횟수, 부동소수점 연산 개수, 상기 CPU 및 상기 GPU 간 데이터 전이 횟수, 반복 루프의 크기 중 적어도 하나가 포함되는 것을 특징으로 하는 이종 컴퓨팅 방법.
  7. 제 1항에 있어서,
    상기 알고리즘은 상기 제 1응용 프로그램의 컴파일로부터 추출된 특징값을 이용하여 상기 CPU 및 상기 GPU의 작업량을 분배하는 것을 특징으로 하는 이종 컴퓨팅 방법.
  8. 제 7항에 있어서,
    상기 특징값은 메모리 접근 횟수, 부동소수점 연산 개수, 상기 CPU 및 상기 GPU 간 데이터 전이 횟수, 반복 루프의 크기 중 적어도 하나가 포함되는 것을 특징으로 하는 이종 컴퓨팅 방법.
  9. 제 1항에 있어서,
    상기 온라인 학습을 수행하는 단계는
    코어당 작업 아이템의 수를 변경하면서 성능이 포화 상태인지를 판단하는 제 1단계와;
    상기 제 1단계에서 성능이 개선된 경우, 상기 CPU 및 GPU의 작업량 비율을 변경하면서 상기 제 1단계를 반복하는 제 2단계와;
    상기 제 1단계에서 성능이 개선되지 않는 경우, 상기 온라인 학습을 종료하는 제 3단계를 포함하는 것을 특징으로 하는 이종 컴퓨팅 방법.
  10. 제 9항에 있어서,
    상기 포화 상태로 판단되는 시점은, 상기 코어당 작업 아이템의 수가 증가될 때 상기 제 1응용 프로그램의 실행시간이 미리 설정된 임계시간 이내로 단축될 때인 것을 특징으로 하는 이종 컴퓨팅 방법.
  11. 제 9항에 있어서,
    상기 코어당 할당되는 상기 작업 아이템의 수는 선형적으로 증가되는 것을 특징으로 하는 이종 컴퓨팅 방법.
  12. 제 9항에 있어서,
    상기 코어당 할당되는 상기 작업 아이템의 수는 지수 함수적으로 증가되는 것을 특징으로 하는 이종 컴퓨팅 방법.
  13. 제 9항에 있어서,
    상기 성능은 상기 제 1응용 프로그램의 실행속도를 이용하여 판단하는 것을 특징으로 하는 이종 컴퓨팅 방법.
KR1020160025212A 2016-03-02 2016-03-02 이종 컴퓨팅 방법 KR20170102726A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160025212A KR20170102726A (ko) 2016-03-02 2016-03-02 이종 컴퓨팅 방법
US15/167,861 US20170255877A1 (en) 2016-03-02 2016-05-27 Heterogeneous computing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160025212A KR20170102726A (ko) 2016-03-02 2016-03-02 이종 컴퓨팅 방법

Publications (1)

Publication Number Publication Date
KR20170102726A true KR20170102726A (ko) 2017-09-12

Family

ID=59723616

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160025212A KR20170102726A (ko) 2016-03-02 2016-03-02 이종 컴퓨팅 방법

Country Status (2)

Country Link
US (1) US20170255877A1 (ko)
KR (1) KR20170102726A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102068676B1 (ko) * 2018-07-31 2020-01-21 중앙대학교 산학협력단 다중 계층 엣지 컴퓨팅에서 패턴 식별을 이용하여 실시간으로 작업을 스케쥴링 하는 방법 및 그 시스템
KR20210085490A (ko) * 2019-12-30 2021-07-08 숙명여자대학교산학협력단 Gpu 응용을 위한 기계 학습 기반 작업 배치 방법
KR102625105B1 (ko) * 2023-02-07 2024-01-16 주식회사 케이쓰리아이 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628223B2 (en) * 2017-08-22 2020-04-21 Amrita Vishwa Vidyapeetham Optimized allocation of tasks in heterogeneous computing systems
CN107943754B (zh) * 2017-12-08 2021-01-05 杭州电子科技大学 一种基于遗传算法的异构冗余系统优化方法
KR102228586B1 (ko) 2018-01-19 2021-03-16 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법
US11200512B2 (en) 2018-02-21 2021-12-14 International Business Machines Corporation Runtime estimation for machine learning tasks
CN109032809A (zh) * 2018-08-13 2018-12-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于遥感影像存储位置的异构并行调度系统
WO2020132833A1 (en) * 2018-12-24 2020-07-02 Intel Corporation Methods and apparatus to process machine learning model in multi-process web browser environment
CN110750358B (zh) * 2019-10-18 2023-06-23 上海交通大学苏州人工智能研究院 一种超算平台资源利用率分析方法
CN114764417B (zh) * 2022-06-13 2022-08-26 深圳致星科技有限公司 隐私计算、隐私数据及联邦学习的分散式处理方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101091175B (zh) * 2004-09-16 2012-03-14 辉达公司 负载均衡
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
US8874943B2 (en) * 2010-05-20 2014-10-28 Nec Laboratories America, Inc. Energy efficient heterogeneous systems
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
US10186007B2 (en) * 2014-08-25 2019-01-22 Intel Corporation Adaptive scheduling for task assignment among heterogeneous processor cores

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102068676B1 (ko) * 2018-07-31 2020-01-21 중앙대학교 산학협력단 다중 계층 엣지 컴퓨팅에서 패턴 식별을 이용하여 실시간으로 작업을 스케쥴링 하는 방법 및 그 시스템
KR20210085490A (ko) * 2019-12-30 2021-07-08 숙명여자대학교산학협력단 Gpu 응용을 위한 기계 학습 기반 작업 배치 방법
KR102625105B1 (ko) * 2023-02-07 2024-01-16 주식회사 케이쓰리아이 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법

Also Published As

Publication number Publication date
US20170255877A1 (en) 2017-09-07

Similar Documents

Publication Publication Date Title
KR20170102726A (ko) 이종 컴퓨팅 방법
CN106155635B (zh) 一种数据处理方法和装置
US11474712B2 (en) Method, apparatus, device and storage medium for managing access request
CN108205469B (zh) 一种基于MapReduce的资源分配方法及服务器
US10754744B2 (en) Method of estimating program speed-up in highly parallel architectures using static analysis
JP6952138B2 (ja) チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体
Togashi et al. Concurrency in Go and Java: performance analysis
Shen et al. Improving performance by matching imbalanced workloads with heterogeneous platforms
Corral et al. Method reallocation to reduce energy consumption: An implementation in android os
Zhang et al. Predicting HPC parallel program performance based on LLVM compiler
Oliveira et al. Native or web? a preliminary study on the energy consumption of android development models
Longo et al. Reducing energy usage in resource-intensive Java-based scientific applications via micro-benchmark based code refactorings
Lang et al. Dynamic distribution of workload between CPU and GPU for a parallel conjugate gradient method in an adaptive FEM
CN103530132A (zh) 一种cpu串行程序移植到mic平台的方法
Fang et al. An auto-tuning solution to data streams clustering in opencl
US10467120B2 (en) Software optimization for multicore systems
GB2476544A (en) Relational modeling for performance analysis of multi-core processors
WO2021238462A1 (zh) 一种检测内存乱序的方法及装置
Patrou et al. Scaling Parallelism under CPU-intensive Loads in Node. js
US11853193B2 (en) Inverse performance driven program analysis
Malave et al. Performance Implications of Thread Count on OS Level Factors in Multithreaded Applications
KR20200083025A (ko) 런타임 수행특성을 도출하는 그래픽스 프로세싱 유닛 및 이의 동작방법
Vachálek et al. Numerical acceleration of data processing using MATLAB for the needs of expert systems
CN110879722B (zh) 生成逻辑示意图的方法及装置、计算机可存储介质
KR101721341B1 (ko) 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법