KR102026333B1 - 분산 파일 시스템에 대한 태스크 처리 방법 - Google Patents
분산 파일 시스템에 대한 태스크 처리 방법 Download PDFInfo
- Publication number
- KR102026333B1 KR102026333B1 KR1020170168451A KR20170168451A KR102026333B1 KR 102026333 B1 KR102026333 B1 KR 102026333B1 KR 1020170168451 A KR1020170168451 A KR 1020170168451A KR 20170168451 A KR20170168451 A KR 20170168451A KR 102026333 B1 KR102026333 B1 KR 102026333B1
- Authority
- KR
- South Korea
- Prior art keywords
- distributed data
- gpu
- distributed
- file system
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 분산 파일 시스템으로부터 분산 데이터에 대해 처리해야 할 복수의 태스크에 대한 정보를 수신하는 단계, 복수의 태스크에 대한 정보 중 GPU 커널 연산에 관한 태스크가 포함되어 있는 경우, 정보를 기초로 분산 파일 시스템으로부터 제1 분산 데이터를 로딩하여 JVM(java virtual machine) heap CPU 메모리에 저장하는 단계, 제1 분산 데이터를 복사한 제2 분산 데이터를 off-heap CPU 메모리에 저장하는 단계, 제2 분산 데이터를 복사한 제3 분산 데이터를 GPU 메모리에 저장하는 단계 및 제3 분산 데이터에 대해 GPU 커널 연산을 수행하는 단계를 포함한다.
Description
본 발명은 분산 파일 시스템에 대한 태스크 처리 방법에 관한 것으로서, 보다 자세하게는 분산 데이터를 off-heap CPU 메모리에 저장하여 GPU가 분산 파일 시스템의 태스크를 수행하게 하는 분산 파일 시스템에 대한 태스크 처리 방법에 관한 것이다.
하둡(hadoop, high-Availability distributed object-oriented platform) 프레임 워크는 대량의 자료를 처리할 수 있도록 클러스터 컴퓨팅 환경에서 동작하는 분산 처리 프레임워크이다.
하둡 프레임 워크는 분산 파일 시스템인 하둡 분산 파일 시스템 (hadoop distributed file system, HDFS)을 기초로 데이터를 관리하고 맵리듀스(map-reduce)를 이용해서 데이터를 병렬적으로 처리할 수 있다. 또한 하둡 프레임 워크는 처리해야 할 데이터를 분산 데이터로 나누어 이에 대해 복수의 노드에서 태스크를 수행하도록 하고, 각각의 노드에서의 태스크 처리 결과를 병합하여 결과를 출력할 수 있도록 한다.
한편, 스파크(spark) 프레임 워크는 분산 데이터 처리를 분산 클러스터에서 고속으로 실행할 수 있게 하는 프레임 워크이다. 스파크는 처리 대상이 되는 분산 데이터를 하둡 분산 파일 시스템에서 읽고, 이후 태스크의 수행을 GPU 메모리에서 연산하도록 할 수 있기 때문에 기계 학습이나 차트 계산처럼 반복 계산이 많은 작업에 대해서는 하둡보다 빠르게 처리할 수 있다.
한편, 스파크 프레임 워크는 GPU 커널 연산 수행 시 하둡 분산 파일 시스템으로부터 로딩하여 컴퓨터의 메인 메모리 또는 디스크에 저장하고 연산이 필요할 때마다 GPU에 전송하여 연산에 사용하는 방식을 취하고 있다.
다만, 위와 같은 방식으로 GPU가 분산 데이터에 대한 태스크 수행을 완료하면 컴퓨터의 메인 메모리 또는 디스크로부터 복사하였던 GPU의 분산 데이터가 사라지기 때문에, 스파크 프레임 워크는 GPU에서 분산 데이터에 대한 반복적인 연산이 수행되는 경우, 하나의 태스크가 완료될 때마다 메인 메모리 또는 디스크로부터 분산 데이터를 다시 GPU에 전송하는 방식을 사용하고 있다.
이와 같이, 메인 메모리에서 GPU로 분산 데이터를 주기적으로 전송함에 따라 소요되는 시간은 GPU의 연산 속도에 비해 매우 크기 때문에, 기존의 GPU를 활용한 분산 데이터의 태스크 처리 방식은 GPU의 연산 성능을 충분히 활용하는 것에 적합하지 않다.
본 발명의 실시예에서 해결하고자 하는 과제는 분산 파일 시스템에서 반복 연산에 사용되는 분산 데이터를 off-heap CPU 메모리에 저장함으로써 데이터 전송이 발생하는 횟수를 최소화하는 기술을 제공하는 것이다.
또한 off-heap CPU 메모리 간에 사용되는 MPI(message passing interface) 규약을 기초로 off-heap CPU 메모리에 저장된 분산 데이터를 다른 노드와 직접적으로 공유할 수 있게 하는 기술을 제공하고자 한다.
다만, 본 발명의 실시예가 이루고자 하는 기술적 과제는 이상에서 언급한 과제로 제한되지 않으며, 이하에서 설명할 내용으로부터 통상의 기술자에게 자명한 범위 내에서 다양한 기술적 과제가 도출될 수 있다.
본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 분산 파일 시스템으로부터 분산 데이터에 대해 처리해야 할 복수의 태스크에 대한 정보를 수신하는 단계, 상기 복수의 태스크에 대한 정보 중 GPU(graphic processing unit) 커널 연산에 관한 태스크가 포함되어 있는 경우, 상기 정보를 기초로 상기 분산 파일 시스템으로부터 상기 분산 데이터 중 제1 분산 데이터를 로딩하여 JVM(java virtual machine) heap CPU(central processing unit) 메모리에 저장하는 단계, 상기 제1 분산 데이터를 복사한 제2 분산 데이터를 off-heap CPU 메모리에 저장하는 단계, 상기 제2 분산 데이터를 복사한 제3 분산 데이터를 GPU 메모리에 저장하는 단계 및 상기 제3 분산 데이터에 대해 상기 GPU 커널 연산을 수행하는 단계를 포함한다.
이때 상기 분산 파일 시스템은 하둡 분산 파일 시스템(hadoop distributed file system, HDFS)이고, 상기 제1 분산 데이터를 로딩하여 상기 JVM heap CPU 메모리에 저장하는 단계는 스파크(spark) 프레임 워크의 API를 기초로 수행될 수 있다.
또한 상기 제3 분산 데이터를 상기 GPU 메모리에 저장하는 단계는 GPU 컨텍스트(GPU context)를 선언하는 단계를 포함할 수 있다.
더하여 상기 off-heap CPU 메모리는 MPI(message passing interface) 규약에 따라 상기 제2 분산 데이터를 상기 분산 파일 시스템에 포함된 노드와 공유할 수 있다.
더불어 상기 제2 분산 데이터를 상기 off-heap CPU 메모리에 저장하는 단계는 UDS(unix domain socket) 통신을 통해 상기 JVM heap CPU 메모리로부터 상기 off-heap CPU 메모리에 상기 제1 분산 데이터를 복사하는 단계를 포함할 수 있다.
아울러 상기 제3 분산 데이터를 상기 GPU 메모리에 저장하는 단계는 CUDA(compute unified device architecture)의 memcpy 명령을 통해 상기 off-heap CPU 메모리로부터 상기 GPU 메모리에 상기 제2 분산 데이터를 복사하는 단계를 포함할 수 있다.
본 발명의 실시예에 따르면, off-heap CPU 메모리로부터 전송 받은 분산 데이터에 대해 GPU가 태스크를 수행하게 하여 메인 메모리에서 GPU로 분산 데이터를 주기적으로 전송함에 따라 소요되는 시간은 없앰으로써, 분산 파일 시스템에서의 GPU 성능을 최대한으로 발휘할 수 있게 한다.
도 1은 본 발명의 일 실시예에 따른 태스크 처리 장치 및 분산 파일 시스템을 포함하는 전체 시스템을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법의 프로세스를 도시하는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법에 따라 태스크가 수행되는 과정을 설명하기 위한 예시도이다.
도 4는 영역 분할법(domain decomposition method)을 수행할 때 발생하는 할로(halo)에 대하여 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법에 따라 영역 분할법이 수행되는 과정을 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법과 기존 프레임 워크의 성능을 비교한 실험 결과이다.
도 2는 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법의 프로세스를 도시하는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법에 따라 태스크가 수행되는 과정을 설명하기 위한 예시도이다.
도 4는 영역 분할법(domain decomposition method)을 수행할 때 발생하는 할로(halo)에 대하여 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법에 따라 영역 분할법이 수행되는 과정을 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법과 기존 프레임 워크의 성능을 비교한 실험 결과이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 범주는 청구항에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명은 본 발명의 실시예들을 설명함에 있어 실제로 필요한 경우 외에는 생략될 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도면에 표시되고 아래에 설명되는 기능 블록들은 가능한 구현의 예들일 뿐이다. 다른 구현들에서는 상세한 설명의 사상 및 범위를 벗어나지 않는 범위에서 다른 기능 블록들이 사용될 수 있다. 또한 본 발명의 하나 이상의 기능 블록이 개별 블록들로 표시되지만, 본 발명의 기능 블록들 중 하나 이상은 동일 기능을 실행하는 다양한 하드웨어 및 소프트웨어 구성들의 조합일 수 있다.
또한 어떤 구성 요소들을 포함한다는 표현은 개방형의 표현으로서 해당 구성 요소들이 존재하는 것을 단순히 지칭할 뿐이며, 추가적인 구성 요소들을 배제하는 것으로 이해되어서는 안 된다.
나아가 어떤 구성 요소가 다른 구성 요소에 연결되어 있다거나 접속되어 있다고 언급될 때에는, 그 다른 구성 요소에 직접적으로 연결 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 한다.
이하에서는 도면들을 참조하여 본 발명의 실시예들에 대해 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 태스크 처리 장치(100) 및 분산 파일 시스템(distributed file system)(10)을 포함하는 전체 시스템을 나타낸 도면이다.
분산 파일 시스템(10)은 복수의 노드로 구성되어 있고, 복수의 노드는 통신망을 통해 데이터를 송수신할 수 있다. 이때 각 노드는 분산 파일 프레임워크를 기초로 분산 데이터에 대한 태스크를 처리한다. 이때 분산 파일 시스템(10)은 하둡 분산 파일 시스템(Hadoop Distributed File System, HDFS)을 포함할 수 있고, 분산 파일 프레임워크는 스파크(spark) 프레임 워크의 API를 포함할 수 있다.
여기서, 분산 파일 시스템(10)의 노드는 예를 들어, 컴퓨터, 워크스테이션 등과 같이 하나 이상의 프로세서를 포함하여 연산을 수행할 수 있는 장치를 포함할 수 있다.
또한 분산 파일 시스템(10)의 노드는, 분산 데이터에 대해 처리해야 할 태스크(task)를 생성하여 태스크의 처리를 다른 노드에 요청하는 클라이언트 노드(client node), 클라이언트 노드로부터 요청된 태스크를 수신하여 다른 노드가 태스크를 처리하도록 할당 및 스케쥴링하는 잡 트래커 노드(job tracker node), 잡 트래커 노드의 지시에 따라 태스크를 수행하고 태스크의 처리 결과를 생성하는 태스크 트래커 노드(task tracker node)를 포함할 수 있다.
이때 분산 파일 시스템(10)을 구성하는 복수의 노드는 하나의 역할에 국한되는 것이 아니며, 하나의 노드가 클라이언트 노드, 잡 트래커 노드, 태스크 트래커 노드 중 하나 이상의 역할을 동시에 수행할 수 있다.
태스크 처리 장치(100)는 하나 이상의 프로세서를 포함하며, 하둡 분산 파일 시스템(10)을 구성하는 노드로서 사용될 수 있다. 태스크 처리 장치(100)는 클라이언트 노드, 잡 트래커 노드, 태스크 트래커 노드 중 하나 이상의 역할을 동시에 수행할 수 있고, 분산 데이터에 대한 태스크를 수행함에 있어 off-heap CPU 메모리(120)에 저장된 분산 데이터(121)를 기초로 GPU가 태스크를 수행하게 할 수 있다. 이에 따라, 태스크 처리 장치(100)에 의해 수행되는 분산 파일 시스템에 대한 태스크 처리 방법을 도 2와 함께 설명한다.
도 2는 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법의 프로세스를 도시하는 흐름도이다. 도 2에 따른 분산 파일 시스템에 대한 태스크 처리 방법의 각 단계는 도 1을 통해 설명한 하나 이상의 프로세서를 포함하는 태스크 처리 장치(100)에 의해 수행될 수 있으며, 각 단계를 설명하면 다음과 같다.
우선, 분산 파일 시스템(10)으로부터 분산 데이터에 대해 처리해야 할 복수의 태스크에 대한 정보를 수신한다(S210). 이때 분산 데이터는 가령, RDD(resilent distributed dataset)을 포함할 수 있으며, 태스크는 분산 데이터를 관리하기 위해 처리하는 연산 중 하나로서, 가령 스파크 프레임 워크를 기초로 생성되는 맵 태스크(map task), 리듀스 태스크(reduce task) 등을 포함할 수 있으나 이에 국한되는 것은 아니다.
한편, 스파크 프레임 워크는 분산 데이터 처리를 분산 클러스터에서 고속으로 실행할 수 있게 하는 프레임 워크로서, 처리 대상이 되는 분산 데이터를 하둡 분산 파일 시스템(10)에서 읽고, 태스크의 수행을 GPU 메모리(130)에서 연산하도록 할 수 있다.
한편, 스파크 프레임 워크는 GPU 커널 연산 수행 시 하둡 분산 파일 시스템(10)으로부터 분산 데이터(111)를 로딩하여 컴퓨터의 메인 메모리 또는 디스크에 저장하고 연산이 필요할 때마다 분산 데이터를 GPU에 전송하여 연산에 사용하는 방식을 취하고 있다.
본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 off-heap CPU 메모리(120)에 분산 데이터(121)를 저장하고 GPU 컨택스트(GPU context)를 선언하여 GPU 메모리(130)가 분산 데이터(131)의 저장을 유지할 수 있게 함으로써, 반복 연산 중 하나의 태스크가 완료되더라도 GPU 메모리(130) 내에서 분산 데이터가 사라지지 않게 하여, 하드웨어 간 분산 데이터의 전송과 관련된 시간 손실을 최소화하고, GPU의 높은 연산 성능을 충분히 활용할 수 있게 한다.
이를 위해, 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 분산 파일 시스템(10)으로부터 수신한 복수의 태스크 중 GPU 커널 연산을 수행하는 것으로 지정된 GPU 태스크가 포함되어 있는 경우 프로세서가 다음과 같은 단계를 수행하게 할 수 있다.
먼저, 분산 파일 시스템(10)으로부터 태스크를 처리해야 하는 것으로 지정된 소정의 분산 데이터(111)를 로딩하여 JVM(java virtual machine) heap CPU 메모리에 저장한다(S220). 이때 S220 단계는 스파크 프레임 워크에 포함된 API를 기초로 수행될 수 있다.
이후, JVM heap CPU 메모리(110)에 저장된 분산 데이터(111)를 복사하여 off-heap CPU 메모리(120)에 저장하고(S230), off-heap CPU 메모리(120)에 저장된 분산 데이터(121)를 복사하여 GPU 메모리(130)에 저장한다(S240). 이를 위해, 본 발명의 일 실시예는 스파크 프레임 워크가 포함하는 API에 비하여, 아래 표 1의 기능을 하는 API를 추가적으로 포함할 수 있다. 이때 JVM heap CPU 메모리(110)와 off-heap CPU 메모리(120) 간의 분산 데이터(111) 전송은 UDS(unix domain socket) 통신을 기초로 수행할 수 있으며, 이에 따라 send, recv의 API 기능을 구현할 수 있다.
또한 off-heap CPU 메모리(120)와 GPU 메모리(130) 간의 분산 데이터(121) 전송은 CUDA 명령어(예를 들어, memcpy)를 기초로 수행할 수 있으며, 이에 따라 htod, dtoh의 API 기능을 구현할 수 있다.
한편, exec, cache, uncache는 GPU를 관리하는 기능으로서 기존의 기술을 사용하여 API를 구현할 수 있으며, halo_extract, halo_shuffle, halo_append는 domain decomposition method 분야에서 사용되는 기존의 알고리즘을 통해 API를 구현할 수 있다.
따라서, S230 단계에는 표 1에 따른 API 중 send를 사용할 수 있고, S240 단계에서는 htod를 사용할 수 있다.
이때 off-heap CPU 메모리(120)에 저장된 분산 데이터(121)를 복사하여 GPU 메모리(130)에 저장하는 단계(S240)는 GPU 컨텍스트를 선언하는 단계를 포함할 수 있다.
GPU 컨텍스트는 GPU가 off-heap CPU 메모리(120)로부터 분산 데이터(121)를 복사하여 저장하여 커널 연산을 수행하게 하는 명령어로서, GPU 컨텍스트가 off-heap CPU 메모리(120)에서 선언되는 경우 GPU에서 분산 데이터(131)에 대한 태스크가 완료되더라도 GPU 메모리(130) 내에서 분산 데이터(131)가 사라지지 않는다는 이점이 있다. 이를 위해, 표 2에 기재된 코드와 같이 off-heap CPU 메모리(120)에서 GPU 컨텍스트를 선언할 수 있다.
이에 따라, 복수의 태스크 중 GPU 커널 연산을 수행하는 것으로 지정된 GPU 태스크를 GPU 메모리(130)에 저장된 분산 데이터(131)에 대해 수행한다(S250). 이때 반복 연산이 필요한 경우, 표 1의 cache의 기능을 통해 GPU 컨텍스트를 해제하지 않음으로써 GPU 메모리(130)에 분산 데이터의 저장을 계속하여 유지함으로써 추가적인 연산을 수행할 수 있으며, 모든 연산이 완료되면 uncache의 기능을 통해 GPU 메모리(130)에 저장된 분산 데이터(131)를 삭제시키고 GPU 컨텍스트의 선언을 해제할 수 있다. 한편, GPU에서 태스크 수행이 완료된 분산 데이터(131)는 다시 off-heap CPU 메모리(120) 및 JVM heap CPU 메모리(110)에 반환하여, 분산 파일 시스템(10)에 업로딩할 수 있다.
이에 따라, 본 발명의 실시예는 off-heap CPU 메모리(120)에 저장된 분산 데이터를 기초로 GPU가 태스크를 수행하게 함으로써, 반복적인 연산에서 주기적인 데이터 전송에 따라 발생하는 메인 메모리와 GPU 간의 데이터 전송 문제를 해결하여, 분산 파일 시스템(10)에서의 GPU 성능을 최대한으로 발휘할 수 있게 한다.
도 3은 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법에 따라 태스크가 수행되는 과정을 설명하기 위한 예시도이다.
도 3을 참조하면, 첫번째 행은 분산 데이터에 대해 처리해야 할 복수의 태스크에 대한 정보를 의미낸다. 이때 JVM heap CPU 메모리(110)에 저장된 분산 데이터(111)는 RDD(resilent distributed dataset), off-heap CPU 메모리(120)에 저장된 분산 데이터(121) 및 JVM heap CPU 메모리(110)에 저장된 분산 데이터(131)는 JVM heap CPU 메모리(110)로부터 복사한 데이터로서 VRDD(virtual resilent distributed dataset)라고 표현하였다. 한편, send, htod, cache, exec, dtoh, recv는 표 1에 포함된 API이며, TextFile, map, reduce는 스파크 프레임 워크에 포함된 API이다. 한편, 도 3에 도시된 예시에 사용된 태스크는 아래 표 3과 같고, 표 3의 line1-10은 도 3에 도시된 line 1-10과 대응된다.
도 3 및 표 3을 참조할 때, 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 분산 파일 시스템(10)으로부터 분산 데이터(111, 121, 131)에 대해 처리해야 할 복수의 태스크에 대한 정보(도 3의 첫번째 행)를 수신할 수 있다.
이에 따라, 스파크 프레임 워크에 포함된 API를 기초로 TextFile 태스크를 수행하여 하둡 분산 파일 시스템(10)(HDFS)으로부터 분산 데이터(RDD1)를 로딩하여 JVM heap CPU 메모리(110)에 저장할 수 있다. 또한, 스파크 프레임 워크에 포함된 API를 기초로 분산 데이터(RDD1)에 대해 map 태스크를 수행하여 분산 데이터(RDD2)를 생성할 수 있다. 이후, 표 1에 따라 생성한 API를 기초로 send 태스크를 수행하여 분산 데이터(RDD2)를 JVM heap CPU 메모리(110)로부터 off-heap CPU 메모리(120)에 복사하여 저장(VRDD3)할 수 있고, htod 태스크를 수행하여 off-heap CPU 메모리(120)에 저장된 분산 데이터(VRDD3)을 복사하여 GPU 메모리(130)에 저장(VRDD5)할 수 있고, 이후 cache 태스크를 수행하여 GPU 메모리(130)에 분산 데이터(VRDD5)의 저장을 유지하도록 할 수 있다.
이에 따라, GPU가 반복 연산(Iteration 1, Iteration 2, ...)을 수행함에 있어서 연산을 위해 반복적으로 사용하는 분산 데이터(VRDD5)를 보존할 수 있기 때문에, GPU와 CPU 간의 데이터 전송을 최소화 하고 GPU의 높은 연산 성능을 충분히 활용할 수 있다.
도 4는 영역 분할법(domain decomposition method)을 수행할 때 발생하는 할로(halo)에 대하여 설명하기 위한 예시도이다.
영역 분할법은 도메인을 서브 도메인으로 분할하면서 분할의 경계에서 발생하는 경계값 문제를 해결하는 공지의 알고리즘이다. 이때 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 도메인의 분할과 함께 발생하는 서브 도메인(domain 0, domain 1) 간의 중첩 영역인 할로(Halo)에서의 연산 값을 여러 노드에서 직접적으로 공유하도록 할 수 있다.
도 5는 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법에 따라 영역 분할법이 수행되는 과정을 설명하기 위한 예시도이다.
도 5를 참조하면, 첫번째 행은 분산 데이터에 대해 처리해야 할 복수의 태스크에 대한 정보를 의미낸다. 이때 GPU 메모리(130)에 저장된 분산 데이터(VRDD1)는 저장이 유지된 채로 반복 연산에 사용될 수 있다. 한편, 도 4에서 domain 0 과 domain 1에 대한 분산 데이터는 서로 다른 노드에 저장되어 있을 수 있다.
예를 들어, 현재 노드에는 domain 0에 대한 분산 데이터(VRDD1)를 저장하고 있고, 다른 노드에 domain 1에 대한 분산 데이터가 저장되어 있다고 가정한다. 이때 현재 노드가 domain 0의 할로 부분에 대한 연산을 수행하기 위해서는 다른 노드가 갖고 있는 domain 1의 할로 부분에 대한 정보가 공유되어야 한다. 이를 위해, 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법은 아래 표 4와 같은 명령을 통해 영역 분할법을 수행할 수 있다.
도 5 및 표 4를 참조할 때, 본 발명의 일 실시예는 표 1에 따라 생성한 API를 기초로 extract 태스크를 수행하여 GPU 메모리(130)에 저장된 분산 데이터(VRDD1) 중 할로에 해당하는 부분을 추출하여 해당 부분을 off-heap CPU 메모리(120)에 복사하여 저장한다. 이후, shuffle 태스크를 수행하여 off-heap CPU 메모리(120)에 저장된 할로 부분에 대한 분산 데이터(VRDD2)를 다른 노드에 저장된 할로 부분에 대한 분산 데이터와 공유하여 halo에 대한 영역 분할법 연산을 수행할 수 있고, 그에 따라 영역 분할법 연산이 수행된 분할 데이터(VRDD3)을 생성할 수 있다. 이때 off-heap CPU 메모리(120)는 MPI(message passing interface) 규약에 따라 분산 데이터를 분산 파일 시스템(10)의 다른 노드와 공유할 수 있기 때문이다.
이후, GPU 메모리(130)는 표 1에 따라 생성한 API를 기초로 append 태스크를 수행하여 VRDD1과 VRDD3으로부터 영역 분할법이 1회 연산된 domain 0에 대한 정보를 생성할 수 있고, 이러한 연산을 반복하여 수행할 수 있다.
따라서 본 발명의 일 실시예는 off-heap CPU 메모리(120)를 사용함에 따라, GPU 메모리(130)만을 연산에 사용하여 분산 데이터에 대한 정보를 직접적으로 공유할 수 없었던 기존 기술과 달리 다른 노드와 분산 데이터를 직접적으로 통신하여 공유할 수 있다.
도 6은 본 발명의 일 실시예에 따른 분산 파일 시스템에 대한 태스크 처리 방법과 기존 프레임 워크의 성능을 비교한 실험 결과이다.
도 6에 따른 실험은, spark-C 프레임 워크, spark-G 프레임 워크 및 본 발명의 실시예에 따른 CPU 메모리에서 GPU 메모리(130)로 분산 데이터를 복사/저장하는 시간과 exec 태스크를 수행하는 GPU 커널 연산 시간을 비교한 것으로서, 본 발명의 일 실시예가 기존의 스파크 프레임 워크에 비해 현저하게 향상된 속도를 보이는 것을 확인할 수 있다.
따라서 상술한 실시예에 따르면, off-heap CPU 메모리(120)로부터 전송 받은 분산 데이터에 대해 GPU가 태스크를 수행하게 하여 메인 메모리에서 GPU로 분산 데이터를 주기적으로 전송함에 따라 소요되는 시간은 없앰으로써, 분산 파일 시스템(10)에서의 GPU 성능을 최대한으로 발휘할 수 있게 한다.
상술한 본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드 등이 기록된 컴퓨터 프로그램은 컴퓨터 판독 가능 기록 매체 또는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 메모리 유닛은 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 프로세서와 데이터를 주고 받을 수 있다.
또한 본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 인코딩 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방법으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
더불어 각 블록 또는 각 단계는 특정된 논리적 기능을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또한 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 분산 파일 시스템
100: 태스크 처리 장치
110: JVM heap CPU 메모리
120: off-heap CPU 메모리
130: GPU 메모리
111, 121, 131: 분산 데이터
100: 태스크 처리 장치
110: JVM heap CPU 메모리
120: off-heap CPU 메모리
130: GPU 메모리
111, 121, 131: 분산 데이터
Claims (9)
- 하나 이상의 프로세서에 의해 수행되는 분산 파일 시스템에 대한 태스크 처리 방법에 있어서,
분산 파일 시스템으로부터 분산 데이터에 대해 처리해야 할 복수의 태스크에 대한 정보를 수신하는 단계;
상기 복수의 태스크에 대한 정보 중 GPU(graphic processing unit) 커널 연산에 관한 태스크가 포함되어 있는 경우,
상기 정보를 기초로 상기 분산 파일 시스템으로부터 상기 분산 데이터 중 제1 분산 데이터를 로딩하여 JVM(java virtual machine) heap CPU(central processing unit) 메모리에 저장하는 단계;
상기 제1 분산 데이터를 복사한 제2 분산 데이터를 off-heap CPU 메모리에 저장하는 단계;
상기 제2 분산 데이터를 복사한 제3 분산 데이터를 GPU 메모리에 저장하는 단계; 및
상기 제3 분산 데이터에 대해 상기 GPU 커널 연산을 수행하는 단계를 포함하고,
상기 제3 분산 데이터를 상기 GPU 메모리에 저장하는 단계는,
GPU 컨텍스트(GPU context)를 선언하는 단계를 포함하고,
상기 GPU 컨텍스트는,
스파크(spark) 프레임 워크의 API의 특정 기능을 통해 상기 GPU 컨텍스트를 해제하기 전까지 GPU에서 상기 제3 분산 데이터에 대한 태스크가 완료되더라도 상기 GPU 메모리 내에 상기 제3 분산 데이터를 유지시키는 명령어인
분산 파일 시스템에 대한 태스크 처리 방법.
- 제1항에 있어서,
상기 분산 파일 시스템은,
하둡 분산 파일 시스템(hadoop distributed file system, HDFS)이고,
상기 제1 분산 데이터를 로딩하여 상기 JVM heap CPU 메모리에 저장하는 단계는,
상기 스파크 프레임 워크의 API를 기초로 수행되는
분산 파일 시스템에 대한 태스크 처리 방법.
- 삭제
- 제1항에 있어서,
상기 off-heap CPU 메모리는,
MPI(message passing interface) 규약에 따라 상기 제2 분산 데이터를 상기 분산 파일 시스템에 포함된 노드와 공유하는
분산 파일 시스템에 대한 태스크 처리 방법.
- 제1항에 있어서,
상기 제2 분산 데이터를 상기 off-heap CPU 메모리에 저장하는 단계는,
UDS(unix domain socket) 통신을 통해 상기 JVM heap CPU 메모리로부터 상기 off-heap CPU 메모리에 상기 제1 분산 데이터를 복사하는 단계를 포함하는
분산 파일 시스템에 대한 태스크 처리 방법.
- 제1항에 있어서,
상기 제3 분산 데이터를 상기 GPU 메모리에 저장하는 단계는,
CUDA(compute unified device architecture)의 memcpy 명령을 통해 상기 off-heap CPU 메모리로부터 상기 GPU 메모리에 상기 제2 분산 데이터를 복사하는 단계를 포함하는
분산 파일 시스템에 대한 태스크 처리 방법.
- 제1항, 제2항, 제4항 내지 제6항 중 어느 한 항의 방법을 수행하는 하나 이상의 프로세서를 포함하는 연산 장치.
- 제1항, 제2항, 제4항 내지 제6항 중 어느 한 항의 방법을 하나 이상의 프로세서가 수행하게 하는 명령어를 포함하는 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능 기록매체.
- 제1항, 제2항, 제4항 내지 제6항 중 어느 한 항의 방법을 하나 이상의 프로세서가 수행하도록 하는 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20170059611 | 2017-05-12 | ||
KR1020170059611 | 2017-05-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180124692A KR20180124692A (ko) | 2018-11-21 |
KR102026333B1 true KR102026333B1 (ko) | 2019-09-27 |
Family
ID=64602683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170168451A KR102026333B1 (ko) | 2017-05-12 | 2017-12-08 | 분산 파일 시스템에 대한 태스크 처리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102026333B1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210046481A (ko) * | 2019-10-18 | 2021-04-28 | 삼성전자주식회사 | 전자 장치 및 그 제어 방법 |
CN113254199A (zh) * | 2021-05-07 | 2021-08-13 | 埃森智能科技(深圳)有限公司 | 一种多任务同时处理方法、系统及其设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101620896B1 (ko) * | 2014-02-27 | 2016-05-13 | 서울시립대학교 산학협력단 | 이기종 프로세싱 타입을 고려한 맵리듀스 프로그램 모델의 수행 성능 향상 방법, 수행 성능 향상 장치 및 수행 성능 향상 시스템 |
KR101794696B1 (ko) | 2016-08-12 | 2017-11-07 | 서울시립대학교 산학협력단 | 이기종 프로세싱 타입을 고려한 태스크 스케쥴링 방법 및 분산 처리 시스템 |
-
2017
- 2017-12-08 KR KR1020170168451A patent/KR102026333B1/ko active IP Right Grant
Non-Patent Citations (2)
Title |
---|
X Lu 외 4인, 'DataMPI: Extending MPI to Hadoop-like Big Data Computing', 2014 IEEE 28th International Parallel & Distributed Processing Symposium, May 2014* |
Y Yuan 외 5인, ‘Spark-GPU: An Accelerated In-Memory DataProcessing Engine on Clusters’, 2016 IEEE International Conference on Big Data, Dec 2016* |
Also Published As
Publication number | Publication date |
---|---|
KR20180124692A (ko) | 2018-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9665404B2 (en) | Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning | |
US10776164B2 (en) | Dynamic composition of data pipeline in accelerator-as-a-service computing environment | |
US20220158953A1 (en) | Distributed stream-based database triggers | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
US9465770B2 (en) | Scheduling and execution of DAG-structured computation on RDMA-connected clusters | |
EP3667496A1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
US10574734B2 (en) | Dynamic data and compute management | |
US9400767B2 (en) | Subgraph-based distributed graph processing | |
CN111309649B (zh) | 一种数据传输和任务处理方法、装置及设备 | |
US20150095384A1 (en) | File transfer to a distributed file system | |
CN108351783A (zh) | 多核数字信号处理系统中处理任务的方法和装置 | |
US20130007762A1 (en) | Processing workloads using a processor hierarchy system | |
US8695014B2 (en) | Distributed function execution for hybrid systems | |
US11016861B2 (en) | Crash recoverability for graphics processing units (GPU) in a computing environment | |
US10970805B2 (en) | Graphics processing unit operation | |
KR102026333B1 (ko) | 분산 파일 시스템에 대한 태스크 처리 방법 | |
US10135924B2 (en) | Computing erasure metadata and data layout prior to storage using a processing platform | |
US10474545B1 (en) | Storage system with distributed input-output sequencing | |
WO2016008317A1 (zh) | 数据处理方法和中心节点 | |
US10127270B1 (en) | Transaction processing using a key-value store | |
US11604669B2 (en) | Single use execution environment for on-demand code execution | |
US11271999B2 (en) | Flexible associativity in multitenant clustered environments | |
US20230236837A1 (en) | Elastically managing workers of multi-worker workloads on accelerator devices | |
WO2023097703A1 (en) | A storage server forsecure and performant execution of user code in a data center storage | |
US20240354218A1 (en) | Machine learning pipeline performance acceleration with optimized data access interfaces using in-memory and distributed store |
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 |