KR101998020B1 - 그래프 생성 방법 및 장치 - Google Patents

그래프 생성 방법 및 장치 Download PDF

Info

Publication number
KR101998020B1
KR101998020B1 KR1020180029111A KR20180029111A KR101998020B1 KR 101998020 B1 KR101998020 B1 KR 101998020B1 KR 1020180029111 A KR1020180029111 A KR 1020180029111A KR 20180029111 A KR20180029111 A KR 20180029111A KR 101998020 B1 KR101998020 B1 KR 101998020B1
Authority
KR
South Korea
Prior art keywords
graph
vertex
vertices
generating
trunk
Prior art date
Application number
KR1020180029111A
Other languages
English (en)
Other versions
KR20180120570A (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 재단법인대구경북과학기술원
Priority to US15/955,914 priority Critical patent/US10593080B2/en
Publication of KR20180120570A publication Critical patent/KR20180120570A/ko
Application granted granted Critical
Publication of KR101998020B1 publication Critical patent/KR101998020B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/904Browsing; Visualisation therefor
    • 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
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Image Generation (AREA)

Abstract

그래프 생성 방법 및 장치가 개시된다. 일실시예에 따른 그래프 생성 장치는 복수의 정점들 중 어느 하나의 소스 정점을 인식하고, 정점들 사이에서 생성하고자 하는 간선들의 전체 타겟 간선 수 중에서, 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 획득할 수 있다. 그래프 생성 장치는 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프 내에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터를 획득하고, 타겟 간선 수 및 재귀 벡터에 기초하여, 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성할 수 있다.

Description

그래프 생성 방법 및 장치{METHOD AND APPARATUS FOR GRAPH GENERATION}
아래 실시예들은 그래프를 생성하는 방법 및 장치에 관한 것이다.
그래프는 단순성과 보편성을 이유로 소셜 네트워크, 웹, 비즈니스 인텔리전스, 생물학 및 신경과학(neuroscience)과 같은 많은 영역에서 현실-세계 객체를 모델링하는데 널리 활용된다. 그래프-기반 분산 OLTP(On-line Transaction Processing) 쿼리(query) 처리, 사물 인터넷(IoT; Internet of Thing), 휴먼 커넥톰(human connectome)과 같은 많은 응용 프로그램은 기하급수적으로 커지는 그래프 크기를 직면하므로, 빠르고 확장 가능한(scalable) 그래프 처리 방법 및 합성 그래프 생성 방법은 이전보다 더욱 중요하게 되었다. 빠르고 확장 가능한 그래프 생성기(generator)에 대한 연구에는 두 가지 강력한 동기(motivation)가 있다: (1) 그래프 처리 방법의 성능을 평가하기 위한 대-규모(large-scale)의 현실적인(realistic) 그래프 부족; (2) 풍부한(rich) 그래프 모델을 위한 벤치마크 데이터베이스를 생성하는데 이용될 수 있는 저-레벨(low-level) 핵심(core) 기술 부족.
첫 번째 동기에 관해, 1조개의 간선(edge)들의 그래프를 처리 할 수 있는 다수의 그래프 처리 시스템은 이미 개발되었다. 독점적이거나 실제 수집이 불가능한 이유로 대-규모 현실-세계 그래프의 공유 및 활용은 제한적이므로, 그래프 처리 시스템은 성능 평가를 위해 합성(synthetic) 그래프를 이용하고 있다. 그러나, 지금까지 사용된 대부분의 조 단위-규모 합성 그래프는 거대한 수의 반복된 간선을 가지며, "현실적인" 그래프의 중요한 속성으로 고려되는 멱수 분포(power-law degree distribution)를 따르지 않는 비현실적인 합성 그래프이다. 따라서, 확장 가능하고 현실적인 합성 그래프 생성기는 그래프 처리 방법을 보다 정확하게 평가하는데 중요하다.
기존의 합성 그래프 생성기는 상용 머신(commodity machines)의 클러스터를 이용하여, 조 단위 간선의 그래프를 생성하지 못하거나 그래프 생성을 위해 슈퍼컴퓨터를 필요로 한다. 현실적인 합성 그래프를 생성하는 많은 모델 또는 방법이 제안되었는데, 이들 중에서 RMAT(Recursive MATrix)과 Kronecker가 가장 일반적으로 이용되고 있다. RMAT은 재귀적 행렬 모델(recursive matrix model)을 기반으로 한다. 재귀적 행렬 모델은 간선을 생성하기 위해 인접 행렬(adjacency matrix)의 사분면(quadrant)을 재귀적으로 선택하고, 그래프 G = (V, E)에 대해 총 |E| 간선이 생성될 때까지 동일한 과정을 반복한다. Kronecker에는 두 가지 그래프 생성 모델이 있다: Stochastic Kronecker Graph(SKG) 및 Deterministic Kronecker Graph(DKG). SKG는 확률 파라미터의 수와 관련하여 RMAT의 일반화된 모델이다.
RMAT과 Kronecker에 관해 기술된다.
" RMAT "
RMAT은 Recursive Matrix(RMAT) 그래프 생성기이고, 현실적인 합성 규모-프리(scale-free) 그래프를 생성하는데 일반적으로 사용된다. RMAT의 기본 개념은 간선 생성을 위한 인접 행렬 상의 재귀적 사분면 선택이며, RMAT은 전체 그래프가 생성될 때까지 이러한 간선 생성을 반복한다. 개념적으로, RMAT은 도 1(a)와 같이 인접 행렬을 확률 파라미터
Figure 112018025039103-pat00001
를 갖는 네 사분면으로 분할한다. 파라미터 값이 높을수록 해당 사분면이 선택될 확률이 높아지며, 4개의 파라미터의 합은 1.0이어야 한다. 그래프 G = (V, E)에 있어서, V는 정점을 나타내고 E는 간선을 나타내며, 인접 행렬의 크기는 |V| x |V|이고, 행(row)은 소스 정점(source vertex)을 의미하고, 열(column)은 목적지 정점(destination vertex)을 의미한다. 각각의 사분면은 서브-사분면의 크기가 1 x 1이 될 때까지 동일한 확률 파라미터
Figure 112018025039103-pat00002
의 4 개의 서브-사분면으로 재귀적으로 분할된다. 따라서, 간선을 생성하는데 필요한 재귀적인 선택 단계의 수는 log|V|이다. 도 1(b)를 참조하면, RMAT에서 재귀적인 사분면 선택의 단계가
Figure 112018025039103-pat00003
인 간선 생성의 예시가 도시되었다(|V| = 16). 재귀적 사분면 선택이 인접 행렬의 1 x 1 셀(cell)(예를 들어, (x, y) 셀)에 도달하면, RMAT는 결과 그래프에 간선 (x, y)를 추가(append)한다.
" Kronecker "
SKG는 Stochastic Kronecker Graph generator의 약자로서, RMAT의 일반화된 모델이다. RMAT은 단 2 x 2 확률 파라미터만을 고려하지만, SKG는 n x n 개의 확률 파라미터를 고려한다. RMAT은 SKG의 특별한 경우(n = 2)이다. RMAT와 SKG는 확률 행렬을 사용하는 측면에서 서로 비슷하지만, 확률론적 과정에서 서로 다르다. RMAT은 일련의 재귀적 단계를 통해 동적 방식(dynamic manner)으로 간선을 생성하지만, SKG는 정적 방식으로 처리한다. 구체적으로, SKG는 셀의 확률에 따라 해당 간선이 생성되는지 여부를 인접 행렬의 모든 셀에 대해 확인한다. 도 1(c)를 참조하면, SKG의 간선 생성의 예시가 도시되고, 여기서 검정색 셀은 생성을 위한 확률
Figure 112018025039103-pat00004
를 갖는다. 셀에 대해 임의로 생성된 값이 확률 내에 있으면, 해당 간선이 생성된다.
SKG의 |V| x |V|의 전체 확률 행렬은 크로네커 곱(Kronecker product)을 이용하여 표현될 수 있다. 크로네커 곱은 임의의 2 개의 임의-크기 행렬 사이의 외적(outer product)을 계산하는 연산자(operator)이다.
정의 1. Kronecker product: 두 개의 행렬 A와 B가 주어진다면, A는 크기가 n x m이고 , B는 크기가 p × q이다. A와 B사이의 Kronecker product 은
Figure 112018025039103-pat00005
로 정의되고, 구체적으로 수학식 1과 같이 표현된다.
Figure 112018025039103-pat00006
정의 1을 이용하면,
Figure 112018025039103-pat00007
의 확률 행렬은 수학식 2와 같이 표현될 수 있다.
Figure 112018025039103-pat00008
여기서, K는 주어진 시드(seed) 확률 n × n 행렬이다.
RMAT과 Kronecker(즉, SKG)는 모두 현실적인 합성 그래프를 생성하는 데 효과적일 수 있지만, 공간 및 시간 복잡도(space and time complexities) 측면에서 대-규모 그래프를 생성하는데 매우 비효율적이다. RMAT은 O(|E|)의 공간 복잡도를 갖고, Kronecker는 O(|V|2)의 시간 복잡도를 가지고 있다. RMAT은 공간 복잡도가 크고, Kronecker는 시간 복잡도가 크다. 따라서, RMAT는 높은 메모리 요구로 인해, 생성하는 그래프의 크기에 제약이 있을 수 있고, Kronecker는 높은 계산 오버헤드로 인한 제약이 있을 수 있다. Graph500로 지칭되는 벤치마크가 있다. Graph500는 조 단위-규모 그래프를 생성하고, 슈퍼 컴퓨터의 성능을 측정하기 위해 간단한 쿼리를 실행한다. 이 벤치마크는 그래프 생성을 위해 Kronecker의 SKG 모델을 이용한다. 다수 슈퍼 컴퓨터가 벤치마크를 통해 조 단위-규모의 그래프를 생성할 수 있다. 그러나, 이러한 벤치마크는 엄청난 양의 컴퓨팅 자원, 전형적으로 고속 네트워크(예, Infiniband)를 통해 연결된 수천 대의 서버 컴퓨터를 이용한다. 그래프 생성을 위해 이러한 장비를 이용하는 것은 대다수에게 실질적으로 불가능하다. 따라서, 소량의 컴퓨팅 자원만을 사용하여 효율적으로 조 단위-규모의 합성 그래프를 생성하는 것은 어려운 문제이다.
두 번째 동기에 관해, 관계형 모델의 TPC(Transaction Processing Performance) 벤치마크와 유사하고 의미론적으로(semantically) 풍부한 그래프 모델에 대한 벤치마크 데이터베이스를 자동적으로 생성하기 위한 많은 시도가 있다. 현실 세계에서 링크된(linked) 데이터가 확산됨에 따라, 그래프-구조화되어 링크된 데이터의 관리는 많은 영역에서 점점 더 중요해지고 있다. 링크된 데이터 관리 시스템을 위해 많은 성능 벤치마크가 제안되었다. 대표적인 방법 중 하나인 gMark는 다중 노드 유형과 간선 술어(edge predicates)와 같은 다양한 속성을 갖는 그래프를 생성할 수 있다. LDBC(Linked Data Benchmark Council) 소셜 네트워크 벤치마크(SNB) Datagen은 소셜 네트워크 벤치마크에서 또 다른 대표적인 방법이다.
이러한 방법들은 지금까지 그래프의 크기보다는 그래프의 풍부한 의미(rich semantics)에 초점을 두었다. 결과적으로, 결과 데이터베이스의 크기는 매우 작은 경향이 있다. 그러나, 이상적인 벤치마크에서는 풍부한 의미(rich semantics)와 확장성이 모두 중요하다. 따라서, 이러한 벤치마크를 생성하는데 이용할 수 있는 확장성 기술을 개발하는 것은 또 다른 도전의 문제이다.
일실시예에 따른 그래프 생성 방법은 공간 및 시간 복잡도 측면에서 효율성적으로 그래프를 생성하고자 한다.
일실시예에 따른 그래프 생성 방법은 소량의 메모리만을 이용하여 단시간에 대량의 그래프를 생성하고자 한다.
일실시예에 따른 그래프 생성 방법은 그래프 생성의 확장성을 높이고자 한다.
일실시예에 따른 그래프 생성 방법은 복수의 정점(vertex)들 중 어느 하나의 소스 정점(source vetex)을 인식하는 단계; 상기 정점들 사이에서 생성하고자 하는 간선(edge)들의 전체 타겟 간선 수 중에서, 상기 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 획득하는 단계; 상기 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프(scope) 내에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터(recursive vector)를 획득하는 단계; 및 상기 타겟 간선 수 및 상기 재귀 벡터에 기초하여, 상기 소스 정점 및 적어도 하나의 목적지 정점(destination vertex) 사이의 적어도 하나의 간선을 생성할 수 있다.
일실시예에 따르면, 상기 타겟 간선 수를 획득하는 단계는 미리 정의된 확률 파라미터들에 기초하여, 상기 소스 정점으로부터 연결되는 간선이 생길 확률을 생성하는 단계; 및 상기 확률 및 상기 전체 타겟 간선 수에 따르는 통계적 분포에 기초하여, 상기 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 확률은 총합이 1인 확률 파라미터들과 상기 소스 정점에 대응하는 이진 스트링의 1의 비트 수에 기초하여 생성될 수 있다.
일실시예에 따르면, 상기 확률을 생성하는 단계는
Figure 112018025039103-pat00009
를 이용하여 상기 소스 정점으로부터 연결되는 간선이 생길 확률을 계산하는 단계를 포함하고, 상기
Figure 112018025039103-pat00010
는 상기 확률이고, 상기 u는 상기 소스 정점에 대응하는 이진 스트링이고, 상기 ~는 비트 NOT 연산자(bitwise NOT operator)이고, Bits(x)는 논리적 비트 연산자(logical bit operator)로서 이진 스트링 x에서 1의 비트 수를 반환하며, 상기
Figure 112018025039103-pat00011
는 총합이 1인 확률 파라미터들이다.
일실시예에 따르면, 상기 타겟 간선 수를 생성하는 단계는 정규 분포 N( np , np(1-p))를 따르는 랜덤 변수를 생성하는 단계를 포함하고, 상기 n은 상기 전체 타겟 간선 수이고, 상기 p는 상기 확률이다.
일실시예에 따르면, 상기 재귀 벡터를 획득하는 단계는 미리 정의된 확률 파라미터들에 기초하여, 상기 소스 정점으로부터 연결되는 간선이 생길 확률을 생성하는 단계; 및 상기 확률, 상기 확률 파라미터들 및 상기 정점들의 정점 수에 기초하여, 인덱스들에 각각 대응하는 요소들의 값들을 갖는 재귀 벡터를 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 재귀 벡터를 생성하는 단계는
Figure 112018025039103-pat00012
를 이용하여, 미리 정의된 조건을 만족하는 인덱스들 별로 재귀 벡터의 요소들의 값들을 생성하는 단계를 포함하고, 상기
Figure 112018025039103-pat00013
는 인덱스이고, 상기
Figure 112018025039103-pat00014
는 상기
Figure 112018025039103-pat00015
에 대응하는 상기 재귀 벡터의 요소의 값이고, 상기
Figure 112018025039103-pat00016
는 총합이 1인 확률 파라미터들이고, 상기
Figure 112018025039103-pat00017
은 상기 정점 수이고, 상기 ≫는 논리적 오른쪽 시프트(logical right shift) 연산자이고, 상기
Figure 112018025039103-pat00018
는 논리적 비트 연산자(logical bit operator)로서 이진 스트링
Figure 112018025039103-pat00019
에서 1의 비트 수를 반환하며, 상기
Figure 112018025039103-pat00020
는 상기 확률이다.
일실시예에 따르면, 상기 미리 정의된 조건은
Figure 112018025039103-pat00021
이다.
일실시예에 따르면, 상기 재귀 벡터의 길이는
Figure 112018025039103-pat00022
이고, 상기
Figure 112018025039103-pat00023
은 상기 정점 수이다.
일실시예에 따르면, 상기 재귀 벡터는 CPU(Central Processing Unit) 캐시(cache)에 저장될 수 있다.
일실시예에 따르면, 상기 스코프는 상기 정점들의 정점 수에 기초하여 결정될 수 있다.
일실시예에 따르면, 상기 간선을 생성하는 단계는 상기 타겟 간선 수만큼 간선이 생성될 때까지, 상기 재귀 벡터에 대한 이진 탐색을 반복적으로 수행하여 적어도 하나의 목적지 정점을 결정하고, 상기 결정된 목적지 정점에 대응하는 적어도 하나의 간선을 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 간선을 생성하는 단계는 상기 재귀 벡터 및 상기 정점들의 정점 수에 기초하여 랜덤 변수(random value)를 생성하는 단계; 상기 재귀 벡터를 이용하여 상기 랜덤 변수에 대응하는 목적지 정점을 결정하는 단계; 및 상기 소스 정점 및 상기 목적지 정점 사이의 간선을 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 간선을 생성하는 단계는 기 생성된 적어도 하나의 간선의 수와 상기 타겟 간선 수를 비교하는 단계; 및 상기 비교 결과에 기초하여, 상기 소스 정점 및 제2 목적지 정점 사이의 제2 간선을 생성하는 단계를 더 포함할 수 있다.
일실시예에 따르면, 상기 랜덤 변수를 생성하는 단계는 상기 정점 수에 대응하는 상기 재귀 벡터의 요소(element)의 값에 기초하여, 랜덤 변수를 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 랜덤 변수는 0과 RecVec [log|V|] 사이의 값이고, 상기
Figure 112018025039103-pat00024
은 상기 정점 수이고, 상기 RecVec[log|V|]는 상기 log|V|에 대응하는 상기 재귀 벡터의 요소의 값일 수 있다.
일실시예에 따르면, 상기 목적지 정점을 결정하는 단계는 상기 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 적어도 하나의 인덱스를 결정하는 단계; 및 상기 결정된 적어도 하나의 인덱스에 기초하여 목적지 정점을 결정하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 목적지 정점을 결정하는 단계는 상기 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 제1 인덱스를 결정하는 단계; 상기 제1 인덱스 및 상기 재귀 벡터에 기초하여, 상기 제1 인덱스에 대응하는 대칭 비율을 생성하는 단계; 상기 랜덤 변수, 상기 재귀 벡터 및 상기 대칭 비율에 기초하여, 제2 랜덤 변수를 생성하는 단계; 상기 제2 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 제2 인덱스를 결정하는 단계; 및 제3 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 인덱스가 존재하지 않는 경우, 기 생성된 적어도 하나의 인덱스에 기초하여 목적지 정점을 결정하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 목적지 정점을 결정하는 단계는
Figure 112018025039103-pat00025
를 만족하는 인덱스
Figure 112018025039103-pat00026
를 결정하는 단계; 상기
Figure 112018025039103-pat00027
에 대응하는 대칭 비율
Figure 112018025039103-pat00028
를 생성하는 단계; 제2 랜덤 변수 x'
Figure 112018025039103-pat00029
을 생성하는 단계;
Figure 112018025039103-pat00030
인 인덱스
Figure 112018025039103-pat00031
를 결정하는 단계; 및 제3 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 인덱스가 존재하지 않는 경우, 목적지 정점을
Figure 112018025039103-pat00032
로 결정하는 단계를 포함하고, 상기
Figure 112018025039103-pat00033
는 상기 랜덤 변수이고, 상기
Figure 112018025039103-pat00034
는 상기
Figure 112018025039103-pat00035
에 대응하는 상기 재귀 벡터의 요소의 값일 수 있다.
일실시예에 따른 그래프 생성 방법은 복수의 정점들로부터 각각 생성하고자 하는 간선들의 타겟 간선 수들에 기초하여, 복수의 계산노드들이 처리해야 할 정점들을 상기 계산노드들로 할당하는 단계; 계산노드에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터에 기초하여, 상기 정점들 중 어느 하나의 소스 정점의 단위로 그래프를 생성하는 단계; 상기 계산노드가 처리해야 할 정점 범위가 존재하는 경우, 상기 계산노드에 의해 제2 소스 정점의 단위로 그래프를 생성하는 단계; 및 상기 계산노드가 처리해야 할 정점 범위가 존재하지 않는 경우, 상기 소스 정점의 단위로 생성된 그래프를 저장하는 단계를 포함한다.
일실시예에 따르면, 상기 계산노드들이 처리해야 할 정점들을 할당하는 단계는 미리 정의된 확률 파라미터들 및 상기 정점들 사이에서 생성하고자 하는 간선들의 전체 타겟 간선 수에 기초하여, 상기 정점들의 타겟 간선 수들을 생성하는 단계; 상기 전체 타겟 간선 수 및 상기 계산노드들의 수에 기초하여 상기 정점들을 상기 계산노드들 별로 분할하고, 상기 분할된 정점들을 결합하여 정점 범위들을 생성하는 단계; 상기 전체 타겟 간선 수 및 상기 계산노드들의 수에 기초하여, 상기 생성된 정점 범위들을 상기 계산노드들 별로 재분할하는 단계; 및 상기 계산노드들 별로 재분할된 정점 범위들에 기초하여, 상기 계산노드들이 처리해야 할 정점들을 상기 계산노드들로 할당하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 정점들에 대응하는 그래프들은 상기 할당된 정점들 별로 상기 계산노드들에 의해 병렬적으로 처리될 수 있다.
일실시예에 따르면, 상기 소스 정점의 단위로 그래프를 생성하는 단계는 상기 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프(scope) 내에서 상기 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성하는 단계를 포함할 수 있다.
일실시예에 따른 그래프 생성 방법은 상기 소스 정점의 단위로 생성된 그래프를 상기 계산노드의 버퍼에 임시로 저장하는 단계; 및 상기 버퍼에 저장된 데이터의 양에 기초하여, 상기 버퍼에 저장된 그래프를 상기 계산노드의 보조 기억 장치로 비동기적으로 저장하는 단계를 더 포함할 수 있다.
일실시예에 따른 장치는 하드웨어와 결합되어 상술한 방법들 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램에 의해 제어될 수 있다.
일실시예에 따른 그래프 생성 장치는 복수의 정점들로부터 각각 생성하고자 하는 간선들의 타겟 간선 수들에 기초하여, 복수의 계산노드들이 처리해야 할 정점들을 상기 계산노드들로 할당하는 콘트롤러; 및 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터에 기초하여, 상기 정점들 중 어느 하나의 소스 정점의 단위로 그래프를 생성하고, 처리해야 할 정점 범위가 존재하는 경우, 제2 소스 정점의 단위로 그래프를 생성하며, 처리해야 할 정점 범위가 존재하지 않는 경우, 상기 소스 정점의 단위로 생성된 그래프를 저장하는 계산노드를 포함한다.
일실시예에 따른 그래프 생성 방법은 공간 및 시간 복잡도 측면에서 효율성적으로 그래프를 생성할 수 있다.
일실시예에 따른 그래프 생성 방법은 소량의 메모리만을 이용하여 단시간에 대량의 그래프를 생성할 수 있다.
일실시예에 따른 그래프 생성 방법은 그래프 생성의 확장성을 높일 수 있다.
도 1(a), 도 1(b) 및 도 1(c)은 종래의 그래프 생성 방법을 설명하기 위한 도면이다.
도 2(a), 도 2(b) 및 도 2(c)는 그래프 생성과 관련된 스코프를 설명하기 위한 도면이다.
도 3(a) 및 도 3(b)은 그래프 생성과 관련된 행렬을 설명하기 위한 도면이다.
도 4(a) 및 도 4(b)는 일실시예에 따른 재귀 벡터 모델을 위한 함수를 설명하기 위한 도면이다.
도 5(a) 및 도 5(b)은 목적지 정점을 결정하는 실시예를 설명하기 위한 도면이다.
도 6은 일실시예에 따른 그래프 생성 방법을 설명하기 위한 도면이다.
도 7(a) 및 도 7(b)은 그래프 생성의 예시를 설명하기 위한 도면이다.
도 8은 일실시예에 따른 그래프 생성 장치를 설명하기 위한 도면이다.
도 9는 일실시예에 따른 그래프 생성 방법을 설명하기 위한 순서도이다.
도 10은 일실시예에 따른 그래프 생성을 위해 작업을 분배하는 동작을 설명하기 위한 도면이다.
도 11은 일실시예에 따른 하나의 정점 단위로 그래프를 생성하는 동작을 설명하기 위한 순서도이다.
도 12는 일실시예에 따른 간선 수를 생성하는 동작을 설명하기 위한 순서도이다.
도 13은 일실시예에 따른 재귀 벡터를 생성하는 동작을 설명하기 위한 순서도이다.
도 14는 일실시예에 따른 목적지 정점과 간선을 생성하는 동작을 설명하기 위한 순서도이다.
도 15는 일실시예에 따른 그래프 생성 방법을 설명하기 위한 순서도이다.
도 16은 일실시예에 따른 그래프 생성 방법을 설명하기 위한 순서도이다.
도 17은 일실시예에 따른 그래프 생성 장치의 구성의 예시도이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
많은 응용 프로그램이 그래프 크기의 기하급수적인 증가를 겪고 있는데, 그래프 처리 방법의 성능을 평가하기 위한 대-규모의 현실적인 그래프가 없으므로, 빠르고 확장 가능한 그래프 생성기는 그 어느 때보다 중요해지고 있다. 합성 그래프를 생성하기 위한 많은 방법이 제안되었지만, 이러한 방법은 공간 및 시간 복잡도 측면에서 효율성이 떨어지므로 보통 크기의 상용 머신 군을 이용하여 조 단위-규모의 그래프를 생성 할 수 없다.
이에, 효율적이고 확장성이 뛰어난 디스크-기반 그래프 생성 기법인 TrillionG가 제안된다. 일실시예에 따른 그래프 생성 장치는 TrillionG를 이용하여 그래프를 생성할 수 있다. 그래프 생성 장치는 그래프를 생성하는 장치로서, 예를 들어 소프트웨어 모듈, 하드웨어 모듈 또는 이들의 조합으로 구현될 수 있다.
TrillionG를 이용하는 그래프 생성 장치는 소량의 메모리만을 이용하여 단시간에 대량의 그래프를 생성할 수 있다. 일실시예에 따른 재귀 벡터 모델(recursive vector model)로 지칭되는 새로운 그래프 생성 모델이 제안된다. 일실시예에 따른 그래프 생성 장치는 재귀 벡터 모델을 이용하여 공간 및 시간 복잡도 문제를 개선할 수 있다. 재귀 벡터 모델은 의미적으로(semantically) 풍부한 그래프 데이터베이스를 생성하기 위해 확장된다. TrillionG를 이용하는 그래프 생성 장치는 재귀 벡터 모델의 3가지 핵심 아이디어로 속도-향상을 달성할 수 있다: (1) 미리 계산된 재귀 벡터를 재사용함; (2) 사분면 선택 수를 줄임; (3) 랜덤 변수 생성(random value generations)의 수를 줄임.
TrillionG는 간선 생성을 위한 확률론적 접근방식(stochastic approach)을 따를 수 있고, 결과 합성 그래프는 차수 분포(degree distribution)와 관련하여 현실적이다. ERV(Extended Recursive Vector) 모델이 제안되고, 일실시예에 따른 그래프 생성 장치는 ERV 모델을 이용하여 풍부한 그래프를 생성할 수 있다.
일실시예에 따른 그래프 생성 장치는 재귀 벡터를 이용하여 하나의 정점 단위로 그래프를 생성할 수 있다. 하나의 정점의 스코프에서 생성되는 간선만 메모리에 저장될 수 있으면 그래프 생성 장치는 전체 그래프를 생성 할 수 있어, 조 단위 규모의 합성 그래프를 생성할 수 있다. 그래프 생성 장치는 재귀 벡터를 이용하여 그래프를 합성하는 과정을 메모리보다 매우 빠른 CPU 캐시를 활용하므로, 하나의 정점 단위의 그래프 생성 동안에 CPU 캐시에 적재 가능한 매우 작은 재귀벡터를 재사용할 수 있기 때문에, 그래프 생성 속도를 높일 수 있다.
이하, 그래프 생성 모델이 스코프-기반(scope-based) 모델로 적용되고, 모델의 복잡도 분석에 관해 기술된다. 일실시예에 따른 재귀 벡터 모델, 재귀 벡터 모델을 기반으로 한 TrillionG 시스템, 및 풍부한 그래프 생성을 위한 재귀 벡터 모델의 확장에 관해 기술된다.
"스코프 기반 생성 모델(SCOPE-BASED GENERATION MODEL)"
합성 그래프 생성을 위한 모델이 제안되었다. RMAT은 공간 복잡도가 크지만 Kronecker는 시간 복잡도가 크다. 간선 생성의 스코프(scope)의 차이는 계산상의 오버헤드의 차이에 기인한다. 스코프는 간선의 존재 여부의 확인이 요구되는 범위이다. 간선 생성 시, RMAT은 전체 인접 행렬을 비-반복 간선을 생성하기 위한 스코프로 고려하므로, 여기서 그래프의 생성 수는 |E|이다. 이와 달리, Kronecker는 인접 행렬의 개별 셀만을 스코프로 고려하므로, 여기서 그래프의 생성 수는 |V| x |V|이다. |E|는 간선들의 수이고, |V|는 정점들의 수이다. 이하, 전자의 RMAT의 기법을 WES(Whole Edges Scope)로 지칭하고, 후자의 Kronecker의 기법을 AES(An Edge Scope)로 지칭한다.
일실시예에 따른 그래프 생성 장치는 재귀적 간선 모델(recursive vertex model)을 활용할 수 있다. 일실시예에 따른 재귀적 간선 모델은 인접 행렬의 행(또는 열)을 스코프로 고려한다. 일실시예에 따른 재귀적 간선 모델의 기법을 AVS(A Vertex Scope)로 지칭한다. 도 2(a), 2(b) 및 2(c)를 참조하면, WES, AES, 및 일실시예에 따른 AVS에 따른 생성 모델의 스코프들이 각각 도시된다.
스코프-기반 생성 모델로 지칭되는 AVS, WES 및 AES의 모델이 기술된다. 이러한 모델은 두 단계로 합성 그래프를 생성한다: 스코프 생성(scope generation)과 간성 생성(edge generation). 알고리즘 1은 스코프 생성 단계를 나타낸다.
Figure 112018025039103-pat00036
스코프의 주어진 크기 N x M에서, Lines 1-2는 스코프들에 대한 범위들의 집합(set of ranges)을 생성한다. |V|는 나머지 없이 두 개의 정수 N과 M으로 나뉘어질 수 있다. rangeSetI는 수직 축(vertical axis)에 따른 범위들의 집합이며, rangeSetJ는 수평 축(horizontal axis)에 따른 범위들의 집합이다. Line 3은 범위들(ranges)의 두 개의 집합들에 따라 스코프들(scopes)의 격자(grid)를 생성하고, Line 5는 각 스코프의 ScopeGeneration 함수를 병렬적으로 호출한다. RMAT에서 N=M=|V|이고, Kronecker에서는 N = M = 1이다.
알고리즘 2는 주어진 스코프 내에서 모든 간선들을 생성하는 ScopeGeneration 함수를 나타낸다.
Figure 112018025039103-pat00037
Figure 112018025039103-pat00038
의 간선들이 생성될 때까지 주어진 스코프에서 EdgeGeneration 함수가 호출된다. 여기서,
Figure 112018025039103-pat00039
는 확률적 방식(stochastic manner)으로 주어진 스코프 내에서 적정 수(proper number)의 간선들을 계산하는 특수 함수이다. RMAT에서, 단 하나의 스코프만이 있기 때문에,
Figure 112018025039103-pat00040
은 |E|를 반환한다(return). Kronecker에서는, 해당 스코프(셀)의 확률에 따라 0 또는 1이 반환된다. count(edgeSet) 함수는 단순히 edgeSet의 요소들(elements)의 수를 반환한다. 마지막으로, 알고리즘 2는 메인 메모리에 있는 간선들의 집합을 2차 저장소(secondary storage)에 저장한다(Line 5). 집합 합성(set union) 동안 간선들의 중복의 방지와 확인을 위해, 스코프의 edgeSet은 스코프 생성 동안 메인 메모리에 존재한다(reside)고 가정한다(Line 4).
알고리즘 2에 따르면, WES 접근법은 단일 스코프만 갖기 때문에, 병렬 처리에 제한이 있다. 스코프-기반 생성 모델은 각 스코프가 독립적으로 처리된다고 가정한다. ScopeGeneration 함수가 WES 접근법에서 더 나은 성능을 위해 같은 스코프에서 동시에 실행되는 경우, 같은 스코프의 다른 메모리 공간에서 같은 간선의 중복이 해결되어야 한다.
"모델의 복잡도(Complexities of Models)"
스코프-기반 생성 모델에 대한 공간 및 시간 복잡도가 기술된다. 시간 복잡도의 관점에서, 전체 그래프 생성의 비용(cost) T graph 는 수학식 3과 같이 계산될 수 있다.
Figure 112018025039103-pat00041
Tscope는 ScopeGeneration 함수의 비용이다. Tscope는 수학식 4와 같이 계산될 수 있다.
Figure 112018025039103-pat00042
T edge 는 EdgeGeneration 함수의 비용이다.
WES 접근법에서,
Figure 112018025039103-pat00043
는 |E|와 같고, T edge 는 재귀적 사분면 선택으로 인해 O(log |V|) 이다. 따라서, WES의 시간 복잡도는 O(|E| log|V|)이 된다. AES 접근법에서, 스코프들의 수는 |V|2이고,
Figure 112018025039103-pat00044
= 1이며, T edge 는 O(1)이다. 따라서, AES의 본래의 시간 복잡도는 O(|V|2)이 된다. AES는 쉽게 병렬화될 수 있기 때문에, P개의 코어들을 갖는 분산 시스템에서 시간 복잡성도는
Figure 112018025039103-pat00045
이 될 수 있다.
공간 복잡도의 관점에서, 간선의 복제를 체크하는데 머신에 요구되는 메모리의 양은 스코프의 크기, 즉
Figure 112018025039103-pat00046
과 동일하게 된다. WES 접근법은 O(|E|)의 공간을 요구하며, AES 접근법은 O(1)의 공간을 요구한다. 즉, 간선들의 전체 집합이 메인 메모리에 들어가지(fit) 않으면, WES는 그래프 생성을 실패할 수 있다.
일반적으로, 현실 그래프들과 규모-프리 합성 그래프들은 매우 드물다(sparse). 이러한 그래프들은 인접 행렬의 셀들의 수 |V|2와 비교하여 훨씬 적은 간선들의 수 |E|를 갖는다. 따라서, 원래의 AES 접근법은 대부분의 경우 WES 접근법보다 훨씬 느리다. 이러한 문제점을 극복하기 위해, SNAP(Stanford Network Analysis Project)에 임베디드된 FastKronecker가 제안되었다. 비록, 그 이름은 FastKronecker이지만, FastKronecker은 RMAT과 같은 방식으로 그래프를 생성한다. FastKronecker는 간선 생성을 위해 주어진 n x n 시드 행렬을 이용하여 재귀적 영역 선택(recursive region selection)을 수행한다. 재귀 횟수는
Figure 112018025039103-pat00047
이다. FastKronecker은 그래프 생성을 위한 일련의 선택을 |E|번 수행한다. 그래프 생성 동안, FastKronecker은 중복 제거를 위해 메모리 내 모든 간선들을 유지해야 한다. n = 2 일 때, FastKronecker는 WES 접근법의 RMAT과 같게 된다. 따라서, FastKronecker의 시간 및 공간 복잡도들은 각각
Figure 112018025039103-pat00048
및 O(|E|)이 된다.
"병합-기반 접근법(Merge-based Approach)"
WES/p 로 지칭되는 WES의 변형이 기술된다. WES/p ScopeGeneration 함수를 병렬로 실행한 다음에 병렬적으로 셔플된(shuffled) 간선들을 병합한다. WES/p는 WES의 간단한 병렬 버전이다. WES/p의 기본 개념은 WES의 동일한 스코프(scope) 생성을 병렬로 수행한 다음, 모든 생성된 간선들을 셔플하고 병합하여 중복된 간선을 제거하는 것이다. 알고리즘 3은 WES/p의 슈도 코드(pseudo code)를 나타낸다.
Figure 112018025039103-pat00049
Lines 2-6은 스코프의 크기를 제외하고, 알고리즘 2와 매우 유사하다. Lines 2-6은 동일한 스코프에서 실행되기 때문에, 중복 제거를 고려하면,
Figure 112018025039103-pat00050
대신에
Figure 112018025039103-pat00051
로 스코프의 크기가 설정될 필요가 있다(
Figure 112018025039103-pat00052
> 0). 정확한
Figure 112018025039103-pat00053
값을 미리 알기는 어렵고, 적절한
Figure 112018025039103-pat00054
값은 |E|가 커질수록 작아진다. Line 7은 네트워크를 통해 로컬 edgeSet을 셔플한다. Lines 8-9은 중복을 제거하면서 들어오는(incoming) edgeSet 을 병합하고, 간선들의 수가
Figure 112018025039103-pat00055
이 될 때 중단한다. WES/p 접근법은 본래의 WES 접근법과 비교하여 최대 P 배까지 시간 복잡도를 줄일 수 있다.
WES/p-mem은 WES/p의 인-메모리 버전이라 하고, WES/p-disk은 WES/p의 디스크-기반 버전이라 하자. 두 개의 버전 사이의 주요 차이점은 중복 제거 방식이다. WES/p-mem은 메모리를 이용하지만, WES/p-disk는 외부 정렬(external sort)을 이용한다. 따라서, WES/p-disk는 WES/p-mem보다 훨씬 큰 그래프를 생성할 수 있다. WES/p-mem의 경우, P배 더 큰 그래프를 생성하기 위해 P배 더 많은 머신을 필요로 한다. 따라서 WES/p-mem은 여전히 수십 배 더 큰 합성 그래프를 생성하는 좋은 해결책이 아니다.
또한, WES/p에는 두 가지 추가 오버헤드가 있다: (1) 셔플링 오버헤드 T shuffle 및 (2) 병합 오버헤드 T merge . T shuffle 은 머신들 사이의 간선들의 집합 전체의 전송 시간이 될 것이고, T merge 는 외부 정렬을 수반하는 적어도
Figure 112018025039103-pat00056
이 될 것이다. P가 커짐에 따라, edgeSet 의 크기는 일반적으로 더 왜곡되고(skewed), 전체 성능은 더 떨어지게 된다.
"AVS 접근법(AVS Approach)"
WES와 AES는 모두 스코프들이 지나치게 넓거나(coarse) 미세한 세분화(fine granularity)로 인한 복잡도 문제가 있다. 일실시예에 따른 AVS(A Vertex Scope) 접근법이 제안된다. AVS는 "중간의(medium)" 세분화의 스코프를 갖는다. 도 2(c)를 참조하면, 검은색 영역(black area)은 AVS 기반 바깥-간선(out-edge)(줄여서, AVS-O)를 나타내고, 회색 영역(gray area)은 AVS 기반 안쪽-간선(in-edge)(줄여서, AVS-I)를 나타낸다. AVS 접근법에서, 스코프(scope)은
Figure 112018025039103-pat00057
또는
Figure 112018025039103-pat00058
로 설정된다. 격자(grid)의 크기, 즉 스코프들의 수는 |V|이 된다. 스코프(scope)의 면적(area)은 WES의 스코프의 면적보다 훨씬 작고, 동시에 스코프들(scopes)의 수는 AES의 스코프들의 수보다 훨씬 작다.
AVS 접근법의 복잡도들이 분석된다. AVS-O의 스코프(scope)는
Figure 112018025039103-pat00059
로 표기되고, AVS-I의 스코프는
Figure 112018025039103-pat00060
로 표기된다. AVS-O의 스코프의 크기는
Figure 112018025039103-pat00061
로 표기되고, AVS-I의 스코프의 크기는
Figure 112018025039103-pat00062
로 표기된다. 여기서,
Figure 112018025039103-pat00063
는 정점(vertex) i의 out-degree이고,
Figure 112018025039103-pat00064
는 정점 i의 in-degree이다. AVS의 시간 복잡도들은 수학식 5 내지 7과 같이 표현된다.
Figure 112018025039103-pat00065
Figure 112018025039103-pat00066
Figure 112018025039103-pat00067
수학식 7에서, 일실시예에 따른 재귀 벡터 모델은 [0, |V| - 1]의 범위 내 간선을 재귀적으로 생성한다. T edge 는 RMAT 모델과 유사하게 log |V|가 된다. T edge 의 계산은 후술하겠다. AVS-I의 분석은 AVS-O의 분석과 유사하므로, AVS-O의 경우가 기술된다. AVS의 공간 복잡도는 수학식 8과 같다.
Figure 112018025039103-pat00068
d max 는 정점의 최대 out/in-degree이다.
표 1은 스코프-기반 생성 모델에서 네 가지 접근법의 시간 및 공간 복잡성을 요약하여 보여준다. 표 1에서, AES는 원래의 Kronecker 방법을 의미한다. 표 1은 d max 는 |E|보다 훨씬 작고, T shuffle 및 T merge 이 없으므로, 대-규모 그래프 생성을 위한 최적의 접근법은 AVS 접근법임을 나타낸다.
Figure 112018025039103-pat00069
"재귀 벡터 모델(RECURSIVE VECTOR MODEL)"
AVS 접근법에 따른 재귀 벡터 모델의 실시예가 설명된다. 재귀 벡터 모델은 재귀 벡터 모델을 활용하지 않은 기법들과 비교하여 메모리 사용을 크게 줄이는 동시에 간선들의 생성 속도를 실질적으로 향상시킨다. 기본 아이디어는 (1) 매우 작고 미리 계산된 벡터(RecVec로 지칭됨)를 구성하는 것, 및 (2) CPU(Central Processing Unit) 캐시(cache)에서 RecVec를 반복적으로 검색(searching)하여 간선들을 매우 효율적으로 생성하는 것이다.
일실시예에 따른 그래프 생성 장치는 재귀 벡터 모델을 이용하여 out-degree 및 in-degree 분포들을 효율적이고 독립적으로 결정할 수 있다. out-degree 분포들(즉, AVS 접근법의 범위들의 크기들)의 결정하는 실시예와 in-degree 분포들(즉, 각 범위에서 RecVec를 이용하여 간선들을 생성)의 결정하는 실시예가 후술된다.
전자는 정리 1(Theorem 1)에 요약되어 있으며, 후자는 정리 2(Theorem 2)에 요약되어있다. 특히, 정리 2는 두 개의 보조 정리(Lemmas)에 의해 뒷받침된다: RecVec에 존재하는 규모 대칭(scale symmetry)의 속성에 대한 보조 정리 3(Lemma 3); RecVec에 존재하는 변환 대칭(translational symmetry)의 속성에 대한 보조 정리 4(Lemma 4). 범위들의 크기들과 범위 내 간선들은 확률적 과정(stochastic process)을 통해 결정된다. 그렇지 않으면, 생성기는 그래프 속성 관점에서 비현실적인 그래프를 생성할 수 있다.
"스코프 크기의 결정(Determination of Scope Size)"
시드(seed) 행렬에 의해 생성된 전체 크로네커 행렬은
Figure 112018025039103-pat00070
로 표기된다.
Figure 112018025039103-pat00071
의 각 요소
Figure 112018025039103-pat00072
는 대상 합성 그래프에 대해 u에서 v까지의 간선을 생성할 확률을 의미한다. 도 3(b)는 도 3(a)의 초기 시드 행렬 K에 의한 Kronecker 행렬의
Figure 112018025039103-pat00073
를 나타낸다. 2 x 2 시드 행렬
Figure 112018025039103-pat00074
을 이용하는 SKG의 경우가 기술되고, 이 경우는 RMAT의 경우와 같다. 그렇다면,
Figure 112018025039103-pat00075
=
Figure 112018025039103-pat00076
이 될 수 있다.
Figure 112018025039103-pat00077
Figure 112018025039103-pat00078
사이의 일련의 곱으로 계산된다. 이러한 일련의 곱은
Figure 112018025039103-pat00079
로 표기된다. 시드 행렬 K가 주어지면,
Figure 112018025039103-pat00080
Figure 112018025039103-pat00081
에서
Figure 112018025039103-pat00082
의 곱으로 각각 정의되고, 여기서
Figure 112018025039103-pat00083
이다. 그러면,
Figure 112018025039103-pat00084
Figure 112018025039103-pat00085
과 같다.
비트 연산(bitwise operations)을 이용하기 위해, 정점 ID(vertex ID)는 이진 스트링(binary string)으로 간주된다. 소스 정점 u의 최상위 비트(Most Significant Bit; MSB)가 0이면, 이는 u
Figure 112018025039103-pat00086
또는
Figure 112018025039103-pat00087
사분면에 있음을 의미한다. 마찬가지로, 목적지 정점 v의 MSB가 0이면, 이는 v
Figure 112018025039103-pat00088
또는
Figure 112018025039103-pat00089
사분면에 있음을 의미한다. 논리적 비트 연산자(logical bit operator) Bits(x)가 정의되고, Bits(x)는 이진 스트링 x에서 1의 비트 수를 반환한다. 명제 1(Proposition 1)은 다음과 같으며, &는 비트 AND 연산자(bitwise AND operator)를 나타내고, ~는 비트 NOT 연산자(bitwise NOT operator)를 나타낸다.
명제 1(Proposition 1). u로부터 v로의 간선의 확률.
정점 ID들 uv를 이진 스트링들로 나타낼 때, u로부터 v로의 간선을 생성할 확률은 비트 연산자
Figure 112018025039103-pat00090
를 이용하여 수학식 9와 같이 계산될 수 있다.
Figure 112018025039103-pat00091
명제 1은 간선의 두 정점들(비트 스트링들에서)이 각 사분면에 대한 사분면 선택들의 수를 결정할 수 있음을 의미한다. 정점 ID들에 고정크기 유형(fixed-size type)이 사용될 때, 고정 시간(constant time) 내 u로부터 v로의 간선을 생성할 확률은 명제 1에 의해 계산될 수 있다. 특정 소스 정점(certain source vertex) u에 대한 목적지 정점 v를 배제하여(neglecting) 보조정리 1(Lemma 1)이 설명된다.
보조 정리 1(Lemma 1). u로부터의 간선의 확률
u로부터 간선을 생성할 확률은 수학식 10과 같이 계산될 수 있다.
Figure 112018025039103-pat00092
증명: 수학식 11이 성립한다. 따라서, 수학식 10이 성립한다.
Figure 112018025039103-pat00093
스코프(scope)
Figure 112018025039103-pat00094
의 크기가 정의된다.
Figure 112018025039103-pat00095
의 크기는 스코프 내 생성되는 모든 간선들의 합이다. 간선의 존재에는 베르누이 분포(Bernoulli distribution)가 있고, 스코프 내 간선들에 대한 복수의 시행들(multiple trials)에는 이항 분포(binomial distribution)가 있다. 중심 극한 정리(Central Limit Theorem)에 의해, 많은 수의 시행들을 갖는 이항 분포는 정규 분포(normal distribution)에 의해 근사될 수 있는데, 여기서 스코프
Figure 112018025039103-pat00096
의 크기, 즉 정점 i의 degree는 정리 1에서 요약될 수 있다. 일실시예에서 알고리즘 2의
Figure 112018025039103-pat00097
는 결정론적(deterministic)이지 않지만, 정리 1에 따라 확률적(stochastic)이다.
정리 1(Theorem 1). 스코프
Figure 112018025039103-pat00098
의 크기
n = |E| 및
Figure 112018025039103-pat00099
로 표기된다. 그런 다음, 스코프
Figure 112018025039103-pat00100
의 크기는 대략적으로
Figure 112018025039103-pat00101
Figure 112018025039103-pat00102
의 정규 분포를 갖는다.
정리 1의 증명: 스코프의 크기는 스코프 S(i, V) 내의 간선 생성의 성공 횟수이다. 이항 실험(binomial experiment)은 성공 또는 실패를 구별하기 위한 일련의 n 시행들(trials)로 구성되고, 시행들은 독립적(independent)이고 동일(identical)하기 때문에, 각 시행 마다 성공 확률은 p이다. np는 시행 횟수와 각 시행의 성공 확률을 나타낸다. 여기서, n = |E| 및
Figure 112018025039103-pat00103
이다. 스코프의 크기는 이항 분포 B(n, p)를 따르며, 매우 큰 n과 매우 작은 p에 대해 정규 분포 N( np , np (1-p))로 근사화될 수 있다.
"간선의 결정(Determination of Edge)"
소스 정점 u에 있어서, 정리 1에 따라
Figure 112018025039103-pat00104
개의 간선들이 생성된다. 각 간선의 목적지 정점을 결정할 수 있는 단순한 방법(naive method)은 소스 정점 u의 누적 밀도 함수(Cumulative Density Function; CDF)
Figure 112018025039103-pat00105
의 역함수
Figure 112018025039103-pat00106
를 이용한다. 도 4(a)는 파라미터들
Figure 112018025039103-pat00107
Figure 112018025039103-pat00108
로 생성된 작은 합성 그래프에 대한 소스 정점 u의 확률 질량 함수(Probability Mass Function; PMF)의 플롯을 나타낸다. 도 4(b)는 대응 CDF 함수
Figure 112018025039103-pat00109
을 나타낸다. 여기서, 2R = |V|, 및
Figure 112018025039103-pat00110
을 가정하자. 그런 다음, 단순한 방법은 균일 랜덤 변수(uniform random variable)
Figure 112018025039103-pat00111
를 이용하여 실수 값 x를 생성하고,
Figure 112018025039103-pat00112
을 계산하여 u의 목적지 정점을 찾는다. 예를 들어, 도 4(b)에서, 실수 값 c
Figure 112018025039103-pat00113
로부터 생성되었다고 가정한다면,
Figure 112018025039103-pat00114
이므로 목적지 정점은 r이 된다. 목적지 정점
Figure 112018025039103-pat00115
이 선택 될 확률은 도 4 (a)의 분포를 따른다.
단순한 방법은 u에 대한 모든 CDF 값들을 벡터(CDF 벡터)에 저장하고, CDF 벡터에서 선형 검색 또는 이진 검색을 수행하여 주어진 랜덤 변수 x에 대한 목적지 정점
Figure 112018025039103-pat00116
를 찾는다. 표 2의 첫 번째 행은 CDF 벡터를 이용하는 단순한 방법의 시간 및 공간 복잡도를 나타낸다.
Figure 112018025039103-pat00117
이진 검색을 이용하는 시간 복잡도, 즉 단일 간선을 결정하기 위한 O(log |V|)은 RMAT의 시간 복잡도와 동일하다. 단순한 방법의 문제는 공간의 복잡도이다. 236개의 정점들 조-단위 그래프에 대해, CDF 값들을 나타내는데 4 바이트 단일 정밀도 유형을 사용하는 경우, 필요한 메모리 양은 약 274GB이다. 단순한 방법을 이용하여 조-단위 그래프를 생성하는 것은 확실히 불가능하다.
일실시예에 따른 그래프 생성 장치는 RecVec로 지칭되는 재귀 벡터를 이용하여 목적지 정점을 결정할 수 있다. 재귀 벡터 모델의 이론적인(theoretical) 시간 및 공간 복잡도는 각각
Figure 112018025039103-pat00118
Figure 112018025039103-pat00119
이다. 여기서, 시간 복잡도의
Figure 112018025039103-pat00120
식(term)은 후술하겠지만 길이 log |V|의 벡터에 대한 이진 탐색에 의한 것이다. 그러나, 식
Figure 112018025039103-pat00121
은 다음의 두 가지 이유로 실제 배제(disregard)될 수 있다. 첫째,
Figure 112018025039103-pat00122
는 작고 거의 일정한 값(constant value)이다. 예를 들어, 조 단위-규모 그래프에 있어서,
Figure 112018025039103-pat00123
는 단지 약 5.16이며, 1000조 단위-규모 그래프(quadrillion-scale graph)에서도 약 5.52에 불과하다. 둘째, RecVec은 CPU 캐시에 있으므로 RecVec에서의 이진 검색 비용은 실질적으로 무시할 수 있다. 결과적으로, 실제 시간 복잡도는 표 2의 두 번째 행과 같다. 일실시예에 따른 그래프 생성 장치는 RecVec를 이용하여 필요 메모리 양을 상당히 줄여 주므로, PC 클러스터를 이용하여 조 단위-규모 그래프를 생성 할 수 있다. 예를 들어, 조 단위-규모의 RecVec를 위한 메모리 양은 약 36 x 8 = 288 바이트에 불과하다. 간선들을 생성하기 위한 데이터 구조의 크기는 매우 작지만, 스코프(scope) 내에서 이미 생성된 간선들의 집합은 반복 간선들을 확인하기 위해 유지되어야 한다. 공간은
Figure 112018025039103-pat00124
이므로, 전체 공간 복잡도는 표 1과 같이 된다.
일실시예에 따른 그래프 생성 장치는 재귀 벡터 모델을 이용하여 길이 log|V|+1의 RecVec를 구축하고, 각각
Figure 112018025039103-pat00125
시간이 걸리는
Figure 112018025039103-pat00126
의 간선들을 생성한다. 직관적으로, RecVec은 CDF 벡터에서 2의 거듭 제곱의 위치의 값들, 즉 0, 1, 3, 7,. . . , 2log | V | - 1을 저장하므로, RecVec의 길이는 log|V| + 1이 된다. 소스 정점 u에 대한 RecVec는 정의 2(Definition 2)에서 정의된다. 간명함을 위해, CDF 함수
Figure 112018025039103-pat00127
는 0에서 |V| - 1 사이 대신에 1에서 |V| 사이의 도메인을 가진다고 가정하겠다. 예를 들어,
Figure 112018025039103-pat00128
Figure 112018025039103-pat00129
사이의 확률들의 합계(summation)이다.
정의 2(Definition 2). 정점 u의 재귀 벡터 RecVec
소스 정점 u에 대한 재귀 벡터 RecVec[0 : log|V|]에 있어서, RecVec[x](
Figure 112018025039103-pat00130
)의 각 요소는 수학식 12와 같이 정의된다.
Figure 112018025039103-pat00131
Figure 112018025039103-pat00132
의 합계를 이용하여 RecVec를 구축하는 것은 O(|V|) 시간이 걸린다. 일실시예에 따른 그래프 생성 장치는 보조 정리 2(Lemma 2)를 이용하여 O(log |V|) 시간 내 RecVec를 구축할 수 있다. 보조 정리 2는 시드 확률 파라미터들에 기반한 확률 과정(stochastic process)의 특성들(characteristics)을 활용할 수 있다.
보조 정리 2(Lemma 2). 2의 거듭 제곱의 위치에서의 CDF 값.
Figure 112018025039103-pat00133
인 것으로 가정하자. ≫는 논리적 오른쪽 시프트(logical right shift) 연산자이다. 그러면, RecVec의 요소의 값은 수학식 13과 같이 정의된다.
Figure 112018025039103-pat00134
증명: 수학식 14가 성립한다. 따라서, 수학식 13이 성립한다.
Figure 112018025039103-pat00135
도 5(a)을 참조하여, 보조 정리 2의 예시가 설명된다. 소스 정점 u = 2에 있어서, 대응 RecVec는 [0.05, 0.07, 0.105, 0.147]이다. 정의 2에 의해, x = 2에 있어서,
Figure 112018025039103-pat00136
이다. 같은 요소를 계산할 때 보조 정리 2가 사용되면,
Figure 112018025039103-pat00137
이다. 여기서,
Figure 112018025039103-pat00138
는 값 2에 대한 이진 스트링이고,
Figure 112018025039103-pat00139
이다.
Figure 112018025039103-pat00140
시간에 RecVec을 기반으로 그래프 생성 장치가 목적지 정점을 결정하는 실시예가 설명된다. RecVec 상의 재귀적 선택을 위한 두 가지 속성이 설명된다: 규모 대칭(scale symmetry)과 변환 대칭(translational symmetry). 규모 대칭의 속성을 나타내는 보조 정리 3(Lemma 3)은 직관적으로 정점 r을 결정할 확률과 정점
Figure 112018025039103-pat00141
을 결정할 확률 사이에 일정 비율
Figure 112018025039103-pat00142
가 있음을 의미한다. 여기서, r′ = r + R, 및 0 ≤ r < R을 가정하자.
보조 정리 3(Lemma 3). 규모 대칭의 속성
각각의
Figure 112018025039103-pat00143
에 대해, 소스 정점 u에 대한 PMF 분포에서
Figure 112018025039103-pat00144
에 대해 일정 비율
Figure 112018025039103-pat00145
가 유지된다. u[k]는 가장 오른쪽의 LSB(Least Significant Bit)부터 시작하여 이진 스트링에서 정점 u의 k-번째 비트를 나타낸다.
Figure 112018025039103-pat00146
는 수학식 15과 같다.
Figure 112018025039103-pat00147
증명: 여기서,
Figure 112018025039103-pat00148
이고,
Figure 112018025039103-pat00149
인 경우, 정점 r을 결정할 확률과 정점
Figure 112018025039103-pat00150
을 결정할 확률 사이의 비율
Figure 112018025039103-pat00151
은 수학식 16과 같다.
Figure 112018025039103-pat00152
r
Figure 112018025039103-pat00153
사이의 차이는 단지 k-번째 비트 값, 즉 r[k]에 대해서는 0이고 r'[k]에 대해서는 1이다.
Figure 112018025039103-pat00154
에서, 수학식 17이 성립한다. 따라서, 수학식 15가 성립한다.
Figure 112018025039103-pat00155
보조 정리 3에서,
Figure 112018025039103-pat00156
u[k]의 비트 값에 따라 오른쪽 위 사분면(upper right quadrant) 또는 오른쪽 아래 사분면(lower right quadrant)의 확률 파라미터를 의미한다. 도 3을 이용하는 보조 정리 3의 실시예가 설명된다. 소스 정점 u = 2에 있어서, 그래프 생성 장치는 양의 정수
Figure 112018025039103-pat00157
, 즉
Figure 112018025039103-pat00158
에 대해 일정 비율
Figure 112018025039103-pat00159
를 먼저 확인한다.
Figure 112018025039103-pat00160
의 MSB, 2[2] =
Figure 112018025039103-pat00161
[2] = 0 이므로, 도 3(a)의 시드 행렬에 따라
Figure 112018025039103-pat00162
이다. 이 비율은 r
Figure 112018025039103-pat00163
에서 변화하는 동안 유지된다. 예를 들어, r = 1 인 경우,
Figure 112018025039103-pat00164
이다. k가 변경되면 이 비율은 변경될 수 있다. 예를 들어, k = 1이고 R = 2 일 때,
Figure 112018025039103-pat00165
이므로,
Figure 112018025039103-pat00166
이다. 실제,
Figure 112018025039103-pat00167
의 시드 확률 행렬에 있어서, 각 소스 정점 u 에 대한 상이한 비율들은 단지
Figure 112018025039103-pat00168
Figure 112018025039103-pat00169
2개 까지만 존재한다.
보조 정리 4는 변환 대칭(translational symmetry)의 속성을 나타낸다. 일실시예에 따르면, 그래프 생성 장치는 보조 정리 4에 따라
Figure 112018025039103-pat00170
인 경우 상술한 일정 비율을 이용하여
Figure 112018025039103-pat00171
Figure 112018025039103-pat00172
로 변환할 수 있다. 그래프 생성 장치는 c
Figure 112018025039103-pat00173
보다 작아 질 때까지 더 작은 c로
Figure 112018025039103-pat00174
를 재귀적으로 변환 할 수 있다. c
Figure 112018025039103-pat00175
보다 작다는 것은
Figure 112018025039103-pat00176
을 인덱스 k 가 없다는 것을 의미한다.
보조 정리 4(Lemma 4). 변환 대칭의 속성
각각의
Figure 112018025039103-pat00177
에 있어서, 소스 정점 u에 대한 CDF 분포의
Figure 112018025039103-pat00178
에 대해 수학식 18이 만족한다.
Figure 112018025039103-pat00179
증명: 수학식 19가 성립한다. 따라서, 수학식 18이 성립한다.
Figure 112018025039103-pat00180
도 4 및 5를 참조하여, 보조 정리 4에 따른 실시예가 설명된다. 도 4(b)를 참조하면,
Figure 112018025039103-pat00181
Figure 112018025039103-pat00182
인 경우,
Figure 112018025039103-pat00183
이다. 그래프 생성 장치는
Figure 112018025039103-pat00184
Figure 112018025039103-pat00185
를 이용하여
Figure 112018025039103-pat00186
Figure 112018025039103-pat00187
로 변환할 수 있다. 도 5(b)를 참조하면,
Figure 112018025039103-pat00188
인 경우
Figure 112018025039103-pat00189
이다. 구체적으로,
Figure 112018025039103-pat00190
이다.
Figure 112018025039103-pat00191
가 이미 RecVec[2]에 저장되어 있으므로, 그래프 생성 장치는 보조 정리 3에서와 같이 시드 행렬을 이용하여
Figure 112018025039103-pat00192
를 쉽게 계산할 수 있고, 재귀 선택을 위해 보조 정리 4를 효율적으로 활용할 수 있다.
보조 정리 3과 보조 정리 4를 이용하여 소스 정점 u로부터 간선을 생성하기 위한 정리 2(Theorem 2)가 설명된다. 재귀 벡터 모델을 이용하는 간선 생성의 기본 개념은 목적지 정점
Figure 112018025039103-pat00193
를 찾을 때까지 주어진 랜덤 변수 x를 변환하는 것이다. 상세하게, 일실시예에 따른 그래프 생성 장치는 다음의 5 단계에 의해 간선을 생성할 수 있다: (1) 균일 랜덤 변수(uniform random variable)
Figure 112018025039103-pat00194
를 따르는 랜덤 변수 x를 생성함; (2)
Figure 112018025039103-pat00195
를 만족하는 인덱스 k를 찾음; (3) 세트
Figure 112018025039103-pat00196
k 를 삽입하고, 보조 정리 4를 사용하여 x 를 변환함; (4)
Figure 112018025039103-pat00197
를 만족하는 인덱스 k가 없을 때까지 단계 (2)-(3)을 반복함; 및 (5)
Figure 112018025039103-pat00198
에서, 간선 (u, v)을 결정함.
정리 2(Theorem 2). 간선의 결정
소스 정점 u와 균일 랜덤 변수
Figure 112018025039103-pat00199
를 따르는 랜덤 변수 x 가 주어지면, x는 수학식 20과 같이 CDF에서 변환 대칭의 속성을 이용하여 특정 목적지 v의 위치로 재귀적으로 변환된다:
Figure 112018025039103-pat00200
증명: 보조 정리 4에 의해, 수학식 21이 성립한다. 따라서, 수학식 22가 성립하고, 그 다음 수학식 23이 성립한다.
Figure 112018025039103-pat00201
Figure 112018025039103-pat00202
Figure 112018025039103-pat00203
Figure 112018025039103-pat00204
역함수는
Figure 112018025039103-pat00205
를 만족하는 인덱스 k가 없을 때까지 반복되고 난 후, 목적지 정점 v를 나타낸다.
도 5를 참조하여, 그래프 생성 장치가 간선을 생성하는 실시예가 설명된다. 소스 정점 u = 2, 랜덤 변수 x = 0.133을 가정하자. 도 5(a)는 u에 대한 RecVec를 보여준다. 첫 번째 반복에 있어서, RecVec에서
Figure 112018025039103-pat00206
, 및
Figure 112018025039103-pat00207
이므로, k = 2는
Figure 112018025039103-pat00208
을 만족한다. 따라서,
Figure 112018025039103-pat00209
, 및
Figure 112018025039103-pat00210
이다. 두 번째 반복에 있어서 RecVec에서
Figure 112018025039103-pat00211
, 및
Figure 112018025039103-pat00212
이므로 k = 1은
Figure 112018025039103-pat00213
을 만족한다. 따라서,
Figure 112018025039103-pat00214
, 및
Figure 112018025039103-pat00215
이다. 세 번째 반복에 있어서, 조건을 만족하는 k가 없으므로, 그래프 생성 장치는
Figure 112018025039103-pat00216
에서, 간선 (u, v) (2, 6)을 결정하고, 반복을 중단한다.
일실시예에 따른 그래프 생성 장치는 TrillionG를 이용하여 대-규모의 합성 그래프를 빠르게 생성할 수 있다. 규모-확장의 특징(scale-up feature)은 주로 AVS 모델에 의한 작은-크기의 스코프를 이용하여 달성된다. 속도-향상의 특징(speed-up feature)은 주로 표 1에서와 같이 P에 의해 줄어든 시간 복잡도로 인해 달성된다. 성능 관점면에서, 일실시예에 따른 재귀 벡터 모델은 다음의 세 가지 핵심 아이디어를 포함한다: (1) 미리-계산된 RecVec 재사용; (2) 반복(recursions) 횟수를 줄이는 것; (3) 랜덤 변수 생성의 수를 줄이는 것.
미리-계산된 RecVec 재사용: 일실시예에 따른 그래프 생성 장치는 TrillionG를 이용하여 각 스코프 당 미리-계산되어 작은 벡터 RecVec을 구성하고, 해당 스코프 내 모든 간선들을 결정하기 위해 반복적으로 해당 벡터를 이용한다. RecVec의 크기는 표 1에서와 같이
Figure 112018025039103-pat00217
이므로, RecVec는 소스 정점으로부터의 인접한 모든 간선들을 생성하는 동안 CPU 캐시에 쉽게 보관될 수 있다. 예를 들어, |E|이 1 조인 경우, RecVec의 길이는 단지 36에 불과하다. 반대로, RMAT는 간선 결정을 위해
Figure 112018025039103-pat00218
의 반복들을 본질적으로 필요로 하기 때문에, RecVec와 같은 미리-계산된 결과를 재사용 할 수 없다. 일실시예에 따른 그래프 생성 장치는 TrillionG를 이용하여 캐시에서 RecVec에 대한 단일 이진 검색(single binary search)만으로 각 반복을 매우 빠르게 수행할 수 있다.
반복(recursions) 횟수 감소: RMAT에서 목적지 간선을 위한 반복 횟수는
Figure 112018025039103-pat00219
이다. 이와 달리, 일실시예에 따른 TrillionG를 이용하는 그래프 생성 장치는 정리 2를 이용하여 생성될 정점 ID만큼만 반복을 수행하면 된다. degree 분포가 균일하면, 즉,
Figure 112018025039103-pat00220
이면, 비트 스트링(bit string)의 비트들의 약 50%는 1이 된다. 그러나, 비-동일 시드 파라미터들은 degree 분포의 왜곡(skewness)에 이용되며, 1의 수는
Figure 112018025039103-pat00221
보다 훨씬 작아진다. 보조 정리 5(Lemma 5)는 1의 수와 주어진 시드 파라미터들 간의 관계를 보여준다.
보조 정리 5(Lemma 5). 이진 스트링 내 1의 수
bitStr을 목적지 정점 ID의 비트 스트링이라 하고,
Figure 112018025039103-pat00222
bitStr 내 1의 수로 하자. 그러면,
Figure 112018025039103-pat00223
은 수학식 24와 같이 수렴한다.
Figure 112018025039103-pat00224
증명: 수학식 25가 성립한다. 따라서, 수학식 24가 성립한다.
Figure 112018025039103-pat00225
Figure 112018025039103-pat00226
표준 시드 파라미터들(standard seed parameters)
Figure 112018025039103-pat00227
에 있어서, 1의 수는
Figure 112018025039103-pat00228
로 수렴한다. 즉, 반복 횟수는 최대 4.917배 줄어들 수 있다.
랜덤 변수 생성의 수 감소: RMAT은 사분면을 결정하기 위해 각 반복에 대해 랜덤 변수를 생성해야 한다. 이와 달리, 일실시예에 따른 TrillionG를 이용하는 그래프 생성 장치는 랜덤 변수를 한 번만 생성하고 정리 2를 이용하여 목적지 정점을 결정할 때까지 랜덤 변수를 계속 사용할 수 있다. 이 아이디어는 랜덤 변수 생성 횟수를 최대
Figure 112018025039103-pat00229
배 줄일 수 있다.
" TRILLIONG SYSTEM"
일실시예에 따른 재귀 벡터 모델을 기반으로 한 TrillionG 시스템이 설명된다. 알고리즘 4는 알고리즘 2의 프레임워크에 기반한 TrillionG의 스코프 생성 함수(scope generation function)이다. 스코프
Figure 112018025039103-pat00230
의 크기, 즉 생성된 간선들의 수는 정리 1에 의해 결정된다. 그런 다음, 그래프 생성 장치는 범위(range) [0 : log |V|]의 RecVec와 범위 [0 : RecVec[log |V|]의 균일 랜덤 분포
Figure 112018025039103-pat00231
로부터의 랜덤 변수를 이용하여, 정리 2에서 설명된 재귀 선택 과정을 통해 목적지 정점 v을 결정할 수 있다. 그래프 생성 장치는 DetermineEdge 함수를 이용하여 v를 반환한 다음에 새로운 간선 (u, v)를 생성한다.
Figure 112018025039103-pat00232
알고리즘 5는 DetermineEdge 함수를 자세하게 설명한다. 단순화를 위해, 슈도 코드(pseudo code)에서
Figure 112018025039103-pat00233
Figure 112018025039103-pat00234
로 표기한다. Line 2는 조건을 만족하는 인덱스 k를 탐색하며, RecVec에서 이진 검색을 이용되어, 시간 복잡도는
Figure 112018025039103-pat00235
이 되며, 이 복잡도는 1000조 단위-규모 그래프(quadrillion-scale graph)에서도 거의 일정한 시간이다. Line 3은 인덱스 k에 대해
Figure 112018025039103-pat00236
를 계산한 다음, Line 4는 업데이트된 값
Figure 112018025039103-pat00237
를 계산한다. 업데이트된 값으로, Line 5는 DetermineEdge 함수를 재귀적으로 호출하고, 목적지 정점 ID v의 결정을 위해 값들
Figure 112018025039103-pat00238
은 누적된다. Line 7은 재귀의 중단 조건이다. 함수의 첫 번째 호출에서
Figure 112018025039103-pat00239
이면 목적지 정점 ID는 v = 0이 된다. RecVec의 인-메모리 표현에 대해, 일실시예에 따른 그래프 생성 장치는 정확한 조-단위 규모의 그래프를 생성을 위해, 대략적으로 IEEE 128-비트 소수-점 유형(floating-point typ)에 매칭되는 BigDecimal을 이용할 수 있다.
Figure 112018025039103-pat00240
일반적으로, 작업부하(workload)를 머신들로 분할(split)하는 방법은 병렬 방법의 성능에 큰 영향을 미친다. 각기 다른 수의 간선들이 셔플링을 통해 수집되고(gathered), 각 머신들에 분류(sort)되어 병합(merged)되어 RMAT/p와 같은 병렬 방법들은 작업부하의 왜곡이 발생하는 경향이 있다. 이와 달리, 일실시예에 따른 TrillionG는 간선 생성 전에 간선들의 집합을 균등하게 머신들로 분할하여(partitioning) 작업부하 왜곡을 방지할 수 있다. 각 머신의 간선들의 이상적인(ideal) 수는
Figure 112018025039103-pat00241
가 되며, 여기서 p는 스레드(threads) 수이다. 간선-레벨 분할(edge-level partitioning) 대신 AVS-레벨 분할을 이용하여 그래프 생성 장치는 간선들의 이상적인 수를 달성할 수 있다.
도 6을 참조하여, 일실시예에 따른 TrillionG의 AVS-레벨 분할 기법이 설명된다. AVS-레벨 분할 기법은 네 단계들로 구성된다: 결합(combine), 수집(gather), 재분할(repartition) 및 분산(scatter). 두 개의 머신 M1과 M2가 있고, 각 머신은 두 개의 스레드 T1과 T2를 가지고, |E| = 360임을 가정하자. 총 12개의 스코프들(정점들)이 있다. 결합 단계에서, 각 스레드는 정리 1에 의해 스코프들의 크기들, 즉
Figure 112018025039103-pat00242
를 결정하고,
Figure 112018025039103-pat00243
에 따라 크기들을 결합한다. 여기서, 각 스레드는 동일한 수의 스코프들을 사용한다. 예를 들어, M1/T1은 처음 세 스코프들의 크기들을 결정하고, 각 bin의 크기들의 합이 약
Figure 112018025039103-pat00244
= 90이 되도록 크기들을 결합한다. 여기서, 마지막 bin의 크기들의 합은 일반적으로 90보다 작다. 수집 단계에서, 모든 스레드들의 bin들은 마스터 스레드(master thread), 즉 M1/T1로 전송되고, 여기서 bin 크기들만 전송되기 때문에 네트워크 통신 오버헤드는 매우 적다. 재분할 단계에서, 마스터 스레드는 각 bin의 크기가 약
Figure 112018025039103-pat00245
이 되도록 bin들의 스코프들(scopes)을 결합하고 재분할한다. 분산 단계에서, 각 빈은 각 스레드로 전송되어, 스레드는 빈에 해당하는 스코프들의 간선들을 생성한다.
그래프 형식은 그래프 처리의 성능에 영향을 미치지만, 그래프 생성기에서는 자주 간과된다. 일실시예에 따른 TrillionG 시스템은 세가지 주요 그래프 형식을 지원한다: 간선 목록 텍스트 형식(edge list text format)(줄여서, TSV), 6-바이트 인접 목록 이진 형식(6-byte adjacency list binary format)(줄여서, ADJ6) 및 6-바이트 압축 스파스 행(Compressed Sparse Row; CSR)(줄여서, CSR6). 여기서, 조 단위-규모의 그래프를 지원하려면 최소한 6-바이트 표현을 이용하는 것이 필요하다. 대부분의 그래프 생성기는 단지 TSV 형식만 지원한다.
TSV는 한 줄 당 하나의 간선이 있는 텍스트 형식이므로, 구문분석(parsing) 오버헤드(parsing) 및 I/O(Input/Output) 비용으로 인해 길고(verbose) 느리다. ADJ는 각 정점이 인접 목록(adjacency list)에 따라 저장되는 이진 형식이다. 각 정점의 이웃들(neighbors)이 같은 머신에서 생성되기 때문에, ADJ는 오버헤드가 거의 없고 TrillionG에 의해 잘 지원된다. CSR은 ADJ와 비슷하지만, 파일 내 정점들이 정렬되는 동시에 각 인접 목록의 정점들도 정렬된다. 두 가지 이진 형식인 ADJ6과 CSR6은 정점 ID들의 6-바이트 표현을 필요로한다. ADJ6의 파일 크기는 일반적으로 TSV의 파일 크기보다 3-4배 작다. 구체적인 예로, Scale 38(즉,
Figure 112018025039103-pat00246
)의 경우 TSV 파일은 약 90 TB이고, ADJ6 파일은 25 TB이다.
인-메모리 표현의 관점에서, 배-정밀도 부동 소수-점 유형(double-precision floating-point type)은 조 단위-규모 그래프의 간선 생성에 이용되는 확률을 나타낼 정도로 정확하지 않을 수 있다. 특히, RecVec은 목적지 정점의 정확한 위치를 찾는 것과 같은 이슈가 있다. 따라서, 일실시예에 따른 TrillionG는 RecVec에 BigDecimal 유형을 사용할 수 있다. 다만, 표현을 사용하는 실시예는 이에 제한되지 않고, 다양한 규격이 응용될 수 있다.
"풍부한 그래프 생성(RICH GRAPH GENERATION)"
일실시예에 따른 TrillionG는 빠르고 확장 가능한 엔진으로서, 확률적 모델에 따라 대-규모 합성 그래프를 생성할 수 있다. 작은-규모이지만 의미적으로 풍부한 합성 그래프-다수의 노드 유형 및 간선 술어(predicates)와 같은 다양한 특성을 가짐-를 생성하는 다수의 그래프 생성기들이 존재한다. 그래프 생성기들은 제약 유형(constraint type)에 따라 스키마-중심 방법(schema-driven methods) 및 데이터-중심 방법(data-driven methods)으로 분류될 수 있다. 이러한 방법들에서 이용되는 대부분 기법과 일실시예에 따른 TrillionG에서 이용된 기법은 서로 직교(orthogonal)하기 때문에, TrillionG는 쉽게 확장되어 풍부한(rich) 대-규모 합성 그래프를 생성할 수 있다. 이하, 대표적인 스키마-중심 방법인 gMark가 지원하는 그래프를 생성하기 위해 TrillionG를 확장하는 방법이 설명된다. 먼저, 일실시예에 따른 재귀 벡터 모델이 확장되는 실시예가 설명되고, 확장된 재귀 벡터 모델을 이용하여 풍부한 그래프를 생성하는 실시예가 설명된다.
"재귀 벡터 모델의 확장(Extension of Recursive Vector Model)"
일실시예에 따른 재귀 벡터 모델은 out-degree 분포가 in-degree 분포와 같은 그래프를 생성할 수 있다. 또한, 재귀 벡터 모델은 소스 정점들의 범위(range)가 목적지 정점들의 범위와 동일한 그래프를 생성할 수 있다. 일실시예에 따르면, 확장된 재귀 벡터 모델은 소스 및 목적지 정점들에 대해 서로 다른 범위들(ranges)과 서로 다른 in-/out-degree 분포들을 지닌 그래프를 생성할 수 있다. 서로 다른 분포들 및 범위들(ranges)은 스키마-중심 풍부한 그래프 생성 방법에서 사용되는 핵심 개념이다.
일실시예에 따른 재귀 벡터 모델의 두 가지 주요 단계는 (1) 정리 1에서 소스 정점의 스코프(scope) 크기를 결정하는 것과 (2) 정리 2의 소스 정점으로부터의 간선들의 집합을 결정하는 것이다. 원래의 재귀 벡터 모델은 두 가지 주요 단계에 대해 동일한 시드 파라미터들
Figure 112018025039103-pat00247
를 이용하므로, 동일한 in-/out-degree 분포를 갖는 그래프를 생성한다. 확장된 재귀 벡터(Extended Recursive Vector; ERV) 모델은 서로 다른 in-/out-degree 분포들을 갖는 그래프를 생성하기 위해, 각 주요 단계가 서로 다른 시드 파라미터들을 이용할 수 있도록 한다.
직관적으로, AVS-O 접근법(도 2(c)의 검은색 영역(black area))에서, 스코프(scope) 크기들은 out-degree 분포에 대응하고, 각 스코프(scope) 내에서의 간선 결정은 in-degree 분포를 결정한다. 따라서, ERV 모델은 스코프(scope) 크기들을 위한 시드 파라미터들을 설정하여 out-degree 분포를 결정하고(정리 1), 간선 결정을 위한 시드 파라미터들을 설정하여 in-degree 분포를 결정한다(정리 2). 전자의 파라미터들을
Figure 112018025039103-pat00248
로 표기하고, 후자의 파라미터들을
Figure 112018025039103-pat00249
로 표기한다. 예를 들어, out-degree 분포가 Zipfian이지만 in-degree 분포가 Gaussian인 그래프를 고려해보자. 일실시예에 따른 ERV 모델은
Figure 112018025039103-pat00250
를 Zipfian로 설정하고,
Figure 112018025039103-pat00251
를 Gaussian으로 설정하여 그래프를 생성할 수 있다.
상이한 시드 파라미터들
Figure 112018025039103-pat00252
는 Zipfian과 Gaussian을 포함한 서로 다른 degree 분포들을 생성한다. 표 3은 일실시예에 따른 ERV 모델에서 시드 파라미터들에 의해 생성된 몇 가지 degree 분포들을 보여준다.
Figure 112018025039103-pat00253
보조 정리 6에서, 시드 파라미터들과 Zipfian 분포 사이의 관계가 증명된다.
보조 정리 6(Lemma 6). Zipfian 분포 및 시드 파라미터들.
Figure 112018025039103-pat00254
는 기울기
Figure 112018025039103-pat00255
의 Zipfian out-degree 분포 또는 기울기
Figure 112018025039103-pat00256
의 Zipfian in-degree 분포를 생성한다.
증명: Zipfian 분포는 순위(rank)와 빈도(frequency)의 두 요소로 구성되며, Rank-번째 빈발 데이터 아이템(frequent data item)의 빈도는 Rank에 반비례한다. 또한, Zipfian의 모양(shape)은 기울기, 특히 수학식 26의 순위-빈도(rank-frequency) 분포의 log-log 기울기로 설명된다.
Figure 112018025039103-pat00257
보조 정리 1을 이용하여, 수학식 27과 같이 out-degree 분포의
Figure 112018025039103-pat00258
-번째의 확률(빈도)가 계산될 수 있다.
Figure 112018025039103-pat00259
그런 다음, 두 임의의
Figure 112018025039103-pat00260
-번째 및
Figure 112018025039103-pat00261
-번째 순위의 정점들의 빈도들을 이용하여, 수학식 28과 같이 기울기의 방정식이 도출될 수 있다.
Figure 112018025039103-pat00262
따라서,
Figure 112018025039103-pat00263
는 기울기
Figure 112018025039103-pat00264
의 Zipfian out-degree 분포를 생성한다. 이와 같은 방식으로, Zipfian in-degree 분포도 증명될 수 있다.
ERV 모델은 gMark 방법에 의해 지원되지 않는 시드 파라미터들을 조정함으로써, Zipfian 분포의 기울기를 정확하게 제어할 수 있다. 예를 들어, Graph500에서 이용되는 표준 시드 파라미터들
Figure 112018025039103-pat00265
은 기울기 -1.662의의 Zipfian 분포와 매칭된다. 또한, Zipfian, Gaussian 및 gMark은 단순 랜덤 함수를 이용하여 생성하기 쉬운 정규 분포를 지원한다.
ERV 모델이 소스 및 목적지 정점들에 대해 서로 다른 범위들(ranges)를 지원하는 방법이 설명된다.
Figure 112018025039103-pat00266
를 소스 정점들의 범위(range)라 하고,
Figure 112018025039103-pat00267
를 목적지 정점들의 범위라 하자. AVS-O 접근법에서,
Figure 112018025039103-pat00268
일 때
Figure 112018025039103-pat00269
의 직사각형 확률 행렬(rectangle probability matrix)를 고려하자. 그러면, 정리 2에 의해 간선 (u, v)을 생성하고자 할 때,
Figure 112018025039103-pat00270
에서
Figure 112018025039103-pat00271
이 목적지 정점으로서 계산된다. 여기서,
Figure 112018025039103-pat00272
은 가장 가까운 정수 함수(nearest integer function)이다.
Figure 112018025039103-pat00273
인 경우, AVS-I 접근법에서 상술한 방법이 이용될 수 있다.
"스키마-중심 그래프 생성(Schema-driven Graph Generation)"
gMark와 같은 스키마-중심 방법은 생성할 풍부한 합성 그래프를 설명하기 위해 소위 그래프 구성(graph configuration)을 이용한다. 그래프 구성은 노드 유형들, 간선 술어들(edge predicates) 및 in-/out-degree 분포들에 대한 세 개의 테이블로 구성된다. 도 7(a)는 gMark의 서지(bibliographical) 합성 그래프에 대한 그래프 구성의 예를 보여준다. 네 가지 노드 유형들이 존재하는데, 각 노드 유형은 서로 다른 비율들을 가지며, 즉 각각 서로 다른 비율들을 지닌 세 가지 간선 술어들 및 정점들의 범위들을 가진다. 또한, 세 가지 서로 다른 degree 분포들도 존재한다. 서로 다른 degree 분포들 중에서, 소스 노드 유형과 같은 researcher와 대상 노드 유형(target node type)와 같은 paper을 지닌 모든 간선들은 술어(predicate)와 같은 author를 가지고, 여기서 out-degree 분포는 Zipfian을 따르고, in-degree 분포는 Gaussian을 따른다는 것을 의미한다.
일실시예에 따른 TrillionG는 ERV 모델을 이용하여 그래프 구성에서 설명된 풍부한 합성 그래프를 생성 할 수 있다. TrillionG는 개념적으로 각 노드 유형의 정점들의 범위들에 따라 전체 확률 행렬을 나눌 수 있다. 도 7(b)는 4 개의 노드 유형들에 의해 나뉘어진 행렬을 나타내며, 여기서 researcher 정점들의 범위는
Figure 112018025039103-pat00274
로 표기된다. 그러면, 도 7(a)의 3개의 degree 분포들은 도 7(b)의 채색된(colored) 직사각형들에 대응한다. 예를 들어, 가장 크게 채색된 직사각형은 첫 번째 degree 분포를 나타낸다. TrillionG는 상술한 방법에 따라 각 채색된 직사각형을 생성할 수 있다. 구체적으로,
Figure 112018025039103-pat00275
는 크기가 |E|의 50%인 author 술어를 갖는 간선들의 집합을 의미한다.
일실시예에 따르면, ERV 모델을 기반으로 하는 TrillionG는 gMark보다 훨씬 더 풍부한 그래프를 생성할 뿐만 아니라, gMark보다 의미상으로(semantically) 정확한 그래프를 생성할 수 있다. gMark에서 제안된 그래프 생성 알고리즘은 중복된 간선들을 제거할 수 없기 때문에, 같은 간선을 여러 번 생성할 수 있다. 예를 들어, gMark에 따르면, paper xconference y에서 출판되었음을 지칭하는 동일 간선의 사본들이 여러 개 있을 수 있다. 이와 달리, TrillionG는 기본적으로(by default) 이러한 중복을 제거한다.
도 8은 일실시예에 따른 그래프 생성 장치를 설명하기 위한 도면이다.
일실시예에 따른 그래프 생성 장치(800)는 계산노드 컨트롤러(마스터)(810), 계산노드 그룹(슬래이브 그룹)(820)을 포함한다. 계산노드 컨트롤러(마스터)(810)는 소규모의 실제 계산을 수행하는 계산노드 그룹(슬래이브 그룹)(820)을 관리하고, 계산노드 그룹(슬래이브 그룹)(820)은 분할된 그래프를 생성하고 저장하는 동작을 수행한다. 계산노드 그룹(슬래이브 그룹)(820)은 적어도 하나의 계산노드(830)를 포함한다. 계산노드 컨트롤러(마스터)(810)와 계산노드 그룹(슬래이브 그룹)(820)은 네트워크(140)로 연결되어 있다.
일실시예에 따르면, 계산노드 컨트롤러(810)는 파라미터 해석기(Parameter Parser)(811), 범위 분할기(Range Partitioner)(812), 작업 스케쥴러(Task Scheduler)(813) 및 파일 출력 관리자(File Output Manager)(814)를 포함한다. 파라미터 해석기(Parameter Parser)(811)는 생성할 합성 그래프의 속성을 사용자로부터 파라미터로 획득하여 합성 그래프 생성 전체의 워크로드를 구성할 수 있다. 범위 분할기(Range Partitioner)(812)는 합성 그래프 생성에 앞서 정점(Vertex) 기준으로 생성할 그래프 데이터의 범위를 분할할 수 있다. 작업 스케쥴러(Task Scheduler)(813)는 병렬/분산으로 워크로드들을 분배할 수 있다. 파일 출력 관리자(File Output Manager)(814)는 각 계산노드(830)에서 생성된 데이터들을 주 기억 장치(860)에 있는 버퍼(861)로부터 보조 기억 장치(870)로 저장할 수 있다.
일실시예에 따르면, 각 계산노드(830)는 중앙 처리 장치(850), 주 기억 장치(860), 및 보조 기억 장치(870)를 포함한다. 중앙 처리 장치(850)는 복수의 코어(Core)(851)와 케시 메모리(852)를 포함한다. 여기서 케시 메모리(852)는 상술한 CPU 캐시이다. 주 기억 장치(860)는 각 코어(851)에서 생성한 합성 그래프의 일부를 임시로 저장하는 버퍼(861)를 포함한다. 보조 기억 장치(870)는 PCI-E 혹은 SATA 인터페이스(880)으로 각 계산노드(830)에 연결되어 있다.
도 9는 일실시예에 따른 그래프 생성 방법을 설명하기 위한 순서도이다.
일실시예에 따른 그래프 생성 장치는 합성 그래프를 생성하기 위한 시스템을 초기화(910) 하고, 하나의 정점 범위 내 합성 그래프를 생성(920)할 수 있다. 그래프 생성 장치는 상술한 인자 해석기와 그래프 범위 분할기를 이용하여 시스템을 초기화할 수 있다. 그래프 생성 장치는 상술한 작업 스케줄러를 통해 각 계산노드의 코어에 정점 단위의 분할 그래프 생성 작업을 할당하고, 코어는 하나의 정점에 연결된 모든 간선을 정점 범위의 분할 그래프로 생성하는 작업을 수행한다. 하나의 정점 단위로 그래프를 생성하는 동작은 도 11을 참조하여 설명된다.
단계(930)부터 단계(950)는 상술한 파일 출력 관리자를 통해 버퍼 및 보조 기억 장치에 생성된 그래프가 저장되는 과정이다. 그래프 생성 장치는 각 계산노드들이 정점의 스코프 내 하나의 정점에 연결된 모든 간선들을 생성하고 난 후, 생성된 그래프의 데이터를 버퍼에 임시로 저장한다(930). 스코프는 정점들의 정점 수에 기초하여 결정될 수 있다. 이때 버퍼는 적어도 하나 이상의 정점에 연결된 모든 간선을 담을 수 있을 만큼 충분히 크다. 그래프 생성 장치는 버퍼에 데이터가 충분히 찼는지를 판단하고, 보조 기억장치에 쓰기 동작을 수행할지 여부를 판단한다(940). 그래프 생성 장치는 버퍼에서 보조 기억 장치로 비동기 쓰기의 작업을 수행할 수 있다(950).
그래프 생성 장치는 생성할 정점 범위가 존재하는지 여부를 판단하고(960), 판단 결과에 따라 버퍼에 있는 기 생성된 분할 그래프의 데이터를 모두 보조 기억장치로 비동기 쓰기 동작을 수행한다(970). 만약 생성 해야 하는 정점 범위가 존재한다면 그래프 생성 장치는 단계(920) 이전으로 돌아가 그래프 생성 작업을 반복할 수 있다.
도 10은 일실시예에 따른 그래프 생성을 위해 작업을 분배하는 동작을 설명하기 위한 도면이다.
도 10을 참조하여 설명되는 내용은 도 6을 참조하여 설명되는 동작이 그래프 생성 장치의 구성요소에 적용되는 실시예이다. 일실시예에 따르면, 그래프 생성 장치는 처리해야 할 정점들을 계산노드 그룹(820)의 계산 자원을 사용하여, 분할된 위성 데이터 크기를 가지는 정점 범위로 분할할 수 있다. 그래프 생성을 위한 작업 분배 동작은 계산노드 콘트롤러(810)의 그래프 범위 분할기에 의해 수행될 수 있다.
일실시예에 따르면, 그래프 생성 장치는 각 정점으로부터 생성하고자 하는 간선 수를 계산할 수 있다. 그래프 생성 장치는 미리 정의된 확률 파라미터들 및 정점들 사이에서 생성하고자 하는 간선들의 전체 간선 수에 기초하여, 정점들의 간선 수들을 생성할 수 있다.
그래프 생성 장치는 계산노드 그룹(820)의 각 계산노드가 가지고 있어야 할 그래프 분할 위성 데이터의 크기만큼으로 계산된 간선 수들을 결합(combine)할 수 있다. 일실시예에 따르면, 그래프 생성 장치는 전체 간선 수 및 계산노드들의 수에 기초하여, 정점들을 계산노드들 별로 분할하고, 분할된 정점들을 결합하여 정점 범위들을 생성할 수 있다. 그래프 생성 장치는 네트워크를 통해 계산노드 콘트롤러(810)의 그래프 범위 분할기로 결합된 간선 수들을 수집(gather)할 수 있다.
그래프 생성 장치의 계산노드 컨트롤러(810)는 분할된 위성 데이터 크기만큼 정점 범위들을 계산노드들 별로 재분할(repartition)할 수 있다. 일실시예에 따르면, 그래프 생성 장치는 전체 간선 수 및 계산노드들의 수에 기초하여 정점 범위들을 계산노드들 별로 재분할할 수 있다. 그래프 생성 장치의 계산노드 컨트롤러(810)는 계산노드 그룹(820)의 각 계산노드들로 재분할된 정점 범위들을 방출(scatter)할 수 있다. 일실시예에 따르면, 그래프 생성 장치는 계산노드들 별로 재분할된 정점 범위들에 기초하여, 계산노드들이 처리해야 할 정점들을 계산노드들로 할당할 수 있다. 덧붙여, 도 3에서 정점에 연결된 간선 수를 계산(310)하는 방법은 도5의 한 정점이 가지는 간선 개수를 계산하는 과정을 사용한다.
도 10을 참조하여, 0~5의 정점이 있고, 2개의 계산노드가 있다고 가정하자. 계산노드 그룹(820)은 정점에 연결된 간선 수를 계산하여, 정점 0이 90개, 정점 1이 30개, 정점 2가 10개, 정점 3가 30개, 정점 4가 10개, 그리고 정점 5가 10개의 간선을 생성할 것임을 판단할 수 있다.
계산노드 그룹(820)은 정점 수를 분할된 위상 데이터가 가지고 있어야 할 크기로 결합하는데 전체 간선 수가 180개이고, 계산노드가 2개이므로 정점 수를 90개의 데이터 크기로 결합할 수 있다. 정점 범위 [0:0]은 총 90개의 간선을 가지고, 정점 범위 [1:2]는 총 40개의 간선을 가지고, 정점 범위 [3:5]는 총 50개의 간선을 가지게 된다. 그래프 생성 장치는 간선 수들을 그래프 범위 분할기로 수집하고, 그래프 범위 분할기는 재분할 과정을 수행할 수 있다. 그래프 범위 분할기는 총 90개의 간선을 기준으로, 정점 범위 [0:0]은 총 90개의 간선을 가지고, 정점 범위 [1:5]는 총 90개의 간선을 가진다는 범위 분할 정보를 생성할 수 있다. 그래프 범위 분할기는 계산노드 그룹(820)으로 범위 분할 정보를 방출할 수 있다. 0번 계산노드는 정점 0에 대한 정점 범위의 그래프 생성을 처리하고, 1번 계산노드는 정점 1부터 정점 5까지의 정점 범위의 그래프 생성을 처리하게 된다.
도 11은 일실시예에 따른 하나의 정점 단위로 그래프를 생성하는 동작을 설명하기 위한 순서도이다.
일실시예에 따른 그래프 생성 장치는 비어 있는 간선 집합 edgeSet을 생성할 수 있다(1110). 그래프 생성 장치는 소스 정점으로부터 생성하고자 하는 간선들의 간선 수 numEdge를 계산할 수 있다. 간선 수의 계산 동작은 도 12를 참조하여 설명된다. 그래프 생성 장치는 생성할 정점(소스 정점) u에 대한 재귀 벡터 RecVec를 계산할 수 있다(1130). 재귀 벡터의 생성 동작은 도 13을 참조하여 설명된다.
그래프 생성 장치는 edgeSet에 있는 원소의 수가 numEdges보다 작거나 같다면, 새로운 간선을 생성하여 edgeSet에 추가하는 작업을 수행하고, 아니라면 간선 생성을 종료할 수 있다(1140). 그래프 생성 장치는 0과 RecVec [log |V|] 사이의 균등 분포를 가지는 랜덤 변수 x를 생성한다(1150). 그래프 생성 장치는 재귀 벡터 RecVec을 이용하여 랜덤 변수 x에 대응하는 목적지 정점 v를 계산할 수 있다(1160). 목적지 정점을 계산하는 동작은 도 14를 참조하여 설명된다. 그래프 생성 장치는 소스 정점과 목적지 정점을 연결하는 간선 ( u,v )을 생성하여 간선 집합 edgeSet에 추가할 수 있다(1170).
도 12는 일실시예에 따른 간선 수를 생성하는 동작을 설명하기 위한 순서도이다.
일실시예에 따르면, 그래프 생성 장치는 정점으로부터 간선이 생길 확률 및 전체 간선 수(정점들 사이에 연결되는 간선 수)에 따르는 통계적 분포에 기초하여, 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 생성할 수 있다.
그래프 생성 장치는 미리 정의된 확률 파라미터들에 기초하여, 정점 u로부터 연결되는 간선이 생길 확률 p를 계산할 수 있다(1210). 그래프 생성 장치는 총합이 1인 확률 파라미터들과 정점에 대응하는 이진 스트링의 1의 비트 수에 기초하여 확률을 생성할 수 있다. 그래프 생성 장치는
Figure 112018025039103-pat00276
를 이용하여 소스 정점 u로부터 연결되는 간선이 생길 확률을 계산할 수 있다. 여기서,
Figure 112018025039103-pat00277
는 확률이고, u는 소스 정점에 대응하는 이진 스트링이고, ~는 비트 NOT 연산자(bitwise NOT operator)이고, Bits(x)는 논리적 비트 연산자(logical bit operator)로서 이진 스트링 x에서 1의 비트 수를 반환하며,
Figure 112018025039103-pat00278
는 총합이 1인 확률 파라미터들이다.
그래프 생성 장치는 정규 분포 N( np , np (1-p))를 따르는 랜덤 변수를 이용하여 간선 수 numEdges를 생성할 수 있다(1220). n은 정점들 사이의 전체 간선 수이고, p는 정점으로부터 연결되는 간선이 생길 확률이다.
도 13은 일실시예에 따른 재귀 벡터를 생성하는 동작을 설명하기 위한 순서도이다.
일실시예에 따르면, 그래프 생성 장치는 미리 정의된 확률 파라미터들에 기초하여, 소스 정점으로부터 연결되는 간선이 생길 확률을 생성하고, 생성된 확률, 확률 파라미터들 및 정점들의 정점 수에 기초하여, 인덱스들에 각각 대응하는 요소들의 값들을 갖는 재귀 벡터를 생성할 수 있다. 그래프 생성 장치는
Figure 112018025039103-pat00279
를 이용하여, 미리 정의된 조건을 만족하는 인덱스들 별로 재귀 벡터의 요소들의 값들을 생성할 수 있다. 여기서,
Figure 112018025039103-pat00280
는 인덱스이고,
Figure 112018025039103-pat00281
Figure 112018025039103-pat00282
에 대응하는 재귀 벡터의 요소의 값이고,
Figure 112018025039103-pat00283
는 총합이 1인 확률 파라미터들이고,
Figure 112018025039103-pat00284
은 정점 수이고, ≫는 논리적 오른쪽 시프트(logical right shift) 연산자이고,
Figure 112018025039103-pat00285
는 논리적 비트 연산자(logical bit operator)로서 이진 스트링
Figure 112018025039103-pat00286
에서 1의 비트 수를 반환하며,
Figure 112018025039103-pat00287
는 확률이고, 미리 정의된 조건은
Figure 112018025039103-pat00288
이다. 재귀 벡터의 길이는
Figure 112018025039103-pat00289
이므로, 상술한 바와 같이 재귀 벡터는 CPU 캐시에 저장될 수 있다.
도 13을 참조하면, 그래프 생성 장치는 재귀 벡터 RecVec의 모든 인덱스에 대한 반복을 수행하고, 인덱스 i를 0으로 초기화한다(1310). 단계(1310), 단계(1320), 단계(1350)은 재귀 벡터 RecVec의 모든 인덱스에 대한 반복문을 의미한다. 그래프 생성 장치는
Figure 112018025039103-pat00290
인지 여부를 판단하고(1320), 판단 결과에 기초하여 정점 u로부터 연결되는 간선이 생길 확률 p를 계산하고(1330), RecVec[i]를 계산하고(1340), ii+1로 갱신할 수 있다(1350).
도 14는 일실시예에 따른 목적지 정점과 간선을 생성하는 동작을 설명하기 위한 순서도이다.
일실시예에 따르면, 그래프 생성 장치는 소스 정점으로부터 생성하고자 하는 간선 수만큼 간선이 생성될 때까지, 재귀 벡터에 대한 이진 탐색을 반복적으로 수행하여 적어도 하나의 목적지 정점을 결정하고, 결정된 목적지 정점에 대응하는 적어도 하나의 간선을 생성할 수 있다. 그래프 생성 장치는 재귀 벡터 및 정점들의 정점 수에 기초하여 랜덤 변수를 생성할 수 있다. 그래프 생성 장치는 정점 수에 대응하는 재귀 벡터의 요소(element)의 값에 기초하여, 랜덤 변수를 생성할 수 있다. 일실시예에 따르면, 랜덤 변수는 0과 RecVec [log|V|] 사이의 값이고,
Figure 112018025039103-pat00291
은 정점 수이고, RecVec[log|V|]log|V|에 대응하는 재귀 벡터의 요소의 값이다.
그래프 생성 장치는 재귀 벡터를 이용하여 랜덤 변수에 대응하는 목적지 정점을 결정하며, 소스 정점 및 목적지 정점 사이의 간선을 생성할 수 있다. 그래프 생성 장치는 랜덤 변수 및 재귀 벡터에 따른 미리 정의된 조건을 만족하는 적어도 하나의 인덱스를 결정할 수 있다. 그래프 생성 장치는 결정된 적어도 하나의 인덱스에 기초하여 목적지 정점을 결정할 수 있다. 그래프 생성 장치는 기 생성된 적어도 하나의 간선의 수와 타겟 간선 수를 비교하고, 비교 결과에 기초하여 소스 정점 및 제2 목적지 정점 사이의 제2 간선을 생성할 수 있다.
도 14를 참조하면, 그래프 생성 장치는 랜덤 변수 xRecVec[0]보다 크거나 같은 경우 재귀 호출을 수행하고, 그렇지 않으면 멈추는 조건(stop condition)으로 재귀 호출을 종료할 수 있다(1410). 그래프 생성 장치는 이진 탐색을 수행하여 재귀벡터 RecVec에서 x에 대응하는 인덱스 값인 k를 결정할 수 있다(1420). 그래프 생성 장치는
Figure 112018025039103-pat00292
를 만족하는 인덱스
Figure 112018025039103-pat00293
를 결정할 수 있다.
RecVec의 길이는 매우 작기 때문에 상술한 바와 같이 CPU 캐시에 적재가 가능하고, 그래프 생성 장치는 이진 탐색을 통해 추가적인 메모리 접근 없이 CPU 캐시 내에서 k에 대응하는 대칭 비율
Figure 112018025039103-pat00294
을 생성할 수 있다. 그래프 생성 장치는
Figure 112018025039103-pat00295
에 대응하는 대칭 비율
Figure 112018025039103-pat00296
를 생성할 수 있다(1430). 그래프 생성 장치는 다음 재귀 호출에서 사용될 제2 랜덤 변수 x' =
Figure 112018025039103-pat00297
을 생성할 수 있다(1440). 그래프 생성 장치는 추가적인 메모리 접근 없이 CPU 캐시만을 이용하여 대칭 비율을 계산할 수 있다. 그래프 생성 장치는 재귀 벡터 RecVec를 이용하여 랜덤 변수 x'에 대응하는 정점 v'를 계산할 수 있다(1450). 그래프 생성 장치는
Figure 112018025039103-pat00298
에 대응하는 정점 v
Figure 112018025039103-pat00299
로 리턴할 수 있다(1460). 그래프 생성 장치는
Figure 112018025039103-pat00300
인 인덱스
Figure 112018025039103-pat00301
를 결정하고, 제3 랜덤 변수 및 재귀 벡터에 따른 미리 정의된 조건을 만족하는 인덱스가 존재하지 않는 경우, 목적지 정점을
Figure 112018025039103-pat00302
로 결정할 수 있다.
도 15는 일실시예에 따른 그래프 생성 방법을 설명하기 위한 순서도이다.
도 15를 참조하면, 그래프 생성 장치는 복수의 정점들 중 어느 하나의 소스 정점을 인식할 수 있다(1501). 그래프 생성 장치는 정점들 사이에서 생성하고자 하는 간선들의 전체 타겟 간선 수 중에서, 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 획득할 수 있다(1502). 그래프 생성 장치는 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프 내에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터를 획득할 수 있다(1503). 그래프 생성 장치는 타겟 간선 수 및 재귀 벡터에 기초하여, 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성할 수 있다(1504).
도 16은 일실시예에 따른 그래프 생성 방법을 설명하기 위한 순서도이다.
도 16을 참조하면, 그래프 생성 장치는 복수의 정점들로부터 각각 생성하고자 하는 간선들의 타겟 간선 수들에 기초하여, 복수의 계산노드들이 처리해야 할 정점들을 계산노드들로 할당할 수 있다(1601). 그래프 생성 장치는 계산노드에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터에 기초하여, 정점들 중 어느 하나의 소스 정점의 단위로 그래프를 생성할 수 있다(1602). 그래프 생성 장치는 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프 내에서 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성할 수 있다. 그래프 생성 장치는 계산노드가 처리해야 할 정점 범위가 존재하는 경우, 계산노드에 의해 제2 소스 정점의 단위로 그래프를 생성할 수 있다(1603). 그래프 생성 장치는 계산노드가 처리해야 할 정점 범위가 존재하지 않는 경우, 소스 정점의 단위로 생성된 그래프를 저장할 수 있다(1604). 그래프 생성 장치는 소스 정점의 단위로 생성된 그래프를 계산노드의 버퍼에 임시로 저장하고, 버퍼에 저장된 데이터의 양에 기초하여, 버퍼에 저장된 그래프를 계산노드의 보조 기억 장치로 비동기적으로 저장할 수 있다. 일실시예에 따르면, 정점들에 대응하는 그래프들은 할당된 정점들 별로 계산노드들에 의해 병렬적으로 처리될 수 있다.
도 17은 일실시예에 따른 그래프 생성 장치의 구성의 예시도이다.
도 17을 참조하면, 그래프 생성 장치(1701)는 프로세서(1702) 및 메모리(1703)를 포함한다. 프로세서(1702)는 도 1 내지 도 16을 통하여 전술한 적어도 하나의 장치들을 포함하거나, 도 1 내지 도 16을 통하여 전술한 적어도 하나의 방법을 수행할 수 있다. 메모리(1703)는 그래프 생성 방법이 구현된 프로그램을 저장할 수 있다. 메모리(1703)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다. 프로세서(1702)는 프로그램을 실행하고, 그래프 생성 장치(1701)를 제어할 수 있다. 프로세서(1702)에 의하여 실행되는 프로그램의 코드는 메모리(1703)에 저장될 수 있다. 그래프 생성 장치(1701)는 입출력 장치(도면 미 표시)를 통하여 외부 장치(예를 들어, 퍼스널 컴퓨터 또는 네트워크)에 연결되고, 데이터를 교환할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (28)

  1. 복수의 정점(vertex)들 중 어느 하나의 소스 정점(source vetex)을 인식하는 단계;
    상기 정점들 사이에서 생성하고자 하는 간선(edge)들의 전체 타겟 간선 수 중에서, 상기 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 획득하는 단계;
    상기 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프(scope) 내에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터(recursive vector)를 획득하는 단계; 및
    상기 타겟 간선 수 및 상기 재귀 벡터에 기초하여, 상기 소스 정점 및 적어도 하나의 목적지 정점(destination vertex) 사이의 적어도 하나의 간선을 생성하는 단계
    를 포함하고,
    상기 스코프는 상기 정점들의 정점 수에 기초하여 결정되고,
    상기 단계들은 적어도 하나의 프로세서에 의해서 수행되는
    그래프 생성 방법.
  2. 제1항에 있어서,
    상기 타겟 간선 수를 획득하는 단계는
    미리 정의된 확률 파라미터들에 기초하여, 상기 소스 정점으로부터 연결되는 간선이 생길 확률을 생성하는 단계; 및
    상기 확률 및 상기 전체 타겟 간선 수에 따르는 통계적 분포에 기초하여, 상기 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 생성하는 단계
    를 포함하는,
    그래프 생성 방법.
  3. 제2항에 있어서,
    상기 확률은 총합이 1인 확률 파라미터들과 상기 소스 정점에 대응하는 이진 스트링의 1의 비트 수에 기초하여 생성되는,
    그래프 생성 방법.
  4. 제2항에 있어서,
    상기 확률을 생성하는 단계는
    Figure 112018025039103-pat00303

    를 이용하여 상기 소스 정점으로부터 연결되는 간선이 생길 확률을 계산하는 단계
    를 포함하고,
    상기
    Figure 112018025039103-pat00304
    는 상기 확률이고, 상기 u는 상기 소스 정점에 대응하는 이진 스트링이고, 상기 ~는 비트 NOT 연산자(bitwise NOT operator)이고, Bits(x)는 논리적 비트 연산자(logical bit operator)로서 이진 스트링 x에서 1의 비트 수를 반환하며, 상기
    Figure 112018025039103-pat00305
    는 총합이 1인 확률 파라미터들인,
    그래프 생성 방법.
  5. 제2항에 있어서,
    상기 타겟 간선 수를 생성하는 단계는
    정규 분포 N( np , np (1-p))를 따르는 랜덤 변수를 생성하는 단계
    를 포함하고,
    상기 n은 상기 전체 타겟 간선 수이고, 상기 p는 상기 확률인,
    그래프 생성 방법.
  6. 제1항에 있어서,
    상기 재귀 벡터를 획득하는 단계는
    미리 정의된 확률 파라미터들에 기초하여, 상기 소스 정점으로부터 연결되는 간선이 생길 확률을 생성하는 단계; 및
    상기 확률, 상기 확률 파라미터들 및 상기 정점들의 정점 수에 기초하여, 인덱스들에 각각 대응하는 요소들의 값들을 갖는 재귀 벡터를 생성하는 단계
    를 포함하는,
    그래프 생성 방법.
  7. 제6항에 있어서,
    상기 재귀 벡터를 생성하는 단계는
    Figure 112018025039103-pat00306

    를 이용하여, 미리 정의된 조건을 만족하는 인덱스들 별로 재귀 벡터의 요소들의 값들을 생성하는 단계
    를 포함하고,
    상기
    Figure 112018025039103-pat00307
    는 인덱스이고, 상기
    Figure 112018025039103-pat00308
    는 상기
    Figure 112018025039103-pat00309
    에 대응하는 상기 재귀 벡터의 요소의 값이고, 상기
    Figure 112018025039103-pat00310
    는 총합이 1인 확률 파라미터들이고, 상기
    Figure 112018025039103-pat00311
    은 상기 정점 수이고, 상기 ≫는 논리적 오른쪽 시프트(logical right shift) 연산자이고, 상기
    Figure 112018025039103-pat00312
    는 논리적 비트 연산자(logical bit operator)로서 이진 스트링
    Figure 112018025039103-pat00313
    에서 1의 비트 수를 반환하며, 상기
    Figure 112018025039103-pat00314
    는 상기 확률인,
    그래프 생성 방법.
  8. 제7항에 있어서,
    상기 미리 정의된 조건은
    Figure 112018025039103-pat00315
    인,
    그래프 생성 방법.
  9. 제1항에 있어서,
    상기 재귀 벡터의 길이는
    Figure 112018025039103-pat00316
    이고, 상기
    Figure 112018025039103-pat00317
    은 상기 정점 수인,
    그래프 생성 방법.
  10. 제1항에 있어서,
    상기 재귀 벡터는 CPU(Central Processing Unit) 캐시(cache)에 저장되는,
    그래프 생성 방법.
  11. 삭제
  12. 제1항에 있어서,
    상기 간선을 생성하는 단계는
    상기 타겟 간선 수만큼 간선이 생성될 때까지, 상기 재귀 벡터에 대한 이진 탐색을 반복적으로 수행하여 적어도 하나의 목적지 정점을 결정하고, 상기 결정된 목적지 정점에 대응하는 적어도 하나의 간선을 생성하는 단계
    를 포함하는,
    그래프 생성 방법.
  13. 제1항에 있어서,
    상기 간선을 생성하는 단계는
    상기 재귀 벡터 및 상기 정점들의 정점 수에 기초하여 랜덤 변수(random value)를 생성하는 단계;
    상기 재귀 벡터를 이용하여 상기 랜덤 변수에 대응하는 목적지 정점을 결정하는 단계; 및
    상기 소스 정점 및 상기 목적지 정점 사이의 간선을 생성하는 단계
    를 포함하는,
    그래프 생성 방법.
  14. 제13항에 있어서,
    상기 간선을 생성하는 단계는
    기 생성된 적어도 하나의 간선의 수와 상기 타겟 간선 수를 비교하는 단계; 및
    상기 비교 결과에 기초하여, 상기 소스 정점 및 제2 목적지 정점 사이의 제2 간선을 생성하는 단계
    를 더 포함하는,
    그래프 생성 방법.
  15. 제13항에 있어서,
    상기 랜덤 변수를 생성하는 단계는
    상기 정점 수에 대응하는 상기 재귀 벡터의 요소(element)의 값에 기초하여, 랜덤 변수를 생성하는 단계
    를 포함하는,
    그래프 생성 방법.
  16. 제15항에 있어서,
    상기 랜덤 변수는 0과 RecVec [log|V|] 사이의 값이고,
    상기
    Figure 112018025039103-pat00318
    은 상기 정점 수이고, 상기 RecVec[log|V|]는 상기 log|V|에 대응하는 상기 재귀 벡터의 요소의 값인,
    그래프 생성 방법.
  17. 제13항에 있어서,
    상기 목적지 정점을 결정하는 단계는
    상기 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 적어도 하나의 인덱스를 결정하는 단계; 및
    상기 결정된 적어도 하나의 인덱스에 기초하여 목적지 정점을 결정하는 단계
    를 포함하는,
    그래프 생성 방법.
  18. 제13항에 있어서,
    상기 목적지 정점을 결정하는 단계는
    상기 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 제1 인덱스를 결정하는 단계;
    상기 제1 인덱스 및 상기 재귀 벡터에 기초하여, 상기 제1 인덱스에 대응하는 대칭 비율을 생성하는 단계;
    상기 랜덤 변수, 상기 재귀 벡터 및 상기 대칭 비율에 기초하여, 제2 랜덤 변수를 생성하는 단계;
    상기 제2 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 제2 인덱스를 결정하는 단계; 및
    제3 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 인덱스가 존재하지 않는 경우, 기 생성된 적어도 하나의 인덱스에 기초하여 목적지 정점을 결정하는 단계
    를 포함하는,
    그래프 생성 방법.
  19. 제13항에 있어서,
    상기 목적지 정점을 결정하는 단계는
    Figure 112018025039103-pat00319
    를 만족하는 인덱스
    Figure 112018025039103-pat00320
    를 결정하는 단계;
    상기
    Figure 112018025039103-pat00321
    에 대응하는 대칭 비율
    Figure 112018025039103-pat00322
    를 생성하는 단계;
    제2 랜덤 변수
    Figure 112018025039103-pat00323
    을 생성하는 단계;
    Figure 112018025039103-pat00324
    인 인덱스
    Figure 112018025039103-pat00325
    를 결정하는 단계; 및
    제3 랜덤 변수 및 상기 재귀 벡터에 따른 미리 정의된 조건을 만족하는 인덱스가 존재하지 않는 경우, 목적지 정점을
    Figure 112018025039103-pat00326
    로 결정하는 단계
    를 포함하고,
    상기
    Figure 112018025039103-pat00327
    는 상기 랜덤 변수이고, 상기
    Figure 112018025039103-pat00328
    는 상기
    Figure 112018025039103-pat00329
    에 대응하는 상기 재귀 벡터의 요소의 값인,
    그래프 생성 방법.
  20. 복수의 정점들로부터 각각 생성하고자 하는 간선들의 타겟 간선 수들에 기초하여, 복수의 계산노드들이 처리해야 할 정점들을 상기 계산노드들로 할당하는 단계;
    계산노드에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터에 기초하여, 상기 정점들 중 어느 하나의 소스 정점의 단위로 그래프를 생성하는 단계;
    상기 계산노드가 처리해야 할 정점 범위가 존재하는 경우, 상기 계산노드에 의해 제2 소스 정점의 단위로 그래프를 생성하는 단계; 및
    상기 계산노드가 처리해야 할 정점 범위가 존재하지 않는 경우, 상기 소스 정점의 단위로 생성된 그래프를 저장하는 단계
    를 포함하고,
    상기 소스 정점의 단위로 그래프를 생성하는 단계는
    상기 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프(scope) 내에서 상기 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성하는 단계
    를 포함하고,
    상기 단계들은 적어도 하나의 프로세서에 의해서 수행되는,
    그래프 생성 방법.

  21. 제20항에 있어서,
    상기 계산노드들이 처리해야 할 정점들을 할당하는 단계는
    미리 정의된 확률 파라미터들 및 상기 정점들 사이에서 생성하고자 하는 간선들의 전체 타겟 간선 수에 기초하여, 상기 정점들의 타겟 간선 수들을 생성하는 단계;
    상기 전체 타겟 간선 수 및 상기 계산노드들의 수에 기초하여 상기 정점들을 상기 계산노드들 별로 분할하고, 상기 분할된 정점들을 결합하여 정점 범위들을 생성하는 단계;
    상기 전체 타겟 간선 수 및 상기 계산노드들의 수에 기초하여, 상기 생성된 정점 범위들을 상기 계산노드들 별로 재분할하는 단계; 및
    상기 계산노드들 별로 재분할된 정점 범위들에 기초하여, 상기 계산노드들이 처리해야 할 정점들을 상기 계산노드들로 할당하는 단계
    를 포함하는,
    그래프 생성 방법.
  22. 제20항에 있어서,
    상기 정점들에 대응하는 그래프들은 상기 할당된 정점들 별로 상기 계산노드들에 의해 병렬적으로 처리되는,
    그래프 생성 방법.
  23. 제20항에 있어서,
    상기 재귀 벡터는 상기 계산노드의 CPU(Central Processing Unit) 캐시(cache)에 저장되는,
    그래프 생성 방법.
  24. 삭제
  25. 제20항에 있어서,
    상기 소스 정점의 단위로 생성된 그래프를 상기 계산노드의 버퍼에 임시로 저장하는 단계; 및
    상기 버퍼에 저장된 데이터의 양에 기초하여, 상기 버퍼에 저장된 그래프를 상기 계산노드의 보조 기억 장치로 비동기적으로 저장하는 단계
    를 더 포함하는,
    그래프 생성 방법.
  26. 하드웨어와 결합되어 제1항 내지 제10항, 제12항 내지 제23항 및 제25항 중 어느 하나의 항의 방법을 실행시키기 위하여 기록 매체에 저장된 컴퓨터 프로그램.
  27. 복수의 정점들 중 어느 하나의 소스 정점을 인식하고,
    상기 정점들 사이에서 생성하고자 하는 간선들의 전체 타겟 간선 수 중에서, 상기 소스 정점으로부터 생성하고자 하는 적어도 하나의 간선의 타겟 간선 수를 획득하고,
    상기 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프 내에서, 적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터를 획득하고,
    상기 타겟 간선 수 및 상기 재귀 벡터에 기초하여, 상기 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성하는 프로세서
    를 포함하고,
    상기 스코프는 상기 정점들의 정점 수에 기초하여 결정되는,
    그래프 생성 장치.
  28. 복수의 정점들로부터 각각 생성하고자 하는 간선들의 타겟 간선 수들에 기초하여, 복수의 계산노드들이 처리해야 할 정점들을 상기 계산노드들로 할당하는 콘트롤러; 및
    적어도 하나의 간선을 생성하는데 반복적으로 이용되는 재귀 벡터에 기초하여, 상기 정점들 중 어느 하나의 소스 정점의 단위로 그래프를 생성하고,
    처리해야 할 정점 범위가 존재하는 경우, 제2 소스 정점의 단위로 그래프를 생성하며,
    처리해야 할 정점 범위가 존재하지 않는 경우, 상기 소스 정점의 단위로 생성된 그래프를 저장하는 계산노드
    를 포함하고,
    상기 계산노드는
    상기 소스 정점에 대해 간선의 존재 여부의 확인이 요구되는 스코프(scope) 내에서 상기 소스 정점 및 적어도 하나의 목적지 정점 사이의 적어도 하나의 간선을 생성하는,
    그래프 생성 장치.
KR1020180029111A 2017-04-27 2018-03-13 그래프 생성 방법 및 장치 KR101998020B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/955,914 US10593080B2 (en) 2017-04-27 2018-04-18 Graph generating method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762490677P 2017-04-27 2017-04-27
US62/490,677 2017-04-27

Publications (2)

Publication Number Publication Date
KR20180120570A KR20180120570A (ko) 2018-11-06
KR101998020B1 true KR101998020B1 (ko) 2019-07-08

Family

ID=64329668

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180029111A KR101998020B1 (ko) 2017-04-27 2018-03-13 그래프 생성 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101998020B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11132403B2 (en) * 2019-09-06 2021-09-28 Digital Asset Capital, Inc. Graph-manipulation based domain-specific execution environment
US10915578B1 (en) 2019-09-06 2021-02-09 Digital Asset Capital, Inc. Graph outcome determination in domain-specific execution environment
KR102378038B1 (ko) * 2019-11-29 2022-03-25 한국과학기술연구원 타겟 네트워크의 속성을 갖는 합성 네트워크를 얻기 위한 그래프 생성 장치 및 방법
KR102497362B1 (ko) * 2019-12-19 2023-02-10 한국전자통신연구원 다계층 지식베이스 시스템 및 그의 처리 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009116844A (ja) * 2007-10-19 2009-05-28 Nec Corp 社会ネットワーク構造モデルを算出する電子計算機及びプログラム
KR100939156B1 (ko) * 2001-11-23 2010-01-28 엔엑스피 비 브이 하나의 패스로 다중 출력 이미지들을 제공하기 위한 신호 처리 장치 및 tv 장치
KR101717230B1 (ko) * 2015-12-30 2017-03-16 성균관대학교산학협력단 재귀 오토인코더 기반 문장 벡터 모델링을 이용하는 문서 요약 방법 및 문서 요약 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130038903A (ko) * 2010-07-06 2013-04-18 내셔날 쳉쿵 유니버시티 알고리즘의 고유 병렬화의 정량화 및 분석 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100939156B1 (ko) * 2001-11-23 2010-01-28 엔엑스피 비 브이 하나의 패스로 다중 출력 이미지들을 제공하기 위한 신호 처리 장치 및 tv 장치
JP2009116844A (ja) * 2007-10-19 2009-05-28 Nec Corp 社会ネットワーク構造モデルを算出する電子計算機及びプログラム
KR101717230B1 (ko) * 2015-12-30 2017-03-16 성균관대학교산학협력단 재귀 오토인코더 기반 문장 벡터 모델링을 이용하는 문서 요약 방법 및 문서 요약 시스템

Also Published As

Publication number Publication date
KR20180120570A (ko) 2018-11-06

Similar Documents

Publication Publication Date Title
KR101998020B1 (ko) 그래프 생성 방법 및 장치
Park et al. TrillionG: A trillion-scale synthetic graph generator using a recursive vector model
US10593080B2 (en) Graph generating method and apparatus
US10223437B2 (en) Adaptive data repartitioning and adaptive data replication
Hong et al. MultiGraph: Efficient graph processing on GPUs
Basak et al. Accelerating Bayesian network parameter learning using Hadoop and MapReduce
Hamann et al. I/O-efficient generation of massive graphs following the LFR benchmark
US10977280B2 (en) Systems and methods for memory optimization interest-driven business intelligence systems
Hu et al. Output-optimal massively parallel algorithms for similarity joins
Date et al. Collaborative (cpu+ gpu) algorithms for triangle counting and truss decomposition on the minsky architecture: Static graph challenge: Subgraph isomorphism
Penschuck et al. Recent advances in scalable network generation
Lee et al. MRDataCube: Data cube computation using MapReduce
Hu et al. Approximation with error bounds in spark
Bender et al. Online List Labeling: Breaking the Barrier
Liu et al. A multiscale semi-smooth Newton method for optimal transport
Zhou et al. Clustering analysis in large graphs with rich attributes
Lu et al. An improved k-means distributed clustering algorithm based on spark parallel computing framework
Yaşar et al. On symmetric rectilinear matrix partitioning
US11520834B1 (en) Chaining bloom filters to estimate the number of keys with low frequencies in a dataset
Guzun et al. A two-phase mapreduce algorithm for scalable preference queries over high-dimensional data
Abdolazimi et al. Connected components of big graphs in fixed mapreduce rounds
CN111240988B (zh) 一种面向非等值连接负载的数据生成方法及生成系统
Chiu et al. In-memory query system for scientific dataseis
Yuan et al. Big RDF Data Storage, Computation, and Analysis: A Strawman's Arguments
Zhao et al. A multidimensional OLAP engine implementation in key-value database systems

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