KR102269271B1 - 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 - Google Patents
오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 Download PDFInfo
- Publication number
- KR102269271B1 KR102269271B1 KR1020140121379A KR20140121379A KR102269271B1 KR 102269271 B1 KR102269271 B1 KR 102269271B1 KR 1020140121379 A KR1020140121379 A KR 1020140121379A KR 20140121379 A KR20140121379 A KR 20140121379A KR 102269271 B1 KR102269271 B1 KR 102269271B1
- Authority
- KR
- South Korea
- Prior art keywords
- kernel
- terminal
- server
- cost information
- executing
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/60—Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
본 발명은 개방형 컴퓨팅 언어(Open Computing Language, OpenCL)를 이용한 모바일 응용 프로그램의 커널을 수행함에 있어 사용자 선택에 의해 로컬 기기나 외부 기기 또는 자동화된 방식으로 커널을 분석하여 커널을 로컬 기기나 외부의 기기로 이전하여 성능 향상을 도모하는 방법에 관한 것이다. 모바일 분야에 가장 적합하나 모바일 뿐 아니라 성능적 제한을 극복할 필요성이 있는 어떠한 기기에든 적용이 가능하다.
Description
본 발명은 개방형 범용 병렬 컴퓨팅 프레임워크에 관한 것으로, 보다 구체적으로는 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치에 관한 것이다.
사용자가 직접 접하는 로컬 기기는 때론 연산 능력 또는 제한된 전력 등 그 자원의 한계로 인해 수행할 수 있는 작업에 제약을 받기도 한다. 특히 모바일 기기의 경우 휴대성을 강조하는 모바일 기기의 특징상 하드웨어 성능의 한계가 더 클 수 있다. 따라서, 수행할 수 있는 작업에 대한 제약을 해결하는 방법 중 하나로 처리할 일(workload)을 외부의 고성능 기기로 이전하는 방법이 있을 수 있다. 일례로 최근 활성화되고 있는 클라우드 서비스의 경우는 사용자가 가진 단말을 통해서는 주로 입력 또는 출력 작업만 이루어지고, 정보분석, 처리, 저장, 관리 및 유통 등의 작업은 클라우드라고 불리는 제3 의 공간에서 이루어 지는 컴퓨팅 시스템을 제공한다. 따라서, 이러한 서비스를 이용하면, 막대한 연산 자원을 비교적 저렴한 가격에 제공할 수 있으므로. 상술한 모바일 기기의 한계를 극복하는데 적합한 대안이 될 수 있다. 하지만 클라우드 서비스의 경우 이를 활용할 수 있는 통합된 프로그래밍 모델 및 개발 환경의 부재로 일반적인 프로그래머가 그러한 작업 이전 기법을 활용하기에는 많은 어려움이 따를 수 있다.
구체적으로, 로컬 기기에서 수행되는 작업 중 일부를 외부의 서버로 이전하여 수행시키기 위해서는 높은 수준의 기술이 필요하다. 서로 다른 기기 간의 명령어 집합 구조(Instruction Set Architecture, ISA)의 비호환성으로 인해 각각의 기기에 적합한 프로그램을 새로이 작성해야 하며 외부 기기로 작업을 전달하고 수행시키며 결과를 취합하여 전달 받을 담당 프로그램 역시 개발하여야 한다. 게다가 어떤 작업을 외부 기기로 보내는 것이 적합한지에 대한 판단도 필요하며 외부 기기나 로컬 기기의 종류가 바뀔 경우 이 적합성에 대한 분석을 새로이 할 필요가 있어 일반적인 프로그래머가 수행하기에는 난이도가 매우 높은 작업이다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로 오픈 컴퓨팅 언어(Open Computing Language, OpenCL)를 이용한 프로그래밍 모델을 활용하여 사용자 선호도에 따라 내부나 외부 기기로의 작업 이전을 하는 기법을 제공한다. 본 발명은 오픈 컴퓨팅 언어(OpenCL)로 작성된 응용 프로그램에 대해 사용자의 선택에 따라 모바일이나 서버 등의 외부기기 또는 이들 중 효과적인 장치를 자동으로 선택하여 실행되도록 지원하며 이와 동시에 비용 모델에 입각한 성능 분석을 통해 원격 수행에 적합한 부분만을 선택적으로 이전함으로써 최적의 성능 및 에너지 효율을 도모할 수 있다.
상기와 같은 목적을 달성하기 위한 본 발명의 단말의 응용프로그램 커널 실행 방법은, 서버로부터 상기 커널을 수행할 수 있는 자원 리스트를 수신하는 단계, 상기 자원 리스트에 포함된 적어도 하나 이상의 커널 수행 자원의 상기 커널 수행 비용을 예측하는 단계 및 상기 예측 결과에 따른 상기 커널을 수행할 커널 수행 자원에 상기 커널을 전송하는 단계를 포함하는 것을 특징으로 한다.
또한 본 발명의 일 실시 예에 따른 응용프로그램 커널을 실행하는 단말은, 데이터 통신을 수행하는 통신부 및 서버로부터 상기 커널을 수행할 수 있는 자원 리스트를 수신하고, 상기 자원 리스트에 포함된 적어도 하나 이상의 커널 수행 자원의 상기 커널 수행 비용을 예측하고, 상기 예측 결과에 따른 상기 커널을 수행할 커널 수행 자원에 상기 커널을 전송하는 제어부를 포함하는 것을 특징으로 한다.
본 발명에 따르면, 사용자의 선호도에 따라 오픈 컴퓨팅 언어(OpenCL) 프로그래밍 모델을 실행할 장치를 선택할 수 있다.
또한 본 발명에 따르면, 비용 모델을 이용하여 최적의 오프로딩 대상을 결정할 수 있다.할
또한 본 발명에 의하면, 자동으로 커널을 분석하여 오프로딩 여부를 결정하므로 서버나 로컬 기기의 종류와 환경이 변해도 바로 적용할 수 있게 되어 다양한 환경에서도 성능 제약의 한계를 극복할 수 있다.
또한 본 발명에 따르면, 로컬 기기가 배터리에 의존하는 모바일 기기와 비슷한 형태일 경우 이러한 높은 에너지 효율이 수반될 수 있다.
도 1은 본 발명의 실시 예에 따른 오픈 컴퓨팅 언어(OpenCL) 기반의 애플리케이션 실행 시스템의 전체 구성을 나타낸 도면,
도 2는 본 발명의 일 실시 예에 따른 커널 오프로딩 방법의 동작을 나타내는 순서도,
도 3은 본 발명의 실시 예에 따른 자동 오프로딩 모드에서 오프로딩 여부를 결정하기 위해 비용을 추정하는 것을 설명하기 위한 도면,
도 4는 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어 멀티 커널의 경우에 대해 설명하기 위한 도면,
도 5는 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어, 종속되는 커널이 로컬기기에 존재하는 경우를 나타내는 도면,
도 6은 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어, 종속되는 커널이 서버 노드에 존재하는 경우를 나타내는 도면,
도 7은 본 발명의 실시 예에 따른 종속관계에 있는 복수의 커널이 존재하는 경우의 오프로딩 방법을 설명하기 위한 도면,
도 8은 본 발명의 실시 예에 따른 단말(로컬 기기)의 클라이언트 매니저가 오프로딩할 커널을 결정하는 동작을 나타낸 순서도,
도 9는 본 발명의 실시 예에 따른 종속성을 갖는 복수의 커널이 존재하는 경우 단말(로컬 기기)의 클라이언트 매니저가 오프로딩할 커널을 결정하는 동작을 나타낸 순서도,
도 10은 본 발명의 오프로딩 여부를 결정하는 방법이 적용될 수 있는 단말의 구조를 간략하게 나타낸 도면이다.
도 2는 본 발명의 일 실시 예에 따른 커널 오프로딩 방법의 동작을 나타내는 순서도,
도 3은 본 발명의 실시 예에 따른 자동 오프로딩 모드에서 오프로딩 여부를 결정하기 위해 비용을 추정하는 것을 설명하기 위한 도면,
도 4는 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어 멀티 커널의 경우에 대해 설명하기 위한 도면,
도 5는 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어, 종속되는 커널이 로컬기기에 존재하는 경우를 나타내는 도면,
도 6은 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어, 종속되는 커널이 서버 노드에 존재하는 경우를 나타내는 도면,
도 7은 본 발명의 실시 예에 따른 종속관계에 있는 복수의 커널이 존재하는 경우의 오프로딩 방법을 설명하기 위한 도면,
도 8은 본 발명의 실시 예에 따른 단말(로컬 기기)의 클라이언트 매니저가 오프로딩할 커널을 결정하는 동작을 나타낸 순서도,
도 9는 본 발명의 실시 예에 따른 종속성을 갖는 복수의 커널이 존재하는 경우 단말(로컬 기기)의 클라이언트 매니저가 오프로딩할 커널을 결정하는 동작을 나타낸 순서도,
도 10은 본 발명의 오프로딩 여부를 결정하는 방법이 적용될 수 있는 단말의 구조를 간략하게 나타낸 도면이다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 단말은, 중앙처리장치(CPU)와 저장부가 포함된 다음의 장치일 수 있다. 예를 들면, 단말은 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 화상전화기, 전자북 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device)(예: 전자 안경과 같은 head-mounted-device(HMD), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 전자 문신, 또는 스마트 와치(smartwatch))중 적어도 하나를 포함할 수 있다.
또한 본 명세서의 단말은 중앙처리장치(CPU)와 저장부가 포함된 스마트 가전 제품(smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들자면, 전자 장치는 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), TV 박스(예를 들면, 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(game consoles), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
또한 본 명세서의 단말은 각종 의료기기(예: MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 초음파기 등), 네비게이션(navigation) 장치, GPS 수신기(global positioning system receiver), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치 및 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛, 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic tellers machine) 또는 상점의 POS(point of sales) 중 적어도 하나를 포함할 수 있다.
이때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 명세서에서 커널(Kernel)은 시스템의 하드웨어를 관리하고 제어하는 기능을 수행하는 운영체계의 핵심부분일 수 있다. 또한 커널을 수행한다는 것은 애플리케이션의 실행에 필요한 함수를 수행하기 위해 하드웨어 자원을 제어하는 것일 수 있다. 커널은 용어 “커널 프로그램”과 동일한 의미로 사용될 수 있다. 커널은 프로그래밍 모듈들(예를 들면 미들웨어, API 또는 애플리케이션 등)에 구현된 동작 또는 기능을 실행하는 데 사용되는 시스템 리소스들을 제어 또는 관리할 수 있다.
본 명세서에서 오픈 컴퓨팅 언어(OpenCL)는 응용 프로그램이 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스인 응용 프로그래밍 인터페이스(Application Programming Interface, API)의 한 종류일 수 있다. 구체적으로 오픈 컴퓨팅 언어(OpenCL)는 커널 코드를 작성하기 위한 C99 기반의 언어인 OpenCL C와 플랫폼을 정의하고 제어하기 위한 API를 포함할 수 있다. OpenCL은 작업 기반(task-based) 및 데이터 기반(data-based)의 병렬 컴퓨팅을 제공할 수 있다.도 1은 본 발명의 실시 예에 따른 오픈 컴퓨팅 언어(OpenCL) 기반의 애플리케이션 실행 시스템의 전체 구성을 나타낸 도면이다.
도 1에 따르면, 오픈 컴퓨팅 언어(OpenCL) 애플리케이션(application)은 커널(kernel) 프로그램과 호스트(Host) 프로그램으로 구성될 수 있다. 커널 프로그램은 CPU(Central Processing Unit)나 GPU(Graghic Processing Unit)같은 연산 장치(Compute device)에서 실행되는 함수이고 호스트 프로그램은 커널 프로그램이 실행되도록 메모리나 커널 프로그램 등을 관리하는 호스트 프로세서에서 동작하는 프로그램이다.
본 발명은 상술한 오픈 컴퓨팅 언어(OpenCL)의 기본 구성에 따라 도 1에서와 같이 오픈 컴퓨팅 언어(OpenCL) 호스트 부분과 오픈 컴퓨팅 언어(OpenCL) 연산 장치로 구분되고, 기본적인 동작을 위해 호스트에는 클라이언트 매니저(Client Manager)가 연산 장치에는 리소스 매니저(Resource Manager)와 서버 매니저(Server Manager)가 추가로 구성된 시스템에 적용될 수 있다.
리소스 매니저(Resource Manager)는 애플리케이션(application)이 실행되는 경우 최우선적으로 실행되는 프로세스로 서버에 존재하며 모든 클라이언트와 서버는 리소스 매니저의 주소를 미리 알고 있어 언제든 연결이 가능할 수 있다. 서버내의 연산 장치들은 서버 매니저를 통해 리소스 매니저에게 각 서버의 연산 자원의 상태를 알릴 수 있다.
클라이언트(예: 로컬 기기)는 오픈 컴퓨팅 언어(OpenCL) 애플리케이션(application)을 클라이언트 매니저와 함께 실행하며 필요에 따라 리소스 매니저를 통해 원하는 서버 자원을 할당 받을 수 있다. 커널은 클라이언트 매니저에 의해 자동으로 분석되며 필요할 경우 리소스 매니저로부터 할당 받은 서버 노드로 커널을 오프로딩시키고 서버 노드는 서버내의 오픈 컴퓨팅 언어 런타임(OpenCL runtime)을 통해 커널을 실행시킬 수 있다. 한편, 서버노드 및 로컬 기기에서 수행된 커널 수행 결과를 취합하는 과정(Read Results)은 클라이언트 매니저에 의해 이루어질 수 있다.
도 2는 본 발명의 일 실시 예에 따른 커널 오프로딩 방법의 동작을 나타내는 순서도이다.
도 2에 따르면 단말은 애플리케이션이 실행되면, 사용자의 선택 또는 선호도에 따라 로컬 기기에서 수행할지(202: 로컬수행모드), 서버에서 수행할지(203: 서버수행모드) 또는 자동으로 기 설정된 기준에 따라 오프로딩 시킬지(204: 자동 오프로딩 모드)를 결정할 수 있다(201). 로컬 수행 모드(202)에서는 단말 즉 로컬 기기내에서 모든 커널을 수행하고, 서버 수행 모드(203)에서는 모든 커널을 서버상으로 오프로딩하여 수행하며, 자동 오프로딩 모드(204)에서는 프레임워크에서 자동으로 단말과 서버의 계산 능력 및 네트워크 성능 등을 고려하여 오프로딩 할 커널들을 선정하고 이를 수행하게 된다.
이하에서는 도 2에 따라 각 모드별 동작을 보다 상세하게 설명한다.
로컬 수행 모드(202)는 커널을 오프로딩 하지 않고 모든 커널을 단말 즉 로컬 기기에서 수행하는 방식이다. 로컬 수행 모드(202)는 단말의 하드웨어 자원의 한계가 없고 수행할 수 있는 작업에 제약이 없는 경우에 선택될 수 있다. 이 경우 해당 오픈 컴퓨팅 언어(OpenCL) 애플리케이션(application) 프로그램이 종료 될 때까지(206), 커널을 단말(로컬 기기)에서 수행하게 된다(205). 서버 수행 모드(203)는 모든 커널을 서버상으로 오프로딩하여 수행한다. 이를 위해서는 오프로딩 할 대상의 정보가 필요한데 리소스 매니저에서 사용 가능한 서버 정보를 자원 관리 테이블에 갱신해두었다가 클라이언트 매니저로부터 커널 수행을 요청 받으면 적합한 서버 정보를 클라이언트 매니저에게 알려 준다. 여기서 서버 정보는 서버의 계산 또는 연산 수행능력, 서버와의 통신 상태 또는 서버에 데이터를 업로드 또는 다운로드하는데 소요되는 시간 및 에너지 중 적어도 어느 하나를 포함할 수 있다. 클라이언트 매니저는 이 정보를 바탕으로 해당 서버 매니저에 직접 데이터(data) 및 커널을 전송할 수 있다(207). 수신된 데이터 및 커널은 해당 서버상의 오픈 컴퓨팅 언어 런타임 시스템(OpenCL Runtime System)에서 수행될 수 있다(208). 수행 결과는 다시 클라이언트 매니저로 전달되어(209) 결과가 취합(Read Results)되고 프로그램 수행을 마칠 때까지 반복될 수 있다(210).
자동 오프로딩 모드(204)에서는 프레임워크에서 자동으로 단말과 외부 기기의 계산 능력 및 네트워크 성능 등을 고려하여 오프로딩 할 커널들을 선정하고 단말(로컬 기기)과 서버에서 각각 커널들이 수행될 수 있다.
이 때, 본 발명의 다양한 실시 예에서 어떤 커널을 서버에서 수행하고 어떤 커널을 단말에서 수행할지를 결정하는 방법으로 비용 추정을 통한 최적 수행 방식을 선택하는 방식이 사용될 수 있다(211).
구체적인 비용 추정 방법에 대해서는 도 3내지 도 7을 통해 보다 상세하게 후술한다.
211단계에서 로컬 기기와 서버에서 수행될 커널이 결정되면, 각각의 위치에서 필요한 데이터 및 커널을 송수신하고(212, 214) 단말과 서버에서 커널이 수행될 수 있다(213, 215). 서버에서 수행된 커널의 수행 결과는 단말이 수신할 수 있다(216). 상기 과정은 프로그램이 종료할 때까지 반복될 수 있다(217).
도 3은 본 발명의 실시 예에 따른 자동 오프로딩 모드에서 오프로딩 여부를 결정하기 위해 비용을 추정하는 것을 설명하기 위한 도면이다.도 3에 따르면, 수행될 커널의 오프로딩 여부는 다음의 [수학식 1] 및 [수학식 2]에 따라 정해진 비용 모델에 의하여 계산되고 이를 근거로 커널의 이전 여부(오프로딩 여부)가 결정된다. 구체적으로 도 3에 따르면, 커널 1(Kernel 1)을 최초 실행 하는 경우 로컬 기기에서 실행되는 시간을 측정할 수 있다(301). 이후 커널 1(Kernel 1)에 대한 비용을 분석 하는 경우 현재 시스템 즉 로컬 기기의 계산능력과 할당 받을 서버 노드의 계산능력, 커널이 사용하는 데이터의 크기와 통신 상태(bandwidth)에 따른 데이터(data) 전송 시간, 그리고 실행시키려는 커널이 로컬 기기에서 실제로 수행되는 시간과 및 이들을 수행할 때의 에너지 소모 등을 토대로 커널을 이전하는 경우의 이익에 대해 분석할 수 있다.
여기서 CostL은 로컬 기기에서의 계산된 수행 비용을 의미하고, CostS 는 서버에서 수행되는 경우의 계산된 비용을 나타낼 수 있다. 한편, TL , TS 는 로컬 기기 및 서버에서의 해당 커널의 처리 시간, EC , EI 는 로컬 기기에서 수행 될 때의 에너지 및 idle 일 때의 에너지, TD , TU 는 데이터 다운로드(data download) 및 업로드(upload) 시간 (통신 상태 반영), ED , EU 는 데이터(data) 전송시 다운로드(download) 및 업로드(upload)시의 에너지를 타낸다.또한 현재 커널의 수행시간은 프로파일 기반으로 수집되며, 최초 실행 시에 로컬 기기에서 동작시켜 측정하고 이 값과 각 연산 장치의 하드웨어(HW) 성능을 토대로 각 연산 장치에서의 커널 수행시간을 예측할 수 있다. 한편, 예측된 정보는 데이터베이스 파일에 저장하여 이후의 수행에 활용된다.
도 4는 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어 멀티 커널의 경우에 대해 설명하기 위한 도면이다.
단일 커널의 분석에는 도 3에 따른 자동 오프로딩 모드에서 해당 커널이 수행될 위치에 따른 비용 모델만으로도 충분하지만, 하나의 오픈 컴퓨팅 언어(OpenCL) 프로그램 내에는 복수의 커널이 존재할 수 있고, 또 이 커널들 사이에는 종속성이 있을 수 있다. 그리고 이러한 경우에는 종속성에 의해 실제 발생하는 통신량이 변화될 수 있다.
도 4에서 커널 1(Kernel 1)은 커널 2(Kernel 2)에 종속되고 커널 3(Kernel 3) 및 커널 4(Kernel 4)는 커널 5(Kernel 5)에 종속될 수 있다. 따라서 커널 1(Kernel 1)이 로컬 기기에서 수행되고 커널 2(Kernel 2)가 서버 노드에서 수행되는 경우에는 둘 사이의 데이터 송수신이 필수적으로 수반되어야 하므로 이에 따라 발생하는 전송 시간, 에너지 등이 발생할 수 있다. 따라서 복수의 커널이 존재하는 멀티 커널의 경우에는 비용분석에 이러한 종속성을 추가하여야 더욱 정확한 분석이 가능하다.
도 5는 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어, 종속되는 커널이 로컬기기에 존재하는 경우를 나타내는 도면이다.
커널의 종속성은 이전 커널과 현재 커널 사이의 데이터 종속성으로 표현되며, 하나의 커널이 여러 커널에 종속될 수 있다. 종속성이 있는 데이터는 종속되는 커널이 실행된 위치에 따라 통신량이 결정될 수 있다. 종속되는 커널이 동일한 위치에서 실행되는 경우에는 데이터(data) 전송을 위한 통신은 필요치 않으나, 서로 다른 위치에서 수행되면 데이터(data) 전송을 위한 통신이 발생할 수 있다.
도 5에 따르면 커널 1(Kernel 1)과 커널 2(Kernel 2)는 종속관계에 있고, 두 커널 모두 클라이언트에서 수행되므로 클라이언트와 서버간의 데이터의 송수신이 필수적으로 수반되지 않는다.
도 6은 본 발명의 실시 예에 따른 오프로딩 여부를 결정하는 방법에 있어, 종속되는 커널이 서버 노드에 존재하는 경우를 나타내는 도면이다.
도 6의 경우 커널 1(Kernel 1)과 커널 2(Kernel 2)가 종속관계에 있으나, 커널 1(Kernel 1)은 로컬 기기에서 수행이 되는 반면, 커널 2(Kernel 2)는 서버에서 수행되므로 로컬 기기에서 서버 노드로 데이터가 전달 되어야 한다. 따라서 이 경우에는 데이터 통신으로 인한 시간 및 에너지 자원의 비용을 감안하여 오프로딩을 결정할 필요가 있다.
도 7은 본 발명의 실시 예에 따른 종속관계에 있는 복수의 커널이 존재하는 경우의 오프로딩 방법을 설명하기 위한 도면이다.
하나의 커널이 실행되고 이에 종속성있는 커널이 복수개 존재하는 경우에는 현재의 커널에 대한 비용분석은 종속된 모든 커널과의 관계를 고려해야만 한다. 이는 앞서 설명한 바와 같이 전체 종속성 있는 커널들의 오프로딩으로 인한 비용을 반영하여 최적화된 오프로딩이 수행될 수 있도록 하기 위함이다. 이를 위해 클라이언트(로컬 기기)는 종속성으로 연결된 모든 커널을 하나의 종속 집합으로 만들어 비용분석에 활용할 수 있다. 이 종속 집합들은 한 번 생성이 되면 데이터베이스에 저장하여 향후 비용분석에 활용될 수 있다.
하나의 커널(Kernel 3)이 실행되면 데이터베이스에서 동일한 커널이 포함된 종속 집합을 찾는다. 존재하지 않는 경우 해당 커널은 도 2에서 설명한 비용 모델만을 활용하여 비용 분석이 이루어지지만, 종속 집합이 존재하는 경우 그 집합의 전체 비용 분석을 통해 해당 커널이 실행되어야 할 최적의 위치를 분석한다.
데이터 베이스 상에서 커널 1 내지 4의 종속 집합이 발견된 경우 각각의 커널의 비용분석을 통해 각 커널을 오프로딩 할 것인지에 대해서 결정할 수 있다. 종속성을 고려한 비용분석을 통해 작업 이전의 여부가 판단이 되면 클라이언트 매니저는 해당 커널을 그 판단에 따라 서버로 이전시키거나 로컬 기기에서 수행시킨다. 만약 현재의 커널이 종속된 커널이 수행된 위치가 현재 커널이 수행될 위치와 다르다면 종속되는 데이터도 옮겨 주어야 하며 이는 클라언트 매니저에서 자동으로 수행된다. 커널의 수행 결과를 유저가 확인하고자 하는 경우에도 클라이언트 매니저가 판단하여 서버에 있다면 로컬로 옮겨 확인하게 도와준다. 모든 커널(kernel)에 대한 연산이 완료되면 결과를 취합하는 과정(Read Results)은 클라이언트 매니저에 의해 이루어진다.
도 8은 본 발명의 실시 예에 따른 단말(로컬 기기)의 클라이언트 매니저가 오프로딩할 커널을 결정하는 동작을 나타낸 순서도이다.
도 8에 따르면, 클라이언트 매니저는 커널이 최초 수행되는 경우 해당 커널의 수행시간을 측정할 수 있다(801). 이후 임의의 시점에서 해당 커널이 다시 수행되는 경우, 클라이언트 매니저는 측정된 시간과 각 연산 장치 즉 로컬 기기 또는 서버 노드의 성능을 기초로 해당 커널의 수행 비용을 예측할 수 있다(802). 여기서 각 연산 장치는 리소스 매니저에 클라이언트 매니저가 요청하여 수신한 가용 연산 자원 리스트에 포함된 연산 장치일 수 있다. 한편 리소스 매니저는 각 서버 노드의 서버 매니저로부터 가용 여부를 미리 전달받아 저장하고 있을 수 있다.
이후 클라이언트 매니저는 로컬 기기의 계산능력과 할당 받을 서버 노드의 계산능력, 커널이 사용하는 데이터의 크기와 통신 상태(bandwidth)에 따른 데이터(data) 전송 시간, 그리고 실행시키려는 커널이 로컬 기기에서 실제로 수행되는 시간과 및 이들을 수행할 때의 에너지 소모 등을 토대로 커널을 이전하는 경우의 이익에 대해 분석할 수 있다.
분석에 따라 예측된 비용을 기초로 클라이언트 매니저는 해당 커널을 수행할 자원(서버 노드)을 선정할 수 있다(803). 이후 도면에는 미도시 되었으나, 클라이언트 매니저는 각 서버 노드에서 수행된 결과를 취합할 수 있다.
도 9는 본 발명의 실시 예에 따른 종속성을 갖는 복수의 커널이 존재하는 경우 단말(로컬 기기)의 클라이언트 매니저가 오프로딩할 커널을 결정하는 동작을 나타낸 순서도이다.
도 9에 따르면, 단말은 실행할 커널과 해당 커널과 종속성을 갖는 커널을 모두 포함하는 종속 집합을 결정할 수 있다(901).
구체적으로, 커널의 종속성은 이전 커널과 현재 커널 사이의 데이터 종속성으로 표현되며, 하나의 커널이 여러 커널에 종속될 수 있다. 종속성이 있는 데이터는 종속되는 커널이 실행된 위치에 따라 통신량이 결정될 수 있다. 종속되는 커널이 동일한 위치에서 실행되는 경우에는 데이터(data) 전송을 위한 통신은 필요치 않으나, 서로 다른 위치에서 수행되면 데이터(data) 전송을 위한 통신이 발생할 수 있다.
클라이언트(로컬 기기)는 종속성으로 연결된 모든 커널을 하나의 종속 집합으로 만들어 저장하고 있을 수 있다. 저장된 종속 집합에 관한 정보는 비용분석에 활용할 수 있다. 이 종속 집합들은 한 번 생성이 되면 데이터베이스에 저장하여 향후 비용분석에 활용될 수 있다. 901단계에서 하나의 커널이 실행되면 데이터베이스에서 동일한 커널이 포함된 종속 집합을 결정할 수 있다. 만일 해당 커널에 대한 종속집합이 존재하지 않는 경우 해당 커널은 도 8에서 설명한 비용 모델만을 활용하여 비용 분석을 수행하여 실행될 수 있다.
만일 종속 집합이 존재하는 경우 그 집합의 전체 비용 분석을 수행한다(902). 이는 해당 종속 집합 내의 모든 커널에 대해서 도 8에서 설명한 비용 모델을 토대로 각 커널을 수행하는 데 요구되는 비용을 분석하는 것이다.
수행된 분석 비용 결과를 기초로 클라이언트 매니저는 각 커널을 수행할 자원 즉 각 커널을 오프로딩 할 자원을 결정할 수 있다(903).
도면에는 미도시 되었으나, 종속성을 고려한 비용분석을 통해 작업 이전의 여부가 판단이 되면 이후, 클라이언트 매니저는 해당 커널을 그 판단에 따라 서버로 이전시키거나 로컬 기기에서 수행시킨다. 만약 현재의 커널이 종속된 커널이 수행된 위치가 현재 커널이 수행될 위치와 다르다면 종속되는 데이터도 옮겨 주어야 하며 이는 클라언트 매니저에서 자동으로 수행된다. 커널의 수행 결과를 유저가 확인하고자 하는 경우에도 클라이언트 매니저가 판단하여 서버에 있다면 로컬로 옮겨 확인하게 도와준다. 모든 커널(kernel)에 대한 연산이 완료되면 결과를 취합하는 과정(Read Results)은 클라이언트 매니저에 의해 이루어진다.
도 10은 본 발명의 오프로딩 여부를 결정하는 방법이 적용될 수 있는 단말의 구조를 간략하게 나타낸 도면이다.
본 발명의 오프로딩 여부를 결정하는 방법이 적용되는 단말은 로컬 기기일 수 있다. 또한 오프로딩 결정에 따라 데이터 및 커널을 수신하고 이를 수행한 뒤 그 결과를 로컬 기기에 전송하는 서버 역시 단말의 일 실시 예에 해당할 수 있다.
도 10에 따르면, 본 발명의 단말(1000)은 제어부(1001) 및 통신부(1002)를 포함할 수 있다.
통신부(1002)는 데이터 통신을 수행하며 오프로딩을 위해 데이터 및 커널을 송수신 할 수 있다.
제어부(1001)는 단말의 전반적인 동작을 제어할 수 있다. 도 10에서의 단말(1000)은 제어부(1001) 및 통신부(1002)만을 포함하는 것으로 표현되었으나, 이 외에도 다양한 기능을 수행하는 모듈을 포함할 수 있으며 설명의 편의상 도 10에서 생략된 것에 불과하다. 또한 제어부(1001)도 도면에는 미도시 되었으나, 오프로딩할 커널을 결정하는 모듈이나 커널의 수행결과를 수집하는 모듈이 포함될 수 있으며, 이하에서는 설명의 편의상 제어부(1001)가 단말의 전반적인 동작을 모두 제어하는 것으로 가정하여 설명한다.
제어부(1001)는 서버로부터 상기 커널을 수행할 수 있는 자원 리스트를 수신하고, 상기 자원 리스트에 포함된 적어도 하나 이상의 커널 수행 자원의 상기 커널 수행 비용을 예측하고, 상기 예측 결과에 따른 상기 커널을 수행할 커널 수행 자원에 상기 커널을 전송할 수 있다.
상술한 실시예들에서, 모든 단계는 선택적으로 수행의 대상이 되거나 생략의 대상이 될 수 있다. 또한 각 실시예에서 단계들은 반드시 순서대로 일어날 필요는 없으며, 뒤바뀔 수 있다. 한편, 본 명세서와 도면에 개시된 본 명세서의 실시 예들은 본 명세서의 기술 내용을 쉽게 설명하고 본 명세서의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 명세서의 범위를 한정하고자 하는 것은 아니다. 즉 본 명세서의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 명세서가 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
1000: 단말
1001: 제어부
1002: 통신부
1001: 제어부
1002: 통신부
Claims (14)
- 단말의 응용프로그램 커널 실행 방법에 있어서,
서버로부터 상기 응용 프로그램에 대한 복수의 커널을 수행할 수 있는 자원을 포함하는 자원 리스트를 수신하는 단계;
상기 자원 리스트에 포함된 자원에 기초하여 상기 단말의 제 1 커널 수행 능력과 관련된 제 1 비용 정보 및 상기 서버의 제 1 커널 수행 능력과 관련된 제 2 비용 정보를 식별하는 단계;
상기 제 1 커널이 제 2 커널에 종속적인 경우, 상기 자원 리스트에 기초하여 상기 제 1 커널이 수행되는 제 1 위치 및 상기 복수의 커널 중 제 2 커널이 수행되는 제 2 위치를 식별하는 단계;
상기 제 1 위치가 상기 제 2 위치와 다른 경우, 상기 제 1 커널과 상기 제 2 커널 간의 데이터 송수신에 기초하여 상기 제 1 비용 정보 및 상기 제 2 비용 정보를 결정하는 단계;
상기 제 1 비용 정보 및 상기 제 2 비용 정보에 기초하여 상기 단말과 서버 사이의 응용 프로그램에 대한 제 1 커널을 수행할 자원을 선택하는 단계; 및
선택된 자원이 서버에 해당하고, 제 2 위치에 해당하는 자원이 단말인 경우, 식별된 데이터 및 제 1 커널을 서버로 전송하는 단계;를 포함하는 커널 실행 방법.
- 제 1 항에 있어서,
상기 서버는 상기 제 1 커널을 실행할 수 있는 클라우드 서버를 포함하는 커널 실행 방법.
- 제 1 항에 있어서,
상기 제 1 비용 정보를 식별하는 단계는,
단말이 제 1 커널을 수행하는데 필요한 시간을 측정하는 단계; 및
제 1 커널이 수행될 때 단말이 소비한 에너지 및 측정된 시간을 기초로 제 1 비용 정보를 식별하는 단계를 더 포함하는 커널 실행 방법.
- 제 1 항에 있어서,
상기 제 2 비용 정보를 식별하는 단계는,
상기 서버로부터 수신한 서버의 성능 정보에 기초하여 상기 제 1 커널의 실행 시간을 측정하는 단계; 및
단말이 유휴 상태일 때 단말이 소비한 에너지 및 측정된 시간을 기반으로 제 2 비용 정보를 식별하는 단계를 더 포함하는 커널 실행 방법.
- 제 3 항에 있어서,
상기 제 1 비용 정보를 결정하는 단계는,
제 1 커널과 제 2 커널 사이의 데이터 송수신에 따라 단말이 소비한 에너지 및 측정된 시간에 기초하여 제 1 비용 정보를 결정하는 단계를 더 포함하는 커널 실행 방법.
- 제 4 항에 있어서,
상기 제 2 비용 정보를 결정하는 단계는,
제 1 커널과 제 2 커널 사이의 데이터 송수신에 따라 단말이 소비한 에너지 및 측정된 시간에 기초하여 제 2 비용 정보를 결정하는 단계를 더 포함하는 커널 실행 방법.
- 제 1 항에 있어서,
상기 서버로부터 상기 제 1 커널의 실행 결과에 대한 정보를 수신하는 단계를 더 포함하는 커널 실행 방법.
- 응용프로그램 커널을 실행하기 위한 단말에 있어서,
정보를 송수신하도록 구성된 통신부; 및
하나 이상의 프로세서를 포함하고,
상기 프로세서는,
서버로부터 응용 프로그램에 대한 복수의 커널을 수행할 수 있는 자원을 포함하는 자원 리스트를 수신하고,
상기 자원 리스트에 포함된 자원에 기초하여 상기 단말의 제 1 커널 수행 능력과 관련된 제 1 비용 정보 및 상기 서버의 제 1 커널 수행 능력과 관련된 제 2 비용 정보를 식별하고,
자원 리스트에 기반하여, 제 1 커널이 수행되는 제 1 위치와 제 2 커널이 수행되는 제 2 위치를 식별하고,
제 1 커널이 제 2 커널에 종속적인 경우, 제 1 커널과 제 2 커널 사이의 데이터 송수신에 기초하여 제 1 비용 정보와 제 2 비용 정보를 결정하고,
제 1 위치와 제 2 위치가 다른 경우, 상기 제 1 비용 정보와 상기 제 2 비용 정보에 기초하여 단말과 서버 간의 응용 프로그램에 대한 제 1 커널을 수행할 자원을 선택하고, 자원이 서버에 해당하는 경우 데이터와 제 1 커널을 서버로 전송하는 것을 특징으로 하는 커널을 실행하기 위한 단말.
- 제 8 항에 있어서,
상기 서버는 상기 제 1 커널을 실행할 수 있는 클라우드 서버를 포함하는 커널을 실행하기 위한 단말.
- 제 8 항에 있어서,
상기 적어도 하나의 프로세서는 상기 제 1 커널이 상기 단말에 의해 실행될 때 필요한 시간을 측정하고, 상기 측정된 시간 및 상기 제 1 커널이 실행될 때 단말이 소비한 에너지를 기반으로 상기 제 1 비용 정보를 식별하도록 더 구성되는, 커널을 실행하기 위한 단말.
- 제 8 항에 있어서,
상기 적어도 하나의 프로세서는 상기 서버로부터 수신된 서버의 성능 정보를 기반으로 상기 제 1 커널의 실행 시간을 측정하고, 단말이 유휴 상태일 때 단말이 소비한 에너지 및 측정된 시간을 기반으로 상기 제 2 비용 정보를 식별하도록 더 구성되는 커널을 실행하기 위한 단말.
- 제 10 항에 있어서,
상기 적어도 하나의 프로세서는 상기 제 1 커널과 상기 제 2 커널 사이의 데이터 송수신에 따라 상기 단말이 소비한 에너지 및 측정된 시간에 기초하여 상기 제 1 비용 정보를 결정하도록 더 구성되는, 커널을 실행하기 위한 단말.
- 제 11 항에 있어서,
상기 적어도 하나의 프로세서는, 상기 제 1 커널과 상기 제 2 커널 간의 데이터 송수신에 따라 상기 단말이 소비한 에너지 및 측정된 시간을 측정하여 상기 제 2 비용 정보를 결정하는 것을 특징으로 하는 커널을 실행하기 위한 단말.
- 제 8 항에 있어서,
상기 적어도 하나의 프로세서는 상기 서버로부터 상기 제 1 커널의 실행 결과에 대한 정보를 수신하도록 더 구성되는 커널을 실행하기 위한 단말.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140121379A KR102269271B1 (ko) | 2014-09-12 | 2014-09-12 | 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 |
US14/853,405 US10277667B2 (en) | 2014-09-12 | 2015-09-14 | Method and apparatus for executing application based on open computing language |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140121379A KR102269271B1 (ko) | 2014-09-12 | 2014-09-12 | 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160031360A KR20160031360A (ko) | 2016-03-22 |
KR102269271B1 true KR102269271B1 (ko) | 2021-06-28 |
Family
ID=55455940
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140121379A KR102269271B1 (ko) | 2014-09-12 | 2014-09-12 | 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10277667B2 (ko) |
KR (1) | KR102269271B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019236068A1 (en) * | 2018-06-05 | 2019-12-12 | Hewlett-Packard Development Company, L.P. | Generating cloud workflows from local workflows |
US11188348B2 (en) * | 2018-08-31 | 2021-11-30 | International Business Machines Corporation | Hybrid computing device selection analysis |
US11204819B2 (en) * | 2018-12-21 | 2021-12-21 | Samsung Electronics Co., Ltd. | System and method for offloading application functions to a device |
CN112473144A (zh) * | 2020-11-19 | 2021-03-12 | 完美世界(重庆)互动科技有限公司 | 游戏资源数据的处理方法及装置 |
DE102021113954A1 (de) * | 2021-05-31 | 2022-12-01 | Miele & Cie. Kg | Verfahren zum Ansteuern einer Rechenoperation und Verfahren zum Durchführen einer Rechenoperation |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100228861A1 (en) * | 2009-03-04 | 2010-09-09 | International Business Machines Corporation | Environmental and computing cost reduction with improved reliability in workload assignment to distributed computing nodes |
JP2011138506A (ja) * | 2009-12-26 | 2011-07-14 | Intel Corp | コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化 |
US20140149752A1 (en) | 2012-11-27 | 2014-05-29 | International Business Machines Corporation | Associating energy consumption with a virtual machine |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004171234A (ja) * | 2002-11-19 | 2004-06-17 | Toshiba Corp | マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム |
US7617503B2 (en) * | 2004-09-15 | 2009-11-10 | Verigy (Singapore) Pte. Ltd. | Method and apparatus for determining which of two computer processes should perform a function X |
US8171482B1 (en) | 2006-05-09 | 2012-05-01 | Vmware, Inc. | Application environment specifications for provisioning application specific runtime environments using subsets of resources required for execution |
US7873869B2 (en) * | 2008-10-09 | 2011-01-18 | International Business Machines Corporation | Checkpointing a hybrid architecture computing system |
US9715376B2 (en) * | 2008-12-29 | 2017-07-25 | Intel Corporation | Energy/performance with optimal communication in dynamic parallelization of single threaded programs |
JP5545288B2 (ja) * | 2009-02-18 | 2014-07-09 | 日本電気株式会社 | タスク割当装置、タスク割当方法、及び、タスク割当プログラム |
US20100269111A1 (en) * | 2009-04-21 | 2010-10-21 | Thomas Martin Conte | Task management |
US20110040417A1 (en) * | 2009-08-13 | 2011-02-17 | Andrew Wolfe | Task Scheduling Based on Financial Impact |
US8761008B2 (en) * | 2009-10-29 | 2014-06-24 | The Boeing Company | System, apparatus, and method for communication in a tactical network |
US9524192B2 (en) * | 2010-05-07 | 2016-12-20 | Microsoft Technology Licensing, Llc | Distributed workflow execution |
US9207993B2 (en) * | 2010-05-13 | 2015-12-08 | Microsoft Technology Licensing, Llc | Dynamic application placement based on cost and availability of energy in datacenters |
US9239996B2 (en) * | 2010-08-24 | 2016-01-19 | Solano Labs, Inc. | Method and apparatus for clearing cloud compute demand |
US20120109936A1 (en) * | 2010-10-29 | 2012-05-03 | Nec Laboratories America, Inc. | Cost-effective data layout optimization over heterogeneous storage classes |
US9063738B2 (en) * | 2010-11-22 | 2015-06-23 | Microsoft Technology Licensing, Llc | Dynamically placing computing jobs |
US9563479B2 (en) | 2010-11-30 | 2017-02-07 | Red Hat, Inc. | Brokering optimized resource supply costs in host cloud-based network using predictive workloads |
US20120158447A1 (en) * | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Pricing batch computing jobs at data centers |
US20120284073A1 (en) * | 2011-05-03 | 2012-11-08 | International Business Machines Corporation | Optimized collaboration between distributed centers of global service delivery systems |
US9195501B2 (en) * | 2011-07-12 | 2015-11-24 | Qualcomm Incorporated | Instruction culling in graphics processing unit |
US9015708B2 (en) * | 2011-07-28 | 2015-04-21 | International Business Machines Corporation | System for improving the performance of high performance computing applications on cloud using integrated load balancing |
US9128763B2 (en) * | 2011-08-23 | 2015-09-08 | Infosys Limited | System and method for job scheduling optimization |
US9716749B2 (en) * | 2012-12-14 | 2017-07-25 | Microsoft Technology Licensing, Llc | Centralized management of a P2P network |
US20140229026A1 (en) * | 2013-02-13 | 2014-08-14 | Al Cabrini | Prediction of future energy and demand usage using historical energy and demand usage |
US9747185B2 (en) * | 2013-03-26 | 2017-08-29 | Empire Technology Development Llc | Acceleration benefit estimator |
US9632834B2 (en) * | 2013-05-17 | 2017-04-25 | Nvidia Corporation | Assigning priorities to computational work streams by mapping desired execution priorities to device priorities |
US9479449B2 (en) * | 2013-06-03 | 2016-10-25 | Advanced Micro Devices, Inc. | Workload partitioning among heterogeneous processing nodes |
US9256274B2 (en) | 2013-08-01 | 2016-02-09 | Texas Instruments Incorporated | Dynamic low power states characterization |
US9104505B2 (en) * | 2013-10-03 | 2015-08-11 | International Business Machines Corporation | Acceleration prediction in hybrid systems |
US9589311B2 (en) * | 2013-12-18 | 2017-03-07 | Intel Corporation | Independent thread saturation of graphics processing units |
US9459849B2 (en) * | 2014-01-17 | 2016-10-04 | International Business Machines Corporation | Adaptive cloud aware just-in-time (JIT) compilation |
JP6200824B2 (ja) * | 2014-02-10 | 2017-09-20 | ルネサスエレクトロニクス株式会社 | 演算制御装置及び演算制御方法並びにプログラム、OpenCLデバイス |
US20150316904A1 (en) * | 2014-05-01 | 2015-11-05 | Rockwell Automation Technologies, Inc. | Systems and methods for adjusting operations of an industrial automation system based on multiple data sources |
US10346941B2 (en) * | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
US9654414B2 (en) * | 2014-09-18 | 2017-05-16 | International Business Machines Corporation | Scheduling cost efficient datacenter load distribution |
-
2014
- 2014-09-12 KR KR1020140121379A patent/KR102269271B1/ko active IP Right Grant
-
2015
- 2015-09-14 US US14/853,405 patent/US10277667B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100228861A1 (en) * | 2009-03-04 | 2010-09-09 | International Business Machines Corporation | Environmental and computing cost reduction with improved reliability in workload assignment to distributed computing nodes |
JP2011138506A (ja) * | 2009-12-26 | 2011-07-14 | Intel Corp | コンピュータクラウドへのインタフェースとしての仮想OpenCL装置を利用することによるOpenCLアプリケーションの高速化 |
US20140149752A1 (en) | 2012-11-27 | 2014-05-29 | International Business Machines Corporation | Associating energy consumption with a virtual machine |
Non-Patent Citations (1)
Title |
---|
nVIDIA. OpenCL Best Practices Guide. 2010.05.27. |
Also Published As
Publication number | Publication date |
---|---|
US20160080284A1 (en) | 2016-03-17 |
US10277667B2 (en) | 2019-04-30 |
KR20160031360A (ko) | 2016-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10067805B2 (en) | Technologies for offloading and on-loading data for processor/coprocessor arrangements | |
US9715408B2 (en) | Data-aware workload scheduling and execution in heterogeneous environments | |
US10733019B2 (en) | Apparatus and method for data processing | |
KR102269271B1 (ko) | 오픈 컴퓨팅 언어 기반의 애플리케이션 실행 방법 및 장치 | |
US9262220B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
CN110832461B (zh) | 用于提供函数即服务(faas)的***及该***的操作方法 | |
CN107005796B (zh) | 用于确定是否执行电子设备的任务的移动终端和方法 | |
US20160175710A1 (en) | Electronic apparatus, cloud server, game service providing system and game service providing method thereof | |
JP7012689B2 (ja) | コマンド実行方法及び装置 | |
US11568242B2 (en) | Optimization framework for real-time rendering of media using machine learning techniques | |
KR101471749B1 (ko) | 클라우드 서비스의 가상자원 할당을 위한 퍼지 로직 기반의 자원평가 장치 및 방법 | |
US9891959B2 (en) | Stage-aware performance modeling for computer cluster sizing | |
US11188348B2 (en) | Hybrid computing device selection analysis | |
US20160171071A1 (en) | Dynamic creation and configuration of partitioned index through analytics based on existing data population | |
CN107729353B (zh) | 用于执行机器学习的分布式***及其方法 | |
US20150032893A1 (en) | Visualization of workload distribution on server resources | |
US20160098425A1 (en) | Heterogeneous database processing archetypes for hybrid system | |
US20140068077A1 (en) | Efficient Resource Management in a Virtualized Computing Environment | |
US9880849B2 (en) | Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard | |
KR102543838B1 (ko) | 정보 획득 방법 및 장치 | |
CN110168513A (zh) | 在不同存储***中对大文件的部分存储 | |
US11288046B2 (en) | Methods and systems for program optimization utilizing intelligent space exploration | |
US11093401B2 (en) | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction | |
CN110231983B (zh) | 数据并发处理方法、装置及***、计算机设备及可读介质 | |
JP2010009288A (ja) | マルチプロセッサシステム及びプログラム実行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |