KR102614966B1 - 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법 - Google Patents

대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법 Download PDF

Info

Publication number
KR102614966B1
KR102614966B1 KR1020210134711A KR20210134711A KR102614966B1 KR 102614966 B1 KR102614966 B1 KR 102614966B1 KR 1020210134711 A KR1020210134711 A KR 1020210134711A KR 20210134711 A KR20210134711 A KR 20210134711A KR 102614966 B1 KR102614966 B1 KR 102614966B1
Authority
KR
South Korea
Prior art keywords
vertex
distributed
vertices
function
computing system
Prior art date
Application number
KR1020210134711A
Other languages
English (en)
Other versions
KR20230051841A (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 KR1020210134711A priority Critical patent/KR102614966B1/ko
Publication of KR20230051841A publication Critical patent/KR20230051841A/ko
Application granted granted Critical
Publication of KR102614966B1 publication Critical patent/KR102614966B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)

Abstract

다양한 실시예들은 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법을 제공한다. 다양한 실시예들에 따르면, 컴퓨팅 시스템은, 복수의 버텍스들과 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 복수의 분산 노드들에 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하고, 함수 할당을 기반으로, 복수의 분산 노드들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하도록 구성될 수 있다.

Description

대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법{COMPUTING SYSTEM FOR SUBGRAPH AND REDUCE ALLOCATION IN GRAPH CODED DISTRIBUTED COMPUTING FOR COMMUNICATION LOAD REDUCTION, AND METHOD OF THE SAME}
다양한 실시예들은 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법에 관한 것이다.
최근 몇 년 동안 대규모 그래프 프로세스를 위한 분산 컴퓨팅은 페이지랭크(PageRank), 단일-소스 최단 경로(Single-source shortest path)와 같은 그래프 기반의 알고리즘의 확장을 가능케 해준다. 특히, 프리겔(Pregel), 파워-그래프(Power-Graph), 그래프랩(GraphLab)과 관련된 분산 크래프 컴퓨팅 프레임워크는, 대규모 연산이 맵(Map)과 리듀스(Reduce)의 2-단계 컴퓨팅으로 분할되는 일반적인 시스템으로서, 주목을 받고 있다. 특히, 이러한 분산 컴퓨팅 프레임워크는 통신 부하로 인해 전체 컴퓨팅 지연 시간에 지배적이고, 이러한 통신 부하를 완화시키기 위한 연구가 필요하다.
2-단계로 이루어진 분산 컴퓨팅 프레임워크는 서브그래프 할당(Subgraph allocation) 기법, 함수 할당(Reduce allocation) 기법, 부호화 전송 기법에 따라 통신 부하가 달라진다. 기존 연구는 서브그래프와 함수 할당이 그래프의 형태와 상관없이 이루어져왔고, 그에 따른 불필요한(redundant) 중간 연산 값 전송이 이루어져야 했다.
다양한 실시예들은, 그래프의 특성을 고려한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법을 제안한다.
다양한 실시예들은, 적은 수의 중간 연산 값 전달함으로써 대규모 그래프 연산의 효율성을 극대화시킬 수 있는 컴퓨팅 시스템 및 그의 방법을 제안한다.
다양한 실시예들은 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법을 제공한다.
다양한 실시예들에 따른 분산 컴퓨팅 시스템의 방법은, 복수의 버텍스들과 상기 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 상기 복수의 분산 노드들에 상기 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하는 단계, 및 상기 함수 할당을 기반으로, 상기 복수의 분산 노드들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하는 단계를 포함할 수 있다.
다양한 실시예들에 따른 분산 컴퓨팅 시스템은, 복수의 버텍스들과 상기 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 상기 복수의 분산 노드들에 상기 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하고, 상기 함수 할당을 기반으로, 상기 복수의 분산 노드들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하도록 구성될 수 있다.
다양한 실시예들에 따르면, 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 통해, 분산 컴퓨팅 시스템에서의 통신 부하가 최적화, 즉 최소화될 수 있다. 즉, 분산 컴퓨팅 시스템에서, 대규모 그래프 알고리즘 연산이 시간 효율적으로 처리될 수 있다. 이 때, 셔플링 과정에서 소비되는 실행 시간이 현저하게 절감될 수 있다.
도 1은 다양한 실시예들에 따른 분산 컴퓨팅 시스템의 구조를 도시하는 개략도이다.
도 2는 다양한 실시예들에 따른 분산 컴퓨팅 시스템의 분산 컴퓨팅 방법을 도시하는 순서도이다.
도 3은 다양한 실시예들에 따른 분산 컴퓨팅 시스템을 위한 컴퓨팅 장치의 내부 구성을 도시하는 블록도이다.
도 4는 다양한 실시예들에 따른 컴퓨팅 장치의 동작 방법을 도시하는 순서도이다.
도 5는 다양한 실시예들에 따른 분산 컴퓨팅 시스템에서의 그래프를 도시하는 예시도이다.
도 6는 도 4의 함수 할당을 결정하는 단계의 상세 구성들을 도시하는 순서도이다.
도 7은 다양한 실시예들에 따른 분산 컴퓨팅 시스템의 성능을 설명하기 위한 그래프들이다.
이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 설명된다.
이하에서는, 대규모 그래프 알고리즘 연산을 위한 그래프 기반 맵리듀스(graph-based MapReduce) 프레임워크의 효율적인 통신 방법을 위한 서브그래프 및 함수 할당 방법을 다룰 것이다. 분산 노드마다 할당된 서브그래프와 함수에 따라서 주고 받아야할(셔플링할) 중간값의 개수가 달라지기 때문에, 그래프 특성에 따른 유연한 할당 기법이 필요하다. 따라서, 다양한 실시예들에서는 통신 부하를 줄이기 위한 서브그래프 및 함수 할당 기법 설계를 제안한다.
도 1은 다양한 실시예들에 따른 분산 컴퓨팅 시스템(100)의 구조를 도시하는 개략도이다.
도 1을 참조하면, 분산 컴퓨팅 시스템(100)은 복수의 분산 노드(110)들을 포함할 수 있다. 분산 노드(110)들은 네트워크를 통해 연결되어, 네트워크를 통해 통신할 수 있다. 분산 노드(110)들은 복수의 입력 파일들로부터 복수의 출력 함수들을 계산할 수 있다.
이 때, 연산을 진행할 무방향 그래프(undirected graph)(G=(V,E))는 n 개의 버텍스(vertex)들의 세트 set)(V)와 엣지(edge)들의 세트(E)로 이루어질 수 있다. 그래프의 각 버텍스(i∈V)는 각 버텍스의 상태(state)와 적어도 하나의 이웃(neighborhood) 버텍스의 파라미터에 대한 내용을 갖는 파일(wi)을 저장하고 있을 수 있다. 각 버텍스(i∈V)의 적어도 하나의 이웃 버텍스가 저장하고 있는 파일들의 세트를 WN(i)={wj, j∈N(i)}로 나타내며, 여기서, 각 버텍스(i)의 이웃 버텍스 세트(neighborhood vertex set)를 N(i)={j∈V: (j,i)∈E}로 표시할 수 있다. 이를 통해, 총 K 개의 분산 노드(110)들은 n 개의 버텍스들에 있는 파일들을 활용하여 각 버텍스의 출력 함수(Φi, i∈V)를 계산할 수 있다. 각 분산 노드(110)는 총 m 개의 버텍스들을 저장할 수 있고, 버텍스들의 파일들의 세트는 Mk⊆{w1,...,wn}로 표현될 수 있다. 또한, 전체 버텍스들 대한 출력 함수들은 K 개의 분산 노드(110)들에 나누어서 할당될 수 있다. 여기서, 각 분산 노드(110)(k)에 할당된 출력 함수들의 세트가 Wk⊆{h1,...,hn}로 표현될 수 있다.
어떤 실시예들에서, 분산 노드(110)들은 맵리듀스(MapReduce) 모델을 통하여, 입력 파일들로부터 출력 함수들을 계산할 수 있다. 이 때, 각 버텍스(i∈V)에 대해, 두 단계의 맵(Map) 연산과 리듀스(Reduce) 연산을 통해서 원하는 결과가 얻어질 수 있다. 이에 따라, 분산 컴퓨팅 시스템(100)에서, 하기 [수학식 1]과 같은 결과가 획득될 수 있다.
도 2는 다양한 실시예들에 따른 분산 컴퓨팅 시스템(100)의 분산 컴퓨팅 방법을 도시하는 순서도이다. 여기서, 도 2는 맵리듀스 모델을 통한 분산 컴퓨팅 방법을 나타낸다.
도 2를 참조하면, 분산 노드(110)들은 210 단계에서, 분산 노드(110)들의 각각에 저장된 버텍스들의 파일들에 대해 맵 연산을 수행하여, 중간값들을 출력할 수 있다. 예를 들면, 각 분산 노드(110)는 저장된 적어도 하나의 파일(wi∈Mk)에 대해 맵 연산을 수행하여, 적어도 하나의 이웃 버텍스(N(i))에 대한 중간값을 출력할 수 있다. 그리고, 각 분산 노드(110)는 출력되는 중간값을 저장할 수 있다.
다음으로, 분산 노드(110)들은 220 단계에서, 중간값들을 셔플링할 수 있다. 분산 컴퓨팅 시스템(100)에서는, 대부분의 실행 시간이 셔플링 과정에서 소비된다. 이 때, 각 분산 노드(110)는 저장된 중간값을 다른 분산 노드들에 전송할 수 있다. 이를 통해, 각 분산 노드(110)는 저장되지 않은 적어도 하나의 입력 파일에 대한 중간값(vi,j: hi∈Wk, j∈N(i), jMk))을 획득할 수 있다. 그리고, 각 분산 노드(110)는 획득되는 중간값을 저장할 수 있다.
다음으로, 분산 노드(110)들은 230 단계에서, 중간값들을 이용하여 리듀스 연산을 수행하여, 분산 노드(110)들의 각각에 할당된 함수들을 계산할 수 있다. 이 때, 각 분산 노드(110)는 해당 분산 노드(110)에 할당된 적어도 하나의 출력 함수(hi∈Wk)를 계산할 수 있다.
이에 따라, 분산 컴퓨팅 시스템(100)에서, 하기 [수학식 2]와 같은 결과가 획득될 수 있다. 이 때, 분산 컴퓨팅 시스템(100)의 컴퓨팅 장치가 분산 노드(110)들에서 계산된 출력 함수들을 취합하여, 결과를 획득할 수 있다. 여기서, 컴퓨팅 장치는 분산 노드(110)들로부터 선출되는 중앙 노드 또는 별도의 장치일 수 있다.
다양한 실시예들에 따르면, 분산 컴퓨팅 시스템(100)은 각 분산 노드(110)에 할당될 서브그래프(Mk⊆{wi,...,wn})와 함수(Wk⊆{h1,...,hn})을 통해 전체 통신 부하를 줄일 수 있다.
도 3은 다양한 실시예들에 따른 분산 컴퓨팅 시스템(100)을 위한 컴퓨팅 장치(300)의 내부 구성을 도시하는 블록도이다.
도 3은 컴퓨팅 장치(300)는 분산 컴퓨팅 시스템(100)을 위한 분산 컴퓨팅에서 확장성을 위한 함수 할당 및 부호화 전송의 공동 설계를 위해 구성될 수 있다. 이 때, 컴퓨팅 장치(300)는 분산 노드(110)들로부터 선출되는 중앙 노드 또는 별도의 장치일 수 있다. 컴퓨팅 장치(300)는 입력 모듈(310), 출력 모듈(320), 메모리(330), 또는 프로세서(340) 중 적어도 하나를 포함할 수 있다. 어떤 실시예들에서, 컴퓨팅 장치(300)의 구성 요소들 중 적어도 하나가 생략될 수 있으며, 적어도 하나의 다른 구성 요소가 추가될 수 있다. 어떤 실시예들에서, 컴퓨팅 장치(300)의 구성 요소들 중 적어도 두 개가 하나의 통합된 회로로 구현될 수 있다.
입력 모듈(310)은 컴퓨팅 장치(300)의 적어도 하나의 구성 요소에 사용될 신호를 입력할 수 있다. 입력 모듈(310)은, 사용자가 컴퓨팅 장치(300)에 직접적으로 신호를 입력하도록 구성되는 입력 장치, 주변의 변화를 감지하여 신호를 발생하도록 구성되는 센서 장치, 또는 외부 기기로부터 신호를 수신하도록 구성되는 수신 장치 중 적어도 하나를 포함할 수 있다. 예를 들면, 입력 장치는 마이크로폰(microphone), 마우스(mouse) 또는 키보드(keyboard) 중 적어도 하나를 포함할 수 있다. 어떤 실시예에서, 입력 장치는 터치를 감지하도록 설정된 터치 회로(touch circuitry) 또는 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로 중 적어도 하나를 포함할 수 있다.
출력 모듈(320)은 컴퓨팅 장치(300)의 외부로 정보를 출력할 수 있다. 출력 모듈(320)은, 정보를 시각적으로 출력하도록 구성되는 표시 장치, 정보를 오디오 신호로 출력할 수 있는 오디오 출력 장치, 또는 정보를 무선으로 송신할 수 있는 송신 장치 중 적어도 하나를 포함할 수 있다. 예를 들면, 표시 장치는 디스플레이, 홀로그램 장치 또는 프로젝터 중 적어도 하나를 포함할 수 있다. 일 예로, 표시 장치는 입력 모듈(310)의 터치 회로 또는 센서 회로 중 적어도 하나와 조립되어, 터치 스크린으로 구현될 수 있다. 예를 들면, 오디오 출력 장치는 스피커 또는 리시버 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에서, 수신 장치와 송신 장치는 통신 모듈로 구현될 수 있다. 통신 모듈은 컴퓨팅 장치(300)에서 외부 기기와 통신을 수행할 수 있다. 통신 모듈은 컴퓨팅 장치(300)와 외부 기기 간 통신 채널을 수립하고, 통신 채널을 통해, 외부 기기와 통신을 수행할 수 있다. 통신 모듈은 유선 통신 모듈 또는 무선 통신 모듈 중 적어도 하나를 포함할 수 있다. 유선 통신 모듈은 외부 기기와 유선으로 연결되어, 유선으로 통신할 수 있다. 무선 통신 모듈은 근거리 통신 모듈 또는 원거리 통신 모듈 중 적어도 어느 하나를 포함할 수 있다. 근거리 통신 모듈은 외부 장치와 근거리 통신 방식으로 통신할 수 있다. 예를 들면, 근거리 통신 방식은, 블루투스(Bluetooth), 와이파이 다이렉트(WiFi direct), 또는 적외선 통신(IrDA; infrared data association) 중 적어도 어느 하나를 포함할 수 있다. 원거리 통신 모듈은 외부 장치와 원거리 통신 방식으로 통신할 수 있다. 여기서, 원거리 통신 모듈은 네트워크를 통해 외부 장치와 통신할 수 있다. 예를 들면, 네트워크는 셀룰러 네트워크, 인터넷, 또는 LAN(local area network)이나 WAN(wide area network)과 같은 컴퓨터 네트워크 중 적어도 어느 하나를 포함할 수 있다.
메모리(330)는 컴퓨팅 장치(300)의 적어도 하나의 구성 요소에 의해 사용되는 다양한 데이터를 저장할 수 있다. 예를 들면, 메모리(330)는 휘발성 메모리 또는 비휘발성 메모리 중 적어도 어느 하나를 포함할 수 있다. 데이터는 적어도 하나의 프로그램 및 이와 관련된 입력 데이터 또는 출력 데이터를 포함할 수 있다. 프로그램은 메모리(330)에 적어도 하나의 명령을 포함하는 소프트웨어로서 저장될 수 있다.
프로세서(340)는 메모리(330)의 프로그램을 실행하여, 컴퓨팅 장치(300)의 적어도 하나의 구성 요소를 제어할 수 있다. 이를 통해, 프로세서(340)는 데이터 처리 또는 연산을 수행할 수 있다. 이 때, 프로세서(330)는 메모리(330)에 저장된 명령을 실행할 수 있다. 프로세서(340)는 복수의 버텍스들과 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 복수의 분산 노드들에 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정할 수 있다. 그리고, 프로세서(340)는 함수 할당을 기반으로, 복수의 분산 노드들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당할 수 있다.
따라서, 각 분산 노드(110)는 서브그래프로 할당되는 함수의 버텍스와 그의 이웃 버텍스의 중간값을 저장할 수 있다. 이를 통해, 분산 컴퓨팅 시스템(100)의 분산 컴퓨팅 시, 각 분산 노드(110)는 저장된 중간값을 해당 분산 노드(110)에 할당된 함수를 계산하는 데 이용할 수 있다. 즉, 분산 노드(110)들은 저장된 중간값들을 제외하고, 필요한 중간값들에 대해 셔플링할 것이며, 이를 통해, 분산 컴퓨팅 시스템(100)에서의 통신 부하가 최소화될 수 있다.
도 4는 다양한 실시예들에 따른 컴퓨팅 장치(300)의 동작 방법을 도시하는 순서도이다. 도 5는 다양한 실시예들에 따른 분산 컴퓨팅 시스템(100)에서의 그래프를 도시하는 예시도이다.
이 때, 함수(hi)를 계산하기 위해서, 중간값({vi,j: j∈(N(i)})이 필요하다. 즉, 해당 버텍스와 엣지로 연결되어 있는 모든 이웃 버텍스에서 맵 연산을 통해 계산된 중간값이 필요하다. 하나의 분산 노드(110) 관점에서는 할당된 함수끼리 이웃 버텍스 세트가 최대한 많이 겹칠수록, 해당 이웃 버텍스 세트에 대한 중간값이 분산 노드에 로컬로(locally) 저장되어 있을수록 불필요한 셔플링을 줄일 수 있다. 이러한 관점에서 함수 할당과 서브그래프 할당을 위한 기법을 제안하고자 한다. 구체적으로, 모든 함수 할당 페어(pair)에 대해서 함수를 계산하기 위해 필요한 이웃 버텍스의 개수를 계산하여 추가적인 전송을 최소화하는 함수 할당 페어를 구한 다음, 저장 공간의 한계를 고려하여, 함수 할당 페어에서 가장 많이 요구되는 버텍스에 대해서 순차적으로 서브그래프 할당을 하는 방식의 기법을 제안한다.
도 4를 참조하면, 컴퓨팅 장치(300)는 410 단계에서, 그래프를 기반으로, 복수의 분산 노드(110)들을 위한 함수 할당을 결정할 수 있다. 이 때, 도 5에 도시된 바와 같이, 그래프는 복수의 버텍스들과 버텍스들에 연결되는 엣지들로 이루어질 수 있다. 그래프에서, 각 버텍스에 대해 적어도 하나의 이웃 버텍스가 있을 수 있다. 이웃 버텍스는 해당 버텍스와 동일한 버텍스, 또는 엣지를 통해 해당 버텍스에 연결되는 다른 버텍스 중 적어도 하나를 포함할 수 있다. 그리고, 프로세서(340)는 복수의 분산 노드(110)들에 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정할 수 있다. 이에 대해, 도 6을 참조하여, 보다 상세하게 후술될 것이다.
도 6는 도 4의 함수 할당을 결정하는 단계(410 단계)의 상세 구성들을 도시하는 순서도이다.
도 6을 참조하면, 컴퓨팅 장치(300)는 611 단계에서, 분산 노드(110)들에 할당될 모든 함수 할당 페어들()을 결정할 수 있다. 예를 들면, 각 분산 노드(110)에 총 여섯 개의 버텍스들 중 두 개의 버텍스들에 대한 함수 할당이 이루어진다면, 개의 함수 할당 페어가 존재할 수 있다.
그런 다음, 컴퓨팅 장치(300)는 613 단계에서, 함수 할당 페어들의 각각(R∈)에 대해, 버텍스들에 대한 이웃 버텍스들의 합집합의 기수(cardinal number)를 획득할 수 있다. 프로세서(340)는 함수 할당 페어들의 각각에 대해, 이웃 버텍스 세트의 합집합(Ui∈RN(i))을 구하고, 그 합집합의 기수(|Ui∈RN(i)|)를 구할 수 있다. 기수가 의미하는 것은 해당 함수 할당 페어를 계산하기 위해서 필요한 버텍스의 개수를 의미할 수 있다. 예를 들어, 도 5에 따르면, 버텍스1 및 버텍스2의 함수들 h1, h2를 계산하기 위해서 필요한 중간값들은 {v1,1, v1,2, v1,5, v2,1, v2,3, v2,6}이고, 이 중간값들은 합집합의 버텍스들(Ui∈RN(i)={1, 2, 3, 5, 6})을 맵 연산을 통해 계산된 값일 수 있으며, 기수는 5이다. 함수 할당 페어(R)이 할당된 분산 노드(110)에 합집합(Ui∈RN(i))에 포함된 버텍스들을 서브그래프로 할당시킴으로써 맵 연산을 통한 중간값을 로컬로 얻을 수 있을 것이다. 이 기수가 작을수록, 합집합(Ui∈RN(i))에 포함된 버텍스들을 모두 저장할 가능성이 높아지며, 추가적인 통신 부하를 줄일 수 있을 것이다. 따라서, 함수 할당에서는 가능한 모든 함수 할당 페어()에 대한 기수가 계산될 수 있다.
이 후, 컴퓨팅 장치(300)는 615 단계에서, 함수 할당 페어들 중에서 기수가 최소인 함수 할당 페어에 기반하여, 분산 노드(110)들에 함수들을 할당할 수 있다. 프로세서(340)는 기수가 최소인 함수 할당 페어를 순차적으로 K 개의 분산 노드들(110)에 할당한다. 이 때, 할당할 함수 할당 페어끼리 서로 겹치지 않게 할당되어야 한다.
다음으로, 컴퓨팅 장치(300)는 도 4로 리턴하여, 420 단계로 진행할 수 있다. 컴퓨팅 장치(300)는 420 단계에서, 함수 할당을 기반으로, 분산 노드(110)들의 각각에 서브그래프를 할당할 수 있다. 프로세서(340)는 분산 노드(110)들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당할 수 있다. 이 때, 프로세서(340)는 하기 [표 1]과 같은 알고리즘에 따라, 함수 할당을 기반으로, 분산 노드(110)들의 각각에 서브그래프를 할당할 수 있다.
구체적으로, 프로세서(340)는 합집합(Ui∈RN(i))에 포함된 버텍스들 중에 함수 할당 페어(R)에 포함된 버텍스들과 가장 많이 이웃 관계인 버텍스들로부터 순서대로 m 개의 버텍스를 서브그래프로 할당할 수 있다. 이렇게 하는 이유는, 함수 할당 페어(R)에 있는 버텍스의 함수를 계산하기 위해서는 이웃 버텍스의 중간값이 필요하게 되는데, 다중으로 요청되는 버텍스에 대해서 서브그래프 할당을 하게 되면 해당 버텍스에 대한 중간값을 로컬로 얻을 수 있기 때문이다. 이는 통신 부하를 줄이게 되고, m의 저장 공간을 효율적으로 사용할 수 있음을 나타낼 수 있다. 예를 들어, 도 5에서 버텍스1 및 버텍스2의 함수들 h1, h2의 페어가 분산 노드 1에 할당이 되었다고 할 때, 중간값들은 {v1,1, v1,2, v1,5, v2,1, v2,3, v2,6}이 필요할 수 있다. 이 중에서, 버텍스1은 함수 할당 페어 h1, h2의 버텍스1 및 버텍스2의 이웃 버텍스이고(엣지가 있고), 버텍스1을 서브그래프로 저장하게 되면, v1,1, v2,1를 맵 연산 이후 로컬로 저장하고 있기 때문에 다른 분산 노드로부터 전송(shuffle) 받을 필요가 없을 것이다. 이런 방식으로 의 저장 공간을 채울 수 있다. 그래프의 모든 버텍스들은 최소한 한번은 분산 노드(110)에 서브그래프로 할당되어야 하기 때문에, 의 저장 공간이 남았을 경우나 효율적인 서브그래프 할당이 안되는 경우, 아직 할당되지 않은 버텍스를 할당해 주어야 한다. 따라서, 합집합(Ui∈RN(i))에 포함된 버텍스들뿐만 아니라 앞선 서브그래프 할당에서 할당되지 않은 모든 버텍스들에 대한 세트를 V라 할 때, V에 포함된 버텍스들도 같이 고려하여 서브그래프 할당 알고리즘이 고안될 수 있다. 여기서, 버텍스 세트(Ui∈RN(i))는 이라고 나타낼 수 있다.
따라서, 각 분산 노드(110)는 서브그래프로 할당되는 함수의 버텍스와 그의 이웃 버텍스의 중간값을 저장할 수 있다. 이를 통해, 분산 컴퓨팅 시스템(100)의 분산 컴퓨팅 시, 각 분산 노드(110)는 저장된 중간값을 해당 분산 노드(110)에 할당된 함수를 계산하는 데 이용할 수 있다. 즉, 분산 노드(110)들은 저장된 중간값들을 제외하고, 필요한 중간값들에 대해 셔플링할 것이며, 이를 통해, 분산 컴퓨팅 시스템(100)에서의 통신 부하가 최소화될 수 있다.
도 7은 다양한 실시예들에 따른 분산 컴퓨팅 시스템(100)의 성능을 설명하기 위한 그래프들이다. 이 때, 도 7은 연산 부하(computation load; r)에 따른 통신 부하(communication load; L)를 나타낸다.
도 7을 참조하면, 다양한 실시예들에 따른 기법의 성능은 통신 부하로 비교되며, 통신 부하는 전체 전송 횟수를 나타낸다. 이를 확인하기 위해, 기존의 서브그래프 및 함수 할당 기법(Graph CDC)을 다양한 실시예들에 따른 기법(Proposed scheme)과 비교하였다. 시뮬레이션 환경은 다음과 같다. 총 5 개의 분산 노드들과 20개의 버텍스들로 이루어진 ER(Erdos-Renyi) 그래프를 고려하였다. x축의 연산 부하(r)는 하기 [수학식 3] 같이 구해질 수 있다. 모든 분산 노드의 저장 공간의 크기는 m이므로, r=mK/n로 나타낼 수 있고, 이는 각 버텍스가 평균 몇 개의 분산 노드에 저장되어 있는지를 나타내는 지표이다. 연산 부하가 커질수록 한 분산 노드의 저장 공간 크기가 커지며, 이는 셔플링해야 할 연산값이 줄어들 수 있음을 의미한다. 연산 부하를 1부터 5까지 늘려가며 총 100 개의 그래프들에 대해서 통신 부하를 평균하여 시뮬레이션하였다.
도 7을 참조하면, 전체적으로 각 노드가 맵 연산 시 계산할 연산 부하가 늘어나면 셔플링해야 할 중간값의 개수가 줄어들고, 통신 부하가 줄어드는 것을 확인할 수 있다. 또한, 기존의 기법에서는 서브그래프와 함수 할당이 그래프의 특성을 고려하지 않고 연속하여(sequentially) 할당하여 불필요한 전송이 늘어나지만, 다양한 실시예들에 따른 기법을 통해서 통신 부하를 효과적으로 줄일 수 있음을 확인할 수 있다.
다양한 실시예들에 따르면, 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 통해, 분산 컴퓨팅 시스템(100)에서의 통신 부하가 최적화, 즉 최소화될 수 있다. 즉, 분산 컴퓨팅 시스템(100)에서, 대규모 그래프 알고리즘 연산이 시간 효율적으로 처리될 수 있다. 이 때, 셔플링 과정에서 소비되는 실행 시간이 현저하게 절감될 수 있다.
이와 같은 다양한 실시예들에 따른 기법은, 대규모 그래프 연산 처리를 위한 어플리케이션에 활용될 수 있을 것이다. 그래프의 크기가 커짐에 따라서 연산 복잡도가 커지고, 따라서 확장성에 문제가 야기될 수 있다. 이러한 문제를 해결하기 위해 많은 그래프 알고리즘에서 분산 그래프 연산 프레임워크를 사용하고 있고, 다양한 실시예들에 따른 기법을 통해 통신 부하에 대한 병목현상을 해결하여 보다 시간 효율적인 그래프 알고리즘 연산을 적용시킬 수 있을 것이다.
다양한 실시예들은 복수의 분산 노드(110)들을 포함하는 분산 컴퓨팅 시스템(100)의 방법을 제공할 수 있다.
다양한 실시예들에 따른 방법은, 복수의 버텍스들과 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 복수의 분산 노드(110)들에 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하는 단계(410 단계), 및 함수 할당을 기반으로, 복수의 분산 노드(110)들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하는 단계(420 단계)를 포함할 수 있다.
다양한 실시예들에 따르면, 함수 할당을 결정하는 단계(410 단계)는, 함수들을 기반으로, 복수의 분산 노드(110)들에 할당될 모든 함수 할당 페어들을 결정하는 단계(611 단계), 함수 할당 페어들의 각각에 대해, 버텍스들에 대한 이웃 버텍스들의 합집합의 기수(cardinal number)를 구하는 단계(613 단계), 및 함수 할당 페어들 중에서 기수가 최소인 함수 할당 페어에 기반하여, 복수의 분산 노드(110)들에 함수들을 할당하는 단계(615 단계)를 포함할 수 있다.
다양한 실시예들에 따르면, 버텍스에 대한 이웃 버텍스는, 버텍스와 동일한 버텍스, 또는 엣지를 통해 버텍스에 연결되는 다른 버텍스 중 적어도 하나를 포함할 수 있다.
다양한 실시예들에 따르면, 서브그래프로 할당하는 단계(420 단계)는, 각 분산 노드(110)가 버텍스와 이웃 버텍스의 중간값을 저장하는 단계를 포함할 수 있다.
다양한 실시예들에 따르면, 분산 노드(110)는, 중간값을 분산 노드(110)에 할당된 함수를 계산하는 데 이용할 수 있다.
다양한 실시예들은 복수의 분산 노드(110)들을 포함하는 분산 컴퓨팅 시스템(100)을 제공한다.
다양한 실시예들에 따른 분산 컴퓨팅 시스템(100)은, 복수의 버텍스들과 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 복수의 분산 노드(110)들에 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하고, 함수 할당을 기반으로, 복수의 분산 노드(110)들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하도록 구성될 수 있다.
다양한 실시예들에 따르면, 분산 컴퓨팅 시스템(100)은, 함수들을 기반으로, 복수의 분산 노드(110)들에 할당될 모든 함수 할당 페어들을 결정하고, 함수 할당 페어들의 각각에 대해, 버텍스들에 대한 이웃 버텍스들의 합집합의 기수를 구하고, 함수 할당 페어들 중에서 기수가 최소인 함수 할당 페어에 기반하여, 복수의 분산 노드(110)들에 함수들을 할당하도록 구성될 수 있다.
다양한 실시예들에 따르면, 버텍스에 대한 이웃 버텍스는, 버텍스와 동일한 버텍스, 또는 엣지를 통해 버텍스에 연결되는 다른 버텍스 중 적어도 하나를 포함할 수 있다.
다양한 실시예들에 따르면, 각 분산 노드(110)는, 버텍스와 이웃 버텍스의 중간값을 저장하도록 구성될 수 있다.
다양한 실시예들에 따르면, 분산 노드(110)는, 중간값을 분산 노드(110)에 할당된 함수를 계산하는 데 이용하도록 구성될 수 있다.
이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 프로세서, 콘트롤러, 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), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
다양한 실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이 때 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 그리고, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성 요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성 요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성 요소를 다른 구성 요소와 구분하기 위해 사용될 뿐 해당 구성 요소들을 한정하지 않는다. 어떤(예: 제 1) 구성 요소가 다른(예: 제 2) 구성 요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로 연결되거나, 다른 구성 요소(예: 제 3 구성 요소)를 통하여 연결될 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
다양한 실시예들에 따르면, 기술한 구성 요소들의 각각의 구성 요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성 요소들 중 하나 이상의 구성 요소들 또는 단계들이 생략되거나, 또는 하나 이상의 다른 구성 요소들 또는 단계들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성 요소들(예: 모듈 또는 프로그램)은 하나의 구성 요소로 통합될 수 있다. 이런 경우, 통합된 구성 요소는 복수의 구성 요소들 각각의 구성 요소의 하나 이상의 기능들을 통합 이전에 복수의 구성 요소들 중 해당 구성 요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 단계들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 단계들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 단계들이 추가될 수 있다.

Claims (10)

  1. 복수의 분산 노드들을 포함하는 분산 컴퓨팅 시스템의 방법에 있어서,
    복수의 버텍스들과 상기 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 상기 복수의 분산 노드들에 상기 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하는 단계; 및
    상기 함수 할당을 기반으로, 상기 복수의 분산 노드들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하는 단계
    를 포함하고,
    상기 함수 할당을 결정하는 단계는,
    상기 함수들을 기반으로, 상기 복수의 분산 노드들에 할당될 모든 함수 할당 페어들을 결정하는 단계;
    상기 함수 할당 페어들의 각각에 대해, 상기 버텍스들에 대한 이웃 버텍스들의 합집합의 기수(cardinal number)를 구하는 단계; 및
    상기 함수 할당 페어들 중에서 기수가 최소인 함수 할당 페어에 기반하여, 상기 복수의 분산 노드들에 상기 함수들을 할당하는 단계
    를 포함하는,
    방법.
  2. 삭제
  3. 제 1 항에 있어서,
    버텍스에 대한 이웃 버텍스는,
    상기 버텍스와 동일한 버텍스, 또는 엣지를 통해 상기 버텍스에 연결되는 다른 버텍스 중 적어도 하나를 포함하는,
    방법.
  4. 제 1 항에 있어서,
    상기 서브그래프로 할당하는 단계는,
    각 분산 노드가 상기 버텍스와 상기 이웃 버텍스의 중간값을 저장하는 단계
    를 포함하는,
    방법.
  5. 제 4 항에 있어서,
    상기 분산 노드는,
    상기 중간값을 상기 분산 노드에 할당된 함수를 계산하는 데 이용하는,
    방법.
  6. 복수의 분산 노드들을 포함하는 분산 컴퓨팅 시스템에 있어서,
    메모리; 및
    상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성되는 프로세서를 포함하고,
    상기 프로세서는,
    복수의 버텍스들과 상기 버텍스들에 연결되는 엣지들로 이루어지는 그래프를 기반으로, 상기 복수의 분산 노드들에 상기 버텍스들에 대한 함수들을 나누어 할당하는 함수 할당을 결정하고,
    상기 함수 할당을 기반으로, 상기 복수의 분산 노드들의 각각에 대해, 할당되는 함수의 버텍스의 이웃 버텍스를 서브그래프로 할당하도록 구성되고,
    상기 프로세서는,
    상기 함수들을 기반으로, 상기 복수의 분산 노드들에 할당될 모든 함수 할당 페어들을 결정하고,
    상기 함수 할당 페어들의 각각에 대해, 상기 버텍스들에 대한 이웃 버텍스들의 합집합의 기수를 구하고,
    상기 함수 할당 페어들 중에서 기수가 최소인 함수 할당 페어에 기반하여, 상기 복수의 분산 노드들에 상기 함수들을 할당하도록 구성되는,
    분산 컴퓨팅 시스템.
  7. 삭제
  8. 제 6 항에 있어서,
    버텍스에 대한 이웃 버텍스는,
    상기 버텍스와 동일한 버텍스, 또는 엣지를 통해 상기 버텍스에 연결되는 다른 버텍스 중 적어도 하나를 포함하는,
    분산 컴퓨팅 시스템.
  9. 제 6 항에 있어서,
    각 분산 노드는,
    상기 버텍스와 상기 이웃 버텍스의 중간값을 저장하도록 구성되는,
    분산 컴퓨팅 시스템.
  10. 제 9 항에 있어서,
    상기 분산 노드는,
    상기 중간값을 상기 분산 노드에 할당된 함수를 계산하는 데 이용하도록 구성되는,
    분산 컴퓨팅 시스템.
KR1020210134711A 2021-10-12 2021-10-12 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법 KR102614966B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210134711A KR102614966B1 (ko) 2021-10-12 2021-10-12 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210134711A KR102614966B1 (ko) 2021-10-12 2021-10-12 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법

Publications (2)

Publication Number Publication Date
KR20230051841A KR20230051841A (ko) 2023-04-19
KR102614966B1 true KR102614966B1 (ko) 2023-12-19

Family

ID=86142198

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210134711A KR102614966B1 (ko) 2021-10-12 2021-10-12 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법

Country Status (1)

Country Link
KR (1) KR102614966B1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101801468B1 (ko) * 2016-05-16 2017-11-24 포항공과대학교 산학협력단 단일머신 상의 대규모 그래프에서 서브그래프를 열거하는 병렬 기법
KR102108342B1 (ko) * 2018-08-21 2020-05-13 재단법인대구경북과학기술원 그래프 특성을 보존하는 대규모 그래프 증폭 시스템
US20200192880A1 (en) * 2018-12-14 2020-06-18 Samsung Electronics Co., Ltd. Optimal dynamic shard creation in storage for graph workloads

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Saurav Prakash et al., "Coded Computing for Distributed Graph Analytics",(2020.10.30.) 1부.*
한국공개특허 제10-2020-0073979호(2020.06.24.) 1부.*
한국등록특허 제10-1801468호(2017.11.24.) 1부.*
한국등록특허 제10-2108342호(2020.05.13.) 1부.*

Also Published As

Publication number Publication date
KR20230051841A (ko) 2023-04-19

Similar Documents

Publication Publication Date Title
CN110908667B (zh) 神经网络联合编译的方法、装置和电子设备
US11507382B2 (en) Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit
CN107111517B (zh) 针对归约器任务的虚拟机优化分配和/或生成
US9015708B2 (en) System for improving the performance of high performance computing applications on cloud using integrated load balancing
US10055252B2 (en) Apparatus, system and method for estimating data transfer periods for job scheduling in parallel computing
TW202022644A (zh) 一種運算裝置和運算方法
KR20200022384A (ko) 콘볼루션 효율을 개선하기 위한 방법들, 시스템들, 및 장치
Gmeiner et al. Parallel multigrid on hierarchical hybrid grids: a performance study on current high performance computing clusters
CN114026569A (zh) 使用脉动阵列的扩张卷积
KR20160082678A (ko) 학습 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
WO2022171066A1 (zh) 基于物联网设备的任务分配方法、网络训练方法及装置
KR20200091789A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
US20130227244A1 (en) Workload-aware distributed data processing apparatus and method for processing large data based on hardware acceleration
CN111522640A (zh) 计算图的并行执行方法和设备
CN112463159B (zh) 编译方法、装置、电子设备和存储介质
KR102238600B1 (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
US20230030165A1 (en) Utilizing egress peer engineering to determine optimized traffic plans and to implement an optimized traffic plan
US9749219B2 (en) Method of optimizing routing in a cluster comprising static communication links and computer program implementing that method
US9116751B2 (en) Reconfigurable device, processing assignment method, processing arrangement method, information processing apparatus, and control method therefor
KR102614966B1 (ko) 대규모 그래프 알고리즘 연산을 위한 서브그래프 및 함수 할당을 위한 컴퓨팅 시스템 및 그의 방법
WO2023050807A1 (zh) 一种数据处理方法、装置、系统、电子设备及存储介质
KR102613618B1 (ko) 분산 노드 간 능력 제한에 따른 함수 할당 및 부호화 전송을 위한 컴퓨팅 시스템 및 그의 방법
CN115002215A (zh) 面向云上政企的资源分配模型训练方法以及资源分配方法
JP2021022370A (ja) コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体
KR20240062772A (ko) 대규모 그래프 알고리즘 연산을 위한 그래프 맵리듀스 시스템에서의 부호화 분산 컴퓨팅 기법 및 컴퓨터 장치

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant