KR101569142B1 - 프로그램의 최적화 실행을 위한 장치 및 방법 - Google Patents

프로그램의 최적화 실행을 위한 장치 및 방법 Download PDF

Info

Publication number
KR101569142B1
KR101569142B1 KR1020140161149A KR20140161149A KR101569142B1 KR 101569142 B1 KR101569142 B1 KR 101569142B1 KR 1020140161149 A KR1020140161149 A KR 1020140161149A KR 20140161149 A KR20140161149 A KR 20140161149A KR 101569142 B1 KR101569142 B1 KR 101569142B1
Authority
KR
South Korea
Prior art keywords
execution
program
profiling
optimization
platform
Prior art date
Application number
KR1020140161149A
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 KR1020140161149A priority Critical patent/KR101569142B1/ko
Application granted granted Critical
Publication of KR101569142B1 publication Critical patent/KR101569142B1/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

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)

Abstract

프로그램의 최적화 실행을 위한 장치 및 방법을 제공한다. 동적 언어 환경에서 프로그램의 최적화 실행을 수행하기 위한 장치는 프로그램의 매 실행 시 마다 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 프로파일링을 실행하되 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하면 프로파일링 실행 정보에 기초하여 프로그램 성능이 최적화된 플랫폼을 선택한다.

Description

프로그램의 최적화 실행을 위한 장치 및 방법{Apparatus and method for optimized execution of program}
본 발명은 프로그램의 최적화 실행을 위한 장치 및 방법에 관한 것으로, 더욱 상세하게는 전생애 주기 프로파일링(Lifelong Profiling) 기법을 통해 동적 언어 환경(Dynamic language) 및 환경 변화에서도 프로그램의 최적화된 실행 방법을 선택하기 위한 프로그램의 최적화 실행을 위한 장치 및 방법에 관한 것이다.
컴퓨터 시스템은 연산을 처리하는 장치로 개발된 이후로 시간당 처리할 수 있는 명령어를 증가시키도록 발전해 왔다. 때문에 과거에는 CPU(Central Processing Unit)의 시간당 처리 속도를 높이기 위해서 반도체를 고도로 집적하는 기술이 중점적으로 연구되었으며, 이를 통해 하나의 CPU 칩에 더 많은 논리 구조(logic)를 집적하면서도, 전기적 신호가 전달되는 길이를 감소시켜 정보 전달 및 처리 속도를 향상시킬 수 있었다.
그러나, 2000년대에 들어 반도체 집적 기술의 발전이 한계에 도달하였을 뿐만 아니라 반도체가 고집적 됨에 따라 단일 칩이 소모하는 에너지가 증가하였고, 그에 따라 설계 시 시스템의 에너지 효율성 문제가 심각해지는 등 새로운 문제가 발생하였다. 특히, 시스템의 발열이 과거에 비해 심각하게 증가하여 시스템이 오동작 함에 따라 단일 CPU를 이용한 성능 향상은 한계에 도달하게 되었다. 이러한 문제점을 해소하기 위해, 여러 개의 CPU를 동시에 이용하여 CPU의 성능을 높이는 멀티 코어 방식에 대한 기술이 개발되었다.
또한, 최근에는 거의 모든 플랫폼들이 멀티 코어를 기반으로 한 병렬 프로그래밍 모델에 의존하면서, 다양한 변종을 통해 성능 최적화뿐만 아니라, 에너지 최적화를 목표로 하고 있다. 예를 들면, 모바일 시장에서 에너지 최적화를 목표로 한 ARM사의 Big.Little 아키텍쳐와 과학 및 수치적 계산을 값싼 장비에서 빠르게 수행할 수 있는 Nvidia사의 GPU 등의 가속기 등이 그 예가 될 수 있다. 이처럼 서로 특성이 다른 멀티 코어 장비를 함께 사용할 수 있는 플랫폼이 새롭게 등장하고 있다. 일반적으로 CPU에서 주된 연산이 수행되지만, GPU와 같은 가속기가 유리한 프로그램인 경우에는 CPU가 해야 할 연산을 GPU와 같은 가속기가 분담하는 식으로 최적화가 이루어진다. 하지만 이러한 장치를 이용하기 위해서는 어떤 프로그램을 어떤 장치에서 수행할 것인지에 대한 결정이 일반적으로 소프트웨어에서 선택하도록 설계된다. 결국, 운영체제나 컴파일러 또는 사용자가 프로그램의 특성을 파악한 후 특정한 장비에서 프로그램이 수행될 수 있도록 결정 해야 하는데, 모든 프로그램의 특성을 일일이 분석해내는 것은 용이하지 않다.
이러한 문제점을 해소하기 위해 OpenCL(Open Computing Language) 프로그래밍 모델은 프로그래머가 멀티 코어 가속기의 종류와 자세한 내용을 모르더라도 병렬화된 코드를 작성할 수 있도록 도움을 제공하는 역할을 한다. 최근에는 이러한 기술이 기존의 프로그래밍 언어에서 OpenCL 프레임워크를 포팅(Porting)하여 부가적으로 사용할 수 있도록 하는 추세에 있다. 예를 들면, 웹브라우져의 JavaScript 상에서 OpenCL을 이용할 수 있는 WebCL(Web Computing Language)과 C++ amp의 OpenCL back-end 지원, Python의 PyOpenCL 등이 있다. 이처럼 점차 가속기를 이용할 수 있는 언어 및 장치의 범위가 증가하고 있다. 그러나, 이러한 OpenCL 프로그래밍 모델은 플랫폼에 상관없이 하나의 코드를 사용하여 프로그램을 가속화할 수 있으나 동적 언어 환경(Dynamic language)에서 프로그램의 성능을 최적화하기 어려운 문제점이 있다.
한편, 멀티 코어 기술과는 독립적으로 발전해온 기술로, 에너지 소모 문제를 해결하기 위해서 Dynamic Voltage and Frequency Scaling(이하, "DVFS"라고 함) 기법이 제안되었다. 이 기술은 특정 시점에서 CPU의 처리 능력을 강제적으로 제한하여, 에너지 효율성을 높이는 방식으로 동작한다. 이미 에너지 효율성이 중요시되는 모바일 시장에서 널리 사용되고 있으며, 데스크탑 등에서도 중요하게 사용되는 기술이다. 이러한 기술에는 멀티 코어의 각 코어 자체를 켜고 끄는 코어 조절 방식(Core Scaling)과 각 코어의 작동 전압을 조절하는 전압 조절 방식(Voltage Scaling)이 포함된다. 이처럼 DVFS 기법에 의해 CPU의 코어별 주파수, 활성화된 코어의 개수의 변화 등의 동적인 환경 변화가 발생하는 경우 프로그램 성능의 최적화를 위한 분석에도 영향을 미쳐 환경 변화 이전의 결과들이 무의미 해지는 문제점이 발생한다.
따라서, 동적 언어 환경(Dynamic language)에서도 프로그램의 최적화된 실행 방법을 선택할 수 있으며, 환경 변화에도 적응적으로 대처하기 위한 기술이 요구된다.
한국 공개 특허 제10-2012-0062570호("동적 프로파일링을 이용한 메모리 최적화 방법", (주)누스코, 2012.06.14 공개)
전술한 문제점을 해결하기 위한 본 발명의 목적은 전생애 주기 프로파일링(Lifelong Profiling) 기법을 통해 동적 언어 환경(Dynamic language) 및 환경 변화에서도 프로그램의 최적화된 실행 방법을 선택하기 위한 프로그램의 최적화 실행을 위한 장치 및 방법을 제공하는 것이다.
전술한 본 발명의 목적을 달성하기 위한 본 발명의 일 측면에 따른 동적 언어 환경에서 프로그램의 최적화 실행을 수행하기 위한 장치에 있어서, 상기 프로그램의 매 실행 시 마다 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 프로파일링을 실행하되 상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하면 상기 프로파일링 실행 정보에 기초하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 실행방법 선정부를 포함하는 것을 특징으로 한다.
상기 실행방법 선정부는, 상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 지의 여부를 판단한 결과에 따라 플랫폼 별 성능 최적화 영역을 추론하는 실행 관리부를 포함하는 것을 특징으로 한다.
상기 실행 관리부는, 상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하지 않는 경우, 프로파일링 실행요청 메시지를 프로파일링 실행부로 전달하며, 상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 경우, 최적화 실행요청 메시지를 최적화 실행부로 전달하는 것을 특징으로 한다.
상기 프로파일링 실행부는, 상기 프로파일링 실행요청 메시지가 전달되면, 멀티 스레딩 기법을 이용하여 플랫폼 별 모든 프로그램 코드에 대하여 동시에 프로파일링을 실행한 결과에 의해 프로파일링 실행 정보를 생성하는 것을 특징으로 한다.
상기 실행 관리부는, 상기 프로파일링 실행 정보에 기초하여 상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 성능 최적화 영역을 추론한 결과에 의해 플랫폼 별 성능 최적화 추론정보를 생성하는 것을 특징으로 한다.
상기 최적화 실행부는, 상기 최적화 실행요청 메시지가 전달되면, 상기 사용자가 입력한 적어도 하나의 관측 변수에 대해 별도의 프로파일링을 수행하지 않고 상기 플랫폼 별 성능 최적화 추론정보를 이용하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 것을 특징으로 한다.
상기 최적화 실행부는, 상기 최적화된 플랫폼에 의한 실행방법을 수행하여 최적화 실행 정보를 생성하는 것을 특징으로 한다.
상기 실행 관리부는, 상기 프로파일링 실행 정보 또는 상기 최적화 실행 정보를 이용하여 상기 프로그램의 수행 환경이 변화되었는지의 여부를 판단하는 것을 특징으로 한다.
상기 실행 관리부는, 상기 프로그램의 수행 환경이 변화된 경우, 상기 프로파일링 실행 정보 및 상기 최적화 실행 정보를 초기화하는 것을 특징으로 한다.
상기 사용자로부터 상기 플랫폼 별 최적화된 프로그램 코드를 입력 받는 코드 관리부; 및 상기 적어도 하나의 관측 변수를 정의하는 변수 관리부를 더 포함하는 것을 특징으로 한다.
상기 관측 변수는 상기 프로그램이 실행 될 때마다 변화하며, 상기 프로그램이 사용하는 입력 데이터의 크기, 사용하는 데이터의 종류, 입력 데이터 구조의 깊이, 패턴 매칭 알고리즘의 임계값(Threshold) 및 반복문의 반복 횟수 중 적어도 하나를 포함하는 것을 특징으로 한다.
전술한 본 발명의 목적을 달성하기 위한 본 발명의 다른 측면에 따른 동적 언어 환경에서 프로그램의 최적화 실행을 수행하기 위한 방법에 있어서, 상기 프로그램의 매 실행 시 마다 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 프로파일링을 실행하되 상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하면 상기 프로파일링 실행 정보에 기초하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계를 포함하는 것을 특징으로 한다.
상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계는, 상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 이전 프로파일링 실행 정보가 존재하는 지의 여부를 판단하는 단계; 상기 적어도 하나의 관측 변수에 대한 이전 프로파일링 실행 정보가 존재하지 않는 경우, 프로파일링 실행요청 메시지를 프로파일링 실행부로 전달하는 단계; 및 상기 적어도 하나의 관측 변수에 대한 이전 프로파일링 실행 정보가 존재하는 경우, 최적화 실행요청 메시지를 최적화 실행부로 전달하는 단계를 포함하는 것을 특징으로 한다.
상기 프로파일링 실행부로 전달하는 단계는, 멀티 스레딩 기법을 이용하여 플랫폼 별 모든 프로그램 코드에 대하여 동시에 프로파일링을 실행한 결과에 의해 프로파일링 실행 정보를 생성하는 단계를 포함하는 것을 특징으로 한다.
상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계는, 상기 프로파일링 실행 정보에 기초하여 상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 성능 최적화 영역을 추론한 결과에 의해 플랫폼 별 성능 최적화 추론정보를 생성하는 단계를 더 포함하는 것을 특징으로 한다.
상기 성능 최적화 추론정보를 생성하는 단계는, 상기 플랫폼 별 성능 최적화 영역은 상기 사용자가 입력한 적어도 하나의 관측 변수의 값을 변화시키는 단계; 및 상기 적어도 하나의 관측 변수의 값의 변화에 따라 상기 프로그램 성능이 우세한 영역의 최소값 및 최대값을 추론하는 단계를 포함하는 것을 특징으로 한다.
상기 최적화 실행부로 전달하는 단계는, 상기 사용자가 입력한 적어도 하나의 관측 변수에 대해 별도의 프로파일링을 수행하지 않고 상기 플랫폼 별 성능 최적화 추론정보를 이용하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계를 포함하는 것을 특징으로 한다.
상기 최적화 실행부로 전달하는 단계는, 상기 최적화된 플랫폼에 의한 실행방법을 수행하여 최적화 실행 정보를 생성하는 단계를 더 포함하는 것을 특징으로 한다.
상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계는, 상기 프로파일링 실행 정보 또는 상기 최적화 실행 정보를 이용하여 상기 프로그램의 수행 환경이 변화되었는지의 여부를 판단하는 단계; 및 상기 프로그램의 수행 환경이 변화된 경우, 상기 프로파일링 실행 정보 및 상기 최적화 실행 정보를 초기화하는 단계를 더 포함하는 것을 특징으로 한다.
상기 관측 변수는 상기 프로그램이 실행 될 때마다 변화하며, 상기 프로그램이 사용하는 입력 데이터의 크기, 사용하는 데이터의 종류, 입력 데이터 구조의 깊이, 패턴 매칭 알고리즘의 임계값(Threshold) 및 반복문의 반복 횟수 중 적어도 하나를 포함하는 것을 특징으로 한다.
상술한 프로그램의 최적화 실행을 위한 장치 및 방법에 따르면, 프로그램의 매 수행 시마다 최적화를 위한 정보를 쌓아가는 전생애 주기 프로파일링 기법을 채택함에 따라 특정 언어 및 플랫폼 특화되지 않고 JIT 컴파일을 이용하는 동적 언어 환경(Dynamic language)에서도 프로파일링 기법을 효율적으로 적용할 수 있다.
또한, 본 발명의 실시예에 따르면, 프로파일링 수행을 위한 관측 변수가 다양하게 정의될 수 있어 관측 변수에 따른 플랫폼 별 프로그램 성능이 최적화된 영역을 추론할 수 있어 수행 환경 변화에도 능동적으로 대처할 수 있으며, 프로파일링 수행 결과를 다음 실행방법의 예측 시 반영함에 따라 불필요한 프로파일링 수행 시간 감소 및 에너지 효율성을 개선할 수 있다.
도 1은 일반적으로 사용되는 프로그래밍 언어의 사용 순위의 일례를 나타내는 도면이다.
도 2는 본 발명의 실시예에 따른 프로그램의 최적화 실행을 위한 장치를 개략적으로 나타내는 도면이다.
도 3은 도 2에 도시한 실행방법 선정부를 개략적으로 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 관측 변수와 프로그램 성능 관계를 나타내는 도면이다.
도 5는 본 발명의 실시예에 따른 프로그램 최적화 실행 장치를 자바스크립트에 적용한 일례를 나타내는 도면이다.
도 6은 본 발명의 실시예에 따른 프로그램의 최적화 실행 방법을 나타내는 순서도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
본 발명의 실시예에 따른 프로그램의 최적화 실행을 위한 장치 및 방법에서는 현재 Khronos Group(http://www.khronos.org)의 표준 기술로 채택되어 있으며, CUDA(Compute Unified Device Architecture)와 함께 주로 과학적인 계산 및 이미지 처리 분야에서 뛰어난 성능을 내는 소프트웨어 병렬화 모델로 인정받고 있는 병렬 프로그래밍 프레임워크인 OpenCL을 기반으로 한다.
이러한 OpenCL 기술에서는 OpenCL 프로그래밍 모델을 이용하여 목표가 되는 여러 장치들의 공통점들을 묶고, 추상화한 가상적인 아키텍쳐를 가정한다. 사용자는 일반화된 아키텍쳐의 명세에 맞도록 프로그램을 코딩한 후, 이를 지원하는 OpenCL 런타임 소프트웨어로 작성한 코드를 런타임 시스템으로 전달한다. 그러면, 런타임 시스템은 다시 프로그램을 현재 프로그램을 실행하려는 플랫폼의 형식에 맞게 코드를 컴파일하고, 실행 파일을 생성한다. 결과적으로 OpenCL은 이처럼 플랫폼에 상관없이 하나의 코드를 사용하여 프로그램을 가속화하는 용도로 사용된다. 하지만, 이러한 의도와는 달리 현재 OpenCL 시스템은 다음과 같은 문제점을 가지고 있다.
OpenCL 코드는 넓은 범위의 장치에서 실행하는 것을 목표로 한다. 그러나, 프로그래머가 아무리 최적화를 잘 하여도 각각의 장치에 대해 프로그램이 정상 동작하게 만드는 것은 가능할 수 있으나 모든 장치에 맞춰서 성능 최적화를 하기는 어려운 문제점이 있다. 따라서, OpenCL 기술을 이용하여 프로그램을 작성하면 플랫폼에 따라 성능의 차가 크게 되어, 어떠한 장치에서는 시스템의 성능이 크게 저하될 수 있다. 따라서 이러한 문제를 해결하기 위해 논문1(Seo et al.), 논문2(Samadi el al.), 논문3(Lee et al.) 등이 제안되었다.
논문1(Seo et al.)의 경우, Work Group Size라는 OpenCL에서 성능에 영향을 미치는 변수를 자동으로 결정해주기 위해, 프로그램이 사용하는 데이터 크기 등을 기록하고, 실행하는 플랫폼 환경의 캐쉬 사이즈에 맞게 조절해주는 최적화 방법을 제공한다. 하지만, Work Group Size라는 단일 변수에 대해서만 대처가 가능하며, 플랫폼의 환경이 DVFS 등을 통해 바뀌면서 실행될 경우 비효율적이다.
논문2(Samadi el al.)의 경우, 동일한 일을 하는 순차적 코드와 병렬화된 코드를 멀티 스레드를 이용해 동시에 수행해보고 성능 최적화를 위해 먼저 끝나는 스레드의 결과값을 이용한다. 하지만, 기본적으로 모든 경우의 코드를 동시에 수행하는 것은 시스템 각각의 연산 리소스가 완전히 독립적으로 작동하지는 않기 때문에 성능 저하를 초래할 수도 있으며, 결과적으로 장치를 불필요하게 병렬적으로 사용하므로 에너지 측면에서 매우 비효율적이다.
논문3(Lee et al.)의 경우, 역시 CPU와 여러 개의 가속기(GPU)를 동시에 이용하는 대신, 논문2의 경우와는 달리 분담하여 각자 맡은 일을 수행하고, 결과를 병합하는 방식으로 동작한다. 다시 말해, 일을 이용 가능한 모든 장치에 맞게 분할하고, 한꺼번에 수행하는 식의 병렬화된 작업을 수행하며, 각 장치의 처리 능력에 맞게 일을 분담하기 위해 프로파일링 기법을 이용한다. 하지만, 어느 정도를 분담할 것인지 결정하는 프로파일링 과정에서 Hill-climbing 기법을 이용하여 지나치게 많은 경우의 수를 탐색해야 하기 때문에, 프로파일링 시간이 상당히 긴 문제점이 있다.
이외의 다른 논문에서도 공통적으로 프로그램의 실제 수행 전에 프로그램의 특성을 분석하고, 제한적으로 실행해보는 등의 전형적인 프로파일링 기법을 제시하는 것이 일반적이나, 대부분의 경우 프로파일링 과정 자체에 대한 성능은 무시하고 있으며, 그 기술의 적용이 특수한 상황에 국한되어 있다.
한편, 최근 시장에서 주로 사용되는 프로그래밍 언어는 도 1에 도시한 그래프(10)와 같이 자바(Java), PHP, 자바스크립트(JavaScript) 등 상위 10위권 안에 JIT 컴파일(just-in-time compile)을 사용하는 언어가 지배적인 추세이다. JIT 컴파일은 인터프리터를 이용하는 대부분의 프로그래밍 언어에서 사용되며, 프로그램 코드의 매 라인을 해당하는 플랫폼의 바이너리로 변환하는 과정 대신, 특정 범위의 코드 영역을 필요에 따라 한꺼번에 컴파일 한다. 이를 통해 인터프리터 기반의 프로그램 수행 시 실행 시간을 현저하게 줄일 수 있는 점에서 JIT 컴파일은 동적 언어 환경(Dynamic language environment)의 필수적인 요소로 여겨진다. 이러한 JIT 컴파일을 이용하는 언어의 경우, 프로그램을 분석하는 프로파일링 시간이 프로그램의 속도로 직결되기 때문에, 프로파일링 시간 자체를 줄이는 것이 중요한 일이다. 그러나, 기존에 제시되었던 OpenCL 환경에서의 플랫폼 최적화 기법의 경우는 앞서 언급한 바와 같이 JIT 컴파일을 이용하는 언어를 대처하지 못하고 있다.
뿐만 아니라, 대부분의 기존 프로파일링 기법은 프로그램의 수행 전에 필요한 정보를 모아 최적화된 실행 방법을 결정하기 때문에, CPU의 코어별 주파수, 활성화된 코어의 개수의 변화 등과 같은 실행 중의 환경 변화(DVFS)에 대처하기 어려운 문제점이 있다. 이러한 동적인 하드웨어 최적화 기술(Dynamic hardware optimization)은 OpenCL 등의 가속기를 이용하는 기술과는 독립적으로 동작하므로 이러한 환경이 운영체제나 다른 프로그램에 의해서 바뀌게 되면, 이전에 프로그램을 분석한 결과가 무의미하게 된다. 따라서 이처럼 최적화가 빈번하게 발생하는 시스템의 경우, 한 번의 분석 후 별도로 재분석을 하지 않아 기존의 접근법들이 성능상의 불이익을 받는 문제점이 있다.
아래에서는 이러한 문제점을 해소하기 위해 전생애 주기 프로파일링(Lifelong Profiling)을 통해 프로그램의 실행 시마다 수행될 수 있는 프로파일링 기법을 이용하여 JIT 컴파일을 이용하는 동적 언어(Dynamic language) 환경에서도 프로파일링 기법을 효과적으로 적용할 수 있으며, 여러 플랫폼과 동작 환경 변화에도 적응적으로(Adaptive) 대처할 수 있는 최적의 성능을 제공할 수 있는 본 발명의 실시예에 따른 프로그램의 최적화 실행을 위한 장치 및 방법에 대하여 구체적으로 설명한다.
도 2는 본 발명의 실시예에 따른 프로그램의 최적화 실행을 위한 장치를 개략적으로 나타내는 도면이다.
도 2에 도시한 바와 같이, 본 발명의 실시예에 따른 프로그램의 최적화 실행을 위한 장치(이하, "프로그램 최적화 실행 장치"라고 함)(100)는 일반적인 언어 및 플랫폼에 폭넓게 적용될 수 있는 프레임워크로서, OpenCL 환경에서의 프로파일링을 통한 프로그램의 최적화 및 실행 환경의 동적인 변화에 대처하기 위해 이전의 기록된 프로파일링 실행 정보에 따라 프로그램의 매 실행 시마다 최적화를 위한 정보를 업데이트하여 저장하는 전생애 주기 프로파일링 기법을 기반으로 동작한다.
이러한, 프로그램 최적화 실행 장치(100)는 코드 관리부(110), 변수 관리부(120), 실행방법 선정부(130) 및 저장부(140)를 포함한다.
코드 관리부(110)는 사용자(프로그래머)가 프로그램의 다양한 플랫폼을 가정하여 OpenCL 환경에서 사용되는 각각의 장치(이하, "플랫폼"이라고 함)에 최적화된 프로그램 코드를 입력하면, 이를 전달받아 실행방법 선정부(130)로 전달한다.
변수 관리부(120)는 전생애 주기 프로파일링 기법에 사용되는 적어도 하나의 관측 변수를 정의하고, 사용자가 입력한 적어도 하나의 관측 변수를 실행방법 선정부(130)로 전달한다. 본 발명의 실시예에 따른 관측 변수는 사용자가 임의로 정의하는 프로그램이 여러 번 실행 될 때마다 변화할 수 있으며, 성능에 미치는 영향이 큰 변수이다. 이러한 관측 변수는 프레임워크 내부에서 프로그램이 실행될 때마다 기록되며, 현재 상태에서 프로그램의 성능 및 유리한 플랫폼에 의한 실행 방법이 이와 연관되어 저장된다. 관측 변수는 프로그램이 사용하는 입력 데이터의 크기, 사용하는 데이터의 종류, 입력 데이터 구조의 깊이(검색 알고리즘), 패턴 매칭 알고리즘의 임계값(Threshold) 또는 성능에 가장 큰 영향을 미치는 반복문의 반복 횟수 등이 포함되나, 이에 한정되지 않으며, 프로그램 성능에 영향을 줄 수 있는 다른 요인들도 포함될 수 있다.
실행방법 선정부(130)는 입력부(110)로부터 플랫폼 별 최적화된 프로그램 코드를 전달받는다. 실행방법 선정부(130)는 변수 관리부(120)로부터 전생애 주기 프로파일링 기법에 사용되는 관측 변수를 전달받는다. 실행방법 선정부(130)는 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 프로파일링 실행 정보, 즉 이전 프로파일링 실행 정보가 존재하는 지의 여부를 판단한다. 본 발명의 실시예에 따른 플랫폼 별 프로파일링 실행 정보(이하, "프로파일링 실행 정보"라고 함)는 플랫폼 별로 프로그램 실행 시 마다 사용자가 입력한 모든 프로그램 코드를 멀티 스레딩 기법을 이용하여 동시에 실행하여 획득할 수 있으며, 이는 다음번 관측 변수에 따른 프로그램 수행 시 프로그램 성능이 최적화된 플랫폼을 예측하는 기반이 된다. 실행방법 선정부(130)는 판단결과 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하지 않는 경우, 플랫폼 별로 각각의 관측 변수의 값을 변경하면서 관측 변수별 프로그램 성능이 최적화된 플랫폼을 예측한다. 실행방법 선정부(130)는 판단결과 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 경우, 별도의 프로파일링을 수행하지 않고 프로파일링 실행 정보를 이용하여 최적화된 플랫폼을 선택한다.
보다 구체적으로, 도 3을 참고하면, 실행방법 선정부(130)는 실행 관리부(131), 프로파일링 실행부(132) 및 최적화 실행부(133)를 포함한다.
실행 관리부(131)는 변수 관리부(120)로부터 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 지의 여부를 판단한다. 실행 관리부(131)는 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하지 않는 경우, 멀티 스레딩 기법을 이용하여 플랫폼 별 모든 프로그램 코드에 대하여 동시에 프로파일링이 실행될 수 있도록 프로파일링 실행요청 메시지를 프로파일링 실행부(132)로 전달한다. 실행 관리부(131)는 프로파일링 실행이 완료되어 프로파일링 실행 정보가 프로파일링 실행부(132)로부터 수신되면, 프로파일링 실행 정보에 기초하여 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 성능 최적화 영역을 추론한다. 예를 들어, 도 4와 같이 관측 변수에 따른 프로그램 성능이 선형적으로 동작한다는 가정하에, 사용자가 입력한 적어도 하나의 관측 변수의 값의 변화에 따라 프로그램 성능이 우세한 영역의 최소값(V1)과 최대값(V2)을 추론하는 과정을 플랫폼 별로 수행하여 플랫폼 별 성능 최적화 추론정보를 생성하고, 이를 저장부(140)에 업데이트한다. 한편, 실행 관리부(131)는 프로파일링 실행 정보가 존재하는 관측 변수가 사용자에 의해 입력된 경우, 별도의 프로파일링 없이 플랫폼 별 성능 최적화 추론정보를 이용하여 최적화 플랫폼이 선택될 수 있도록 최적화 실행요청 메시지를 최적화 실행부(133)로 전달한다.
프로파일링 실행부(132)는 실행 관리부(131)로부터 프로파일링 실행요청 메시지가 전달되면, 멀티 스레딩 기법을 이용하여 플랫폼 별 프로그램 수행 시 마다 입력되는 모든 프로그램 코드를 동시에 실행한다. 프로파일링 실행부(132)는 관측 변수의 값을 상이하게 변경하면서 플랫폼 별로 프로그램 성능이 우세한 영역의 최소값과 최대값, 가장 먼저 수행을 완료한 플랫폼, 가장 늦게 수행을 완료한 플랫폼 및 수행시간 등을 포함하는 프로파일링 실행 정보를 생성하고, 이를 저장부(140)에 업데이트한다. 프로파일링 실행부(132)는 아직 프로파일링이 완료되지 못한 플랫폼이 존재하는 경우, 지연된 플랫폼에 대한 프로파일링을 강제로 종료한다. 프로파일링 실행부(132)는 프로파일링 실행이 완료되었음을 실행 관리부(131)에 알린다.
최적화 실행부(133)는 실행 관리부(131)로부터 최적화 실행요청 메시지가 전달되면, 프로파일링 실행 정보가 존재하는 관측 변수인 것으로 판단하여 프로파일링을 수행하지 않고 플랫폼 별 성능 최적화 추론정보를 이용하여 사용자가 입력한 적어도 하나의 관측 변수의 값에서 프로그램 성능이 최적화된 플랫폼을 선택한다. 최적화 실행부(133)는 선택한 플랫폼에 의한 최적화된 실행방법을 수행한다. 그리고, 최적화 실행부(133)는 최적화된 실행방법에 의해 프로그램을 수행하는데 걸린 수행시간 및 선택한 플랫폼 등을 포함하는 최적화 실행 정보를 생성하고, 이를 저장부(140)에 업데이트한다.
다시 도 2를 참고하면, 저장부(140)는 프로그램 최적화 실행 장치(100)에서 수행되는 모든 정보가 업데이트 된다.
도 5는 본 발명의 실시예에 따른 프로그램 최적화 실행 장치를 자바스크립트에 적용한 일례를 나타내는 도면이다. 도 5에서는 본 발명의 실시예에 따른 프로그램 최적화 실행 장치(100)를 종래 프로파일링 기술을 적용할 수 없었던 자바스크립트(JavaScript) 상에서 WebCL(Web Computing Language), CPU 및 GPU가 동시에 집적되어 있는 MPSoC(multiprocessor System-on-Chip) 플랫폼에 적용한 것으로 가정한다.
도 5에 도시한 바와 같이, 본 발명의 실시예에 따른 프로그램 최적화 실행 장치(100)가 적용된 자바스크립트는 프레임워크 내부에서 필요로 하는 멀티스레딩 모델을 기본적으로는 제공하지 않기 때문에, 웹워커(WebWorker)라는 특수한 구성을 이용하여 구현하였으며, CPU 및 GPU를 동시에 사용할 수 있는 플랫폼으로 가정한다. 여기서, 웹워커(WebWorker)는 프로파일링 실행부(132)의 CGCE 수행(Execution)에 따라 동작하는 CPU worker(1321) 및 GPU worker(1322)를 포함한다.
이처럼 자바스크립트에 적용된 프로그램 최적화 실행 장치(100)의 코드 관리부(110)는 CPU로부터 최적화된 프로그램 코드를 입력 받는 CPU 커널(kernel)(111) 및 GPU로부터 최적화된 프로그램 코드를 입력 받는 GPU 커널(112)을 포함한다. 변수 관리부(120)는 사용자로부터 입력된 적어도 하나의 관측 변수(kernel parameter), 예를 들어 입력 데이터의 크기(Input Size)를 설정하여 프로그램의 매 실행 시마다 각각의 데이터를 전달한다.
실행방법 선정부(130)의 실행 관리부(131)는 사용자가 선택한 입력 데이터의 크기(Input Size)에 대한 프로파일링 실행 정보가 존재하는 지의 여부를 판단한다. 실행 관리부(131)는 입력 데이터의 크기에 대한 프로파일링 실행 정보가 존재하지 않으면, 프로파일링 실행부(132)로 동작하는 CGCE 수행부(CPU-GPU Competitive Executor)로 프로파일링 실행요청 메시지를 전달하여 프로파일링 동작이 실행되도록 한다. 이때, CGCE 수행은 CPU worker(1321) 및 GPU worker(1322)를 이용하여 멀티 스레딩 기법을 통해 수행된다.
한편, 실행 관리부(131)는 입력 데이터의 크기에 대한 프로파일링 실행 정보가 존재하면, 별도의 프로파일링 없이 CPU 및 GPU에 대한 성능 최적화 추론정보를 이용하여 프로그램 성능이 최적화된 플랫폼이 선택될 수 있도록 최적화 실행부(133)로 동작하는 CPU-only 수행부(CPU-only Executor) 또는 GPU-only 수행부(GPU-only Executor)로 최적화 실행요청 메시지를 전달하여 해당하는 플랫폼의 최적화 실행방법이 수행되도록 한다.
도 6은 본 발명의 실시예에 따른 프로그램의 최적화 실행 방법을 나타내는 순서도이다.
도 6에 도시한 바와 같이, 본 발명의 실시예에 따른 프로그램 최적화 실행 장치(100)의 코드 관리부(110)는 플랫폼에 최적화된 프로그램 코드를 사용자로부터 입력 받는다(S100). 코드 관리부(110)는 최적화된 프로그램 코드를 실행방법 선정부(130)로 전달한다.
변수 관리부(120)는 전생애 주기 프로파일링 기법에 사용되는 관측 변수를 정의하고, 사용자가 입력한 관측 변수를 실행방법 선정부(130)로 전달한다(S110).
실행방법 선정부(130)의 실행 관리부(131)는 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 지의 여부를 판단한다(S120).
S120 단계의 판단결과, 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하지 않는 경우, 실행 관리부(131)는 멀티 스레딩 기법을 이용하여 플랫폼 별 모든 프로그램 코드에 대하여 동시에 프로파일링이 실행될 수 있도록 프로파일링 실행요청 메시지를 프로파일링 실행부(132)로 전달한다(S130). 프로파일링 실행부(132)는 실행 관리부(131)로부터 프로파일링 실행요청 메시지가 전달되면, 프로파일링 실행부(132)는 프로파일 실행 과정을 수행한 결과에 의해 프로파일링 실행 정보를 생성하고, 이를 저장부(140)에 업데이트한다(S140). 프로파일링 실행부(132)는 프로파일링 실행이 완료되었음을 실행 관리부(131)에 알린다.
실행 관리부(131)는 프로파일링 실행 정보가 프로파일링 실행부(132)로부터 수신되면, 프로파일링 실행 정보에 기초하여 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 성능 최적화 영역을 추론한 결과에 의해 플랫폼 별 성능 최적화 추론정보를 생성한다(S150). 실행 관리부(131)는 프로파일링 실행 정보의 수행시간이 환경 변화 임계값 범위 안에 포함되는 지의 여부를 판단한다(S160).
S160 단계의 판단결과, 프로파일링 실행 정보의 수행시간이 환경 변화 임계값 범위 안에 포함되지 않는 경우, 실행 관리부(131)는 프로그램의 수행 환경이 동적으로 변화된 것으로 판단하여 기록된 모든 정보를 초기화한다(S170). S160 단계의 판단결과, 프로파일링 실행 정보의 수행시간이 환경 변화 임계값 범위 안에 포함된 경우, 프로그램의 수행 환경이 변화되지 않은 것으로 판단하여 S100 단계 이후의 단계를 수행하기 위해 대기한다. 본 발명의 실시예에 따른 환경 변화 임계값 범위는 프로그램의 수행 환경이 변화되었는지를 판단하기 위한 기준값이며, 프로그램의 최적화 실행의 수행 시간과 이전 수행 시간 간의 차이값을 이용하여 설정될 수 있다.
한편, S120 단계의 판단결과, 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 경우, 실행 관리부(131)는 성능 최적화 추론정보를 이용하여 최적화 플랫폼이 선택될 수 있도록 최적화 실행요청 메시지를 최적화 실행부(133)로 전달한다. 최적화 실행부(133)는 프로파일링 실행 정보가 존재하는 관측 변수가 사용자에 의해 입력된 것으로 판단하여 별도의 프로파일링을 수행하지 않고 플랫폼 별 성능 최적화 추론정보를 이용하여 사용자가 입력한 적어도 하나의 관측 변수의 값에서 프로그램 성능이 최적화된 플랫폼을 선택한다(S180). 최적화 실행부(133)는 선택한 플랫폼에 의한 최적화된 실행방법을 수행한다(S190). 그리고, 최적화 실행부(133)는 최적화된 실행방법에 의해 프로그램을 수행하는데 걸린 수행시간 및 선택한 플랫폼 등을 포함하는 최적화 실행 정보를 생성하고, 이를 저장부(140)에 업데이트한다. 실행 관리부(131)는 최적화 실행 정보를 이용하여 S160 단계 이후의 동일한 과정을 수행하여 프로그램의 수행 환경이 동적으로 변화되었는지의 여부를 판단하는 이후 과정을 수행한다.
이상, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하였으나 이는 본 발명의 권리 범위를 한정하는 것으로 해석될 수 없으며, 이하에서 기술되는 특허 청구 범위에 의해 판단되는 본 발명의 사상 및 범위를 벗어나지 않는 한도 내에서 해당 기술 분야에서 통상의 지식을 가진 자에 의해 다양하게 변형되어 실시될 수 있을 것이다.
100 : 프로그램 최적화 실행 장치 110 : 코드 관리부
120 : 변수 관리부 130 : 실행방법 선정부
131 : 실행 관리부 132 : 프로파일링 실행부
133 : 최적화 실행부 140 : 저장부

Claims (20)

  1. 동적 언어 환경에서 프로그램의 최적화 실행을 수행하기 위한 장치에 있어서,
    상기 프로그램의 매 실행 시 마다 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 프로파일링을 실행하되 상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하면 상기 프로파일링 실행 정보에 기초하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 실행방법 선정부를 포함하되,
    상기 실행방법 선정부는,
    상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 지의 여부를 판단한 결과에 따라 플랫폼 별 성능 최적화 영역을 추론하는 실행 관리부를 포함하고,
    상기 플랫폼 별 성능 최적화 영역을 추론하는 것은,
    상기 사용자가 입력한 적어도 하나의 관측 변수의 값을 변화시키고 상기 적어도 하나의 관측 변수의 값의 변화에 따라 상기 프로그램 성능이 우세한 영역의 최소값 및 최대값 중 적어도 하나를 추론하는 것
    을 포함하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 실행 관리부는,
    상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하지 않는 경우, 프로파일링 실행요청 메시지를 프로파일링 실행부로 전달하며,
    상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하는 경우, 최적화 실행요청 메시지를 최적화 실행부로 전달하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  4. 제3항에 있어서,
    상기 프로파일링 실행부는,
    상기 프로파일링 실행요청 메시지가 전달되면, 멀티 스레딩 기법을 이용하여 플랫폼 별 모든 프로그램 코드에 대하여 동시에 프로파일링을 실행한 결과에 의해 프로파일링 실행 정보를 생성하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  5. 삭제
  6. 제4항에 있어서,
    상기 최적화 실행부는,
    상기 최적화 실행요청 메시지가 전달되면, 상기 사용자가 입력한 적어도 하나의 관측 변수에 대해 별도의 프로파일링을 수행하지 않고 상기 플랫폼 별 성능 최적화 추론정보를 이용하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  7. 제6항에 있어서,
    상기 최적화 실행부는,
    상기 최적화된 플랫폼에 의한 실행방법을 수행하여 최적화 실행 정보를 생성하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  8. 제7항에 있어서,
    상기 실행 관리부는,
    상기 프로파일링 실행 정보 또는 상기 최적화 실행 정보를 이용하여 상기 프로그램의 수행 환경이 변화되었는지의 여부를 판단하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  9. 제8항에 있어서,
    상기 실행 관리부는,
    상기 프로그램의 수행 환경이 변화된 경우, 상기 프로파일링 실행 정보 및 상기 최적화 실행 정보를 초기화하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  10. 제1항에 있어서,
    상기 사용자로부터 상기 플랫폼 별 최적화된 프로그램 코드를 입력 받는 코드 관리부; 및
    상기 적어도 하나의 관측 변수를 정의하는 변수 관리부를 더 포함하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  11. 제1항에 있어서,
    상기 관측 변수는 상기 프로그램이 실행 될 때마다 변화하며, 상기 프로그램이 사용하는 입력 데이터의 크기, 사용하는 데이터의 종류, 입력 데이터 구조의 깊이, 패턴 매칭 알고리즘의 임계값(Threshold) 및 반복문의 반복 횟수 중 적어도 하나를 포함하는 것을 특징으로 하는 프로그램 최적화 실행 장치.
  12. 동적 언어 환경에서 프로그램의 최적화 실행을 수행하기 위한 방법에 있어서,
    상기 프로그램의 매 실행 시 마다 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 프로파일링을 실행하되 상기 적어도 하나의 관측 변수에 대한 프로파일링 실행 정보가 존재하면 상기 프로파일링 실행 정보에 기초하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계를 포함하고,
    상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계는,
    상기 프로파일링 실행 정보에 기초하여 상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 플랫폼 별 성능 최적화 영역을 추론한 결과에 의해 플랫폼 별 성능 최적화 추론정보를 생성하는 단계를 포함하며,
    상기 성능 최적화 추론정보를 생성하는 단계는,
    상기 사용자가 입력한 적어도 하나의 관측 변수의 값을 변화시키는 단계; 및
    상기 적어도 하나의 관측 변수의 값의 변화에 따라 상기 프로그램 성능이 우세한 영역의 최소값 및 최대값 중 적어도 하나를 추론하는 단계
    를 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
  13. 제12항에 있어서,
    상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계는,
    상기 사용자가 입력한 적어도 하나의 관측 변수에 대한 이전 프로파일링 실행 정보가 존재하는 지의 여부를 판단하는 단계;
    상기 적어도 하나의 관측 변수에 대한 이전 프로파일링 실행 정보가 존재하지 않는 경우, 프로파일링 실행요청 메시지를 프로파일링 실행부로 전달하는 단계; 및
    상기 적어도 하나의 관측 변수에 대한 이전 프로파일링 실행 정보가 존재하는 경우, 최적화 실행요청 메시지를 최적화 실행부로 전달하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
  14. 제13항에 있어서,
    상기 프로파일링 실행부로 전달하는 단계는,
    멀티 스레딩 기법을 이용하여 플랫폼 별 모든 프로그램 코드에 대하여 동시에 프로파일링을 실행한 결과에 의해 프로파일링 실행 정보를 생성하는 단계를 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
  15. 삭제
  16. 삭제
  17. 제14항에 있어서,
    상기 최적화 실행부로 전달하는 단계는,
    상기 사용자가 입력한 적어도 하나의 관측 변수에 대해 별도의 프로파일링을 수행하지 않고 상기 플랫폼 별 성능 최적화 추론정보를 이용하여 상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계를 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
  18. 제17항에 있어서,
    상기 최적화 실행부로 전달하는 단계는,
    상기 최적화된 플랫폼에 의한 실행방법을 수행하여 최적화 실행 정보를 생성하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
  19. 제18항에 있어서,
    상기 프로그램 성능이 최적화된 플랫폼을 선택하는 단계는,
    상기 프로파일링 실행 정보 또는 상기 최적화 실행 정보를 이용하여 상기 프로그램의 수행 환경이 변화되었는지의 여부를 판단하는 단계; 및
    상기 프로그램의 수행 환경이 변화된 경우, 상기 프로파일링 실행 정보 및 상기 최적화 실행 정보를 초기화하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
  20. 제12항에 있어서,
    상기 관측 변수는 상기 프로그램이 실행 될 때마다 변화하며, 상기 프로그램이 사용하는 입력 데이터의 크기, 사용하는 데이터의 종류, 입력 데이터 구조의 깊이, 패턴 매칭 알고리즘의 임계값(Threshold) 및 반복문의 반복 횟수 중 적어도 하나를 포함하는 것을 특징으로 하는 프로그램 최적화 실행 방법.
KR1020140161149A 2014-11-18 2014-11-18 프로그램의 최적화 실행을 위한 장치 및 방법 KR101569142B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140161149A KR101569142B1 (ko) 2014-11-18 2014-11-18 프로그램의 최적화 실행을 위한 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140161149A KR101569142B1 (ko) 2014-11-18 2014-11-18 프로그램의 최적화 실행을 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101569142B1 true KR101569142B1 (ko) 2015-11-13

Family

ID=54610336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140161149A KR101569142B1 (ko) 2014-11-18 2014-11-18 프로그램의 최적화 실행을 위한 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101569142B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262419A (ja) 2007-04-12 2008-10-30 Toyota Motor Corp 情報処理装置、オペレーティングシステム選択方法、プログラム。
JP2010079508A (ja) * 2008-09-25 2010-04-08 Fujitsu Microelectronics Ltd プロファイリング方法およびプロファイリングプログラム
JP2012190093A (ja) * 2011-03-09 2012-10-04 Internatl Business Mach Corp <Ibm> サブクラステスト関数の実行結果を再利用してプログラムを最適化する最適化装置、最適化方法及び最適化プログラム
JP2014191493A (ja) * 2013-03-26 2014-10-06 Fujitsu Ltd プログラム実行制御プログラム、プログラム実行制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008262419A (ja) 2007-04-12 2008-10-30 Toyota Motor Corp 情報処理装置、オペレーティングシステム選択方法、プログラム。
JP2010079508A (ja) * 2008-09-25 2010-04-08 Fujitsu Microelectronics Ltd プロファイリング方法およびプロファイリングプログラム
JP2012190093A (ja) * 2011-03-09 2012-10-04 Internatl Business Mach Corp <Ibm> サブクラステスト関数の実行結果を再利用してプログラムを最適化する最適化装置、最適化方法及び最適化プログラム
JP2014191493A (ja) * 2013-03-26 2014-10-06 Fujitsu Ltd プログラム実行制御プログラム、プログラム実行制御方法

Similar Documents

Publication Publication Date Title
JP5985766B2 (ja) 過度のコンパイル時間の低減
JP2015084251A (ja) ソフトウェア・アプリケーションの性能向上
US9940109B2 (en) Application profile driven scheduling and configuration in a system on a chip
Lorenzon et al. Laant: A library to automatically optimize edp for openmp applications
KR102402584B1 (ko) 사용자 어플리케이션의 특성에 따른 연산 디바이스 동적 제어 기법
Hayes et al. Unified on-chip memory allocation for SIMT architecture
US11537429B2 (en) Sub-idle thread priority class
Jia et al. Auto-tuning Spark big data workloads on POWER8: Prediction-based dynamic SMT threading
JP6400296B2 (ja) マルチモード支援プロセッサ及びマルチモードを支援する処理方法
CN109643232B (zh) 执行程序的计算机系统和在计算机系统上执行程序的方法
Ahmed et al. RALB‐HC: A resource‐aware load balancer for heterogeneous cluster
Jantz et al. Exploring single and multilevel JIT compilation policy for modern machines
KR101569142B1 (ko) 프로그램의 최적화 실행을 위한 장치 및 방법
US10628223B2 (en) Optimized allocation of tasks in heterogeneous computing systems
KR101586712B1 (ko) 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치
Campanoni et al. Dynamic look ahead compilation: a technique to hide jit compilation latencies in multicore environment
Medeiros et al. Transparent aging-aware thread throttling
JP2004240953A (ja) コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。
Porterfield et al. Multi-threaded library for many-core systems
WO2015162465A1 (en) Memory efficient thread-level speculation
Moore et al. Performance modeling of multithreaded programs for mobile asymmetric chip multiprocessors
Schwarzrock et al. Potential gains in edp by dynamically adapting the number of threads for openmp applications in embedded systems
Festa et al. Continuous program optimization via advanced dynamic compilation techniques
Chuang et al. Dynamic profile driven code version selection
Li et al. Energy minimization on thread-level speculation in multicore systems

Legal Events

Date Code Title Description
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180917

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190905

Year of fee payment: 5