KR101586145B1 - Gpu 기반 트리 탐색 방법 - Google Patents

Gpu 기반 트리 탐색 방법 Download PDF

Info

Publication number
KR101586145B1
KR101586145B1 KR1020140058358A KR20140058358A KR101586145B1 KR 101586145 B1 KR101586145 B1 KR 101586145B1 KR 1020140058358 A KR1020140058358 A KR 1020140058358A KR 20140058358 A KR20140058358 A KR 20140058358A KR 101586145 B1 KR101586145 B1 KR 101586145B1
Authority
KR
South Korea
Prior art keywords
node
mbb
searching
overlapped
leaf
Prior art date
Application number
KR1020140058358A
Other languages
English (en)
Other versions
KR20140135124A (ko
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 KR20140135124A publication Critical patent/KR20140135124A/ko
Application granted granted Critical
Publication of KR101586145B1 publication Critical patent/KR101586145B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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

Landscapes

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

Abstract

GPU 기반 트리 탐색 방법이 제공되며, 질의 데이터를 수신하는 단계, 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드(Internal Node)를 따라, 가장 왼쪽(Left-most)에 존재하는 오버랩된 MBB(Minimum Bounding Box)가 존재하는 노드를 탐색하는 단계, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드를 따라, 가장 오른쪽(Right-most)에 존재하는 오버랩된 MBB가 존재하는 노드를 따라 탐색하는 단계, 리프 노드의 상위 레벨인 제 1 레벨의 가장 왼쪽에 존재하는 오버랩된 MBB가 존재하는 노드와, 리프 노드의 상위 레벨인 제 1 레벨의 가장 오른쪽에 존재하는 MBB가 존재하는 노드 사이의 노드를 병렬적으로 탐색하는 단계, 탐색 결과인, 질의 데이터에 대한 응답 데이터를 출력하는 단계를 포함한다.

Description

GPU 기반 트리 탐색 방법{METHOD FOR SCANNING TREE BASED ON GPU}
본 발명은 GPU 기반 트리 탐색 방법에 관한 것이다.
최근, GPU(Graphic Processing Unit, 그래픽 처리 장치)는 수백개의 코어(Core)를 구비하여 질의(Query)를 처리하기 때문에, CPU에 비하여 고성능 가속기로 사용되고 있으며, 스트림 프로세서로 이용되는 것이 대부분이다.
GPU는 R-트리에서 질의를 병렬적으로 처리하는 방법으로 수행하고 있다. 이와 관련하여, 선행기술인 한국공개특허 제2011-0068578호(2011.06.22 공개)에는, 수행된 질의를 저장하고, 질의가 방문한 말단 노드의 엔트리를 GPU 메모리에 저장하고, 다음 질의 수행시 검색이 R-트리와 GPU에 의해 동시에 수행되도록 하는 방법을 개시한다.
다만, R-트리에서 질의를 병렬적으로 수행하기 위해서는, 오버랩된 노드를 찾아서 탐색하면서 다시 루트 노드로 복귀하는 단계를 반복하는 재귀 검색 알고리즘을 이용하게 되는데, 이러할 경우, 런타임 스택(Run-Time Stack)이 작은 GPU의 경우, 인덱스의 사이즈가 크고 질의 범위가 큰 경우에 사용하는 것은, 불가능에 가까울 수 있다.
본 발명의 일 실시예는, 트리의 왼쪽 노드를 따라 제 1 레벨까지 노드를 탐색하면서, 제 1 레벨에 오버랩된 노드를 검색하여 표시(Pointing)하고, 트리의 오른쪽 노드를 따라 제 1 레벨까지 노드를 탐색하면서, 제 1 레벨에 오버랩된 노드를 검색하여 표시하고, 표시된 두 노드 간의 노드를 병렬적으로 검색하면서 오버랩된 MBB(Minimum Bounding Box)가 존재하는 경우, 리프 노드(Leaf Node)로 점프하여 질의에 대한 응답 데이터를 검색하고, 오버랩되지 않은 MBB가 탐색되는 경우 다시 두 노드 간의 노드로 복귀하여 탐색을 계속함으로써, 검색이 요구되지 않는 노드의 탐색 과정을 제거할 수 있어, 인덱스의 사이즈가 크거나, 다차원의 질의이거나, 질의 범위가 큰 경우에도 빠른 응답 시간으로 질의에 대한 응답 데이터를 얻을 수 있는, GPU 기반 트리 탐색 방법을 제공할 수 있다. 다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 일 실시예는, 질의 데이터를 수신하는 단계, 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드(Internal Node)를 따라, 가장 왼쪽(Left-most)에 존재하는 오버랩된 MBB(Minimum Bounding Box)가 존재하는 노드를 탐색하는 단계, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드를 따라, 가장 오른쪽(Right-most)에 존재하는 오버랩된 MBB가 존재하는 노드를 따라 탐색하는 단계, 리프 노드의 상위 레벨인 제 1 레벨의 가장 왼쪽에 존재하는 오버랩된 MBB가 존재하는 노드와, 리프 노드의 상위 레벨인 제 1 레벨의 가장 오른쪽에 존재하는 MBB가 존재하는 노드 사이의 노드를 병렬적으로 탐색하는 단계, 탐색 결과인, 질의 데이터에 대한 응답 데이터를 출력하는 단계를 포함한다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 입력 데이터(Indexed Data)의 양이 늘어날지라도 질의 처리 시간을 줄일 수 있으며, 데이터의 차원(Dimension)이 증가날지라도, 차원에 따라 기하급수적으로 늘어났던 부피 및 처리 시간을 줄일 수 있으며, 단일 질의에 대한 노드 방문 횟수도 줄일 수 있으므로, GPU 상에서 질의를 빠른 시간 내에 좋은 성능으로 처리할 수 있다.
도 1은 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법을 설명하기 위한 트리를 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 서버를 설명하기 위한 구성도이다.
도 4 내지 도 6은 본 발명의 일 실시예에 따른 도 2의 GPU 기반 트리 탐색 서버에서 트리를 탐색한 실험결과를 비교한 그래프이다.
도 7은 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법을 설명하기 위한 동작 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미하며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법을 설명하기 위한 트리를 도시한 도면이고, 도 2는 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 서버를 설명하기 위한 구성도이다. 도 2를 참조하면, 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 서버(100)는, 수신부(110), 제 1 탐색부(120), 제 2 탐색부(130), 리프 탐색부(140), 출력부(150)를 포함할 수 있다. 다만, 도 2의 GPU 기반 트리 탐색 서버(100)는 본 발명의 일 실시예에 불과하므로 도 2를 통해 본 발명이 한정 해석되는 것은 아니다.
우선, 도 1을 통하여 트리의 각 구성요소를 정의하고, 도 2를 통하여 GPU 기반 트리 탐색 서버(100)를 설명하면서 도 1을 참조하여 GPU 기반 트리 탐색 서버(100)의 탐색 과정의 일 실시예를 함께 설명하기로 한다.
도 1을 참조하면, 트리는, 최상위 노드인 루트 노드(Root Node)와, 최하위 노드인 리프 노드(Leaf Node)와, 루트 노드와 리프 노드 사이에 존재하는 인터널 노드(Internal Node)를 포함할 수 있다. 각 노드는 복수개의 MBB(Minimum Boundary Box: 최소 경계 박스)를 포함할 수 있다. 그리고, 최하위 노드인 리프 노드는 제 0 레벨(Level-0)로 표시되고, 리프 노드의 부모 노드는 제 1 레벨(Level-1)로 표시되고, 제 1 레벨에 위치한 노드의 부모 노드는 제 2 레벨로 표시된다. 각각의 레벨에는 적어도 하나의 노드가 존재할 수 있고, 하나의 노드는 복수개의 MBB를 포함할 수 있다. 그리고, MBB는 데이터가 존재하는 오버랩 MBB와 데이터가 존재하지 않는 MBB를 포함할 수 있다. 또한, Left-most L로 표기된 화살표는 노드의 주소를 포함하는 포인터(Pointer)이고, 마찬가지로 Right-most R로 표시된 화살표는 노드의 주소를 포함하는 포인터로 정의한다. 그리고, 리프 노드에만 데이터가 저장되어 있고, 리프 노드를 제외한 그 부모 노드들(루트 노드-인터널 노드)은 그 데이터를 참조할 수 있는 참조 데이터를 포함한다고 가정한다. 여기서, 오버랩되지 않은 MBB는 질의 데이터에 대한 응답 데이터 또는 참조 데이터를 가지지 않은 MBB이고, 오버랩된 MBB는 질의 데이터에 대한 응답 데이터 또는 참조 데이터를 가진 MBB로 정의한다. 즉, 질의 데이터에 따라 오버랩 MBB 및 오버랩되지 않은 MBB는 달라질 수 있다.
도 2를 참조하면, GPU 기반 트리 탐색 서버(100)는 서버가 아니라 장치일 수 있다. 그리고, GPU를 포함하는 것이면 어느 것이든 가능할 수 있다. 즉, 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법은, GPU 상에서 수행되는 알고리즘이므로, GPU를 포함하는 어떠한 장치나 서버에 한정하지 않는다.
수신부(110)는, 질의 데이터를 수신할 수 있다. 예를 들어, 질의 데이터는 지도 좌표 중 서울 좌표를 묻는 데이터일 수 있다. 여기서, 질의 데이터는 차원을 가질 수 있다. 예를 들어, (x,y)의 좌표를 묻는 데이터이면 2 차원 데이터일 수 있고, (x,y,z)의 좌표를 묻는 데이터이면 3 차원 데이터일 수 있다.
제 1 탐색부(120)는, 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드(Internal Node)를 따라, 가장 왼쪽(Left-most)에 존재하는 오버랩된 MBB(Minimum Bounding Box)가 존재하는 노드를 탐색할 수 있다. 즉, 제 1 탐색부(120)는, 수신된 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 트리 내 최상위 노드인 루트 노드(Root Node)에 오버랩된 MBB(Overlapping Minimum Bound Box)가 존재하는지를 탐색할 수 있다. 여기서, 제 1 탐색부(120)는, 트리 내 최상위 노드인 루트 노드(Root Node)에 오버랩된 MBB를 발견하지 못한 경우, 그 아래 노드를 더 이상 탐색하지 않는다. 그 이유는, 루트 노드부터 오버랩된 MBB가 존재하지 않는다는 것은, 질의 데이터에 대한 응답 데이터를, 그 자식 노드, 즉 인터널 노드 및 리프 노드를 모두 탐색한다고 할지라도 탐색할 수 없기 때문이다. 따라서, 제 1 탐색부(120)는, 루트 노드에 오버랩된 MBB가 존재하는 경우, 루트 노드로부터 최하위 노드인 리프 노드(Leaf Node)의 부모 노드인 제 1 레벨까지 순차적으로, 오버랩된 가장 왼쪽(Left-most)에 위치한 자식 노드를 따라, 오버랩된 적어도 하나의 제 1 MBB가 존재하는 적어도 하나의 제 1 노드를 탐색할 수 있다. 덧붙여서, 제 1 탐색부(120)는, 적어도 하나의 제 1 노드 중 최하위 노드에 위치하는 오버랩된 제 1 MBB가 존재하는 노드의 주소를 제 1 포인터로 저장할 수 있다.
제 1 탐색부(120)의 탐색 과정을 도 1을 참조하여 설명하면, ① 우선 제 1 탐색부(120)는, 최상위 노드인 루트 노드의 오버랩된 MBB를 탐색한다. 그리고 나서, 제 1 탐색부(120)는, 자식 노드, 즉 인터널 노드를 차례로 따라가면서 가장 왼쪽에 위치한 오버랩된 MBB를 탐색한다. 즉, A가 오버랩된 MBB였으므로, ② 제 1 탐색부(120)는, 왼쪽에 위치한 자식 노드, 즉 C, D를 포함하는 노드를 탐색한다. 여기서, C, D도 오버랩된 MBB이므로, ③ 제 1 탐색부(120)는, 다시 그 자식 노드인 G, H가 있는 MBB로 이동한다. 이때, ④ G, H는 오버랩되지 않은 MBB이므로, 제 1 탐색부(120)는 다시 오른쪽으로 이동하면서 오버랩된 MBB를 찾는다. 즉, 제 1 탐색부(120)는, G, H의 자식 노드를 따라 리프 노드까지 탐색을 한다고 할지라도 데이터가 존재하지 않으므로, 다시 제 2 레벨에서 오버랩된 MBB 중 가장 왼쪽에 있는 MBB를 포함하는 노드를 찾는 것이다. 이에 따라, 제 1 탐색부(120)는, I를 포함하는 노드를 방문하지만, 역시 오버랩된 MBB가 없으므로, ⑤ 다시 오른쪽 노드로 이동한다. 여기서, K는 오버랩된 MBB이므로, 제 1 탐색부(120)는, K를 포함한 노드의 자식 노드에는 오버랩된 MBB가 있을 것을 알고 있고, 이에 따라, 제 1 레벨까지 탐색을 하지 않고 포인터(Left-most L)를 통하여 V의 주소를 기억하고 탐색을 종료한다. 여기서, 본 실시예에서만 K를 통하여 제 1 레벨에 존재하는 오버랩된 MBB의 존재를 알았으므로 제 1 레벨까지 탐색하지 않은 것이지, 모든 경우에서 제 1 레벨까지 탐색하지 않는 것은 아니다.
다시 도 2로 돌아와서, 제 2 탐색부(130)는, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드를 따라, 가장 오른쪽(Right-most)에 존재하는 오버랩된 MBB가 존재하는 노드를 따라 탐색할 수 있다. 즉, 제 2 탐색부(130)는, 루트 노드로부터 최하위 노드인 리프 노드의 부모 노드인 제 1 레벨까지 순차적으로, 오버랩된 가장 오른쪽(Left-most)에 위치한 자식 노드를 따라, 오버랩된 적어도 하나의 제 2 MBB가 존재하는 적어도 하나의 제 2 노드를 탐색할 수 있다. 덧붙여서, 제 2 탐색부(130)는, 적어도 하나의 제 2 노드 중 최하위 노드에 위치하는 오버랩된 제 2 MBB가 존재하는 노드의 주소를 제 2 포인터로 저장할 수 있다.
제 2 탐색부(130)의 탐색 과정을 도 1을 참조하면, ⑥ 제 2 탐색부(130)는, 최상위 노드인 루트 노드에서 오버랩 MBB가 있는지를 확인한다. 여기서, B라는 오버랩된 MBB가 있으므로, ⑦ 제 2 탐색부(130)는, 왼쪽 자식 노드인 E, F가 존재하는 노드로 이동한다. 여기서, 자식 노드에는 E, F만이 존재하고, 나머지 MBB는 오버랩되지 않은 채로 비어있으므로, 제 2 탐색부(130)는, E, F를 포함하는 노드의 왼쪽 노드로 방문해야 하지만, ⑧ 왼쪽 노드는 비어있다는 것이 자명하므로, 오른쪽 노드로 이동한다. 그리고 나서, 제 2 탐색부(130)는, 제 1 탐색부(120)와 마찬가지로, L이라는 오버랩된 MBB가 존재하므로, 제 1 레벨까지 탐색하지 않고, 제 1 레벨의 자식 노드, 즉 Y가 존재하는 노드의 주소만을, 포인터로 표시(Right-most R)한 것을 기억한 후, 탐색을 마친다. 여기서, 제 1 탐색부(120)의 과정과 마찬가지로, 제 2 탐색부(130)는, 본 실시예에서만 제 1 레벨에 존재하는 오버랩된 MBB의 존재를 알았으므로 제 1 레벨까지 탐색하지 않은 것이지, 모든 경우에서 제 1 레벨까지 탐색하지 않는 것은 아니다.
다시, 도 2로 돌아와서, 리프 탐색부(140)는, 리프 노드의 상위 레벨인 제 1 레벨의 가장 왼쪽에 존재하는 오버랩된 MBB가 존재하는 노드와, 리프 노드의 상위 레벨인 제 1 레벨의 가장 오른쪽에 존재하는 MBB가 존재하는 노드 사이의 노드를 병렬적으로 탐색할 수 있다. 즉, 리프 탐색부(140)는, 적어도 하나의 제 1 노드 중 제 1 레벨에 위치한 제 1 노드와, 적어도 하나의 제 2 노드 중 제 1 레벨에 위치한 제 2 노드 사이의, 적어도 하나의 노드를 병렬적으로 탐색할 수 있다.
여기서, 리프 탐색부(140)는, 제 1 노드와 제 2 노드 사이의 노드를 탐색하다가 오버랩된 MBB가 존재하는 경우, 리프 노드로 점프하여 탐색하고, 리프 노드에서 오버랩된 MBB가 존재하는 경우, 질의 데이터에 대한 응답 데이터로 반환하고, 리프 노드에서 오버랩되지 않은 MBB가 존재하는 경우, 제 1 노드와 제 2 노드로 복귀하여 병렬적으로 탐색함으로써, 적어도 하나의 노드를 병렬적으로 탐색할 수 있다. 즉, 리프 탐색부(140)는, 제 1 레벨의 적어도 하나의 노드를 탐색하면서, 오버랩된 적어도 하나의 제 3 MBB가 존재하는 경우, 적어도 하나의 제 3 MBB의 하위 노드인 리프 노드로 점프하고, 점프한 리프 노드를 병렬적으로 탐색하여, 질의 데이터에 대한 응답 데이터를 검색하고, 병렬적으로 탐색한 리프 노드 중 오버랩되지 않은 MBB(non-overlapping MBB)가 존재하는 경우, 오버랩되지 않은 MBB의 상위 노드인 제 1 레벨의 적어도 하나의 노드로 복귀할 수 있다. 여기서, 리프 탐색부(140)는, 복귀한 적어도 하나의 노드에서 병렬적으로 탐색하는 단계로 복귀하여 탐색을 지속할 수 있다. 여기서, 리프 노드 중 오버랩된 MBB는 데이터가 포함된 MBB이고, 리프 노드 중 오버랩되지 않은 MBB는 데이터가 포함되지 않은 MBB로 정의한다.
이를, 도 1을 참조하여 설명하면, 리프 탐색부(140)는, 포인터로 표시했던 V, W, X를 포함하는 노드의 주소와, Y, Z를 포함하는 노드의 주소를 기억하고 있으므로, V, W, X와 Y, Z 사이에 존재하는 제 0 레벨(리프 노드 레벨)의 노드를 병렬적으로 탐색할 수 있다. 즉, ⑨ 리프 탐색부(140)는, V를 방문하고, W를 방문하고, X를 방문하는데, X는 오버랩된 MBB이므로, 그 자식 노드, 즉 리프 노드로 점프하여 병렬적으로 노드를 탐색한다. 여기서, 리프 탐색부(140)는, 리프 노드에서 질의 데이터에 맞는 응답 데이터를 찾은 경우에는, 이를 출력하고, 다시 X로 돌아간다. 그리고, 리프 탐색부(140)는, ⑩ Y로 진행하는데, Y는 오버랩 MBB이므로, 다시 자식 노드인 리프 노드로 점프하여 검색을 실시한다. 그리고, 리프 탐색부(140)는, 리프 노드에서 오버랩된 MBB가 존재하면 이를 결과인 응답 데이터로 출력하고 다시 Y로 돌아간다. 또한, 리프 탐색부(140)는, Z로 이동하여 탐색을 시작한다.
다시 도 2로 돌아가서, 출력부(150)는, 탐색 결과인, 질의 데이터에 대한 응답 데이터를 출력할 수 있다. 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법을 구현한 알고리즘은 도 3과 같다. 다만, 이와 같은 실시예로 본원이 한정 해석되는 것은 아니며, 앞서 설명한 다양한 실시예들에 따라 도 3에 도시된 알고리즘이 변경될 수 있음은 기술분야에 속하는 당업자에게 자명하다. 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법은 i) 왼쪽 노드의 오버랩 노드를 찾고(제 1 단계(Phase), ii) 오른쪽 노드의 오버랩 노드를 찾고(제 2 단계), iii) 제 1 단계와 제 2 단계에서 탐색한 노드 사이의 노드를 제 1 레벨에서 찾으면서 리프 노드를 병렬적으로 탐색(제 3 단계)하므로, MPTS(Multi-Parallel Three-Phase Scanning)라 명명하기로 한다.
도 4 내지 도 6은 본 발명의 일 실시예에 따른 도 2의 GPU 기반 트리 탐색 서버에서 트리를 탐색한 실험결과를 비교한 그래프이다. 본 발명의 따른 GPU 기반 트리 탐색 방법의 성능을 평가하기 위하여, Centos 5.8과 CUDA 툴킷 4.1. 버전을 사용하였다. 여기서, Intel Xeon 8 Core E5506 2.13 GHz processor를 탑재하고 있으며 12GB DDR3의 메모리가 장착되어 있고, Tesla Fermi M2090 GPU 카드를 장착하고 있다. 여기서, Tesla Fermi M2090은 16개의 SMP를 갖고 있으며, 각 SMP는 32개의 GPU 코어가 장착된다.
도 4를 참조하면, (a)는 쓰레드 블록 수에 따른 질의 처리 시간을 비교한 도면이다. 즉, 본 발명의 일 실시예에 따른 방법(braided MPTS)과, 종래 기술에 따른 방법(braided MPES)를 비교하여 보면, 쓰레드 블록의 수가 적을 때는 물론이고, 쓰레드 블록의 수가 많은 경우에도 종래 기술에 따른 방법보다 처리 시간이 짧다는 것을 알 수 있다. 또한, (b)는 블록당 스레드(Thread) 수에 따른 질의 처리 시간을 비교한 도면이다. 여기서도, 블록의 스레드 수가 적은 경우는 물론이고 많은 경우에도 종래 기술에 따른 방법보다 처리 시간이 짧다는 것을 알 수 있다. 여기서, 종래 기술에 따른 방법이나 본 발명에 따른 방법 모두 동일한 GPU에서 수행되었다. 또한, 성능 측정을 위해 TBQET(Total Batch Query Execution Time)와 QET(Query Execution Time)라는 측정법을 사용하였다. 이는, 각 질의 처리량과 질의 응답 시간을 측정하기 위한 것이다.
한편, (c)는 인덱스된 데이터 수(입력 데이터)에 따른 질의 처리 시간을 도시하는데, 멀티코어인 CPU(R-Tree Multicore)를 이용한 자료가 하나 더 추가된다. 즉, 본 발명에 따른 MPTS와, 종래 기술에 따른 MPES, RTree는 인덱스 데이터 수가 적은 경우에도 물론이고, 많은 경우에도 본 발명에 따른 MPTS보다 처리 시간이 길다는 것을 알 수 있다. (d)는 인덱스 데이터의 수에 따른 방문 노드의 수를 도시하는데, 본 발명의 MPTS가 iii) 단계에서 불필요한 노드를 방문한다고 생각될 수도 있지만, 실제로는 R-트리 알고리즘보다 평균 15% 정도의 노드만을 더 방문한다는 것을 알 수 있으며, 특히 MPES에 비해서는 무척 적은 노드를 방문하는 것을 알 수 있다.
(e)는, 인덱스 데이터의 수에 따른 질의 처리 시간을 도시하는데, 브레이디드(각 SMP가 서로 다른 질의를 처리하는 구조) 또는 분산(Partitioned, 모든 SMP가 하나의 질의를 분산하여 처리하는 구조)에 따라 본 발명의 MPTS와 종래 기술에 따른 MPES를 비교한 그래프이다. 여기서, 브레이디드 방식을 이용한 본 발명의 MPTS는 브레이디드 방식을 이용한 종래 기술의 MPES보다 처리 시간이 더 많이 드는 것을 알 수 있다. 또한, 분산 방식을 이용한 본 발명의 MPTS는 분산 방식을 이용한 종래 기술의 MPES보다 인덱스의 수가 커질수록 처리 속도가 더 빨라진다는 것을 알 수 있다. (f)는 인덱스 데이터의 수에 따른 평균 질의 처리 시간을 도시하는데, 브레이디드 MPTS가 브레이디드 MPES보다 평균 질의 처리 시간이 적은 것을 알 수 있으며, 분산 MPTS가 브레이디드 MPES보다 인덱스 수가 커질수록 처리 속도가 더 빨라진다는 것을 알 수 있다.
도 5의 (a)는 차원수(ex. 1차원, 2차원..)에 따른 질의 처리 시간을 도시하는데, 본 발명의 MPTS는, 고차원의 데이터일수록 R-트리 알고리즘에 비하여 짧은 처리 시간으로 좋은 성능을 보여주고 있음을 알 수 있다. 또한, 본 발명의 MPTS는 불필요한 노드를 방문하지 않는 알고리즘이므로, 고차원의 데이터에 대해서도 브레이디드 MPES보다 월등한 성능을 보여준다. (b)는, 차원수에 따른 방문 노드를 도시하는데, 본 발명의 MPTS는 고차원으로 갈수록 MPES와 비슷한 결과를 보여주는 것을 알 수 있으며, R-트리 탐색 알고리즘에 비해서는 월등히 적은 노드를 방문한다는 것을 알 수 있다. (c)와 (d)는 차원수에 따른 평균 질의 처리 시간을 도시하는데, (c) 브레이디드 병렬 인덱스 보다, (d) 데이터 병렬 분산 인덱스에서 MPES나 R-트리 탐색 알고리즘에 비하여 좋은 성능을 가지는 것을 알 수 있다. 또한, (e)는 질의 응답 수의 비율에 따른 질의 처리 시간을 도시하고, (f)는 질의 응답 수 비율에 따른 방문 노드 수를 도시하는데, 질의 응답 수의 비율이 클수록 MPTS의 처리 시간은 가장 짧고, 방문 노드의 수는 가장 적은 것을 알 수 있다.
도 6의 (a)와 (b)는 질의 응답 수의 비율에 따른 평균 질의 처리 시간을 도시하는데, 브레이디드 병렬 인덱스나 데이터 병렬 분산 인덱스에서나 모두 MPES와 비슷한 성능인 처리 시간을 가지는 것을 알 수 있다. (c)는, 질의 응답 수의 비율에 따른 총 질의 처리 시간을 도시하고, (d)는 질의 응답 수의 비율에 따른 질의당 방문 노드 수를 도시하는데, 본 발명의 MPTS가 처리 시간도 짧고 방문 노드 수도 가장 적은 것을 알 수 있다.
이와 같은 도 4 내지 도 6의 GPU 기반 트리 탐색 방법 대해서 설명되지 아니한 사항은 앞서 도 1 내지 도 3을 통해 GPU 기반 트리 탐색 방법에 대하여 설명된 내용과 동일하거나 설명된 내용으로부터 용이하게 유추 가능하므로 이하 설명을 생략하도록 한다.
도 7은 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법을 설명하기 위한 동작 흐름도이다. 도 7을 참조하면, GPU 기반 트리 탐색 서버는, 질의 데이터를 수신한다(S7100).
그리고 나서, GPU 기반 트리 탐색 서버는, 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드(Internal Node)를 따라, 가장 왼쪽(Left-most)에 존재하는 오버랩된 MBB(Minimum Bounding Box)가 존재하는 노드를 탐색한다(S7200).
여기서, GPU 기반 트리 탐색 서버는, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드를 따라, 가장 오른쪽(Right-most)에 존재하는 오버랩된 MBB가 존재하는 노드를 따라 탐색한다(S7300).
또한, GPU 기반 트리 탐색 서버는, 리프 노드의 상위 레벨인 제 1 레벨의 가장 왼쪽에 존재하는 오버랩된 MBB가 존재하는 노드와, 리프 노드의 상위 레벨인 제 1 레벨의 가장 오른쪽에 존재하는 MBB가 존재하는 노드 사이의 노드를 병렬적으로 탐색한다(S7400).
마지막으로, GPU 기반 트리 탐색 서버는, 탐색 결과인, 질의 데이터에 대한 응답 데이터를 출력한다(S7500).
이와 같은 도 7의 GPU 기반 트리 탐색 방법 대해서 설명되지 아니한 사항은 앞서 도 1 내지 도 6을 통해 GPU 기반 트리 탐색 방법에 대하여 설명된 내용과 동일하거나 설명된 내용으로부터 용이하게 유추 가능하므로 이하 설명을 생략하도록 한다.
상술한 단계들(S7100~S7500)간의 순서는 예시일 뿐, 이에 한정되지 않는다. 즉, 상술한 단계들(S7100~S7500)간의 순서는 상호 변동될 수 있으며, 이중 일부 단계들은 동시에 실행되거나 삭제될 수도 있다.
도 7을 통해 설명된 일 실시예에 따른 GPU 기반 트리 탐색 방법은, 컴퓨터에 의해 실행되는 애플리케이션이나 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
전술한 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법은, 단말기에 기본적으로 설치된 애플리케이션(이는 단말기에 기본적으로 탑재된 플랫폼이나 운영체제 등에 포함된 프로그램을 포함할 수 있음)에 의해 실행될 수 있고, 사용자가 애플리케이션 스토어 서버, 애플리케이션 또는 해당 서비스와 관련된 웹 서버 등의 애플리케이션 제공 서버를 통해 마스터 단말기에 직접 설치한 애플리케이션(즉, 프로그램)에 의해 실행될 수도 있다. 이러한 의미에서, 전술한 본 발명의 일 실시예에 따른 GPU 기반 트리 탐색 방법은 단말기에 기본적으로 설치되거나 사용자에 의해 직접 설치된 애플리케이션(즉, 프로그램)으로 구현되고 단말기에 등의 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (7)

  1. GPU(Grpahics Processing Unit) 기반 트리 탐색 서버에서 실행되는 GPU 기반 트리 탐색 방법에 있어서,
    질의 데이터를 수신하는 단계;
    상기 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드(Internal Node)를 따라, 가장 왼쪽(Left-most)에 존재하는 오버랩된 MBB(Minimum Bounding Box)가 존재하는 노드를 탐색하는 단계;
    상기 리프 노드를 제외한 모든 레벨 중, 루트 노드로부터 리프 노드를 제외한 인터널 노드를 따라, 가장 오른쪽(Right-most)에 존재하는 오버랩된 MBB가 존재하는 노드를 따라 탐색하는 단계;
    상기 리프 노드의 상위 레벨인 제 1 레벨의 가장 왼쪽에 존재하는 오버랩된 MBB가 존재하는 노드와, 상기 리프 노드의 상위 레벨인 제 1 레벨의 가장 오른쪽에 존재하는 MBB가 존재하는 노드 사이의 노드를 병렬적으로 탐색하는 단계;
    상기 탐색에 대한 결과인, 상기 질의 데이터에 대한 응답 데이터를 출력하는 단계;
    를 포함하는, GPU 기반 트리 탐색 방법.
  2. 제 1 항에 있어서,
    상기 가장 왼쪽에 존재하는 오버랩된 MBB가 존재하는 노드와, 상기 가장 오른쪽에 존재하는 MBB가 존재하는 노드 사이의 노드를 병렬적으로 탐색하는 단계는,
    상기 사이의 노드를 탐색하다가 오버랩된 MBB가 존재하는 경우, 리프 노드로 점프하여 탐색하고,
    상기 리프 노드에서 오버랩된 MBB가 존재하는 경우, 상기 질의 데이터에 대한 응답 데이터로 반환하고,
    상기 리프 노드에서 오버랩되지 않은 MBB가 존재하는 경우, 상기 사이의 노드로 복귀하여 병렬적으로 탐색함으로써 수행되는 것인, GPU 기반 트리 탐색 방법.
  3. GPU 기반 트리 탐색 서버에서 실행되는 트리 탐색 방법에 있어서,
    질의 데이터를 수신하는 단계;
    상기 수신된 질의 데이터에 대한 응답 데이터를 검색하기 위하여, 트리 내 최상위 노드인 루트 노드(Root Node)에 오버랩된 MBB(Overlapping Minimum Bound Box)가 존재하는지를 탐색하는 단계;
    상기 루트 노드에 오버랩된 MBB가 존재하는 경우, 상기 루트 노드로부터 최하위 노드인 리프 노드(Leaf Node)의 부모 노드인 제 1 레벨까지 순차적으로, 오버랩된 가장 왼쪽(Left-most)에 위치한 자식 노드를 따라, 오버랩된 적어도 하나의 제 1 MBB가 존재하는 적어도 하나의 제 1 노드를 탐색하는 단계;
    상기 루트 노드로부터 최하위 노드인 리프 노드의 부모 노드인 제 1 레벨까지 순차적으로, 오버랩된 가장 오른쪽(Left-most)에 위치한 자식 노드를 따라, 오버랩된 적어도 하나의 제 2 MBB가 존재하는 적어도 하나의 제 2 노드를 탐색하는 단계;
    상기 적어도 하나의 제 1 노드 중 제 1 레벨에 위치한 제 1 노드와, 상기 적어도 하나의 제 2 노드 중 제 1 레벨에 위치한 제 2 노드 사이의, 적어도 하나의 노드를 병렬적으로 탐색하는 단계; 및
    상기 탐색에 대한 결과인 상기 질의 데이터에 대한 응답 데이터를 출력하는 단계
    를 포함하는, GPU 기반 트리 탐색 방법.
  4. 제 3 항에 있어서,
    상기 적어도 하나의 제 1 노드를 탐색하는 단계는,
    상기 적어도 하나의 제 1 노드 중 최하위 노드에 위치하는 오버랩된 제 1 MBB가 존재하는 노드의 주소를 제 1 포인터로 저장하는 단계
    를 포함하는 것인, GPU 기반 트리 탐색 방법.
  5. 제 3 항에 있어서,
    상기 적어도 하나의 제 2 노드를 탐색하는 단계는,
    상기 적어도 하나의 제 2 노드 중 최하위 노드에 위치하는 오버랩된 제 2 MBB가 존재하는 노드의 주소를 제 2 포인터로 저장하는 단계
    를 포함하는 것인, GPU 기반 트리 탐색 방법.
  6. 제 3 항에 있어서,
    상기 적어도 하나의 제 1 노드 중 제 1 레벨에 위치한 제 1 노드와, 상기 적어도 하나의 제 2 노드 중 제 1 레벨에 위치한 제 2 노드 사이의, 적어도 하나의 노드를 병렬적으로 탐색하는 단계는,
    상기 제 1 레벨의 적어도 하나의 노드를 탐색하면서, 오버랩된 적어도 하나의 제 3 MBB가 존재하는 경우, 상기 적어도 하나의 제 3 MBB의 하위 노드인 리프 노드로 점프하는 단계;
    상기 점프한 리프 노드를 병렬적으로 탐색하여, 상기 질의 데이터에 대한 응답 데이터를 검색하는 단계;
    상기 병렬적으로 탐색한 리프 노드 중 오버랩되지 않은 MBB(non-overlapping MBB)가 존재하는 경우, 상기 오버랩되지 않은 MBB의 상위 노드인 제 1 레벨의 적어도 하나의 노드로 복귀하는 단계;
    를 포함하고,
    상기 복귀한 적어도 하나의 노드에서 상기 병렬적으로 탐색하는 단계로 복귀하여 탐색을 지속하는 것인, GPU 기반 트리 탐색 방법.
  7. 제1항 내지 제6항 중 어느 한 항의 방법을 프로세서에서 실행시키기 위한 프로그램을 기록한 프로세서가 읽을 수 있는 기록매체.
KR1020140058358A 2013-05-15 2014-05-15 Gpu 기반 트리 탐색 방법 KR101586145B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20130054975 2013-05-15
KR1020130054975 2013-05-15

Publications (2)

Publication Number Publication Date
KR20140135124A KR20140135124A (ko) 2014-11-25
KR101586145B1 true KR101586145B1 (ko) 2016-02-02

Family

ID=52455923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140058358A KR101586145B1 (ko) 2013-05-15 2014-05-15 Gpu 기반 트리 탐색 방법

Country Status (1)

Country Link
KR (1) KR101586145B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101990902B1 (ko) * 2018-03-27 2019-06-19 계명대학교 산학협력단 빠른 테이블 업데이트를 지원하는 고속 패킷 분류 방법 및 시스템
US10497167B2 (en) 2016-12-15 2019-12-03 Samsung Electronics Co., Ltd. Method and apparatus for generating acceleration structure

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10497167B2 (en) 2016-12-15 2019-12-03 Samsung Electronics Co., Ltd. Method and apparatus for generating acceleration structure
KR101990902B1 (ko) * 2018-03-27 2019-06-19 계명대학교 산학협력단 빠른 테이블 업데이트를 지원하는 고속 패킷 분류 방법 및 시스템

Also Published As

Publication number Publication date
KR20140135124A (ko) 2014-11-25

Similar Documents

Publication Publication Date Title
JP6141490B2 (ja) ウェブページ情報を抽出する方法およびシステム
Punnoose et al. Rya: a scalable RDF triple store for the clouds
US10789231B2 (en) Spatial indexing for distributed storage using local indexes
US8055687B2 (en) System and method for determining intervals of a space filling curve in a query box
US10904316B2 (en) Data processing method and apparatus in service-oriented architecture system, and the service-oriented architecture system
Chen et al. The partial sequenced route query with traveling rules in road networks
CN104246765A (zh) 图像检索装置、图像检索方法、程序以及计算机可读取的存储介质
Punnoose et al. SPARQL in the cloud using Rya
CN104221015A (zh) 图像检索装置、图像检索方法、程序以及计算机可读取的存储介质
US20190171737A1 (en) Spatial-Temporal Query for Cognitive IoT Contexts
US20180181627A1 (en) Method and system for processing data in a parallel database environment
KR101586145B1 (ko) Gpu 기반 트리 탐색 방법
US8543600B2 (en) Redistribute native XML index key shipping
CN110618883B (zh) 一种用于共享内存链表的方法、装置、设备及存储介质
US9471612B2 (en) Data processing method, data query method in a database, and corresponding device
Nikitopoulos et al. Parallel and scalable processing of spatio-temporal RDF queries using Spark
CN109003012A (zh) 货位推荐链路信息获取方法、货位推荐方法、装置及系统
JP6624062B2 (ja) 情報処理装置、情報処理方法、及び、プログラム
KR101693108B1 (ko) 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치
CN111310076A (zh) 地理位置查询方法、装置、介质及电子设备
CN104461927A (zh) 一种电子装置及其配置信息存储与读取方法
CN113849498B (zh) 一种索引构建及查询方法
CN111695056B (zh) 页面处理、页面返回处理方法、装置和设备
JP6986577B2 (ja) 複数のドキュメント交差を取得するための方法及びドキュメントサーバー
US12072881B2 (en) Key range query optimization

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
FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 4