KR20150085463A - 클러스터 시스템 및 클러스터 시스템에서의 통신 방법 - Google Patents
클러스터 시스템 및 클러스터 시스템에서의 통신 방법 Download PDFInfo
- Publication number
- KR20150085463A KR20150085463A KR1020140187852A KR20140187852A KR20150085463A KR 20150085463 A KR20150085463 A KR 20150085463A KR 1020140187852 A KR1020140187852 A KR 1020140187852A KR 20140187852 A KR20140187852 A KR 20140187852A KR 20150085463 A KR20150085463 A KR 20150085463A
- Authority
- KR
- South Korea
- Prior art keywords
- node
- computing device
- nodes
- virtual computing
- cluster system
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
본 발명은 클러스터 시스템 및 클러스터 시스템에서의 통신 방법에 관한 것이다. 본 발명의 제 1 측면에 따르면 하나 이상의 노드를 포함하는 클러스터 시스템에 있어서, 상기 하나 이상의 노드 각각은, 하나 이상의 물리 계산디바이스, 및 하나 이상의 가상 계산디바이스를 관리하는 가상화모듈을 포함하고, 상기 하나 이상의 노드 각각은, 상기 하나 이상의 가상 계산디바이스에 기초하여 호스트노드로서 동작할 수 있다.
Description
본 발명은 클러스터 시스템 및 클러스터 시스템에서의 통신 방법에 관한 것으로, 보다 상세하게는, 병렬 컴퓨팅 프레임워크를 기반으로 하는 클러스터 시스템 및 상기 클러스터 시스템에서의 통신 방법에 관한 것이다.
OpenCL(Open Computing Language)은 대표적인 병렬 프로그래밍 모델로서 최근 들어 각광받고 있다.
OpenCL은 개방형 범용 병렬 컴퓨팅 프레임워크로서, 다중 플랫폼(예를 들어, 복수 개의 CPU, GPU 등)에서 동작하는 프로그램 등을 작성할 수 있게 한다.
이러한 OpenCL은 다양한 하드웨어 제조업체에서 제조한 각각의 하드웨어에서 동작 가능하므로, 많은 제조업체는 OpenCL을 기반으로 하여 자신의 하드웨어에 맞는 프레임워크를 제작하고 있다.
관련하여 복수 개의 노드로 구성되는 종래의 클러스터 시스템에서, OpenCL은 호스트노드 상에서 동작하며, 타(他) 노드는 계산이 수행되기 위해 상기 호스트노드와 빈번하게 통신하게 되며, 이는 클러스터 시스템의 성능 저하를 초래한다.
즉, 통상의 클러스터 시스템을 구성하는 노드 중 일 노드는 호스트노드가 될 수 있으며, 상기 호스트노드는OpenCL을 실행시킬 수 있다. 이러한 호스트노드는 데이터를 계산디바이스에 복사하고, 각 계산디바이스 상에 실행시킨 계산 결과를 제공받을 수 있다. 이러한 처리과정에서, 호스트노드는 클러스터 시스템 내의 타 노드와 계속적인 통신을 수행해야 하며, 클러스터 시스템 내에 노드가 증가할수록 상기 통신으로 인한 병목현상이 발생하게 되어 클러스터 시스템의 성능이 저하되는 문제점이 있다.
관련하여 선행기술문헌인 한국공개특허번호 제10-1998-0036294호에서는, MPI함수를 이용한 HPCC함수들을 제안함으로써 공유 메모리 형태의 자료 분산과 분산 메모리 형태의 자료 분산을 혼용하여 한 노드 내에서는 공유 메모리 형태의 자료 분산을 수행하고, 노드를 벗어나면 분산 메모리 형태의 자료 분산을 수행하는 공유 메모리 시스템 상에서의 자료 분산 및 통신 방법을 제안하고 있는데, 선행기술문헌 또한 상술된 바와 같은 문제점을 해소하지 못한다.
따라서 상술된 문제점을 해결하기 위한 기술이 필요하게 되었다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 발명의 일 실시예는, 클러스터 시스템 및 클러스터 시스템에서의 통신 방법을 제시하는 데에 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따르면 하나 이상의 노드를 포함하는 클러스터 시스템에 있어서, 상기 하나 이상의 노드 각각은, 하나 이상의 물리 계산디바이스, 및 하나 이상의 가상 계산디바이스를 관리하는 가상화모듈을 포함하고, 상기 하나 이상의 노드 각각은, 상기 하나 이상의 가상 계산디바이스에 기초하여 호스트노드로서 동작할 수 있다.
또한 본 발명의 제 2 측면에 따르면, 하나 이상의 노드를 포함하는 클러스터 시스템에서의 통신방법에 있어서, 상기 하나 이상의 노드 각각이 가상 계산디바이스를 생성하는 단계, 및 상기 가상 계산디바이스에 기초하여 상기 하나 이상의 노드 각각이 호스트노드로서 동작하는 단계를 포함할 수 있다.
또한 본 발명의 제 3 측면에 따르면, 클러스터 시스템에 포함되는 하나 이상의 노드 각각이 가상 계산디바이스를 생성하는 단계, 및 가상 계산디바이스에 기초하여 상기 하나 이상의 노드 각각이 호스트노드로서 동작하는 단계를 포함하는 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독가능 기록매체일 수 있다.
아울러 본 발명의 제 4 측면에 따르면, 컴퓨터에 의해 수행되고, 클러스터 시스템에 포함되는 하나 이상의 노드 각각이 가상 계산디바이스를 생성하는 단계, 및 가상 계산디바이스에 기초하여 상기 하나 이상의 노드 각각이 호스트노드로서 동작하는 단계를 포함하는 방법을 수행하기 위해, 기록매체에 저장된 컴퓨터 프로그램일 수 있다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일 실시예는 클러스터 시스템에서의 효과적인 통신 방법을 제시할 수 있다.
또한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 호스트노드로의 통신집중을 방지할 수 있어 종래 클러스터 시스템의 중앙집중적인 통신 방식을 개선할 수 있다.
그리고 본 발명의 과제 해결 수단 중 어느 하나에 의하면, MPI와 같은 통신 라이브러리를 사용하지 않고, OpenCL만으로 클러스터 시스템에서의 통신을 가능하게 할 수 있다. 이는 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템을 프로그래밍하려는 프로그래머에게 보다 쉬운 프로그래밍 환경을 제공하며, 이에 프로그래머는 클러스터 시스템의 확장을 용이하게 수행할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 클러스터 시스템을 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 클러스터 시스템에 포함되는 노드를 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 본 발명의 일 실시예에 따른 클러스터 시스템에서의 통신방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따른 클러스터 시스템에서의 통신방법을 설명하기 위한 예시도이다.
도 2는 본 발명의 일 실시예에 따른 클러스터 시스템에 포함되는 노드를 설명하기 위한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 본 발명의 일 실시예에 따른 클러스터 시스템에서의 통신방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따른 클러스터 시스템에서의 통신방법을 설명하기 위한 예시도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
다만 이를 설명하기에 앞서, 아래에서 사용되는 용어들의 의미를 먼저 정의한다.
‘물리 계산디바이스’는 노드에 실제로 포함된 계산디바이스를 지칭하는 반면, ‘가상 계산디바이스’는 노드에 실제로 포함된 계산디바이스는 아니나, 타(他) 노드에 위치하는 물리 계산디바이스를 가상화시킨 것을 의미한다. 노드는 가상 계산디바이스를 포함함으로써 마치 타 노드에 위치하는 물리 계산디바이스를 포함하고 있는 것처럼 구현될 수 있다.
도 1은 본 발명의 일 실시예에 따른 클러스터 시스템(100)을 설명하기 위한 블록도이다.
클러스터 시스템(100)은, 동종 매니코어 클러스터 환경을 제공할 수 있는 시스템으로서, OpenCL(Open Computing Language) 애플리케이션을 실행시킬 수 있다.
이와 같은 클러스터 시스템(100)은, 네트워크(10) 및 하나 이상의 노드(20)를 포함할 수 있다.
네트워크(10)는 인피니밴드 또는 이더넷 등과 같은 상호 접속 네트워크로 구현될 수 있다. 이러한 네트워크(10)를 통해 하나 이상의 노드(20)는 OpenCL 애플리케이션의 동작을 위한 통신을 수행할 수 있다.
관련하여 노드(20)는 하나 이상의 계산디바이스를 포함할 수 있으며, 하나 이상의 계산디바이스를 이용하여 OpenCL 애플리케이션의 워크로드를 처리할 수 있다.
상술된 바와 같은 노드(20)를 포함하는 클러스터 시스템(100)은, 시스템을 구성하는 모든 노드에서 OpenCL 애플리케이션을 실행시킬 수 있으며, 특히, 일 노드에서는 타 노드에 위치하는 계산디바이스를 가상화시켜, 마치 상기 계산디바이스를 상기 일 노드에서 포함하고 있는 것처럼 구현할 수 있다.
한편 클러스터 시스템(100)은, 통신모듈(미도시)를 더 포함할 수 있다.
즉, 클러스터 시스템(100)에 포함되는 하나 이상의 노드 중 하나의 노드인 제1노드의 가상 계산디바이스 및 물리 계산디바이스 간의 데이터 교환이 요청되면, 상기 제1노드가, 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드와의 데이터 교환을 수행할 수 있도록 통신모듈(미도시)이 각 노드 간의 데이터 교환을 수행할 수 있다.
또한 클러스터 시스템(100)에 포함되는 제1노드의 물리 계산디바이스가 제1노드의 가상 계산디바이스에 대한 이벤트를 트리거링하면, 상기 제1노드가 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드로 상기 트리거링을 전달할 수 있도록, 통신모듈(미도시)이 동작할 수 있다.
또한 클러스터 시스템(100)에 포함되는 제1노드의 물리 계산디바이스가 상기 제1노드의 가상 계산디바이스에 의해 트리거링되는 이벤트를 대기하면, 상기 제1노드는, 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드로부터 상기 이벤트의 전달을 대기할 수 있으며, 제2노드가 이벤트를 발생시키면 통신모듈(미도시)은 상기 이벤트를 제1노드로 전달할 수 있다.
또한 클러스터 시스템(100)에 포함되는 제1노드의 가상 계산디바이스가 상기 제1노드의 물리 계산디바이스에 의해 갱신되는 메모리 객체의 값을 판독하려는 경우 상기 제1노드가 상기 갱신되는 메모리 객체의 값을, 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드로 전달할 수 있도록, 통신모듈(미도시)이 동작할 수 있다.
관련하여 상술된 제1노드 및 제2노드는 노드를 구분하여 지칭하기 위해 사용되는 것일 뿐, 특정 노드를 지칭하는 것은 아니다.
한편 도 2 는 본 발명의 일 실시예에 따른 클러스터 시스템(100)에 포함되는 노드(20)의 구조를 도시한 블록도이다.
도 2에서 도시된 바와 같이 노드(20)는 물리 계산디바이스(210) 및 가상화모듈(220)을 포함할 수 있다.
이때 물리 계산디바이스(210)는 그래픽 처리도 가능하며 그래픽 처리 이외에도 일반적인 계산이 가능할 수 있다. 이러한 물리 계산디바이스는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit), Cell BE processor, Intel® Xeon phi coprocessor 또는 가속기(accelerator)일 수 있다.
또한 물리 계산디바이스(210)는, 하나 이상의 계산 유닛으로 분리될 수 있는데, 상기 계산 유닛 각각은 하나 이상의 계산 요소로 구성될 수 있다.
한편 가상화모듈(220)은 하나 이상의 가상 계산디바이스를 관리하는 모듈이다. 즉, 클러스터 시스템(100)에 포함되는 일 노드에서는 타 노드에 위치하는 물리 계산디바이스를 가상화시켜, 마치 상기 물리 계산디바이스를 상기 일 노드에서 포함하고 있는 것처럼 구현할 수 있으며, 따라서 노드(20)는 타 노드에 포함되는 물리 계산디바이스에 대응되는 가상 계산디바이스를 포함할 수 있으며, 이러한 가상 계산디바이스는 가상화모듈(220)에 의해 생성되고 관리될 수 있다.
관련하여 가상 계산디바이스는, 클러스터 시스템의 총 가용 계산용량에 관한 정보인 가용정보에 기초하여 결정되며, 상기 가용정보는 하나 이상의 노드 각각의 계산디바이스 정보에 기초하여 결정될 수 있다.
이때, ‘계산디바이스 정보’는 각 노드에 포함되는 물리 계산디바이스 각각의 계산용량에 관한 정보를 포함할 수 있다. 또한, ‘가용정보’는 클러스터 시스템의 총 가용 계산용량에 관한 정보를 의미하며, 이에 ‘가용정보’는 클러스터 시스템에 포함되는 모든 물리 계산디바이스의 총 계산용량에 관한 정보일 수 있으며, 또는 클러스터 시스템에 포함되는 모든 물리 계산디바이스 각각의 계산용량에 관한 정보일 수 있다.
이와 같은 가용정보에 기초하여 각 노드는 타 노드의 물리 계산디바이스 각각에 대응되는 가상 계산디바이스를 생성할 수 있다. 예를 들어, 각 노드는 가용정보를 갖는 가상 계산디바이스를 생성할 수 있고, 또는 가용정보를 분할하여 가상 계산디바이스를 생성할 수 있으며, 또는 가용정보로부터, 클러스터 시스템에 포함되는 모든 물리 계산디바이스 각각에 대응되는 가상 계산디바이스를 생성할 수 있다.
상술된 바와 같은 물리 계산디바이스(210) 및 가상화모듈(220)을 포함하는 노드(20)는, 호스트노드로서 동작할 수 있다. 이를 위해 노드(20) 상에는 OpenCL 애플리케이션이 실행되어 노드(20)에 대한 명령을 수신하면 상기 명령이 상기 하나 이상의 물리 계산디바이스에 대한 명령이라고 판단되면 상기 명령을 해당 물리 계산디바이스로 전달하며, 상기 명령이 상기 하나 이상의 가상 계산디바이스에 대한 명령이라고 판단되면 상기 명령을 무시할 수 있다.
한편 도 3은 본 발명의 일 실시예에 따른 본 발명의 일 실시예에 따른 클러스터시스템에서의 통신방법을 설명하기 위한 순서도이다.
도 3에 도시된 실시예에 따른 통신방법은 도 1 및 도 2에 도시된 클러스터 시스템(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 및 도 2에 도시된 클러스터 시스템(100)에 관하여 이상에서 기술한 내용은 도 3에 도시된 실시예에 따른 통신방법에도 적용될 수 있다.
도 3는 도 4를 참조하여 이하에서 후술되며, 도 4는 본 발명의 일 실시예에 따른 클러스터 시스템에서의 통신방법을 설명하기 위한 예시도이다.
도 3에서 도시된 바와 같이, 클러스터 시스템(100)에 포함되는 하나 이상의 노드(20) 각각은 계산디바이스 정보를 제공할 수 있으며 (S310), 상기 계산디바이스 정보에 기초하여 계산디바이스를 생성할 수 있다 (S320).
즉, 본 발명의 일 실시예에 따르면, 하나 이상의 노드(20) 각각은 루트노드로 계산디바이스 정보를 제공할 수 있으며, 이를 위해 클러스터 시스템(100)은 클러스터 시스템에 포함되는 하나 이상의 노드 중에서 일 노드를 루트 노드로서 결정할 수 있다. 이때 루트 노드는 사용자에 의해 결정되거나, 또는 클러스터 시스템에서 디폴트로 결정될 수 있다. 이와 같이 결정된 루트 노드로, 클러스터 시스템의 각 노드는, 자신이 갖고 있는 계산디바이스에 관한 정보, 즉 계산디바이스정보를 제공할 수 있으며, 루트 노드는 각 노드로부터 제공받은 계산디바이스정보를 수집하고, 상기 수집된 계산디바이스 정보에 기초하여 가용정보를 연산할 수 있다. 이와 같이 연산된 가용정보를, 루트 노드는 각 노드로 제공할 수 있으며, 각 노드는 상기 가용정보를 전달받을 수 있다. 이에 각 노드는 가용정보에 기초하여 계산디바이스를 생성할 수 있다
한편 본 발명의 또 다른 일 실시예에 따르면, 하나 이상의 노드 각각은, 클러스터 시스템 내의 타 노드의 존재를 알고, 타 노드 각각으로 계산디바이스 정보를 제공할 수 있다. 따라서 하나 이상의 노드 각각은 타 노드의 계산디바이스 정보를 수집할 수 있고, 수집된 계산디바이스 정보에 기초하여 가용정보를 연산할 수 있다. 이와 같이 연산된 가용정보에 따라 각 노드는 가상 계산 디바이스를 생성할 수 있다.
상술된 바와 같이, 각 노드는 자신이 갖고 있는 물리적인 계산디바이스 이외에도, 타 노드가 갖고 있는 물리 계산디바이스를 자기자신도 갖고 있는 것처럼 가상화시킬 수 있다.
즉, 도 4에서 도시된 바와 같이, 클러스터 시스템(100)은 하나 이상의 노드(110, 120, 130, 140)를 포함할 수 있으며, 각각의 노드(110, 120, 130, 140)가 1개의 물리 계산디바이스(111, 121, 131, 141)를 갖고 있음을 가정할 수 있다.
이와 같은 클러스터 시스템(100)이 본 발명의 일 실시예에 따른 클러스터 시스템에서의 통신 방법에 따라 동작하면, 클러스터 시스템의 노드(110, 120, 130, 140) 각각이 클러스터 시스템(400)의 노드(410, 420, 430, 440)처럼 타 노드의 물리 계산디바이스를 가상화시켜 포함할 수 있다.
예를 들어, 노드(410)는 물리적으로 물리 계산디바이스(411)만을 갖고 있으나, 타 노드(420, 430, 440)의 물리 계산디바이스를 가상 계산디바이스(412, 413, 414)로 갖고 있는 것처럼 동작할 수 있다. 또한 노드(440)는 물리적으로 계산디바이스(444)만을 갖고 있으나, 타 노드(410, 420, 430)의 계산디바이스를 가상 계산디바이스(441, 442, 443)로서 갖고 있는 것처럼 동작할 수 있다.
이와 같은 가상 계산디바이스에 기초하여 상기 하나 이상의 노드 각각이 호스트노드로서 동작할 수 있다 (S330).
즉, 각 노드는 호스트노드 상에서 실행될 호스트코드를 실행할 수 있다.
예를 들어, 물리 계산디바이스 및 가상 계산디바이스를 갖고 있는 노드 각각은, 계산디바이스의 커맨트 큐(command queue)에 명령이 들어오면 상기 계산디바이스의 특성에 따라 상기 명령을 처리할 수 있다.
즉, 노드는 물리 계산디바이스의 커맨드 큐에 명령이 들어오면, 상기 명령을 OpenCL 프레임워크로 전달할 수 있다. 반면 노드는 가상 계산디바이스의 커맨트 큐에 명령이 들어오면, 상기 명령을 무시할 수 있다.
한편 각 노드는, 자신이 갖고 있는 물리 계산디바이스와 가상 계산디바이스 간의 데이터 교환을 할 필요가 있다면, 상기 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 타 노드와의 상기 데이터 교환을 자동으로 수행함으로써, 호스트노드로서 동작할 수 있다.
예를 들어, 클러스터 시스템(400)의 노드(410)의 물리 계산디바이스(411)가 가상 계산디바이스(414)로 전달할 데이터가 있다면, 노드(410)는 전달될 데이터를, 가상 계산디바이스(414)에 대응되는 물리 계산디바이스(444)를 포함하는 노드(440)로 전달할 수 있다.
한편, 물리 계산디바이스 및 가상 계산디바이스를 갖고 있는 노드 각각은 호스트코드를 실행시켜 이벤트 동기화를 수행함으로써 호스트노드로서 동작할 수 있다.
즉, 각 노드는 자신이 갖고 있는 물리 계산디바이스가, 자신이 갖고 있는 가상 계산디바이스에 대한 이벤트를 트리거링하면 상기 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 타 노드로 상기 트리거링을 전달할 수 있다. 또한 각 노드는 자신이 갖고 있는 물리 계산디바이스가, 자신이 갖고 있는 가상 계산디바이스에 의해 트리거링되는 이벤트를 대기하면, 상기 가상 계산디바이스를 대응되는 물리 계산디바이스를 포함하는 타 노드로부터 상기 이벤트를 대기하도록 동작할 수 있다.
예를 들어, 클러스터 시스템(400)의 각 노드(410, 420, 430, 440)는 이벤트 동기화를 수행할 수 있다. 즉, OpenCL 커맨드 큐에 명령을 삽입하는 함수는 모두 이벤트에 대한 파라미터를 포함하고 있으므로, 명령을 큐에 삽입할 때 해당 명령이 기다려야 하는 이벤트를 명시적으로 표시하거나, 해당 명령의 실행 상태를 확인할 수 있는 이벤트를 수신하도록 할 수 있다. 따라서 예를 들어, 노드(410)는 명령 c1이 물리 계산디바이스(411)에서 실행되고, 명령 c1 이 종료되기를 기다리는 명령 c2가 가상 계산디바이스(414)에서 대기 중임을 알 면, 노드(410)는 명령 c1이 실행 완료됨을 나타내는 완료이벤트를, 명령 c1실행 완료 이후에 노드(440)로 전달해야 하며, 이와 같은 프로세스를 처리하도록 하는 호스트코드가 노드(410) 상에서 실행되고 있으므로, 노드(410)는 상기 완료이벤트 전달을 수행할 수 있다.
한편 물리 계산디바이스 및 가상 계산디바이스를 갖고 있는 노드 각각은 호스트코드를 실행시켜 메모리 동기화도 수행함으로써 호스트노드로서 동작할 수 있다.
즉, 각 노드는 자신이 갖고 있는 가상 계산디바이스가, 자신이 갖고 있는 물리 계산디바이스에 의해 갱신되는 메모리 객체의 값을 판독하려는 경우 상기 갱신되는 메모리 객체의 값을 상기 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 타 노드로 전달할 수 있다.
예를 들어, 클러스터 시스템(400)의 각 노드(410, 420, 430, 440)는 메모리 동기화를 수행할 수 있다. 즉, 클러스터 시스템(400)은 메모리의 최신 값을 갱신하는 동작을 지속적으로 수행해야 한다. 따라서 예를 들어, 노드(410)는, 물리 계산디바이스(411)에 의해 명령 c1이 메모리 객체m1의 값을 수정하고, 가상 계산디바이스(414)의 명령 c2가 메모리 객체m1의 값을 판독하려고 한다면, 노드(410) 및 노드(440) 각각에서는 호스트코드가 실행되고 있으므로, 어떤 노드가 어떤 데이터가 필요한지를 각 노드 (410, 440)에서 판단할 수 있고, 이에 노드(410)는 노드(440)로 메모리 객체m1의 값을 전달할 수 있고 이를 통해 메모리 동기화 동작을 어김없이 수행할 수 있다.
상술된 바와 같이 클러스터 시스템에서의 각 노드가 호스트코드 중 필요한 부분을 실행할 수 있도록 하며, 노드 간 통신은 계산디바이스간 통신을 통해 발생하며, 이는 호스트코드 분석을 통해 알 수 있다. 이로 인해 각 노드는 클러스터 시스템 내의 모든 계산디바이스와 통신하는 것과 같이 동작할 수 있다.
도 3을 통해 설명된 실시예에 따른 클러스터 시스템에서의 통신방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한 본 발명의 일 실시예에 따르는 클러스터 시스템에서의 통신방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 본 발명의 일 실시예에 따르는 클러스터 시스템에서의 통신방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 클러스터 시스템
10: 네트워크
20: 노드
210: 물리 계산디바이스 220: 가상화모듈
10: 네트워크
20: 노드
210: 물리 계산디바이스 220: 가상화모듈
Claims (13)
- 하나 이상의 노드를 포함하는 클러스터 시스템에 있어서,
상기 하나 이상의 노드 각각은,
하나 이상의 물리 계산디바이스; 및
하나 이상의 가상 계산디바이스를 관리하는 가상화모듈을 포함하고,
상기 하나 이상의 노드 각각은, 상기 하나 이상의 가상 계산디바이스에 기초하여 호스트노드로서 동작하는, 클러스터 시스템. - 제 1 항에 있어서,
상기 하나 이상의 노드 각각은 명령을 수신하면,
상기 명령이 상기 하나 이상의 물리 계산디바이스에 대한 명령이면 상기 명령을 해당 물리 계산디바이스로 전달하며,
상기 명령이 상기 하나 이상의 가상 계산디바이스에 대한 명령이면 상기 명령을 무시하는, 클러스터 시스템. - 제 1 항에 있어서,
상기 가상 계산디바이스는, 상기 클러스터 시스템의 총 가용 계산용량에 관한 정보인 가용정보에 기초하여 결정되는, 클러스터 시스템. - 하나 이상의 노드를 포함하는 클러스터 시스템에서의 통신방법에 있어서,
상기 하나 이상의 노드 각각이 가상 계산디바이스를 생성하는 단계; 및
상기 가상 계산디바이스에 기초하여 상기 하나 이상의 노드 각각이 호스트노드로서 동작하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 가상 계산디바이스를 생성하는 단계는,
상기 하나 이상의 노드 각각이 계산디바이스 정보를 루트노드로 제공하는 단계; 및
상기 루트노드에 의해 연산된 상기 클러스터 시스템의 총 가용 계산용량에 관한 정보인 가용정보에 따라 상기 가상 계산디바이스를 생성하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 가상 계산디바이스를 생성하는 단계는,
상기 하나 이상의 노드 각각이 타(他) 노드로 계산디바이스 정보를 제공하는 단계; 및
상기 하나 이상의 노드 각각이 타 노드로부터 수신한 계산디바이스 정보에 기초하여 상기 클러스터 시스템의 총 가용 계산용량에 관한 정보인 가용정보를 연산하고, 연산된 가용정보에 따라 가상 계산디바이스를 생성하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 호스트노드로서 동작하는 단계는,
상기 하나 이상의 노드 각각이 명령을 수신하면,
상기 명령이 상기 하나 이상의 물리 계산디바이스에 대한 명령이면 상기 명령을 해당 물리 계산디바이스로 전달하며,
상기 명령이 상기 하나 이상의 가상 계산디바이스에 대한 명령이면 상기 명령을 무시하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 호스트노드로서 동작하는 단계는,
상기 하나 이상의 노드 중 하나의 노드인 제1노드의 가상 계산디바이스 및 물리 계산디바이스 간의 데이터 교환이 요청되면, 상기 제1노드가, 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드와의 데이터 교환을 수행하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 호스트노드로서 동작하는 단계는,
상기 하나 이상의 노드 중 하나의 노드인 제1노드의 물리 계산디바이스가 상기 제1노드의 가상 계산디바이스에 대한 이벤트를 트리거링하면, 상기 제1노드가 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드로 상기 트리거링을 전달하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 호스트노드로서 동작하는 단계는,
상기 하나 이상의 노드 중 하나의 노드인 제1노드의 물리 계산디바이스가 상기 제1노드의 가상 계산디바이스에 의해 트리거링되는 이벤트를 대기하면, 상기 제1노드가 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드로부터의 상기 이벤트 전달을 대기하는 단계를 포함하는, 통신방법. - 제 4 항에 있어서,
상기 호스트노드로서 동작하는 단계는,
상기 하나 이상의 노드 중 하나의 노드인 제1노드의 가상 계산디바이스가 상기 제1노드의 물리 계산디바이스에 의해 갱신되는 메모리 객체의 값을 판독하려는 경우 상기 제1노드가 상기 갱신되는 메모리 객체의 값을, 상기 제1노드의 가상 계산디바이스에 대응되는 물리 계산디바이스를 포함하는 제2노드로 전달하는 단계를 포함하는, 통신방법. - 제 4 항에 기재된 방법을 수행하기 위한 프로그램이 기록된 컴퓨터 판독가능 기록매체.
- 컴퓨터에 의해 수행되고,
클러스터 시스템에 포함되는 하나 이상의 노드 각각이 가상 계산디바이스를 생성하는 단계; 및
상기 가상 계산디바이스에 기초하여 상기 하나 이상의 노드 각각이 호스트노드로서 동작하는 단계를 포함하는 방법을 수행하기 위해 기록매체에 저장된 컴퓨터 프로그램.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/595,371 US10097618B2 (en) | 2014-01-15 | 2015-01-13 | Cluster system and communication method in cluster system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140005051 | 2014-01-15 | ||
KR20140005051 | 2014-01-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150085463A true KR20150085463A (ko) | 2015-07-23 |
KR101592375B1 KR101592375B1 (ko) | 2016-02-05 |
Family
ID=53875476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140187852A KR101592375B1 (ko) | 2014-01-15 | 2014-12-24 | 클러스터 시스템 및 클러스터 시스템에서의 통신 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101592375B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180084682A (ko) * | 2017-01-17 | 2018-07-25 | 서울대학교산학협력단 | 이종 클러스터 시스템에서의 계산 처리 방법 및 이를 수행하기 위한 병렬 시스템 |
-
2014
- 2014-12-24 KR KR1020140187852A patent/KR101592375B1/ko active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180084682A (ko) * | 2017-01-17 | 2018-07-25 | 서울대학교산학협력단 | 이종 클러스터 시스템에서의 계산 처리 방법 및 이를 수행하기 위한 병렬 시스템 |
Also Published As
Publication number | Publication date |
---|---|
KR101592375B1 (ko) | 2016-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6433554B2 (ja) | 計算タスクを処理するためのコンピュータクラスタ構成、およびそれを動作させるための方法 | |
US10404800B2 (en) | Caching network fabric for high performance computing | |
US20130205295A1 (en) | Parallel hardware hypervisor for virtualizing application-specific supercomputers | |
US8972702B2 (en) | Systems and methods for power management in a high performance computing (HPC) cluster | |
US12020072B2 (en) | Computing resource allocation | |
CN108932154B (zh) | 一种分布式虚拟机管理器 | |
US11243795B2 (en) | CPU overcommit with guest idle polling | |
TW201413456A (zh) | 處理巢狀串流事件的方法和系統 | |
US9015440B2 (en) | Autonomous memory subsystem architecture | |
CN113495857A (zh) | 存储器错误隔离技术 | |
US9715403B2 (en) | Optimized extended context management for virtual machines | |
US10140214B2 (en) | Hypervisor translation bypass by host IOMMU with virtual machine migration support | |
JP2010218539A (ja) | 物理的デバイスコントローラの仮想化をサポートするトランザクションのインジェクト方法 | |
JP2024506642A (ja) | マルチアーキテクチャヘテロジニアスコンピューティングのための実行可能コードの動的割り振り | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
KR101592375B1 (ko) | 클러스터 시스템 및 클러스터 시스템에서의 통신 방법 | |
DE102022114509A1 (de) | Speicherzuweisung unter verwendung von graphen | |
US10097618B2 (en) | Cluster system and communication method in cluster system | |
US11074200B2 (en) | Use-after-free exploit prevention architecture | |
Neuwirth et al. | Communication models for distributed intel xeon phi coprocessors | |
US9235445B2 (en) | Process mapping parallel computing | |
KR101748210B1 (ko) | 분산 처리 시스템 및 분산 처리 시스템에서의 파일 처리 방법 | |
Akshintala et al. | Talk to my neighbors transport: Decentralized data transfer and scheduling among accelerators | |
US20230036751A1 (en) | Sparse memory handling in pooled memory | |
US20230205452A1 (en) | Circular buffer architecture using local memories with limited resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20190201 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20200203 Year of fee payment: 5 |