KR101435772B1 - Gpu virtualizing system - Google Patents
Gpu virtualizing system Download PDFInfo
- Publication number
- KR101435772B1 KR101435772B1 KR1020130071605A KR20130071605A KR101435772B1 KR 101435772 B1 KR101435772 B1 KR 101435772B1 KR 1020130071605 A KR1020130071605 A KR 1020130071605A KR 20130071605 A KR20130071605 A KR 20130071605A KR 101435772 B1 KR101435772 B1 KR 101435772B1
- Authority
- KR
- South Korea
- Prior art keywords
- gpu
- code
- gpus
- actual
- virtual
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 가변적 개수로 변환 가능한 GPU 가상화 시스템에 관한 것이다. 본 발명의 제 1 측면은, GPU 코드를 입력받아 상기 슬레이브 노드로 전달하는 GPU 가상 디바이스 드라이버를 포함하는 마스터 노드; 및 상기 GPU 코드를 받아와 실제 GPU 를 통해 실행되도록 하는 GPU 가상 서버를 포함하는 슬레이브 노드(Slave Node)로 구분되는 다수의 클러스터 노드로 구성되는 GPU 가상화 시스템에 있어서, 상기 GPU 가상 디바이스 드라이버는, 개방형 범용 병렬 컴퓨팅 프레임워크인 OpenCL(Open Computing Language)로부터 N 개(N 은 자연수)의 실제 GPU 에 대한 GPU 코드를 M 개(M 은 N 과 같거나 다른 자연수)의 가상 GPU 로 전달시키기 위한 형태로 변환하는 에뮬레이터; 및 상기 에뮬레이터에 의해 변환된 GPU 코드를 상기 M 개의 가상 GPU 로 전달하는 디스패처; 를 포함하는 가변적 개수로 변환 가능한 GPU 가상화 시스템을 제공한다.
본 발명의 제 2 측면은, GPU 병렬처리를 위해 GPU 가상화를 수행하는 GPU 가상화 시스템에 있어서, M 개의 가상 GPU 로 구현하기 위해 사용자가 GPU 코드를 수행시키는 노드인 마스터 노드; 및 상기 마스터 노드와 통신하여 상기 GPU 코드를 전달받으며, N 개의 실제 GPU 를 구비하여 GPU 연산을 수행하는 슬레이브 노드; 를 포함하며, 상기 마스터 노드는, 워크아이템 사이즈와 워크그룹 사이즈에 기초하여 상기 GPU 코드를 통해 사용하는 데이터의 분배를 연산하는 어낼라이저를 포함한다.
이에 의해, 가상화를 통해 실제의 GPU를 결합하거나 재분배하는 방식을 제시함으로써, 실제 존재하지 않는 크기의 메모리와 컴퓨팅 성능을 가진 가상 GPU를 제공하여 더 큰 프로그램을 더 쉽게 신속하게 구동할 수 있는 효과를 제공한다.The present invention relates to a variable number transformable GPU virtualization system. A first aspect of the present invention is a master node including a GPU virtual device driver receiving a GPU code and transferring the received GPU code to the slave node; And a plurality of cluster nodes divided into a slave node including a GPU virtual server for receiving the GPU code and being executed through an actual GPU, the GPU virtual device driver comprising: The GPU code for N (N is natural number) actual GPUs from OpenCL (Open Computing Language), a universal parallel computing framework, is converted into a form for transferring M GPUs (M is a natural number equal to or different from N) An emulator; And a dispatcher for delivering the GPU code converted by the emulator to the M virtual GPUs; To a variable number of GPU virtualization systems.
According to a second aspect of the present invention, there is provided a GPU virtualization system for performing GPU virtualization for GPU parallel processing, the system comprising: a master node which is a node through which a user executes GPU code for implementation as M virtual GPUs; And a slave node communicating with the master node to receive the GPU code and having N actual GPUs to perform a GPU operation; Wherein the master node includes an analyzer for computing a distribution of data to use over the GPU code based on a work item size and a work group size.
Virtual GPUs can be combined or redistributed through virtualization, providing virtual GPUs with memory and computing power that do not exist in real life, making it easier to run larger programs more quickly. to provide.
Description
본 발명은 가변적 개수로 변환 가능한 GPU 가상화 시스템에 관한 것으로, 보다 구체적으로는, 가상화를 통해 실제의 GPU 를 결합하거나 재분배하는 방식을 제시하는 GPU 가상화 시스템에 관한 것이다.The present invention relates to a variable number of convertible GPU virtualization system, and more particularly, to a GPU virtualization system that suggests a way to combine or redistribute actual GPUs through virtualization.
GPU는 Graphic Processing Unit의 약자로, 그래픽 처리장치로 복잡한 그래픽 처리의 부담을 CPU(Central Processing Unit)인 중앙처리장치(이하, CPU)에 의한 그래픽에 대한 연산 및 처리 로드(Road)를 덜어주기 위해 개발되었다. GPU is an abbreviation of Graphic Processing Unit. It is a graphic processing unit that loads the burden of complicated graphics processing to relieve computation and processing load (road) of graphic by CPU (Central Processing Unit) Developed.
하지만 최근에는 GPU의 병렬처리 기능을 활용하여 복잡한 계산에 이용하고자 하는 기술개발이 활발히 진행되고 있다. However, in recent years, technology development has been actively pursued to utilize the parallel processing function of the GPU for use in complicated calculations.
이에 따라 많은 슈퍼 컴퓨터들은 GPU를 사용하여 처리 속도를 빠르게 높여나가고 있다. 이런 추세에 따라 GPU를 좀 더 효율적으로 사용하기 위해 GPU에 가상화를 추가하는 방법들도 연구되고 있으며, 복잡한 그래픽 처리의 부담을 CPU로부터 덜어주기 위해 개발되고 있다. As a result, many supercomputers are using GPUs to speed up processing. In this trend, methods to add virtualization to the GPU in order to use the GPU more efficiently have been studied and are being developed to alleviate the burden of complicated graphics processing from the CPU.
하나의 예로, 최근에는 GPU의 병렬처리 기능을 활용하여 복잡한 계산에 이용하고자 하는 기술 개발이 활발히 진행되고 있고, 최근의 많은 슈퍼 컴퓨터들은 GPU를 사용하여 처리 속도를 빠르게 높여나가고 있다. 따라서 병렬화가 잘 수행되고 계산량이 많은 알고리즘의 경우 GPU를 사용하여 높은 성능을 이끌어 낼 수 있다.As one example, in recent years, technology development has been actively pursued to utilize the parallel processing function of the GPU for complicated calculation, and many recent supercomputers are rapidly increasing the processing speed by using the GPU. Therefore, it is possible to achieve high performance by using GPU in case of parallelizing well-computed algorithm.
이에 따라 해당 기술분야에 있어서는 더 나아가 GPU 가상화를 통해 GPU를 더 작게 분할하는 함으로써, 가상 데스크탑 환경을 구성하거나, 가상 머신 별로 GPU가 하나씩 있는 것처럼 보여줄 수 있도록 하기 위한 기술 개발이 요구되고 있다.
Accordingly, in the related technology field, it is required to further divide the GPU through the GPU virtualization to form a virtual desktop environment, or to develop a technique for displaying the GPU as if there is one per virtual machine.
[관련기술문헌][Related Technical Literature]
1. CPU 와 GPU를 사용하는 이종 시스템에서 가상화를 이용한 어플리케이션 컴파일 및 실행 방법 및 장치(METHOD AND APPARATUS FOR COMPILING AND EXECUTING APPLICATION USING VIRTUALIZATION IN HETEROGENEOUS SYSTEM USING CPU AND GPU) (특허출원번호 제10-2010-0093327호)1. METHOD AND APPARATUS FOR COMPILING AND EXECUTING APPLICATION USING VIRTUALIZATION IN HETEROGENEOUS SYSTEM USING CPU AND GPU IN VARIOUS SYSTEMS USING CPU AND GPU (Patent Application No. 10-2010-0093327 number)
2. 가상 GPU (VIRTUAL GPU) (특허출원번호 제10-2012-0078202호)
2. Virtual GPU (VIRTUAL GPU) (Patent Application No. 10-2012-0078202)
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.On the other hand, the background art described above is technical information acquired by the inventor for the derivation of the present invention or obtained in the derivation process of the present invention, and can not necessarily be a known technology disclosed to the general public before the application of the present invention .
본 발명은 상기의 문제점을 해결하기 위한 것으로, N 개의 실제 GPU를 M 개의 GPU로 가상화 시킬 수 있어, 사용자가 직관적으로 쉽게 병렬 프로그래밍을 수행할 수 있도록 하기 위한 GPU 가상화 시스템을 제공하기 위한 것이다.In order to solve the above problems, the present invention provides a GPU virtualization system capable of virtualizing N actual GPUs into M GPUs so that a user can intuitively and easily perform parallel programming.
또한, 본 발명의 다른 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템은, 사용자의 요구에 맞게 GPU를 분할하여 GPU 사용률을 높일 수 있도록 하기 위한 GPU 가상화 시스템을 제공하기 위한 것이다.In addition, according to another embodiment of the present invention, a GPU virtualization system that can be converted into a variable number can provide a GPU virtualization system for dividing a GPU according to a user's request to increase the GPU utilization rate.
그러나 본 발명의 목적들은 상기에 언급된 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.However, the objects of the present invention are not limited to the above-mentioned objects, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.
상기의 목적을 달성하기 위해 본 발명의 제 1 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템은, GPU 코드를 입력받아 슬레이브 노드로 전달하는 GPU 가상 디바이스 드라이버를 포함하는 마스터 노드; 및 상기 GPU 코드를 받아와 실제 GPU 를 통해 실행되도록 하는 GPU 가상 서버를 포함하는 슬레이브 노드(Slave Node)로 구분되는 다수의 클러스터 노드로 구성되는 GPU 가상화 시스템에 있어서, 상기 GPU 가상 디바이스 드라이버는, 개방형 범용 병렬 컴퓨팅 프레임워크로부터 M 개(M 은 자연수)의 가상 GPU 에 대한 GPU 코드를 N 개(N 은 M 과 같거나 다른 자연수)의 실제 GPU 로 전달시키기 위한 형태로 변환하는 에뮬레이터; 및 상기 에뮬레이터에 의해 변환된 GPU 코드를 상기 N 개의 실제 GPU 로 전달하는 디스패처; 를 포함할 수 있다.According to an aspect of the present invention, there is provided a variable number-convertible GPU virtualization system including: a master node including a GPU virtual device driver for receiving a GPU code and transferring the GPU code to a slave node; And a plurality of cluster nodes divided into a slave node including a GPU virtual server for receiving the GPU code and being executed through an actual GPU, the GPU virtual device driver comprising: An emulator for converting M (M is a natural number) virtual GPU code from a universal parallel computing framework into a form for transferring GPU code to N (N is a natural number equal to or different from M) actual GPU; And a dispatcher for passing the GPU code converted by the emulator to the N actual GPUs; . ≪ / RTI >
또한 상기 디스패처는, 상기 N 개의 실제 GPU 의 위치를 기억하고, 상기 기억된 실제 GPU 의 위치에 기초하여 상기 변환된 GPU 코드를 전달 할 수 있다.The dispatcher may also store the location of the N actual GPUs and deliver the converted GPU code based on the location of the stored actual GPUs.
또한 상기 GPU 가상 디바이스 드라이버는, GPU 코드를 통해 사용하는 데이터에 대한 상기 실제 GPU 메모리로 분할 가능한지를 워크아이템 사이즈와 워크그룹 사이즈에 기초하여 분석하는 어낼라이저; 를 더 포함할 수 있다.The GPU virtual device driver may further include an analyzer analyzing whether the GPU memory is capable of being divided into the actual GPU memory for data used through the GPU code based on the work item size and the work group size; As shown in FIG.
또한, 상기 어낼라이저는, 상기 GPU 코드를 통해 사용하는 데이터의 분할이 가능한 경우, 상기 에뮬레이터와 상기 디스패처를 통해 상기 N 개의 실제 GPU 로 분할된 GPU 코드의 전달이 수행되도록 하며, 상기 GPU 코드를 통해 사용하는 데이터의 분할이 가능하지 않은 경우, 공유 가상 메모리(Shared virtual memory) 방식 또는 CPU 수행 방식에 의해 분할이 가능하지 않는 GPU 코드가 수행될 수 있다.In addition, when the data to be used through the GPU code can be divided, the analyzer causes the emulator and the dispatcher to carry out transmission of the GPU code divided into the N actual GPUs, If the data to be used can not be divided, a GPU code that can not be divided by a shared virtual memory (Shared Virtual Memory) method or a CPU execution method can be executed.
또한 상기 어낼라이저는, 상기 GPU 코드를 통해 사용하는 데이터에 대해 상기 N 개의 실제 GPU 에 분할되는 경우, 상기 N 개로 상기 워크그룹 사이즈(workgroup size)를 분할하여 상기 N 개의 실제 GPU 에 분배하여 실행시킬 수 있다.If the data to be used through the GPU code is divided into N actual GPUs, the analyzer may divide the workgroup size into N pieces and distribute the N pieces to the N actual GPUs to be executed .
또한 상기 어낼라이저는, 상기 GPU 코드를 통해 사용하는 데이터에 대해 상기 N 개의 실제 GPU 에 분할되지 않는 경우, 상기 실제 GPU 의 MMU 의 공유 가상 메모리(Shared virtual memory)를 이용한 상기 N 개의 실제 GPU 에서 겹치는 읽거나 쓰는 버퍼 영역에 대한 처리를 수행할 수 있다.In addition, the analyzer may overlap the N actual GPUs using the shared virtual memory of the MMU of the actual GPU if the data to be used through the GPU code is not divided into the N actual GPUs It is possible to perform processing on the buffer area for reading or writing.
또한 상기 마스터 노드는, 사용자에 의해 프로그램이 수행되는 노드이고, 상기 슬레이브 노드는, 상기 N 개의 실제 GPU 를 구비하여, GPU 연산을 수행하는 노드일 수 있다.Also, the master node may be a node where a program is executed by a user, and the slave node may be a node having the N actual GPUs and performing a GPU operation.
또한 상기 GPU 가상 디바이스 드라이버는, CUDA 및 OpenCL 를 지원할 수 있다.The GPU virtual device driver may support CUDA and OpenCL.
또한 상기 GPU 가상 서버와 상기 GPU 가상 디바이스 드라이버 간의 통신은 상기 마스터 노드와 상기 슬레이브 노드 간에 연결된 인터커넥션 네트워크(Interconnection Network)를 사용하는 것이 바람직하다.Preferably, communication between the GPU virtual server and the GPU virtual device driver uses an interconnection network connected between the master node and the slave node.
상기의 목적을 달성하기 위해 본 발명의 제 2 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템은, M 개의 가상 GPU 로 구현하기 위한 GPU 코드를 수행시키는 노드인 마스터 노드; 및 상기 마스터 노드와 통신하여 상기 GPU 코드를 전달받으며, N 개의 실제 GPU 를 구비하여 GPU 연산을 수행하는 하나 이상의 슬레이브 노드; 를 포함하며, 상기 마스터 노드는, 워크아이템 사이즈와 워크그룹 사이즈에 기초하여 상기 GPU 코드를 통해 사용하는 데이터의 분배를 연산하는 어낼라이저를 포함할 수 있다.According to another aspect of the present invention, there is provided a GPU virtualization system including: a master node, which is a node for executing GPU codes for implementing M virtual GPUs; And one or more slave nodes communicating with the master node to receive the GPU code and having N actual GPUs to perform GPU operations; And the master node may include an analyzer for computing a distribution of data to be used over the GPU code based on a work item size and a work group size.
또한 상기 어낼라이저에 의한 연산에 의해 상기 GPU 코드를 N 개의 실제 GPU 를 위해 변환하도록 구성되는 에뮬레이터; 및 상기 변환된 GPU 코드를 상기 N 개의 GPU 각각으로 제공하도록 구성되는 디스패처;를 더 포함하는 것이 바람직하다.An emulator configured to convert the GPU code for N real GPUs by operation by the analyzer; And a dispatcher configured to provide the converted GPU code to each of the N GPUs.
본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템은, 가상화를 통해 실제의 GPU를 결합하거나 재분배하는 방식을 제시함으로써, 실제 존재하지 않는 크기의 메모리와 컴퓨팅 성능을 가진 가상 GPU를 제공하여 더 큰 프로그램을 더 쉽게 신속하게 구동할 수 있는 효과를 제공한다. The GPU virtualization system capable of converting a variable number according to an embodiment of the present invention provides a method of combining or redistributing an actual GPU through virtualization to provide a virtual GPU having a memory and a computing capability that do not exist in actual size Thereby providing an effect that a larger program can be driven more quickly and more easily.
또한, 본 발명의 다른 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템은, 사용자의 요구에 맞게 GPU를 분할하여 GPU 사용률을 높일 수 있는 효과를 제공한다.Also, according to another embodiment of the present invention, the variable number-convertible GPU virtualization system provides an effect of increasing the GPU usage rate by dividing the GPU according to the demand of the user.
뿐만 아니라, 본 발명의 다른 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템은, N 개의 실제 GPU를 M 개의 GPU로 가상화 시킬 수 있어, 사용자가 직관적으로 쉽게 병렬 프로그래밍을 수행할 수 있는 효과를 제공한다.In addition, according to another embodiment of the present invention, the variable number-convertible GPU virtualization system can virtualize N real GPUs into M GPUs, thereby providing an effect that a user can easily perform parallel programming intuitively do.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다. The effects obtained by the present invention are not limited to the above-mentioned effects, and other effects not mentioned can be clearly understood by those skilled in the art from the following description will be.
도 1은 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서 사용되는 실제 GPU의 기본적인 구조를 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 가상 디바이스 드라이버 레이어(Virtual Device Driver Layer)를 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 GPU 가상 디바이스 드라이버를 나타내는 도면이다.
도 4는 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 GPU 가상화 기법의 예를 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 가상화된 GPU에 의한 접근하는 데이터가 분할이 불가능하면 구현방법을 설명하기 위한 개념도이다.FIG. 1 is a diagram for explaining a basic structure of an actual GPU used in a variable number-convertible GPU virtualization system according to an embodiment of the present invention.
2 is a diagram for explaining a virtual device driver layer in a variable number-convertible GPU virtualization system according to an embodiment of the present invention.
3 is a diagram illustrating a GPU virtual device driver in a variable number-convertible GPU virtualization system according to an embodiment of the present invention.
4 is a diagram illustrating an example of a GPU virtualization technique in a variable number-convertible GPU virtualization system according to an embodiment of the present invention.
FIG. 5 is a conceptual diagram for explaining an implementation method when data accessed by a virtualized GPU in a GPU virtualization system that can be converted to a variable number according to an embodiment of the present invention can not be divided.
이하, 본 발명의 바람직한 실시예의 상세한 설명은 첨부된 도면들을 참조하여 설명할 것이다. 하기에서 본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, a detailed description of preferred embodiments of the present invention will be given with reference to the accompanying drawings. In the following description of the present invention, detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear.
본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터 또는 신호를 '전송'하는 경우에는 구성요소는 다른 구성요소로 직접 상기 데이터 또는 신호를 전송할 수 있고, 적어도 하나의 또 다른 구성요소를 통하여 데이터 또는 신호를 다른 구성요소로 전송할 수 있음을 의미한다.
In the present specification, when any one element 'transmits' data or signals to another element, the element can transmit the data or signal directly to the other element, and through at least one other element Data or signal can be transmitted to another component.
도 1 은 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서 사용되는 실제 GPU(10)의 기본적인 구조를 설명하기 위한 도면이다. 도 1을 참조하면, 실제 GPU(10)는 여러 개의 PE(Processing Element)(11)와 GPU 메모리(GPU Memory)(12)로 구성된다. 실제 GPU(10)는 일반적인 CPU 연산과 비슷하게, PE(11)에 의해 GPU 메모리(12)로부터 데이터를 읽어 처리하고 다시 메모리(12)에 저장한다.FIG. 1 is a diagram for explaining a basic structure of an
MMU(Memory Management Unit)(13)는 CPU 의 MMU 와 같이 가상 메모리(Virtual memory)를 구현하기 위해 설치된다. MMU(13)는 실제 GPU(10)의 가상화를 지원하기 위해 최근의 GPU 에 구현되고 있다. 본 발명에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템상에서MMU(13)가 설치되는 경우와 설치되지 않은 경우 모두에 대한 가변적 개수로 변환 가능한 GPU 가상화에 대해서 이하 구체적으로 설명하도록 한다.
An MMU (Memory Management Unit) 13 is installed to implement a virtual memory like an MMU of a CPU. The MMU 13 is implemented in a recent GPU to support virtualization of the
도 2 는 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 가상 디바이스 드라이버 레이어(Virtual Device Driver Layer)를 나타내는 도면이다. 도 2 를 참조하면, 가변적 개수로 변환 가능한 GPU가상화 시스템의 클러스터 노드(Cluster Node)는 마스터 노드(Master Node: 100a)와 슬레이브 노드(Slave Node: 100b)로 구분된다.2 is a diagram illustrating a virtual device driver layer in a variable number-convertible GPU virtualization system according to an embodiment of the present invention. Referring to FIG. 2, a cluster node of a GPU virtualization system convertible into a variable number is divided into a master node (master node) 100a and a slave node (slave node) 100b.
여기서, 마스터 노드(100a)는 사용자에 의해 GPU 코드를 수행하기 위해 형성된 노드를 의미하며, 하드웨어(Hardware: 100a-1), 운영체제(Operating System: 100a-2), GPU 가상 디바이스 드라이버(GPU virtual device driver: 100a-3), CUDA(100a-4), OpenCL(100a-5), CUDA App.(100a-6) 및 OpenCL App.(100a-7)를 포함한다.The
한편, 슬레이브 노드(100b)는 마스터 노드(100a)로부터 GPU 코드를 전달받아 실제 계산을 하는 노드를 의미하며, 하드웨어(Hardware: 100b-1), 운영체제(Operating System: 100b-2), GPU 디바이스 드라이버(GPU device driver: 100b-3), CUDA(100b-4), OpenCL(100b-5) 및 GPU 가상 서버(GPU virtual server: 100b-6)를 포함한다.The
이러한 마스터 노드(100a)와 슬레이브 노드(100b)로 구분되는 클러스터 노드 환경에서 먼저 사용자는 마스터 노드(100a)에 접속하여 GPU 코드를 수행하면, 마스터 노드(100a)의 GPU 가상 디바이스 드라이버(100a-3)는 사용자에게 가상 GPU 를 구현한다. 또한, GPU 가상 디바이스 드라이버(100a-3)는 사용자의 GPU 코드를 받아 슬레이브 노드(100b)로 인터커넥션 네트워크(Interconnection Networ: 100c)를 통해 전송한다.In a cluster node environment separated into the
이에 따라, 슬레이브 노드(100b)는 GPU 가상 서버(100b-6)에 의해 마스터 노드(100a)로부터 사용자의 GPU 코드를 전달받아 온다. 전달된 GPU 코드는 실제 GPU 디바이스 드라이버(100b-3)로 전달되어 실제 N 개(N 은 자연수)의 GPU(10)를 통해 실행할 수 있다.
Accordingly, the
도 3 은 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 GPU 가상 디바이스 드라이버(100a-3)를 나타내는 도면이다.3 is a diagram showing a GPU
도 3을 참조하면, GPU 가상 디바이스 드라이버(100a-3)는 에뮬레이터(Emulator: 110a-3), 디스패처(Dispatcher: 120a-3) 및 어낼라이저(Analyzer: 130a-3)를 포함한다.Referring to FIG. 3, the GPU
먼저, 에뮬레이터(Emulator: 100a-3)는 병렬 컴퓨팅 프레임워크, 예를 들어, CUDA(Compute Unified Device Architecture: 100a-4)나 개방형 범용 병렬 컴퓨팅 프레임워크인 OpenCL(Open Computing Language: 100a-5)과 직접적으로 통신하는 구성요소로 구성될 수 있다. First, an
또한 OpenCL(100a-5)에서 에뮬레이터(110a-3)로 GPU 코드를 전달하며, 에뮬레이터(110a-3)는 해당 전달된 GPU 코드를 실제 GPU(10)에 전달할 수 있는 형태로 변환한다.
Also, the GPU code is transferred from the OpenCL 100a-5 to the
예를 들면, N 개(N 은 자연수)의 실제 GPU(10)를 1개의 가상 GPU로 가상화한 경우, 에뮬레이터(110a-3)는 1 개의 가상 GPU 로 전달된 GPU 코드를 N개의 실제 GPU(10)에 맞는 형태로 변환한다.For example, in a case where N (N is a natural number)
다음으로, 디스패처(120a-3)는 에뮬레이터(110a-3)에 의해 변환된 GPU 코드를 실제 GPU(10)로 전달하는 역할을 수행한다. 보다 구체적으로, 디스패처(120a-3)는 실제 N 개의 실제 GPU(10)는 클러스터 노드 상에 분산되어 있기 때문에, 실제 각 GPU(10)의 위치를 기억하고 있다가 해당 GPU 에게 명령을 전달한다.Next, the
마지막으로, 어낼라이저(130a-3)는 GPU 가상 디바이스 드라이버(100a-3)를 구성하는 추가적인 모듈로 GPU 코드를 통해 사용하는 데이터가 실제 GPU 메모리에 분할 가능한지 분석한다.Finally, the analyzer 130a-3 analyzes whether the data used by the GPU code in the additional module constituting the GPU
그리고 본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것은 아님은 본 발명의 기술분야의 평균적 전문가에게는 용이하게 추론될 수 있다.In this specification, a module may mean a functional and structural combination of hardware for carrying out the technical idea of the present invention and software for driving the hardware. For example, the module may mean a logical unit of a predetermined code and a hardware resource for executing the predetermined code, and it does not necessarily mean a physically connected code or a kind of hardware. Can be easily deduced to the average expert in the field of < / RTI >
어낼라이저(130a-3)는 GPU 코드를 통해 사용하는 데이터가 분할 가능하다면 에뮬레이터(110a-3)와 디스패처(120a-3)를 통해 N 개의 실제 GPU(10)로 데이터의 전달이 수행되도록 한다.The analyzer 130a-3 allows the data to be transferred to the N
반대로, 어낼라이저(130a-3)에 의해 GPU 코드를 통해 사용하는 데이터가 분할이 불가능하면 하기의 두 가지 방법을 통하여 GPU 코드를 수행할 수 있다. 첫 번째는 GPU(10)에 구현된 MMU(13)는 공유 가상 메모리(Shared virtual memory)를 제공하여 메모리 접근이 발생하는 경우 GPU끼리 데이터를 교환 방식에 의해 수행한다. 두 번째는 GPU(10)에 MMU(13)가 없는 경우, 해당 코드를 CPU 를 통해 수행한다. 여기서 두 가지 방법에 대해서는 도 5 에서 구체적으로 살펴보도록 한다.
Conversely, if the data used by the GPU code by the analyzer 130a-3 can not be divided, the GPU code can be executed through the following two methods. First, the
도 4 는 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 GPU 가상화 기법의 예를 설명하기 위한 도면이다. 도 4 의 (1)을 참조하면, GPU(10-0, 10-1, 10-2)가 2 개씩 설치되며 클러스터 노드가 3 개인 환경에서 가상화를 통해 사용자에게는 하나의 기계에 다수의 CPU(2)와 하나의 가상 GPU(1)가 설치된 것처럼 보이게 할 수 있다.4 is a diagram illustrating an example of a GPU virtualization technique in a variable number-convertible GPU virtualization system according to an embodiment of the present invention. Referring to (1) of FIG. 4, two GPUs 10-0, 10-1, and 10-2 are installed. In an environment having three cluster nodes, a plurality of
본 명세서에서는 마스터 노드(100a)와 슬레이브 노드(100b)로 구분가능한 클러스터 노드 상의 CPU(2-0, 2-1, 2-2)와 메인 메모리(Memory: 3-0, 3-1, 3-2)가 결합하여 하나의 머신(Machine)처럼 보이는 가상화에 대해서는 이미 종래의 기술에 의한 것이기 때문에 설명하지 않고, GPU(10: 10-0, 10-1, 10-2)의 결합 방법에 대해서만 도 4 에 도시된 것과 같이 제시한다.In this specification, CPUs 2-0, 2-1, and 2-2 on a cluster node that can be divided into a
도 2 에서 이미 설명한 바와 같이, 마스터 노드(100a)는 사용자로부터 프로그램을 수행하는 노드이고, 슬레이브 노드(100b)는 실제 GPU(10)가 설치되어 실제 GPU 연산을 수행하는 시스템을 의미한다.2, the
상술한 것처럼 마스터 노드(100a)에는 GPU 가상 디바이스 드라이버(100a-3)가 설치되고 GPU 가상 디바이스 드라이버(100a-3)에서 CUDA(100a-4) 또는 OpenCL(100a-5)를 지원한다. GPU 가상 디바이스 드라이버(100a-3)를 구성하는 요소는 에뮬레이터(110a-3), 디스패처(120a-3) 및 어낼라이저(130a-3)로 구성되는 것을 이미 도 3 에서 상술한 바 있다.The GPU
슬레이브 노드(100b)에는 GPU 가상 서버(100b-6)가 설치되어 있어서, GPU가상 서버(100b-6)는 마스터 노드(100a)에 있는 GPU 가상 디바이스 드라이버(100a-3)로부터 명령어를 받아서 처리한다. GPU 가상 서버(100b-6)와 GPU 가상 디바이스 드라이버(100a-3) 간의 통신은 마스터 노드(100a)와 슬레이브 노드(100b) 간에 연결된 인터커넥션 네트워크(Interconnection Network: 100c)를 이용한다.The GPU
이러한 상술한 구성을 중심으로, 도 4 의 (1)은 GPU 가상화의 일 실시예로 다수의 GPU(10: 10-0, 10-1, 10-2)를 1 개의 가상 GPU(1)로 가상화 한다고 가정한다.4 (1) is an example of GPU virtualization, in which a plurality of GPUs 10: 10-0, 10-1, 10-2 are virtualized into one
프로그래머가 OpenCL 프로그래밍 모델로 구현한 프로그램을 실행하면, GPU 가상 디바이스 드라이버(100a-3)는 GPU 코드를 받아 실제 GPU(10: 10-0, 10-1, 10-2)로 전달한다.When the programmer executes the program implemented by the OpenCL programming model, the GPU
이때, 어낼라이저(130a-3)는 GPU 코드를 통해 사용하는 데이터가 GPU(10: 10-0, 10-1, 10-2)에 잘 분할될 수 있는지 검사한다.At this time, the analyzer 130a-3 checks whether the data used by the GPU code can be divided into the GPU 10 (10-0, 10-1, 10-2).
예를 들어 어낼라이저(130a-3)는 OpenCL(100a-5)에서 실행할 경우 입력된 워크아이템 사이즈(workitem size)와 워크그룹 사이즈(workgroup size)의 입력값을 이용하여 GPU 코드를 분석한다.For example, the analyzer 130a-3 analyzes the GPU code using the input values of the workitem size and the workgroup size, which are input when executing on the
어낼라이저(130a-3)는 워크그룹 사이즈(workgroup size)의 크기가 1024 이고, 실제 GPU(10: 예컨대, 10-0 내지 10-15)가 16 개 있다면, 워크그룹(workgroup)을 64 개씩 분할한다.The analyzer 130a-3 divides the workgroup into 64 pieces if the size of the workgroup size is 1024 and the number of actual GPUs 10 (for example, 10-0 to 10-15) do.
어낼라이저(130a-3)는 워크그룹(workgroup)을 64 개씩 분할할 경우 실제 GPU 에서 읽거나 쓰는 버퍼 영역이 겹치지 않고 분할가능하다면, 해당 GPU 코드를 통해 사용하는 데이터는 실제 GPU(10: 10-0 내지 10-15)에 분배하여 실행시킬 수 있다.In the case where the worker is divided into 64 workgroups, the analyzer 130a-3 divides the workgroup into 64 GPUs, and if the buffer areas are not overlapping, 0 to 10 to 15).
이 경우, 분할된 버퍼 영역을 GPU(10)의 GPU 메모리(12)에 각각 복사한 후 워크그룹 사이즈(workgroup size)를 64 로 설정하여 각 실제 GPU(10)에서 수행할 수 있다. 수행이 완료되면, 분할된 버퍼는 마스터 노드(100a)의 메모리(3)로 다시 복사하여 합칠 수 있다.
In this case, the divided buffer areas may be respectively copied to the
도 5 는 본 발명의 실시예에 따른 가변적 개수로 변환 가능한 GPU 가상화 시스템에서의 가상화된 GPU 에 의한 접근하는 데이터가 분할이 불가능하면 구현방법을 설명하기 위한 개념도이다. 가상화된 GPU 에 의한 접근하는 데이터가 분할이 불가능한 경우 2 가지 방식에 의해 수행된다.FIG. 5 is a conceptual diagram for explaining an implementation method when data accessed by a virtualized GPU in a GPU virtualization system that can be converted to a variable number according to an embodiment of the present invention can not be divided. If the data accessed by the virtualized GPU can not be partitioned, it is performed in two ways.
첫째, GPU(10)의 MMU(13)를 이용한다, 도 1 의 GPU(10) 구조상에 MMU(13)가 있다면 MMU(13)의 기능을 이용해 공유 가상 메모리(Shared virtual memory)를 구현한다. 공유 가상 메모리(Shared virtual memory)가 구현된 일 실시예는 도 5 와 같다.First, the
GPU0{10(0)}에서 페이지 r 을 접근하려 할 때, GPU{10(0)}의 MMU{13(0)}는 해당 페이지가 자신의 local GPU 에 없다는 것을 인식한다.When attempting to access page r from GPU0 {10 (0)}, MMU {13 (0)} of GPU {10 (0)} recognizes that the page is not in its local GPU.
이 경우 해당 페이지를 마스터 노드(10)로부터 가져 온다.In this case, the corresponding page is fetched from the
만약 페이지를 수정하려 한다면, 이후에 수정된 내용을 찾기 위해 도 5 와 같이 도시된 GPU1{10(1)}와 같이 twin 페이지를 생성한다. 코드 수행이 완료된 후에 twin 페이지를 기반으로 수정한 데이터(diff)를 메인 메모리(3)에 반영한다.If the page is to be modified, a twin page is generated as shown in FIG. 5 as GPU1 {10 (1)} to find the modified contents. After the code execution is completed, the modified data (diff) based on the twin page is reflected in the
OpenCL(100a-5)이나 CUDA(100a-4)에는 커널 수행 중에 전체 스레드에 대한 동기화를 제공하지 않기 때문에, 커널의 수행이 종료된 후에 데이터(diff)를 마스터 노드(100a)에 반영함으로써, 모든 수정사항을 마스터 노드(100a)에서 합칠 수 있다. 이 프로토콜은 기존의 공유 가상 메모리(Shared virtual memory) 기술의 구현과 일치한다.Since the
둘째, 해당 코드를 CPU(2)에서 수행한다. 만약 MMU(13)가 없어 공유 가상 메모리를 제공할 수 없다면, 서로 다른 GPU 간의 메모리는 GPU 코드를 수행하면서 동기화할 수 없다. 그러므로 수행한 동작의 정확성을 보장할 수 없다. 다른 대안으로 에뮬레이터(110a-3)는 CPU(3)를 이용하여 해당 코드를 수행한다.
Second, the
이상과 같이, 본 명세서와 도면에는 본 발명의 바람직한 실시예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.As described above, preferred embodiments of the present invention have been disclosed in the present specification and drawings, and although specific terms have been used, they have been used only in a general sense to easily describe the technical contents of the present invention and to facilitate understanding of the invention , And are not intended to limit the scope of the present invention. It is to be understood by those skilled in the art that other modifications based on the technical idea of the present invention are possible in addition to the embodiments disclosed herein.
10: 실제 GPU
11: PE(Processing Element)
12: GPU 메모리(GPU Memory)
13: MMU(Memory Management Unit)
100a: 마스터 노드
100a-1: 하드웨어(Hardware)
100a-2: 운영체제(Operating System)
100a-3: GPU 가상 디바이스 드라이버(GPU virtual device driver)
110a-3: 에뮬레이터
120a-3: 디스패처
130a-3: 어낼라이저
100a-4: CUDA
100a-5: OpenCL
100a-6: CUDA App.
100a-7: OpenCL App.
100b: 슬레이브 노드
100b-3: GPU 디바이스 드라이버
100b-6: GPU 가상 서버(GPU virtual server)10: Actual GPU
11: PE (Processing Element)
12: GPU Memory (GPU Memory)
13: Memory Management Unit (MMU)
100a: master node
100a-1: Hardware
100a-2: Operating System (Operating System)
100a-3: GPU virtual device driver
110a-3: Emulator
120a-3: Dispatcher
130a-3:
100a-4: CUDA
100a-5: OpenCL
100a-6: CUDA App.
100a-7: OpenCL App.
100b: Slave node
100b-3: GPU device driver
100b-6: GPU virtual server
Claims (11)
병렬 컴퓨팅 프레임워크로부터 M 개(M 은 자연수)의 가상 GPU 에 대한 GPU 코드를 N 개(N 은 M 과 같거나 다른 자연수)의 실제 GPU 로 전달시키기 위한 형태로 변환하는 에뮬레이터; 및
상기 에뮬레이터에 의해 변환된 GPU 코드를 상기 N 개의 실제 GPU 로 전달하는 디스패처; 를 포함하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.A master node including a GPU virtual device driver for receiving a GPU code and transferring the GPU code to a slave node; And a plurality of cluster nodes divided into a slave node including a GPU virtual server for receiving the GPU code and being executed through an actual GPU, the GPU virtual device driver comprising:
An emulator for converting M (M is a natural number) virtual GPU code from a parallel computing framework into a form for transferring GPU code to N (N is a natural number equal to or different from M) actual GPU; And
A dispatcher for delivering the GPU code converted by the emulator to the N actual GPUs; Wherein the variable-number-convertible GPU virtualization system comprises:
상기 디스패처는,
상기 N 개의 실제 GPU 의 위치를 기억하고, 상기 기억된 실제 GPU 의 위치에 기초하여 상기 변환된 GPU 코드를 전달하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.The method according to claim 1,
The dispatcher comprising:
Wherein the location of the N actual GPUs is stored and the converted GPU code is delivered based on the location of the stored actual GPUs.
상기 GPU 가상 디바이스 드라이버는,
GPU 코드를 통해 사용하는 데이터에 대한 상기 실제 GPU 메모리로 분할 가능한지를 워크아이템 사이즈와 워크그룹 사이즈에 기초하여 분석하는 어낼라이저; 를 더 포함하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.3. The method of claim 2,
The GPU virtual device driver comprising:
An analyzer for analyzing, based on the work item size and the work group size, whether the GPU memory is divisible into the actual GPU memory for data used through the GPU code; The GPU virtualization system further comprising:
상기 어낼라이저는,
상기 GPU 코드를 통해 사용하는 데이터의 분할이 가능한 경우, 상기 에뮬레이터와 상기 디스패처를 통해 상기 N 개의 실제 GPU 로 분할된 GPU 코드의 전달이 수행되도록 하며,
상기 GPU 코드를 통해 사용하는 데이터의 분할이 가능하지 않은 경우, 공유 가상 메모리(Shared virtual memory) 방식 또는 CPU 수행 방식에 의해 분할이 가능하지 않는 GPU 코드가 수행되도록 하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.The method of claim 3,
The above-
The GPU code being divided into N actual GPUs through the emulator and the dispatcher when the data to be used through the GPU code can be divided,
A GPU code that is not divisible by a shared virtual memory method or a CPU execution method is executed when data to be used through the GPU code can not be divided, Possible GPU virtualization system.
상기 어낼라이저는,
상기 GPU 코드를 통해 사용하는 데이터에 대해 상기 N 개의 실제 GPU 에 분할되는 경우, 상기 N 개로 상기 워크그룹 사이즈(workgroup size)를 분할하여 상기 N 개의 실제 GPU 에 분배하여 실행시키는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.5. The method of claim 4,
The above-
Dividing the workgroup size into N pieces of the N actual GPUs for data to be used through the GPU code, and distributing the divided N pieces to the N actual GPUs, GPU virtualization system.
상기 어낼라이저는,
상기 GPU 코드를 통해 사용하는 데이터에 대해 상기 N 개의 실제 GPU 에 분할되지 않는 경우, 상기 실제 GPU 의 MMU 의 공유 가상 메모리(Shared virtual memory)를 이용한 상기 N 개의 실제 GPU 에서 겹치는 읽거나 쓰는 버퍼 영역에 대한 처리를 수행하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.6. The method of claim 5,
The above-
If the data to be used through the GPU code is not divided into the N actual GPUs, the N real GPUs using the shared virtual memory of the MMU of the actual GPU may read or write in overlapping buffer areas The GPU virtualization system comprising:
상기 마스터 노드는,
사용자에 의해 프로그램이 수행되는 노드이고,
상기 슬레이브 노드는,
상기 N 개의 실제 GPU 를 구비하여, GPU 연산을 수행하는 노드인 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.The method according to claim 1,
The master node,
A node where a program is executed by a user,
The slave node,
Wherein the GPU is a node that has the N actual GPUs and performs GPU operations.
상기 GPU 가상 디바이스 드라이버는,
병렬 컴퓨팅 프레임워크를 지원하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.The method according to claim 1,
The GPU virtual device driver comprising:
A variable number of convertible GPU virtualization system characterized by supporting a parallel computing framework.
상기 GPU 가상 서버와 상기 GPU 가상 디바이스 드라이버 간의 통신은 상기 마스터 노드와 상기 슬레이브 노드 간에 연결된 인터커넥션 네트워크(Interconnection Network)를 사용하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.The method according to claim 1,
Wherein the communication between the GPU virtual server and the GPU virtual device driver uses an interconnection network connected between the master node and the slave node.
M 개의 가상 GPU 로 구현하기 위한 GPU 코드를 수행시키는 노드인 마스터 노드; 및
상기 마스터 노드와 통신하여 상기 GPU 코드를 전달받으며, N 개의 실제 GPU 를 구비하여 GPU 연산을 수행하는 하나 이상의 슬레이브 노드; 를 포함하며,
상기 마스터 노드는, 워크아이템 사이즈와 워크그룹 사이즈에 기초하여 상기 GPU 코드를 통해 사용하는 데이터의 분배를 연산하는 어낼라이저를 포함하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.In a GPU virtualization system that performs GPU virtualization for GPU parallel processing,
A master node that executes a GPU code for implementing M virtual GPUs; And
One or more slave nodes communicating with the master node to receive the GPU code and having N actual GPUs to perform GPU operations; / RTI >
Wherein the master node comprises an analyzer for computing a distribution of data to be used over the GPU code based on a work item size and a work group size.
상기 마스터 노드는,
상기 어낼라이저에 의한 연산에 의해 상기 GPU 코드를 N 개의 슬레이브 노드를 위해 변환하도록 구성되는 에뮬레이터; 및
상기 변환된 GPU 코드를 상기 N 개의 상기 슬레이브 노드 각각으로 제공하도록 구성되는 디스패처; 를 더 포함하는 것을 특징으로 하는 가변적 개수로 변환 가능한 GPU 가상화 시스템.11. The method of claim 10,
The master node,
An emulator configured to convert the GPU code for N slave nodes by operation by the analyzer; And
A dispatcher configured to provide the converted GPU code to each of the N slave nodes; The GPU virtualization system further comprising:
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020130071605A KR101435772B1 (en) | 2013-06-21 | 2013-06-21 | Gpu virtualizing system |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020130071605A KR101435772B1 (en) | 2013-06-21 | 2013-06-21 | Gpu virtualizing system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR101435772B1 true KR101435772B1 (en) | 2014-08-29 |
Family
ID=51751616
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020130071605A Active KR101435772B1 (en) | 2013-06-21 | 2013-06-21 | Gpu virtualizing system |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR101435772B1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3385850A1 (en) * | 2017-04-07 | 2018-10-10 | INTEL Corporation | Apparatus and method for memory management in a graphics processing environment |
| KR20220035626A (en) * | 2020-09-14 | 2022-03-22 | 한화시스템 주식회사 | GPU resource management method and computing device for performing the same |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20060079088A (en) * | 2004-12-30 | 2006-07-05 | 마이크로소프트 코포레이션 | Systems and Methods for Virtualizing Graphics Subsystems |
| WO2012082423A1 (en) * | 2010-12-13 | 2012-06-21 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
| WO2012083012A1 (en) * | 2010-12-15 | 2012-06-21 | Advanced Micro Devices, Inc. | Device discovery and topology reporting in a combined cpu/gpu architecture system |
-
2013
- 2013-06-21 KR KR1020130071605A patent/KR101435772B1/en active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20060079088A (en) * | 2004-12-30 | 2006-07-05 | 마이크로소프트 코포레이션 | Systems and Methods for Virtualizing Graphics Subsystems |
| WO2012082423A1 (en) * | 2010-12-13 | 2012-06-21 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
| WO2012083012A1 (en) * | 2010-12-15 | 2012-06-21 | Advanced Micro Devices, Inc. | Device discovery and topology reporting in a combined cpu/gpu architecture system |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP3385850A1 (en) * | 2017-04-07 | 2018-10-10 | INTEL Corporation | Apparatus and method for memory management in a graphics processing environment |
| US10380039B2 (en) | 2017-04-07 | 2019-08-13 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
| EP3614270A1 (en) * | 2017-04-07 | 2020-02-26 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
| US10769078B2 (en) | 2017-04-07 | 2020-09-08 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
| US11360914B2 (en) | 2017-04-07 | 2022-06-14 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
| EP4109283A1 (en) * | 2017-04-07 | 2022-12-28 | INTEL Corporation | Apparatus and method for memory management in a graphics processing environment |
| US11768781B2 (en) | 2017-04-07 | 2023-09-26 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
| EP4325371A3 (en) * | 2017-04-07 | 2024-03-20 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
| KR20220035626A (en) * | 2020-09-14 | 2022-03-22 | 한화시스템 주식회사 | GPU resource management method and computing device for performing the same |
| KR102417882B1 (en) | 2020-09-14 | 2022-07-05 | 한화시스템 주식회사 | Method for managing gpu resources and computing device for executing the method |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5170782B2 (en) | Centralized device virtualization layer for heterogeneous processing units | |
| KR102074468B1 (en) | A computer cluster arragement for processing a computation task and method for operation thereof | |
| US20250355716A1 (en) | Techniques for configuring a processor to function as multiple, separate processors in a virtualized environment | |
| Burgio et al. | A software stack for next-generation automotive systems on many-core heterogeneous platforms | |
| US10324658B1 (en) | Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems | |
| JP2016541072A5 (en) | ||
| US20130187932A1 (en) | Para-virtualized asymmetric gpu processors | |
| CN103761139A (en) | General purpose computation virtualization implementation method based on dynamic library interception | |
| CN112817738B (en) | Techniques for modifying an executable graph to implement a workload associated with a new task graph | |
| CN116724292A (en) | Parallel processing of thread groups | |
| CN116243921A (en) | Techniques for Modifying Diagram Code | |
| CN118339538A (en) | Application programming interface for instructing graph node execution | |
| CN118043773A (en) | Operating on matrix operands without restriction of storage locations of the operands in memory | |
| CN112817739A (en) | Techniques for modifying executable graphs to implement different workloads | |
| KR101435772B1 (en) | Gpu virtualizing system | |
| CN113568734A (en) | Virtualization method and system based on multi-core processor, multi-core processor and electronic equipment | |
| CN118043786A (en) | Multi-pass performance analysis | |
| CN118302752A (en) | Application programming interface for controlling graph node execution | |
| Miliadis et al. | VenOS: A virtualization framework for multiple tenant accommodation on reconfigurable platforms | |
| Cabezas et al. | Runtime and architecture support for efficient data exchange in multi-accelerator applications | |
| CN114281529B (en) | Method, system and terminal for dispatching optimization of distributed virtualized client operating system | |
| Moore et al. | VForce: An environment for portable applications on high performance systems with accelerators | |
| CN117853306A (en) | Generating and inserting an interpolated frame with an application frame for display | |
| Alyas et al. | Gpgpu virtualization techniques a comparative survey | |
| US9547522B2 (en) | Method and system for reconfigurable virtual single processor programming model |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R13-asn-PN2301 St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R13-asn-PN2301 St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| FPAY | Annual fee payment |
Payment date: 20170724 Year of fee payment: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R14-asn-PN2301 |
|
| P14-X000 | Amendment of ip right document requested |
St.27 status event code: A-5-5-P10-P14-nap-X000 |
|
| P16-X000 | Ip right document amended |
St.27 status event code: A-5-5-P10-P16-nap-X000 |
|
| Q16-X000 | A copy of ip right certificate issued |
St.27 status event code: A-4-4-Q10-Q16-nap-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R13-asn-PN2301 St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 6 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 7 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R13-asn-PN2301 St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 8 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 9 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 10 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 11 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| R18 | Changes to party contact information recorded |
Free format text: ST27 STATUS EVENT CODE: A-5-5-R10-R18-OTH-X000 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |