KR101335711B1 - 서버, 연산 처리 방법 및 연산 처리 시스템 - Google Patents

서버, 연산 처리 방법 및 연산 처리 시스템 Download PDF

Info

Publication number
KR101335711B1
KR101335711B1 KR1020120006708A KR20120006708A KR101335711B1 KR 101335711 B1 KR101335711 B1 KR 101335711B1 KR 1020120006708 A KR1020120006708 A KR 1020120006708A KR 20120006708 A KR20120006708 A KR 20120006708A KR 101335711 B1 KR101335711 B1 KR 101335711B1
Authority
KR
South Korea
Prior art keywords
code
client
server
program
executing
Prior art date
Application number
KR1020120006708A
Other languages
English (en)
Other versions
KR20130085713A (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 KR1020120006708A priority Critical patent/KR101335711B1/ko
Priority to US13/746,365 priority patent/US9467532B2/en
Publication of KR20130085713A publication Critical patent/KR20130085713A/ko
Application granted granted Critical
Publication of KR101335711B1 publication Critical patent/KR101335711B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Advance Control (AREA)

Abstract

본 발명의 일 실시예에 따른 연산 처리 방법은 클라이언트가 대상 프로그램 실행을 위해 범용 그래픽 처리 서브루틴을 호출하는 단계, 상기 클라이언트가 서버로 상기 대상 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터를 전송하는 단계, 및 상기 서버가 범용 그래픽 처리 장치를 이용하여 상기 프로그램 코드를 실행하는 단계를 포함한다.

Description

서버, 연산 처리 방법 및 연산 처리 시스템{A server, An arithmatic processing method and a system thereof}
본 발명은 서버, 연산 처리 방법 및 연산 처리 시스템에 관한 것이다.
범용 그래픽 처리 장치(General Purpose Graphic Processing Unit, GPGPU)는 그래픽 처리뿐 아니라 일반적인 연산 처리를 수행할 수 있는 프로세서를 의미한다. 범용 그래픽 처리 장치는 병렬 처리를 통해 중앙 처리 장치(Central Processing Unit, CPU) 보다 우수한 연산 처리 능력을 가진다.
한편, 최근 모바일 기기의 고성능화에 따라 모바일 기기에서도 범용 그래픽 처리 장치를 이용한 프로그램의 이용이 증가하고 있다. 하지만, 모바일 기기의 특성상 범용 그래픽 처리 장치를 이용하여 프로그램을 실행하는 데에는 제한된 전력, 연산 속도 등의 문제가 있다. 또한, 범용 그래픽 처리 장치의 경우 가격이 비싸기 때문에 현실적으로 모바일 기기마다 장착되기 어렵다. 이에, 모바일 기기에서의 범용 그래픽 처리 장치를 이용한 프로그램 실행의 부담을 줄이기 위한 연구가 진행되고 있다.
일반적으로, 모바일 기기에서의 범용 그래픽 처리 장치를 이용한 프로그램 실행의 부담을 줄이기 위한 방법으로 미리 특정 용도에 맞게 서버를 프로그램하여 사용하는 방법이 있다. 즉, 특정 연산을 수행할 수 있는 서버를 미리 프로그램하고 클라이언트(ex. 모바일 기기)에서 이를 호출하여 사용하는 방법이다. 하지만, 이러한 방법은 특정 연산에 대해서만 서버를 통한 연산 대행이 가능하므로 효율성이 떨어지는 문제가 있다.
이에, 본 발명의 일 실시예가 이루고자 하는 기술적 과제는 서버를 통해 범용 그래픽 처리 장치를 이용한 프로그램을 실행할 수 있는 연산 처리 방법 및 연산 처리 시스템을 제공하는 데 있다.
또한, 본 발명의 일 실시예가 이루고자 하는 기술적 과제는 서버를 통해 범용 그래픽 처리 장치를 이용한 프로그램을 실행할 수 있는 연산 처리 방법 및 연산 처리 시스템의 효율성을 향상시키는 데 있다.
본 발명의 기술적 과제는 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따른 연산 처리 방법은 클라이언트가 대상 프로그램 실행을 위해 범용 그래픽 처리 서브루틴을 호출하는 단계, 상기 클라이언트가 서버로 상기 대상 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터를 전송하는 단계, 및 상기 서버가 범용 그래픽 처리 장치를 이용하여 상기 프로그램 코드를 실행하는 단계를 포함한다.
일 실시예에서, 상기 서버가 상기 클라이언트로 결과 데이터를 전송하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 클라이언트가 상기 대상 프로그램 실행을 위한 요청 메시지 전송 여부를 판단하는 단계를 더 포함할 수 있다.
일 실시예에서, 상기 프로그램 코드는 호스트 코드 및 디바이스 코드를 포함할 수 있다.
일 실시예에서, 상기 디바이스 코드는 PTX(Parallel Thread Execution) 코드일 수 있다.
일 실시예에서, 상기 호스트 코드는 자바 바이트코드(Java Bytecode)일 수 있다.
본 발명의 일 실시예에 따른 서버는 적어도 하나의 클라이언트로부터 대상 프로그램 실행을 위한 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받고, 상기 디바이스 코드의 실행을 요청하는 처리부, 및 상기 처리부로부터 상기 디바이스 코드를 전달받아 실행하고, 결과 데이터를 상기 처리부로 전달하는 범용 그래픽 처리 장치를 포함한다.
일 실시예에서, 상기 처리부는 상기 적어도 하나의 클라이언트로부터 상기 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받고, 상기 결과 데이터를 상기 적어도 하나의 클라이언트로 전달하는 통신부, 및 상기 호스트 코드를 실행하여 상기 범용 그래픽 처리 장치로 상기 디바이스 코드의 실행을 요청하는 코드 실행부를 포함한다.
일 실시예에서, 상기 처리부는 복수개일 수 있다.
일 실시예에서, 상기 복수개의 처리부로부터 상기 범용 그래픽 처리 장치로의 상기 디바이스 코드의 실행 요청을 관리하는 작업 관리부를 더 포함할 수 있다.
일 실시예에서, 상기 디바이스 코드는 PTX(Parallel Thread Execution) 코드일 수 있다.
일 실시예에서, 상기 호스트 코드는 자바 바이트코드(Java Bytecode)일 수 있다.
본 발명의 일 실시예에 따른 연산 처리 시스템은 대상 프로그램 실행을 서버로 요청하는 클라이언트, 및 상기 클라이언트로부터 상기 대상 프로그램 실행을 요청받아 범용 그래픽 처리 장치를 이용하여 상기 대상 프로그램을 실행하고, 결과 데이터를 상기 클라이언트로 전달하는 서버를 포함하되, 상기 서버는 상기 대상 프로그램 실행을 위한 호스트 코드, 디바이스 코드 및 리소스 데이터를 상기 클라이언트로부터 전달받는다.
본 발명의 일 실시예에 따른 연산 처리 시스템은 복수의 연산들 중 일부 연산에 대한 실행을 서버로 요청하고, 나머지 연산들을 직접 실행하는 클라이언트, 및 상기 클라이언트로부터 상기 일부 연산에 대한 실행을 요청받아 범용 그래픽 처리 장치를 이용하여 상기 일부 연산을 실행하고, 결과 데이터를 상기 클라이언트로 전달하는 서버를 포함한다.
본 발명의 일 실시예에 따른 연산 처리 방법 및 연산 처리 시스템에 따르면 클라이언트는 서버를 통해 범용 그래픽 처리 장치를 이용한 프로그램을 실행할 수 있다.
본 발명의 일 실시예에 따른 연산 처리 방법 및 연산 처리 시스템은 범용 그래픽 처리 장치를 이용하여 연산 처리 속도를 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 연산 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 본 발명의 일 실시예에 따른 연산 처리 시스템을 더욱 구체적으로 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 연산 처리 시스템의 클라이언트를 더욱 구체적으로 나타낸 것이다.
도 4는 본 발명의 일 실시예에 따른 연산 처리 시스템의 서버를 더욱 구체적으로 나타낸 것이다.
도 5 및 도 6은 본 발명의 일 실시예에 따른 연산 처리 방법을 나타낸 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 일 실시예는 서버, 연산 처리 방법 및 연산 처리 시스템에 관한 것이다. 이하에서, 본 발명의 일 실시예에 따른 서버, 연산 처리 방법 및 연산 처리 시스템이 도 1 내지 도 6을 참조하여 상세히 설명된다.
명세서 전체에서 클라이언트는 범용 그래픽 처리 장치를 이용한 프로그램의 실행을 요청하는 구성을 의미할 수 있다. 또한, 명세서 전체에서 서버는 상기 클라이언트로부터 범용 그래픽 처리 장치를 이용한 프로그램의 실행을 요청받아 처리하고, 상기 프로그램의 실행에 따른 결과 데이터를 상기 클라이언트로 전달하는 구성을 의미할 수 있다.
도 1은 본 발명의 일 실시예에 따른 연산 처리 시스템을 개략적으로 나타낸 것이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 연산 처리 시스템은 복수의 클라이언트(10, 40), 서버(20) 및 통신망(30)을 포함할 수 있다. 또한, 도면에는 도시되지 않았지만, 상기 서버(20)는 복수 개 일 수 있다.
상기 클라이언트(10, 40)들은 상기 통신망(30)을 통해 상기 서버(20)와 연결될 수 있다. 상기 클라이언트(10, 40)들은 동시에 또는 순차적으로 상기 서버(20)와 연결될 수 있다. 구체적으로, 상기 클라이언트(10, 40)들은 상기 서버(20)에 범용 그래픽 처리 장치를 이용한 프로그램의 실행을 요청할 수 있다.
상기 클라이언트(10, 40)들은 예를 들어, 모바일 기기일 수 있다. 즉, 상기 클라이언트(10, 40)들은 예를 들어, 휴대폰, PDA, PMP, MP3 중 어느 하나일 수 있다. 또한, 상기 클라이언트(10, 40)들은 예를 들어, 노트북, PC, 랩탑, 넷북 중 어느 하나일 수 있다.
상기 범용 그래픽 처리 장치를 이용한 프로그램은 상기 범용 그래픽 처리 장치에서 실행될 수 있도록 설계된 모든 종류의 프로그램을 의미할 수 있다. 또한, 상기 범용 그래픽 처리 장치를 이용한 프로그램은 프로그램에 국한되는 것이 아니라, 음성, 영상 데이터의 처리 등 다양한 연산을 포함하는 개념으로 이해되어야 할 것이다.
상기 서버(20)는 상기 클라이언트(10, 40)들과 상기 통신망(30)을 통해 연결될 수 있다. 상기 클라이언트(10, 40)들로부터 상기 범용 그래픽 처리 장치를 이용한 프로그램의 실행 요청을 받아 상기 프로그램을 실행하고, 결과 데이터를 상기 클라이언트(10, 40)들로 각각 전달할 수 있다. 상기 결과 데이터는 상기 프로그램을 실행한 결과값을 포함할 수 있다.
상기 통신망(30)은 다양한 형태의 통신 프로토콜을 포함할 수 있다. 상기 통신망(30)은 유선 또는 무선 통신 프로토콜을 포함할 수 있다. 상기 통신망(30)이 유선 통신 프로토콜인 경우 예를 들어, 이더넷 통신 프로토콜일 수 있다. 상기 통신망(30)이 무선 통신 프로토콜인 경우 예를 들어, Wi-Fi, 지그비(Zigbee), 블루투스(bluetooth) 중 어느 하나일 수 있다.
이하의 도 2를 참조하여, 본 발명의 일 실시예에 따른 연산 처리 시스템은 보다 상세히 설명될 것이다.
도 2는 본 발명의 일 실시예에 따른 연산 처리 시스템을 더욱 구체적으로 나타낸 것이다. 이해를 돕기 위해, 하나의 클라이언트(10)가 서버(20)에 범용 그래픽 처리 장치를 이용한 프로그램의 실행을 요청하는 경우가 설명된다.
도 2를 참조하면, 상기 클라이언트(10)는 상기 서버(20)로 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터(resource data)를 전송할 수 있다. 상기 프로그램 코드는 호스트 코드(host code) 및 디바이스 코드(device code)를 포함할 수 있다.
상기 호스트 코드는 상기 디바이스 코드의 실행을 개시하기 위한 코드를 의미할 수 있다. 상기 호스트 코드는 자바 바이트코드(Java Bytecode) 형태로 컴파일될 수 있다. 예를 들어, 상기 호스트 코드는 자바(Java)를 이용하여 설계될 수 있다.
상기 디바이스 코드는 상기 프로그램의 실행을 위한 코드를 의미할 수 있다. 상기 디바이스 코드는 PTX(Parallel Thread Execution) 코드 형태로 컴파일될 수 있다. 상기 디바이스 코드는 예를 들어, NVIDIA 사의 CUDA를 이용하여 설계될 수 있다.
상기 리소스 데이터는 상기 프로그램의 실행 과정에 필요한 데이터를 의미할 수 있다. 상기 리소스 데이터는 예를 들어, 참조 변수값, 필요한 데이터 파일, 서브루틴 파라미터 값 등을 포함할 수 있다.
상기 서버(20)는 범용 그래픽 처리 장치(24)를 포함할 수 있다. 상기 서버(20)는 상기 클라이언트(10)로부터 상기 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받아, 상기 프로그램을 실행할 수 있다. 구체적으로, 상기 서버(20)의 상기 범용 그래픽 처리 장치(24)는 상기 프로그램을 실행하고, 상기 프로그램의 실행에 따른 결과 데이터를 생성할 수 있다. 생성된 상기 결과 데이터는 상기 서버(20)로부터 상기 클라이언트(10)로 전달될 것이다.
즉, 본 발명의 일 실시예에 따른 연산 처리 시스템은 상기 클라이언트(10)가 범용 그래픽 처리 장치(24)를 포함하지 않는 경우에도 상기 서버(20)와 통신하여 상기 범용 그래픽 처리 장치(24)를 포함하고 있는 상기 서버(20)를 통해 상기 프로그램을 실행할 수 있다. 따라서, 상기 프로그램 처리 속도를 향상시킬 수 있으며, 나아가 상기 클라이언트(10)의 전체 연산의 처리 속도를 향상시킬 수 있다. 또한, 상기 프로그램 실행에 대한 상기 클라이언트(10)의 부담을 줄일 수 있다.
한편, 다른 측면에서 상기 클라이언트(10)가 복수의 연산을 수행하는 경우, 일부 연산에 대해서는 상기 클라이언트(10) 내부적으로 처리하고, 일부 연산에 대해서만 상기 서버(20)로 프로그램 실행을 요청할 수 있다. 예를 들어, 상기 클라이언트(10)는 영상 데이터, 즉 그래픽 관련 처리는 상기 클라이언트(10) 내부적으로 처리하고, 그 외의 연산은 상기 서버(20)로 프로그램 실행을 요청할 수 있다. 이 경우, 상기 클라이언트(10)는 복수의 연산을 더욱 효율적으로 처리할 수 있다.
도 3은 본 발명의 일 실시예에 따른 연산 처리 시스템의 클라이언트를 더욱 구체적으로 나타낸 것이다.
도 3을 참조하면, 상기 클라이언트(10)는 요청부(11), 판단부(12) 및 통신부(13)를 포함할 수 있다.
상기 요청부(11)는 상기 서버(20)에 상기 프로그램 실행을 요청할 수 있다. 구체적으로, 상기 요청부(11)는 상기 프로그램 실행이 필요한 경우, 범용 그래픽 처리 서브루틴(subroutine)을 호출할 수 있다. 상기 범용 그래픽 처리 서브루틴은 상기 호스트 코드 및 디바이스 코드로 구성될 수 있다.
상기 판단부(12)는 상기 서버(20)에 상기 프로그램 실행 요청 메시지를 전송할 것인지 여부를 판단할 수 있다. 도면에는 도시되지 않았지만, 상기 판단부(12)는 상기 클라이언트(10)가 상기 프로그램을 실행할 수 있는 경우, 즉, 상기 클라이언트(10)가 범용 그래픽 처리 장치를 포함하는 경우에는 상기 서버(20)로 상기 프로그램 실행 요청 메시지를 전송하지 않을 수 있다.
상기 통신부(13)는 상기 프로그램 실행 요청 메시지를 상기 서버(20)로 전송할 수 있다. 또한, 상기 통신부(13)는 상기 호스트 코드, 디바이스 코드 및 리소스 데이터를 상기 서버(20)로 전송할 수 있다. 상기 통신부(13)는 유선 또는 무선 통신 프로토콜을 이용할 수 있다. 상기 통신부(13)가 유선 통신 프로토콜을 이용하는 경우 예를 들어, 이더넷 통신 프로토콜을 이용할 수 있다. 상기 통신부(13)가 무선 통신 프로토콜을 이용하는 경우 예를 들어, Wi-Fi, 지그비(Zigbee), 블루투스(bluetooth) 중 어느 하나를 이용할 수 있다.
도 4는 본 발명의 일 실시예에 따른 연산 처리 시스템의 서버를 더욱 구체적으로 나타낸 것이다.
도 4를 참조하면, 상기 서버(20)는 요청 관리부(21), 처리부(22), 작업 관리부(23) 및 범용 그래픽 처리 장치(24)를 포함할 수 있다. 상기 처리부(22)는 복수 개 일 수 있다.
상기 요청 관리부(21)는 상기 클라이언트(10)로부터 상기 프로그램 실행 요청 메시지를 전달받을 수 있다. 상기 요청 관리부(21)는 상기 프로그램 실행 요청 메시지를 상기 처리부(22)로 전달할 수 있다. 상기 요청 관리부(21)는 복수의 상기 처리부(22) 모두가 동작하고 있는 경우 상기 요청 메시지 수신을 거부할 수 있다.
상기 처리부(22)는 상기 요청 관리부(21)로부터 상기 요청 메시지를 전달받을 수 있다. 상기 처리부(22)는 상기 요청 메시지에 대응하여 상기 클라이언트(10)의 상기 통신부(13)로부터 상기 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받고, 상기 작업 관리부(23)로 상기 디바이스 코드의 실행을 요청할 수 있다.
구체적으로, 상기 처리부(22)는 통신부(221) 및 코드 실행부(222)를 포함할 수 있다. 상기 통신부(221)는 상기 클라이언트(10)의 통신부(13)로부터 상기 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받을 수 있다. 상기 코드 실행부(222)는 상기 호스트 코드를 실행할 수 있다. 상기 호스트 코드는 상기 디바이스 코드의 실행을 개시하기 위한 코드를 의미할 수 있다. 따라서, 상기 코드 실행부(222)는 상기 호스트 코드를 실행하여 상기 작업 관리부(23)로 상기 디바이스 코드의 실행을 요청할 것이다.
상기 작업 관리부(23)는 상기 디바이스 코드를 상기 범용 그래픽 처리 장치(24)로 전달할 수 있다. 상기 범용 그래픽 처리 장치(24)는 상기 디바이스 코드를 실행하여 결과 데이터를 생성할 것이다.
또한, 상기 작업 관리부(23)는 복수 개의 상기 처리부(22)로부터 각각 상기 디바이스 코드의 실행 요청이 있는 경우, 상기 디바이스 코드 실행 요청들을 관리할 수 있다. 구체적으로, 상기 작업 관리부(23)는 상기 디바이스 코드 실행 요청들을 순차적으로 상기 범용 그래픽 처리 장치(24)가 실행하도록 할 수 있다.
상기 범용 그래픽 처리 장치(24)는 상기 작업 관리부(23)로부터 전달되는 상기 디바이스 코드를 실행할 수 있다. 이는 상기 범용 그래픽 처리 장치(24)가 상기 프로그램을 실행하는 것을 의미할 수 있다. 상기 범용 그래픽 처리 장치(24)는 상기 디바이스 코드 실행에 따른 결과 데이터를 상기 작업 관리부(23)로 전달할 수 있다. 또한, 상기 범용 그래픽 처리 장치(24)는 상기 디바이스 코드 실행 중에 필요한 리소스 데이터가 발생하는 경우, 상기 작업 관리부(23)를 통해 상기 리소스 데이터를 요청할 수 있다. 이 경우, 상기 작업 관리부(23)는 상기 리소스 데이터를 상기 처리부(22)로부터 전달받고, 상기 리소스 데이터를 상기 범용 그래픽 처리 장치(24)로 전달할 것이다.
도 5 및 도 6은 본 발명의 일 실시예에 따른 연산 처리 방법을 나타낸 흐름도이다.
먼저 도 5를 참조하면, 본 발명의 일 실시예에 따른 연산 처리 방법은 클라이언트가 범용 그래픽 처리 서브루틴을 호출하는 단계(S110), 상기 클라이언트가 서버로 호스트 코드, 디바이스 코드 및 리소스 데이터를 전송하는 단계(S120), 서버가 범용 그래픽 처리 장치(GPGPU)를 이용하여 상기 디바이스 코드를 실행하는 단계(S130) 및 상기 서버가 상기 클라이언트로 결과 데이터를 전송하는 단계(S140)를 포함할 수 있다.
다음으로 도 6을 참조하면, 본 발명의 일 실시예에 따른 연산 처리 방법은 클라이언트가 범용 그래픽 처리 서브루틴을 호출하는 단계(S210), 상기 클라이언트가 대상 프로그램 실행 요청 메시지의 서버로의 전송 여부를 판단하는 단계(S220), 상기 클라이언트가 상기 서버로 호스트 코드, 디바이스 코드 및 리소스 데이터를 전송하는 단계(S230), 상기 서버가 범용 그래픽 처리 장치를 이용하여 상기 디바이스 코드를 실행하는 단계(S240), 상기 서버가 상기 클라이언트로 결과 데이터를 전송하는 단계(S250) 및 상기 클라이언트가 대상 프로그램을 실행하는 단계(S260)를 포함할 수 있다.
구체적으로, 상기 S220 단계의 판단 결과 상기 클라이언트가 대상 프로그램 실행 요청 메시지를 상기 서버로 전송하는 경우, 본 발명의 일 실시예에 따른 연산 처리 방법은 S210, S220, S230, S240 및 S250 단계를 포함하여 수행될 수 있다.
한편, 상기 S220 단계의 판단 결과 상기 클라이언트가 상기 대상 프로그램 실행 요청 메시지를 상기 서버로 전송하지 않는 경우, 본 발명의 일 실시예에 따른 연산 처리 방법은 S210, S220 및 S260 단계를 포함하여 수행될 수 있다. 즉, 이 경우는 상기 클라이언트가 범용 그래픽 처리 장치를 포함하고 있는 경우에 해당될 것이다.
또한, 본 발명의 일 실시예에 따른 연산 처리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical media)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 연산 처리 방법 및 연산 처리 시스템은 클라이언트(10)가 범용 그래픽 처리 장치(24)를 포함하지 않는 경우에도 서버(20)와 통신하여 범용 그래픽 처리 장치(24)를 포함하고 있는 서버(20)를 통해 상기 프로그램을 실행할 수 있다. 따라서, 상기 프로그램 처리 속도를 향상시킬 수 있으며, 나아가 클라이언트(10)의 전체 연산의 처리 속도를 향상시킬 수 있다. 또한, 상기 프로그램 실행에 대한 클라이언트(10)의 부담을 줄일 수 있다.
따라서, 본 발명의 일 실시예에 따른 연산 처리 방법 및 연산 처리 시스템은 음성 데이터 처리에 이용될 수 있다. 구체적으로, 음성 데이터의 분석 및 데이터 가공을 상기 서버의 범용 그래픽 처리 장치를 통해 처리할 수 있다.
또한, 본 발명의 일 실시예에 따른 연산 처리 방법 및 연산 처리 시스템은 영상 데이터 처리에 이용될 수 있다. 구체적으로, 디지털 이미지의 화질 개선, 디지털 이미지에 다양한 효과를 추가하는 경우, 상기 서버의 범용 그래픽 처리 장치를 통해 처리할 수 있다. 또한, 트랜스코딩(transcoding)의 경우에도 상기 서버의 범용 그래픽 처리 장치를 통해 처리될 수 있다.
나아가, 본 발명의 일 실시예에 따른 연산 처리 방법 및 연산 처리 시스템은 바이러스 스캔, 개인용 데이터 저장장치(ex. 하드 디스크)의 암호화 등에도 이용될 수 있다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
10, 40: 클라이언트 21: 요청 관리부
20: 서버 22: 처리부
30: 통신망 23: 작업 관리부
11: 요청부 24: 범용 그래픽 처리 장치(GPGPU)
12: 판단부
13: 통신부

Claims (19)

  1. 삭제
  2. 클라이언트가 대상 프로그램 실행을 위해 범용 그래픽 처리 서브루틴을 호출하는 단계;
    상기 클라이언트가 서버로 상기 대상 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터를 전송하는 단계; 및
    상기 서버가 범용 그래픽 처리 장치를 이용하여 상기 프로그램 코드를 실행하고 상기 클라이언트로 결과 데이터를 전송하는 단계를 포함하는 연산 처리 방법.
  3. 클라이언트가 대상 프로그램 실행을 위해 범용 그래픽 처리 서브루틴을 호출하는 단계;
    상기 클라이언트가 서버로 상기 대상 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터를 전송하는 단계;
    상기 클라이언트가 상기 대상 프로그램 실행을 위한 요청 메시지 전송 여부를 판단하는 단계; 및
    상기 서버가 범용 그래픽 처리 장치를 이용하여 상기 프로그램 코드를 실행하는 단계를 포함하는 연산 처리 방법.
  4. 클라이언트가 대상 프로그램 실행을 위해 범용 그래픽 처리 서브루틴을 호출하는 단계;
    상기 클라이언트가 서버로 상기 대상 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터를 전송하는 단계; 및
    상기 서버가 범용 그래픽 처리 장치를 이용하여 상기 프로그램 코드를 실행하는 단계를 포함하고,
    상기 프로그램 코드는 호스트 코드 및 디바이스 코드를 포함하는 연산 처리 방법.
  5. 제4 항에 있어서,
    상기 디바이스 코드는 PTX(Parallel Thread Execution) 코드인 연산 처리 방법.
  6. 제4 항에 있어서,
    상기 호스트 코드는 자바 바이트코드(Java Bytecode)인 연산 처리 방법.
  7. 적어도 하나의 클라이언트로부터 대상 프로그램 실행을 위한 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받고, 상기 디바이스 코드의 실행을 요청하는 처리부; 및
    상기 처리부로부터 상기 디바이스 코드를 전달받아 실행하고, 결과 데이터를 상기 처리부로 전달하는 범용 그래픽 처리 장치를 포함하는 서버.
  8. 제7 항에 있어서,
    상기 처리부는
    상기 적어도 하나의 클라이언트로부터 상기 호스트 코드, 디바이스 코드 및 리소스 데이터를 전달받고, 상기 결과 데이터를 상기 적어도 하나의 클라이언트로 전달하는 통신부; 및
    상기 호스트 코드를 실행하여 상기 범용 그래픽 처리 장치로 상기 디바이스 코드의 실행을 요청하는 코드 실행부를 포함하는 서버.
  9. 제7 항에 있어서,
    상기 처리부는 복수 개인 서버.
  10. 제9 항에 있어서,
    상기 복수 개의 처리부로부터 상기 범용 그래픽 처리 장치로의 상기 디바이스 코드의 실행 요청을 관리하는 작업 관리부를 더 포함하는 서버.
  11. 제7 항에 있어서,
    상기 디바이스 코드는 PTX(Parallel Thread Execution) 코드인 서버.
  12. 제7 항에 있어서,
    상기 호스트 코드는 자바 바이트코드(Java Bytecode)인 서버.
  13. 삭제
  14. 대상 프로그램 실행을 서버로 요청하는 클라이언트; 및
    상기 클라이언트로부터 상기 대상 프로그램 실행을 요청받아 범용 그래픽 처리 장치를 이용하여 상기 대상 프로그램을 실행하고, 결과 데이터를 상기 클라이언트로 전달하는 서버를 포함하되,
    상기 서버는 상기 대상 프로그램 실행을 위한 프로그램 코드 및 리소스 데이터를 상기 클라이언트로부터 전달받고,
    상기 프로그램 코드는 호스트 코드 및 디바이스 코드를 포함하며, 상기 호스트 코드는 상기 디바이스 코드의 실행을 개시하기 위한 코드인 연산 처리 시스템.
  15. 범용 그래픽 처리와 연관된 복수의 연산 중 적어도 하나의 연산에 대한 실행을 서버로 요청하고 나머지 연산은 직접 실행하는 클라이언트; 및
    상기 클라이언트로부터 요청받은 적어도 하나의 연산을 범용 그래픽 처리 장치를 이용하여 실행하고, 결과 데이터를 상기 클라이언트로 전달하는 서버를 포함하는 연산 처리 시스템.
  16. 삭제
  17. 삭제
  18. 범용 그래픽 처리 프로그램 실행을 서버에 요청하고 상기 범용 그래픽 처리 프로그램에 실행에 필요한 프로그램 코드 및 데이터를 상기 서버에 전송하며, 상기 서버가 실행한 범용 그래픽 처리 프로그램의 결과를 디스플레이하고, 상기 프로그램 코드는 호스트 코드 및 디바이스 코드를 포함하는 전자장치.
  19. 제2 항 내지 제6 항 중 어느 한 항의 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체.
KR1020120006708A 2012-01-20 2012-01-20 서버, 연산 처리 방법 및 연산 처리 시스템 KR101335711B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120006708A KR101335711B1 (ko) 2012-01-20 2012-01-20 서버, 연산 처리 방법 및 연산 처리 시스템
US13/746,365 US9467532B2 (en) 2012-01-20 2013-01-22 Server, arithmatic processing method, and arithmatic processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120006708A KR101335711B1 (ko) 2012-01-20 2012-01-20 서버, 연산 처리 방법 및 연산 처리 시스템

Publications (2)

Publication Number Publication Date
KR20130085713A KR20130085713A (ko) 2013-07-30
KR101335711B1 true KR101335711B1 (ko) 2013-12-04

Family

ID=48798128

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120006708A KR101335711B1 (ko) 2012-01-20 2012-01-20 서버, 연산 처리 방법 및 연산 처리 시스템

Country Status (2)

Country Link
US (1) US9467532B2 (ko)
KR (1) KR101335711B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132887A (ja) * 2014-01-09 2015-07-23 富士通株式会社 要求分散プログラム、要求分散方法および情報処理装置
CN105760238B (zh) * 2016-01-29 2018-10-19 腾讯科技(深圳)有限公司 图形指令数据的处理方法和装置及系统
KR102419972B1 (ko) * 2016-03-03 2022-07-14 한국전자통신연구원 영상 표시를 위한 클라이언트 장치, 서버 장치 및 영상 표시 방법
KR101887288B1 (ko) 2016-12-26 2018-08-09 연세대학교 산학협력단 그래픽 처리 장치에서의 범용 연산처리의 스크래치패드 메모리 최적 컴파일 방법 및 장치
US10868564B1 (en) 2020-02-12 2020-12-15 Semiconductor Components Industries, Llc Methods and apparatus for a delta-sigma analog-to-digital converter
US11121989B1 (en) * 2020-05-29 2021-09-14 Bank Of America Corporation Centralized repository and communication system for cross-network interactions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0172468B1 (ko) * 1993-07-30 1999-03-30 미타라이 하지메 시스템제어방식 및 장치
KR20000050244A (ko) * 2000-05-30 2000-08-05 김호광 게임제작 도구에서 게임 이벤트 편집방법 및 장치
KR20110010608A (ko) * 2008-05-19 2011-02-01 마이크로소프트 코포레이션 끌기 작업을 이용한 메뉴의 액세싱
KR101079011B1 (ko) * 2003-06-02 2011-11-01 알카텔-루센트 유에스에이 인코포레이티드 그래픽 유저 인터페이스 생성 방법 및 장치

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908313B2 (en) * 2004-07-21 2011-03-15 The Mathworks, Inc. Instrument-based distributed computing systems
US8266232B2 (en) 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US8549500B2 (en) * 2007-02-14 2013-10-01 The Mathworks, Inc. Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment
US8225300B1 (en) * 2007-02-14 2012-07-17 The Mathworks, Inc. Client program executable on multiple heterogeneous server platforms
CN102362269B (zh) 2008-12-05 2016-08-17 社会传播公司 实时内核
US8400458B2 (en) * 2009-09-09 2013-03-19 Hewlett-Packard Development Company, L.P. Method and system for blocking data on a GPU
KR101079697B1 (ko) 2009-10-05 2011-11-03 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법
US8769510B2 (en) * 2010-04-08 2014-07-01 The Mathworks, Inc. Identification and translation of program code executable by a graphical processing unit (GPU)
US8583530B2 (en) * 2011-03-17 2013-11-12 Hartford Fire Insurance Company Code generation based on spreadsheet data models
US9019286B2 (en) * 2012-09-04 2015-04-28 Massimo J. Becker Remote GPU programming and execution method

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0172468B1 (ko) * 1993-07-30 1999-03-30 미타라이 하지메 시스템제어방식 및 장치
KR20000050244A (ko) * 2000-05-30 2000-08-05 김호광 게임제작 도구에서 게임 이벤트 편집방법 및 장치
KR101079011B1 (ko) * 2003-06-02 2011-11-01 알카텔-루센트 유에스에이 인코포레이티드 그래픽 유저 인터페이스 생성 방법 및 장치
KR20110010608A (ko) * 2008-05-19 2011-02-01 마이크로소프트 코포레이션 끌기 작업을 이용한 메뉴의 액세싱

Also Published As

Publication number Publication date
KR20130085713A (ko) 2013-07-30
US9467532B2 (en) 2016-10-11
US20130191446A1 (en) 2013-07-25

Similar Documents

Publication Publication Date Title
KR101335711B1 (ko) 서버, 연산 처리 방법 및 연산 처리 시스템
US20190317825A1 (en) System for managing deployment of distributed computing resources
US9983901B2 (en) Dynamic shard allocation adjustment
CN109033001B (zh) 用于分配gpu的方法和装置
US20140245319A1 (en) Method for enabling an application to run on a cloud computing system
US10768997B2 (en) Tail latency-based job offloading in load-balanced groups
CN109726004B (zh) 一种数据处理方法及装置
US20160345283A1 (en) Method and apparatus for adjacent node registration, and method and system for cross-node registration
CN111200606A (zh) 深度学习模型任务处理方法、系统、服务器及存储介质
JP2023046248A (ja) プログラマブルネットワークデバイスを用いたメトリックおよびセキュリティベースのアクセラレータサービスリスケジューリング並びに自動スケーリング
JP2013186770A (ja) データ処理装置
Alsubhi et al. MEACC: an energy-efficient framework for smart devices using cloud computing systems
CN112104679B (zh) 处理超文本传输协议请求的方法、装置、设备和介质
CN111831503B (zh) 一种基于监控代理的监控方法和监控代理装置
CN110716809B (zh) 用于调度云资源的方法和装置
US10616317B2 (en) Method and system for affinity load balancing
CN110674526A (zh) 异步加密实现方法、装置、设备及可读存储介质
US11388050B2 (en) Accelerating machine learning and profiling over a network
JP6563363B2 (ja) 設定サーバ、設定方法および設定プログラム
CN108228323B (zh) 基于数据本地性的Hadoop任务调度方法及装置
US9246964B2 (en) Streaming data on data processes
US20180285083A1 (en) Asynchronous data objects for an event driven programming language
EP3872630B1 (en) Request processing method and apparatus, electronic device, and computer storage medium
JP5666634B2 (ja) 分散処理システム、分散処理装置、分散処理プログラム及び分散処理方法
JP2017208747A (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
FPAY Annual fee payment

Payment date: 20161121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171120

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191216

Year of fee payment: 7