KR102119509B1 - 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치 - Google Patents

안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치 Download PDF

Info

Publication number
KR102119509B1
KR102119509B1 KR1020180117418A KR20180117418A KR102119509B1 KR 102119509 B1 KR102119509 B1 KR 102119509B1 KR 1020180117418 A KR1020180117418 A KR 1020180117418A KR 20180117418 A KR20180117418 A KR 20180117418A KR 102119509 B1 KR102119509 B1 KR 102119509B1
Authority
KR
South Korea
Prior art keywords
program
code
application function
collision
virtual
Prior art date
Application number
KR1020180117418A
Other languages
English (en)
Other versions
KR20200037968A (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 KR1020180117418A priority Critical patent/KR102119509B1/ko
Publication of KR20200037968A publication Critical patent/KR20200037968A/ko
Application granted granted Critical
Publication of KR102119509B1 publication Critical patent/KR102119509B1/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
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/143Reconfiguring to eliminate the error with loss of software functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치를 제시하며, 가상실행장치 및 방법은 OpenCL로 제공된 프로그램의 구성 중 가상 시스템과 충돌되는 기능을 대체하는 대체프로그램을 제공함으로써 시스템에서 프로그램이 안정적인 실행이 되도록 한다.

Description

안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치{METHOD AND APPRATUS FOR PROVIDING VIRTUALIZED OPENCL ENVIRONMENT FOR STABLE EXECUTION}
본 명세서에서 개시되는 실시예들은 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치에 관한 것으로, 보다 상세하게는 OpenCL을 적용한 프로그램을 다양환 환경에서 안정적으로 실행할 수 있도록 가상화 실행환경을 제공하는 방법 및 장치에 관한 것이다.
OpenCL은 (Open Computing Language) 이종 컴퓨팅 환경에서 실행되는 프로그램들을 위한 표준 프로그래밍 모델이다.
이러한 OpenCL은 호스트와 계산 디바이스로 구성되어 있는 시스템을 가정한다. 호스트는 운영체제를 실행하고 있으며CPU, GPU, FPGA, Cell BE processor, Intel Xeon Phi coprocessor 등이 계산 디바이스가 될 수 있다.
OpenCL의 실행모델은 호스트가 필요한 데이터를 계산 디바이스에 복사한 후, 커널이라는 OpenCL C언어로 구성된 프로그램을 계산디바이스에서 실행하고, 실행된 계산 결과는 다시 호스트의 메모리에 복사될 수 있다.
호스트와 디바이스 간 데이터 전송시에는 OpenCL 표준에서 정의한 통신 API 함수를 사용한다. 이러한, 통신 API 함수의 종류는 다양하며, 실행 환경(CPU의 종류, 계산 디바이스의 종류, OpenCL 라이브러리 버전)에 따라 함수의 실행 가능 여부 및 성능이 달라진다.
OpenCL 커널은 OpenCL C 언어로 구성된 프로그램으로, 전체 프로그램 중 계산 디바이스를 사용하여 빠르게 실행하고자 하는 핵심 연산을 처리한다.
OpenCL C 언어는 C 언어와 유사한 프로그램이며, OpenCL C로 작성된 프로그램은 같은 동작을 수행하는 C 프로그램으로 전환되어 CPU에서 실행될 수 있다. API 함수의 마찬가지로, OpenCL C 언어의 상세 스펙 또한 OpenCL 라이브러리의 버전에 따라 차이가 있다.
기본적으로 OpenCL로 작성된 프로그램은 제조사의 OpenCL 라이브러리가 설치된 실행 환경에서 실행될 수 있으나, 라이브러리 버전, 제조사 종류에 따른 API 함수 지원 여부, OpenCL C 언어 스펙 등의 차이로 인해 특정환경에서 실행되는 프로그램이 다른 환경에서 실행되지 않는 문제가 발생할 수 있다.
관련하여 선행기술 문헌인 한국특허공개번호 제 10-2014-0054948 호에서는 타겟 시스템(target system)과 연동하는 OpenCL 응용 소프트웨어 개발 지원 도구에 있어서, 호스트 프로그램과 커널 프로그램으로 구성되는 OpenCL 응용 소프트웨어를 호스트 프로그램에 대응하는 호스트 소스 코드와 커널 프로그램에 대응하는 커널 소스 코드로 구분하여 저장하고, 타겟 시스템의 OpenCL 플랫폼에 대응하는 툴체인(tool-chain)을 관리하는 프로젝트 관리부 및 커널 소스 코드의 컴파일 타입을 결정하고, 컴파일 타입에 대응하여 커널 소스 코드의 빌드(build) 여부를 결정하는 빌더(builder)를 포함하는 OpenCL 응용 소프트웨어 개발 지원 도구를 제공할 수 있을 뿐, 상술된 바와 같이 OpendCL 로 작성된 프로그램이 서로 다른 환경에서의 실행이 되지 않는 문제점을 해결하지 못한다.
따라서 상술된 문제점을 해결하기 위한 기술이 필요하게 되었다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 안정적인 실행을 보장하는 OpencCL 가상화 실행환경 제공 방법 및 장치를 제시하는 데 목적이 있다.
본 명세서에서 개시되는 실시예들은 프로그래머가 확인하지 못한 OpenCL환경에서도 안정적인 프로그램의 실행을 보장할 수 있도록 가상화 실행환경에서 프로그램을 실행하는 가상화 실행환경 제공 방법 및 장치를 제시하는 데 목적이 있다.
본 명세서에서 개시되는 실시예들은 OpenCL을 가상화 실행환경에서 프로그램의 동작을 검증하는 가상화 실행환경 제공 방법 및 장치를 제시하는데 목적이 있다.
본 명세서에서 개시되는 실시예들은 프로그램의 동작에 문제가 코드를 대체할 코드를 생성하여 OpenCL의 안정적인 실행을 보증하는 가상화 실행환경 제공 방법 및 장치를 제시하는데 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, 가상 실행환경을 제공하는 장치에 있어서, OpenCL로 제작된 프로그램이 실행되는 시스템에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 동작검증부, 상기 시스템과 충돌되는 기능과 동일한 기능을 수행하되 상기 시스템에 대응되는 대체프로그램을 제공하는 대체프로그램제공부 및 상기 대체프로그램을 저장하는 메모리를 포함할 수 있다.
다른 실시예에 따르면, 가상실행장치가 가상 실행환경을 제공하는 방법에 있어서, OpenCL로 제작된 프로그램이 시스템에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 단계 및 상기 시스템과 충돌되는 기능과 동일한 기능을 수행하되 상기 시스템에 대응되는 대체프로그램을 제공하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 가상실행방법을 수행하는 프로그램이 기록된 컴퓨터 판독이 가능한 기록매체로서, OpenCL로 제작된 프로그램이 시스템에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 단계 및 상기 시스템과 충돌되는 기능과 동일한 기능을 수행하되 상기 시스템에 대응되는 대체프로그램을 제공하는 단계를 포함할 수 있다.
다른 실시예에 따르면, 가상실행장치에 의해 수행되며, 가상실행방법을 수행하기 위해 기록매체에 저장된 컴퓨터프로그램으로서, OpenCL로 제작된 프로그램이 시스템에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 단계 및 상기 시스템과 충돌되는 기능과 동일한 기능을 수행하되 상기 시스템에 대응되는 대체프로그램을 제공하는 단계를 포함할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치를 제시할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, OpenCL프로그램의 안정적인 실행되도록 동작을 검증하여 프로그램 자체의 안정성이 확보되어 상업적인 가치를 높일 수 있는 OpenCL 가상화 실행환경 제공 방법 및 장치를 제시할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, OpenCL 프로그램 중 문제가 되는 코드를 자동으로 대체함으로써 OpenCL 프로그램의 안정성을 확보하는 가상화 실행환경 제공 방법 및 장치를 제시할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 프로그램 유지 보수에 드는 인적 자원의 투입량을 최소화할 수 있는 OpenCL 가상화 실행환경 제공 방법 및 장치를 제시할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시예에 따른 가상실행장치를 도시한 블록도이다.
도 2는 일 실시예에 따른 가상실행방법을 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 ‘직접적으로 연결’되어 있는 경우뿐 아니라, ‘그 중간에 다른 구성을 사이에 두고 연결’되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.
다만 이를 설명하기에 앞서, 아래에서 사용되는 용어들의 의미를 먼저 정의한다.
‘프로그램’은 OpenCL을 이용하여 제작된 프로그램으로 커널과 OpenCL에서 제공하는 응용함수(API)로 구성될 수 있다.
‘커널’은 OpenCL C 언어로 구성된 프로그램으로 계산디바이스에서 실행되는 코드이다.
‘응용함수(API)’는 호스트와 디바이스 간 데이터 전송을 위해 이용되는 인터페이스를 정의한 함수(fuction)이다.
‘시스템’은 OpecCL로 제작된 프로그램을 실행하는 주체로 호스트와 계산디바이스로 구성될 수 있다.
‘가상 시스템’은 프로그램이 실행되는 시스템과 동일한 가상의 실행환경이다.
위에 정의한 용어 이외에 설명이 필요한 용어는 아래에서 각각 따로 설명한다.
도 1은 일 실시예에 따른 가상실행장치(10)를 설명하기 위한 구성도이다.
가상실행장치(10)은 네트워크(N)를 통해 원격지의 서버에 접속하거나, 타 단말 및 서버와 연결 가능한 컴퓨터로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop)등을 포함수 있다.
도 2는 일 실시예에 따른 단말의 구성을 도시한 도면이다. 도 2를 참조하면, 일 실시예에 따른 가상실행장치(10)는, 입출력부(110), 제어부(120), 통신부(130) 및 메모리(140)를 포함할 수 있다.
입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와, 작업의 수행 결과 또는 단말(100)의 상태 등의 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자 입력을 수신하는 조작 패널(operation panel) 및 화면을 표시하는 디스플레이 패널(display panel) 등을 포함할 수 있다.
구체적으로, 입력부는 키보드, 물리 버튼, 터치 스크린, 카메라 또는 마이크 등과 같이 다양한 형태의 사용자 입력을 수신할 수 있는 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널 또는 스피커 등을 포함할 수 있다. 다만, 이에 한정되지 않고 입출력부(110)는 다양한 입출력을 지원하는 구성을 포함할 수 있다.
제어부(120)는 가상실행장치(10)의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 제어부(120)는 입출력부(110)를 통해 수신한 사용자 입력에 대응되는 동작을 수행하도록 가상실행장치(10)에 포함된 다른 구성들을 제어할 수 있다.
예를 들어, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시키거나, 메모리(140)에 저장된 파일을 읽어오거나, 새로운 파일을 메모리(140)에 저장할 수도 있다.
이러한 제어부(120)는 프로그램분석부(121), 대체코드매칭부(122), 대체응용함수매칭부(123), 동작검증부(124) 및 대체프로그램제공부(125)로 구성될 수 있다.
우선, 프로그램분석부(121)는 OpenCL로 제작된 프로그램이 호스트와 계산디바이스로 구성되어 상기 프로그램이 실행되는 시스템과 대응되는 가상 시스템과 충돌되는 프로그램의 각 구성을 식별할 수 있다.
이때, 프로그램은 시스템의 계산디바이스에서 실행되는 커널 및 호스트와 계산디바이스 간 데이터 이동을 수행하는 응용함수로 구성될 수 있다.
프로그램분석부(121)는 프로그램이 시스템에서 정상 동작하는지를 미리 확인하기 위해 가상 시스템에서 정상적으로 동작하는지를 분석할 수 있다.
예를 들어, 프로그램분석부(121)는 프로그램에 속한 코드 중 시스템의 운영체제 환경에 적합하지 않은 코드가 포함되어 있는지 여부를 분석하거나 또는 시스템의 운영체제가 제공하지 않는 기능을 이용하는 응용함수가 포함되어 있는지 여부를 분석할 수 있다.
그리고 프로그램분석부(121)는 프로그램을 구성하는 커널 및 응용함수를 기초로 프로그램을 등록할 수 있다.
예를 들어, 프로그램분석부(121)는 프로그램을 구성하는 코드를 기초로 프로그램을 식별하기 위한 식별마크를 할당하여 분석된 프로그램을 등록할 수 있다.
그리고 대체코드매칭부(122)는 커널을 구성하는 코드 중 가상 시스템과 충돌하는 충돌코드를 대체하는 대체코드를 생성할 수 있고, 생성된 대체코드와 상기 코드를 매칭할 수 있다.
즉, 대체코드매칭부(122)는 프로그램분석부(121)에서 분석된 커널의 코드 중 가상 시스템과 충동하는 충돌코드에 대해 동일한 기능을 수행하되 가상 시스템과 충돌하지 않는 대체코드를 생성할 수 있다.
예를 들어, 대체코드매칭부(122)는 메모리 할당 또는 데이터 분류 등과 같이 가상시스템과 충돌이 발생하는 충돌코드에 대해 동일한 기능을 수행하되 다른 형식으로 작성된 코드를 생성할 수 있다.
이후, 대체코드매칭부(122)는 충돌코드와 생성된 대체코드를 매칭시킬 수 있고, 매칭된 정보를 후술할 대체프로그램제공부(125)에 제공할 수 있다.
그리고 대체응용함수매칭부(123)는 가상 시스템과 충돌하는 충돌응용함수를 대체하는 대체응용함수를 검색할 수 있다.
이를 위해 대체응용함수매칭부(123)는 OpenCL에서 제공하는 모든 응용함수를 수집할 수 있고, 시스템의 환경에 따라 이용가능한 응용함수를 분류할 수 있다.
그리고 대체응용함수매칭부(123)는 프로그램분석부(121)에서 분석된 응용함수 중 가상 시스템과 충동하는 충돌응용함수와 동일한 기능을 수행하는 대체응용함수를 검색할 수 있고, 검색된 대체응용함수와 충돌응용함수를 매칭할 수 있다.
예를 들어, 대체응용함수매칭부(123)는 프로그램에서 호출되는 응용함수 중 가상 시스템에서 지원하지 않는 기능을 이용하는 충돌응용함수와 동일한 기능을 수행하되 가상 시스템에서 지원하는 기능을 이용하는 대체응용함수를 검색할 수 있고, 검색된 대체응용함수와 충돌응용함수를 매칭할 수 있다.
이후, 대체응용함수매칭부(123)는 충돌응용함수와 대체응용함수간의 매칭정보를 후술할 대체프로그램제공부(125)에 제공할 수 있다.
그리고 동작검증부(124)는 OpenCL로 제작된 프로그램이 실행되는 시스템에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 할 수 있다.
즉, 동작검증부(124)는 프로그램분석부(121)에서 분석된 결과에 기초하여 시스템에서 실행될 프로그램이 대체프로그램을 제공해야 하는 프로그램인지 식별할 수 있다.
예를 들어, 프로그램이 실행되어 OpenCL의 커널을 실행하는 경우, 등록검증부(124)는 커널이 실행된 프로그램의 커널의 코드에 포함된 헤더 부분 또는 프로그램에 포함된 변수 명 등을 기초로 프로그램분석부(121)에 등록된 프로그램인지 식별할 수 있다.
그리고 프로그램분석부(121)에 등록된 프로그램이면, 등록검증부(124)는 프로그램을 실행 중 대체프로그램이 제공될 부분이면 후술할 대체프로그램제공부(125)를 통해 대체프로그램이 제공되도록 할 수 있다.
예를 들어, 등록검증부(124)는 커널이 실행되는 동안 충돌코드를 발견하면, 충돌코드에 매칭된 대체코드가 제공되도록 충돌코드에 대한 정보를 대체프로그램제공부(125)로 제공할 수 있고, 대체코드가 대신 실행되도록 할 수 있다.
또는 예를 들어, 등록검증부(124)는 프로그램이 충돌응용함수를 호출하면, 호출된 충돌응용함수와 충돌응용함수에 대한 입력변수값을 대체프로그램제공부(125)로 제공할 수 있고, 충돌응용함수에 매칭된 대체응용함수가 대신 호출되도록 할 수 있다.
이때 실시예에 따라, 등록검증부(124)는 시스템에서 실행되는 프로그램의 실행과정을 모니터링할 수 있고, 프로그램의 실행에 충돌이 발생하지 않거나 또는 기 설정된 정도의 성능저하만이 발생되면 별도의 대체프로그램을 제공하지 않을 수 있다.
예를 들어, 등록검증부(124)는 시스템에서 실행되는 프로그램을 모니터링하여 시스템의 성능이 저하되거나 시스템의 운영체제에 의해 강제 종료되지 않는 한 대체프로그램을 제공하지 않을 수 있다.
그리고 대체프로그램제공부(125)는 식별된 기능과 동일한 기능을 수행하되 시스템에 대응되는 대체프로그램을 제공할 수 있다.
즉, 대체프로그램제공부(125)는 프로그램분석부(121)에서 분석하여 등록된 프로그램에 대한 대체코드와 대체응용함수를 제공할 수 있다.
예를 들어, 대체프로그램제공부(125)는 대체코드매칭부(122)로부터 충돌코드에 대한 정보와 충돌코드에 매칭된 대체코드에 대한 정보를 획득할 수 있거나 또는 대체응용함수매칭부(123)로부터 충돌응용함수에 대한 정보와 충돌응용함수에 매칭된 대체응용함수에 대한 정보를 획득할 수 있다.
그리고 대체프로그램제공부(125)는 등록검증부(124)로부터 충돌코드 또는 충돌응용함수에 대한 정보를 획득하면, 대체코드를 제공하거나 또는 대체응용함수를 호출할 수 있다.
예를 들어, 대체프로그램제공부(125)는 등록검증부(124)로부터 충돌코드에 대한 정보를 획득하면, 충돌코드에 매칭된 대체코드를 등록검증부(124)에 제공하여 시스템에서 대체코드가 실행되도록 할 수 있다.
또는 예를 들어, 대체프로그램제공부(125)는 등록검증부(124)로부터 충돌응용함수에 대한 정보를 획득하면, 충돌응용함수에 매칭된 대체응용함수가 시스템에서 호출되도록 할 수 있다.
한편, 통신부(130)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(130)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.
통신부(130)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), UWB(Ultra Wide Band) 또는 NFC(Near Field Communication) 등일 수 있다. 또한, 통신부(130)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.
메모리(140)에는 파일, 어플리케이션 및 프로그램 등과 같은 다양한 종류의 데이터가 설치 및 저장될 수 있다. 제어부(120)는 메모리(140)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(140)에 저장할 수도 있다. 또한, 제어부(120)는 메모리(140)에 설치된 프로그램을 실행할 수도 있다.
이러한 메모리(140)에는 대체프로그램이 저장될 수 있다. 예를 들어, 메모리(140)에는 대체코드매칭부(122)가 생성하는 대체코드를 저장되거나 또는 대체응용함수부(123)가 수집한 OpenCL의 응용함수를 저장될 수 있다.
도 2 은 일 실시예에 따른 가상실행방법을 설명하기 위한 순서도이다.
도 2 에 도시된 실시예에 따른 가상실행방법은 도 1 에 도시된 가상실행장치(10)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 에 도시된 가상실행장치(10)에 관하여 이상에서 기술한 내용은 도 2에 도시된 실시예에 따른 가상실행방법에도 적용될 수 있다.
우선, 가상실행장치(10)는 호스트와 계산디바이스로 구성되어 프로그램이 실행되는 시스템에 대응되는 가상 시스템과 충돌되는 프로그램의 각 구성을 식별할 수 있다(S2001).
예를 들어, 가상실행장치(10)는 시스템의 운영체제와 동일한 운영체제로 프로그램을 실행시키는 가상의 실행환경을 제공하는 가상 시스템을 통해 프로그램을 실행하여 가상 시스템과 충돌되는 프로그램의 각 구성을 식별할 수 있다.
그리고 가상실행장치(10)는 프로그램을 가상 시스템에서 실행하는 과정에서 가상 시스템과 충돌하면 프로그램을 대체프로그램 제공 대상으로 등록할 수 있다.
예를 들어, 가상실행장치(10)는 프로그램에 따라 특정 응용함수 호출에 실패하거나 또는 프로그램에 포함된 커널의 코드 중 일부 코드 실행에 의해 가상 시스템에서 프로그램의 처리 속도가 평균 처리 속도보다 50%이하로 성능이 저하되는 경우 프로그램을 대체프로그램 제공 대상으로 등록할 수 있다.
그리고 가상실행장치(10)는 프로그램의 기능 중 가상 시스템과 충돌이 발생되는 기능에 대체프로그램을 매칭할 수 있다.
하나의 실시예에 따라, 가상실행장치(10)는 커널을 구성하는 코드 중 상기 가상 시스템과 충돌하는 충돌코드를 대체하는 대체코드를 생성하고, 생성된 대체코드와 상기 코드를 매칭할 수 있다.
예를 들어, 가상실행장치(10)는 프로그램의 실행 중 커널을 구성하는 특정 코드 라인에서 가상 시스템의 처리 속도가 저하되는 충돌코드를 식별하고, 식별된 충돌커드와 동일한 기능을 수행하는 대체코드를 생성하여 충돌코드와 매칭할 수 있다.
이를 위해, 가상실행장치(10)는 커널을 구성하는 코드에 대해 시스템의 운영체제별로 적합한 코드포맷을 저장할 수 있고 저장된 코드포맷을 이용하여 대체코드를 생성할 수 있다.
그리고 가상실행장치(10)는 가상 시스템과 충돌하는 충돌응용함수를 대체하는 대체응용함수를 검색하고, 검색된 대체응용함수와 상기 충돌응용함수를 매칭할 수 있다.
이를 위해, 가상실행장치(10)는 OpenCL에서 제공하는 모든 응용함수를 수집하여 저장할 수 있다.
예를 들어, 가상실행장치(10)는 프로그램을 실행하는 과정에서 호출되는 응용함수 중 가상 시스템과 충돌하여 호출에 실패하는 충돌응용함수를 식별할 수 있고, 식별된 응용함수와 동일한 결과값을 출력하는 대체응용함수를 기 저장된 응용함수 중 검색하여 충돌응용함수와 매칭할 수 있다.
이후, 가상실행장치(10)는 OpenCL로 제작된 프로그램이 실행되는 시스템에서 프로그램의 기능 중 시스템과 충돌되는 기능의 유무를 검증할 수 있다(S2002).
가상실행장치(10)는 시스템에 실행이 요청된 프로그램이 S2001단계에서 대체프로그램 제공대상으로 등록된 프로그램인지 식별할 수 있다.
예를 들어, 가상실행장치(10)는 프로그램에 포함된 코드 내용에 기초하여 대체프로그램 제공대상 프로그램인지 식별할 수 있다.
그리고 프로그램이 대체프로그램 제공대상으로 식별되면, 가상실행장치(10)는 시스템에서 실행되는 프로그램의 프로그램의 처리 성능이 저하되거나 실패하는지 여부를 모니터링하여 대체프로그램의 제공을 결정할 수 있다.
예를 들어, 가상실행장치(10)는 시스템에서 실행되는 프로그램의 커널에 포함된 충돌코드가 시스템에서 실행되면서 기 설정된 처리성능을 저하시키는지 모니터링하여 시스템의 성능이 평균 처리성능 이하로 저하되면, 대체프로그램을 제공하는 것으로 결정할 수 있다.
또는 예를 들어, 가상실행장치(10)는 시스템에서 실행되는 프로그램에 의해 충돌응용함수가 호출되었으나 충돌응용함수가 호출되어도 시스템의 성능이 유지되면, 대체프로그램의 제공하지 않을 수 있다.
그리고 대체프로그램의 제공이 결정되면, 가상실행장치(10)는 식별된 기능과 동일한 기능을 수행하되 시스템에 대응되는 대체프로그램을 제공할 수 있다(S2003).
하나의 실시예에 따라, 가상실행장치(10)는 시스템에서 실행되는 커널의 코드 중 충돌코드 실행시 충돌코드에 매칭된 대체코드를 제공할 수 있다.
예를 들어, S2002단계에서 OpenCL의 커널의 코드 중 충돌코드에 대응되는 대체코드제공이 요청되면, 가상실행장치(10)는 S2001단계에서 충돌코드와 매칭된 대체코드를 시스템으로 제공하여 프로그램에 포함된 충돌코드 대신 대체코드가 시스템에서 실행되도록 할 수 있다.
다른 실시예에 따라, 가상실행장치(10)는 시스템에서 충돌응용함수가 호출되면, 충돌응용함수에 매칭된 대체응용함수를 제공할 수 있다.
예를 들어, S2002 단계에서 시스템에서 실행되는 프로그램이 충돌응용함수를 호출을 하면, 가상실행장치(10)는 S2001단계에서 충돌응용함수와 매칭된 대체응용함수를 호출하여 시스템으로 제공할 수 있다.
이와 같이 시스템에서 실행될 프로그램을 미리 분석하여 시스템과 충돌가능성이 있는 코드 또는 응용함수를 시스템에 적합한 코드와 응용함수로 대체하여 제공함으로써 안정적인 프로그램의 실행이 가능하도록 할 수 있다.
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 2 를 통해 설명된 실시예에 따른 가상실행방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다.예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 2 를 통해 설명된 실시예에 따른 가상실행방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 2 를 통해 설명된 실시예에 따른 가상실행방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
10: 가상실행장치
110: 입출력부
120: 제어부
121: 프로그램분석부, 122: 대체코드매칭부, 123: 대체응용함수매칭부
124: 동작검증부, 125: 대체프로그램제공부
130: 통신부
140: 메모리

Claims (14)

  1. 가상 실행환경을 제공하는 장치에 있어서,
    OpenCL로 제작된 프로그램이 실행되는 시스템에 대응되는 가상의 실행환경에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 동작검증부;
    상기 시스템과 충돌되는 기능과 동일한 기능을 수행하되 상기 시스템에 대응되는 대체프로그램을 제공하는 대체프로그램제공부; 및
    상기 대체프로그램을 저장하는 메모리를 포함하는 가상실행장치.
  2. 제 1 항에 있어서,
    상기 프로그램은,
    상기 시스템의 계산디바이스에서 실행되는 커널과 호스트 및 계산디바이스 간 데이터 이동을 수행하는 응용함수로 구성되고,
    상기 가상실행장치는,
    호스트와 계산디바이스로 구성되어 상기 프로그램이 실행되는 시스템에 대응되는 가상의 실행환경을 제공하는 가상 시스템과 충돌되는 상기 프로그램의 각 구성을 식별하는 프로그램분석부를 더 포함하는, 가상실행장치.
  3. 제 2 항에 있어서,
    상기 가상실행장치는,
    상기 커널을 구성하는 코드 중 상기 가상 시스템과 충돌하는 충돌코드를 대체하는 대체코드를 생성하고, 생성된 대체코드와 상기 코드를 매칭하는 대체코드매칭부를 더 포함하는, 가상실행장치.
  4. 제 2 항에 있어서,
    상기 가상실행장치는,
    상기 가상 시스템과 충돌하는 충돌응용함수를 대체하는 대체응용함수를 검색하고, 검색된 대체응용함수와 상기 충돌응용함수를 매칭하는 대체응용함수매칭부를 더 포함하는, 가상실행장치.
  5. 제 1 항에 있어서,
    상기 대체프로그램제공부는,
    상기 시스템에서 실행되는 커널의 코드 중 충돌코드 실행시 상기 충돌코드에 매칭된 대체코드를 제공하는, 가상실행장치.
  6. 제 1 항에 있어서,
    상기 대체프로그램제공부는,
    상기 시스템에서 충돌응용함수가 호출되면, 상기 충돌응용함수에 매칭된 대체응용함수를 제공하는, 가상실행장치.
  7. 가상실행장치가 가상 실행환경을 제공하는 방법에 있어서,
    OpenCL로 제작된 프로그램이 시스템에 대응되는 가상 실행환경에서 상기 프로그램의 기능 중 상기 시스템과 충돌되는 기능의 유무를 검증하는 단계; 및
    상기 시스템과 충돌되는 기능과 동일한 기능을 수행하되 상기 시스템에 대응되는 대체프로그램을 제공하는 단계를 포함하는, 가상실행방법.
  8. 제 7 항에 있어서,
    상기 가상실행방법은,
    호스트와 계산디바이스로 구성되어 상기 프로그램이 실행되는 시스템에 대응되는 가상의 실행환경을 제공하는 가상 시스템을 제공하는 단계; 및
    제공된 가상 시스템과 충돌되는 상기 프로그램의 각 구성을 식별하는 단계를 더 포함하는, 가상실행방법.
  9. 제 8 항에 있어서,
    상기 기능의 유무를 검증하는 단계는,
    커널을 구성하는 코드 중 상기 가상 시스템과 충돌하는 충돌코드를 대체하는 대체코드를 생성하는 단계; 및
    생성된 대체코드와 상기 충돌코드를 매칭하는 단계를 포함하는, 가상실행방법.
  10. 제 8 항에 있어서,
    상기 기능의 유무를 검증하는 단계는,
    상기 가상 시스템과 충돌하는 충돌응용함수를 대체하는 대체응용함수를 검색하는 단계; 및
    검색된 대체응용함수와 상기 충돌응용함수를 매칭하는 단계를 포함하는, 가상실행방법.
  11. 제 7 항에 있어서,
    상기 대체프로그램을 제공하는 단계는,
    상기 시스템에서 실행되는 커널의 코드 중 충돌코드 실행시 상기 충돌코드에 매칭된 대체코드를 제공하는 단계를 포함하는, 가상실행방법.
  12. 제 7 항에 있어서,
    상기 대체프로그램을 제공하는 단계는,
    상기 시스템에서 충돌응용함수가 호출되면, 상기 충돌응용함수에 매칭된 대체응용함수를 제공하는 단계를 포함하는, 가상실행방법.
  13. 제 7 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  14. 가상실행장치에 의해 수행되며, 제 7 항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.
KR1020180117418A 2018-10-02 2018-10-02 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치 KR102119509B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180117418A KR102119509B1 (ko) 2018-10-02 2018-10-02 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180117418A KR102119509B1 (ko) 2018-10-02 2018-10-02 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200037968A KR20200037968A (ko) 2020-04-10
KR102119509B1 true KR102119509B1 (ko) 2020-06-05

Family

ID=70292076

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180117418A KR102119509B1 (ko) 2018-10-02 2018-10-02 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102119509B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210121402A (ko) 2020-03-30 2021-10-08 엘지전자 주식회사 의류 처리장치 및 이의 운전 제어방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120233612A1 (en) 2011-02-08 2012-09-13 Beckett Stephen M Code injection and code interception in an operating system with multiple subsystem environments
US20130247070A1 (en) 2008-08-07 2013-09-19 Code Systems Corporation Method and system for virtualization of software applications
KR101310070B1 (ko) * 2013-06-26 2013-09-24 (주)지란지교소프트 프로그램간의 충돌을 예방하는 방법 및 그 방법이 기록된 기록매체

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070041800A (ko) * 2005-10-17 2007-04-20 이종일 응용프로그램의 실행 코드 영역 수정을 통한 응용프로그램제어 방법
KR20130010911A (ko) * 2008-12-05 2013-01-29 소우셜 커뮤니케이션즈 컴퍼니 실시간 커널

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130247070A1 (en) 2008-08-07 2013-09-19 Code Systems Corporation Method and system for virtualization of software applications
US20120233612A1 (en) 2011-02-08 2012-09-13 Beckett Stephen M Code injection and code interception in an operating system with multiple subsystem environments
KR101310070B1 (ko) * 2013-06-26 2013-09-24 (주)지란지교소프트 프로그램간의 충돌을 예방하는 방법 및 그 방법이 기록된 기록매체

Also Published As

Publication number Publication date
KR20200037968A (ko) 2020-04-10

Similar Documents

Publication Publication Date Title
US10083022B2 (en) Applying update to snapshots of virtual machine
US11231916B2 (en) Method and apparatus for data compilation using intermediate class files, electronic device and non-transitory computer readable storage medium
CN109471697B (zh) 一种监控虚拟机中系统调用的方法、装置及存储介质
TW201301137A (zh) 虛擬機器影像分析
US8316183B2 (en) Refactoring virtual data storage hierarchies
JP2014513338A5 (ja) 仮想ディスクの最適圧縮のための方法、コンピュータ可読記憶媒体及びシステム
US9524122B2 (en) Metadata storage in unused portions of a virtual disk file
US10824460B2 (en) Information processing apparatus, information processing method for reducing network traffic, and storage medium
US9513889B2 (en) System and method of automating installation of applications
US11030074B2 (en) Code update based on detection of change in runtime code during debugging
US11734430B2 (en) Configuration of a memory controller for copy-on-write with a resource controller
JP6266008B2 (ja) 仮想マシン・イメージをコンピュータ・システムに適用する方法、情報処理システム、コンピュータ・プログラム
US20180157605A1 (en) Configuration of a memory controller for copy-on-write
EP3438814B1 (en) Storing memory profile data of an application in non-volatile memory
US20150082014A1 (en) Virtual Storage Devices Formed by Selected Partitions of a Physical Storage Device
KR102119509B1 (ko) 안정적인 실행을 보장하는 OpenCL 가상화 실행환경 제공 방법 및 장치
US20120179885A1 (en) Write control system
US9009430B2 (en) Restoration of data from a backup storage volume
US20110219365A1 (en) High and low value application state
KR102116395B1 (ko) 애플리케이션 테스트 방법 및 장치
KR20200040456A (ko) 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치
US11122130B1 (en) Method to create and perform appropriate workflow for datacenter migration
US20220129324A1 (en) Remotely Controllable Monitoring Agent with a Dynamic Set of Subcomponents
US9058232B2 (en) Systems and methods to create a clean install of an application
US11593161B2 (en) Method to create and perform appropriate workflow for datacenter migration

Legal Events

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