KR101989029B1 - 복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법 - Google Patents

복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법 Download PDF

Info

Publication number
KR101989029B1
KR101989029B1 KR1020170169555A KR20170169555A KR101989029B1 KR 101989029 B1 KR101989029 B1 KR 101989029B1 KR 1020170169555 A KR1020170169555 A KR 1020170169555A KR 20170169555 A KR20170169555 A KR 20170169555A KR 101989029 B1 KR101989029 B1 KR 101989029B1
Authority
KR
South Korea
Prior art keywords
node
indicator vector
graph
nodes
threads
Prior art date
Application number
KR1020170169555A
Other languages
English (en)
Inventor
김상욱
조용연
장명환
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020170169555A priority Critical patent/KR101989029B1/ko
Application granted granted Critical
Publication of KR101989029B1 publication Critical patent/KR101989029B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Landscapes

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

Abstract

복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법을 개시한다. 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법은 그래프 엔진이 복수의 쓰레드를 이용하여 다수의 노드로 구성된 네트워크에 대응되는 그래프에 대하여 동작하는 방법에 있어서, 상기 복수의 쓰레드 각각에 대하여, 상기 다수의 노드 중 하나인 기준노드 및 상기 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당하는 단계; 상기 복수의 쓰레드 각각을 이용하여 상기 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행하는 단계; 및 상기 그래프 알고리즘의 수행 결과에 기초하여, 상기 노드집합 각각에 포함된 노드의 속성값(attribute)을 갱신하는 단계를 포함한다.

Description

복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법{GRAPH ENGINE USING MULTI-THREAD AND OPERATING METHOD THEREOF}
본 발명은 복수의 쓰레드를 이용하여 다수의 노드를 포함하는 네트워크에 대응되는 그래프에 대하여 그래프 알고리즘을 수행하는 방법 및 그 방법이 적용된 그래프 엔진에 관한 것이다.
현실 세계의 그래프들은 power-law degree distribution을 따르는 특징을 갖는다. 즉, 일부 노드는 매우 높은 degree를 갖는 반면 대부분의 노드는 낮은 degree를 갖는다. 그러나, 기존 그래프 엔진들은 이러한 특성을 따르는 현실 세계의 그래프가 아닌 각 노드의 degree가 균등하게 분포된 그래프들에 초점을 맞추어 동작하도록 설계되었다.
이로 인하여, 첫 번째로, 쓰레드(thread) 간의 불균등한 작업량 분배가 발생할 수 있다. 그래프 알고리즘은 반복적인(iterative) 알고리즘으로써 반복(iteration) 단위로 주어진 노드들을 처리한다. 이때, 기존 그래프 엔진들의 경우, 각 쓰레드는 각 노드와 이와 인접한 노드들에 대해서 주어진 임무(job)를 수행한다. 즉, 각 쓰레드가 노드 단위의 작업량을 갖는다. 그러나, 현실 세계 그래프내의 노드들의 degree는 동일하지 않으며 이들의 편차는 매우 크다. 따라서 매 반복마다 각 쓰레드에게 할당된 작업량의 크기도 다르며 편차가 매우 클 수 있다. 그리고 이는 결국 그래프 엔진의 성능을 저하로 이어질 수 있다.
두 번째로, 그래프 엔진이 매 반복마다 전체 노드 리스트(indicator vector)를 스캔하여 처리해야 할 노드들을 선별하는 비효율이 발생할 수 있다. 현실 세계 그래프에서 넓이우선탐색(breadth first search)과 같이 매 반복마다 일부의 노드에 접근해야 하는 알고리즘을 수행하는 경우, 초기 반복에서 대부분의 노드에 대한 접근이 완료되고, 대부분 반복에서는 극히 일부의 노드만을 접근하는 경향이 있다. 이때, 극히 일부의 노드를 확인하기 위해서 indicator vector를 매 반복마다 전체 스캔하는 것은 낭비일 수 있다. 만약 그래프 내에서 노드의 수가 증가하거나 반복의 수가 증가할수록 indicator vector의 스캔 비용은 증가하고, 이 역시 그래프 엔진의 성능 저하로 이어질 수 있다.
따라서, 쓰레드 간의 작업량 불균형 및 매 반복마다 전체 노드 리스트를 스캔하는 비효율을 최소화할 수 있는 그래프 엔진의 동작 방법 및 그 방법이 적용된 그래프 엔진에 대한 필요성이 대두되고 있다.
관련 선행기술로는 대한민국 공개특허공보 제10-2015-0069438호(발명의 명칭: 소셜 네트워크 데이터의 연관관계를 제공하는 장치 및 그 방법, 공개일자: 2015년 6월 23일)가 있다.
본 발명은 복수의 쓰레드 각각의 작업량을 균등하게 유지하도록 함으로써, 반복적으로 수행되는 그래프 알고리즘의 효율성을 향상시키는 그래프 엔진의 동작 방법 및 그 방법이 적용된 그래프 엔진을 제공하고자 한다.
또한, 본 발명은 매 반복마다 전체 노드 리스트에서 변경된 노드를 스캔해야 하는 비효율 문제를 최소화할 수 있는 그래프 엔진의 동작 방법 및 그 방법이 적용된 그래프 엔진을 제공하고자 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법은 그래프 엔진이 복수의 쓰레드를 이용하여 다수의 노드로 구성된 네트워크에 대응되는 그래프에 대하여 동작하는 방법에 있어서, 상기 복수의 쓰레드 각각에 대하여, 상기 다수의 노드 중 하나인 기준노드 및 상기 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당하는 단계; 상기 복수의 쓰레드 각각을 이용하여 상기 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행하는 단계; 및 상기 그래프 알고리즘의 수행 결과에 기초하여, 상기 노드집합 각각에 포함된 노드의 속성값(attribute)을 갱신하는 단계를 포함한다.
바람직하게는, 상기 다수의 노드 각각에 대해 상기 그래프 알고리즘의 수행 필요 여부를 나타내는 제1 인디케이터벡터와 상기 다수의 노드를 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 상기 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 나타내는 제2 인디케이터벡터에 기초하여, 상기 그래프 알고리즘 수행의 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별하는 단계를 더 포함하고, 상기 노드집합을 할당하는 단계는 상기 적어도 하나의 갱신대상노드를 상기 기준노드로 할 수 있다.
바람직하게는, 상기 제2 인디케이터벡터에 기초하여, 계층적 구조로 구성되는 제3 인디케이터벡터 내지 제N 인디케이터벡터(단, N은 3이상)가 생성될 때, 상기 적어도 하나의 갱신대상노드를 선별하는 단계는 상기 제3 인디케이터벡터 내지 상기 제N 인디케이터벡터에 더 기초하는 것을 특징으로 하는 복수의 쓰레드를 이용할 수 있다.
바람직하게는, 상기 속성값이 갱신된 노드에 기초하여, 상기 제1 인디케이터벡터 내지 상기 제N 인디케이터벡터를 재설정하는 단계를 더 포함할 수 있다.
바람직하게는, 상기 적어도 하나의 갱신대상노드를 선별하는 단계는 상기 제2 인디케이터벡터에서 상기 복수의 노드그룹 중 상기 그래프 알고리즘의 수행이 필요한 노드를 포함하는 적어도 하나의 선별노드그룹을 선별하는 단계; 및 상기 제1 인디케이터벡터에서 상기 적어도 하나의 선별노드그룹 각각에 포함된 노드 중에서 상기 그래프 알고리즘의 수행이 필요한 적어도 하나의 노드로 상기 적어도 하나의 갱신대상노드를 선별하는 단계를 포함할 수 있다.
또한, 상기 과제를 해결하기 위한 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진은 복수의 쓰레드를 이용하여 다수의 노드로 구성된 네트워크에 대응되는 그래프에 대하여 동작하는 그래프 엔진에 있어서, 상기 복수의 쓰레드 각각에 대하여, 상기 다수의 노드 중 하나인 기준노드 및 상기 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당하는 할당부; 상기 복수의 쓰레드 각각을 이용하여 상기 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행하는 수행부; 및 상기 그래프 알고리즘의 수행 결과에 기초하여, 상기 노드집합 각각에 포함된 노드의 속성값을 갱신하는 갱신부를 포함한다.
바람직하게는, 상기 다수의 노드 각각에 대해 상기 그래프 알고리즘의 수행 필요 여부를 나타내는 제1 인디케이터벡터와 상기 다수의 노드를 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 상기 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 나타내는 제2 인디케이터벡터에 기초하여, 상기 그래프 알고리즘 수행의 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별하는 선별부를 더 포함하고, 상기 할당부는 상기 적어도 하나의 갱신대상노드를 상기 기준노드로 할 수 있다.
바람직하게는, 상기 제2 인디케이터벡터에 기초하여, 계층적 구조로 구성되는 제3 인디케이터벡터 내지 제N 인디케이터벡터(단, N은 3이상)가 생성될 때, 상기 선별부는 상기 제3 인디케이터벡터 내지 상기 제N 인디케이터벡터에 더 기초할 수 있다.
바람직하게는, 상기 속성값이 갱신된 노드에 기초하여, 상기 제1 인디케이터벡터 내지 상기 제N 인디케이터벡터를 재설정하는 재설정부를 더 포함할 수 있다.
바람직하게는, 상기 선별부는 상기 제2 인디케이터벡터에서 상기 복수의 노드그룹 중 상기 그래프 알고리즘의 수행이 필요한 노드를 포함하는 적어도 하나의 선별노드그룹을 선별하고, 상기 제1 인디케이터벡터에서 상기 적어도 하나의 선별노드그룹 각각에 포함된 노드 중에서 상기 그래프 알고리즘의 수행이 필요한 적어도 하나의 노드로 상기 적어도 하나의 갱신대상노드를 선별할 수 있다.
본 발명의 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법 및 그 방법이 적용된 그래프 엔진은 그 복수의 쓰레드 각각의 작업량을 균등하게 유지하도록 함으로써, 반복적으로 수행되는 그래프 알고리즘의 효율성을 향상시키는 효과가 있다.
또한, 본 발명의 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법 및 그 방법이 적용된 그래프 엔진은 계층적으로 구성된 인디케이터벡터(indicator vector)를 이용함으로써, 매 반복마다 전체 노드 리스트에서 변경된 노드를 스캔해야 하는 비효율 문제를 최소화할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 다른 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진을 설명하기 위한 블록도이다.
도 4는 본 발명의 다른 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진을 설명하기 위한 블록도이다.
도 5는 본 발명의 일 실시예에 따른 복수의 쓰레드의 동작을 설명하기 위하여 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 계층적 구조의 인디케이터 벡터를 설명하기 위하여 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법을 설명하기 위한 흐름도이다.
여기서, 그래프 엔진은 복수의 쓰레드를 이용하여 다수의 노드를 포함하는 네트워크에 대응되는 그래프에 대하여 소정의 그래프 알고리즘을 수행하는 장치일 수 있다. 또한, 그래프 알고리즘은 노드와 링크로 구성된 네트워크에서 그래프에 관한 문제를 해결하기 위해 이용되는 알고리즘일 수 있다. 예컨대, 추천 문제(recommendation problem)에서 이용하는 ALS(alternating least squares) 알고리즘이 그래프 알고리즘에 해당할 수 있다. 또한, 그래프 엔진은 CPU 및 메모리장치 등을 포함하는 컴퓨터, 서버, 스마트폰 및 태블릿 등에 탑재되어 동작할 수 있다.
단계 S110에서는, 그래프 엔진이 복수의 쓰레드 각각에 대하여, 네트워크에 포함된 다수의 노드 중 하나인 기준노드 및 그 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당한다.
여기서, 쓰레드(thread)는 컴퓨터 프로그램 수행 시 프로세스(process) 내부에 존재하는 일련의 실행 코드이다. 일반적으로 컴퓨터에서는 프로세스가 아니라 쓰레드가 실제 컴퓨터 프로그램의 작업을 수행한다. 또한, 하나의 프로세스에 복수의 쓰레드가 동시에 수행되는 멀티쓰레딩(multi-threading)의 구현이 가능한다.
또한, 네트워크는 다수의 노드(node)를 포함하고, 그 노드들 간의 관계에 따라 링크(link)로 연결한 구조를 의미한다. 예컨대, 소셜네트워크서비스(SNS)에 대응되는 네트워크가 존재한다면, 그 네트워크에서는 다수의 사용자 각각이 노드가 되고, 그 사용자들 간의 관계를 링크로 연결하여 나타낼 수 있다.
이때, 기준노드는 네트워크에 포함된 다수의 노드 중에서 임의의 노드일 수 있다. 만일 최초로 그 네트워크에 대하여 그래프 알고리즘을 수행할 경우, 그 다수의 노드 모두가 기준노드가 될 수 있다. 또한, 그 네트워크에 포함된 일부 노드에 변경 사항이 발생한 경우, 그 변경 사항이 발생한 노드가 기준노드가 될 수 있다. 또한, 인접노드는 기준노드와 네트워크 상에서 소정의 관계가 있는 노드일 수 있다.
예컨대, SNS의 사용자 A가 기준노드일 때, 사용자 A의 SNS 상의 친구인 사용자 B, C, D가 인접노드일 수 있다. 이때, 기준노드와 인접노드로 구성된 노드조합은 {A, B, C, D}일 수 있다.
또한, 노드집합은 이러한 노드조합을 전부 또는 일부 포함할 수 있으며, 그 노드집합 내부에 포함된 노드의 총 개수가 소정의 범위에 포함되도록 구성될 수 있다. 즉, 노드집합은 복수의 노드집합을 포함할 수 있으며, 노드조합에 포함된 노드의 개수가 소정의 범위를 넘어서는 경우에는, 그 노드조합에 포함된 노드 중 일부만을 포함할 수 있다.
보다 구체적으로, 노드집합에 포함되는 노드 개수의 범위가 55개 이상 60개 이하로 설정되어 있다면, 노드집합에 2개의 노드조합이 포함되어 있을 때, 그 2개의 노드조합 각각에 포함된 노드 개수의 합은 55개 이상이면서 60개 이하가 되도록 구성될 수 있다. 또한, 노드집합에 포함되는 노드 개수의 범위가 55개 이상 60개 이하로 설정되어 있다면, 어떤 하나의 노드조합에 80개의 노드가 포함되어 있을 때, 그 노드조합에 포함된 노드 중 60개가 하나의 노드집합에 포함되고, 나머지 20개는 다른 노드집합에 포함될 수 있다.
단계 S120에서는, 그래프 엔진이 그 복수의 쓰레드 각각을 이용하여 그 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행한다.
이때, 복수의 쓰레드 각각에 대하여 노드집합이 할당되어 있으므로, 그래프 엔진이 그 복수의 쓰레드 각각이 동시에 멀티쓰레딩 방식으로 동작하면서, 각각에 대하여 할당된 노드집합에 대하여 그 그래프 알고리즘을 수행하도록 함으로써, 보다 효율적으로 동작할 수 있다.
한편, 그래프 엔진은 노드집합에 포함된 노드조합, 그리고 그 노드조합에 포함된 기준노드와 인접노드의 정보를 이용하여, 노드집합에 포함된 노드들에 대하여 그래프 알고리즘을 적용하는 작업을 수행할 수 있다.
예컨대, 도 5를 참조하면, 쓰레드 1, 2, 3, 4가 각각 동일한 개수인 6개의 노드에 대하여 그래프 알고리즘을 수행하는 것을 알 수 있으며, 이와 같이 각각의 쓰레드가 동일한 개수의 노드를 처리함으로써 각각의 쓰레드가 균등한 작업량을 가질 수 있게 된다. 이때, 회색으로 표시된 노드는 기준노드이고, 흰색으로 표시된 노드는 인접노드이며, 그래프 엔진은 하나의 기준노드와 관련된 적어도 하나의 인접노드 각각에 대하여 그 소정의 그래프 알고리즘을 수행할 수 있다.
마지막으로 단계 S130에서는, 그래프 엔진이 그 그래프 알고리즘의 수행 결과에 기초하여, 그 노드집합 각각에 포함된 노드의 속성값(attribute)을 갱신한다.
즉, 그래프 엔진이 네트워크에 포함된 다수의 노드에 대하여 기준노드와 인접노드로 분류한 후, 그 네트워크에 대응되는 그래프에 포함된 노드 각각에 대하여 그 그래프 알고리즘을 수행한 결과를 이용하여 속성값을 갱신할 수 있다.
예컨대, 그래프 엔진이 SNS의 사용자 A가 기준노드이고, 사용자 A의 친구인 사용자 B, C, D가 인접노드일 때, 사용자 A를 기준으로 하여 사용자 B, C, D 각각에 대하여 그 그래프 알고리즘을 수행한 결과를 사용자 B, C, D 각각에 대한 속성값으로 산출하고, 메모리 영역에 존재하는 버퍼(buffer)에 그 속성값을 각각 저장할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 그래프 엔진의 동작 방법은 쓰레드가처리하는 노드의 개수를 소정의 범위 내에서 조절함으로써 복수의 쓰레드 각각의 작업량을 균등하게 유지할 수 있어, 반복적으로 수행되는 그래프 엔진의 그래프 알고리즘 수행 효율성을 향상시킬 수 있는 효과가 있다.
도 2는 본 발명의 다른 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법을 설명하기 위한 흐름도이다.
여기서, 도 6를 참조하면, 제1 인디케이터벡터는 네트워크에 포함된 그 다수의 노드 각각에 대해 그래프 알고리즘의 수행 필요 여부를 나타내는 벡터이고, 제2 인디케이터벡터는 그 다수의 노드를 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 나타내는 벡터이다.
예컨대, 네트워크에 포함된 노드의 개수가 총 10,000개일 때, 제1 인디케이터벡터는 그 10,000개의 노드 각각에 대한 그래프 알고리즘의 수행 필요 여부를 나타내는 총 10,000개의 벡터값을 0 또는 1로 포함할 수 있다. 이때, 0은 수행 필요가 없는 것을, 1은 수행 필요가 있는 것을 나타낼 수 있다.
한편, 제2 인디케이터벡터에 포함된 벡터값은 제1 인디케이터벡터에 포함된 다수의 노드에 대한 벡터값을 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 0 또는 1로 나타낼 수 있다.
보다 구체적으로, 제1 인디케이터벡터에 포함된 10,000개의 노드에 대한 백터값을 100개의 그룹으로 분할하여 100개의 노드를 포함하는 노드그룹을 생성하고, 제2 인디케이터벡터에 포함된 벡터값은 그 100개의 노드그룹 각각에 대하여 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 0 또는 1로 나타낼 수 있다.
이때, 제2 인디케이터벡터에 포함된 벡터값은 각각의 노드그룹에 포함된 복수의 노드 중에서 단 한 개의 노드라도 그래프 알고리즘의 수행이 필요한 경우에 1로 설정될 수 있으며, 그 복수의 노드가 모두 그래프 알고리즘의 수행이 필요없는 경우에 0으로 설정될 수 있다.
단계 S210에서는, 그래프 엔진이 그 제1 인디케이터벡터 및 제2 인디케이터벡터에 기초하여, 그래프 알고리즘 수행의 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별한다.
즉, 그래프 엔진은 제2 인디케이터벡터의 벡터값과 제1 인디케이터벡터의 벡터값을 이용하여, 그래프 알고리즘의 수행이 필요한 노드를 검출할 수 있다. 그리고, 그래프 엔진은 그 그래프 알고리즘의 수행이 필요한 노드를 적어도 하나의 갱신대상노드로 선별할 수 있다.
이때, 그래프 엔진에 구현되어 있는 그래프 알고리즘은 반복되는(iterative) 알고리즘으로써, 각 반복(iteration) 단위로 주어진 노드에 대하여 그래프 알고리즘을 수행할 수 있다. 따라서, 각 반복에서 처리해야 하는 대상이 되는 노드의 개수를 줄일 수 있다면, 리소스를 절약할 수 있는 효과가 있다. 따라서, 그래프 엔진은 그래프 알고리즘의 수행 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별할 필요가 있다.
다른 실시예에서는, 그래프 엔진이 제2 인디케이터벡터에서 적어도 하나의 선별노드그룹을 선별한 후, 적어도 하나의 갱신대상노드를 선별할 수 있다.
단계 S213에서는, 그래프 엔진이 제2 인디케이터벡터에서 복수의 노드그룹 중 그래프 알고리즘의 수행이 필요한 노드를 포함하는 적어도 하나의 선별노드그룹을 선별한다.
예컨대, 그래프 엔진이 제2 인디케이터벡터의 100개의 벡터값에 대응되는 100개의 노드그룹 중에서, 그래프 알고리즘의 수행이 필요한 노드의 포함 여부가 포함(1)으로 설정된 1개의 선별노드그룹을 선별할 수 있다.
단계 S216에서는, 그래프 엔진이 제1 인디케이터벡터에서 그 적어도 하나의 선별노드그룹 각각에 포함된 노드 중에서 그래프 알고리즘의 수행이 필요한 적어도 하나의 노드로 적어도 하나의 갱신대상노드를 선별한다.
예컨대, 그래프 엔진이 제1 인디케이터벡터의 10,000개의 노드에 대응되는 벡터값 중에서, 그 1개의 선별노드그룹에 포함된 100개 노드의 벡터값을 조사하여 그래프 알고리즘의 수행 필요 여부가 필요(1)로 설정된 적어도 하나의 갱신대상노드를 선별할 수 있다.
단계 S220에서는, 그래프 엔진이 복수의 쓰레드 각각에 대하여, 네트워크에 포함된 다수의 노드 중 하나인 기준노드 및 그 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 생성한다.
이때, 그래프 엔진은 그 적어도 하나의 갱신대상노드를 노드조합을 구성하는 기준노드로 설정할 수 있다. 한편, 그 적어도 하나의 갱신대상노드를 기준노드로 설정하는 이유는 네트워크에 포함된 모든 노드를 기준노드로 하는 것 보다, 갱신대상노드만을 기준노드로 하여 그래프 알고리즘을 수행하는 것이 그래프 알고리즘의 수행 횟수를 줄일 수 있어 보다 효율적이기 때문이다.
단계 S230에서는, 그래프 엔진이 그 복수의 쓰레드 각각을 이용하여 그 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행한다.
마지막으로 단계 S240에서는, 그래프 엔진이 그 그래프 알고리즘의 수행 결과에 기초하여, 그 노드집합 각각에 포함된 노드의 속성값을 설정한다.
다른 실시예에서는, 제2 인디케이터벡터에 기초하여, 계층적 구조로 구성되는 제3 인디케이터벡터 내지 제N 인디케이터벡터(단, N은 3이상)가 생성될 때, 그래프 엔진이 그 제3 인디케이터벡터 내지 제N 인디케이터벡터에 더 기초하여 적어도 하나의 갱신대상노드를 선별할 수 있다.
즉, 네트워크에 포함된 노드의 개수가 매우 많은 경우, 제2 인디케이터벡터를이용하여 생성된 제3 인디케이터벡터를 더 하고, 그래프 엔진이 제1 인디케이터벡터 내지 제3 인디케이터벡터에 기초하여 적어도 하나의 갱신대상노드를 선별할 수 있다.
나아가, 그 제3 인디케이터벡터를 이용하여 제4 인디케이터벡터를 생성하고, 그 제4 인디케이터벡터를 이용하여 제5 인디케이터벡터를 생성하는 방식으로, 계층적인 구조를 가지도록 하여 제N 인디케이터벡터까지 생성함으로써, 그래프 엔진이 그 N개의 인디케이터벡터를 적어도 하나의 갱신대상노드를 선별하는데 이용할 수 있다.
예컨대, 제1 인디케이터벡터에 포함된 벡터값이 1,000,000개(즉, 노드가 1,000,000개)이고, 제2 인디케이터벡터에 포함된 벡터값이 10,000개(즉, 노드그룹이 10,000개)일 때, 제3 인디케이터벡터는 그 10,000개의 노드그룹 중에서 100개씩의 노드그룹에 대한 그래프 알고리즘의 수행이 필요한 노드를 포함하는 노드 그룹의 존재 여부를 나타내는 100개의 제2 노드그룹에 대한 벡터값을 포함하도록 계층적으로 구성될 수 있다.
이때, 인디케이터벡터는 반복적으로 수행되는 그래프 알고리즘의 효율성을 고려하여 계속적으로 추가하여 계층적으로 생성할 수 있으며, 필요에 따라 임의의 개수의 계층을 구성하도록 인디케이터벡터를 생성할 수 있다.
또 다른 실시예에서는, 그래프 엔진이 그 속성값이 갱신된 노드에 기초하여, 제1 인디케이터벡터 내지 제N 인디케이터벡터를 재설정할 수 있다.
예컨대, 그래프 엔진은 단계 S240에서 복수의 노드의 속성값이 갱신된 후, 제1 인디케이터벡터 내지 제N 인디케이터벡터의 벡터값을 모두 0으로 초기화할 수 있다. 그리고, 초기화된 제1 인디케이터벡터에서 단계 S240에서 속성값이 갱신된 노드인 인접노드에 대응되는 벡터값을 1로 설정할 수 있다. 그 뒤, 그 제1 인디케이터벡터를 이용하여 제2 인디케이터벡터부터 제N 인디케이터벡터까지를 순차적으로 재설정할 수 있다. 또한, 그래프 엔진은 그 재설정된 제1 인디케이터벡터 내지 제N 인디케이터벡터를 이용하여 단계 S210부터 시작되는 과정을 반복할 수 있으며, 결과적으로 연쇄적인 노드의 속성값을 갱신을 수행할 수 있다.
보다 구체적으로, 그래프 엔진이 그 속성값이 갱신된 노드가 특정한 기준노드와 연결된 적어도 하나의 인접노드일 때, 그 적어도 하나의 인접노드 각각을 새로운 기준노드로 하여 그 새로운 기준노드와 연결된 적어도 하나의 인접노드의 속성값을 다시 갱신하는 과정을 반복적으로 수행함으로써, 연쇄적으로 노드의 속성값을 갱신할 수 있다.
이와 같이, 본 발명의 다른 실시예에 따른 그래프 엔진의 동작 방법은 계층적으로 구성된 인디케이터벡터를 이용함으로써, 매 반복마다 전체 노드 리스트에서 그래프 알고리즘의 수행이 필요한 노드를 스캔해야 하는 비효율 문제를 최소화할 수 있는 효과가 있다.
도 3은 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진을 설명하기 위한 블록도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진은 할당부(310), 수행부(320) 및 갱신부(330)를 포함한다.
할당부(310)는 복수의 쓰레드 각각에 대하여, 네트워크에 포함된 다수의 노드 중 하나인 기준노드 및 그 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당한다.
수행부(320)는 그 복수의 쓰레드 각각을 이용하여 그 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행한다.
갱신부(330)는 그 그래프 알고리즘의 수행 결과에 기초하여, 그 노드집합 각각에 포함된 노드의 속성값(attribute)을 갱신한다.
도 4는 본 발명의 다른 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진을 설명하기 위한 블록도이다.
도 4를 참조하면, 본 발명의 다른 실시예에 따른 복수의 쓰레드를 이용하는 그래프 엔진은 할당부(310), 수행부(320), 갱신부(330), 선별부(340) 및 재설정부(350)를 포함한다.
할당부(310)는 복수의 쓰레드 각각에 대하여, 네트워크에 포함된 다수의 노드 중 하나인 기준노드 및 그 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당한다.
수행부(320)는 그 복수의 쓰레드 각각을 이용하여 그 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대하여 소정의 그래프 알고리즘을 수행한다.
갱신부(330)는 그 그래프 알고리즘의 수행 결과에 기초하여, 그 노드집합 각각에 포함된 노드의 속성값(attribute)을 갱신한다.
선별부(340)는 제1 인디케이터벡터(401) 및 제2 인디케이터벡터(402)에 기초하여, 그래프 알고리즘 수행의 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별한다.
이때, 제1 인디케이터벡터(401)는 네트워크에 포함된 그 다수의 노드 각각에 대해 그래프 알고리즘의 수행 필요 여부를 나타내는 벡터이고, 제2 인디케이터벡터(402)는 그 다수의 노드를 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 나타내는 벡터이다. 또한, 할당부(310)는 그 적어도 하나의 갱신대상노드를 기준노드로 하여 노드집합을 할당할 수 있다.
다른 실시예에서는, 선별부(340)는 제2 인디케이터벡터(402)에서 복수의 노드그룹 중 그래프 알고리즘의 수행이 필요한 노드를 포함하는 적어도 하나의 선별노드그룹을 선별하고, 제1 인디케이터벡터(401)에서 그 적어도 하나의 선별노드그룹 각각에 포함된 노드 중에서 그래프 알고리즘의 수행이 필요한 적어도 하나의 노드로 상기 적어도 하나의 갱신대상노드를 선별할 수 있다.
또 다른 실시예에서는, 제2 인디케이터벡터(402)에 기초하여, 계층적 구조로 구성되는 제3 인디케이터벡터(미도시) 내지 제N 인디케이터벡터(400+N, 단, N은 3이상)가 생성될 때, 선별부(340)는 제3 인디케이터벡터(미도시) 내지 제N 인디케이터벡터(400+N)에 더 기초할 수 있다.
마지막으로, 재설정부(350)는 그 속성값이 갱신된 노드에 기초하여, 그 제1 인디케이터벡터(401) 내지 제N 인디케이터벡터(400+N)를 재설정한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (10)

  1. 그래프 엔진이 복수의 쓰레드를 이용하여 다수의 노드로 구성된 네트워크에 대응되는 그래프에 대하여 동작하는 방법에 있어서,
    상기 복수의 쓰레드 각각에 대하여, 상기 다수의 노드 중 하나인 기준노드 및 상기 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당하는 단계;
    상기 복수의 쓰레드 각각을 이용하여 상기 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대응되는 그래프로부터 소정의 결과를 도출하는 그래프 알고리즘을 수행하는 단계; 및
    상기 그래프 알고리즘의 수행 결과에 기초하여, 상기 노드집합 각각에 포함된 노드의 속성값(attribute)을 갱신하는 단계
    를 포함하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법.
  2. 제1항에 있어서,
    상기 다수의 노드 각각에 대해 상기 그래프 알고리즘의 수행 필요 여부를 나타내는 제1 인디케이터벡터와 상기 다수의 노드를 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 상기 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 나타내는 제2 인디케이터벡터에 기초하여, 상기 그래프 알고리즘 수행의 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별하는 단계
    를 더 포함하고,
    상기 노드집합을 할당하는 단계는
    상기 적어도 하나의 갱신대상노드를 상기 기준노드로 하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법.
  3. 제2항에 있어서,
    상기 제2 인디케이터벡터에 기초하여, 계층적 구조로 구성되는 제3 인디케이터벡터 내지 제N 인디케이터벡터(단, N은 3이상)가 생성될 때,
    상기 적어도 하나의 갱신대상노드를 선별하는 단계는
    상기 제3 인디케이터벡터 내지 상기 제N 인디케이터벡터에 더 기초하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법.
  4. 제3항에 있어서,
    상기 속성값이 갱신된 노드에 기초하여, 상기 제1 인디케이터벡터 내지 상기 제N 인디케이터벡터를 재설정하는 단계
    를 더 포함하는 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법.
  5. 제2항에 있어서,
    상기 적어도 하나의 갱신대상노드를 선별하는 단계는
    상기 제2 인디케이터벡터에서 상기 복수의 노드그룹 중 상기 그래프 알고리즘의 수행이 필요한 노드를 포함하는 적어도 하나의 선별노드그룹을 선별하는 단계; 및
    상기 제1 인디케이터벡터에서 상기 적어도 하나의 선별노드그룹 각각에 포함된 노드 중에서 상기 그래프 알고리즘의 수행이 필요한 적어도 하나의 노드로 상기 적어도 하나의 갱신대상노드를 선별하는 단계
    를 포함하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진의 동작 방법.
  6. 복수의 쓰레드를 이용하여 다수의 노드로 구성된 네트워크에 대응되는 그래프에 대하여 동작하는 그래프 엔진에 있어서,
    상기 복수의 쓰레드 각각에 대하여, 상기 다수의 노드 중 하나인 기준노드 및 상기 기준노드와 연결된 적어도 하나의 인접노드로 구성되는 노드조합을 포함하며, 소정 범위의 노드 개수를 포함하는 노드집합을 할당하는 할당부;
    상기 복수의 쓰레드 각각을 이용하여 상기 복수의 쓰레드 각각에 대하여 할당된 노드집합에 대응되는 그래프로부터 소정의 결과를 도출하는 그래프 알고리즘을 수행하는 수행부; 및
    상기 그래프 알고리즘의 수행 결과에 기초하여, 상기 노드집합 각각에 포함된 노드의 속성값을 갱신하는 갱신부
    를 포함하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진.
  7. 제6항에 있어서,
    상기 다수의 노드 각각에 대해 상기 그래프 알고리즘의 수행 필요 여부를 나타내는 제1 인디케이터벡터와 상기 다수의 노드를 복수의 그룹으로 분할한 복수의 노드그룹 각각에 대해 상기 그래프 알고리즘의 수행이 필요한 노드의 포함 여부를 나타내는 제2 인디케이터벡터에 기초하여, 상기 그래프 알고리즘 수행의 대상이 되는 노드인 적어도 하나의 갱신대상노드를 선별하는 선별부
    를 더 포함하고,
    상기 할당부는
    상기 적어도 하나의 갱신대상노드를 상기 기준노드로 하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진.
  8. 제7항에 있어서,
    상기 제2 인디케이터벡터에 기초하여, 계층적 구조로 구성되는 제3 인디케이터벡터 내지 제N 인디케이터벡터(단, N은 3이상)가 생성될 때,
    상기 선별부는
    상기 제3 인디케이터벡터 내지 상기 제N 인디케이터벡터에 더 기초하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진.
  9. 제8항에 있어서,
    상기 속성값이 갱신된 노드에 기초하여, 상기 제1 인디케이터벡터 내지 상기 제N 인디케이터벡터를 재설정하는 재설정부
    를 더 포함하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진.
  10. 제7항에 있어서,
    상기 선별부는
    상기 제2 인디케이터벡터에서 상기 복수의 노드그룹 중 상기 그래프 알고리즘의 수행이 필요한 노드를 포함하는 적어도 하나의 선별노드그룹을 선별하고,
    상기 제1 인디케이터벡터에서 상기 적어도 하나의 선별노드그룹 각각에 포함된 노드 중에서 상기 그래프 알고리즘의 수행이 필요한 적어도 하나의 노드로 상기 적어도 하나의 갱신대상노드를 선별하는 것을 특징으로 하는 복수의 쓰레드를 이용하는 그래프 엔진.
KR1020170169555A 2017-12-11 2017-12-11 복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법 KR101989029B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170169555A KR101989029B1 (ko) 2017-12-11 2017-12-11 복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170169555A KR101989029B1 (ko) 2017-12-11 2017-12-11 복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법

Publications (1)

Publication Number Publication Date
KR101989029B1 true KR101989029B1 (ko) 2019-06-13

Family

ID=66847568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170169555A KR101989029B1 (ko) 2017-12-11 2017-12-11 복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법

Country Status (1)

Country Link
KR (1) KR101989029B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080012954A (ko) * 2005-06-07 2008-02-12 소니 가부시끼 가이샤 정보 처리 장치 및 정보 처리 방법, 화상 처리 장치 및화상 처리 방법, 및 컴퓨터 프로그램
JP2013101441A (ja) * 2011-11-08 2013-05-23 Yahoo Japan Corp グラフインデックス更新装置
JP2015156163A (ja) * 2014-02-21 2015-08-27 日本電信電話株式会社 クラスタリング装置、クラスタリング方法およびクラスタリングプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080012954A (ko) * 2005-06-07 2008-02-12 소니 가부시끼 가이샤 정보 처리 장치 및 정보 처리 방법, 화상 처리 장치 및화상 처리 방법, 및 컴퓨터 프로그램
JP2013101441A (ja) * 2011-11-08 2013-05-23 Yahoo Japan Corp グラフインデックス更新装置
JP2015156163A (ja) * 2014-02-21 2015-08-27 日本電信電話株式会社 クラスタリング装置、クラスタリング方法およびクラスタリングプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
김현철 외 1명. '스레드를 이용한 계층적 태스크 그래프(HTG)의 복합 노드 스케쥴링 기법'. 정보과학회논문지 : 시스템 및 이론 제29권 제7·8호, 2002.08., pp.445-455. *
조용연 외 2명. '실 세계 빅 그래프의 특징을 고려한 싱글 머신 기반 그래프 엔진'. 한국정보과학회 2017년 한국컴퓨터종합학술대회 논문집, 2017.06., p.1612.* *

Similar Documents

Publication Publication Date Title
Nagata et al. A new genetic algorithm for the asymmetric traveling salesman problem
Ɖurasević et al. Heuristic and metaheuristic methods for the parallel unrelated machines scheduling problem: a survey
Rahimian et al. A distributed algorithm for large-scale graph partitioning
US9465854B2 (en) In-database connectivity components analysis of data
Campos et al. Adaptive memory programming for matrix bandwidth minimization
US7664858B2 (en) Method for balancing load between processors in a multi-processor environment
CN109144498B (zh) 一种面向对象实例化任务的api自动推荐方法及装置
Peng et al. Vcolor: A practical vertex-cut based approach for coloring large graphs
KR101989029B1 (ko) 복수의 쓰레드를 이용하는 그래프 엔진 및 그 그래프 엔진의 동작 방법
EP3580676A1 (en) Sample-based multidimensional data cloning
Stastný et al. Traveling Salesman Problem optimization by means of graph-based algorithm
US9298505B2 (en) Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme
CN116304212A (zh) 一种数据处理系统、方法、设备及存储介质
Morán-Mirabal et al. Automatic tuning of GRASP with evolutionary path-relinking
Fan et al. Associated task scheduling based on dynamic finish time prediction for cloud computing
CN115883550A (zh) 任务处理方法、装置、电子设备、存储介质及程序产品
JP7396505B2 (ja) モデル生成プログラム、モデル生成方法及びモデル生成装置
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
CN112580296B (zh) 用于处理电路版图的方法、设备和存储介质
JP7424373B2 (ja) 分析装置、分析方法及び分析プログラム
Park et al. Gemma: reinforcement learning-based graph embedding and mapping for virtual network applications
CN112100446A (zh) 搜索方法、可读存储介质和电子设备
Bhol et al. Machine Learning as a Service Cloud Selection: An MCDM Approach for Optimal Decision Making
US20240134932A1 (en) Distributed matrix computation control method and apparatus supporting matrix fused operation
Pineda et al. An iterative local search algorithm for scheduling precedence-constrained applications on heterogeneous machines

Legal Events

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