KR101997012B1 - 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치 - Google Patents

오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치 Download PDF

Info

Publication number
KR101997012B1
KR101997012B1 KR1020180163910A KR20180163910A KR101997012B1 KR 101997012 B1 KR101997012 B1 KR 101997012B1 KR 1020180163910 A KR1020180163910 A KR 1020180163910A KR 20180163910 A KR20180163910 A KR 20180163910A KR 101997012 B1 KR101997012 B1 KR 101997012B1
Authority
KR
South Korea
Prior art keywords
code
state
program
complexity
state complexity
Prior art date
Application number
KR1020180163910A
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 KR1020180163910A priority Critical patent/KR101997012B1/ko
Application granted granted Critical
Publication of KR101997012B1 publication Critical patent/KR101997012B1/ko

Links

Images

Classifications

    • 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
    • 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/3447Performance evaluation by modeling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)

Abstract

상태 복잡도에 기초한 프로그램의 리소스 예측 장치가 개시된다. 본 장치는 프로그램의 소스 코드를 입력받는 입력부 및 프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하고, 생성된 FA 각각에 대한 상태 복잡도를 산출하며, 산출된 상태 복잡도에 기초하여 프로그램의 수행 시간을 예측하는 프로세서를 포함한다. 이에 따라, 장치 효율이 향상될 수 있다.

Description

오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치{APPRATUS AND METHOD FOR ESTIMATING RESOURCE OF PROGRAM BASED ON AUTOMATA STATE COMPLEXITY}
본 발명은 오토마타 상태 복잡도에 기초하여 프로그램 특히, C 언어와 같은 절차적 프로그램의 리소스 예측 방법 및 이를 적용한 장치에 관한 것이다.
최근 정보기술 분야의 발전으로 빅데이터, 인공지능 등의 관련 분야가 주목을 받고 있다. 이러한 분야들은 공통적으로 다량의 데이터 처리를 위해 막대한 계산 능력을 필요로 하며, 이는 다수의 연산 노드의 조합으로 이루어진 초고성능 컴퓨터(High Performance Computer, HPC)의 연산 능력을 통해 연구를 수행하고 있다. 초고성능 컴퓨터의 연산 능력은 최근 20년 사이에 약 1000배 가량, 소모 전력량 역시 약 20배로 증가되었으며, 기존의 초고성능 컴퓨터 상에서 이용하고자 하는 소프트웨어의 소모 리소스를 예측하고, 이에 대한 최적의 성능을 낼 수 있는 시스템이 필요하다 할 것이다.
기존의 소프트웨어 분석은 소프트웨어의 성능에 대한 분석과 소프트웨어의 특성에 대한 분석으로 나누어 볼 수 있다. 소프트웨어의 성능 분석은 동적 분석에 기반하여 접근하는 경우가 많으며, 이는 곧 실제로 소프트웨어의 실행 전에는 그 리소스의 상한을 예측할 방법이 존재하지 않는다는 의미이다.
소프트웨어를 표현하는 방법 중 플로우차트, UML 등의 방법은 실질적으로는 소프트웨어의 분석보다는 소프트웨어 설계 측면에서의 분석을 목표로 이용되며 이를 이론적으로 표현하여 분석하는 것은 매우 어렵다. Recursive State Machine은 소프트웨어의 재귀적 요소에 대한 종료 여부 분석을 위해 모델 체킹 분야에서 제안된 표현 방법으로, 이는 다시 재귀적인 논리식이나 Pushdown Automata (PDA)의 형태로 표현될 수 있으나, PDA 형태의 표현은 병렬화 등 일부 문제의 경우 이론적으로 해결할 수 없다.
이에, 단일 노드 시스템의 수행시간 리소스의 상한을 예측하는 방법이 요청된다 할 것이다.
한편, 상기와 같은 정보는 본 발명의 이해를 돕기 위한 백그라운드(background) 정보로서만 제시될 뿐이다. 상기 내용 중 어느 것이라도 본 발명에 관한 종래 기술로서 적용 가능할지 여부에 관해, 어떤 결정도 이루어지지 않았고, 또한 어떤 주장도 이루어지지 않는다.
공개특허공보 제10-2004-0092403호(공개일 : 2004.11.3)
본 발명은 상술한 문제점을 해결하기 위해 안출된 것으로 본 발명의 일 실시 예는 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치를 제안한다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시 예에 따른 프로세서에 의해 수행되는 상태 복잡도에 기초한 프로그램의 리소스 예측 방법은 프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하는 단계; 생성된 FA 각각에 대한 상태 복잡도를 산출하는 단계; 및 산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 단계를 포함한다.
몇몇 실시 예에서, 상기 복수의 코드 카테고리는, 일반 명령 코드, 분기 코드, 재귀 코드 및 반복 코드 중 적어도 하나를 포함할 수 있다.
몇몇 실시 예에서, 상기 방법은 상기 프로그램을 수행한 실제 시간과 상기 예측된 수행 시간을 비교하는 단계를 더 포함할 수 있다.
한편, 본 발명의 일 실시 예에 따른 상태 복잡도에 기초한 프로그램의 리소스 예측 장치는 프로그램의 소스 코드를 입력받는 입력부; 및 프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하고, 생성된 FA 각각에 대한 상태 복잡도를 산출하며, 산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 프로세서를 포함한다.
몇몇 실시 예에서, 상기 복수의 코드 카테고리는, 일반 명령 코드, 분기 코드, 재귀 코드 및 반복 코드 중 적어도 하나를 포함할 수 있다.
몇몇 실시 예에서, 상기 프로세서는, 상기 프로그램을 수행한 실제 시간과 상기 예측된 수행 시간을 비교할 수 있다.
한편, 본 발명의 일 실시 예에 따른 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에서 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하는 동작, 생성된 FA 각각에 대한 상태 복잡도를 산출하는 동작 및 산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 동작을 수행하도록 하는 실행 가능한 명령을 포함한다.
상기 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 장치가 제공됨으로써 아래와 같은 효과가 도출될 수 있다.
첫째로, 실제 프로그램을 동적으로 실행하지 않더라도 프로그램의 수행 시간이 정적으로 예측될 수 있다.
둘째로, 상기 프로그램의 리소스 예측 방법이 다양한 기기와 호환 가능하므로 특정 기기에만 종속성을 갖지 않으며, 특정 소프트웨어에만 국한되지 않는다.
셋째로, 정적 분석이 적용되더라도 병렬화된 소프트웨어에 대한 분석이 가능하다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1(a) 내지 도 1(e)는 본 발명의 일 실시 예에 따른 프로그램의 소스 코드에 대해 유한 상태 오토마타를 생성하는 내용을 설명하기 위한 도면이다.
도 2(a) 내지 도 2(c)는 본 발명의 일 실시 예에 따른 생성된 FA 에 대한 상태 복잡도를 계산하는 내용을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 장치의 구성을 나타내는 블록도이다.
도 4 내자 도 6은 본 발명의 일 실시 예에 따른 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 장치의 구동을 설명하기 위한 도면이다.
이하 첨부된 도면들을 참조하여 본 발명의 다양한 실시 예를 보다 상세하게 설명한다. 다만, 본 발명을 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략한다.
유한 상태 오토마타(Finite-state Automata, 이하 “FA”라 칭함)는 컴퓨터 프로그램과 전자 논리 회로를 설계하는데에 쓰이는 수학적 모델이며, 유한한 개수의 상태를 가질 수 있는 오토마타 즉, 추상 기계라고 할 수 있다. FA의 각 상태는 소프트웨어 실행 과정의 환경(메모리 상태 등)을 표현하며, FA는 한 번에 오로지 하나의 상태만을 가지게 되며, 현재 상태(Current State)란 임의의 주어진 시간의 상태를 칭한다. 이러한 기계는 어떠한 사건(Event)에 의해 한 상태에서 다른 상태로 변화할 수 있으며, 이를 전이(Transition)라 한다.
여기서, 각 상태는 동그라미로 표기될 수 있으며, 전이는 화살표로 표기될 수 있고 전이 조건이 추가적으로 표기될 수 있으며, 입력값을 처리했을 때의 상태가 받아들려진 경우의 상태는 이중 동그라미로 표기될 수 있다.
일반적인 프로그램 특히, 절차적 프로그램의 경우 명령문(일반 명령 코드), 분기문(분기 코드), 반복문(반복 코드), 함수 호출문(함수 호출 코드) 등을 포함할 수 있다. 명령문은 일반적인 명령 블록을 포함하며, 분기문은 스위치문, 이프 엘스(if else)문 등을 포함할 수 있으며, 반복문은 for 문, while 문 등을 포함할 수 있다.
도 1(a) 내지 도 1(e)는 본 발명의 일 실시 예에 따른 프로그램의 소스 코드에 대해 유한 상태 오토마타(Finite-state Automata, 이하 “FA”라 칭함)를 생성하는 내용을 설명하기 위한 도면이며, 실제 프로그램 소스 코드 상에서 명령문, 분기문, 반복문, 함수호출문, 재귀문 등에 대해 어떻게 FA를 생성하는지 이하에서 설명하기로 한다.
도 1(a)를 참고하면, 명령문의 FA 변환이 수행될 수 있는데, 단일 명령 블록은 붙임(Catenation) 연산을 통해 일자 형태의 FA 로 생성될 수 있으며, 두 FA 모델의 결합 과정에서 동일한 상태를 표현하는 상태는 병합될 수 있으며, 이에 따라 불필요한 트랜지션은 제거될 수 있다.
예를 들면, 명령문 단위의 모델 생성은 단순 명령(가령, 1+2)과 복합적인 명령(a*f(2*b, 3+c)) 등에 대해 동일한 모델이 생성될 수 있으며, 이와 같은 연산을 단순 명령으로 분해(2*b; 3+c; f(); a*f)하고 분리하여 복합 명령에 소요되는 시간이 정확하게 묘사될 수 있다.
도 1(b)를 참고하면, 분기문의 FA 변환이 수행될 수 있는데, 분기문은 합집합(Union) 연산이 이용될 수 있으며, 가능한 모든 분기문에 대한 부분 FA 모델에 대해 모두 연결될 수 있다.
도 1(c)를 참고하면, 반복문의 FA 변환이 수행될 수 있는데, 반복문은 Kleene-Closure) 연산이 이용될 수 있으며, 반복부분의 종점과 시점이 트랜지션으로 연결될 수 있다. 종래기술의 시간 복잡도를 다루는 빅오(Big Oh) 연산의 경우 반복문의 연산시간만 중요하게 다루기 때문에 연산 시간 계산에 오류가 발생될 수 있다.
도 1(d)를 참고하면, 함수 호출문의 FA 변환이 수행될 수 있는데, 함수 호출 명령을 표현하는 트랜지션을 함수 자체의 오토마타로 변경될 수 있다.
도 1(e)를 참고하면, 재귀문의 FA 변환이 수행될 수 있는데, f()의 반복 횟수 및 exit() 루틴의 복잡도는 함수 f에서 발생하는 최대 재귀호출횟수에 비례하여 결정될 수 있다.
도 2(a) 내지 도 2(c)는 본 발명의 일 실시 예에 따른 생성된 FA 에 대한 상태 복잡도를 계산하는 내용을 설명하기 위한 도면이다. s(A)는 A의 상태복잡도이며, 단일 명령의 상태복잡도는 1로 가정하기로 한다.
도 2(a)의 일반 명령문 모델을 참고하면, s(FA1)은 FA1 모델의 상태복잡도이고, s(FA2)는 FA2 모델의 상태복잡도이다. 도 2(a) 모델의 상태 복잡도는 s(FA1) + s(FA2)로 산출될 수 있으며, 해당 모델을 구성하는 상태 수로 상태 복잡도가 사용될 수도 있다.
도 2(b)의 분기문 모델을 참고하면, 도 2(b) 모델의 경우 아래 식 1에 의해 산출될 수 있다. 분기문 모델의 경우 각 분기에 해당하는 부-오토마타 모델에 대한 상태복잡도를 통해 그 가중 평균을 활용하여 상태복잡도가 계산될 수 있다.
[식 1]
S = s(FA1) + s(FA2) + …
(s(FA1)^2 + s(FA2)^2 + …) / S (( ( s(FA1) / S ) * s(FA1) + … ))
도 2(c)의 반복문 모델을 참고하면, 도 2(c) 모델의 경우 상태 복잡도는 K * s(FA)일 수 있으며, K는 소프트웨어 분석을 통해 입력 크기에 대한 함수로 결정될 수 있다. 반복문의 경우 소프트웨어에서 예상되는 최대 반봇 횟수를 통해 상태 복잡도를 해당 배수만큼 증가시켜 계산될 수 있다.
또한, 함수 호출 또는 재귀문의 경우 모델링 과정에서 상기 일반 명령문, 분기문, 반복문의 결합으로 표현될 수 있으며, 함수 호출문은 해당 함수를 표현하는 오토마타 모델의 상태복잡도를 함수의 상태 복잡도로 이용할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 본 발명의 일 실시 예에 따른 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 장치(100, 이하 “프로그램 리소스 예측 장치”)의 구성을 나타내는 블록도이다.
도 3을 참고하면, 프로그램 리소스 예측 장치(100)는 오토마타 상태 복잡도를 이용하여 프로그램의 수행시간을 예측하는 장치로, 입력부(110), 디스플레이(120), 저장부(130) 및 프로세서(140)를 포함한다. 다만, 상술한 구성들은 본 발명을 설명하는데 반드시 필수적인 구성은 아닌 바, 본 발명의 일 실시 예에 따른 프로그램 리소스 예측 장치(100)는 상술한 구성보다 더 많거나 적은 구성을 포함할 수 있다. 아울러, 입력부(110), 디스플레이(120) 및 저장부(130)는 프로세서(140)를 제어를 받는다.
입력부(110)는 다양한 정보를 입력받을 수 있다. 입력부(110)는 예측 대상 프로그램 소스 코드를 입력받을 수 있다.
디스플레이(120)는 프로세서(140)의 제어에 따라 다양한 정보를 시각화할 수 있다. 디스플레이(120)는 데이터가 표시되는 표시부로 디스플레이(120)는 액정 디스플레이(liquid crystal display, LCD), 박막 트랜지스터 액정 디스플레이(thin film transistor-liquid crystal display, TFT LCD), 유기 발광 다이오드(organic light-emitting diode, OLED), 플렉서블 디스플레이(flexible display), 3차원 디스플레이(3D display), 전자잉크 디스플레이(e-ink display) 중에서 적어도 하나를 포함할 수 있다.
저장부(130)는 수집된 데이터가 저장되는 모듈로, 저장부(130)에는 프로그램 소스 코드가 저장될 수 있는데, 저장부(130)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), SSD 타입(Solid State Disk type), SDD 타입(Silicon Disk Drive type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(random access memory; RAM), SRAM(static random access memory), 롬(read-only memory; ROM), EEPROM(electrically erasable programmable read-only memory), PROM(programmable read-only memory), 자기 메모리, 자기 디스크 및 광디스크 중 적어도 한 타입의 저장매체를 포함할 수 있다.
프로세서(140)는 프로그램의 리소스 예측 장치(100)를 전반적으로 제어하는 모듈이며, 이하에서는 프로세서(140)의 구동을 도 4 내지 도 6을 참고하여 설명하기로 한다.
프로세서(140)는 각각의 장비별로 단위 연산을 수행하는 시간과 본 발명의 일 실시 예에 따른 정적으로 코드의 복잡도를 계산한 결과를 회귀 분석을 통해 분석할 수 있다.
단위 연산은 각 장비별의 사양에 따라 다른 값을 보이고, 이는 해당 장비에서 특정 소프트웨어가 구동되었을 때의 수행시간을 예측하기 위해 사용될 수 있다. FA 모델의 경우 장비의 특성이 반영되지 않게 된다. 여기서, 내부 장비는 일반적인 PC 를 예로 들고 실험 장비는 초고성능 컴퓨터일 수 있다. 단위 연산의 입력 크기 별 수행 시간을 통해 기기 별 연산 패턴이 반영된 수행시간이 계측될 수 있다.
먼저, 프로세서(140)는 FA 모델의 상태 복잡도와 내부 장비의 각 단위 연산에 대한 로그값을 선형 회귀 방법을 통해 분석하여 수행 시간을 예측하는 수식을 도출할 수 있다. 가령, 아래 표 1과 같이, 내부 장비의 상태복잡도 계수 및 P-value 가 산출될 수 있으며, dgemm 및 dtrmm 의 계수가 산출될 수 있다
[표 1]
Figure 112018127106820-pat00001
도 4는 본 발명의 일 실시 예에 따른 내부 장비의 실제 수행 시간(x)에 대한 예측값(y)을 비교한 그래프이며, 도 4는 본 발명의 일 실시 예에 따른 내부 장비의 자기 예측 오차율을 나타낸다.
도 4를 참고하면, 프로세서(140)는 HPL의 실제 수행시간에 대한 예측값을 산출할 수 있다. 여기서, HPL(High Performance Linpack)은 Ax=b 형태의 방정식을 해결하기 위해 소모되는 시간을 통해 시스템의 성능을 측정하는 벤치마크 도구로 단일 노드 상에서의 상태 복잡도 기반 리소스 소모를 예측할 수 있다.
도 4를 참고하면, y = Px 의 선형적인 구조가 나타나는 바, 예측값이 정확한 것이 표시될 수 있으며, 도 5를 참고하면, 자기 예측 오차율이 -1 ~ 1로 정확한 것이 표시될 수 있다.
도 6은 본 발명의 일 실시 예에 따른 실험 장비의 실제 수행 시간(x)에 대한 예측값(y)을 비교한 그래프이다. 선행 관계를 만족하는 점에 정확도가 높다고 할 수 있다.
도 4 내지 도 6을 참고하면, 실제 수행시간과 예측 수행시간 간에 선형관계를 나타내고, 실험 장비를 활용한 이기종 간 성능 에측에서도 예측값에 부정확함이 관측되나 예측 수행시간과 실제 수행시간 간에 선형관계를 만족한다.
아래, 표 2를 참고하면, 상태 복잡도와 두 단위 연산이 최종 수행시간과 연관된 정도가 장비에 따라 약간의 차이를 보인다.
[표 2]
Figure 112018127106820-pat00002
표 2를 보면, 인자들이 최종적으로 전체 수행시간에 영향을 미치지만, 상호 간의 선형 결합이 아닌 둘 이상의 연관을 통해 전체 수행 시간을 예측한다면 더욱 정확한 결과가 도출될 수 있다.
상기 표 2의 수치는 각 장비에서 실행 시 지정된 수행 크기와 각 인자의 로그값과 측정된 실제 수행 시간의 로그값의 상관도를 나타낸다.
살핀 바와 같이, 본 명세서 상에서는 절차적 프로그램에서 본 발명이 적용되는 것으로 설명하나 객체지향 프로그램 등에서도 본 발명이 적용될 수 있다.
한편, 본 발명의 일 실시 예에 따른 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에서 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가, 프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하는 동작, 생성된 FA 각각에 대한 상태 복잡도를 산출하는 동작 및 산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 동작을 수행하도록 하는 실행 가능한 명령을 포함할 수 있다.
본 발명의 실시예들은, 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
지금까지 본 발명을 바람직한 실시 예를 참조하여 상세히 설명하였지만, 본 발명이 상기한 실시 예에 한정되는 것은 아니며, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 또는 수정이 가능한 범위까지 본 발명의 기술적 사상이 미친다 할 것이다.

Claims (7)

  1. 프로세서에 의해 수행되는 상태 복잡도에 기초한 프로그램의 리소스 예측 방법에 있어서,
    프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하는 단계;
    생성된 FA 각각에 대한 상태 복잡도를 산출하는 단계;
    산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 단계; 및
    상기 프로그램을 수행한 실제 시간과 상기 예측된 수행 시간을 비교하는 단계를 포함하며,
    상기 복수의 코드 카테고리는,
    일반 명령 코드, 분기 코드, 재귀 코드 및 반복 코드 중 적어도 하나를 포함하며,
    상기 프로세서는,
    상기 일반 명령 코드의 경우 모델의 상태복잡도를 합산하고,
    상기 분기 코드의 경우, 가중 평균에 기초하여 상태복잡도를 산출하며,
    상기 반복 코드의 경우 K * 모델의 상태복잡도를 산출하는(여기서 K는 최대 반복 횟수), 상태 복잡도에 기초한 프로그램의 리소스 예측 방법.
  2. 삭제
  3. 삭제
  4. 프로그램의 소스 코드를 입력받는 입력부; 및
    프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하고, 생성된 FA 각각에 대한 상태 복잡도를 산출하며, 산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 프로세서를 포함하며,
    상기 프로세서는,
    상기 프로그램을 수행한 실제 시간과 상기 예측된 수행 시간을 비교하며,
    상기 복수의 코드 카테고리는,
    일반 명령 코드, 분기 코드, 재귀 코드 및 반복 코드 중 적어도 하나를 포함하고,
    상기 프로세서는,
    상기 일반 명령 코드의 경우 모델의 상태복잡도를 합산하고,
    상기 분기 코드의 경우, 가중 평균에 기초하여 상태복잡도를 산출하며,
    상기 반복 코드의 경우 K * 모델의 상태복잡도를 산출하는(여기서 K는 최대 반복 횟수), 상태 복잡도에 기초한 프로그램의 리소스 예측 장치.
  5. 삭제
  6. 삭제
  7. 컴퓨터 상에서 수행하기 위한 프로그램을 기록한 비일시적 컴퓨터 판독 가능한 기록 매체에서 상기 프로그램은, 프로세서에 의한 실행 시, 상기 프로세서가,
    프로그램의 소스 코드를 복수의 코드 카테고리 각각에 대응되는 FA(Finite-state Automata)로 생성하는 동작,
    생성된 FA 각각에 대한 상태 복잡도를 산출하는 동작,
    산출된 상태 복잡도에 기초하여 상기 프로그램의 수행 시간을 예측하는 동작, 및
    상기 프로그램을 수행한 실제 시간과 상기 예측된 수행 시간을 비교하는 동작을 수행하도록 하는 실행 가능한 명령을 포함하며,
    상기 복수의 코드 카테고리는,
    일반 명령 코드, 분기 코드, 재귀 코드 및 반복 코드 중 적어도 하나를 포함하고,
    상기 프로세서는,
    상기 일반 명령 코드의 경우 모델의 상태복잡도를 합산하고,
    상기 분기 코드의 경우, 가중 평균에 기초하여 상태복잡도를 산출하며,
    상기 반복 코드의 경우 K * 모델의 상태복잡도를 산출하는(여기서 K는 최대 반복 횟수), 비일시적 컴퓨터 판독 가능한 기록 매체.
KR1020180163910A 2018-12-18 2018-12-18 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치 KR101997012B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180163910A KR101997012B1 (ko) 2018-12-18 2018-12-18 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180163910A KR101997012B1 (ko) 2018-12-18 2018-12-18 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치

Publications (1)

Publication Number Publication Date
KR101997012B1 true KR101997012B1 (ko) 2019-07-05

Family

ID=67225361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180163910A KR101997012B1 (ko) 2018-12-18 2018-12-18 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치

Country Status (1)

Country Link
KR (1) KR101997012B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040092403A (ko) 2003-04-24 2004-11-03 오재호 실시간 기상 데이터 처리 시스템 및 방법
KR20130039678A (ko) * 2011-10-12 2013-04-22 후지쯔 가부시끼가이샤 시뮬레이션 장치, 방법, 및 기록 매체
KR20140006911A (ko) * 2011-01-25 2014-01-16 마이크론 테크놀로지, 인크. Fsm을 구현하기 위한 특수 목적 요소의 이용

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040092403A (ko) 2003-04-24 2004-11-03 오재호 실시간 기상 데이터 처리 시스템 및 방법
KR20140006911A (ko) * 2011-01-25 2014-01-16 마이크론 테크놀로지, 인크. Fsm을 구현하기 위한 특수 목적 요소의 이용
KR20130039678A (ko) * 2011-10-12 2013-04-22 후지쯔 가부시끼가이샤 시뮬레이션 장치, 방법, 및 기록 매체

Similar Documents

Publication Publication Date Title
EP3446260B1 (en) Memory-efficient backpropagation through time
CN107885762B (zh) 智能大数据系统、提供智能大数据服务的方法和设备
Kwiatkowska et al. Prism: Probabilistic model checking for performance and reliability analysis
US20170220942A1 (en) Predicting application performance on hardware accelerators
US11586792B2 (en) Scheduling fusion for quantum computing simulation
US10146531B2 (en) Method and apparatus for generating a refactored code
US20180025286A1 (en) Detecting trends in evolving analytics models
WO2021233281A1 (en) Dynamic automation of selection of pipeline artifacts
US11362891B2 (en) Selecting and using a cloud-based hardware accelerator
CN111145076B (zh) 数据并行化处理方法、系统、设备及存储介质
US11288065B2 (en) Devops driven cognitive cost function for software defect prediction
CN114981800A (zh) 个性化自动化机器学习
EP4024203A1 (en) System performance optimization
US10977098B2 (en) Automatically deploying hardware accelerators based on requests from users
US11144357B2 (en) Selecting hardware accelerators based on score
Cito et al. Interactive production performance feedback in the IDE
US20230236923A1 (en) Machine learning assisted remediation of networked computing failure patterns
US10872025B1 (en) Automatic performance testing and performance regression analysis in a continuous integration environment
US10540828B2 (en) Generating estimates of failure risk for a vehicular component in situations of high-dimensional and low sample size data
US11119892B2 (en) Method, device and computer-readable storage medium for guiding symbolic execution
EP4085396A1 (en) Explainable process prediction
KR101997012B1 (ko) 오토마타 상태 복잡도에 기초한 프로그램의 리소스 예측 방법 및 이를 적용한 장치
US11928047B2 (en) Contextual data generation for application testing in mixed reality simulations
US11093229B2 (en) Deployment scheduling using failure rate prediction
CN114416029A (zh) 数据处理方法、装置、设备、存储介质及计算机程序产品

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant