KR20150019359A - 분산 시스템에서 데이터를 처리하는 방법 - Google Patents
분산 시스템에서 데이터를 처리하는 방법 Download PDFInfo
- Publication number
- KR20150019359A KR20150019359A KR20130096118A KR20130096118A KR20150019359A KR 20150019359 A KR20150019359 A KR 20150019359A KR 20130096118 A KR20130096118 A KR 20130096118A KR 20130096118 A KR20130096118 A KR 20130096118A KR 20150019359 A KR20150019359 A KR 20150019359A
- Authority
- KR
- South Korea
- Prior art keywords
- core
- data
- gpu
- distributed system
- converted
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 29
- 238000003672 processing method Methods 0.000 claims abstract description 14
- 238000006243 chemical reaction Methods 0.000 claims abstract description 12
- 238000007792 addition Methods 0.000 claims description 5
- 239000000470 constituent Substances 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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
-
- 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 or look ahead
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
분산 시스템에서 새로운 노드의 추가 없이 데이터 처리 속도를 향상시키기 위한 데이터 처리 방법이 제공된다. 상기 방법은 분산 시스템 구성 노드에 구비된 GPU의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 단계; 상기 분산 시스템 구성 노드에 구비된 CPU의 코어 구비 개수와 상기 코어 환산 개수를 합산하여 코어 합산 개수를 연산하는 단계; 상기 분산 시스템 구성 노드에 할당된 작업 데이터를 상기 코어 합산 개수만큼의 작업 단위 데이터로 분할하는 단계; 및 상기 각각의 작업 단위 데이터 중 상기 코어 구비 개수만큼의 작업 단위 데이터는 상기 분산 시스템 구성 노드의 CPU에, 상기 코어 환산 개수만큼의 작업 단위 데이터는 상기 분산 시스템 구성 노드의 GPU에 각각 할당하는 단계를 포함할 수 있다.
Description
본 발명은 분산 시스템에서 데이터를 처리하는 방법에 관한 것이다.
하둡(Hadoop)과 맵리듀스(MapReduce)는 분산 컴퓨팅을 구현하기 위해 사용될 수 있는 기술이다. 이러한 기술에서는 클러스터의 크기를 증가시킬수록 데이터의 처리 속도 또한 증가하지만, 클러스터의 크기를 증가시키는 것은 한계가 있다. 따라서, 이러한 클러스터에서 새로운 노드를 추가시키지 않고, 데이터 처리 속도를 빠르게 하기 위한 기술이 필요하다.
본 발명이 해결하려는 과제는, 분산 시스템에서 새로운 노드의 추가 없이 데이터 처리 속도를 향상시키기 위한 데이터 처리 방법을 제공하는 것이다.
본 발명이 해결하려는 과제는 이상에서 언급한 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 데이터 처리 방법의 일 태양은, 분산 시스템 구성 노드에 구비된 GPU의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 단계; 분산 시스템 구성 노드에 구비된 CPU의 코어 구비 개수와 코어 환산 개수를 합산하여 코어 합산 개수를 연산하는 단계; 분산 시스템 구성 노드에 할당된 작업 데이터를 코어 합산 개수만큼의 작업 단위 데이터로 분할하는 단계; 및 각각의 작업 단위 데이터 중 코어 구비 개수만큼의 작업 단위 데이터는 분산 시스템 구성 노드의 CPU에, 코어 환산 개수만큼의 작업 단위 데이터는 분산 시스템 구성 노드의 GPU에 각각 할당하는 단계를 포함할 수 있다.
상기 코어 환산 개수를 연산하는 단계는, 하나의 GPU 프로세싱 블록 개수의 평균치를 기준으로 하나의 CPU 코어 환산 개수를 가리키는 코어 환산 테이블을 참조하여 상기 코어 환산 개수를 연산하는 단계를 포함할 수 있다.
상기 코어 환산 개수를 연산하는 단계는, 상기 작업 데이터의 속성에 따른 GPU 할당 가중치를 상기 연산된 코어 환산 개수에 반영하여 보정된 코어 환산 개수를 연산하는 단계를 포함하고, 상기 코어 합산 개수를 연산하는 단계는, 상기 분산 시스템 구성 노드에 구비된 CPU의 코어 구비 개수와 상기 보정된 코어 환산 개수를 합산하여 코어 합산 개수를 연산하는 단계를 포함할 수 있다.
상기 작업 데이터의 속성에 따른 GPU 할당 가중치를 상기 연산된 코어 환산 개수에 반영하여 보정된 코어 환산 개수를 연산하는 단계는, 상기 작업 데이터에 대한 CPU상에서의 처리 속도와 GPU상에서의 처리 속도를 비교하여 GPU상에서의 처리 속도의 향상 정도를 나타내는 속도 향상 지수를 가중치로서 상기 연산된 코어 환산 개수에 반영하는 단계를 포함할 수 있다.
상기 속도 향상 지수는, 상기 GPU상에서의 처리 속도의 향상 정도에 따른 가중치를 가리키는 속도 향상 지수 테이블을 참조하여 연산될 수 있다.
상기 코어 환산 개수만큼의 작업 단위 데이터는 상기 분산 시스템 구성 노드의 GPU에 각각 할당하는 단계는, 상기 코어 환산 개수만큼의 작업 단위 데이터가, 각각의 크기가 상기 GPU 각각의 프로세싱 블록 개수에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 상기 GPU 각각에 할당되는 단계를 더 포함할 수 있다.
상기 분산 시스템 구성 노드에 구비된 CPU 중 하나에는 상기 작업 단위 데이터를 상기 GPU에 할당하는 제어 연산을 수행하는 GPU 제어 코어가 포함될 수 있다.
상기 GPU 제어 코어는 상기 코어 구비 개수에서 제외되고, 상기 작업 단위 데이터를 할당 받지 않을 수 있다.
상기 분산 시스템 구성 노드에 구비된 CPU 중 하나에는 상기 작업 단위 데이터를 다른 CPU 코어에 할당하는 제어 연산을 수행하는 작업 단위 데이터 분배 코어가 포함될 수 있다.
상기 작업 단위 데이터 분배 코어는 상기 코어 구비 개수에서 제외되고, 상기 작업 단위 데이터를 할당 받지 않을 수 있다.
상기 과제를 해결하기 위한 본 발명의 데이터 처리 방법의 다른 태양은, 분산 시스템 구성 노드에 구비된 제1 타입 프로세서를 기준으로 분산 시스템 구성 노드에 구비된 복수의 제2 타입 프로세서 개수에 상당하는 프로세서 환산 개수를 연산하는 단계; 분산 시스템 구성 노드에 구비된 제1 타입 프로세서의 개수와 프로세서 환산 개수를 합산하여 프로세서 합산 개수를 연산하는 단계; 분산 시스템 구성 노드에 할당된 작업 데이터를 프로세서 합산 개수만큼의 작업 단위 데이터로 분할하는 단계; 각각의 작업 단위 데이터 중 제1 타입 프로세서의 개수만큼의 작업 단위 데이터를 분산 시스템 구성 노드의 제1 타입 프로세서에 할당하는 단계; 및 각각의 작업 단위 데이터 중 환산 개수만큼의 작업 단위 데이터를 분산 시스템 구성 노드의 복수의 제2 프로세서에 할당하는 단계를 포함하되, 프로세서 환산 개수만큼의 작업 단위 데이터는, 각각의 크기가 복수의 제2 프로세서 각각의 단위시간 당 작업 처리량에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 복수의 제2 프로세서 각각에 할당될 수 있다.
상기 프로세서 환산 개수를 연산하는 단계는, 상기 작업 데이터의 속성에 따른 GPU 할당 가중치를 상기 프로세서 환산 개수에 반영하여 보정된 프로세서 환산 개수를 연산하는 단계를 포함하고, 상기 프로세서 합산 개수를 연산하는 단계는, 상기 분산 시스템 구성 노드에 구비된 상기 제1 타입 프로세서의 개수와 상기 보정된 프로세서 환산 개수를 합산하여 프로세서 합산 개수를 연산하는 단계를 포함할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 분산 시스템을 설명하기 위한 개략도이다.
도 2는 도 1에 도시된 마스터 노드를 설명하기 위한 도면이다.
도 3은 도 1에 도시된 슬레이브 노드를 설명하기 위한 도면이다.
도 4는 도 1에 도시된 슬레이브 노드의 물리적 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 방법을 설명하기 위한 개략도이다.
도 6은 본 발명의 일 실시예에 따른 슬레이브 노드에서 데이터 처리 과정을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 분산 시스템을 구성하는 슬레이브 노드에 구비된 CPU와 GPU를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따라 분산 시스템을 구성하는 슬레이브 노드에 구비된 GPU의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 것을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따라 입력 데이터를 CPU와 GPU에 분배하는 과정을 나타낸 도면이다.
도 10은 본 발명의 다른 실시예에 따라 입력 데이터를 CPU와 GPU에 분배하는 과정을 나타낸 도면이다.
도 11은 본 발명의 일 실시예에 따른 데이터 처리 방법을 나타낸 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 데이터 처리 방법을 나타낸 흐름도이다.
도 2는 도 1에 도시된 마스터 노드를 설명하기 위한 도면이다.
도 3은 도 1에 도시된 슬레이브 노드를 설명하기 위한 도면이다.
도 4는 도 1에 도시된 슬레이브 노드의 물리적 구조를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 방법을 설명하기 위한 개략도이다.
도 6은 본 발명의 일 실시예에 따른 슬레이브 노드에서 데이터 처리 과정을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 분산 시스템을 구성하는 슬레이브 노드에 구비된 CPU와 GPU를 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따라 분산 시스템을 구성하는 슬레이브 노드에 구비된 GPU의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 것을 설명하기 위한 도면이다.
도 9는 본 발명의 일 실시예에 따라 입력 데이터를 CPU와 GPU에 분배하는 과정을 나타낸 도면이다.
도 10은 본 발명의 다른 실시예에 따라 입력 데이터를 CPU와 GPU에 분배하는 과정을 나타낸 도면이다.
도 11은 본 발명의 일 실시예에 따른 데이터 처리 방법을 나타낸 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 데이터 처리 방법을 나타낸 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본 발명의 일 실시예에 따른 분산 시스템을 설명하기 위한 개략도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 분산 시스템은 클라이언트(100), 마스터 노드(200) 및 슬레이브 노드(300)를 포함할 수 있다. 분산 시스템을 구성하는 클러스터는 하나 이상의 마스터 노드(200)와 하나 이상의 슬레이브 노드(300)를 포함할 수 있다. 도 1에서는 하나의 마스터 노드(200)와 n 개의 슬레이브 노드(300)을 도시하고 있다. 본 발명의 몇몇의 실시예에서 클러스터는, 예를 들면, 하둡(Hadoop) 아키텍처를 채용한 하둡 클러스터일 수 있다.
클라이언트(100)는 클러스터에 처리할 데이터를 전달하고, 데이터 처리가 완료된 결과물을 인출하거나 열람할 수 있다. 본 발명의 몇몇의 실시예에 따른 클라이언트(100)는 클러스터에 처리할 데이터를 전달할 때 그 데이터가 어떤 방식으로 처리되어야 하는지 특정할 수도 있다.
클라이언트(100)는 마스터 노드(200) 또는 슬레이브 노드(300)와 연결되어 각종 정보를 송수신 할 수 있다. 예를 들면, 클라이언트(100)는 마스터 노드(200)에게 처리할 데이터를 저장하라는 요청을 할 수 있고, 마스터 노드(200)는 클라이언트(100)에게 데이터를 저장하기 위한 슬레이브 노드(300)를 지정해 줄 수 있다. 그리고 클라이언트(200)는 마스터 노드(200)가 지정한 슬레이브 노드(300)에 처리할 데이터를 저장할 수 있다. 다른 예를 들면, 클라이언트(100)는 마스터 노드(200)에게 클러스터에 저장된 데이터에 대해 계산을 수행하라는 요청을 할 수 있고, 마스터 노드(200)는 클러스터에 저장된 데이터를 계산하기 위한 작업을 생성하여 슬레이브 노드(300)에 전달할 수 있다. 그리고 클라이언트(200)는 슬레이브 노드(300)로부터 데이터를 처리 또는 계산한 결과 값을 전달받을 수 있다.
클라이언트(100), 마스터 노드(200) 및 슬레이브(300)는 네트워크로 연결될 수 있다. 본 발명의 몇몇의 실시예에 따르면, 상기 네트워크는 WIFI를 비롯한 무선 네트워크일 수 있고, LAN을 비롯한 유선 네트워크일 수 있으나 이에 한정되는 것은 아니다. 한편, 본 발명의 일 실시예에서 클라이언트(100), 마스터 노드(200) 및 슬레이브(300)는 각각 단일의 서버일 수 있다. 본 발명의 다른 실시예에서 클라이언트(100), 마스터 노드(200) 및 슬레이브(300) 중 적어도 하나는 다중 롤(role) 역할을 하는 하나의 서버에 포함될 수도 있다. 여기서 서버는 물리적 서버 그 자체이거나, 데스크탑 및 노트북을 비롯한 개인용 컴퓨터, 태블릿, 스마트폰 상에서 구동되는 서버일 수 있다. 특히, 본 발명의 일 실시예에서 상기 서버는 랙 서버(rack server)일 수 있다.
도 2는 도 1에 도시된 마스터 노드를 설명하기 위한 도면이고, 도 3은 도 1에 도시된 슬레이브 노드를 설명하기 위한 도면이다. 클러스터를 이루는 하나 이상의 마스터 노드(200)와 하나 이상의 슬레이브 노드(300)는 분산 데이터를 처리하는 관점과 분산 데이터를 저장하는 관점에서 설명될 수 있다. 분산 데이터를 처리하는 관점은 클러스터에 저장된 데이터를 처리하기 위한 작업을 생성하는 것과, 생성된 작업으로 클러스터에 저장된 데이터를 처리하는 것을 포함한다. 반면, 분산 데이터를 저장하는 관점은 클러스터에 처리할 데이터를 저장하는 것과, 슬레이브 노드(300)로부터 제공되는 처리 결과를 클라이언트(100)가 읽어들이는 것을 포함한다. 한편, 본 발명의 일 실시예에 따른 하둡 클러스터에서, 분산 데이터를 처리하는 관점에서는 맵리듀스(MapReduce)를, 분산 데이터를 저장하는 관점에서는 HDFS(Hadoop Distributed File System)를 고려할 수 있다. 이하에서는, 이러한 관점에서 마스터 노드(200) 및 슬레이브 노드(300)를 도 2 및 도 3을 참조하여 설명하도록 한다.
도 2를 참조하면, 마스터 노드(200)는 잡 트래커(JobTracker)(202) 및 네임 노드(NameNode)(204)를 포함할 수 있다. 본 발명의 일 실시예에서 잡 트래커(202) 및 네임 노드(204)는 마스터 노드(200) 상에 생성된 서버 인스턴스일 수 있다. 잡 트래커(202)는 분산 데이터를 처리하는 관점에 해당하는 인스턴스로서, 예를 들면, 클라이언트(100)가 데이터 처리 요청을 한 경우 클러스터에 저장된 데이터를 계산하기 위한 작업을 생성하여 슬레이브 노드(300)에 전달할 수 있다. 네임 노드(204)는 분산 데이터를 저장하는 관점에 해당하는 인스턴스로서, 예를 들면, 클라이언트(100)가 데이터 저장 요청을 한 경우 데이터를 저장하기 위한 슬레이브 노드(300)를 지정해 줄 수 있다.
도 3을 참조하면, 슬레이브 노드(300)는 태스크 트래커(TaskTracker)(302) 및 데이터 노드(DataNode)를 포함할 수 있다. 본 발명의 일 실시예에서 태스크 트래커(302) 및 데이터 노드(304)는 슬레이브 노드(300) 상에 생성된 서버 인스턴스일 수 있다. 태스크 트래커(302)는 분산 데이터를 처리하는 관점에 해당하는 인스턴스로서, 예를 들면, 클라이언트(100)의 요청에 따라 슬레이브 노드(300)에 저장된 데이터를 처리하는 작업을 수행할 수 있다. 데이터 노드(304)는 분산 데이터를 저장하는 관점에 해당하는 인스턴스로서, 예를 들면, 클라이언트(100)의 요청에 따라 처리할 데이터를 저장할 수 있다.
도 4는 도 1에 도시된 슬레이브 노드의 물리적 구조를 설명하기 위한 도면이다. 슬레이브 노드(300)는 클러스터에 저장된 데이터를 처리하기 위한 프로세서(402) 및 처리할 데이터나 데이터 처리 결과를 저장하기 위한 스토리지(500)를 포함할 수 있다. 프로세서(402)는 CPU(Central Processing Unit)(402) 및 GPU(Graphics Processing Unit)(404) 중 적어도 하나를 포함할 수 있다. 본 발명의 몇몇의 실시예에서 프로세서(402)는 복수의 CPU(402) 및 복수의 GPU(404)를 포함할 수도 있다. 한편, 본 발명의 몇몇의 실시예에서 프로세서(400)는 FPGA(Field Programmable Gate Array)를 비롯한 반도체 소자일 수도 있다. 스토리지(500)는 하드 디스크 드라이브(Hard Disk Drive, HDD), 솔리드 스테이트 드라이브(Solid State Drive, SSD), CD와 DVD를 비롯한 광학 드라이브 등을 포함할 수 있다. 도 4에 도시되지는 않았지만 슬레이브 노드(300)는 RAM을 비롯한 메모리 장치를 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 데이터 처리 방법을 설명하기 위한 개략도이다.
도 5를 참조하면, 클라이언트(100)는, 예를 들면 사용자로부터, 처리할 데이터에 해당하는 입력 데이터(600)를 입력받을 수 있다. 입력 데이터(600)는 복수의 슬레이브 노드에서 분산 처리되기 위해 하나 이상의 데이터 블록인, 각 노드에 대한 작업 데이터 블록(600a, 600b, 600c)으로 분할될 수 있다. 도 5에서는 본 발명의 일 실시예에 따라 입력 데이터(600)가 3 개의 작업 데이터 블록(600a, 600b, 600c)으로 분할된 것을 나타낸다.
작업 데이터 블록(600a, 600b, 600c)은 각각의 슬레이브 노드(300a, 300b, 300c)에 저장된 후 각 슬레이브 노드(300a, 300b, 300c)의 프로세서(400)에 의해 처리된다. 다음으로, 각 슬레이브 노드(300a, 300b, 300c)는 작업 데이터 블록(600a, 600b, 600c)을 처리(예컨대, 계산)한 결과를 결과 데이터(610a, 610b, 610c)로서 산출하여, 예를 들면 스토리지(500)에 저장할 수 있다. 본 발명의 일 실시예에서, 예를 들면, 클러스터를 구성하는 어느 하나의 슬레이브 노드가 각 슬레이브 노드(300a, 300b, 300c)의 스토리지(500)에 저장된 결과 데이터(610a, 610b, 610c)를 하나의 최종 결과(620)로 취합할 수 있으며, 클라이언트(100)는 이러한 최종 결과(620)를 인출하거나 열람할 수 있다.
도 6은 본 발명의 일 실시예에 따른 슬레이브 노드에서 데이터 처리 과정을 설명하기 위한 도면이다.
도 6을 참조하면, 슬레이브 노드(300a)는 작업 데이터 블록(600a)를 수신할 수 있다. 본 발명의 일 실시예에서, 슬레이브 노드(300a)는 작업 데이터 블록(600a)을 스토리지(500)에 저장하거나 메모리에 적재할 수 있다. 도 6에 도시된 슬레이브 노드(300a)는 프로세서(400)로서 CPU(402)와 GPU(404)를 포함하되, 본 발명의 몇몇의 실시예에서 CPU(402)는 복수의 코어를 포함할 수 있고, GPU(404)는 복수 개일 수 있다.
분산 처리를 위해 입력 데이터(600)로부터 분할된 작업 데이터 블록(600a)은 CPU(402)에서 처리할 제1 데이터 블록(602)과 GPU(604)에서 처리할 제2 데이터 블록(604)으로 추가적으로 분할될 수 있다. 이와 같이 작업 데이터 블록(600a)이 하나의 슬레이브 노드(300a) 내에서 제1 데이터 블록(602)과 제2 데이터 블록(604)으로 한번 더 분할되어 CPU(402)와 GPU(404)에 분배되어 처리됨으로써 계산의 처리 속도가 증가할 수 있다. 입력 데이터(600)가 CPU(402)에서 처리할 제1 데이터 블록(602)과 GPU(604)에서 처리할 제2 데이터 블록(604)으로 분할되는 과정에 대해서는 도 8 내지 도 10에 대한 설명과 함께 후술하도록 한다.
도 6을 계속 참조하면, 슬레이브 노드(300a)는 결과 데이터 취합부(700)를 추가적으로 포함할 수 있다. 본 발명의 일 실시예에서, 결과 데이터 취합부(700)는 CPU(402)와 별개로 구비될 수 있고, 본 발명의 다른 실시예에서는 CPU(402)의 일부 코어가 결과 데이터 취합부(700)로서 동작할 수도 있다. 결과 데이터 취합부(700)는 CPU(402)에 의해 처리된 결과와 GPU(404)에 의해 처리된 결과를 취합하여 결과 데이터(610a)를 산출할 수 있다.
도 7은 본 발명의 일 실시예에 따른 분산 시스템을 구성하는 슬레이브 노드에 구비된 CPU와 GPU를 설명하기 위한 도면이고, 도 8은 본 발명의 일 실시예에 따라 분산 시스템을 구성하는 슬레이브 노드에 구비된 GPU의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 것을 설명하기 위한 도면이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 CPU(402)는 복수의 코어(412, 413, 414, 415, 416, 417)를 포함할 수 있고, GPU(404)는 GPU 그리드(420)에 포함된 복수의 프로세싱 블록을 포함할 수 있다. 분산 시스템에서 데이터 처리 속도를 더욱 개선시키기 위해, 본 발명의 일 실시예에 따른 슬레이브 노드(300a)는 CPU(402)와 GPU(404)를 모두 사용한다. 그런데 데이터 처리 속도를 만족스럽게 높이기 위해서는 CPU(402)와 GPU(404)에서 처리되는 데이터의 비율을 적절하게 조정하는 것이 필요하다.
본 발명의 일 실시예에서는, 작업 데이터 블록(600a)를 CPU(402)에서 처리할 제1 데이터 블록(602)과 GPU(604)에서 처리할 제2 데이터 블록(604)으로 분할하기 위해, 슬레이브 노드(300a)에 구비된 GPU(404)의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산한다. 다시 말해서, 슬레이브 노드(300a)의 프로세서(400)의 일부를 구성하는 GPU(404)가 일정 시간동안 처리할 수 있는 처리량을 슬레이브 노드(300a)의 프로세서(400)의 일부를 구성하는 CPU 코어의 개수로 환산하여, 작업 데이터 블록(600a)을 제1 데이터 블록(602)과 제2 데이터 블록(604)으로 분할하는 것이다. 여기서, 제1 데이터 블록(602)의 크기는 슬레이브 노드(300a)에 구비된 CPU의 코어 구비 개수에 상응하고, 제2 데이터 블록(604)의 크기는 코어 환산 개수에 상응한다.
본 발명의 일 실시예에서, 예를 들어, 도 8을 참조하면, 슬레이브 노드(300a)에 구비된 GPU(404)의 프로세싱 블록 개수에 상당하는 코어 환산 개수는 2 개일 수 있다. 본 발명의 몇몇의 실시예에서, 이것은 GPU(404)의 프로세싱 파워(processing power) 또는 퍼포먼스(performance)가 CPU(402) 중 2 개의 코어의 프로세싱 파워 또는 퍼포먼스에 상응함을 나타낼 수 있다.
이하, 슬레이브 노드(300a)에 구비된 GPU(404)의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 방법에 대해 구체적으로 설명한다. 코어 환산 개수를 연산하기 위해서, 먼저 슬레이브 노드(300a)에 포함된 하나의 GPU 프로세싱 블록 개수의 평균치를 연산한다. 이를 위해, GPU(404)의 프로세싱 블록 개수를 슬레이브 노드(300a)에 포함된 GPU(404)의 개수로 나누어 하나의 GPU 프로세싱 블록 개수의 평균치를 연산한다. NG를 슬레이브 노드(300a)에 포함된 GPU(404)의 개수라고 하고 GC를 슬레이브 노드(300a)에 포함된 각 GPU(404)에 포함되는 프로세싱 블록 개수의 총합이라고 하면 다음과 같은 [수학식 1]에 의해 하나의 GPU 프로세싱 블록 개수의 평균치(GCAVG)를 연산할 수 있다.
[수학식 1]
GCAVG = GC / NG
다음으로, 슬레이브 노드(300a)에 구비된 GPU(404)의 프로세싱 블록 개수에 상당하는 코어 환산 개수(GCICAVG)를 연산한다. 코어 환산 개수(GCICAVG)는 하나의 GPU 프로세싱 블록 개수의 평균치를 기준으로 나타낸 [표 1]과 같은 코어 환산 테이블에 의해 연산되어 정수 값으로 표현될 수 있다.
본 발명의 몇몇의 실시예에서, 상술한 방법으로 연산된 코어 환산 개수는 작업 데이터의 속성에 따른 GPU 할당 가중치를 반영하여 보정될 수 있다. 예를 들면, 동일한 작업 데이터에 대한 CPU상에서의 처리 속도와 GPU상에서의 처리 속도를 비교하여 GPU상에서의 처리 속도의 향상 정도를 나타내는 속도 향상 지수(PI)를 코어 환산 개수에 반영할 수 있다. 만약 어떤 작업이 CPU 상에서 처리될 때 1000의 시간이 소요될 경우 상기 작업이 GPU 상에서 처리될 때 10의 시간이 소요된다면, GPU(404) 상에서의 속도 향상 정도는 100배(100x)가 될 것이다. 이러한 개념을 나타내는 속도 향상 지수(PI)는 다음과 같은 [표 2]에 의해 계산되어 정수 값으로 표현될 수 있다.
이로부터, 보정된 코어 환산 개수(NPeq)를 다음과 같은 [수학식 2]에 의해 연산할 수 있다.
[수학식 2]
NPeq = GCICAVG X PI
슬레이브 노드(300a)에 포함된 CPU(402) 코어의 개수를 Np라고 하면 작업을 처리하기 위한 코어 합산 개수(N'p)는 다음과 같은 [수학식 3]에 의해 연산할 수 있다.
[수학식 3]
N'p = Np + NPeq
작업 데이터 블록(600a)을 제1 데이터 블록(602)과 제2 데이터 블록(604)으로 분할하는 것이다. 여기서, 제1 데이터 블록(602)의 크기는 슬레이브 노드(300a)에 구비된 CPU의 코어 구비 개수에 상응하고, 제2 데이터 블록(604)의 크기는 코어 환산 개수에 상응한다.
도 9는 본 발명의 일 실시예에 따라 입력 데이터를 CPU와 GPU에 분배하는 과정을 나타낸 도면이다.
도 9를 참조하면, 본 발명의 일 실시예에 따라, 작업 데이터 블록(600a)은 코어 합산 개수만큼의 작업 단위 데이터로 분할되고, 각각의 작업 단위 데이터 중 코어 구비 개수만큼의 작업 단위 데이터는 슬레이브 노드(300a)의 CPU(402)에, 코어 환산 개수만큼의 작업 단위 데이터는 슬레이브 노드(300a)의 GPU(404)에 각각 할당될 수 있다. 본 발명의 몇몇의 실시예에서, 슬레이브 노드(300a)는 복수의 GPU(404)를 포함할 수 있고, 코어 환산 개수만큼의 작업 단위 데이터는, 각각의 크기가 복수의 GPU(404) 각각의 프로세싱 블록 개수에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 각각의 GPU(404)에 할당될 수 있다.
도 10은 본 발명의 다른 실시예에 따라 입력 데이터를 CPU와 GPU에 분배하는 과정을 나타낸 도면이다.
도 10을 참조하면, 본 발명의 다른 실시예에서, 슬레이브 노드(300a)에 구비된 CPU(402) 코어 중 하나에는 작업 단위 데이터를 GPU(4040에 할당하는 제어 연산을 수행하는 GPU 제어 코어(412')가 포함될 수 있다. 이러한 GPU 제어 코어는 코어 구비 개수에서 제외되고, 작업 단위 데이터를 할당 받지 않을 수 있다. 한편, 본 발명의 다른 실시예에서, 슬레이브 노드(300a)에 구비된 CPU(402) 코어 중 하나에는 작업 단위 데이터를 다른 CPU 코어에 할당하는 제어 연산을 수행하는 작업 단위 데이터 분배 코어(417')가 포함될 수 있다.
도 11은 본 발명의 일 실시예에 따른 데이터 처리 방법을 나타낸 흐름도이다.
본 발명의 일 실시예에 따른 데이터 처리 방법은, GPU 프로세싱 블록 개수의 평균치(GCAVG)를 연산하는 단계(S800), 하나의 GPU 프로세싱 블록 개수의 평균치에 따라 슬레이브 노드(300a)에 구비된 GPU(404)의 프로세싱 블록 개수에 상당하는 코어 환산 개수(GCICAVG)를 연산하는 단계(S802), 동일한 작업 데이터에 대한 CPU상에서의 처리 속도와 GPU상에서의 처리 속도를 비교하여 GPU상에서의 처리 속도의 향상 정도를 나타내는 속도 향상 지수(PI)를 연산하는 단계(S804), 코어 환산 개수(GCICAVG)와 속도 향상 지수(PI)를 반영하여 보정된 코어 환산 개수(NPeq)를 연산하는 단계(S806), 작업 데이터 블록을 CPU(402)와 GPU(404) 간에 배분하는 단계(S808)를 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 상기 방법은, CPU(402)와 GPU(404)에 배분된 작업 데이터 블록을 다시 각각의 CPU(402) 코어 및 각각의 GPU(404)에 배분하는 단계(S810)를 포함할 수 있다. 구체적으로, 구체적으로, 작업 데이터 블록(600a)은 코어 합산 개수만큼의 작업 단위 데이터로 분할되고, 각각의 작업 단위 데이터 중 코어 구비 개수만큼의 작업 단위 데이터는 슬레이브 노드(300a)의 CPU(402)에, 코어 환산 개수만큼의 작업 단위 데이터는 슬레이브 노드(300a)의 GPU(404)에 각각 할당될 수 있다. 본 발명의 몇몇의 실시예에서, 슬레이브 노드(300a)는 복수의 GPU(404)를 포함할 수 있고, 코어 환산 개수만큼의 작업 단위 데이터는, 각각의 크기가 복수의 GPU(404) 각각의 프로세싱 블록 개수에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 각각의 GPU(404)에 할당될 수 있다.
도 12는 본 발명의 다른 실시예에 따른 데이터 처리 방법을 나타낸 흐름도이다.
본 발명의 다른 실시예에 따른 데이터 처리 방법은, 분산 시스템 구성 노드에 구비된 제1 타입 프로세서를 기준으로 분산 시스템 구성 노드에 구비된 복수의 제2 타입 프로세서 개수에 상당하는 프로세서 환산 개수를 연산하는 단계(S900), 분산 시스템 구성 노드에 구비된 제1 타입 프로세서의 개수와 프로세서 환산 개수를 합산하여 프로세서 합산 개수를 연산하는 단계(S902), 분산 시스템 구성 노드에 할당된 작업 데이터를 프로세서 합산 개수만큼의 작업 단위 데이터로 분할하는 단계(S904), 각각의 작업 단위 데이터 중 제1 타입 프로세서의 개수만큼의 작업 단위 데이터를 분산 시스템 구성 노드의 제1 타입 프로세서에 할당하는 단계(S906) 및 각각의 작업 단위 데이터 중 환산 개수만큼의 작업 단위 데이터를 분산 시스템 구성 노드의 복수의 제2 프로세서에 할당하는 단계(S908)를 포함할 수 있다.
여기서, 프로세서 환산 개수만큼의 작업 단위 데이터는, 각각의 크기가 복수의 제2 프로세서 각각의 단위시간 당 작업 처리량에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 복수의 제2 프로세서 각각에 할당될 수 있다.
상기 방법은 제1 타입 프로세서를 이용하여 작업 단위 데이터 중 일부를 처리한 결과인 제1 결과 데이터를 획득하고, 제2 타입 프로세서를 이용하여 작업 단위 데이터 중 일부를 처리한 결과인 제2 결과 데이터를 획득하는 단계(S910) 및 제1 결과 데이터와 제2 결과 데이터를 취합하여 최종 결과 데이터를 산출하는 단계(S912)를 더 포함할 수 있다.
본 발명의 다양한 실시예에 의해, 분산 컴퓨팅을 구현하기 위한 클러스터에 새로운 노드를 추가하지 않고도 기존의 노드에 구비된 GPU를 GPGPU(General Purpose GPU)로서 사용하여 대량의 데이터(예컨대, 빅 데이터)의 처리 속도를 향상시킬 수 있다. 또한, 본 발명의 다양한 실시예에 기재된 CPU와 GPU 간 작업 배분 정책은 클러스터 상에 새로운 GPU 노드가 추가되는 경우에도 추가적인 수정없이 효과적으로 사용될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 클라이언트 200: 마스터 노드
202: 잡 트래커 204: 네임 노드
300, 300a, 300b, 300c: 슬레이브 노드
302: 태스크 트래커 304: 데이터 노드
400: 프로세서 402: CPU
404: GPU 412, 413, 414, 415, 416, 417: CPU 코어
412': GPU 제어 코어 417': 작업 단위 데이터 분배 코어
420: GPU 그리드 500: 스토리지
600: 입력 데이터 600a, 600b, 600c: 작업 데이터 블록
602: 제1 데이터 블록 604: 제2 데이터 블록
610a, 610b, 610c: 결과 데이터 620: 최종 결과
700: 결과 데이터 취합부
202: 잡 트래커 204: 네임 노드
300, 300a, 300b, 300c: 슬레이브 노드
302: 태스크 트래커 304: 데이터 노드
400: 프로세서 402: CPU
404: GPU 412, 413, 414, 415, 416, 417: CPU 코어
412': GPU 제어 코어 417': 작업 단위 데이터 분배 코어
420: GPU 그리드 500: 스토리지
600: 입력 데이터 600a, 600b, 600c: 작업 데이터 블록
602: 제1 데이터 블록 604: 제2 데이터 블록
610a, 610b, 610c: 결과 데이터 620: 최종 결과
700: 결과 데이터 취합부
Claims (12)
- 분산 시스템 구성 노드에 구비된 GPU의 프로세싱 블록 개수에 상당하는 코어 환산 개수를 연산하는 단계;
상기 분산 시스템 구성 노드에 구비된 CPU의 코어 구비 개수와 상기 코어 환산 개수를 합산하여 코어 합산 개수를 연산하는 단계;
상기 분산 시스템 구성 노드에 할당된 작업 데이터를 상기 코어 합산 개수만큼의 작업 단위 데이터로 분할하는 단계; 및
상기 각각의 작업 단위 데이터 중 상기 코어 구비 개수만큼의 작업 단위 데이터는 상기 분산 시스템 구성 노드의 CPU에, 상기 코어 환산 개수만큼의 작업 단위 데이터는 상기 분산 시스템 구성 노드의 GPU에 각각 할당하는 단계를 포함하는 데이터 처리 방법. - 제1항에 있어서,
상기 코어 환산 개수를 연산하는 단계는,
하나의 GPU 프로세싱 블록 개수의 평균치를 기준으로 하나의 CPU 코어 환산 개수를 가리키는 코어 환산 테이블을 참조하여 상기 코어 환산 개수를 연산하는 단계를 포함하는 데이터 처리 방법. - 제1항에 있어서,
상기 코어 환산 개수를 연산하는 단계는,
상기 작업 데이터의 속성에 따른 GPU 할당 가중치를 상기 연산된 코어 환산 개수에 반영하여 보정된 코어 환산 개수를 연산하는 단계를 포함하고,
상기 코어 합산 개수를 연산하는 단계는,
상기 분산 시스템 구성 노드에 구비된 CPU의 코어 구비 개수와 상기 보정된 코어 환산 개수를 합산하여 코어 합산 개수를 연산하는 단계를 포함하는 데이터 처리 방법. - 제3항에 있어서,
상기 작업 데이터의 속성에 따른 GPU 할당 가중치를 상기 연산된 코어 환산 개수에 반영하여 보정된 코어 환산 개수를 연산하는 단계는,
상기 작업 데이터에 대한 CPU상에서의 처리 속도와 GPU상에서의 처리 속도를 비교하여 GPU상에서의 처리 속도의 향상 정도를 나타내는 속도 향상 지수를 가중치로서 상기 연산된 코어 환산 개수에 반영하는 단계를 포함하는 데이터 처리 방법. - 제4항에 있어서,
상기 속도 향상 지수는,
상기 GPU상에서의 처리 속도의 향상 정도에 따른 가중치를 가리키는 속도 향상 지수 테이블을 참조하여 연산되는 데이터 처리 방법. - 제1항에 있어서,
상기 코어 환산 개수만큼의 작업 단위 데이터는 상기 분산 시스템 구성 노드의 GPU에 각각 할당하는 단계는,
상기 코어 환산 개수만큼의 작업 단위 데이터가, 각각의 크기가 상기 GPU 각각의 프로세싱 블록 개수에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 상기 GPU 각각에 할당되는 단계를 더 포함하는 데이터 처리 방법. - 제1항에 있어서,
상기 분산 시스템 구성 노드에 구비된 CPU 중 하나에는 상기 작업 단위 데이터를 상기 GPU에 할당하는 제어 연산을 수행하는 GPU 제어 코어가 포함되는 데이터 처리 방법. - 제7항에 있어서,
상기 GPU 제어 코어는 상기 코어 구비 개수에서 제외되고, 상기 작업 단위 데이터를 할당 받지 않는 데이터 처리 방법. - 제1항에 있어서,
상기 분산 시스템 구성 노드에 구비된 CPU 중 하나에는 상기 작업 단위 데이터를 다른 CPU 코어에 할당하는 제어 연산을 수행하는 작업 단위 데이터 분배 코어가 포함되는 데이터 처리 방법. - 제9항에 있어서,
상기 작업 단위 데이터 분배 코어는 상기 코어 구비 개수에서 제외되고, 상기 작업 단위 데이터를 할당 받지 않는 데이터 처리 방법. - 분산 시스템 구성 노드에 구비된 제1 타입 프로세서를 기준으로 상기 분산 시스템 구성 노드에 구비된 복수의 제2 타입 프로세서 개수에 상당하는 프로세서 환산 개수를 연산하는 단계;
상기 분산 시스템 구성 노드에 구비된 상기 제1 타입 프로세서의 개수와 상기 프로세서 환산 개수를 합산하여 프로세서 합산 개수를 연산하는 단계;
상기 분산 시스템 구성 노드에 할당된 작업 데이터를 상기 프로세서 합산 개수만큼의 작업 단위 데이터로 분할하는 단계;
상기 각각의 작업 단위 데이터 중 상기 제1 타입 프로세서의 개수만큼의 작업 단위 데이터를 상기 분산 시스템 구성 노드의 상기 제1 타입 프로세서에 할당하는 단계; 및
상기 각각의 작업 단위 데이터 중 상기 환산 개수만큼의 작업 단위 데이터를 상기 분산 시스템 구성 노드의 상기 복수의 제2 프로세서에 할당하는 단계를 포함하되,
상기 프로세서 환산 개수만큼의 작업 단위 데이터는, 각각의 크기가 상기 복수의 제2 프로세서 각각의 단위시간 당 작업 처리량에 비례하도록 구성된 복수의 데이터 블록으로 분할되어 상기 복수의 제2 프로세서 각각에 할당되는 데이터 처리 방법. - 제11항에 있어서,
상기 프로세서 환산 개수를 연산하는 단계는,
상기 작업 데이터의 속성에 따른 GPU 할당 가중치를 상기 프로세서 환산 개수에 반영하여 보정된 프로세서 환산 개수를 연산하는 단계를 포함하고,
상기 프로세서 합산 개수를 연산하는 단계는,
상기 분산 시스템 구성 노드에 구비된 상기 제1 타입 프로세서의 개수와 상기 보정된 프로세서 환산 개수를 합산하여 프로세서 합산 개수를 연산하는 단계를 포함하는 데이터 처리 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130096118A KR101569093B1 (ko) | 2013-08-13 | 2013-08-13 | 분산 시스템에서 데이터를 처리하는 방법 |
US14/458,848 US9411659B2 (en) | 2013-08-13 | 2014-08-13 | Data processing method used in distributed system |
CN201410397355.9A CN104375824B (zh) | 2013-08-13 | 2014-08-13 | 数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130096118A KR101569093B1 (ko) | 2013-08-13 | 2013-08-13 | 분산 시스템에서 데이터를 처리하는 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150019359A true KR20150019359A (ko) | 2015-02-25 |
KR101569093B1 KR101569093B1 (ko) | 2015-11-13 |
Family
ID=52467791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130096118A KR101569093B1 (ko) | 2013-08-13 | 2013-08-13 | 분산 시스템에서 데이터를 처리하는 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9411659B2 (ko) |
KR (1) | KR101569093B1 (ko) |
CN (1) | CN104375824B (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802787A (zh) * | 2017-01-15 | 2017-06-06 | 天泽信息产业股份有限公司 | 基于GPU排序的MapReduce优化方法 |
KR101959181B1 (ko) | 2018-12-21 | 2019-03-15 | 유충열 | 프린트 오더링을 위한 데이터 차원 배분 시스템 |
KR101996786B1 (ko) | 2019-04-18 | 2019-07-04 | 유용호 | 데이터 다중 병렬 처리를 통한 원격 프린트 콘트롤 시스템 |
US11693569B2 (en) | 2021-04-22 | 2023-07-04 | SK Hynix Inc. | Host performing an embedding operation and computing system including the same |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9384016B2 (en) * | 2014-03-14 | 2016-07-05 | Wisconsin Alumni Research Foundation | Method of estimating program speed-up with highly parallel architectures |
US9678798B2 (en) | 2015-02-03 | 2017-06-13 | Dell Products L.P. | Dynamically controlled workload execution |
US9684540B2 (en) | 2015-02-03 | 2017-06-20 | Dell Products L.P. | Dynamically controlled workload execution by an application |
US9575811B2 (en) | 2015-02-03 | 2017-02-21 | Dell Products L.P. | Dynamically controlled distributed workload execution |
US9747121B2 (en) * | 2015-04-14 | 2017-08-29 | Dell Products L.P. | Performance optimization of workloads in virtualized information handling systems |
CN104932659B (zh) * | 2015-07-15 | 2020-01-07 | 京东方科技集团股份有限公司 | 图像显示方法及显示系统 |
FR3041208B1 (fr) | 2015-09-14 | 2020-02-07 | Valeo Vision | Architecture electrique d'eclairage distribuee pour vehicule automobile |
KR101923210B1 (ko) * | 2016-01-14 | 2018-11-28 | 서울대학교산학협력단 | 이종 멀티코어 프로세서를 활용한 암호화 처리 장치 및 암호화 처리 방법 |
US10754744B2 (en) * | 2016-03-15 | 2020-08-25 | Wisconsin Alumni Research Foundation | Method of estimating program speed-up in highly parallel architectures using static analysis |
CN107943577B (zh) * | 2016-10-12 | 2022-03-04 | 上海优扬新媒信息技术有限公司 | 用于调度任务的方法和装置 |
CN106526627A (zh) * | 2016-12-09 | 2017-03-22 | 大唐半导体设计有限公司 | 一种跟踪引擎及实现相关积分处理的方法 |
US10855532B2 (en) | 2018-10-08 | 2020-12-01 | Dell Products L.P. | System and method to perform solution aware server compliance and configuration |
US11340942B2 (en) * | 2020-03-19 | 2022-05-24 | Raytheon Company | Cooperative work-stealing scheduler |
TWI756974B (zh) | 2020-12-09 | 2022-03-01 | 財團法人工業技術研究院 | 機器學習系統及其資源配置方法 |
CN116627362B (zh) * | 2023-07-26 | 2023-09-22 | 大汉电子商务有限公司 | 一种基于分布式储存的财务数据处理方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6919896B2 (en) * | 2002-03-11 | 2005-07-19 | Sony Computer Entertainment Inc. | System and method of optimizing graphics processing |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
JP2005056201A (ja) | 2003-08-05 | 2005-03-03 | Hitachi Software Eng Co Ltd | 異種混合計算機接続システム及びシステムにおける処理割り当て方法及び課金方法 |
CN100508501C (zh) * | 2006-12-15 | 2009-07-01 | 清华大学 | 基于开放网格服务体系结构的网格工作流虚拟服务调度法 |
CN101267564B (zh) * | 2008-04-16 | 2011-06-15 | 中国科学院计算技术研究所 | 一种多处理器视频编码芯片装置和方法 |
US8225325B2 (en) * | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8386750B2 (en) * | 2008-10-31 | 2013-02-26 | Cray Inc. | Multiprocessor system having processors with different address widths and method for operating the same |
US8069446B2 (en) * | 2009-04-03 | 2011-11-29 | Microsoft Corporation | Parallel programming and execution systems and techniques |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US8400458B2 (en) * | 2009-09-09 | 2013-03-19 | Hewlett-Packard Development Company, L.P. | Method and system for blocking data on a GPU |
WO2011035470A1 (en) * | 2009-09-24 | 2011-03-31 | Hewlett-Packard Development Company, L.P. | Particle tracking method and apparatus |
KR101651871B1 (ko) * | 2009-12-28 | 2016-09-09 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
KR101710910B1 (ko) | 2010-09-27 | 2017-03-13 | 삼성전자 주식회사 | 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치 |
US8854383B2 (en) * | 2011-04-13 | 2014-10-07 | Qualcomm Incorporated | Pixel value compaction for graphics processing |
US9185424B2 (en) * | 2011-07-05 | 2015-11-10 | Qualcomm Incorporated | Image data compression |
KR20130019674A (ko) | 2011-08-17 | 2013-02-27 | 삼성전자주식회사 | 단말 및 그 단말에서 어플리케이션 수행 방법 |
US8373710B1 (en) * | 2011-12-30 | 2013-02-12 | GIS Federal LLC | Method and system for improving computational concurrency using a multi-threaded GPU calculation engine |
KR101245994B1 (ko) | 2012-08-31 | 2013-03-20 | 케이씨씨시큐리티주식회사 | 대용량 데이터의 분산 병렬 처리 시스템 및 방법 |
-
2013
- 2013-08-13 KR KR1020130096118A patent/KR101569093B1/ko not_active IP Right Cessation
-
2014
- 2014-08-13 US US14/458,848 patent/US9411659B2/en not_active Expired - Fee Related
- 2014-08-13 CN CN201410397355.9A patent/CN104375824B/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106802787A (zh) * | 2017-01-15 | 2017-06-06 | 天泽信息产业股份有限公司 | 基于GPU排序的MapReduce优化方法 |
KR101959181B1 (ko) | 2018-12-21 | 2019-03-15 | 유충열 | 프린트 오더링을 위한 데이터 차원 배분 시스템 |
KR101996786B1 (ko) | 2019-04-18 | 2019-07-04 | 유용호 | 데이터 다중 병렬 처리를 통한 원격 프린트 콘트롤 시스템 |
US11693569B2 (en) | 2021-04-22 | 2023-07-04 | SK Hynix Inc. | Host performing an embedding operation and computing system including the same |
Also Published As
Publication number | Publication date |
---|---|
KR101569093B1 (ko) | 2015-11-13 |
US9411659B2 (en) | 2016-08-09 |
US20150052536A1 (en) | 2015-02-19 |
CN104375824B (zh) | 2018-02-27 |
CN104375824A (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101569093B1 (ko) | 분산 시스템에서 데이터를 처리하는 방법 | |
US10715460B2 (en) | Opportunistic resource migration to optimize resource placement | |
EP3129880B1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
CN105144121B (zh) | 高速缓存内容可寻址数据块以供存储虚拟化 | |
US20140331235A1 (en) | Resource allocation apparatus and method | |
US20150381453A1 (en) | Integrated global resource allocation and load balancing | |
US10356150B1 (en) | Automated repartitioning of streaming data | |
US20140059554A1 (en) | Process grouping for improved cache and memory affinity | |
JPWO2011074699A1 (ja) | 分散処理管理サーバ、分散システム、分散処理管理プログラム及び分散処理管理方法 | |
CN104063501B (zh) | 基于hdfs的副本平衡方法 | |
US20170228373A1 (en) | Dynamic Hash Table Size Estimation During Database Aggregation Processing | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
JP2007249468A (ja) | Cpu割当方法、cpu割当プログラム、cpu割当装置、および、データベース管理システム | |
US20220300323A1 (en) | Job Scheduling Method and Job Scheduling Apparatus | |
CN105229608A (zh) | 基于协处理器的面向数组的数据库处理 | |
Nishanth et al. | CoHadoop++: A load balanced data co-location in Hadoop Distributed File System | |
Groot et al. | Jumbo: Beyond mapreduce for workload balancing | |
CN114443236A (zh) | 一种任务处理方法、装置、系统、设备及介质 | |
JP5043166B2 (ja) | 計算機システム、データ検索方法及びデータベース管理計算機 | |
US11336519B1 (en) | Evaluating placement configurations for distributed resource placement | |
Jena et al. | Performance evaluation of load balancing algorithms on cloud data centers | |
Wang et al. | Locality based data partitioning in MapReduce | |
Su et al. | Node capability aware resource provisioning in a heterogeneous cloud | |
US10956506B1 (en) | Query-based data modification | |
CN112486402A (zh) | 一种存储节点及系统 |
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 | ||
LAPS | Lapse due to unpaid annual fee |