KR20130080721A - Host node and memory management method for cluster system based on parallel computing framework - Google Patents
Host node and memory management method for cluster system based on parallel computing framework Download PDFInfo
- Publication number
- KR20130080721A KR20130080721A KR1020120001689A KR20120001689A KR20130080721A KR 20130080721 A KR20130080721 A KR 20130080721A KR 1020120001689 A KR1020120001689 A KR 1020120001689A KR 20120001689 A KR20120001689 A KR 20120001689A KR 20130080721 A KR20130080721 A KR 20130080721A
- Authority
- KR
- South Korea
- Prior art keywords
- calculation module
- command
- parallel computing
- calculation
- host
- Prior art date
Links
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
Description
병렬 컴퓨팅 프레임워크(Parallel Computing Framework) 기술과 관련된다.Related to the Parallel Computing Framework technology.
병렬 컴퓨팅이란 동시에 다수의 계산을 하는 연산의 한 방법을 말한다. 병렬 컴퓨팅은 크고 복잡한 문제를 작게 나누어 동시에 병렬적으로 해결하는 데에 주로 사용된다. 병렬 컴퓨팅에는 여러 방법과 종류가 존재한다. 그 예로, 비트 수준, 명령어 수준, 데이터, 작업 병렬 처리 방식 등이 있다. 병렬 컴퓨팅은 오래전부터 주로 고성능 연산에 이용되어 왔으며, 프로세서 주파수의 물리적인 한계에 다가가면서 문제 의식이 높아진 이후에 더욱 주목받게 되었다. 최근 컴퓨터 이용에서 발열과 전력 소모에 대한 관심이 높아지는 것과 더불어 멀티 코어 프로세서를 핵심으로 컴퓨터 구조에서 강력한 패러다임으로 주목받게 되었다.Parallel computing is a method of operation that performs many computations at the same time. Parallel computing is often used to solve large and complex problems in parallel and solve them in parallel. There are many ways and kinds of parallel computing. Examples include bit level, instruction level, data, and task parallelism. Parallel computing has long been used primarily for high-performance computing, and has come to the fore since the problem consciousness has increased as the physical limits of processor frequencies have been approached. In recent years, with the growing interest in heat generation and power consumption in computer use, it has attracted attention as a powerful paradigm in computer architecture with a multi-core processor as the core.
병렬 컴퓨팅을 위한 대표적인 프레임워크로는 OpenCL이 있다. OpenCL은 여러 CPU, GPU 및 기타 프로세서 등으로 이루어진 다중 플랫폼에서 구동해야 하는 데이터 및 태스크 병렬성을 갖는 프로그램을 작성할 수 있게 해 주는 프레임워크이다. OpenCL은 C99에 기반한 새로운 언어를 포함하고 있다. 이 언어를 가지고 혼성 플랫폼을 정의하고 제어할 수 있는 커널, API 등을 작성할 수 있다. OpenCL은 임무 기반 병렬 또는 데이터 기반 병렬 컴퓨팅을 제공한다.The representative framework for parallel computing is OpenCL. OpenCL is a framework that allows you to write programs with data and task parallelism that must run on multiple platforms with multiple CPUs, GPUs, and other processors. OpenCL includes a new language based on C99. With this language you can write kernels, APIs, and so on that define and control hybrid platforms. OpenCL provides mission-based parallel or data-based parallel computing.
통상적으로 OpenCL은 단일 노드 시스템을 위한 것이다. 그러나 최근에는 다수의 노드를 갖는 클러스터 시스템이 주목을 받고 있는데, OpenCL은 이러한 클러스터 환경에서 동작하지 않는 문제가 있다. 즉 클러스터 환경에서 OpenCL을 위한 어플리케이션을 작성하려면, 사용자가 직접 네트워크를 위한 메시지 프로그래밍 라이브러리를 사용해야만 하는 불편함이 있다. 이것은 어플리케이션 작성을 어렵게 만든다. 나아가 이와 같이 사용자가 직접 코드를 추가한 OpenCL 어플리케이션은 정작 단일 노드 시스템에는 동작하지 아니할 수도 있다.Typically OpenCL is for single node systems. Recently, however, a cluster system having a large number of nodes has attracted attention, and OpenCL does not work in such a cluster environment. In other words, in order to write an application for OpenCL in a cluster environment, it is inconvenient for a user to use a message programming library for a network. This makes writing an application difficult. Furthermore, OpenCL applications with user-added code may not work on a single node system.
병렬 컴퓨팅 프레임워크가 효과적으로 동작할 수 있는 클러스터 시스템의 호스트 노드 및 이러한 시스템을 위한 메모리 관리 방법이 제시된다.A host node of a cluster system in which the parallel computing framework can operate effectively and a memory management method for such a system are presented.
본 발명의 일 양상에 따른 호스트 노드는, 병렬 컴퓨팅 프레임워크를 위한 호스트 프로그램을 실행하고, 병렬 컴퓨팅 프레임워크를 위한 커널 프로그램과 관련된 커맨드를 커맨드 큐에 삽입하는 호스트 스레드, 커맨드 큐를 스케줄링하여 실행될 커맨드를 선택하고, 선택된 커맨드의 실행을 요청하는 요청메시지를 생성하고, 커맨드를 실행할 계산 모듈이 포함된 계산 노드로 생성된 요청메시지를 네트워크를 통해 전송하는 커맨드 스케줄러, 및 선택된 커맨드를 실행할 계산 모듈인 제 1 계산 모듈이 선택된 커맨드가 사용하는 버퍼 객체를 가지고 있는지 여부를 판단하고, 그 판단 결과에 따라, 제 1 계산 모듈과 다른 계산 모듈인 제 2 계산 모듈의 버퍼 객체를 제 1 계산 모듈로 복사하는 메모리 관리부를 포함할 수 있다.A host node according to an aspect of the present invention is a host thread for executing a host program for a parallel computing framework, and inserting a command related to a kernel program for the parallel computing framework into a command queue, a command to be executed by scheduling a command queue. A command scheduler for generating a request message requesting execution of the selected command, transmitting a generated request message over the network to a calculation node including a calculation module to execute the command, and a calculation module for executing the selected command. 1. A memory for determining whether a calculation module has a buffer object used by a selected command, and according to the determination result, a memory for copying a buffer object of a second calculation module, which is a different calculation module from the first calculation module, to the first calculation module. It may include a management unit.
또한 본 발명의 일 양상에 따른 메모리 관리 방법은, 병렬 컴퓨팅 프레임워크를 위한 호스트 프로그램을 실행하고, 병렬 컴퓨팅 프레임워크를 위한 커널 프로그램과 관련된 커맨드를 커맨드 큐에 삽입하는 단계, 커맨드 큐를 스케줄링하여 실행될 커맨드를 선택하는 단계, 선택된 커맨드를 실행할 계산 모듈인 제 1 계산 모듈이 선택된 커맨드가 사용하는 버퍼 객체를 가지고 있는지 여부를 판단하고, 판단 결과에 따라, 제 1 계산 모듈과 다른 계산 모듈인 제 2 계산 모듈의 버퍼 객체를 제 1 계산 모듈로 복사하는 단계, 및 선택된 커맨드의 실행을 요청하는 요청메시지를 생성하고, 생성된 요청메시지를 네트워크를 통해 제 1 계산 모듈이 포함된 계산 노드로 전송하는 단계를 포함할 수 있다.In addition, the memory management method according to an aspect of the present invention, executing a host program for the parallel computing framework, inserting a command related to the kernel program for the parallel computing framework to the command queue, scheduling the command queue to be executed Selecting a command, determining whether the first calculation module, which is the calculation module to execute the selected command, has a buffer object used by the selected command, and according to the determination result, a second calculation that is a calculation module different from the first calculation module; Copying the buffer object of the module to the first calculation module, generating a request message requesting execution of the selected command, and transmitting the generated request message to the calculation node including the first calculation module via a network. It may include.
클러스터 환경의 호스트 노드와 계산 노드가 메시지를 주고 받으면서 병렬 컴퓨팅 프로그래밍 모델의 어플리케이션을 실행하기 때문에, 사용자가 직접 어플리케이션에 MPI(message passing interface)와 같은 코드를 추가해야만 하는 불편함이 해소된다. 따라서 어플리케이션의 버그 발생률을 줄이고, 프로그래머의 생산성과 병렬 컴퓨팅 프레임워크의 이식성을 높일수가 있다.Since the host node and the compute node in the cluster environment send and receive messages to execute an application of the parallel computing programming model, the inconvenience of having to add code such as a message passing interface (MPI) directly to the application is eliminated. This reduces application bugs and increases programmer productivity and portability of parallel computing frameworks.
또한 병렬 컴퓨팅 프레임워크 기반의 클러스터 환경에서, 계산 모듈 리스트를 이용하여 커맨드를 실행할 계산 모듈이 그 커맨드가 사용하는 버퍼 객체를 보유하고 있는지 미리 판단한 후 그에 따라 다른 계산 모듈의 버퍼 객체가 해당 계산 모듈로 복사되기 때문에, 효율적인 메모리 관리를 보장할 수가 있다.In addition, in a cluster environment based on a parallel computing framework, a calculation module list is used to determine in advance whether a calculation module that executes a command has a buffer object used by the command, and then buffer objects of another calculation module are transferred to the calculation module. Since it is copied, efficient memory management can be guaranteed.
도 1은 본 발명의 일 실시예에 따른 클러스터 시스템의 구성을 도시한다.
도 2는 본 발명의 일 실시예에 따른 클러스터 시스템의 호스트 노드 및 계산 노드의 구성을 도시한다.
도 3은 본 발명의 일 실시예에 따른 클러스터 시스템의 메모리 관리 방법을 도시한다.1 illustrates a configuration of a cluster system according to an embodiment of the present invention.
2 illustrates a configuration of a host node and a compute node of a cluster system according to an embodiment of the present invention.
3 illustrates a memory management method of a cluster system according to an embodiment of the present invention.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다. Hereinafter, specific examples for carrying out the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 일 실시예에 따른 클러스터 시스템의 구성을 도시한다. 1 illustrates a configuration of a cluster system according to an embodiment of the present invention.
도 1을 참조하면, 본 실시예에 따른 클러스터 시스템(cluster system)(100)은 호스트 노드(101) 및 다수의 계산 노드(102a, 102b, 102n)를 포함한다. 호스트 노드(101)와 각각의 계산 노드(102a, 102b, 102n)는 네트워크(103)를 통해 연결된다. 네트워크(103)는 유선 또는 무선 네트워크가 될 수 있다. 호스트 노드(101)와 계산 노드(102a, 102b, 102n)는 네트워크 메시지를 통해 정보를 주고 받는 것이 가능하다. 네트워크 메시지는 LAN, IPv4, IPv6 패킷과 같은 형태를 가질 수 있다. Referring to FIG. 1, the
클러스터 시스템(100)은 병렬 컴퓨팅 프레임워크를 토대로 형성된다. 다시 말해, 본 실시예에 따른 병렬 컴퓨팅 프레임워크는 클러스터 시스템(100)에서 동작하는 것이 가능하다. 클러스터 시스템(100)의 병렬 컴퓨팅 프레임워크로는 OpenCL, OpenMP, 및 CUDA 등이 사용될 수 있다.
클러스터 시스템(100)의 병렬 컴퓨팅 프레임워크를 위한 어플리케이션은 호스트 프로그램과 커널 프로그램으로 구성될 수 있다. 호스트 프로그램은 커널 프로그램이 실행되도록 커널 프로그램을 관리하는 부분이고, 커널 프로그램은 데이터 연산이 처리되는 부분이 될 수 있다. 일 양상에 따라, 호스트 프로그램은 호스트 노드(101)에서 실행되고, 커널 프로그램은 계산 노드(102a, 102b, 102n)에서 실행될 수 있다. An application for the parallel computing framework of the
호스트 노드(101)는 호스트 프로그램을 실행한다. 호스트 노드(101)는 병렬 컴퓨팅 프로그래밍 툴을 통해 작성된 어플리케이션의 호스트 프로그램을 실행하여 커널 프로그램의 실행을 관리할 수 있다. 예를 들어, 호스트 노드(101)는 커널 프로그램과 관련된 커맨드를 이용하여 커맨드 실행을 요청하는 요청메시지를 생성하고, 생성된 요청메시지를 네트워크(103)를 통해 계산 노드(102a, 102b, 102n)로 전송하는 것이 가능하다. The
계산 노드(102a, 102b, 102n)는 커널 프로그램을 실행한다. 호스트 노드(101)로부터 커맨드 실행을 요청하는 요청메시지를 수신한 계산 노드(예컨대, 102a)는 요청메시지에 따라 커맨드를 실행하고, 커맨드 실행의 완료를 알리는 완료메시지를 생성하고, 생성된 완료메시지를 네트워크(103)를 통해 호스트 노드(101)로 전송하는 것이 가능하다.
도 2는 본 발명의 일 실시예에 따른 클러스터 시스템의 호스트 노드 및 계산 노드의 구성을 도시한다. 2 illustrates a configuration of a host node and a compute node of a cluster system according to an embodiment of the present invention.
도 2를 참조하면, 호스트 노드(220)는 호스트 스레드(221), 커맨드 스케줄러(222), 커맨드-큐(223a~223f), 이슈-큐(224), 및 완료-큐(225)를 포함할 수 있다. Referring to FIG. 2, the
호스트 스레드(221)는 호스트 프로그램을 실행한다. The
호스트 스레드(221)는 커맨드-큐(223a~223f)에 커맨드를 삽입한다. 각각의 커맨드-큐(223a~223f)는 계산 노드(240, 240b)의 각 계산 모듈(241a, 241b, 241c, 241d)에 대응될 수 있다. 예컨대, 제 1 커맨드-큐 그룹(226) 내의 제 1 커맨드-큐(223a)는 제 1 계산 노드(240) 내의 계산 모듈 #1(241a)에 매핑될 수 있다. 커맨드는 계산 노드(240)에서 실행될 커널 프로그램과 관련된 각종 연산이 될 수 있다. 다시 말해, 호스트 스레드(221)는 커널 프로그램과 관련된 커맨드를 실행할 계산 노드(240) 및 계산 모듈(241a)를 결정하고, 결정된 계산 노드(240) 및 계산 모듈(241a)에 대응되는 커맨드-큐(223a)에 커맨드를 넣는 것이 가능하다. The
커맨드 스케줄러(222)는 커맨드-큐(223a~223f)를 스케줄링한다. 스케줄 정책으로는 라운드-로빈 방식이 사용될 수 있으나, 응용 목적에 따라 다양한 스케줄 정책이 적용될 수 있음은 물론이다. 예컨대, 커맨드 스케줄러(222)는 정해진 스케줄 정책에 따라 실행될 커맨드를 선택하고, 선택된 커맨드를 커맨드-큐(223a~223f)에서 꺼낼 수 있다.
커맨드 스케줄러(222)는 선택된 커맨드를 이용하여 요청메시지를 생성한다. 요청메시지란 네트워크를 통해 전송되는 패킷 형태의 메시지로서 선택된 커맨드의 실행을 요청하는 메시지가 될 수 있다. 예컨대, 커맨드 스케줄러(222)는 선택된 커맨드의 커맨드-큐(223a)에 매핑된 계산 노드(240) 및 계산 모듈(241a)을 주소 필드 및 커맨드의 명세(description) 필드를 갖는 패킷 데이터를 생성할 수 있다. The
커맨드 스케줄러(222)는 생성된 요청메시지를 네트워크(260)를 통해 계산 노드(240)로 전송한다. The
메모리 관리부(280)는 커맨드 스케줄러(222)에 의해 선택된 커맨드를 실행할 계산 모듈(이하, '실행 계산 모듈'이라 함)(예컨대, 241a)이 선택된 커맨드가 사용하는 버퍼 객체(이하, '필요 버퍼 객체'라 함)를 가지고 있는지 여부를 판단한다. The
버퍼 객체란 병렬 컴퓨팅 프레임워크를 위한 어플리케이션이 사용하는 추상화된 메모리 영역으로 정의될 수 있다. 이 버퍼 객체는 특정한 메모리에 종속되지 않고 여러 메모리에 매핑될 수 있다. 따라서 여러 계산 모듈(241a, 241b, 241c, 241d)이 하나의 버퍼 객체를 공유하는 것이 가능하다. 필요 버퍼 객체란 실행 계산 모듈이 커맨드를 실행하기 위해 필요한 버퍼 객체가 될 수 있다. A buffer object may be defined as an abstracted memory area used by an application for a parallel computing framework. This buffer object can be mapped to multiple memories without being dependent on a particular memory. Therefore, it is possible for several calculation modules 241a, 241b, 241c, and 241d to share one buffer object. A required buffer object may be a buffer object required for an execution calculation module to execute a command.
메모리 관리부(280)는 소정의 계산 모듈 리스트를 이용하여 실행 계산 모듈(241a)의 필요 버퍼 객체 보유 여부를 판단할 수 있다. 계산 모듈 리스트는 각각의 버퍼 객체 별로 그 버퍼 객체에 관한 최신 데이터를 보유하고 있는 계산 모듈이 리스트 형태로 구성된 것을 말한다. 메모리 관리부(280)는 필요 버퍼 객체의 계산 모듈 리스트에 실행 계산 모듈(241a)이 존재하는지 여부에 따라, 실행 계산 모듈이 필요 버퍼 객체를 보유하고 있는지 여부를 판단할 수 있다. The
판단 결과, 실행 계산 모듈(241a)이 필요 버퍼 객체를 보유하고 있지 아니한 경우, 메모리 관리부(280)는 필요 버퍼 객체를 보유하고 있는 다른 계산 모듈(예컨대, 241b)을 검색하고, 검색된 계산 모듈(241b)로부터 필요 버퍼 객체를 복사하여 이를 실행 계산 모듈(241a)의 메모리에 기록할 수 있다. 필요 버퍼 객체를 보유하고 있는 다른 계산 모듈(241b)은 필요 버퍼 객체의 계산 모듈 리스트에 존재하는 계산 모듈 중 어느 하나가 될 수 있다. As a result of determination, when the execution calculation module 241a does not hold the required buffer object, the
일 양상에 따라, 계산 장치 리스트에 복수개의 계산 모듈이 존재한다면, 다음과 같은 우선순위로 데이터를 복사할 계산 모듈을 선택할 수 있다. According to one aspect, if there are a plurality of calculation modules in the calculation device list, it is possible to select a calculation module to copy the data in the following priority order.
1. 같은 노드의 CPU1. CPU on the same node
2. 같은 노드의 GPU2. GPU on same node
3. 다른 노드의 CPU3. CPU on another node
4. 다른 노드의 GPU4. GPUs on other nodes
이는 네트워크상에서의 데이터 이동은 노드간 메인 메모리간의 이동만이 가능하기 때문이다. 따라서 한 노드의 GPU에서 다른 노드의 GPU로 메모리를 이동하려고 한다면, 이동하고자 하는 GPU 메모리에서 노드의 메인 메모리로 데이터를 복사한 후, 네트워크를 통해 다른 노드의 메인 메모리로 데이터를 복사한다. 그 후, 데이터를 받은 노드의 메인 메모리로부터 GPU 메모리로 복사해야 한다. 이러한 추가적인 복사 비용을 줄이기 위해 CPU 계산 장치를 우선하는 것이 바람직하다. This is because data movement on the network can only be performed between nodes and main memory. Therefore, if you want to move memory from one node's GPU to another node's GPU, copy the data from the GPU memory to move to the node's main memory and then copy the data to the other node's main memory over the network. After that, the data must be copied from the node's main memory to the GPU memory. It is desirable to prioritize the CPU computing device to reduce this additional copying cost.
또한 메모리 관리부(280)는 필요 버퍼 객체가 실행 계산 모듈로 복사된 경우, 실행 계산 모듈을 계산 모듈 리스트에 추가할 수 있다. 추가적 양상에 따라, 메모리 관리부(280)는 이후 버퍼 객체가 수정되면, 그 버퍼 객체의 계산 모듈 리스트를 클리어(clear)한 후에, 그 버퍼 객체를 수정한 계산 모듈(예컨대, 241a)을 계산 모듈 리스트에 추가할 수도 있다. 메모리 관리부(280)는 커널 소스(예컨대, OpenCL 커널 소스)를 분석해서 어떤 커맨드(또는 어떤 커널)가 어떤 버퍼 객체를 수정하는지 알아낼 수 있다.In addition, the
도 2에서, 스케줄러(222)에 의해 선택된 커맨드가 제 1 커맨드 큐(223a)에 있는 커맨드이고, 이 커맨드를 실행할 계산 모듈은 계산 모듈 #1(241a)이라고 가정하자. 또한 선택된 커맨드가 사용하는 버퍼 객체 'A'에 관한 계산 모듈 리스트에 계산 모듈 #2(241b) 및 계산 모듈 #3(241c)이 존재한다고 가정하자. 메모리 관리부(280)는 버퍼 객체 A에 관한 계산 모듈 리스트에 계산 모듈 #1(241a)이 있는지 여부를 판단한다. 만약 버퍼 객체 A에 관한 계산 모듈 리스트에 계산 모듈 #1(241a)이 있다면, 커맨드 스케줄러(222)는 계산 모듈 #1(241a)로 요청메시지를 전송한다. 만약 버퍼 객체 A에 관한 계산 모듈 리스트에 계산 모듈 #1(241a)이 없다면, 메모리 관리부(280)는 그 계산 모듈 리스트에 있는 다른 계산 모듈 #2(241b) 또는 계산 모듈 #3(241c)으로부터 해당 버퍼 객체를 계산 모듈 #1(241a)에 복사한다. 이후 커맨드 스케줄러(222)는 계산 모듈 #1(241a)로 요청메시지를 전송한다. In FIG. 2, assume that the command selected by the
일 양상에 따라, 커맨드 스케줄러(222)는 실행 계산 모듈에 필요 버퍼 객체가 존재하지 않는 경우, 메모리 관리부(280)에 의해 필요 버퍼 객체가 실행 계산 모듈로 복사된 이후에 요청메시지를 생성할 수 있다. According to an aspect, the
또 다른 양상에 따라, 커맨드 스케줄러(222)는 전송된 요청메시지에 대응되는 커맨드를 이슈-큐(224)에 저장하고, 계산 노드(240)의 응답을 기다릴 수 있다. 만약 계산 노드(240)가 커맨드 실행의 완료를 응답하면, 커맨드 스케줄러(222)는 이슈-큐(224)에 저장되어 있던 커맨드를 빼서 완료-큐(225)로 옮길 수가 있다.According to another aspect, the
또한, 도 2에서 계산 노드(240)는 다수의 계산 모듈(241a, 241b, 241c, 241d), 커맨드 핸들러(242), 다수의 준비-큐(243a, 243b, 243c, 243d), 및 다수의 모듈 스레드(244a, 244b, 244c, 244d)를 포함할 수 있다. In addition, in FIG. 2, the
각각의 계산 모듈(241a, 241b, 241c, 241d)은 CPU, GPU 등과 같이 데이터를 연산 및 처리하는 디바이스가 될 수 있다. Each calculation module 241a, 241b, 241c, and 241d may be a device for computing and processing data, such as a CPU and a GPU.
커맨드 핸들러(242)는 네트워크(260)를 통해 호스트 노드(220)로부터 요청메시지를 수신한다. The
커맨드 핸들러(242)는 수신된 요청메시지에 따라 커맨드 객체를 생성하고, 생성된 커맨드 객체를 준비-큐(243a, 243b, 243c, 243d)에 넣는다. 준비-큐(243a, 243b, 243c, 243d)는 각 계산 모듈(241a, 241b, 241c, 241d)에 대응된다. 따라서 요청메시지에 따라 제 1 계산 모듈(241a)에서 커맨드가 실행되는 것으로 결정되었다면, 커맨드 객체는 제 1 계산 모듈(241a)의 준비-큐(243a)로 삽입될 수 있다. The
모듈 스레드(244a, 244b, 244c, 244d)는 준비-큐(243a, 243b, 243c, 243d)에 삽입된 커맨드 객체와 계산 모듈(241a, 241b, 241c, 241d)을 이용하여 커맨드를 실행한다. 예컨대, 위 예에서, 제 1 계산 모듈(241a)의 모듈 스레드(244a)가 준비-큐(243a)에서 커맨드 객체를 빼서 이를 바탕으로 제 1 계산 모듈(241a)에서 커맨드가 처리되도록 하는 것이 가능하다. The
일 양상에 따라, 모듈 스레드(244a, 244b, 244c, 244d)는 커맨드 실행이 완료되면, 완료된 커맨드를 완료-큐(245)에 삽입할 수 있다.According to one aspect, the
추가적 양상에 따라, 커맨드 핸들러(242)는 완료-큐(245)에 있는 커맨드를 이용하여 커맨드 실행의 완료를 알리는 완료메시지를 생성하고, 생성된 완료메시지를 네트워크(260)를 통해 호스트 노드(220)로 전송하는 것이 가능하다. According to a further aspect, the
도 2에서 도시된 각각의 구성은 전기 회로 및/또는 하드웨어의 형태로 구현되거나, 또는 소정의 프로세서(processor)에서 실행되는 어플리케이션 프로그램(application program) 등의 형태로 구현될 수 있다. 또한 각 구성의 구분은 단지 그 기능에 따른 논리적인 구분의 일례이다. 따라서 도 2에서 도시된 것과 다른 기준에 따라서 그 기능들이 구분될 수도 있다. 다시 말해, 둘 이상의 기능 유닛이 하나의 기능 유닛으로 통합되거나, 어느 하나의 기능 유닛에서 수행되는 기능의 일부가 하나 또는 그 이상의 다른 기능 유닛에서 수행될 수도 있다.Each configuration illustrated in FIG. 2 may be implemented in the form of electrical circuits and / or hardware, or may be implemented in the form of an application program executed in a predetermined processor. In addition, the division of each structure is only an example of the logical division according to the function. Therefore, the functions may be distinguished according to different criteria from those shown in FIG. 2. In other words, two or more functional units may be integrated into one functional unit, or some of the functions performed in one functional unit may be performed in one or more other functional units.
도 3은 본 발명의 일 실시예에 따른 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 메모리 관리 방법을 도시한다. 이것은 도 2의 호스트 노드에 의해 수행될 수 있다. 3 illustrates a memory management method of a parallel computing framework based cluster system according to an embodiment of the present invention. This can be done by the host node of FIG.
도 2 및 도 3을 참조하면, 본 실시예에 따른 메모리 관리 방법에 따라, 먼저 병렬 컴퓨팅 프레임워크를 위한 호스트 프로그램을 실행하고 병렬 컴퓨팅 프레임워크를 위한 커널 프로그램과 관련된 커맨드가 커맨드 큐에 삽입된다(301). 예컨대, 호스트 스레드(221)가 커맨드를 커맨드 큐(223a)에 넣는 것이 가능하다. 2 and 3, according to the memory management method according to the present embodiment, a host program for the parallel computing framework is first executed, and commands related to the kernel program for the parallel computing framework are inserted into the command queue ( 301). For example, it is possible for the
그리고 커맨드 큐의 스케줄링에 따라 실행될 커맨드가 선택된다(302). 예컨대, 커맨드 스케줄러(222)가 소정의 스케줄 정책에 따라 커맨드 큐(223a)에 있는 커맨드를 선택하는 것이 가능하다. The command to be executed is selected according to the scheduling of the command queue (302). For example, it is possible for the
그리고 선택된 커맨드를 실행할 계산 모듈이 해당 커맨드가 사용하는 버퍼 객체를 가지고 있느지 여부가 판단된다(303). 예컨대, 메모리 관리부(280)가 버퍼 객체별 계산 모듈 리스트를 이용하여 해당 버퍼 객체의 계산 모듈 리스트에 해당 계산 모듈이 존재하는지 여부를 판단할 수 있다. 만약 선택된 커맨드를 실행할 계산 모듈(예컨대, 241a)이 해당 버퍼 객체를 보유하고 있지 아니한 경우, 계산 모듈 리스트에 존재하는 다른 계산 모듈(예컨대, 241b)의 버퍼 객체를, 선택된 커맨드를 실행할 계산 모듈(241a)의 메모리로 복사하고, 그 계산 모듈 리스트에 선택된 커맨드를 실행할 계산 모듈(241a)을 추가한다(304). In
그리고 선택된 커맨드의 실행을 요청하는 요청메시지가 해당 계산 노드로 전송된다(305). 예컨대, 커맨드 스케줄러(222)가 선택된 커맨드의 실행을 요청하는 요청메시지를 생성하고, 생성된 요청메시지를 네트워크를 통해 전송하는 것이 가능하다. A request message requesting execution of the selected command is transmitted to the corresponding calculation node (305). For example, the
이상에서 살펴본 것과 같이, 개시된 실시예들에 의하면, 병렬 컴퓨팅 프레임워크 기반의 클러스터 환경에서, 계산 모듈 리스트를 이용하여 커맨드를 실행할 계산 모듈이 그 커맨드가 사용하는 버퍼 객체를 보유하고 있는지 미리 판단한 후 그에 따라 다른 계산 모듈의 버퍼 객체가 해당 계산 모듈로 복사되기 때문에, 효율적인 메모리 관리를 보장할 수가 있다. As described above, according to the disclosed embodiments, in a cluster environment based on a parallel computing framework, a calculation module that executes a command is determined in advance using a calculation module list to determine whether the calculation module holds a buffer object used by the command. As a result, the buffer objects of other calculation modules are copied to the corresponding calculation module, thereby ensuring efficient memory management.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.Meanwhile, the embodiments of the present invention can be embodied as computer readable codes on a computer readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.Examples of the computer-readable recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device and the like, and also a carrier wave (for example, transmission via the Internet) . In addition, the computer-readable recording medium may be distributed over network-connected computer systems so that computer readable codes can be stored and executed in a distributed manner. In addition, functional programs, codes, and code segments for implementing the present invention can be easily deduced by programmers skilled in the art to which the present invention belongs.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.Further, the embodiments described above are intended to illustrate the present invention, and the scope of the present invention is not limited to the specific embodiments.
220: 호스트 노드
221: 호스트 스레드
222: 커맨드 스케줄러
240: 계산 노드
241: 계산 모듈
242: 커맨드 핸들러
244: 모듈 스레드
260: 네트워크
280: 메모리 관리부220: host node
221: host thread
222: command scheduler
240: compute node
241: calculation module
242: command handler
244: module thread
260: network
280: memory management unit
Claims (8)
상기 커맨드 큐를 스케줄링하여 실행될 커맨드를 선택하고, 선택된 커맨드의 실행을 요청하는 요청메시지를 생성하고, 상기 커맨드를 실행할 계산 모듈이 포함된 계산 노드로 상기 생성된 요청메시지를 네트워크를 통해 전송하는 커맨드 스케줄러; 및
상기 선택된 커맨드를 실행할 계산 모듈인 제 1 계산 모듈이 상기 선택된 커맨드가 사용하는 버퍼 객체를 가지고 있는지 여부를 판단하고, 그 판단 결과에 따라, 상기 제 1 계산 모듈과 다른 계산 모듈인 제 2 계산 모듈의 버퍼 객체를 상기 제 1 계산 모듈로 복사하는 메모리 관리부; 를 포함하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
A host thread that executes a host program for the parallel computing framework and inserts commands related to the kernel program for the parallel computing framework into a command queue;
The command scheduler selects a command to be executed by scheduling the command queue, generates a request message requesting execution of the selected command, and transmits the generated request message via a network to a calculation node including a calculation module to execute the command. ; And
It is determined whether the first calculation module which is the calculation module to execute the selected command has a buffer object used by the selected command, and according to the determination result, the second calculation module which is a calculation module different from the first calculation module. A memory manager to copy a buffer object to the first calculation module; Host node of the parallel computing framework-based cluster system comprising a.
각각의 버퍼 객체 별로, 그 버퍼 객체에 관한 최신 데이터를 보유하고 있는 계산 모듈로 구성된 계산 모듈 리스트를 생성 및 관리하는 것을 특징으로 하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
The apparatus of claim 1, wherein the memory management unit
A host node of the parallel computing framework-based cluster system, which generates and manages a calculation module list composed of calculation modules holding the latest data on the buffer objects for each buffer object.
상기 계산 모듈 리스트를 이용하여 상기 제 1 계산 모듈이 상기 버퍼 객체를 가지고 있는지 여부를 판단하는 것을 특징으로 하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
The memory manager of claim 2, wherein the memory manager
And determining whether the first calculation module has the buffer object by using the calculation module list.
상기 제 1 계산 모듈이 상기 계산 모듈 리스트에 존재하지 않는 경우,
상기 제 2 계산 모듈의 버퍼 객체를 상기 제 1 계산 모듈로 복사하고, 상기 제 1 계산 모듈을 상기 계산 모듈 리스트에 추가하는 것을 특징으로 하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
The memory manager of claim 3, wherein the memory manager
If the first calculation module is not in the calculation module list,
And copy the buffer object of the second computation module to the first computation module and add the first computation module to the computation module list.
상기 버퍼 객체가 수정되면, 그 버퍼 객체의 계산 모듈 리스트를 클리어(clear)한 후에, 그 버퍼 객체를 수정한 계산 모듈을 계산 모듈 리스트에 추가하는 것을 특징으로 하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
The memory manager of claim 2, wherein the memory manager
When the buffer object is modified, the host of the parallel computing framework-based cluster system, after clearing the calculation module list of the buffer object, adds the calculation module that modified the buffer object to the calculation module list. Node.
상기 제 1 계산 모듈이 상기 버퍼 객체를 보유하고 있지 아니한 경우,
상기 제 2 계산 모듈의 버퍼 객체가 상기 제 1 계산 모듈로 복사된 이후에 상기 요청메시지를 전송하는 것을 특징으로 하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
The method of claim 1, wherein the command scheduler is
If the first calculation module does not hold the buffer object,
And host the request message after the buffer object of the second computing module is copied to the first computing module.
상기 병렬 컴퓨팅 프레임워크를 위한 어플리케이션이 사용하는 추상화된 메모리 영역으로 정의되는 것을 특징으로 하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드.
The method of claim 1, wherein the buffer object
Host node of the parallel computing framework based cluster system, characterized in that it is defined as an abstracted memory area used by the application for the parallel computing framework.
상기 커맨드 큐를 스케줄링하여 실행될 커맨드를 선택하는 단계;
상기 선택된 커맨드를 실행할 계산 모듈인 제 1 계산 모듈이 상기 선택된 커맨드가 사용하는 버퍼 객체를 가지고 있는지 여부를 판단하고, 판단 결과에 따라, 상기 제 1 계산 모듈과 다른 계산 모듈인 제 2 계산 모듈의 버퍼 객체를 상기 제 1 계산 모듈로 복사하는 단계; 및
상기 선택된 커맨드의 실행을 요청하는 요청메시지를 생성하고, 생성된 요청메시지를 네트워크를 통해 상기 제 1 계산 모듈이 포함된 계산 노드로 전송하는 단계; 를 포함하는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 메모리 관리 방법.Executing a host program for the parallel computing framework and inserting a command associated with a kernel program for the parallel computing framework into a command queue;
Scheduling the command queue to select a command to be executed;
It is determined whether a first calculation module which is a calculation module to execute the selected command has a buffer object used by the selected command, and according to the determination result, a buffer of a second calculation module which is a calculation module different from the first calculation module. Copying an object to the first calculation module; And
Generating a request message requesting execution of the selected command and transmitting the generated request message to a calculation node including the first calculation module through a network; Memory management method of a parallel computing framework based cluster system comprising a.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120001689A KR101332839B1 (en) | 2012-01-05 | 2012-01-05 | Host node and memory management method for cluster system based on parallel computing framework |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120001689A KR101332839B1 (en) | 2012-01-05 | 2012-01-05 | Host node and memory management method for cluster system based on parallel computing framework |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130080721A true KR20130080721A (en) | 2013-07-15 |
KR101332839B1 KR101332839B1 (en) | 2013-11-27 |
Family
ID=48992749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120001689A KR101332839B1 (en) | 2012-01-05 | 2012-01-05 | Host node and memory management method for cluster system based on parallel computing framework |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101332839B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180034960A (en) * | 2016-09-28 | 2018-04-05 | 한국전자통신연구원 | Appratus for managing platform and method for using the same |
CN108572862A (en) * | 2017-03-08 | 2018-09-25 | 华为软件技术有限公司 | A kind of process dispatch method and flow scheduling equipment |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220045286A (en) | 2020-10-05 | 2022-04-12 | 서강대학교산학협력단 | GPU Scheduling Framework for Accelerating Deep Learning Hyper Parameter Optimization in a Cloud |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7715428B2 (en) * | 2007-01-31 | 2010-05-11 | International Business Machines Corporation | Multicore communication processing |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
US9354944B2 (en) | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
-
2012
- 2012-01-05 KR KR1020120001689A patent/KR101332839B1/en active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180034960A (en) * | 2016-09-28 | 2018-04-05 | 한국전자통신연구원 | Appratus for managing platform and method for using the same |
CN108572862A (en) * | 2017-03-08 | 2018-09-25 | 华为软件技术有限公司 | A kind of process dispatch method and flow scheduling equipment |
CN108572862B (en) * | 2017-03-08 | 2021-12-03 | 华为技术有限公司 | Flow scheduling method and flow scheduling equipment |
Also Published As
Publication number | Publication date |
---|---|
KR101332839B1 (en) | 2013-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101332840B1 (en) | Cluster system, Host node, Computing node, and application execution method based on parallel computing framework | |
US8205200B2 (en) | Compiler-based scheduling optimization hints for user-level threads | |
EP1839146B1 (en) | Mechanism to schedule threads on os-sequestered without operating system intervention | |
US8082315B2 (en) | Programming idiom accelerator for remote update | |
US8145723B2 (en) | Complex remote update programming idiom accelerator | |
US8886919B2 (en) | Remote update programming idiom accelerator with allocated processor resources | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
US8972702B2 (en) | Systems and methods for power management in a high performance computing (HPC) cluster | |
JP2009265963A (en) | Information processing system and task execution control method | |
JP2010079622A (en) | Multi-core processor system and task control method thereof | |
US11163677B2 (en) | Dynamically allocated thread-local storage | |
US20130061231A1 (en) | Configurable computing architecture | |
KR20200014378A (en) | Job management | |
US9910717B2 (en) | Synchronization method | |
Didelot et al. | Improving MPI communication overlap with collaborative polling | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
KR101332839B1 (en) | Host node and memory management method for cluster system based on parallel computing framework | |
US20140047452A1 (en) | Methods and Systems for Scalable Computing on Commodity Hardware for Irregular Applications | |
Ashraf et al. | Improving Performance In Hpc System Under Power Consumptions Limitations | |
Singh | Toward predictable execution of real-time workloads on modern GPUs | |
Junior et al. | A parallel application programming and processing environment proposal for grid computing | |
Mei | Message-driven parallel language runtime design and optimizations for multicore-based massively parallel machines | |
Shi et al. | DFlow: Efficient Dataflow-based Invocation Workflow Execution for Function-as-a-Service | |
Ye et al. | TiNy threads on BlueGene/P: Exploring many-core parallelisms beyond the traditional OS | |
Labarta et al. | Hybrid Parallel Programming with MPI/StarSs |
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: 20160219 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20171023 Year of fee payment: 5 |