KR101620602B1 - Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법 - Google Patents

Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법 Download PDF

Info

Publication number
KR101620602B1
KR101620602B1 KR1020140148566A KR20140148566A KR101620602B1 KR 101620602 B1 KR101620602 B1 KR 101620602B1 KR 1020140148566 A KR1020140148566 A KR 1020140148566A KR 20140148566 A KR20140148566 A KR 20140148566A KR 101620602 B1 KR101620602 B1 KR 101620602B1
Authority
KR
South Korea
Prior art keywords
data
gpu
page
read
processing
Prior art date
Application number
KR1020140148566A
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 재단법인대구경북과학기술원
Priority to KR1020140148566A priority Critical patent/KR101620602B1/ko
Priority to US14/658,325 priority patent/US10089705B2/en
Application granted granted Critical
Publication of KR101620602B1 publication Critical patent/KR101620602B1/ko

Links

Images

Classifications

    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 GPU를 이용하여 큰 규모의 그래프를 처리하는 시스템 및 방법에 관한 것으로, 보다 상세하게는 스트리밍 방법을 이용하여 GPU의 장치 메모리보다 큰 규모의 그래프 데이터를 처리하는 것이 가능한 시스템 및 방법에 관한 것이다.
본 발명의 일면에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템은 그래프 데이터를 포함하는 메인 메모리와, 메인 메모리로부터 전송 받은 그래프 데이터를 처리하는 복수 개의 GPU의 장치 메모리와, 메인 메모리 및 GPU의 장치 메모리 간의 그래프 데이터 전송에 있어서 중첩 루프 조인 방식으로 그래프 데이터 전송을 처리하는 루프 컨트롤러 및 중첩 루프 조인 방식에 따라 GPU 스트림을 이용하여 그래프 데이터에 포함되는 외부 데이터를 GPU의 장치 메모리에 청크 복사 시키고, 그래프 데이터에 포함되는 내부 데이터를 상기 GPU의 장치 메모리에 스트리밍 복사시키는 스트리밍 컨트롤러를 포함하는 것을 특징으로 한다.

Description

GPU를 이용한 큰 규모 그래프 처리 시스템 및 방법 {SYSTEM AND METHOD FOR PROCESSING LARGE-SCALE GRAPHS USING GPUs}
본 발명은 GPU를 이용하여 큰 규모의 그래프를 처리하는 시스템 및 방법에 관한 것으로, 보다 상세하게는 스트리밍 방법을 이용하여 GPU의 장치 메모리보다 큰 규모의 그래프 데이터를 처리하는 것이 가능한 시스템 및 방법에 관한 것이다.
GPU를 이용한 그래프 처리 시스템은 CPU보다 높은 처리율을 가진 GPU를 이용함으로써, CPU보다 빠른 속도로 그래프 알고리즘을 수행하는 것이 가능하다.
종래 기술에 따른 GPU를 이용한 그래프 처리 시스템은 GPU에 장착된 장치 메모리에 저장 가능한 규모의 그래프 데이터를 처리하는 방법이 제안되었다.
장치 메모리에 저장 가능한 규모의 그래프 데이터를 처리하는 경우에는 GPU의 높은 처리율로 인하여 CPU보다 빠른 처리가 가능한 장점이 있으나, 장치 메모리보다 큰 규모의 그래프를 처리하는 경우에는 그래프를 GPU메모리에 저장 가능한 부분과 주 메모리에 저장 가능한 부분으로 분할한 후 GPU 메모리 상의 그래프만 GPU로 처리하고, 주 메모리 상의 나머지 대부분의 그래프는 CPU로 처리함으로써 그래프 규모가 커짐에 따라 성능 저하가 커지는 문제점이 있다. 또한 그래프 위상 데이터는 GPU의 개수가 증가하여 분할되는 파티션의 개수가 증가할 경우 GPU 간의 데이터 중복이 증가하여 그래프 처리 성능이 저하되는, 즉 GPU의 개수의 증가에 따른 규모 확장성이 좋지 않은 문제점이 있다.
이렇듯 큰 규모의 그래프 데이터를 처리하는 방법에 대한 중요성은 인지되고 있으나, 이러한 기술적 과제를 해결하기 위한 방법에 대한 연구 및 기술 개발은 이루어지고 있지 못한 실정이다.
본 발명은 전술한 문제점을 해결하기 위하여 제안된 것으로, 장치 메모리에 저장 가능한 규모의 그래프 데이터 처리는 물론이고, 나아가 GPU의 장치 메모리보다 큰 규모의 그래프 데이터를 스트리밍 방법으로 처리함으로써, 큰 규모(Large-Scale)의 그래프 데이터(예: billions vertices)를 효과적으로 처리하는 동시에 제시하는 것이 가능한 시스템 및 방법을 제공하고, 그래프 데이터의 규모 및 시스템에 포함되는 GPU의 개수에 따른 규모 확장성(scalable) 성능을 가지는 시스템 및 방법을 제공하는 데 목적이 있다.
본 발명의 일면에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템은 그래프 데이터를 포함하는 메인 메모리와, 메인 메모리로부터 전송 받은 그래프 데이터를 처리하는 복수 개의 GPU의 장치 메모리와, 메인 메모리 및 GPU의 장치 메모리 간의 그래프 데이터 전송에 있어서 중첩 루프 조인 방식으로 그래프 데이터 전송을 처리하는 루프 컨트롤러 및 중첩 루프 조인 방식에 따라 GPU 스트림을 이용하여 그래프 데이터에 포함되는 외부 데이터를 GPU의 장치 메모리에 청크 복사 시키고, 그래프 데이터에 포함되는 내부 데이터를 상기 GPU의 장치 메모리에 스트리밍 복사시키는 스트리밍 컨트롤러를 포함하는 것을 특징으로 한다.
본 발명의 다른 면에 따른 GPU를 이용한 큰 규모 그래프 처리 방법은 그래프 데이터를 로드하고, 로드한 그래프 데이터를 처리하기 위한 GPU 스트림을 생성하고, 외부 및 내부 데이터에 해당하는 버퍼를 할당하고, 페이지를 처리 요청 집합에 포함시키는 시스템 초기화 단계와, 그래프 데이터 중 외부 데이터를 GPU의 장치 메모리에 복사하는 외부 루프 처리 단계와, 현재 장치 메모리에 저장되어 내부 루프 작업에서 캐시로 사용 가능한 페이지 정보 및 내부 루프 과정에서 처리를 요하는 페이지 정보를 메인 메모리에 복사하는 단계와, 처리를 요하는 페이지의 ID 정보를 변경하는 단계 및 처리를 요하는 페이지가 처리 요청 집합 내에 존재하는지 확인하는 단계를 포함하는 것을 특징으로 한다.
본 발명에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템 및 방법은 장치 메모리보다 작은 그래프 데이터 처리는 물론이고, 종래 기술에서 제안하고 있지 아니한 스트리밍 방법을 통하여, 장치 메모리보다 큰 규모의 그래프 데이터를 데이터의 규모 및 시스템에 포함되는 GPU의 개수에 따라 규모 가변적(scalable) 성능으로 처리하는 것이 가능한 효과가 있다.
즉, PageRank와 같이 모든 위상 데이터를 탐색하는 것이 필요한 그래프 알고리즘에 대해서는 위상 데이터를 스트리밍 방법으로 GPU로 전송하면서 그래프를 처리하고, BFS와 같이 일부 위상 데이터만 탐색하는 그래프 알고리즘에 대해서는 각 단계에서 탐색 중인 정점을 바탕으로 다음 탐색에 필요한 위상 데이터만을 파악하여 스트리밍 방법으로 GPU로 전송하는 방법을 제안함으로써, 장치 메모리보다 큰 규모의 그래프를 처리하는 경우에도 우수한 성능으로 그래프를 처리하는 것이 가능하다.
따라서, 본 발명은 데이터 표현에 있어 그래프 형태를 활용하는 소셜 네트워크 서비스, 웹 서비스, 비즈니스 인텔리전스, 생명 과학, 신경 과학 등 데이터 처리의 매우 다양한 분야에 적용되어, GPU를 사용하는 그래프 스트리밍 처리 실현이 가능하다.
본 발명의 효과는 이상에서 언급한 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템을 나타내는 블록도.
도 2는 본 발명의 실시예에 따른 메인 메모리 및 장치 메모리간 속성 중심 전략의 데이터 흐름을 나타내는 도면.
도 3a 내지 도 3c는 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템에서 사용되는 그래프 데이터 구조인 슬롯티드 페이지 구조의 구성을 나타내는 도면.
도 4는 본 발명의 실시예에 따른 시간 축을 기준으로 다수의 스트림이 메인 메모리로부터 장치 메모리로 데이터를 복사하는 과정을 나타내는 도면.
도 5는 본 발명의 실시예에 따른 다수의 GPU로 스트리밍 처리를 하는 경우 데이터 전송 흐름 및 동기화 흐름을 나타내는 도면.
도 6은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법을 나타내는 순서도.
도 7은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법의 시스템 초기화 단계를 나타내는 상세 순서도.
도 8은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법의 외부 루프 알고리즘을 나타내는 상세 순서도.
도 9는 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법의 내부 루프 알고리즘을 나타내는 상세 순서도.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 용이하게 이해할 수 있도록 제공되는 것이며, 본 발명은 청구항의 기재에 의해 정의된다. 한편, 본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자 이외의 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하에서는 도면을 참조하면서, 본 발명의 바람직한 실시 예들을 구체적으로 설명한다.
도 1은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템을 나타내는 블록도이다. 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템은 그래프 데이터를 포함하는 메인 메모리(160)와, 메인 메모리(160)로부터 전송 받은 그래프 데이터를 처리하는 복수 개의 GPU(170)의 장치 메모리(172)와, 메인 메모리(160) 및 GPU의 장치 메모리(172) 간의 그래프 데이터 전송에 있어서 중첩 루프 조인 방식으로 그래프 데이터 전송을 처리하는 루프 컨트롤러(110) 및 중첩 루프 조인 방식에 따라 GPU 스트림을 이용하여 그래프 데이터에 포함되는 외부 데이터를 GPU의 장치 메모리(172)에 청크 복사 시키고, 그래프 데이터에 포함되는 내부 데이터를 GPU의 장치 메모리(172)에 스트리밍 복사시키는 스트리밍 컨트롤러(120)를 포함한다.
본 발명의 실시예에 따른 메인 메모리(160)는 장치 메모리(172)보다 큰 규모의 그래프 데이터의 위상 데이터(161) 및 속성 데이터(162)를 포함한다. 또한, GPU(170)는 최대 r개의 코어 (171) 및 장치 메모리(172)를 포함하며, GPU(170)는 CPU를 통해서 처리하도록 전달되는 그래프 데이터의 처리 및 동기화 작업을 담당한다. CPU(미도시)는 GPU(170)가 그래프 데이터를 처리함에 있어서, 그래프 데이터 처리에 대하여 관리하는 역할을 담당한다.
본 발명의 실시예에 따르면, 부분적인 그래프 데이터 처리 방법으로 중첩 루프 조인(Nested loop join)방식을 이용한다. 중첩 루프 조인 방식은 두 개의 데이터 셋 X={x 1,…,x p} 와 Y={y 1,…,y q} 가 있을 때, X가 외부 루프에 해당하고 Y가 내부 루프에 해당하는 경우, x 1에 대해서 모든 Y 데이터 셋의 요소에 해당하는 {y 1,…,y q}에 대해서 <x i, y i>의 쌍으로 사용자 정의 기능을 수행한다.
GPU를 사용하여 그래프 데이터를 처리하는 경우, 그래프 데이터의 모든 속성 데이터와 위상 데이터 중 어떠한 데이터를 장치 메모리에 저장시키고, 어떤 데이터를 메인 메모리로부터 전송하여 중첩 루프 조인을 통해 부분적으로 처리할 것인지는 GPU의 그래프 처리 성능에 중요한 영향을 미친다.
그래프 데이터는 위상 데이터(161) 및 속성 데이터(162)를 포함하며, 속성 데이터(162)는 읽기/쓰기 속성 데이터 및 읽기 전용 속성 데이터로 분류된다. 분류된 그래프 데이터를 중첩 루프 조인을 통해 부분적으로 처리하는 방법으로는, 위상 중심 전략과 속성 중심 전략의 적용이 가능하다.
일반적으로, 위상 데이터가 외부 루프에 해당하고, 속성 데이터가 내부 루프에 해당하는 위상 중심 전략은 장치 메모리에 있는 각 위상 청크 데이터를 위해 속성 데이터를 스트리밍 방법으로 GPU의 장치 메모리에 복사한다.
반면, 속성 데이터가 외부 루프에 해당하고 위상 데이터가 내부 루프에 해당하는 속성 중심 전략은 각 속성 청크 데이터를 위해 위상 데이터를 스트리밍 방법으로 GPU의 장치 메모리에 복사한다.
일반적으로 속성 데이터는 위상 데이터보다 작으므로, 위상 데이터를 외부 데이터로 처리하는 경우에 비하여, 속성 데이터를 외부 데이터로 처리하는 경우가 외부 루프의 수행 횟수가 더 적다. 즉, 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템은 잠재적으로 작은 외부 데이터 및 작은 동기화 오버헤드 측면에서, 속성 중심 전략으로 그래프 데이터를 처리한다.
스트리밍 컨트롤러(120)는 중첩 루프 조인에 따른 외부 루프로 처리되는 외부 데이터로서 읽기/쓰기 속성 데이터를 청크 복사하고, 내부 루프로 처리되는 내부 데이터로서 읽기 전용 속성 데이터, 작은 페이지 및 큰 페이지를 스트리밍 복사한다. 그래프 알고리즘 처리 동안에 값의 변경이 빈번하게 일어나는 읽기/쓰기 속성 데이터는 외부 루프를 통해 청크 복사가 되는데, 위상 데이터(161)에 비해 크기가 작은 속성 데이터(162)를 외부 데이터로 사용함으로써, 위상 데이터를 외부 루프로 처리하는 위상 중심 전략에 비하여 외부 루프의 수행 횟수가 줄어드는 효과가 있으며, 후술할 동기화 횟수 또한 줄어들게 된다.
내부 루프에 해당하는 위상 데이터 및 읽기 전용 속성 데이터는 스트리밍 복사되는데, 정점마다 서로 다른 크기의 인접 정점을 가지는 그래프 데이터의 위상 데이터를 스트리밍 복사하기 위하여, 고정된 크기로 전달하는 슬롯티드 페이지 구조가 사용된다. 슬롯티드 페이지 구조는 데이터베이스 분야에서 사용되는 구조로, 종래의 TurboGraph시스템에서 CPU 기반으로 그래프 데이터를 처리하기 위하여 최초로 사용된 바 있다.
다만, 본 발명의 실시예에 있어서 스트리밍 처리를 위한 그래프 구조가 단지 슬롯티드 페이지 구조에 한정되는 것은 아니며, 그래프 데이터를 고정된 크기로 표현 가능한 다른 구조가 사용될 수 있음은 물론이다.
도 2는 본 발명의 실시예에 따른 메인 메모리(160) 및 장치 메모리(172)간 속성 중심 전략의 데이터 흐름을 나타내는 도면이다. 도시된 WA(162a)는 읽기/쓰기 속성 데이터를 나타내고, RA(162b)는 읽기 전용 속성 데이터를 나타내는데, WA (162a)는 W만큼, RA(162b)는 R만큼 나누어지고, 읽기/쓰기 속성 데이터(162a)와 읽기 전용 속성 데이터(162b) 중 읽기/쓰기 속성 데이터(162a)만이 외부 데이터로 처리된다.
읽기/쓰기 속성 데이터(162a)는 그래프 알고리즘의 처리 동안에 빈번하게 데이터가 변경되므로, 성능 확보를 위하여 장치 메모리(172)에 유지되는 것이 바람직하다. 반면, 읽기 전용 속성 데이터(162b)의 경우에는 그래프 알고리즘 처리 중에 변하지 않는 데이터로서, 위상 데이터(161)에 해당하는 부분만큼 위상 데이터(161)와 함께 스트리밍 복사되어, 장치 메모리(172)에 제공될 수 있다. 작은 페이지(161a) 및 큰 페이지(161b)는 각각 S, L개의 개수를 가지고, 읽기 전용 속성 데이터(162b)의 경우 R의 개수를 가지는데, 일반적으로 S와 같은 크기를 가진다.
GPU의 장치 메모리(172)는 외부 데이터로 청크 복사된 읽기/쓰기 속성 데이터(162a)를 처리하는 읽기/쓰기 속성 버퍼(174)와, 내부 데이터로 스트리밍 복사된 읽기 전용 속성 데이터(162b) 및 위상 데이터(161)를 처리하는 읽기 전용 속성 버퍼(176) 및 페이지 버퍼(177, 178)를 포함한다. 도 2에 도시한 본 발명의 실시예에 따르면, GPU의 장치 메모리(172)보다 큰 그래프 데이터를 처리하는 것으로, 메인 메모리(160) 및 장치 메모리(172)를 연결하는 PCI-E 인터페이스를 포함하여 구성된다.
메인 메모리(160)는 전체 그래프에 해당하는 위상 데이터(161)를 구성하는 작은 페이지(161a) 및 큰 페이지(161b)를 포함하며, 속성 데이터를 구성하는 읽기/쓰기 속성 데이터(162a) 및 읽기 전용 속성 데이터(162b)를 포함한다.
장치 메모리(172)는 메인 메모리(160)로부터 부분적으로 외부 데이터로 복사되는 속성 데이터를 처리하기 위한 읽기/쓰기 속성 버퍼(174)를 포함하고, 위상 데이터를 처리하기 위한 작은 페이지 버퍼(177), 큰 페이지 버퍼(178)를 포함하며, 또한 읽기 전용 속성 버퍼(176)를 포함한다.
일례로, 페이지 랭크 알고리즘은 계산되는 랭크 값을 저장하기 위한 속성 데이터와, 계산을 위하여 필요한 위상 데이터를 필요로 한다. 속성 데이터는 다시 다음 랭크 값을 저장하는 읽기/쓰기 속성 데이터와, 이전 랭크 값을 저장하는 읽기 전용 속성 데이터로 나뉘어 진다.
본 발명에 따르면, 그래프 데이터를 위상 데이터에 해당하는 고정된 크기의 작은 페이지들(161a) 및 큰 페이지들(161b)과 읽기/쓰기 전용 속성 데이터(162a) 및 읽기 전용 속성 데이터(162b)로 나눈 후, 읽기/쓰기 전용 데이터만 청크(chunk) 방식으로 GPU에 복사(copy)하고 나머지 위상 데이터 및 읽기 전용 속성 데이터는 스트리밍 방식으로 GPU에 복사(copy)하면서 그래프 알고리즘에 필요한 조인 연산을 수행함으로써, GPU의 장치 메모리(172)보다 큰 규모의 그래프 데이터 처리가 가능하다.
본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템은 서로 다른 그래프 알고리즘을 처리하는 방법으로, 그래프 알고리즘에 따라 상이한 처리 방법을 필요로 하는 그래프 알고리즘 중 대표적으로 넓이 우선 탐색 알고리즘과 페이지 랭크 알고리즘을 매끄럽게 처리한다.
그래프 알고리즘은 전체 알고리즘이 처리되는 동안의 과정마다 전체 위상 데이터를 필요로 하는지 또는 일부 위상 데이터를 필요로 하는지에 따라 전역 질의(global query) 및 표적 질의(targeted query)로 구분된다.
페이지 랭크의 경우는 모든 정점의 랭크 계산에 있어서 모든 위상 데이터를 필요로 하는 전역 질의에 해당하는 반면, 넓이 우선 탐색의 경우는 탐색의 기준이 되는 시작 정점을 중심으로 간선으로 연결된 정점에 대하여 탐색해 가는 방법으로서, 일부 위상 데이터를 필요로 하는 표적 질의에 해당한다.
서로 다른 특성을 가지는 그래프 알고리즘을 대상으로 페이지 랭크와 유사한 알고리즘(PageRank like algorithm) 및 넓이 우선 탐색과 유사한 알고리즘(BFS like algorithm)으로 분류하여 처리하는데, 페이지 알고리즘의 경우, 속성 중심 전략을 통해 장치 메모리에 포함된 위상 데이터 및 속성 데이터를 통해 각 정점의 랭크 값을 부분적으로 처리한다.
이 때, 위상 데이터는 스트리밍 방법으로 메인 메모리에서 장치 메모리로 복사되며, 복사된 위상 데이터들에 속하는 정점들의 랭크 값은 GPU의 스트림(stream)에 의해 작은 페이지 및 큰 페이지로 구성된 위상 데이터가 최대 32개까지 중첩되어 계산된다.
한편, 넓이 우선 탐색 알고리즘의 경우, 기준이 되는 시작 정점에서 간선으로 이루어진 모든 정점들을 탐색하는데 있어서 각 단계 별로 부분적인 위상 데이터를 필요로 한다. 종래 기술에 따른 GPU를 사용한 그래프 시스템은 모든 위상 데이터를 스캔하여 탐색하는 방법으로 처리하여 CPU보다 빠른 속도로 탐색을 수행하였으나, 이러한 방법에 따르면 장치 메모리에 저장 가능한 규모의 그래프 데이터는 빠른 처리가 가능하나, 장치 메모리보다 큰 규모의 그래프를 처리하는 경우에는 탐색하여야 하는 위성 데이터의 크기가 그래프 규모가 커짐에 따라 증가하여, 성능 저하로 직결된다.
이러한 성능 저하를 개선하기 위하여 제안된 본 발명에 따르면, 각 단계에서 탐색 중인 정점을 바탕으로 다음 탐색에 필요한 위상 데이터인 작은 페이지(161a) 및 큰 페이지(161b)를 파악하여 탐색에 필요한 위상 데이터만 탐색하는 방법을 제안한다.
본 발명에 따르면, 상이한 성향을 가지는 그래프 알고리즘에 대하여, 각 알고리즘의 수행에 필요한 위상 데이터만을 유연하게 처리함으로써, 페이지 랭크 및 넓이 우선 탐색을 대표적으로 처리하는 그래프 알고리즘에는 물론, 이와 유사한 성향을 가지고 있는 그래프 알고리즘들 또한 처리하는 것이 가능하다.
도 3a 내지 도 3c는 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 시스템에서 사용되는 그래프 데이터 구조인 슬롯티드 페이지 구조의 구성을 나타내는 도면이다.
도 3a에 도시된 바와 같이, 그래프G(210)를 슬롯티드 페이지로 나타내는 경우, 정점 0, 1 및 2는 정점 3에 비해 상대적으로 적은 인접 정점을 가지고 있으며, 이러한 정점들은 도 3b에 도시한 작은 페이지에 저장된다. 한편, 정점 3의 경우 상대적으로 많은 인접 정점을 가지고 있으며, 이러한 정점은 하나의 페이지에 저장될 수 없는 경우 도 3c에 도시한 큰 페이지에 저장된다.
작은 페이지는 레코드 및 슬롯을 포함하고, 레코드는 페이지의 앞에서부터 저장되며, 정점에 대한 인접 정점의 개수(221) 및 인접 정점에 대한 정보(222)를 포함한다. 슬롯은 페이지의 뒤에서부터 저장되며, 정점 ID(223)와 정점에 대한 레코드 리스트의 처음을 가리키는 오프셋(224)을 포함한다. 작은 페이지의 구조와 큰 페이지의 구조는 거의 유사하며, 큰 페이지는 페이지마다 큰 페이지에 해당하는 정점 ID를 포함한다.
도 4는 본 발명의 실시예에 따른 시간 축을 기준으로 다수의 스트림이 메인 메모리로부터 장치 메모리로 데이터를 복사하는 과정을 나타내는 도면이다.
본 발명의 실시예에 따르면, 내부 데이터(161a, 162b)를 스트리밍 처리하기 위하여 다수의 GPU 스트림(stream)을 사용한다. 그래프 데이터의 크기에 따라, 읽기/쓰기 속성 데이터를 장치 메모리에 한번에 저장하지 못하는 경우, 외부 루프의 횟수는 청크로 나누어진 개수에 따라 증가할 수 있다.
스레드에 의해서 실행되는 커널 기능은 외부 데이터(162a)가 장치 메모리에 복사되기 전에는 수행될 수 없다. 따라서, 스레드는 먼저 읽기/쓰기 속성 데이터를 읽기/쓰기 속성 버퍼로 전송하고, 이후 여러 개의 GPU 스트림은 각각 처리하여야 하는 작은 페이지 및 큰 페이지를 기준으로, 작은 페이지를 작은 페이지 버퍼에 복사하고, 작은 페이지와 관련된 읽기 전용 속성 데이터를 읽기 전용 속성 버퍼로 복사하고, 커널을 수행하는 과정을 반복적으로 수행한다.
현재 GPU 하드웨어 제약에 의해 읽기/쓰기 속성 복사, 읽기 전용 속성 복사 및 작은 페이지 복사는 스트림 간의 중첩이 발생하지 않지만, 커널 수행 작업의 경우에는 최대 32개의 중첩이 이루어진다.
도 5는 본 발명의 실시예에 따른 다수의 GPU로 스트리밍 처리를 하는 경우 데이터 전송 흐름 및 동기화 흐름을 나타내는 도면이다.
본 발명의 실시예에 따르면, 모든 GPU에 같은 외부 데이터에 해당하는 읽기/쓰기 속성 데이터(502)를 청크 크기만큼 외부 데이터 버퍼(507)로 복사하고, 내부 데이터에 해당하는 서로 다른 작은 페이지(504) 및 읽기 전용 속성 데이터(503)를 내부 데이터 버퍼(508, 509)로 복사하여 처리한다.
즉, 본 발명의 실시예에 따르면, 같은 읽기/쓰기 속성 데이터를 모든 GPU에 복사하고, 서로 다른 작은 페이지와 읽기 전용 속성 데이터를 서로 다른 GPU에 복사하며(큰 페이지의 경우에도 동일한 방식으로 처리됨), 이후 각 GPU에서 서로 다른 위상 데이터를 이용하여 독립적으로 커널을 수행한다.
본 발명의 실시예에 따르면, MOD 연산을 이용한 해시 기능을 사용하여 복수 개의 GPU 간에 균형적으로 작업을 할당하는 작업량 균형 매니저(140)를 포함한다. 이를 통해, 잠재적으로 GPU의 개수가 증가함에 따라 선형적으로 처리 성능이 향상되는 효과가 있다.
본 발명의 실시예에 따르면, 그래프 알고리즘 처리 시 변경된 읽기/쓰기 속성 버퍼의 값을 메인 메모리와 동기화시키되, 복수개의 GPU의 읽기/쓰기 속성 버퍼에 포함되는 상이한 결과 값에 대한 읽기/쓰기 속성값을 동기화시키고, 동기화된 읽기/쓰기 속성값을 상기 메인 메모리와 동기화시키는 동기화 매니저(150)를 포함한다.
서로 다른 물리적 공간에 존재하는 메모리의 결과값을 동기화함에 있어서, 장치 메모리에서 메인 메모리로 복사하여 동기화하는 작업은 큰 오버 헤드를 수반한다. 이때, 오버 헤드는 모든 GPU의 장치 메모리에서 부분적으로 변경된 속성 데이터를 메인 메모리로 복사하여 동기화 작업을 수행하고, 동기화된 값을 다시 GPU의 장치 메모리로 복사하는 과정에 따른 오버 헤드를 의미한다. 따라서, 본 발명의 실시예에 따르면 peer-to-peer 메모리 복사 방법을 통해 장치 메모리 사이에 직접적으로 읽기/쓰기 속성 데이터에 대한 동기화를 수행하여, 빠른 동기화가 가능한 효과가 있다.
본 발명의 실시예에 따르면, 표적 질의 알고리즘 수행 시 캐싱을 통해 장치 메모리에 탐색을 요하는 위상 페이지가 존재하는지 여부를 확인하는 캐시 매니저(130)를 포함한다. 즉, 본 발명의 실시예에 따르면, 장치 메모리에 작은 페이지 버퍼, 큰 페이지 버퍼, 읽기/쓰기 속성 버퍼 및 읽기 전용 속성 버퍼를 할당하고 남은 장치 메모리의 가용 공간을 활용한다. 이러한 위상 데이터 캐싱 방법은 알고리즘 수행 동안 같은 위상을 반복하여 탐색하는 탐색 알고리즘에 효과적인 방법으로서, 장치 메모리에 탐색해야 하는 페이지가 이미 존재하는 경우에는 메인 메모리로부터 복사를 수행하지 않고, 장치 메모리에 존재하는 페이지를 사용하여 사용자 정의 커널에 의한 탐색을 수행한다. 이 때, 대표적으로 LRU(Least Recently Used) 캐시 알고리즘이 사용되며, 본 발명의 실시예에 따르면 LRU 이외에 다른 캐시 알고리즘이 적용되는 것 역시 가능하다.
장치 메모리에 읽기/쓰기 속성 버퍼, 읽기 전용 속성 버퍼, 작은 페이지 버퍼 및 큰 페이지 버퍼를 할당하면, 추가적으로 활용 가능한 공간이 존재한다.
본 발명의 실시예에 따르면, 작은 페이지 및 큰 페이지와 같은 내부 데이터를 스트리밍 전송함에 있어서 캐싱을 통해 그 성능을 최대화한다.
일례로, 넓이 우선 탐색 알고리즘을 처리하는 경우, 외부 데이터에 해당하는 읽기/쓰기 속성 데이터의 크기는 탐색 대상의 정점이 탐색되었는지 확인하기 위한 속성값으로 작은 공간을 차지하여, 장치 메모리에서 추가적으로 활용 가능한 공간의 크기가 상대적으로 증가한다. 즉, 캐싱을 위한 버퍼로 활용할 수 있는 공간이 증가하여, 이에 따른 성능 향상의 효과가 있다.
넓이 우선 탐색과 같은 그래프 알고리즘의 경우, 탐색을 수행하는 동안 반복하여 같은 위상 페이지를 탐색하여야 하는데, 캐싱을 통해 이미 장치 메모리에 탐색해야 하는 페이지가 존재하는 경우에는 메인 메모리로부터 불필요한 복사를 수행하지 않아도 된다. 그 결과, 그래프 데이터의 위상 데이터로 작은 페이지가 S개, 큰 페이지가 L개 있을 경우, 캐시로 재활용되는 페이지가 B만큼 존재한다고 가정하면, B/(S+L) 만큼 캐시 히트 비율이 계산된다.
도 6은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법을 나타내는 순서도이다.
본 발명의 실시예에 따르면, 시스템 초기화 단계(S100)와, 외부 루프 처리 단계(S200)와, 현재 장치 메모리에 저장되어 있어 다음 내부 루프작업에서 캐시로 사용될 수 있는 페이지에 대한 정보 및 다음 내부 루프 과정에서 처리되어야 하는 페이지에 대한 정보를 메인 메모리로 복사하는 단계(S400)와, 다음 단계에서 처리해야 하는 작은 페이지 및 큰 페이지에 대한 페이지 ID 정보를 변경하는 단계(S500)와, 처리를 요하는 페이지가 처리 요청 집합(nextPIDSet) 내에 존재하는지 확인하는 단계(S600)를 포함한다.
도 7은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법의 시스템 초기화 단계를 나타내는 상세 순서도이다.
도 7에 도시된 바와 같이, 본 발명의 실시예에 따르면, 먼저 처리하기 위한 그래프 데이터를 디스크로부터 메인 메모리로 로드한다(S120). 이 후, 처리를 위한 사전 작업으로 작은 페이지와 큰 페이지를 처리하기 위한 GPU 스트림을 각 GPU에 생성하고(S130), 외부 데이터에 해당하는 읽기/쓰기 속성 버퍼와 내부 데이터에 해당하는 읽기 전용 속성 버퍼, 작은 페이지 버퍼 및 큰 페이지 버퍼를 각 GPU의 장치 메모리에 할당한다(S140).
전술한 바와 같이, 그래프 알고리즘은 크게 페이지 랭크와 유사한 알고리즘(PageRank like algorithm) 및 넓이 우선 탐색과 유사한 알고리즘 (BFS like algorithm)로 나뉘어진다. 이러한 알고리즘들은 크게 알고리즘을 수행하는데 있어서, 각 단계별로 모든 위상 데이터를 이용하여 처리를 수행하는가 또는 일부 위상 데이터를 이용하여 처리를 수행하는가의 차이가 있다.
본 발명의 실시예에 따르면, 사용자 정의 커널이 넓이 우선 탐색과 같은 탐색 알고리즘인가를 확인한다(S150). 사용자 정의 커널이 넓이 우선 탐색과 같은 탐색 알고리즘인 경우, 시작 노드를 포함하는 페이지를 처리 요청 집합(nextPIDSet)에 포함시킨다(S160). 반면, 사용자 정의 커널이 페이지 랭크와 같은 알고리즘의 경우에는 전체 페이지를 처리 요청 집합(nextPIDSet)에 포함시킨다(S170).
전술한 바와 같이, 본 발명의 실시예에 따르면 가용 공간의 활용을 위하여 캐시 방법을 이용하는데, 알고리즘이 수행되기 전의 경우에는 캐시로 활용될 수 있는 위상 페이지가 존재하지 않으므로, cachedPIDMap을 초기화한다(S180).
도 8은 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법의 외부 루프 알고리즘을 나타내는 상세 순서도이다.
본 발명의 실시예에 따르면, 그래프의 규모에 따라서 외부 데이터에 해당하는 읽기/쓰기 속성의 청크 개수가 결정되고, 청크 개수만큼 외부 데이터에 대한 루프 횟수가 결정된다(S210). 먼저 외부 데이터에 해당하는 읽기/쓰기 속성 청크를 GPU의 장치 메모리에 할당된 읽기/쓰기 속성 버퍼에 복사하고(S220), 내부 루프(S230) 및 동기화 작업(S240, S250)을 수행한다.
일례로, 동기화 작업은 서로 다른 읽기/쓰기 속성 결과 값을 가지고 있는 장치 메모리들 간의 동기화를 수행하는데 있어서, 우선 GPU1번에 해당하는 GPU로 읽기/쓰기 속성 결과 값을 복사하는 제1 동기화를 수행한다(S240). 이후, 1번 GPU의 장치 메모리에 동기화된 결과 값을 메인 메모리로 복사하여 제2 동기화를 수행한다(S250). 이러한 과정이 읽기/쓰기 속성 청크의 개수만큼 반복된 후, 더 이상 처리해야 하는 청크의 개수가 존재하지 않는 경우에 종료된다.
도 9는 본 발명의 실시예에 따른 GPU를 이용한 큰 규모 그래프 처리 방법의 내부 루프 알고리즘을 나타내는 상세 순서도이다.
본 발명의 실시예에 따르면, 서로 다른 개수의 노드에 대한 정보를 포함하고 있는 작은 페이지 및 큰 페이지 사이의 균형적인 작업을 위해 작은 페이지에 대한 처리 완료 이후 큰 페이지를 처리하게 된다.
일례로, 도 3에 대한 설명에서 전술한 바와 같이, 작은 페이지는 하나의 페이지 내에 포함될 수 있는 인접 정점을 가지고 있는 다수의 정점들이 포함되는 반면, 큰 페이지는 하나의 페이지 내에 포함될 수 없는 인접 정점을 가지고 있는 다수의 정점들을 포함하여 다수의 페이지로 구성되게 된다.
GPU의 SIMT(Single Instruction Multiple Thread) 특성에 의해 서로 다른 정점에 대한 인접 정점을 처리하지 않는 큰 페이지는 작은 페이지에 비하여 빠른 속도로 처리 된다. 따라서, 작은 페이지와 큰 페이지를 함께 처리하는 경우에는 불균형한 작업이 이루어져 성능 저하의 원인이 된다.
그러므로, 먼저 처리해야 하는 작은 페이지가 처리 요청 집합(nextPIDSet)에 있는지 확인(S901)한 후, 내부 루프가 수행된다. 다중 GPU 환경에서 서로 다른 GPU는 해시 기능에 의해 서로 다른 위상 데이터를 처리한다. 처리하고자 하는 작은 페이지가 이미 장치 메모리에 포함되어 있는 경우, 내부 데이터에 해당하는 작은 페이지와 읽기 전용 속성의 복사(S903, S904)를 수행하지 않고 그래프 알고리즘을 수행하기 위한 사용자 정의 커널을 수행한다(S905). 이후 처리 요청 집합(nextPIDSet)에 포함되어 있는 모든 작은 페이지를 처리한 후에 서로 다른 페이지를 처리하고 있는 GPU 스트림의 종료를 대기하기 위한 GPU 스레드의 동기화를 수행한다(S906).
작은 페이지가 모두 처리된 이후 처리해야 하는 큰 페이지가 처리 요청 집합(nextPIDSet)에 있는가를 확인하고(S907), 이를 기준으로 내부 루프가 수행된다. 전술한 바와 같이, 다중 GPU 환경에서 서로 다른 GPU는 해시 기능에 의해 서로 다른 위상 데이터를 처리한다. 처리하고자 하는 큰 페이지가 이미 장치 메모리에 포함되어 있는 경우, 내부 데이터에 해당하는 큰 페이지의 복사(S909)를 수행하지 않고 그래프 알고리즘을 수행하기 위한 사용자 정의 커널을 수행한다(S910). 여기서 작은 페이지와 달리 큰 페이지의 경우 포함하고 있는 기준 정점의 개수가 하나여서, 큰 페이지를 처리하기 위한 커널을 수행할 때 필요한 읽기 정보를 전달할 수 있기 때문에, 따로 읽기 속성에 대한 복사는 수행되지 않는다. 처리 요청 집합(nextPIDSet)에 포함되어 있는 모든 큰 페이지를 처리한 후에 서로 다른 페이지를 처리하고 있는 GPU 스트림의 종료를 대기하기 위한 GPU 스레드 동기화가 수행된다(S911).
본 발명의 실시예에 따른 시스템 및 방법은 성능 경향(performance tendency)의 이해를 돕기 위하여, 대표적인 그래프 알고리즘으로 제시된 페이지 랭크와 같은 알고리즘과 넓이 우선 탐색과 같은 알고리즘의 비용 모델(cost model)을 포함한다.
모든 비용 모델은 크게 외부 데이터 전송 비용, 내부 데이터 전송 비용, 사용자 정의 커널 처리 비용 및 동기화 비용으로 구분된다. 이에 따라 페이지 랭크와 같은 알고리즘에 대한 비용 모델은 아래 [수식 1]과 같이 제시된다.
[수식 1]
Figure 112014104244587-pat00001
c1: 청크 복사가 이루어질 때 메인 메모리와 장치 메모리 사이의 전송 비율(MB/s)
c2: 스트리밍 복사가 이루어질 때 메인 메모리와 장치 메모리 사이의 전송 비율(MB/s)
t call (x): x 번의 사용자 정의 커널을 호출하는데 발생하는 부하 시간
t kernel (y): y 번의 사용자 정의 커널 수행 시간
t sync (z): z 개의 GPU 사이의 동기화 수행 시간
페이지 랭크와 같은 알고리즘의 비용 모델에서 2|WA|/c1은 모든 WA i (읽기/쓰기 속성 청크)에 대한 메인 메모리에서 장치 메모리로 복사하는 시간 및 장치 메모리에서 메인 메모리로 복사하는 시간을 의미한다.
(|RA|+|SP|+|LP|)/c2은 내부 루프 수행 시간을 의미하며, 해당 과정은 N개의 다중 GPU로 나누어져 동시에 처리될 수 있는 작업으로, 전체 내부 루프로 수행되는 데이터에 대한 시간이 N으로 나누어 진다.
t call (S+L)은 작은 페이지와 큰 페이지의 개수로 인해 사용자 정의 커널을 호출하는데 발생되는 부하 시간이다. 내부 루프로 수행되는 데이터가 N개의 GPU로 나누어 처리되는 것과 같이, 커널을 호출하는데 발생하는 부하 시간도 N으로 나누어진다.
Figure 112014104244587-pat00002
은 가장 마지막에 처리되는 작은 페이지와 큰 페이지에 대한 실행 시간으로 커널 간의 실행은 최대 32개까지 동시에 수행될 수 있으나, 데이터 복사는 동시간에 중첩되지 않기 때문에 데이터 스트리밍 복사에 의해 숨겨질 수 없다.
동시에 페이지 랭크와 같은 알고리즘은 일반적으로 데이터를 전송하는 시간보다 사용자 정의 커널이 수행되는 시간이 더 소요되는 알고리즘으로, 다중 GPU에 의해 처리되더라도 가장 늦게 끝나는 kernel의 시간에 비례하게 된다.
t sync (N)WA(읽기/쓰기 속성 청크)에 대한 N개의 GPU 사이에 소요되는 동기화 시간으로 이는 GPU의 개수가 늘어날수록 증가한다.
이하에서는 넓이 우선 탐색과 같은 알고리즘을 처리하는 경우에 관한 것으로, 비용 모델에 관한 수식은 아래 [수식 2]와 같다.
[수식 2]
Figure 112014104244587-pat00003
depth: 탐색 레벨
SP {l} : l번째 레벨을 탐색할 때 필요한 작은 페이지의 개수
d skew : GPU간에 the degree of workload skewness
r hit : 전술한 캐시 방법에서 언급된 재사용되는 페이지 개수 / (전체 레벨 탐색에 필요한 총 작은 페이지 + 전체 레벨 탐색에 필요한 총 큰 페이지)
넓이 우선 탐색과 같은 알고리즘의 경우 페이지 랭크 알고리즘과 같은 알고리즘과 달리, 읽기/쓰기 속성 데이터가 상대적으로 작은 크기를 차지한다.
즉, 장치 메모리에 모든 읽기/쓰기 속성 데이터를 저장하는 것이 가능하여, 매 레벨별로 탐색이 끝났을 때 메인 메모리로 복사하여 동기화를 하는 것이 아니라, 전체 탐색이 끝났을 때 메인 메모리로 복사하여 동기화를 수행하면 된다. 이러한 이유로 2|WA|/c1의 경우 페이지 랭크와 같은 알고리즘과 달리 한번만 이루어지면 된다.
(|RA|+|SP|+|LP|)/c2는 페이지 랭크와 같은 알고리즘의 비용 모델에서 전술한 바와 같이, 내부 데이터를 전송하는데 수행되는 시간을 의미하며, 이는 마찬가지로 N개의 장치 메모리가 존재하는 경우 N으로 나누어진다.
추가로 장치 d skew 에 의해 나누어지며 d skew 의 경우 구체적으로 넓이 우선 탐색에 의한 장치 메모리간의 작업량 균형에 대한 비율로 모든 GPU가 같은 작업량을 가지는 경우 1의 값을 갖고 하나의 GPU로 작업량이 집중되는 최악의 경우 1/N의 값을 갖는다.
(1-r hit )는 캐시에 따른 효과를 나타내는 것으로 0에서 1의 값을 갖는다. 0의 경우는 캐시로 활용되는 위상 데이터가 하나도 존재하지 않는 경우이며, 1의 경우는 모든 위상 데이터가 장치 메모리에 존재하는 경우이다.
t kernel (y)는 넓이 우선 탐색과 같은 사용자 정의 커널을 수행하는 시간으로, 넓이 우선 탐색에 있어서는 페이지 랭크와 같은 알고리즘처럼 커널 수행에 의한 부하가 크지 않으므로, 성능에 크게 영향을 미치지 않는다.
Figure 112014104244587-pat00004
는 동기화에 걸리는 시간인 t sync (z)를 나타내는 것으로서, S {l} 는 상기 명시한 바와 같이 l-레벨에 방문된 작은 페이지의 개수로 방문을 통해 값이 변한 속성 데이터의 부분만을 동기화 하면 되며, 이는 GPU의 개수 * d skew 로 나누어진다.
전술한 수식을 통해 데이터의 규모가 늘어나는 경우, 기본적으로 외부 데이터에 해당하는 읽기/쓰기 속성 데이터를 한 번에 저장하지 못하는 경우에는 이에 따른 외부 데이터를 수행하여야 하는 횟수가 W만큼 증가할 것이다. 한편, 내부 데이터에 해당하는 작은 페이지, 큰 페이지 및 읽기 속성 데이터의 크기가 증가할 것이다. 이와 동시에 처리 가능한 GPU의 개수가 늘어남에 따라 내부 데이터의 분할 처리를 통해 전체 그래프 처리에서 가장 많은 시간을 차지하는 내부 루프 처리 시간을 빠르게 처리할 수 있다.
전술한 비용 모델을 근거로, 본 발명의 실시예에 따르면 종전의 시스템과 달리 장치 메모리보다 큰 규모의 그래프데이터를 처리하는데 있어서 그래프의 규모 및 GPU의 개수에 따른 규모 가변적(scalable)인 성능을 보인다.
이제까지 본 발명의 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
110: 루프 컨트롤러 120: 스트리밍 컨트롤러
130: 캐시 매니저 140: 작업량 균형 매니저
150: 동기화 매니저 160: 메인 메모리
161: 위상 데이터 162: 속성 데이터
170: GPU 171: 코어
172: 장치 메모리 174: 읽기/쓰기 속성 버퍼
175: 내부 데이터 176: 읽기 전용 속성 버퍼
177: 작은 페이지 버퍼 178: 큰 페이지 버퍼

Claims (13)

  1. 그래프 데이터를 포함하는 메인 메모리;
    상기 메인 메모리로부터 전송 받은 그래프 데이터를 처리하는 복수 개의 GPU의 장치 메모리;
    상기 메인 메모리 및 상기 GPU의 장치 메모리 간의 그래프 데이터 전송에 있어서, 상기 그래프 데이터에 포함되는 외부 데이터 및 내부 데이터를 분류하여 중첩 루프 조인 방식으로 부분적으로 전송 처리하는 루프 컨트롤러; 및
    상기 중첩 루프 조인 방식에 따라 외부 루프로 처리되는 상기 외부 데이터를 상기 GPU의 장치 메모리에 청크 복사 시키고, 내부 루프로 처리되는 상기 내부 데이터를 상기 GPU의 장치 메모리에 스트리밍 복사시키는 스트리밍 컨트롤러
    를 포함하는 GPU를 이용한 그래프 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 메인 메모리는 상기 GPU의 장치 메모리의 용량을 기준으로, 상기 장치 메모리에 저장 가능한 용량보다 큰 용량의 그래프 데이터를 포함하되, 상기 그래프 데이터는 위상 데이터 및 속성 데이터를 포함하는 것
    인 GPU를 이용한 그래프 데이터 처리 시스템.
  3. 제2항에 있어서,
    상기 GPU의 장치 메모리는 상기 외부 데이터로 청크 복사된 읽기/쓰기 속성 데이터를 처리하는 읽기/쓰기 속성 버퍼와, 상기 내부 데이터로 스트리밍 복사된 읽기 전용 속성 데이터 및 위상 데이터를 처리하는 읽기 전용 속성 버퍼 및 페이지 버퍼를 포함하는 것
    인 GPU를 이용한 그래프 데이터 처리 시스템.
  4. 제2항에 있어서,
    표적 질의 알고리즘 수행 시 캐싱을 통해 상기 장치 메모리에 탐색을 요하는 위상 페이지가 존재하는지 여부를 확인하는 캐시 매니저
    를 더 포함하는 GPU를 이용한 그래프 데이터 처리 시스템.
  5. 제2항에 있어서,
    상기 스트리밍 컨트롤러는 메인 메모리에 포함되는 동일한 읽기/쓰기 속성 데이터를 상기 복수 개의 GPU의 장치 메모리의 읽기/쓰기 속성 버퍼에 복사하고, 상기 메인 메모리에 포함되는 서로 다른 위상 데이터 및 읽기 전용 속성 데이터를 상이한 GPU의 장치 메모리의 페이지 버퍼 및 읽기 전용 속성 버퍼에 각각 복사하며, 각각의 GPU는 상기 서로 다른 위상 데이터를 이용하여 독립적으로 커널을 수행하는 것
    인 GPU를 이용한 그래프 데이터 처리 시스템.
  6. 제1항에 있어서,
    MOD 연산을 이용한 해시 기능을 사용하여 상기 복수 개의 GPU 간에 균형적으로 작업을 할당하는 작업량 균형 매니저
    를 더 포함하는 GPU를 이용한 그래프 데이터 처리 시스템.
  7. 제6항에 있어서,
    그래프 알고리즘 처리 시 변경된 읽기/쓰기 속성 버퍼의 값을 메인 메모리와 동기화시키되, 상기 복수개의 GPU의 읽기/쓰기 속성 버퍼에 포함되는 상이한 결과 값에 대한 읽기/쓰기 속성값을 동기화시키고, 상기 동기화된 읽기/쓰기 속성값을 상기 메인 메모리와 동기화시키는 동기화 매니저
    를 더 포함하는 GPU를 이용한 그래프 데이터 처리 시스템.
  8. (a) GPU를 이용한 그래프 데이터 처리 시스템의 스트리밍 컨트롤러가, 그래프 데이터를 로드하고, 로드한 그래프 데이터를 처리하기 위한 GPU 스트림을 생성하고, 외부 및 내부 데이터에 해당하는 버퍼를 할당하고, 페이지를 처리 요청 집합에 포함시키는 시스템 초기화 단계;
    (b) 상기 스트리밍 컨트롤러가, 그래프 데이터 중 외부 데이터를 GPU의 장치 메모리에 복사하는 외부 루프 처리 단계;
    (c) 루프 컨트롤러가, 현재 장치 메모리에 저장되어 내부 루프 작업에서 캐시로 사용 가능한 페이지 정보 및 내부 루프 과정에서 처리를 요하는 페이지 정보를 메인 메모리에 복사하는 단계;
    (d) 상기 루프 컨트롤러가, 처리를 요하는 페이지의 ID 정보를 변경하는 단계; 및
    (e) 캐시 매니저가, 처리를 요하는 페이지가 처리 요청 집합 내에 존재하는지 확인하는 단계
    를 포함하는 GPU를 이용한 그래프 데이터 처리 방법.
  9. 제8항에 있어서,
    상기 (a) 단계는 외부 데이터를 처리하는 읽기/쓰기 속성 버퍼와, 내부 데이터를 처리하는 읽기 전용 속성 버퍼 및 페이지 버퍼를 상기 장치 메모리에 할당하고, 사용자 정의 커널이 넓이 우선 탐색과 같은 탐색 알고리즘을 확인하여, 넓이 우선 탐색과 같은 탐색 알고리즘인 경우 시작 노드를 포함하는 페이지를 처리 요청 집합에 포함시키고, 상기 사용자 정의 커널이 페이지 랭크와 같은 알고리즘인 경우 전체 페이지를 처리 요청 집합에 포함시키는 것
    인 GPU를 이용한 그래프 데이터 처리 방법.
  10. 제8항에 있어서,
    상기 (b) 단계는 상기 외부 데이터에 대한 루프 횟수를 결정하고, 상기 외부 데이터에 해당하는 읽기/쓰기 속성 청크를 복사하는 단계와, 내부 루프 단계 및 동기화 단계를 포함하는 것
    인 GPU를 이용한 그래프 데이터 처리 방법.
  11. 제10항에 있어서,
    상기 (b) 단계는 처리를 요하는 작은 페이지가 처리 요청 집합에 포함하는지 확인하고, 상기 작은 페이지가 장치 메모리에 포함된 경우 내부 데이터에 해당하는 작은 페이지와 읽기 전용 속성 데이터의 복사를 수행하지 않고 사용자 정의 커널을 수행하는 작은 페이지에 대한 내부 루프 단계를 포함하는 것이고,
    상기 작은 페이지는 그래프를 슬롯티드 페이지로 나타내는 경우에, 기설정된 개수보다 적은 인접 정점을 가지는 정점에 대한 레코드 및 슬롯을 하나의 페이지에 저장하는 것
    인 GPU를 이용한 그래프 데이터 처리 방법.
  12. 제11항에 있어서,
    상기 (b) 단계는 상기 작은 페이지가 모두 처리된 경우, 처리를 요하는 큰 페이지가 처리 요청 집합에 포함되어 있는지 확인하고, 상기 큰 페이지가 상기 장치 메모리에 포함된 경우 내부 데이터에 해당하는 큰 페이지를 복사하지 않고 사용자 정의 커널을 수행하는 큰 페이지에 대한 내부 루프 단계를 포함하는 것이고,
    상기 큰 페이지는 기설정된 개수 이상의 인접 정점을 가지고 있는 정점에 대한 인접 정점의 개수 및 인접 정점에 대한 정보를 저장하는 것
    인 GPU를 이용한 그래프 데이터 처리 방법.
  13. 제11항에 있어서,
    상기 (b) 단계는 기설정된 GPU로 읽기/쓰기 속성 결과 값을 복사하여 동기화를 수행하는 제1동기화 단계와, 상기 기설정된 GPU의 장치 메모리에 동기화된 결과 값을 메인 메모리로 복사하여 동기화를 수행하는 제2 동기화 단계를 포함하는 것
    인 GPU를 이용한 그래프 데이터 처리 방법.
KR1020140148566A 2014-10-29 2014-10-29 Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법 KR101620602B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140148566A KR101620602B1 (ko) 2014-10-29 2014-10-29 Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법
US14/658,325 US10089705B2 (en) 2014-10-29 2015-03-16 System and method for processing large-scale graphs using GPUs

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140148566A KR101620602B1 (ko) 2014-10-29 2014-10-29 Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR101620602B1 true KR101620602B1 (ko) 2016-05-11

Family

ID=55853189

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140148566A KR101620602B1 (ko) 2014-10-29 2014-10-29 Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법

Country Status (2)

Country Link
US (1) US10089705B2 (ko)
KR (1) KR101620602B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018124331A1 (ko) * 2016-12-28 2018-07-05 재단법인대구경북과학기술원 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
WO2021132823A1 (en) * 2019-12-22 2021-07-01 Samsung Electronics Co., Ltd. Method and apparatus for scaling resources of graphics processing unit in cloud computing system
KR20240014841A (ko) 2022-07-26 2024-02-02 광운대학교 산학협력단 엣지 디바이스 간 워크로드 분산 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110659278A (zh) * 2018-06-12 2020-01-07 上海郑明现代物流有限公司 基于cpu-gpu异构架构的图数据分布式处理系统
CN110764824A (zh) * 2019-10-25 2020-02-07 湖南大学 一种gpu上的图计算数据划分方法
CN113053493B (zh) * 2019-12-27 2024-05-14 无锡祥生医疗科技股份有限公司 数据处理平台
CN111580969A (zh) * 2020-05-07 2020-08-25 湖南大学 一种基于多gpu的a*搜索方法
CN112346869B (zh) * 2020-11-10 2021-07-13 上海交通大学 自适应的面向大图的统一内存管理方法及系统
CN113064850B (zh) * 2021-04-09 2024-05-28 中科可控信息产业有限公司 拓扑检测处理方法、装置、服务器及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005025749A (ja) 2003-06-30 2005-01-27 Microsoft Corp データ生成タスクの並列実行システムおよび方法
JP3770616B2 (ja) 1993-09-13 2006-04-26 オブジェクト テクノロジー ライセンシング コーポレイション オブジェクト指向ビデオ・システム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8184120B2 (en) 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US8397241B2 (en) 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US9137336B1 (en) * 2011-06-30 2015-09-15 Emc Corporation Data compression techniques
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
US9201638B2 (en) * 2012-08-07 2015-12-01 Nec Laboratories America, Inc. Compiler-guided software accelerator for iterative HADOOP® jobs
KR101245994B1 (ko) 2012-08-31 2013-03-20 케이씨씨시큐리티주식회사 대용량 데이터의 분산 병렬 처리 시스템 및 방법
US9424079B2 (en) * 2013-06-27 2016-08-23 Microsoft Technology Licensing, Llc Iteration support in a heterogeneous dataflow engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3770616B2 (ja) 1993-09-13 2006-04-26 オブジェクト テクノロジー ライセンシング コーポレイション オブジェクト指向ビデオ・システム
JP2005025749A (ja) 2003-06-30 2005-01-27 Microsoft Corp データ生成タスクの並列実行システムおよび方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018124331A1 (ko) * 2016-12-28 2018-07-05 재단법인대구경북과학기술원 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
WO2021132823A1 (en) * 2019-12-22 2021-07-01 Samsung Electronics Co., Ltd. Method and apparatus for scaling resources of graphics processing unit in cloud computing system
US11762685B2 (en) 2019-12-22 2023-09-19 Samsung Electronics Co., Ltd. Method and apparatus for scaling resources of graphics processing unit in cloud computing system
KR20240014841A (ko) 2022-07-26 2024-02-02 광운대학교 산학협력단 엣지 디바이스 간 워크로드 분산 방법

Also Published As

Publication number Publication date
US10089705B2 (en) 2018-10-02
US20160125566A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
KR101620602B1 (ko) Gpu를 이용한 큰 규모 그래프 처리 시스템 및 방법
US9904599B2 (en) Method, device, and system for data reconstruction
KR101814577B1 (ko) 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
US8701106B2 (en) Hashing storage images of a virtual machine
JP5303038B2 (ja) 重複したデータを排除するストレージシステム
US20150254325A1 (en) Managing a distributed database across a plurality of clusters
CN109933312B (zh) 一种有效降低容器化关系型数据库i/o消耗的方法
WO2012127988A1 (ja) 情報処理装置、分散ファイルシステム、クライアント装置、情報処理方法、および、コンピュータ・プログラム
US9400767B2 (en) Subgraph-based distributed graph processing
US20100188412A1 (en) Content based cache for graphics resource management
US9471586B2 (en) Intelligent selection of replication node for file data blocks in GPFS-SNC
US10241963B2 (en) Hash-based synchronization of geospatial vector features
CN108762915B (zh) 一种在gpu内存中缓存rdf数据的方法
CN105744001A (zh) 分布式缓存系统扩容方法、数据访问方法及装置和系统
CN112906825A (zh) 实现机器学习模型的分布式训练的方法和计算节点
CN110245024B (zh) 静态存储块的动态分配系统及其方法
KR20190095489A (ko) 그래프 처리 시스템 및 그래프 처리 시스템의 동작 방법
US11176081B2 (en) Parallel, distributed processing in a heterogeneous, distributed environment
Kim et al. Accelerating GNN training with locality-aware partial execution
US11467836B2 (en) Executing cross-core copy instructions in an accelerator to temporarily store an operand that cannot be accommodated by on-chip memory of a primary core into a secondary core
KR102571197B1 (ko) 클러스터 파일시스템의 캐시 일관성 유지방법
KR102026333B1 (ko) 분산 파일 시스템에 대한 태스크 처리 방법
WO2013108745A1 (ja) ストレージ装置、その制御方法、及びプログラム
CN109076110B (zh) 图像发送方法、装置及存储介质
KR100840011B1 (ko) 3차원 그래픽 연산을 위한 캐쉬 메모리 장치 및 3차원그래픽 연산 처리 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190325

Year of fee payment: 4