KR20110060849A - 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템 - Google Patents

고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템 Download PDF

Info

Publication number
KR20110060849A
KR20110060849A KR1020100120204A KR20100120204A KR20110060849A KR 20110060849 A KR20110060849 A KR 20110060849A KR 1020100120204 A KR1020100120204 A KR 1020100120204A KR 20100120204 A KR20100120204 A KR 20100120204A KR 20110060849 A KR20110060849 A KR 20110060849A
Authority
KR
South Korea
Prior art keywords
nodes
data
node
compute
computing
Prior art date
Application number
KR1020100120204A
Other languages
English (en)
Inventor
구앙 레이 리
준 헤
후오 딩 리
치 첸
웨이 리우
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20110060849A publication Critical patent/KR20110060849A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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/3891Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Between Computers (AREA)
  • Small-Scale Networks (AREA)

Abstract

본 발명은 고성능 컴퓨팅 클러스터에서 데이터 분배를 위한 방법 및 시스템을 개시하는데, 상기 고성능 컴퓨팅 클러스터는 관리 노드 및 M개의 계산 노드들을 포함하며, M은 2보다 크거나 같은 정수이고, 상기 M개의 관리 노드는 상기 지정된 데이터를 상기 M개의 계산 노드들에 분배한다. 상기 방법은, 상기 M개의 계산 노드들을 m개 - m은 2보다 크거나 같은 정수임 - 의 층들로 나누는 단계; 상기 지정된 데이터를 k개 - k는 2보다 크거나 같은 정수임 - 의 쉐어들로 나누는 단계; 상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하는 단계 - 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 -; 상기 계산 노드들 각각에 의해, 상기 계산 노드들 각각의 부모 노드에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 계산 노드들 각각의 서브-계산 노드들에 분배하는 단계; 및 상기 계산 노드들 각각에 의해, 남은 지정된 데이터를 다른 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하는 단계를 포함한다. 상기 방법 및 시스템은 고성능 컴퓨팅 클러스터에서 여러 가지 계산 노드들에 데이터가 빠르게 분배될 수 있도록 한다.

Description

고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템{METHOD AND SYSTEM FOR DATA DISTRIBUTION IN HIGH PERFORMANCE COMPUTING CLUSTER}
본 발명은 일반적으로 컴퓨터 분야와 관련되고, 더 상세하게는, 고성능 컴퓨팅 클러스터(high-performance computing cluster)에서 데이터 분배를 위한 방법 및 시스템과 관련된다.
간단히 클러스터(cluster)로도 일컬어지는 컴퓨터 클러스터(computer cluster)는 대규모의 태스크들을 컴퓨팅하기 위해 함께 협력하도록 복수의 컴퓨터들을 연결하는 컴퓨터 시스템이다. 상기 복수의 컴퓨터들은, 예를 들어, 소프트웨어 및/또는 하드웨어 리소스들과 같은 컴퓨팅 노드들(computing nodes)로 일컬어진다. 이들 컴퓨팅 노드들은 통상적으로 동일한 관리 영역(managing domain)에 위치하며, 통일된 관리 정책들(managing policies)을 가지며 사용자들에게 전체적으로 서비스들을 제공한다. 상기 클러스터 시스템 내의 하나의 컴퓨터는 종종 노드(node)로 일컬어진다. 상기 클러스터 시스템은 많은 이점들을 갖는다. 예를 들어, 상기 클러스터 시스템이 로드 밸런스(load balance) 방식으로 동작할 경우, 상기 클러스트는 복수의 컴퓨터들 전체를 통해 동일한 작업을 수행하며, 따라서 컴퓨팅 속도가 더 빨라질 수 있고 또한 에너지 소비도 더 줄어들 수 있다.
고성능 컴퓨팅(High-Performance Computing)은 컴퓨터 과학의 한 분야인데, 이 고성능 컴퓨팅은 하나의 컴퓨터에 의해 처리될 수 없는 태스크를 위해 수퍼컴퓨터를 개발하는 것, 병렬 알고리즘들을 연구하는 것, 및 적절한 소프트웨어를 개발하는 것에 목적이 있다. 고성능 컴퓨팅에 의해 주로 연구되는 문제들은, 일기 예보, 지형 분석 및 생물학적 의료 준비과정(biological medical preparation) 등과 같은 큰 규모의 과학 문제들, 및 데이터 마이닝(data mining), 이미지 처리 및 유전자 배열(gene sequencing) 등과 같은 대규모의 데이터의 저장 및 처리를 포함한다. 고성능 컴퓨팅 클러스터는, 그 이름이 암시하는 것처럼, 클러스터 기술들을 사용함으로써 고성능 컴퓨팅을 연구하는 것이다.
고성능 컴퓨팅은 일반적으로 태스크를 몇 개의 병렬 서브-태스크들로 나누는데, 이들 병렬 서브-태스크들은 계산(computation)을 수행하기 위해 서로 협력한다. 고성능 컴퓨팅 클러스터에서는, 대규모의 컴퓨팅 노드들이 있다. 예를 들어, IBM 클러스터는 16000개 이상의 노드들을 포함한다. 고성능 컴퓨팅 클러스터에는 몇 개의 관리 노드들(management nodes) 및 복수의 계산 노드들(computation nodes)이 있다. 상기 관리 노드들은 사용자들과의 상호작용, 정보의 제어 및 관리, 컴퓨팅 리소스들의 할당 및 서브-태스크들의 스케쥴링을 책임진다. 고성능 컴퓨팅 클러스터 내의 모든 노드들의 연결 정보는 상기 관리 노드들 내에 수집되고 저장된다. 고성능 컴퓨팅 클러스터가 하나의 태스크를 수신할 경우, 상기 관리 노드들은 먼저 그 클러스터에 컴퓨팅 리소스들을 할당하고, 그런 다음 그 태스크를 위해 리소스들을 배정하는데, 즉, 그 태스크를 복수의 서브-태스크들로 나누고, 각각의 서브-태스크를 위한 적절한 계산 노드를 찾으며, 그 작업을 위한 네트워크 연결 테이블(network connection table)을 구성한다. 이 네트워크 연결 테이블은 각각의 태스크의 인피니밴드(Infiniband)와 같은 네트워크 연결의 연결 정보를 보유한다. 고성능 컴퓨팅에서 하나의 서브-태스크가 고성능 컴퓨팅 내의 또 다른 서브-태스크와 통신할 경우, 그 서브-태스크는 상기 또 다른 서브-태스크의 연결 정보를 가져와야 한다. 이 정보는 네트워크 프로토콜들에서 IP 주소 플러스(plus) 포트 넘버와 유사하다. 그러므로, 대규모의 태스크들(예를 들어, 백만 개의 서브-태스크들을 갖는 태스크)에 있어서, 전체 네트워크 연결 정보 테이블은 각각이 하나의 서브-태스크에 대응하는 백만 개의 항목들(items)을 포함한다. 인피니밴드에 있어서, 각각의 항목은 적어도 다음의 정보, 즉, 어댑터 주소(adapter address), 윈도우 ID(window ID), netword_id, logical_id, LID 마스크 제어 마스크(LID mask controlled mask), port_id를 포함한다. 각각의 항목은 약 50 바이트의 크기를 가지며, 따라서 백 만개의 서브-태스크들 모두에 의해 요구되는 네트워크 연결 테이블은 약 50MB이다.
계속해서, 상기 관리 노드는 상기 컴퓨팅 태스크들을 전달(deliver)하기 위해 상기 태스크들에게 서비스를 제공하는 모든 계산 노드들과의 연결들을 수립한다. 상기 태스크들의 전달 동안, 상기 관리 노드는 많은 정보를 넘겨줄 필요가 있고(이 많은 정보 중 하나는 상기 네트워크 연결 테이블임), 이에 따라 상기 계산 노드들은 서로 연결되어 데이터를 교환할 수 있다. 도 1은 고성능 컴퓨팅 클러스터에 있어서 종래의 데이터 분배를 보여주는 개략도이다. 도 1에 도시된 바와 같이, 고성능 컴퓨팅 클러스터에서, 상기 계산 노드들은 두 개의 층들로 나눠지는데, 여기서, 관리 노드는 작업의 네트워크 연결 테이블을 제1층의 계산 노드들에 전달하고, 그런 다음 상기 제1층의 계산 노드들은 상기 작업의 네트워크 연결 테이블을 제2층의 계산 노드들에 전달하며; 각각의 계산 노드 모두는 상기 작업의 네트워크 연결 테이블을 수신한 후, 상기 관리 노드에게 알림(notification)을 보내며, 상기 관리 노드들은 상기 계산 노드들 모두의 다른 관련 정보뿐만 아니라 상기 계산 노드들 모두로부터 상기 네트워크 연결 테이블에 관한 확인(conformations)을 받은 후, 상기 계산 노드들 모두를 구성하여 상기 컴퓨팅 서브-태스크들을 시작한다.
많은 고성능 컴퓨팅 작업들은 고성능 컴퓨팅 클러스터 내의 거의 모든 노드들을 사용하며, 상기 노드들은 서로 밀집하여(densely) 상호작용한다. 예를 들어, 도 1에서 128*128 노드들을 사용하는 고성능 컴퓨팅 클러스터에 있어서, 만약 네트워크 연결 테이블의 크기가 50M 바이트이고, 두 층의 계산 노드들이 사용되고, 네트워크 대역폭이 10G라면, 단지 관리 노드로부터 모든 계산 노드들로 네트워크 연결 테이블을 전달하는 데에만 (50M*128*128)/(10G/8) = 10초의 전송 시간이 요구된다. 상기 관리 노드가 작업을 위해 리소스들을 할당하는 시점으로부터 계산 노드들이 그 작업을 위해 컴퓨팅을 시작하는 시점까지의 시구간(period of time)은 작업 활성화 시간(job activation time)으로 일컬어진다. 따라서 분명하게도, 작업에 관한 네트워크 연결 테이블을 전송하기 위해 너무 긴 시구간을 사용하는 것은 너무 긴 작업 활성화 시간을 초래할 것이다.
종래의 문제점을 극복하기 위해, 본 발명은 고성능 컴퓨팅 클러스터에서 데이터 분배 방법 및 시스템을 제안한다.
본 발명의 일 측면에 따라, 고성능 컴퓨팅 클러스터에서 지정된 데이터(specified data)를 분배하기 위한 방법이 제공되는데, 상기 고성능 컴퓨팅 클러스터는 관리 노드(management node) 및 M개 - M은 2보다 크거나 같은 정수임 - 의 계산 노드들(computation nodes)을 포함하고, 상기 관리 노드는 상기 M개의 계산 노드들에 상기 지정된 데이터를 분배하며, 상기 방법은,
상기 M개의 계산 노드들을 m개 - m은 2보다 크거나 같은 정수임 - 의 층들로 나누는 단계;
상기 지정된 데이터를 k개 - k는 2보다 크거나 같은 정수임 - 의 쉐어들(shares)로 나누는 단계;
상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하는 단계 - 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 -;
상기 계산 노드들 각각에 의해, 상기 계산 노드들 각각의 부모 노드(parent node)에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 계산 노드들 각각의 서브-계산 노드들(sub-computation nodes)에 분배하는 단계; 및
상기 계산 노드들 각각에 의해, 남은 지정된 데이터(the remaining specified data)를 다른(other) 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하는 단계를 포함한다.
본 발명의 다른 측면에 따라, 고성능 컴퓨팅 클러스터에서 지정된 데이터를 분배하기 시스템이 제공되는데, 상기 고성능 컴퓨팅 클러스터는 관리 노드 및 M개 - M은 2보다 크거나 같은 정수임 - 의 계산 노드들을 포함하고, 상기 관리 노드는 상기 지정된 데이터를 상기 M개의 계산 노드들에 분배하며, 상기 시스템에서 상기 M개의 계산 노드들은 m개 - m은 2보다 크거나 같은 정수임 - 의 층들로 나눠지며, 상기 지정된 데이터는 k개 - k는 2보다 크거나 같은 정수임 - 의 쉐어들로 나눠지며, 상기 시스템은,
상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하기 위한 관리 노드 분배기 - 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 -;
상기 복수의 계산 노드들에 의해, 상기 계산 노드들 각각의 부모 노드에 의해 분배된 데이터의 상기 적어도 하나의 쉐어를 분배하기 위해 상기 복수의 계산 노드들에 배치된 복수의 계산 노드 분배기들; 및
상기 복수의 계산 노드들에 의해, 남은 지정된 데이터를 다른 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하기 위해, 상기 복수의 계산 노드들에 배치된 복수의 데이터 요청기들을 포함한다.
본 발명에 따른 방법을 사용하여, 데이터는 고성능 컴퓨팅 클러스터에서의 컴퓨팅 노드들에 빠르게 분배될 수 있고, 그 분배 시간이 종래에 비해 매우 감소될 수 있다.
본 발명에 관한 상기 목적들, 특징들 및 이점들, 및 다른 목적들, 특징들 및 이점들은 본 발명에 관한 다음의 도면들에 도시된 실시예들의 상세한 설명을 통해서 더욱 명확해질 것이다. 도면들에서, 유사한 참조 부호들은 일반적으로 발명의 실시예들에서의 유사한 부분들을 나타낸다.
도 1은 고성능 컴퓨팅 클러스터에서 종래의 데이터 분배를 보여주는 개략도이다.
도 2는 본 발명에 따른 고성능 컴퓨팅 시스템에서의 데이터 분배 방법을 보여준다.
도 3은 본 발명의 일 실시예에 따라 계산 노드가 남은 지정된 데이터를 어떻게 획득하는지에 관한 프로세스를 보여준다.
도 4는 본 발명의 다른 실시예에 따라 계산 노드가 남은 지정된 데이터를 어떻게 획득하는지에 관한 프로세스를 보여준다.
도 5는 본 발명의 바람직한 실시예에 따른 노드 전송을 보여준다.
도 6은 본 발명의 바람직한 실시예에 따른 특정 시점에서의 노드들 간의 데이터 전송을 보여준다.
도 7은 고성능 컴퓨팅 클러스터에서의 데이터 분배를 보여주기 위한 시스템 블록도이다.
발명의 바람직한 실시예들은 이제 발명의 바람직한 실시예들이 도시된 첨부 도면들을 참조하여 더 상세히 기술될 것이다. 그러나, 본 발명은 여러 가지 형태로 구현될 수 있으며, 따라서 여기에 제시되는 실시예들로 한정되는 것으로 간주되어서는 아니된다. 한편, 실시예들은 당해 기술 분야에서 숙련된 자들에게 이해되도록 본 발명을 더 철저하고 완전하게 만들기 위해, 그리고 발명의 범위를 전달하기 위해 제공된다.
고성능 컴퓨팅 클러스터는 너무 많은 노드들을 포함하고 또한 상기 클러스터에서 처리되는 작업은 일반적으로 상기 클러스터에 포함되는 노드들의 대부분 또는 모두를 사용하므로, 상기 작업의 처리와 관련된 모든 노드들의 연결 정보를 포함하는 네트워크 연결 테이블이 너무 크다. 예를 들어, 이러한 네트워크 연결 테이블은 배경 기술에서 주어진 바와 같이 50Mbyte이다. 이처럼 큰 네트워크 연결 테이블은 전송을 위해 긴 시간을 요구하며; 고성능 컴퓨팅 클러스터에 있어서는, 처리되어야 할 많은 작업들이 있고, 각각의 작업은 그 작업의 네트워크 연결 테이블을 전송해야 하고; 따라서, 전체적으로, 상기 네트워크 연결 테이블의 전송 시간은, 특히 빈번하게 작업들을 디스패치(dispatch)하는 클러스터에 있어서는 무시될 수 없으며, 그래서 상기 네트워크 연결 테이블의 전송 시간을 감소시키는 것이 매우 필요하다.
종래 기술에서는, 모든 작업들과 관련된 계산 노드들은 두 개의 층들로 나눠지는데, 관리 노드(Management node)는 작업의 네트워크 연결 테이블을 제1층의 계산 노드들에 전송하고, 그런 다음 상기 제1층의 계산 노드들은 상기 작업의 네트워크 연결 테이블을 제2층의 계산 노드들에 전송한다. 전체 네트워크 연결 테이블은 이러한 프로세스로 전송된다.
본 발명의 기본 개념은, 계산 노드들은 층들로 나눠지면서도, 전체 네트워크 연결 테이블은 전송되지 않으며, 상기 작업의 네트워크 연결 테이블은 몇 개의 쉐어들로 나눠지며; 상기 관리 노드는 차례대로 제1층의 계산 노드들 각각을 위해 상기 네트워크 연결 테이블의 하나의 쉐어를 전송하며, 상기 제1층의 계산 노드들은 네트워크 연결 테이블의 상기 수신된 하나의 쉐어를 자신의 더 아래의 층들(lower layers)로 전송하며; 하나의 계산 노드가 자신의 가지(branch)에 속하는 네트워크 연결 테이블의 하나의 쉐어를 수신한 후, 상기 계산 노드는 다른 계산 노드 가지들에 속하는 네트워크 연결 테이블의 하나의 쉐어를 다른 계산 노드들에게 랜덤하게 요청할 수 있으며; 이 방법으로, 하나의 노드는 몇 개의 쉐어들로 나눠지는 네트워크 연결 테이블의 쉐어들을 획득할 수 있으며, 상기 작업의 완전한 네트워크 연결 테이블(complete network connection table)이 되도록 상기 네트워크 연결 테이블의 모든 쉐어들을 결합할 수 있으며, 상기 관리 노드에게 알린다(report).
당해 기술 분야에서 숙련된 자들이라면, 본 발명의 데이터 분배 방법 및 시스템은 작업의 네트워크 연결 테이블의 상기 분배로 한정되는 것뿐만이 아니라, 계산 노드들 모두에 의해 요구되는 동일한 데이터가 분배되는 한, 고성능 컴퓨팅 클러스터에서 어떤 원하는 데이터든 분배할 수도 있으며, 이러한 방법이 분배 시간을 매우 감소시킬 수 있다는 것을, 다음의 설명을 통해서 알 수 있을 것이다.
특히, 도 2는 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법을 보여준다. 상기 고성능 컴퓨팅 클러스터는 관리 노드 및 M개 - m은 2보다 크거나 같은 정수임 - 의 계산 노드들을 포함하고, 상기 관리 노드는 지정된 데이터(specified data)를 상기 M개의 계산 노드들에 분배하며, 상기 방법은,
상기 M개의 계산 노드들을 m개 - m은 2보다 크거나 같은 정수임 - 의 층들로 나누는 단계(S201);
상기 지정된 데이터를 k개 - k는 2보다 크거나 같은 정수임 - 의 쉐어들로 나누는 단계(S202);
상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하는 단계(S203) - 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 -;
상기 계산 노드들 각각에 의해, 상기 계산 노드들 각각의 부모 노드에 의해 분배된 데이터의 상기 적어도 하나의 쉐어를 상기 계산 노드들 각각의 서브-계산 노드들에 분배하는 단계(S204); 및
상기 계산 노드들 각각에 의해, 남은 지정된 데이터를 다른 계산 노드들에게 요청하는 단계(S204) - 이에 따라 상기 지정된 데이터 모두를 획득함 - 를 포함한다.
도 2의 단계들은 이하에서 상세히 기술된다.
단계 S201에서, 상기 M개의 계산 노드들은 m개의 층들로 나눠지는데, m은 2보다 크거나 같은 정수이다. 제1층의 계산 노드들의 수는 n1이고, 제2층의 계산 노드들의 수는 n2이며, ....., 제m층의 계산 노드들의 수는 nm이며, 따라서, n1+n2+...+nm = M이다. 따라서, 모든 노드들은 트리 구조(tree structure)로 볼 수 있는데, 여기서 상기 관리 노드는 상기 트리의 루트(root)이며, 상기 제1층의 계산 노드들 각각 및 상기 제1층의 계산 노드들의 서브-노드들의 층들은 상기 트리의 가지(branch)를 구성한다. 여기서, 상기 계산 노드들에 의해 구성되는 트리는 복수의 층들로 나눠질 수 있지만, 상기 복수의 층들의 컴퓨팅은 비교적 복잡해질 것이며, 상기 관리 노드로부터 상기 서브-노드들까지의 전달 시간(time of delivery)은 그만큼 더 길어진다. 그러므로, 발명의 바람직한 실시예에 따라, m=2, 즉, 상기 계산 노드들이 단지 두 개의 층들로만 나눠지고, 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 임의로 설정될 수 있다. 예를 들어, 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 일치(identical)할 수도 있고, 또는 서로 다를 수도 있는데, 만약 그 수가 서로 다르면, 후속되는 처리는 더 복잡해질 것이다. 그러므로, 발명의 바람직한 실시예에 따라, 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 일치한다.
단계 S202에서, 상기 지정된 데이터는 k개의 쉐어들로 나눠지는데, 상기 k는 2보다 크거나 같은 정수이다. 여기서, 상기 지정된 데이터는 동일하지 않은 크기들을 갖는 k개의 쉐어들 또는 동일한 크기를 갖는 k개의 쉐어들로 나눠질 수 있다. 이들 두 개는 유사하게 처리될 수 있다. 그러나, 만약 상기 지정된 데이터가 동일한 크기를 갖는 k개의 쉐어들로 나눠지면, 전송시간이 더 쉽게 평가(evaluate)되므로, 발명의 바람직한 실시예들에서, 상기 지정된 데이터는 동일한 크기를 갖는 k개의 쉐어들로 나눠진다.
단계 S203에서, 상기 관리 노드는 데이터의 상기 k 개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하는데, 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득한다. 이 방법으로, 상기 제1층의 계산 노드들은 그것들의 가지에 데이터의 하나 또는 그 이상의 쉐어들을 획득한다. 바람직하게는, 상기 관리 노드는 상기 제1층의 계산 노드들에, 분배 시작 시간(distribution start time), 상기 계산 노드들 모두의 트리 구조(tree structure), 및 상기 지정된 데이터의 각각의 쉐어의 크기를 더 분배한다. 그리하여, 계속되는 데이터 처리를 편리하도록 하기 위해, 모든 계산 노드들이 상기 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 알도록 한다. 상기 제1층의 계산 노드들의 수(n1)가 k보다 큰 경우, 상기 관리 노드는 처음의 k개의 계산 노드들(first k computation nodes) 각각을 위해 데이터의 하나의 쉐어를 분배할 수 있고; 남은 계산 노드들을 위해, 상기 관리 노드는 각각의 계산 노드에, 다시 데이터의 상기 제1 쉐어의 처음부터 데이터의 하나의 쉐어를 분배할 수 있으며; 또는 상기 남은 계산 노드들을 위해, 전송을 위해 데이터의 몇 개의 쉐어들이 선택되어 전송될 수 있으며; 또 다른 실시예에서, 데이터의 몇 개의 쉐어들은 순환 전송(cyclic transmission)의 방법 등으로 각각의 계산 노드에 전송될 수 있다. 바람직한 실시예들에서, n1=k, 즉 상기 제1층의 계산 노드들의 수는 상기 지정된 데이터가 나눠진 쉐어들의 수와 일치하며, 이 방법으로, 상기 관리 노드는 차례대로 상기 제1층의 계산 노드들 각각에 데이터의 쉐어 각각을 분배할 수 있으며, 각각의 계산 노드는 단지 데이터의 하나의 쉐어를 획득한다. 만약 상기 제1층의 계산 노드들 각각의 서브-노드들의 수가 또한 일치하게 만들어지고, 상기 제1층의 계산 노드들의 수가 k와 동일하다면, 이 분배 프로세스는 더 쉽게 될 것이다. 더 바람직한 실시예에서, 상기 제1층의 계산 노드들의 수는 상기 지정된 데이터의 쉐어들의 수와 일치할 뿐만 아니라, 상기 제1층의 계산 노드들 각각의 서브-노드들의 수도 일치한다. 설명을 간단히 하기 위해, 이 바람직한 실시예는 종종 비교를 위해 이하에서 사용된다.
단계 S204에서, 상기 계산 노드는 상기 계산 노드의 부모 노드에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 계산 노드의 서브-노드들에 분배하고, 그런 다음, 상기 계산 노드들 각각은 상기 계산 노드들의 가지의 데이터의 적어도 하나의 쉐어를 획득한다. 바람직하게는, 상기 계산 노드들은 상기 계산 노드들의 서브-노드들에게, 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 더 전송할 수 있다. 그리하여, 계속되는 데이터 전송을 편리하도록 하기 위해, 상기 계산 노드들 모두는 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기를 획득하도록 한다. 비록 상기 서브-태스크에서 데이터는 고성능 컴퓨팅 동작에서 인피니밴드를 통해 전달되지만, 상기 노드의 제어 정보는 TCP/IP 프로토콜을 통해 전달될 수 있다. 따라서, 각각의 노드는 방송 동안 그 트리의 구조(즉, 위에서 설명된 상기 계산 노드들 모두의 트리 구조), 및 그 트리에서의 각각의 노드의 IP 주소를 알 필요가 있다. 상기 트리의 구조는 서로 다르게 표현될 수 있다. 예를 들어, [m1, m2, m3]는 m2개의 가지들, m3개의 층들 그리고 총 m1개의 노드들을 갖는 트리를 표현한다. 각각의 노드의 IP 주소 정보는 계속해서 저장되고, 예를 들어, 두 개의 층으로 된 트리에 있어서, IP 정보 테이블에서, 상기 제1층에서 제i1 노드의 제j1 서브-노드(i1, j1 모두 0으로부터 시작함)는 i1*m2+j1의 인덱스 위치(indexed position)를 갖는다. 많아야 16k개의 노드들이 있고, 그래서 모든 IP 주소들을 위한 정보 테이블은 64KB이다. 상기 데이터 및 상기 트리 구조 데이터는 상기 방송의 시작시 각각의 노드로 분배될 것이다. 모든 노드들의 트리 구조의 정보량은 상기 네트워크 연결 테이블의 정보량보다 훨씬 적다는 것을 알 수 있다.
바람직한 실시예에서, 상기 계산 노드들이 두 개의 층들로 나눠질 경우, 제1층의 계산 노드들은 그것들의 서브-노드들에게 상기 관리 노드로부터 획득된 데이터의 하나 또는 그 이상의 쉐어들을 전송한다. 더 바람직한 실시예에서, 상기 제1층의 계산 노드들의 수는 상기 지정된 데이터의 쉐어들의 수와 일치하고, 상기 제1층의 계산 노드들의 서브-노드들의 수가 일치하는 경우, 단계 S204에서는, 상기 제1층의 계산 노드들은 그것들의 서브-노드들에게 상기 관리 노드로부터 획득된 데이터의 하나의 쉐어를 전송한다.
단계 S205에서, 상기 계산 노드들은 남은 지정된 데이터를 다른 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득한다. 바람직한 실시예에서, 각각의 계산 노드는 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 획득하고, 따라서 그것들은 네트워크 대역폭에 따라 단계 S203 및 S204에서 데이터 전송 시간을 평가할 수 있으며, 현재 어느 계산 노드들이 데이터의 어느 쉐어들을 갖는지를 컴퓨팅한다. 특히, 계산 노드에 있어서, 상기 계산 노드는 그것이 위치한 가지의 데이터의 쉐어를 획득한다. 도 3은 발명의 일 실시예에 따라 계산 노드가 남은 지정된 데이터를 어떻게 획득하는지에 관한 프로세스를 보여준다. 도 3에 따르면, 상기 방법은,
데이터의 어느 쉐어들이 상기 계산 노드에 의해 아직 획득되지 않았는지를 판단하는 단계(S301);
분배 시작 시간 및 현재 시간에 따라, 아직 획득되지 않은 데이터에서 데이터의 어느 쉐어들이 요청될 수 있는지를 평가하는 단계(S302);
요청될 수 있는 데이터로부터 획득될 데이터의 쉐어를 선택하는 단계(S303);
획득될 데이터의 쉐어가 어느 계산 노드들에 의해 획득되었는지를 결정하고, 그 계산 노드들을 후보 노드들(candidate nodes)로서 사용하는 단계(S304)를 포함한다. 바람직한 실시예에서, 상기 계산 노드들 모두는 두 개의 층들로 나눠지는데, 상기 지정된 데이터는 동일한 크기를 갖는 k개의 쉐어들로 나눠지고; 각각의 쉐어는 s비트의 크기를 가지며, 상기 제1층의 계산 노드들의 수는 상기 지정된 데이터의 쉐어들의 수와 일치하며, 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 일치(예를 들어, h개)하는 것으로 가정(assume)되며; 만약 네트워크 대역폭이 g이면, 상기 분배 시작 시간 후 0-ks/g의 시구간 동안, 상기 관리 노드는 데이터를 상기 제1층의 계산 노드들에 분배하며; 상기 관리 노드의 상기 분배의 시작 후 s/g 초의 시점에, 상기 제1층에서의 제1 계산 노드는 그것에 의해 획득된 데이터의 하나의 쉐어를 그것의 서브-노드들에 분배하기 시작한다. 상기 관리 노드의 상기 분배의 시작 후 i*s/g의 시점에, 상기 제1층에서의 제i 계산 노드는 그것의 가지에 속하는 데이터의 제1 쉐어를 획득하며, 그런 다음, 그것의 가지에 한 번에(at one time) 데이터의 쉐어를 분배하기 시작한다. 즉, 각각의 계산 노드는, 상기 획득된 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기, 및 상기 네트워크 대역폭에 따라, 하나의 시구간 후, 어느 계산 노드들이 상기 관리 노드에 의해 가지로 분배되는 데이터를 갖는지를 평가할 수 있다. 분배 동안, 상기 제1층의 계산 노드들은 다른 가지들의 계산 노드들로부터 데이터 요청들을 동시에 수신할 수 있고, 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신할 수 있으며, 바람직하게는, 그 가지 자체의 계산 노드들의 데이터가 분배될 때까지, 상기 제1층의 계산 노드들은, 단지 그것의 서브-노드들에 데이터를 분배할 뿐이며, 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하지 않으며, 다른 가지들의 계산 노드들에게 상기 데이터 요청을 송신하지 않으며, 그 가지 자체의 계산 노드들의 데이터가 분배된 후에야, 상기 제1층의 계산 노드들은, 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신할 수 있고, 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신할 수 있다. 다층화된 트리 구조에 있어서, 바람직하게는, 어떤 중간층의 계산 노드가 상기 특성을 가지며, 그래서 전체 네트워크에 데이터를 전송하기 위해 요구되는 시간은 더 쉽게 평가될 수 있고 또한 전송 효율은 더 높아질 것이다. 더 나아가, 제2층의 계산 노드들 각각에 있어서, 각각은 노드가 속하는 가지의 데이터를 수신하기 전에 다른 가지들의 계산 노드들에게 데이터 요청을 송신할 수 있고, 노드가 속하는 가지의 데이터를 수신한 후 다른 가지들의 계산 노드들로부터 상기 데이터 요청을 수신할 수 있다. 바람직하게는, 상기 제2층의 계산 노드들은, 그것이 계산 노드가 속하는 가지의 데이터를 수신한 후에야, 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청을 전송할 수 있다. 다층화된 트리 구조에 있어서, 바람직하게는, 어떤 중간층의 계산 노드가 상기 특성을 가지며, 그래서 각각의 계산 노드에 의해 그 가지의 데이터를 획득하기 위해 요구되는 시간은 더 쉽게 평가되고 또한 전송 효율은 더 높아질 것이다. 위에서 기술된 실시예들에 있어서와 같이, 상기 제1층에서의 제i 노드에 있어서, 제j 서브-노드에 의해 데이터의 제1 쉐어를 획득하기 위해 요구되는 시간은 전체 분배 프로세스의 시작 후 약 (i+j)*s/g 초라는 것을 쉽게 알 수 있다. 상기 계산 노드들 각각은, 현재 시간과 분배 시작 시간 사이의 차이에 따라서, 그리고 상기 계산 노드들의 분배 시간들에 따라서, 데이터의 어느 쉐어들이 요청될 수 있는지 그리고 어느 계산 노드들이 그 계산 노드가 대응하는 가지의 데이터의 쉐어를 획득했는지를 평가할 수 있다. 이 방법으로, 획득될 데이터의 선택된 쉐어에 있어서, 어느 계산 노드들에 의해 데이터의 쉐어가 획득되었는지가 결정될 수 있다.
단계 S305는 후보 노드들로부터 계산 노드를 선택하기 위한 단계이다. 이 선택 단계에서, 바람직한 실시예는, 전체 고성능 컴퓨팅 클러스터의 로드가 더 밸런스되도록, 랜덤한 선택을 이용하여 상기 계산 노드를 선택하는 단계이다. 물론, 당해 기술 분야에서 숙련된 자들이라면, 다른 수단들이 채택될 수 있다는 것을 알 수 있을 것이다. 다른 수단들의 예로서는, 상기 계산 노드들을 넘버링하는 단계, 중간으로 넘버링된 계산 노드들을 선택하는 단계, 최대로 넘버링된 계산 노드를 선택하는 단계 등이 있다.
단계 S306은 상기 선택된 계산 노드로부터 획득될 데이터의 쉐어를 요청하고 수신하는 단계이다. 상기 계산 노드들에 의해 획득된 가지의 데이터는 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기, 및 네트워크 대역폭과 같은 정보에 따라 평가된다. 네트워크에는 종종 많은 예상치 못한 상황들(예를 들어, 네트워크 혼잡(network congestion)에 기인한 대역폭 감소)이 발생하며, 그래서 상기 평가는 때로는 충분히 정확하지 않을 수 있다. 이 시점에서, 만약 평가된 시구간 후 상기 관리 노드에 의해 가지로 분배된 데이터를 갖는 계산 노드에 하나의 요청이 이슈된다면, 데이터의 쉐어가 존재하지 않는다는 응답이 수신될 것이다. 그런 다음, 그 계산 노드가 상기 관리 노드에 의해 그 가지로 분배된 데이터를 가진 후 평가된 시구간에 대해 교정(correction)이 이루어지며, 그 노드에 의해 평가된 전체 트리의 분배 상태는 순조롭게 진행되는 것으로 간주된다. 교정이 이루어진 후, 그 노드는 이후의 요청들의 실패를 방지하기 위해 다시 어느 정도까지는 전체 분배 프로세스의 예측(forecast)을 지연시킬 것이다.
단계 S307은 상기 지정된 데이터 모두가 획득될 때까지 단계 S301로 리턴하는 단계이다.
도 4는 발명의 다른 실시예에 따라 하나의 계산 노드가 남은 지정된 데이터를 어떻게 획득하는지에 관한 프로세스를 보여준다. 도 4에 따라, 단계 S401에서, 데이터의 어느 쉐어들이 그 계산 노드에 의해 아직 획득되지 않았는지가 판단되고; 여기서, 데이터의 하나 또는 그 이상의 쉐어는 그 계산 노드에 의해 획득되지 않을 수 있다. 단계 S402에서, 분배 시작 시간 및 현재 시간에 따라, 그 계산 노드가 갖지 않는 데이터 세그먼트들을 어느 노드들이 갖는지가 평가되며(이 노드들이 후보 노드들(candidate nodes)임); 여기서, 평가 방법은 도 3의 평가 방법과 유사하며, 데이터의 쉐어와 노드 간의 관련성(correspondence)이 획득된다. 단계 S403에서, 상기 후보 노드들로부터 하나의 계산 노드가 선택된다. 도 3에서와는 다르게, 도 3의 방법은 데이터의 쉐어로부터 계산 노드를 선택하는 것인 반면, 본 실시예(도 4의 실시예)에서는, 상기 계산 노드 상에 데이터의 쉐어를 획득하기 위해 계산 노드가 직접 선택된다. 나아가 상기 프로세스는, 상기 선택된 계산 노드로부터 획득될 데이터의 적어도 하나의 쉐어를 요청하고 수신하는 단계(S404), 및 상기 지정된 데이터 모두가 획득될 때까지 판단 단계로 리턴하는 단계(S405)를 더 포함한다. 본 실시예는, 또한 도 3에서의 실시예와 유사하게, 교정 문제를 가지며, 그래서 동일한 해결책을 갖는다.
상기 후보 노드들로부터 계산 노드를 선택하는 단계에서, 바람직한 실시예는, 전체 고성능 컴퓨팅 클러스터의 로드가 더 밸런스되도록, 랜덤한 선택을 이용하여 상기 계산 노드를 선택하는 단계를 포함한다. 물론, 당해 기술 분야에서 숙련된 자들이라면, 다른 수단들이 채택될 수 있다는 것을 알 수 있을 것이다. 다른 수단들의 예들로서는, 상기 계산 노드들을 넘버링하는 단계, 중간으로 넘버링된 계산 노드들을 선택하는 단계, 최대로 넘버링된 계산 노드를 선택하는 단계 등이 있다.
도 5는 상기 바람직한 실시예들에 따른 노드 전송을 보여준다. 도 5에서, 각각의 계산 노드 상의 숫자는 계산 노드가 데이터의 제1 쉐어를 수신하는 시점을 나타낸다. 시리얼 넘버 [i,j]는 트리에서 각각의 계산 노드의 위치를 나타내기 위해 사용될 수 있는데, 여기서 i는 노드가 위치하는 제i 가지를 나타내고, j는 계산 노드가 있는 부모 노드의 제j 서브-노드를 나타낸다. 제1층에는 k개의 계산 노드들이 있고(i<k), i는 음이 아닌 정수라고 가정한다. 또한 제1층의 계산 노드들 각각에 대해 제2층에 5개의 서브-노드들이 있다고 가정한다. 도 5에 도시된 바와 같이, 제1층의 계산 노드들 [i,0] 각각의 제2층의 서브-노드들의 시리얼 넘버들은 각각 [i,1], [i,2], [i,3], [i,4], [i,5]이다. 상기 바람직한 실시예들에 따라, 계산 노드 [3,2]는 그 가지의 계산 노드들에 분배된 데이터를 수신한 후, 그것은 그 노드의 넘버에 관한 그 시점의 데이터를 참조한다. 계산 노드들 [1,1], [1,2], [1,3], [1,4], [2,1], [2,2] 및 [2,3]은 그 가지의 계산 노드들에 분배된 데이터를 수신했고, 그런 다음, 계산 노드 [3,2]는 계산 노드들 [1,0], [1,1], [1,2], [1,3], [1,4] 중 하나에 대해 상기 지정된 데이터의 제1 쉐어를 요청할 수 있으며, 또는 계산 노드들 [2,0], [2,1], [2,2], [2,3] 중 하나에 대해 상기 지정된 데이터의 제2 쉐어를 요청할 수 있다. 그러나, 다른 계산 노드들에 있어서, 계산 노드 [3,2]는 다른 노드들이 그 가지의 데이터의 쉐어를 획득하지 않는다고 평가할 수 있고, 그래서 그것들에 대해 데이터 요청을 이슈하지 않는다.
상기 단계들을 통해, 상기 계산 노드는 상기 지정된 데이터 모두의 각각의 쉐어 모두를 획득할 수 있으며, 그런 다음 데이터의 상기 쉐어들을 완전한 지정된 데이터(complete specified data)로 결합할 수 있다. 본 발명의 방법의 사용에 의해, 상기 계산 노드들 모두는 더 짧은 시간에 상기 지정된 데이터 모두를 획득할 수 있는데, 이는 상기 지정된 데이터가 고성능 컴퓨팅 클러스터의 계산 노드들 모두를 다 통과하는 동안의 시구간을 감소시킬 수 있다.
그런 다음, 계산 노드가 상기 완전한 지정된 데이터를 획득할 때마다, 그것은 상기 관리 노드에 알리며(report); 상기 계산 노드들 모두가 알림(reporting)을 완료할 때, 상기 관리 노드는 고성능 컴퓨팅 클러스터에 상기 계산 노드들을 구성하여 추가 동작들을 수행할 수 있다.
도 6은 본 발명의 바람직한 실시예에 따라 특정 시점에서 노드들 간의 데이터 전송을 보여준다.
본 발명의 방법에 따른 데이터 전송 시간은 이하에서 평가되는데, 제1층의 계산 노드들의 수는 128개이고, 상기 제1층의 계산 노드들 각각의 서브-노드들의 수도 또한 128개이며, 데이터는 128개의 쉐어들로 나눠지며, 데이터의 각각의 쉐어의 크기는 50MB/128인 것으로 가정하며; 제2층의 마지막 노드, 즉 상기 제1층의 마지막 노드의 마지막 서브-노드가 그것의 부모 노드가 그것에 분배하는 데이터의 제1 쉐어를 수신하는 시점은, 전체 분배 프로세스의 시작 후 50MB/128 * (128+128)/(10G/8)=10/128=0.078초이며, 여기서 데이터의 하나의 쉐어의 크기는 50MB/128이다. 상기 관리 노드는 데이터의 각각의 쉐어를 한번에 상기 제1층의 노드들에 분배하고, 데이터를 하나의 노드에 분배하기 위해 요구되는 시간은 50MB/128/(10G/8)이며; 상기 제1층의 마지막 노드가 데이터의 제1 쉐어를 수신하는 시점은, 그 분배의 시작 후 50MB/128/(10G/8)*128이며; 그런 다음, 상기 제1층의 마지막 노드는 그것이 수신하는 데이터의 하나의 쉐어를 그것의 128개의 서브-노드들에 분배한다. 마지막 서브-노드가 데이터의 제1 쉐어를 수신하는 순간은 50MB/128(10G/8)*128+50MB/128/(10G/8)*128=50MB/128*(128+128)/(10G/8)=10/128=0.078초이다. 상기 제1층의 마지막 노드의 마지막 서브-노드가 그것의 데이터의 첫번째 쉐어를 수신한 후, 그것은 데이터의 남은 127개의 쉐어들을 다른 노드들에게 요청할 필요가 있다. 데이터의 남은 127개의 쉐어들을 전달하기 위해 요구되는 시간은 50MB/128*127/(10G/8)=0.039초이다. 그 노드가 데이터의 128개의 쉐어들 모두를 수신한 후, 그 노드는 전체 트리 구조의 마지막 노드이므로, 다른 노드들 모두는 데이터의 128개의 쉐어들 모두를 수신해야 하며, 그래서 총 전송 시간은 0.078+0.039=0.117초이다. 분명하게도, 본 발명의 전송 방법은 종래의 전송 방법에 비해 지정된 데이터의 전송 시간을 매우 감소시킨다.
동일한 발명 개념에 따라, 본 발명은 도 7에 도시된 고성능 컴퓨팅 클러스터에서 지정된 데이터를 분배하기 위한 시스템(700)을 더 개시한다. 도 7에 따라, 고성능 컴퓨팅 클러스터는 관리 노드 및 M개의 계산 노드들을 포함한다. M은 2보다 크거나 같은 정수이다. 상기 관리 노드는 상기 지정된 데이터를 상기 M개의 계산 노드들에 분배한다. 상기 시스템에서 상기 M개의 계산 노드들은 m개의 층들로 분배된다. m은 2보다 크거나 같은 정수이다. 그리고 상기 지정된 데이터는 k개의 쉐어들로 나눠진다. k는 2보다 크거나 같은 정수이다. 상기 시스템은, 상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하기 위한 관리 노드 분배기(701) - 여기서, 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 -; 상기 복수의 계산 노드들에 의해, 상기 복수의 계산 노드들의 부모 노드에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 복수의 계산 노드들의 서브-계산 노드들에 분배하기 위해, 상기 복수의 계산 노드들에 배치된 복수의 계산 노드 분배기들(702a, 702b, ..., 702f); 및 상기 계산 노드들에 의해, 남은 지정된 데이터를 다른 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하기 위해, 상기 복수의 계산 노드들에 배치된 복수의 데이터 요청기들(703a, 703b, ..., 703g)을 포함한다.
바람직한 실시에에서, 시스템(700)의 관리 노드 분배기는 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 상기 관리 노드의 서브-노드들에 더 분배하며, 상기 복수의 계산 노드 분배기들은 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 상기 계산 노드들의 서브-노드들에 더 분배한다.
더 바람직한 실시예에서, 시스템(700)의 데이터 요청기(703)는, 도 7 상에는 도시되어 있지 않으나, 다음의 수단들, 즉, 데이터의 어느 쉐어들이 상기 계산 노드에 의해 아직 획득되지 않았는지를 판단하기 위한 수단, 분배 시작 시간 및 현재 시간에 따라, 아직 획득되지 않은 데이터에서 데이터의 어느 쉐어들이 요청될 수 있는지를 평가하기 위한 제1 평가 수단; 요청될 수 있는 데이터로부터 획득될 데이터의 쉐어를 선택하기 위한 데이터 선택 수단; 획득될 데이터의 쉐어가 어느 계산 노드들에 의해 획득되었는지를 평가하기 위한, 그리고 그 계산 노드들을 후보 노드들로서 사용하기 위한, 제2 평가 수단; 상기 후보 노드들로부터 계산 노드를 선택하기 위한 노드 선택 수단; 및 상기 선택된 계산 노드로부터 획득될 데이터의 쉐어를 요청하고 수신하기 위한 요청 수신 수단을 더 포함한다. 상기 제1 및 제2 평가 수단에서, 각각의 계산 노드는, 상기 획득된 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기, 및 네트워크 대역폭에 따라, 어느 계산 노드들이 데이터의 어느 쉐어들을 갖는지를 평가한다.
더 바람직한 실시예에서, 시스템(700)의 데이터 요청기(703)는, 도 7 상에는 도시되어 있지 않으나, 데이터의 어느 쉐어들이 아직 상기 계산 노드에 의해 획득되지 않았는지를 판단하기 위한 판단 수단; 분배 시작 시간 및 현재 시간에 따라, 상기 계산 노드가 갖지 않는 데이터를 어느 계산 노드들(이 계산 노드들이 후보 노드들임)이 갖는지를 평가하기 위한 제3 평가 수단; 상기 후보 노드들로부터 계산 노드를 선택하기 위한 노드 선택 수단; 및 상기 선택된 계산 노드로부터 획득될 데이터의 적어도 하나의 쉐어를 요청 및 수신하기 위한 요청 수신 수단을 더 포함한다.
시스템(700)의 노드 선택 수단에서, 상기 계산 노드의 선택은 많은 실시예들을 갖는데, 하나의 바람직한 실시예는 랜덤한 선택이며, 여기서 상기 제1, 제2 및 제3 평가 수단은, 상기 획득된 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기, 및 네트워크 대역폭에 따라, 하나의 시구간 후, 상기 관리 노드에 의해 그 가지에 분배된 데이터를 어느 계산 노드들이 갖는지를 평가한다. 바람직하게는, 상기 요청 수신 수단이 하나의 요청을 이슈한 후, 만약 상기 요청된 노드가 데이터의 쉐어가 존재하지 않는다는 응답을 리턴하면, 그 평가에 대해 교정이 이뤄지는데, 간단한 방법은 상기 계산 노드가 상기 관리 노드에 의해 그 가지에 분배된 데이터를 가진 후 상기 평가된 시구간에 대한 교정을 행하는 것이다.
시스템(700)에서, 상기 계산 노드들에 의해 구성되는 트리 구조에서 관리 노드 분배기의 바람직한 실시예는, 그 가지의 데이터의 적어도 하나의 쉐어를 그것의 서브-노드들에 분배하며, 그 가지의 계산 노드들의 데이터가 분배될 때까지, 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하지 않으며 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청을 송신하지 않으며, 그 가지의 계산 노드들의 데이터가 분배된 후에야, 그것은 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하고 또한 그 데이터 요청들을 다른 가지들의 계산 노드들로 송신할 수 있다. 계산 노드가 그 노드가 속하는 가지의 데이터를 수신한 후에야, 그것은 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하며 또한 그 데이터 요청들을 다른 가지들의 계산 노드들에게 송신할 수 있다.
바람직한 실시예에서, 시스템(700)은 상기 계산 노드들 각각이 상기 완전한 지정된 데이터를 획득한 후 상기 관리 노드에 알리기 위해, 상기 복수의 계산 노드들에 배치된 복수의 리포터들을 더 포함한다.
상기 계산 노드들이 그것의 가지의 데이터를 획득했다는 것을 상기 시스템(700)이 더 쉽게 평가하기 위해, 그리고 상기 시스템 설계가 더 간단해지도록 하기 위해, 상기 시스템에서 M개의 계산 노드들은 다음의 조건들, 즉, m=2; 상기 제1층의 계산 노드들의 수는 k와 동일하고; 데이터의 상기 k개의 쉐어들의 크기는 일치하고; 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 일치하는, 조건들을 충족시킨다.
본 발명의 실시예들은 첨부되는 도면들을 참조하여 기술되었지만, 본 발명은 정확히 그 실시예들로 한정되는 것은 아니라는 것이 이해되어야 한다. 발명의 범위 및 사상을 벗어나지 않고서 많은 변형 예들 및 변경 예들이 있을 수 있다는 것은 당해 기술 분야에서 통상의 기술을 가진 자들에게는 분명할 것이다. 이들 모든 변형 예들 및 변경 예들은 첨부되는 청구항들에 의해 정의되는 발명의 범위 내에 포함되도록 의도된다.
당해 기술 분야에서 숙련된 자라면 이해할 수 있는 바와 같이, 본 발명의 측면들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명의 측면들은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예(이는 펌웨어, 상주 소프트웨어, 마이크로코드 등을 포함함)의 형태를 취할 수도 있고, 또는 소프트웨어 및 하드웨어 측면들 - 이것들 모두는 여기서는 일반적으로 "회로", "모듈" 또는 "시스템"으로 일컬어질 수 있음 - 의 형태를 취할 수도 있다. 더 나아가, 본 발명의 측면들은 하나 또는 그 이상의 실체적인 컴퓨터 판독가능 매체(들) - 이것(들)은 그 상에 구현된 컴퓨터 판독가능 프로그램 코드를 가짐 - 에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수도 있다.
하나 또는 그 이상의 컴퓨터 판독가능 매체(들)의 어떤 조합이든 이용될 수 있다. 상기 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 스토리지 매체일 수 있다. 컴퓨터 판독가능 스토리지 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스 또는 전파 매체, 또는 이것들의 적절한 조합일 수 있으나, 이러한 예들로 한정되는 것은 아니다. 상기 컴퓨터 판독가능 매체의 더 구체적인 예들(그러나, 그 예들을 총 망라한 것은 아님)은 다음의 것들, 즉, 하나 또는 그 이상의 와이어들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, RAM(random access memory), ROM(read-only memory), EEPROM(erasable programmable read-only memory), 플래쉬 메모리, 광섬유(optical fiber), 휴대용 CD-ROM(portable compact disc read-only memory), 광 스토리지 디바이스, 자기 스토리지 디바이스 또는 이것들의 적절한 조합을 포함할 것이다. 본 명세서의 맥락에서, 컴퓨터 판독가능 스토리지 매체 또는 컴퓨터 사용가능 매체는 실체적인 매체일 수 있는데, 이 매체는, 명령 실행 시스템, 장치 또는 디바이스에 의해, 또는 명령 실행 시스템, 장치 또는 디바이스와 함께 사용하기 위한, 프로그램을 포함, 저장, 전달, 전파 또는 전송할 수 있다. 컴퓨터 사용가능 매체는 그 내에, 예를 들어, 기저대역으로 또는 반송파의 일부로서, 구현된 컴퓨터 판독가능 프로그램 코드를 갖는 전파되는 데이터 신호를 포함할 수 있다. 컴퓨터 판독가능 매체 상에 구현되는 프로그램 코드는 적절한 매체를 사용하여 전송될 수 있는데, 이러한 매체의 예에는, 무선, 유선, 광섬유 케이블, RF 등, 또는 이것들의 적절한 조합이 포함될 수 있으나, 이러한 예들로 한정되는 것은 아니다.
본 발명의 측면들의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들로 작성될 수 있는데, 이러한 프로그래밍 언어들의 예들에는, 자바(Java), 스몰토크(Smalltalk), C++ 등과 같은 객체 지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 유사 프로그래밍 언어들과 같은 통상의 절차 프로그래밍 언어들이 포함된다. 상기 프로그램 코드는, 독립형 소프트웨어 패키지로서, 사용자의 컴퓨터상에서 전적으로 실행될 수도 있고, 부분적으로는 사용자의 컴퓨터상에서 그리고 부분적으로는 원격 컴퓨터 시스템상에서 또는 원격 컴퓨터 또는 서버상에서 실행될 수 있다. 후자의 시나리오에서, 상기 원격 컴퓨터는 어떤 유형의 네트워크를 통해서든 사용자의 컴퓨터에 연결될 수 있으며(이러한 네트워크의 예에는, LAN(local area network) 또는 WAN(wide area network)가 포함됨), 이 연결은 외부 컴퓨터에 대해 이뤄질 수 있다(예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해).
더 나아가, 흐름도들 및/또는 블록도들의 각각의 블록, 및 흐름도들 및/또는 블록도들 내의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터, 전용 컴퓨터, 또는 다른 프로그램가능 데이터 처리 장치의 프로세서에 제공되어 머신(machine)을 생성할 수 있으며, 그리하여, 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치의 프로세서를 통해 실행되는 상기 명령들은, 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 수단을 생성하도록 한다.
이들 컴퓨터 프로그램 명령들은 또한 컴퓨터 판독가능 매체에 저장될 수 있는데, 이 컴퓨터 판독가능 매체는 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들이 특정 방법으로 기능하도록 지시할 수 있다. 그리하여, 상기 컴퓨터 판독가능 매체에 저장된 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/작용을 구현하는 명령들을 포함하는 제조 물품을 생성하도록 한다.
상기 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들로 로드(load)되어 일련의 동작 단계들이 상기 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들 상에 수행되도록 하여, 컴퓨터로 구현된 프로세스를 생성할 수 있다. 그리하여, 상기 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 상기 명령들은 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 프로세스들을 제공하도록 한다.
도면들에서 흐름도 및 블록도들은 본 발명의 여러 가지 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현 예들의 아키텍쳐(architecture), 기능, 및 동작을 도시한다. 이 점에서, 흐름도 또는 블록도들 내의 각각의 블록은, 모듈(module), 세그먼트(segment), 또는 코드부(portion of code)를 나타낼 수 있으며, 명시된 논리적 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행가능 명령들을 포함한다. 몇몇 다른 구현 예들에서는, 상기 블록에 나타낸 기능들은 도면들에 나타내어진 순서를 벗어나서 일어날 수 있다는 것을 주목해야 한다. 예를 들어, 연속해서 보여지는 두 개의 블록들은, 사실상, 실질적으로 동시에 실행될 수도 있고, 또는 상기 블록들은 관련된 기능에 의존하여, 때로는 역순으로 실행될 수 있다. 또한 블록도들 및/또는 흐름도들의 각각의 블록, 및 블록도 및/또는 흐름도 내의 블록들의 조합들은 전용 하드웨어 기반의 시스템들에 의해 구현될 수 있는데, 이 전용 하드웨어 기반의 시스템들은 특정 기능들 또는 작용들, 또는 전용 하드웨어 및 컴퓨터 명령들의 조합을 수행한다.

Claims (20)

  1. 고성능 컴퓨팅 클러스터에서 지정된 데이터(specified data)를 분배하기 위한 방법에 있어서, 상기 고성능 컴퓨팅 클러스터는 관리 노드(management node) 및 M개 - M은 2보다 크거나 같은 정수임 - 의 계산 노드들(computation nodes)을 포함하고, 상기 관리 노드는 상기 지정된 데이터를 상기 M개의 계산 노드들에 분배하며, 상기 방법은,
    상기 M개의 계산 노드들을 m개 - m은 2보다 크거나 같은 정수임 - 의 층들로 나누는 단계;
    상기 지정된 데이터를 k개 - k는 2보다 크거나 같은 정수임 - 의 쉐어들(shares)로 나누는 단계;
    상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들(sub-nodes)인 제1층의 계산 노드들에 분배하는 단계 - 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 - ;
    상기 계산 노드들 각각에 의해, 상기 계산 노드들 각각의 부모 노드(parent node)에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 계산 노드들 각각의 서브-계산 노드들(sub-computation nodes)에 분배하는 단계; 및
    상기 계산 노드들 각각에 의해, 남은 지정된 데이터(the remaining specified data)를 다른(other) 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하는 단계를 포함하는
    방법.
  2. 청구항 1에 있어서,
    상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들인 제1층의 계산 노드들에 분배하는 단계는,
    상기 관리 노드에 의해, 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 상기 관리 노드의 서브-노드들에 분배하는 단계를 더 포함하고,
    상기 계산 노드들 각각에 의해, 상기 계산 노드들의 부모 노드에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 계산 노드들 각각의 서브-계산 노드들에 분배하는 단계는,
    상기 계산 노드들 각각에 의해, 상기 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 상기 계산 노드들 각각의 서브-노드들에 분배하는 단계를 더 포함하는
    방법.
  3. 청구항 2에 있어서, 상기 계산 노드들 각각에 의해, 남은 지정된 데이터를 다른 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하는 단계에서, 계산 노드에 의해 실행되는 단계들은,
    데이터의 어느 쉐어들이 아직 상기 계산 노드에 의해 획득되지 않았는지를 판단하는 단계;
    상기 분배 시작 시간 및 현재 시간에 따라, 아직 획득되지 않은 데이터에서 데이터의 어느 쉐어들이 요청될 수 있는지를 평가하는 단계;
    요청될 수 있는 데이터로부터 획득될 데이터의 쉐어를 선택하고, 상기 계산 노드들을 후보 노드들로서 사용하는 단계;
    상기 후보 노드들로부터 계산 노드를 선택하는 단계; 및
    상기 선택된 계산 노드로부터 획득될 데이터의 쉐어를 요청 및 수신하는 단계를 포함하는
    방법.
  4. 청구항 2에 있어서, 상기 계산 노드들 각각에 의해, 남은 지정된 데이터를 다른 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하는 단계에서, 계산 노드에 의해 실행되는 단계들은,
    데이터의 어느 쉐어들이 아직 상기 계산 노드에 의해 획득되지 않았는지를 판단하는 단계;
    상기 분배 시작 시간 및 현재 시간에 따라, 상기 계산 노드가 갖지 않는 데이터를 어느 계산 노드들 - 이 계산 노드들이 후보 노드들임 - 이 갖는지를 평가하는 단계 - ;
    상기 후보 노드들로부터 계산 노드를 선택하는 단계; 및
    상기 선택된 계산 노드로부터 획득될 데이터의 적어도 하나의 쉐어를 요청 및 수신하는 단계를 포함하는
    방법.
  5. 청구항 3 또는 4에 있어서, 상기 후보 노드들로부터 계산 노드를 선택하는 단계에서, 상기 계산 노드는 상기 후보 노드들로부터 랜덤하게 선택되는
    방법.
  6. 청구항 3 또는 4에 있어서, 상기 평가 단계들은 상기 획득된 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기 및 네트워크 대역폭에 따라 상기 계산 노드들 각각에 의해 실행되는
    방법.
  7. 청구항 6에 있어서, 상기 선택된 계산 노드로부터 획득될 데이터의 쉐어를 요청 및 수신한 후, 만약 상기 요청된 노드가 데이터의 상기 쉐어가 존재하지 않는다는 응답을 리턴하면, 상기 평가 단계들의 결과들에 대해 교정(correction)이 행해지는
    방법.
  8. 청구항 1에 있어서, 상기 계산 노드들에 의해 구성된 트리 구조에서, 중간의 노드는 상기 중간 노드의 가지(the branch)의 데이터의 하나 또는 그 이상의 쉐어를 자신의 서브-노드들에게 분배하며, 상기 가지의 계산 노드들의 데이터가 분배될 때까지, 상기 중간의 노드는 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하지 않고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신하지 않으며, 상기 가지의 계산 노드들의 데이터가 분배된 후에야, 상기 중간의 노드는 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신할 수 있는
    방법.
  9. 청구항 8에 있어서, 하나의 계산 노드는 그 노드가 속하는 가지의 데이터를 수신한 후에야, 상기 계산 노드는 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신하는
    방법.
  10. 청구항 1에 있어서, 상기 M개의 계산 노드들은, 다음의 (1) 내지 (4)의 조건들, 즉,
    (1) m=2;
    (2) 상기 제1층의 계산 노드들의 수는 k개임;
    (3) 데이터의 상기 k개의 쉐어들의 크기는 일치함; 및
    (4) 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 일치함;
    을 충족시키는
    방법.
  11. 고성능 컴퓨팅 클러스터에서 지정된 데이터(specified data)를 분배하기 위한 시스템에 있어서, 상기 고성능 컴퓨팅 클러스터는 관리 노드(management node) 및 M개 - M은 2보다 크거나 같은 정수임 - 의 계산 노드들(computation nodes)을 포함하고, 상기 관리 노드는 상기 지정된 데이터를 상기 M개의 계산 노드들에 분배하며, 상기 시스템에서 상기 M개의 계산 노드들은 m개 - m은 2보다 크거나 같은 정수임 - 의 층들로 나눠지고, 상기 지정된 데이터는 k개 - k는 2보다 크거나 같은 정수임 - 의 쉐어들(shares)로 나눠지며, 상기 시스템은,
    상기 관리 노드에 의해, 데이터의 상기 k개의 쉐어들을 상기 관리 노드의 서브-노드들(sub-nodes)인 제1층의 계산 노드들에 분배하기 위한 관리 노드 분배기 - 상기 제1층의 계산 노드들 각각은 내부에 데이터의 적어도 하나의 쉐어를 획득함 -;
    상기 계산 노드들 각각에 의해, 상기 계산 노드들 각각의 부모 노드(parent node)에 의해 분배된 데이터의 적어도 하나의 쉐어를 상기 계산 노드들 각각의 서브-계산 노드들(sub-computation nodes)에 분배하기 위해, 상기 복수의 계산 노드들에 배치된 복수의 계산 노드 분배기들; 및
    상기 계산 노드들 각각에 의해, 남은 지정된 데이터(the remaining specified data)를 다른(other) 계산 노드들에게 요청하고, 이에 따라 상기 지정된 데이터 모두를 획득하기 위해, 상기 복수의 계산 노드들에 배치된 복수의 데이터 요청기들을 포함하는
    시스템.
  12. 청구항 11에 있어서, 상기 관리 노드 분배기는, 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 및 상기 지정된 데이터의 각각의 쉐어의 크기를 상기 관리 노드의 서브-노드들에 더 분배하고,
    상기 계산 노드 분배기들은 상기 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터 각각의 쉐어의 크기를 상기 계산 노드들 각각의 서브-노드들에 더 분배하는
    시스템.
  13. 청구항 12에 있어서, 각각의 데이터 요청기는,
    데이터의 어느 쉐어들이 상기 계산 노드에 의해 아직 획득되지 않았는지를 판단하기 위한 판단 수단;
    상기 분배 시작 시간 및 현재 시간에 따라, 아직 획득되지 않은 데이터에서 데이터의 어느 쉐어들이 요청될 수 있는지를 평가하기 위한 제1 평가 수단;
    요청될 수 있는 데이터로부터 획득될 데이터의 쉐어를 선택하기 위한 데이터 선택 수단;
    어느 계산 노드들에 의해, 획득될 데이터의 쉐어가 획득되었는지를 평가하고, 상기 계산 노드들을 후보 노드들로서 사용하기 위한, 제2 평가 수단;
    상기 후보 노드들로부터 계산 노드를 선택하기 위한 노드 선택 수단; 및
    상기 선택된 계산 노드로부터 획득될 데이터의 쉐어를 요청 및 수신하기 위한 요청 수신 수단을 포함하는
    시스템.
  14. 청구항 12에 있어서, 각각의 데이터 요청기는,
    데이터의 어느 쉐어들이 상기 계산 노드에 의해 아직 획득되지 않았는지를 평가하기 위한 평가 수단;
    상기 분배 시작 시간 및 현재 시간에 따라, 상기 계산 노드가 갖지 않는 데이터를 어느 계산 노드들 - 이 계산 노드들이 후보 노드들임 - 이 갖는지를 평가하기 위한 제3 평가 수단;
    상기 후보 노드들로부터 계산 노드를 선택하기 위한 노드 선택 수단; 및
    상기 선택된 계산 노드로부터 획득될 데이터의 적어도 하나의 쉐어를 요청 및 수신하기 위한 요청 수신 수단을 포함하는
    시스템.
  15. 청구항 13 또는 14에 있어서, 상기 노드 선택 수단에서, 상기 계산 노드는 상기 후보 노드들로부터 랜덤하게 선택되는
    시스템.
  16. 청구항 13 또는 14에 있어서, 상기 제1, 제2 및 제3 평가 수단은 상기 획득된 분배 시작 시간, 상기 계산 노드들 모두의 트리 구조, 상기 지정된 데이터의 각각의 쉐어의 크기, 및 네트워크 대역폭에 따라 평가를 수행하는
    시스템.
  17. 청구항 16에 있어서, 상기 요청 수신 수단이 하나의 요청을 이슈(issue)한 후, 만약 상기 요청된 노드가 데이터의 상기 쉐어가 존재하지 않는다는 응답을 리턴하면, 상기 제1, 제2 및 제3 평가 수단에 의해 평가 결과들에 대한 교정(correction)이 행해지는
    시스템.
  18. 청구항 11에 있어서, 상기 계산 노드들에 의해 구성되는 트리 구조에서, 중간의 노드가 상기 중간 노드의 가지(the branch)의 데이터의 하나 또는 그 이상의 쉐어를 자신의 서브-노드들에 분배하며, 상기 가지의 계산 노드들의 데이터가 분배될 때까지, 상기 중간의 노드는 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하지 않고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청을 송신하지 않으며, 상기 가지의 계산 노드들의 데이터가 분배된 후에야, 상기 중간의 노드는 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신하는
    시스템.
  19. 청구항 18에 있어서, 계산 노드는 그 노드가 속하는 가지의 데이터를 수신한 후에야, 상기 계산 노드는 다른 가지들의 계산 노드들로부터 데이터 요청들을 수신하고 또한 다른 가지들의 계산 노드들에게 상기 데이터 요청들을 송신하는
    시스템.
  20. 청구항 11에 있어서, 상기 M개의 계산 노드들은 다음의 (1) 내지 (4)의 요건들, 즉,
    (1) m=2;
    (2) 상기 제1층의 계산 노드들의 수는 k개임;
    (3) 데이터의 상기 k개의 쉐어들의 크기는 일치함; 및
    (4) 상기 제1층의 계산 노드들 각각의 서브-노드들의 수는 일치함;
    을 충족시키는
    시스템.
KR1020100120204A 2009-11-30 2010-11-30 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템 KR20110060849A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN200910225838.X 2009-11-30
CN200910225838.XA CN102486739B (zh) 2009-11-30 2009-11-30 高性能计算集群中分发数据的方法和系统

Publications (1)

Publication Number Publication Date
KR20110060849A true KR20110060849A (ko) 2011-06-08

Family

ID=44083299

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100120204A KR20110060849A (ko) 2009-11-30 2010-11-30 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템

Country Status (4)

Country Link
US (1) US8671134B2 (ko)
JP (1) JP5681458B2 (ko)
KR (1) KR20110060849A (ko)
CN (1) CN102486739B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150088045A (ko) * 2014-01-23 2015-07-31 서울대학교산학협력단 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
KR20160042848A (ko) * 2013-01-18 2016-04-20 서울대학교산학협력단 클러스터 시스템의 계산 디바이스 가상화 방법 및 그 시스템
US10097618B2 (en) 2014-01-15 2018-10-09 Snu R&Db Foundation Cluster system and communication method in cluster system

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9429677B2 (en) 2011-10-11 2016-08-30 Saudi Arabian Oil Company High performance and grid computing with fault tolerant data distributors quality of service
WO2013055840A2 (en) * 2011-10-11 2013-04-18 Saudi Arabian Oil Company High performance and grid computing with quality of service control
US9482769B2 (en) * 2011-10-11 2016-11-01 Saudi Arabian Oil Company High performance and grid computing with partitioning quality of service control
US9674033B2 (en) * 2011-10-11 2017-06-06 Saudi Arabian Oil Company High performance and grid computing with liveliness and deadlines fault tolerant data distributor quality of service
KR101694307B1 (ko) * 2012-02-29 2017-01-09 한국전자통신연구원 디스크 캐쉬 효과를 극대화하는 워크플로우 작업 스케줄링 장치 및 방법
US9588994B2 (en) * 2012-03-02 2017-03-07 International Business Machines Corporation Transferring task execution in a distributed storage and task network
JPWO2014103078A1 (ja) * 2012-12-28 2017-01-12 富士通株式会社 情報処理システム、情報処理システムの管理方法および情報処理システムの管理プログラム
US9396039B1 (en) * 2013-09-20 2016-07-19 Amazon Technologies, Inc. Scalable load testing using a queue
JP6303806B2 (ja) 2014-05-22 2018-04-04 富士通株式会社 並列計算機システム,プロセス制御プログラム,及び並列計算機システムの制御方法
US9495217B2 (en) 2014-07-29 2016-11-15 International Business Machines Corporation Empirical determination of adapter affinity in high performance computing (HPC) environment
US10839420B2 (en) * 2015-07-31 2020-11-17 International Business Machines Corporation Constrained large-data markdown optimizations based upon markdown budget
CN105119994B (zh) * 2015-08-25 2018-12-18 广州视源电子科技股份有限公司 一种文件传输方法及系统
US9935893B2 (en) * 2016-03-28 2018-04-03 The Travelers Indemnity Company Systems and methods for dynamically allocating computing tasks to computer resources in a distributed processing environment
WO2018009396A1 (en) 2016-07-05 2018-01-11 Saudi Arabian Oil Company High performance and grid computing with liveliness and deadlines fault tolerant data distributor quality of service
CN106227878B (zh) * 2016-08-03 2020-01-14 杭州数梦工场科技有限公司 一种搜索方法和装置
CN109032610B (zh) * 2017-06-08 2024-04-09 杭州海康威视数字技术股份有限公司 一种程序包部署方法、电子设备及分布式系统
CN112751885A (zh) * 2019-10-29 2021-05-04 贵州白山云科技股份有限公司 数据传输系统和方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552233B2 (en) * 2000-03-16 2009-06-23 Adara Networks, Inc. System and method for information object routing in computer networks
US7418470B2 (en) * 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
US6732147B1 (en) * 2000-07-31 2004-05-04 The Boeing Company Leaving a broadcast channel
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
CN100525288C (zh) * 2000-10-26 2009-08-05 普里斯梅迪亚网络有限公司 网络中大有效负载分布的方法和装置
US7313596B2 (en) * 2001-04-09 2007-12-25 Nippon Telegraph & Telephone Corporation Multicast data communication method, multicast data communication system, repeater, repeating method, and medium for storing repeating programs
US20030167295A1 (en) * 2002-03-01 2003-09-04 Verity, Inc. Automatic network load balancing using self-replicating resources
US7240107B2 (en) * 2002-10-15 2007-07-03 International Business Machines Corporation Self replicating installation method for operating system clusters
WO2004042965A2 (en) * 2002-11-05 2004-05-21 Lightfleet Corporation Optical fan-out and broadcast interconnect
US7792982B2 (en) * 2003-01-07 2010-09-07 Microsoft Corporation System and method for distributing streaming content through cooperative networking
JP2006227763A (ja) * 2005-02-15 2006-08-31 Nec Soft Ltd データ共有システム、データ共有方法及びプログラム
JP2007251805A (ja) * 2006-03-17 2007-09-27 Mitsubishi Electric Corp 通信装置およびネットワークシステム
JP4611922B2 (ja) * 2006-03-28 2011-01-12 富士通株式会社 制御プログラム、制御方法および制御装置
US20070233805A1 (en) * 2006-04-02 2007-10-04 Mentor Graphics Corp. Distribution of parallel operations
US7738443B2 (en) * 2007-06-26 2010-06-15 International Business Machines Corporation Asynchronous broadcast for ordered delivery between compute nodes in a parallel computing system where packet header space is limited
US7761687B2 (en) * 2007-06-26 2010-07-20 International Business Machines Corporation Ultrascalable petaflop parallel supercomputer
US8279766B2 (en) * 2007-07-31 2012-10-02 The Hong Kong University Of Science And Technology Interior-node-disjoint multi-tree topology formation
US8381212B2 (en) * 2007-10-09 2013-02-19 International Business Machines Corporation Dynamic allocation and partitioning of compute nodes in hierarchical job scheduling
JP4110205B1 (ja) * 2007-12-28 2008-07-02 三菱電機株式会社 データ転送処理装置およびデータ転送システム
CN102047640B (zh) * 2008-05-28 2016-04-13 汤姆逊许可证公司 多个头的分层级集群化的对等现场流式传输系统
US20100094972A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Hybrid distributed streaming system comprising high-bandwidth servers and peer-to-peer devices

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160042848A (ko) * 2013-01-18 2016-04-20 서울대학교산학협력단 클러스터 시스템의 계산 디바이스 가상화 방법 및 그 시스템
US10097618B2 (en) 2014-01-15 2018-10-09 Snu R&Db Foundation Cluster system and communication method in cluster system
KR20150088045A (ko) * 2014-01-23 2015-07-31 서울대학교산학협력단 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
US9396033B2 (en) 2014-01-23 2016-07-19 Snu R&Db Foundation Method of executing parallel application on manycore cluster system and the manycore cluster system

Also Published As

Publication number Publication date
JP5681458B2 (ja) 2015-03-11
CN102486739A (zh) 2012-06-06
JP2011118899A (ja) 2011-06-16
CN102486739B (zh) 2015-03-25
US8671134B2 (en) 2014-03-11
US20110138396A1 (en) 2011-06-09

Similar Documents

Publication Publication Date Title
KR20110060849A (ko) 고성능 컴퓨팅 클러스터에서의 데이터 분배 방법 및 시스템
US8959226B2 (en) Load balancing workload groups
US20200364608A1 (en) Communicating in a federated learning environment
CN104969213B (zh) 用于低延迟数据存取的数据流分割
CN107688492B (zh) 资源的控制方法、装置和集群资源管理系统
KR20180027326A (ko) 확장 가능한 멀티-스테이지 데이터 처리 시스템들에서의 효율적인 데이터 캐싱 관리
US8397293B2 (en) Suspicious node detection and recovery in mapreduce computing
CN111813330B (zh) 用于分派输入-输出的系统及方法
CN106453146B (zh) 私有云计算资源的分配方法、系统、设备和可读存储介质
CN109565515A (zh) 分布式资源管理系统中的动态租户结构调整的系统、设备和过程
US9330055B2 (en) Modular architecture for extreme-scale distributed processing applications
US8903981B2 (en) Method and system for achieving better efficiency in a client grid using node resource usage and tracking
CN108431796A (zh) 分布式资源管理系统和方法
CN103607424B (zh) 一种服务器连接方法及服务器系统
CN103399894A (zh) 一种基于共享存储池的分布式事务处理方法
CN108153494B (zh) 一种io请求处理方法及装置
CN104750614B (zh) 用于管理存储器的方法和装置
CN110178119B (zh) 处理业务请求的方法、装置与存储系统
KR101704928B1 (ko) Gpu를 이용한 파일의 분산 저장 시스템 및 방법
US20130290669A1 (en) Physical memory usage prediction
CN113760940A (zh) 应用于分布式系统的配额管理方法、装置、设备及介质
US20060203813A1 (en) System and method for managing a main memory of a network server
CN116436978B (zh) 面向云计算的内存分配方法、内存获取方法、装置和设备
WO2017215249A1 (zh) 分配网际协议ip磁盘的方法及装置
Emerson et al. An atomic-multicast service for scalable in-memory transaction systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application