KR20240051715A - 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치 - Google Patents

행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치 Download PDF

Info

Publication number
KR20240051715A
KR20240051715A KR1020220131741A KR20220131741A KR20240051715A KR 20240051715 A KR20240051715 A KR 20240051715A KR 1020220131741 A KR1020220131741 A KR 1020220131741A KR 20220131741 A KR20220131741 A KR 20220131741A KR 20240051715 A KR20240051715 A KR 20240051715A
Authority
KR
South Korea
Prior art keywords
fusion
plan
matrix
cuboid
operator
Prior art date
Application number
KR1020220131741A
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 KR1020220131741A priority Critical patent/KR20240051715A/ko
Publication of KR20240051715A publication Critical patent/KR20240051715A/ko

Links

Classifications

    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

일 실시예에 따른 분산 행렬 계산 제어 장치가 수행하는 분산 행렬 계산 제어 방법은, 질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 단계와, 상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 단계를 포함한다.

Description

행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치{distributed matrix computation method and apparatus for matrix fused operation}
본 발명은 행렬 융합 연산(matrix fused operation)을 지원하는 분산 행렬 계산 제어 방법과 이 방법을 수행하는 분산 행렬 계산 제어 장치에 관한 것이다.
행렬 연산은 현대 추천시스템과 기계학습부터 전통적인 선형 시스템과 그래픽 렌더링까지 컴퓨터 과학 분야의 대부분 알고리즘들에서 근간이 되는 기본적인 연산으로써 널리 사용되어 왔다.
최근 추천 시스템과 기계학습에서 사용되는 행렬 데이터의 크기가 증가함에 따라 하나의 노드에서 행렬 알고리즘 또는 질의를 수행하기 어렵게 되자, 네트워크로 계산노드가 연결되어 있는 병렬 및 분산 행렬 시스템을 활용하여 행렬 데이터를 계산노드들에게 분산하여 행렬 연산 처리가 가능한 장점 때문에 최근 분산 행렬 계산 시스템의 중요성이 더욱 강조되고 있다.
특히, 기계학습과 같이 복잡한 질의는 수 십 개에서 수 백 개 이상의 행렬 연산자들로 구성되어 있다. 연산자들 사이의 중간 결과 행렬은 행렬 계산 시스템에서 사용되는 데이터 구조에 따라서 구체화(materialization)된다. 수 백 개 이상의 연산자들 사이에서 구체화 과정의 수 또한 수 백 번이 되며 그 많은 수의 구체화 과정은 전체적인 질의 처리 성능에 악영향을 미친다. 행렬 계산 시스템들은 질의 처리 시간을 단축하기 위해서 다수의 행렬 기본 연산자들을 하나의 융합 연산자로 수행하기 위해 연산자 융합 방법을 이용한다.
Apache의 SystemDS와 Google의 tensorflow와 같은 대표적인 행렬 계산 시스템은 질의 실행에 실패할 수 있기 때문에 가장 높은 통신 비용과 메모리 사용을 가지는 연산자 중 하나인 대규모 행렬 곱을 융합 계획에 포함하지 않는 경향이 있다. 이는 융합 계획을 실행하기 위한 그 시스템에서 사용하는 분산 융합 연산자 방법들이 대규모 행렬 곱을 포함할 때 질의 실행을 실패하기 때문에 발생한다.
기존의 행렬 계산 시스템들은 질의 계획을 방향성 비순환 그래프(directed acyclic graph, DAG)로 표현하고, 방향성 비순환 그래프 상에서 sub-DAG인 부분 융합 계획을 찾는다. 이러한 부분 융합 계획이 하나 이상 포함된 질의 계획은 융합 계획이라도 부른다. 부분 융합 계획에 일치하는 융합 연산자를 포함하는 융합 계획을 생성하고 분산 방식으로 융합 계획을 실행한다. 분산 융합 연산자는 행렬 통합 단계, 지역 연산 단계, 행렬 집계 단계와 같이 3단계로써 구성된다.
행렬 통합 단계는 각 태스크(혹은 클러스터 상의 노드)에서 요구하는 입력 행렬들을 통합한다. 지역 연산 단계는 각 태스크에 할당된 블록들을 사용하여 융합 연산을 수행하고 중간 블록들을 생성한다. 행렬 집계 단계는 최종 결과를 생성하기 위해 중간 블록들을 클러스터 상에서 재분배하여 집계연산을 수행한다. 행렬 집계 단계는 부분 융합 계획에서 마지막 집계 연산자의 존재에 따라서 선택적으로 수행된다.
기존 분산 행렬 계산 시스템들은 대표적으로 브로드캐스트 기반과 복제 기반의 두 가지 분산 융합 연산자를 사용한다. 두 방법의 차이는 행렬 통합 단계에서 입력 행렬들을 어떻게 파티션하는지에 따라서 두 방법의 차이가 발생한다.
브로드캐스트 기반 분산 융합 연산자는 입력 행렬들 중 가장 많은 수의 요소를 가지는 주 행렬을 클러스터 상의 태스크들에게 파티션되고, 나머지 보조 행렬들을 모든 태스크들에게 브로드캐스트하는 방법이다. 해당 방법은 보조 행렬들의 크기가 작을 수록 적은 통신 비용에 의해서 질의 처리 성능이 좋아지지만, 모든 보조 행렬들이 하나의 태스크의 메모리에 적재되어야 함으로 높은 메모리 사용량을 가지고 보조 행렬들의 크기가 태스크의 메모리보다 커지게 되면 실행에 실패하는 단점들을 가지고 있다.
복제 기반 분산 융합 연산자는 주 행렬을 태스크들에게 파티션하고, 태스크에 할당된 주 행렬의 블록을 기준으로 융합 연산의 결과 블록을 생성하기 위해 필요한 모든 보조 행렬들의 블록들을 복제하여 할당한다. 해당 방법은 결과 블록을 생성하기 위한 필요한 블록들만 사용하기 때문에 메모리 사용량은 브로드캐스트 방법보다 적은 장점을 가지지만, 주 행렬의 크기가 커질 수록 보조 행렬들의 중복된 복제 블록들 때문에 높은 통신 비용을 가지는 단점을 가진다.
이렇듯 분산 행렬 융합 연산자의 중요성에 비해 행렬의 크기 및 네트워크 비용 측면 모두를 만족하는 효율적인 분산 행렬 융합 연산자 방법의 연구와 대규모 행렬 곱을 포함하는 융합 계획 생성 방법의 연구 및 이를 활용한 분산 행렬 계산 시스템 개발은 잘 이루어지고 있지 못한 실정이다.
실시예에 따르면, 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성해 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 융합 계획에 따른 융합 연산을 실행하는 분산 행렬 계산 제어 방법 및 장치를 제공한다.
본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
제 1 관점에 따른 분산 행렬 계산 제어 장치가 수행하는 분산 행렬 계산 제어 방법은, 질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 단계와, 상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 단계를 포함한다.
여기서, 상기 융합 계획을 생성하는 단계는, 상기 질의 계획에서 모든 행렬 곱 연산자에 대하여 규칙 기반 방식을 통해 주변 연산자를 융합하여 부분 융합 계획 후보군을 결정하는 단계와, 상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 하는 비용 기반 방식을 통해 상기 부분 융합 계획 후보군으로부터 상기 융합 계획을 결정하는 단계를 포함할 수 있다.
상기 융합 연산을 실행하는 단계는 상기 융합 계획 내 실행되지 않은 연산자를 탐색하는 단계와, 상기 탐색된 연산자가 기본 행렬 연산자인지 또는 융합 연산자인지를 판별하는 단계와, 상기 기본 행렬 연산자로 판별되면 상기 3차원 모델 공간으로 표현하지 않고 실행하되 상기 융합 연산자로 판별되면 상기 큐보이드 기반 융합 공간 분할을 통해 실행하는 단계를 포함할 수 있다.
상기 연산자를 탐색하는 단계는, 상기 융합 계획을 방향성 비순환 그래프 형태로 입력 받아 상기 융합 계획 내 연산자에 해당하는 정점들을 방문하여 해당 연산자를 실행하기 위해 선택할 수 있다.
상기 큐보이드 기반 융합 공간 분할을 통한 실행은 상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 이용해 결정한 파라미터를 기초로 상기 입력 행렬들을 다수의 큐보이드로 구성한 후 각 큐보이드를 상기 코어들 또는 상기 노드들에게 할당할 수 있다.
제 2 관점에 따른 분산 행렬 계산 제어 장치는, 질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 행렬 곱 기반 융합 계획 생성기와, 상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 큐보이드 기반 융합 연산 실행기를 포함한다.
여기서, 상기 행렬 곱 기반 융합 계획 생성기는, 상기 질의 계획에서 모든 행렬 곱 연산자에 대하여 규칙 기반 방식을 통해 주변 연산자를 융합하여 부분 융합 계획 후보군을 결정하는 융합 계획 후보군 결정 모듈과, 상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 하는 비용 기반 방식을 통해 상기 부분 융합 계획 후보군으로부터 상기 융합 계획을 결정하는 융합 계획 결정 모듈을 포함할 수 있다.
상기 큐보이드 기반 융합 연산 실행기는, 상기 융합 계획 내 실행되지 않은 연산자를 탐색하는 융합 계획 탐색 모듈과, 상기 탐색된 연산자가 기본 행렬 연산자인 경우에 상기 3차원 모델 공간으로 표현하지 않고 실행하는 연산자 실행 모듈과, 상기 탐색된 연산자가 융합 연산자로 판별되면 상기 큐보이드 기반 융합 공간 분할을 수행하는 큐보이드 기반 융합 공간 분할 모듈과, 상기 큐보이드 기반 융합 공간 분할이 수행된 융합 연산을 실행하는 융합 연산 실행 모듈을 포함할 수 있다.
상기 융합 계획 탐색 모듈은, 상기 융합 계획을 방향성 비순환 그래프 형태로 입력 받아 상기 융합 계획 내 연산자에 해당하는 정점들을 방문하여 해당 연산자를 실행하기 위해 선택할 수 있다.
상기 융합 연산 실행 모듈은, 상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 이용해 결정한 파라미터를 기초로 상기 입력 행렬들을 다수의 큐보이드로 구성한 후 각 큐보이드를 상기 코어들 또는 상기 노드들에게 할당할 수 있다.
제 3 관점에 따른 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체는, 상기 컴퓨터 프로그램이, 프로세서에 의해 실행되면, 상기 분산 행렬 계산 제어 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함한다.
제 6 관점에 따른 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램은, 상기 컴퓨터 프로그램이, 프로세서에 의해 실행되면, 상기 분산 행렬 계산 제어 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함한다.
일 실시예에 따르면, 대규모 행렬 곱 기반의 융합 계획을 찾는 방법과 병렬 처리 머신에서 사용 가능한 기억장치들의 크기보다 큰 행렬들에 대한 융합 연산을 수행할 수 있다. 병렬 처리 머신에서 질의 계획과 입력 행렬들의 메타 정보와 시스템 자원에 대한 정보를 바탕으로 행렬 곱 기준으로 가능한 많은 연산자를 융합하고, 융합 연산을 3차원 모델 공간으로서 표현하여 최적의 공간 분할 방법을 찾음으로써 대규모 행렬 곱 기반의 융합 계획 생성하고 융합 계획의 기반으로 대규모 행렬들에 대한 융합 연산을 수행 할 수 있다.
그리고, 질의 계획으로부터 융합 계획을 생성할 때 부분 융합 계획 내 대규모 행렬 곱을 포함하는 것을 회피하는 기존 방법들과는 다르게 행렬 곱 기준으로 가능한 한 많은 연산자를 융합하여 입력 행렬들에 정보와 사용 가능한 하드웨어 자원 정보를 이용하여 규칙 기반과 비용 기반 모델들을 사용하기 때문에 통신 비용과 메모리 사용 측면에서 언제나 최적의 융합 계획을 생성하는 것을 보장한다.
아울러, 다양한 크기의 입력 행렬들에 대해서 고정적인 분할 방법들을 사용한 기존의 방법들과는 다르게 입력 행렬들에 대한 정보를 이용하여 비용 기반 모델을 사용하기 때문에 통신 비용 측면에서 언제나 최적의 분할 방법으로 분산 융합 연산을 수행하는 것을 보장한다.
그리고, 시스템의 주 기억 장치와 같은 사용 가능한 자원을 기반으로 융합 공간의 큐보이드 크기를 결정하기 때문에 현 시스템 상황에서 처리할 수 있는 가장 큰 규모의 융합 연산을 수행 가능하다.
도 1은 본 발명의 일 실시예에 따른 분산 행렬 계산 제어 장치를 포함하는 행렬 계산 시스템의 구조를 나타낸 도면.
도 2는 본 발명의 도면에 사용된 기호 및 그 의미를 나열한 표.
도 3은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 융합 계획 생성과 융합 연산 실행을 설명하기 위한 흐름도.
도 4는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 행렬 곱 기반 융합 계획 생성 단계를 나타낸 흐름도.
도 5는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 행렬 곱 기반 융합 계획 후보군을 결정하는 방법을 나타낸 흐름도.
도 6은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 후보군들 중에서 최종 융합 계획 결정하는 방법을 나타낸 흐름도.
도 7은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 주어진 부분 융합 계획에서 최적의 파라미터와 비용을 계산하는 단계를 나타낸 흐름도.
도 8은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 주어진 부분 융합 계획과 파라미터를 이용하여 통신 비용, 메모리 사용량, 계산 비용을 계산하는 방법을 나타낸 흐름도.
도 9는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 융합 연산 실행을 위한 방법을 나타낸 흐름도.
도 10은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 큐보이드 기반 융합 연산자 실행에 대한 방법을 나타낸 흐름도.
도 11은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 큐보이드 기반 융합 공간 분할 방법을 나타낸 흐름도.
도 12는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 융합 연산 방법을 나타낸 흐름도.
도 13 및 도 14는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 큐보이드 기반의 분할 방법 예제를 나타내는 도면.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명하는 실시예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시예들은 실시 형태에 대한 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다"등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
본 발명의 일 실시예에 따르면, 행렬 곱 연산을 기준으로 행렬들의 크기, 희소성, 차원등과 같은 특성들과 주 처리 장치의 코어 수, 주 기억 장치의 크기 등과 같은 주어진 하드웨어 자원들이 다르더라도 처리 성능 및 통신 비용의 효율성 측면에서 최적의 융합 계획 생성과 분산 융합 연산자를 지원하는 분산 행렬 계산 시스템을 제공할 수 있다.
일 실시예에 따르면, 질의 계획의 방향성 비순환 그래프 상에서 행렬 곱 연산을 기준으로 주어진 하드웨어 환경에 따라서 가능한 많은 연산자를 융합한 부분 융합 계획들로 구성된 융합 계획을 생성할 수 있다.
일 실시예에 따르면, 임의의 부분 융합 계획을 실행하기 위해 행렬 융합 연산의 3차원 모델 공간에 대해서 큐보이드 기반 분할을 활용한 비용 기반의 분석을 통해 처리 시간, 통신 비용 및 메모리 사용 측면에서 최적의 분산 융합 연산자를 제공할 수 있다.
일 실시예에 따르면, 모든 행렬 연산자들은 입력 행렬과 결과 행렬의 차원에 따라서 3차원 모델 공간으로써 표현할 수 있으며, 융합 연산자는 3차원 모델 공간에서 부분 융합 계획에 포함된 행렬 연산자들과 입력 및 결과 행렬들을 연결함으로써 표현할 수 있다.
일 실시예에 따르면, 행렬 곱을 포함한 융합 연산에 대해서 IХK의 행렬 A와 KХJ의 행렬 B에 대한 행렬 곱은 IХKХJ의 3차원 모델로써 표현할 수 있으며, 행렬 A와 B는 행렬 곱에 연결된 융합 연산의 결과가 될 수 있다. 그리고 행렬 곱의 결과는 행렬 곱 이후 융합된 연산자의 입력이 될 수 있다.
일 실시예에 따르면, 행렬 곱을 포함한 융합 연산은 네 가지의 왼쪽 융합, 오른쪽 융합, 출력 융합, 행렬 곱 공간들로 표현될 수 있다. 행렬 곱 공간은 융합 연산에 포함된 행렬 곱셈의 3차원 모델 공간이며, 왼쪽, 오른쪽 융합 공간은 행렬 곱의 입력 행렬을 결과 행렬로 가지는 융합 공간이며, 출력 융합 공간은 행렬 곱의 결과 행렬을 입력으로 가지는 융합 공간이 될 수 있다.
일 실시예에 따르면, 행렬 곱을 포함한 융합 연산의 3차원 모델에서 P, Q, R의 세 가지 파라미터를 사용하여 네 가지 융합 공간들에 대해서 큐보이드 분할 방법을 통해 분산 융합 연산에서 발생할 수 있는 모든 분할 방법들을 탐색하는 것을 제공하기 때문에 비용 기반의 모델에 따라서 최적의 분할 방법을 제공할 수 있다.
일 실시예에 따르면, 큐보이드 분할 방법을 통해서 분할되는 각 공간에서 분할된 큐보이드들을 포함하는 파티션의 크기는 노드들에서 사용 가능한 메모리 크기에 알맞게 분할됨과 동시에 통신 비용을 최소화하도록 분할되기 때문에 기존의 방법들 실행 시간 및 통신 비용 측면에서 각각 수백 배 및 수십 배 이상의 분산 융합 연산자의 성능을 보장할 수 있다.
본 발명의 일 실시예에 따르면, 융합 계획 생성 및 실행은 주어진 방향성 비순환 그래프 형태의 질의 계획에서 융합할 수 있는 행렬 연산자들을 찾고, 그 연산자들을 sub-DAG 형태인 부분 융합 계획에 포함하여 하나 이상의 부분 융합 계획이 포함된 융합 계획을 생성하는 것을 기초로 주어진 질의 계획에 대한 행렬 곱 기반 융합 계획을 생성하는 단계, 융합 계획을 기초하여 융합 계획을 실행 하기 위해 융합 계획 내 각 정점들과 일치하는 행렬 연산자 혹은 융합 연산자를 실행하는 융합 연산 실행 단계를 포함할 수 있다.
융합 계획 생성 및 실행 방법이 적용되는 행렬 계산 시스템은 병렬 처리 머신에서 구동이 되고 각 단계들을 제어하는 복수의 중앙 처리 장치, 입력 행렬들의 일부 블록들을 임시로 저장하는 주 기억 장치, 입력 행렬들과 결과 행렬 모두를 저장하는 보조 기억장치를 포함할 수 있다.
행렬 계산 시스템은 분산 행렬 계산 제어 장치를 통해 관리될 수 있다. 더 자세하게, 분산 행렬 계산 제어 장치는 병렬처리머신의 경우 중앙 처리 장치의 하나의 쓰래드이고, 다수의 머신들로 구성된 소규모 클러스터의 경우 노드들 중 하나인 조정자 노드가 되며, 나머지 노드들은 조정자 노드에 의해서 관리되는 작업자 노드들이 된다.
분산 행렬 계산 제어 장치는 행렬 곱 기반 융합 계획 생성 단계를 수행하는 행렬 곱 기반 융합 계획 생성기, 융합 연산 실행 단계를 수행하는 큐보이드 기반 융합 연산 실행기를 포함할 수 있다.
행렬 곱 기반 융합 계획 생성기는 사용자 혹은 시스템으로부터 주어진 방향성 비순환 그래프 형태의 질의 계획과 질의 계획에 사용될 입력 행렬들의 메타 정보인 차원의 크기, 희소성, 크기 등과 시스템 정보인 전체 코어들의 수, 노드의 수, 코어가 사용 가능한 주 기억 장치의 크기 등을 기초로, 행렬 곱 기반 부분 융합 계획 후보군 결정 모듈; 상기 후보군에서 주어진 시스템 자원에 따른 최적의 부분 융합 계획들을 결정하는 융합 계획 결정 모듈을 포함할 수 있다.
행렬 곱 기반 부분 융합 계획 후보군 결정 모듈은 주어진 질의 계획 상에서 행렬 곱 연산자를 찾고 그 연산자를 기준으로 규칙 기반 방식을 통해 주변 연산자를 융합하여 부분 융합 계획 후보군들을 결정할 수 있다.
융합 계획 결정 모듈은 행렬 곱 기반 부분 융합 계획 후보군 결정 모듈에서 부분 융합 계획 후보군들을 전달받을 경우, 해당 후보군들을 탐색하면서 후보군 내 두 개 이상의 행렬 곱 연산이 존재한다면 비용 기반 방식을 통해 두 개의 융합 계획 후보군으로 나누거나 하나의 최종 부분 융합 계획으로 확정하여 모든 부분 융합 계획 후보군이 최종 부분 융합 계획으로 확정될 때까지 반복하여 최종 융합 계획을 결정할 수 있다.
큐보이드 기반 융합 연산 실행기는 상기 행렬 곱 기반 융합 계획 생성기로부터 융합 계획을 전달받는 것을 기초로 융합 계획을 탐색하기 위한 융합 계획 탐색 모듈, 융합 계획 탐색 모듈에서 탐색된 융합 계획 내 정점과 일치하는 연산자를 실행하기 위한 기본 연산자 실행 모듈, 융합 계획 탐색 모듈에서 탐색된 부분 융합 계획을 실행하기 위한 큐보이드 기반 융합 공간 분할 모듈, 융합 공간 분할 모듈에서 생성된 파티션에 대한 융합 연산을 실행하기 위한 융합 연산 실행 모듈을 포함할 수 있다.
융합 계획 탐색 모듈은 주어진 융합 계획의 결과를 계산하기 위해서 융합 계획의 방향성 비순환 그래프를 탐색하여 다음에 실행될 정점 혹은 부분 융합 계획을 결정할 수 있다.
기본 연산자 실행 모듈은 융합 계획 탐색 모듈로부터 다음에 실행될 정점을 전달받아 정점과 일치하는 분산 행렬 연산자를 실행할 수 있다.
큐보이드 기반 융합 공간 분할 모듈은 융합 계획 탐색 모듈로부터 다음에 실행될 부분 융합 계획과 융합 계획 실행에 필요한 입력 행렬들의 메타 정보와 클러스터의 사용 가능한 하드웨어 자원을 기초로 부분 융합 계획의 3차원 모델 공간들을 최적의 파티션 크기로 분할하여 파티션에 포함되는 입력 행렬의 블록들을 각 태스크들에게 할당한다.
융합 연산 실행 모듈은 큐보이드 기반 융합 공간 분할 모듈로부터 입력 행렬들의 블록들로 구성된 파티션을 전달받아 부분 융합 계획에 일치하는 융합 연산을 수행한다. 필요시 최종 결과 블록을 생성하기 위해 태스크들간 통신을 통해 중간 결과 블록들을 집계하여 최종 결과 블록을 생성한다.
행렬 계산 시스템은 복수의 중앙 처리 장치, 주 기억 장치와 PCI_E 및 SATA 인터페이스로 연결된 복수의 보조 기억 장치로 구성되어 있다. 행렬 계산 시스템의 중앙 처리 장치가 가진 계산 자원인 코어(core)를 이용하여 주 기억 장치를 최대한 사용할 수 있다. 주 기억 장치는 다수의 블록들로 구성된 파티션이 적재될 수 있다.
각 계산 자원인 주 기억 장치와 코어는 파티션을 할당 받아 해당 파티션에 일치하는 융합 연산을 수행할 수 있으며, 필요시 중간 결과 블록들을 셔플하여 누적집계 계산을 수행한 이후, 결과 행렬 블록들을 보조 기억 장치로 저장할 수 있다.
도 1은 본 발명의 일 실시예에 따른 분산 행렬 계산 제어 장치를 포함하는 행렬 계산 시스템의 구조를 나타낸 도면이다.
도 1을 참조하면, 일 실시예에 따른 행렬 계산 시스템은 분산 행렬 계산 제어 장치(110)와 코어들 혹은 노드들(140)을 포함한다. 여기서, 코어들 혹은 노드들(140)은 일반적인 컴퓨터 혹은 서버 클러스터의 노드일 수 있다.
분산 행렬 계산 제어 장치(110)는 행렬 곱 기반 융합 계획을 생성하는 행렬 곱 기반 융합 계획 생성기(120), 큐보이드 기반 융합 연산을 수행하는 큐보이드 기반 융합 연산 실행기(130)를 포함한다.
행렬 곱 기반 융합 계획 생성기(120)는 질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성한다.
행렬 곱 기반 융합 계획 생성기(120)는 융합 계획 후보군 결정 모듈(121) 및 융합 계획 결정 모듈(122)을 포함할 수 있다.
융합 계획 후보군 결정 모듈(121)은 질의 계획에서 모든 행렬 곱 연산자에 대하여 규칙 기반 방식을 통해 주변 연산자를 융합하여 부분 융합 계획 후보군을 결정한다. 이러한 행렬 곱 기반 융합 계획 생성기(120)는 사용자 혹은 시스템으로부터 주어진 방향성 비순환 그래프 형태의 질의 계획과 질의 계획에 사용될 입력 행렬들의 메타 정보인 차원의 크기, 희소성, 크기 등과 시스템 정보인 전체 코어들의 수, 노드의 수, 코어가 사용 가능한 주 기억 장치의 크기 등을 기초로 행렬 곱 기반 융합 계획 후보군을 결정할 수 있다. 융합 계획 후보군 결정 모듈(121)에는 질의 계획이 입력 인자로 주어지며, 비순환 그래프 형태의 질의 계획을 탐색하여 규칙 기반 방법을 통해 행렬 곱 기반의 부분 융합 계획 후보군들을 결정할 수 있다.
융합 계획 결정 모듈(122)은 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 하는 비용 기반 방식을 통해 부분 융합 계획 후보군으로부터 융합 계획을 결정한다. 융합 계획 결정 모듈(122)은 후보군에서 주어진 시스템 자원에 따른 최적의 부분 융합 계획들을 결정할 수 있다. 융합 계획 결정 모듈(122)은 융합 계획 후보군 결정 모듈(121)에서 융합 계획 후보군들을 전달받아 후보군들을 탐색하면서 코어별 사용 가능한 주 기억 장치 크기와 통신 및 계산 비용에 따라 비용 기반 방법을 통해 최종 융합 계획을 결정한다.
큐보이드 기반 융합 연산 실행기(130)는 융합 계획을 실행하기 위해 탐색하는 융합 계획 탐색 모듈(131), 탐색한 연산자를 실행하는 연산자 실행 모듈(132), 탐색한 부분 융합 계획을 융합 연산자로 실행하는 큐보이드 기반 융합 공간 분할 모듈(133), 융합 연산 실행 모듈(134)을 포함할 수 있다. 여기서, 융합 계획 탐색 모듈(131)은 융합 계획 내 실행되지 않은 연산자를 탐색할 수 있고, 융합 계획을 방향성 비순환 그래프 형태로 입력 받아 융합 계획 내 연산자에 해당하는 정점들을 방문하여 해당 연산자를 실행하기 위해 선택할 수 있다. 연산자 실행 모듈(132)는 탐색된 연산자가 기본 행렬 연산자인 경우에 3차원 모델 공간으로 표현하지 않고 실행할 수 있다. 큐보이드 기반 융합 공간 분할 모듈(133)은 탐색된 연산자가 융합 연산자로 판별되면 큐보이드 기반 융합 공간 분할을 수행할 수 있다. 융합 연산 실행 모듈(134)는 큐보이드 기반 융합 공간 분할이 수행된 융합 연산을 실행할 수 있고, 입력 행렬들의 메타 정보와 시스템 자원 정보를 이용해 결정한 파라미터를 기초로 입력 행렬들을 다수의 큐보이드로 구성한 후 각 큐보이드를 코어들 또는 상기 노드들에게 할당할 수 있다.
코어들 혹은 노드들(140)은 컴퓨터를 구성하는 하드웨어로서 복수의 중앙 처리 장치(150), 주 기억 장치(160), 그리고 적어도 하나 이상의 보조 기억 장치(170)를 포함할 수 있다. 중앙 처리 장치(150)은 분산 행렬 계산 제어 장치(110)로부터 분산 행렬 연산 단계에서 요구하는 작업(151)들을 각 코어들에게 할당할 수 있다. 작업(151)의 수는 병렬화 수준 및 중앙 처리 장치(150)이 가진 코어의 개수에 따라 결정될 수 있다. 주 기억 장치(160)는 큐보이드 기반 융합 연산 실행기(130)으로부터 구성된 큐보이드(161)들을 적재할 수 있다. 중앙 처리 장치(150)와 주 기억 장치(160)는 메모리 컨트롤러(190)을 통행 연결될 수 있다. 주 기억 장치(160)와 보조 기억 장치(170)는 PCI-E 혹은 SATA 인터페이스(180)으로 연결되거나 다른 다양한 인터페이스로 연결되어 있을 수 있다. 적어도 모든 계산 노드들에 연결된 전체의 보조 기억 장치(170)은 입력 행렬(171)과 결과 행렬(172)을 담을 수 있을 정도로 충분히 클 수 있다.
이하의 실시예들에서 사용되는 기호 및 기호의 의미는 도 2에 도시된 표를 참조한다.
도 3은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 융합 계획 생성과 융합 연산 실행을 설명하기 위한 흐름도이다. 도 3를 참조하면, 질의 계획에서 행렬 곱 기반의 융합 계획을 생성(310)할 수 있고, 결정된 융합 계획을 탐색하면서 질의 결과를 얻기 위한 계산(320)을 실행할 수 있다.
단계(310)에서 행렬 곱 기반 융합 계획 생성기(120)를 통해서 사용자 혹은 시스템으로부터 입력 받은 질의 계획에서 융합 계획을 생성하는 방법에 대해서 도 4를 참조하여 설명한다.
단계(320)에서 행렬 곱 기반 융합 계획 생성기(120)에서 결정된 융합 계획을 큐보이드 기반 융합 연산 실행기(130)에서 융합 계획 탐색 모듈(131)을 이용하여 탐색하여 질의 결과를 얻기 위해 연산자 실행 모듈(132), 큐보이드 기반 융합 공간 분할 모듈(133), 융합 연산 실행 모듈(134)를 이용하여 연산자를 실행하며, 각 연산자들은 보조 기억 장치(170)에 저장된 입력 행렬(171)을 주 기억 장치(160)로 행렬을 적재하여 연산을 수행한다. 큐보이드 기반 융합 연산 실행기(130)를 이용하여 융합 계획을 실행하는 방법에 대해서 도 10를 참조하여 설명한다.
도 4는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 행렬 곱 기반 융합 계획 생성 단계를 나타낸 흐름도이다. 주어진 질의 계획에서 융합 계획을 생성하기 위해 규칙 기반 방법을 통해 융합 계획 후보군 결정(410)을 한 이후, 주어진 후보군들을 비용 기반 방법을 통해 최종 융합 계획을 결정(420)을 한다.
단계(410)에서 방향성 비순환 그래프 형태의 질의 계획을 입력 받아 융합 계획 후보군 결정 모듈(121)을 이용하여 부분 융합 계획 후보군들을 결정할 수 있다. 부분 융합 계획 후보군을 결정하는 방법에 대해서 도 5를 참조하여 설명한다.
단계(420)에서 단계(410) 이후 생성된 부분 융합 계획 후보군들을 최종 융합 계획으로 결정하기 위해 융합 계획 결정 모듈(122)을 이용하여 메모리 사용, 통신 비용, 계산 비용 등을 이용하여 비용 기반 방법을 통해 최종 융합 계획을 결정한다. 최종 융합 계획을 결정하는 방법에 대해서는 도 6을 참조하여 설명한다.
도 5는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 행렬 곱 기반 융합 계획 후보군을 결정하는 방법을 나타낸 흐름도이다. 부분 융합 계획 후보군은 질의 계획 내 행렬 곱 연산자(510)를 기준으로 주변의 연산자들(520)을 규칙 기반 방법(540, 545)를 통해 가능한 많이 융합하여 결정한다.
단계(505)에서 후보군 집합 을 초기화하고, 질의 계획 내 모든 연산자들을 집합 으로 할당한다.
단계(510)에서 의 연산자들을 탐색하여 행렬 곱 연산자를 찾는다.
단계(515)에서 행렬 곱 연산자 와 함께 새로운 부분 융합 계획 후보군 을 초기화한다.
단계(520)에서 후보군 의 주변에 존재하는 인접정점들을 찾는다. 즉, 후보군 내에 존재하는 정점들과 연결된 인접정점들을 찾고, 인접정점들이 이미 다른 후보군들에 속하거나 처리가 되었다면 제외한다.
단계(525)에서 인접정점이 존재하지 않는다면 단계(530)을 통해서 후보군 를 부분 융합 계획 후보군으로 결정한다.
단계(535)에서 인접정점들 중 하나의 연산자 를 선택하여 규칙 기반 방법을 통해 를 후보군 에 포함할지에 대한 결정을 진행한다.
단계(540)에서 가 융합 연산을 종료해야만 하는 연산자인지 확인한다. 융합 연산을 종료하는 연산자는 연산자의 결과 행렬이 반드시 구체화되어야 하는 집계연산자 또는 분산환경에서 네트워크를 통한 셔플이 필요한 연산자 등을 의미한다. 이 종료 연산자가 아니면 단계(550)을 통해 후보군 에 포함시킨다.
단계(545)에서 가 종료연산자이면서 현재 부분 융합 계획 후보군의 가장 마지막에 수행되는지를 확인한다. 마지막에 수행되는 연산자이면 단계(550)에 의해서 후보군 에 포함되지만, 아닐 경우에는 포함되지 않는다.
단계(555)에서 에 대해서 중복으로 후보군에 포함되지 않도록 하기 위해서 에서 제거한다.
단계(560)에서 후보군 의 인접정점들을 모두 처리한지를 확인하고, 후보군 의 인접정점이 더 이상 없을 때까지 단계(520)에서 단계(560)을 반복하여 후보군 를 결정한다. 내의 행렬 곱 연산자가 없거나 모두 처리가 되었다면 지금까지 결정된 후보군들을 다음 단계인 최종 융합 계획 결정 단계로 넘긴다.
도 6은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 후보군들 중에서 최종 융합 계획 결정하는 방법을 나타낸 흐름도이다. 각 후보군들이 실행되었을 때의 메모리 사용, 통신, 계산 비용 등을 예측(625)하여 해당 후보군에서 파생될 수 있는 후보군들(645)과 비용을 비교(660)하여 적은 비용을 가지는 후보군을 최종 부분 융합 계획으로 결정할 수 있다.
단계(605)에서 질의 계획과 융합 계획 후보군 결정 모듈(121)에서 결정된 후보군들의 집합과 코어당 사용 가능한 메모리 크기를 입력인자로 받는다.
단계(610)에서 최종 융합 계획 을 초기화한다.
단계(615)에서 후보군 집합 에서 후보군 를 선택한다.
단계(620)에서 후보군 에 속한 행렬 곱 연산자들 중 입력 행렬의 차원()이 가장 큰 연산자 를 찾는다.
단계(625)에서 후보군 를 큐보이드 기반 융합 연산자를 이용해 실행하였을 경우, 최적의 파라미터와 비용을 계산한다. 최적의 파라미터와 비용을 계산하는 방법에 대해서는 도 7을 참조하여 설명한다.
단계(630)와 단계(635)에서 후보군 을 제외한 행렬 곱 연산자 를 찾고, 와 DAG 상에서 가까운 순으로 정렬한다.
단계(640)에서 를 가까운 순으로 선택한다.
단계(645)에서 후보군 를 기준으로 두 개의 후보군들 로 나눈다.
단계(650)와 단계(655)에서 나눠진 두 후보군에 대한 비용을 계산한다.
단계(660)에서 후보군 과 나눠진 두 후보군 들의 비용을 비교한다.
단계(665)에서 두 후보군으로 나눠졌을 때 비용이 적게 든다면 후보군 내 행렬 곱 연산자가 하나뿐인 를 최종 부분 융합 계획으로 결정하고 후보군 는 더 파생될 수 있는지 확인하기 위해 후보군 집합 에 포함시킨다.
단계(670)에서 후보군 내 모든 행렬 곱 연산자들에 대해서 비용 비교를 하였는지 확인한다.
단계(675)에서 후보군 은 모든 행렬 곱 연산자에 대해서 비용 비교를 하고 현재 상태로 융합 연산을 실행하는 것이 최적의 상태이므로 최종 융합 계획에 포함시킨다.
단계(680)에서 후보군 집합 내 모든 후보군들에 대해서 처리하였는지 확인한다.
도 7은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 주어진 부분 융합 계획에서 최적의 파라미터와 비용을 계산하는 단계를 나타낸 흐름도이다.
단계(710)에서 현재 비용을 정수(integer)로 표현할 수 있는 가장 큰 값으로 초기화한다.
단계(720)에서 부분 융합 계획을 큐보이드 기반 융합 연산자로 실행할 경우, 가능한 파라미터들의 후보군들을 결정한다.
단계(730)에서 파라미터 후보군들 중 하나를 선택한다.
단계(740)에서 현재 파라미터로 실행될 수 있는 태스크들의 수가 현재 사용 가능한 코어들 수보다 큰지를 확인한다. 코어들 수보다 태스크들의 수가 적을 경우에는 현재 파라미터를 스킵하고 다음 파라미터를 다시 선택한다.
단계(750)에서 현재의 파라미터를 사용하였을 경우, 하나의 큐보이드가 코어당 사용 가능한 메모리에 적재될 수 있는지 확인한다. 메모리 사용량을 계산하는 방법에 대해서는 도 8을 참조하여 설명한다.
단계(760)에서 현재의 파라미터를 사용하였을 경우, 통신 비용과 계산 비용을 서로 비교를 위해 최고 네트워크와 계산 대역폭을 사용하여 정규화하여 구한다. 통신, 계산 비용을 계산하는 방법에 대해서는 도 8을 참조하여 설명한다.
단계(770)에서 통신 비용과 계산 비용 중 더 큰 비용이 현재 비용과 비교한다.
단계(780)에서 현재의 파리미터를 사용하였을 때 비용이 더 적을 경우, 해당 파라미터를 현시점 최적의 파라미터로 결정한다.
단계(790)에서 파라미터 후보군 모두를 처리했는지 확인한다.
도 8은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 부분 융합 계획 와 파라미터 이 주어졌을 때, 메모리, 통신, 계산 비용을 계산하는 과정을 설명하기 위한 도면이다. 세 가지 비용을 계산할 때 동일한 과정이 이용된다.
단계(805)에서 초기 비용을 0으로 초기화한다.
단계(810)에서 부분 융합 계획 를 행렬 곱 연산자 기반으로 네 개의 융합 공간 으로 나누고, 하나를 선택한다.
단계(815)에서 선택된 공간 공간이 아니며 내 행렬 곱 연산자가 포함되는지 확인한다. 행렬 곱 연산자를 포함하지 않거나 공간일 경우 단계 (845)로 진행한다.
단계(825)에서 선택된 공간 공간일 경우, 파라미터 와 공간 를 입력인자로 설정하여 재귀 함수로써 도 8에 해당하는 과정으로 다시 실행한다.
단계(830)에서 선택된 공간 공간일 경우, 파라미터 와 공간 를 입력인자로 설정하여 재귀 함수로써 도 8에 해당하는 과정으로 다시 실행한다.
단계(835)에서 선택된 공간 공간일 경우, 파라미터 와 공간 를 입력인자로 설정하여 재귀 함수로써 도 8에 해당하는 과정으로 다시 실행한다.
단계(840)에서 주어진 의 융합 공간들을 모두 처리하였는가를 확인한다.
단계(845)에서 선택된 공간 에서 포함되는 입력 행렬들 중 하나를 선택한다. 계산 비용을 계산할 경우에는 선택된 공간 에서 포함되는 연산자들 중 하나를 선택한다.
단계(850)에서 선택된 입력 행렬이 구체화되는지를 확인한다. 구체화된다면 실제로 메모리와 통신에 이용되기 때문에 비용을 계산하게 된다. 구체화되지 않는다면 선택된 행렬에 대해서는 비용을 계산하지 않고 다른 행렬을 선택한다.
단계(860)에서 선택된 공간 공간일 경우, 현재 선택된 행렬 또는 연산자에 의해 발생하는 메모리, 통신 및 계산 비용을 계산한다. 여기서 현재의 과정이 메모리 사용에 대한 비용을 계산하기 위해서 사용된다면, 을 이용하여 메모리 사용에 대한 비용을 계산한다.
단계(865), 단계(870), 단계(875)에서 단계(860)와 유사하게 선택된 공간 이 각각 , , 공간일 경우에 대하여 메모리, 통신 및 계산 비용을 계산한다.
단계(880)에서 공간 에 속한 연산자 혹은 행렬들 모두 처리하였는지 확인한다.
도 9는 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 융합 연산 실행을 위한 방법을 나타낸 흐름도이다. 행렬 곱 기반 융합 계획 생성기(120)에서 생성된 융합 계획을 받아 큐보이드 기반 융합 연산 실행기(130)에서 융합 계획 탐색 모듈(131)을 이용하여 융합 계획을 탐색하여 방문한 연산자들에 대해서 기본 행렬 연산자일 경우에는 연산자 실행 모듈(132) 이용하여 해당 연산자를 실행하고 융합 연산자일 경우에는 큐보이드 기반 융합 공간 분할 모듈(133)과 융합 연산 실행 모듈(134)를 이용하여 큐보이드 기반 융합 연산 방법을 실행한다.
단계(910)에서 주어진 융합 계획을 융합 계획 탐색 모듈(131)을 이용하여 융합 계획 내 실행되지 않은 연산자를 방문하고 선택한다.
단계(920)에서 선택된 연산자가 부분 융합 계획인지 확인한다.
단계(930)에서 부분 융합 계획일 경운 큐보이드 기반 융합 연산자를 이용하여 실행한다. 큐보이드 기반 융합 연산자가 실행되는 단계에 대해서는 도 10을 참조하여 설명한다.
단계(940)에서 기본 행렬 연산자일 경우, 연산자 실행 모듈(132)을 이용하여 실행한다.
단계(950)에서 융합 계획 내 모든 연산자를 실행했는지를 확인한다.
도 10은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 큐보이드 기반 융합 연산자 실행에 대한 방법을 나타낸 흐름도이다.
단계(1010)에서 부분 융합 계획의 입력 행렬들을 큐보이드 기반 융합 공간 분할 방법을 이용하여 각 코어들에게 할당한다. 분할 방법에 대해서는 도 11을 참조하여 설명한다.
단계(1020)에서 각 코어들은 할당 받은 입력 행렬들의 블록들이 포함된 큐보이드를 사용하여 부분 융합 계획의 융합 연산을 수행한다. 융합 연산을 실행하는 것에 대해서는 도 12를 참조하여 설명한다.
도 11은 본 발명의 일 실시예에 의한 분산 행렬 계산 제어 방법에 따른 큐보이드 기반 융합 공간 분할 방법을 나타낸 흐름도로서, 주어진 부분 융합 계획과 사용 가능한 하드웨어 자원상황에 따라 결정된 최적 파라미터를 이용하여 큐보이드 기반 공간 분할방법을 이용하여 입력 행렬들을 코어들에게 분할하는 방법에 대해서 설명하는 도면이다.
단계(1110)에서 부분 융합 계획, 최적 파라미터 및 입력 행렬 블록을 입력인자로 받고 최적 파라미터 기반으로 큐보이드들을 초기화한다.
단계(1120)에서 입력 행렬 블록들 중 하나인 를 선택한다.
단계(1130)에서 가 속하는 융합 공간을 확인한다.
단계(1140)에서 단계(1160)은 -공간에 속하는 경우, 개의 큐보이드의 인덱스를 계산하여 큐보이드들에게 할당한다. -공간에 속하는 경우, 개의 큐보이드의 인덱스를 계산하여 큐보이드들에게 할당한다. -공간에 속하는 경우, 개의 큐보이드의 인덱스를 계산하여 큐보이드들에게 할당한다.
단계(1170)에서 모든 블록들을 큐보이드에 할당하였지는 확인한다.
단계(1180)에서 큐보이드들을 담당하는 코어들 혹은 노드들에게 분배한다.
도 12는 일 실시예에 따른 큐보이드를 받은 코어 혹은 노드가 큐보이드 내 블록들을 이용하여 부분 융합 계획의 융합 연산 방법에 대해서 설명하는 도면이다.
단계(1205)에서 입력으로 부분 융합 계획과 큐보이드를 받는다.
단계(1210)부터 단계(1220)은 융합 연산의 결과 행렬 중 결과 블록 를 계산하기 위해 필요한 블록들을 큐보이드에서 선택하고(1210), 선택된 블록들을 이용하여 융합 연산을 하여 결과 블록 를 계산하고(1215), 큐보이드를 이용하여 계산할 수 있는 모든 결과 블록들을 계산하였는지 확인한다(1220).
단계(1225)부터 단계(1250)은 부분 융합 계획에서 다른 코어 혹은 노드에 할당된 큐보이드의 결과 블록들과 함께 집계 연산이 필요한지 판단하여(1225), 집계 연산이 필요할 경우 동일한 인덱스를 가지는 결과 블록들을 동일한 코어들 혹은 노드들에게 분배하고(1230), 동일한 인덱스를 가지는 결과 블록들을 이용하여 필요한 집계 연산을 수행(1235, 1240, 1245)하여 최종 결과 행렬을 보조 기억장치에 저장한다(1250).
도 13는 임의의 질의 계획에 대한 3차원 모델 공간을 표현하는 방법에 대한 예제를 설명하는 도면이다. (a)의 임의의 질의 계획에 대해서 하나의 부분 융합 계획으로 생성될 경우 (b)와 같이 3차원 모델 공간에서 표현 가능하다. (a)에서 리프(leaf) 노드인 A, B, C, D, E, X는 입력 행렬이 되며, 상위 노드들은 연산자를 표현한다. 여기서, 는 행렬 곱을 의미한다. (a)의 부분 융합 계획을 3차원 모델 공간으로 표현하면, (a)의 의 공통으로 포함된 행렬 곱 연산자는 (b)의 i, j, k 축으로 구성된 3차원 MM-space로 나타나는 공간으로 표현된다. MM-space의 왼쪽 입력 행렬을 결과 행렬로 가지는 는 (b)의 L-space로 표현되며, 는 각각 R-과 O-space로 표현할 수 있다.
도 14는 부분 융합 계획에 대한 3차원 모델 공간에 대해서 큐보이드 기반 공간 분할 방법에 대한 예제를 설명하는 도면이다. (a)는 도 13(a)의 예제인 3차원 모델 공간을 파라미터 (P=2, Q=2, R=2)를 이용하여 분할한 예제를 보여준다. MM-space는 (P, Q, R) 큐보이드 분할 방법을 이용하여P * Q * R = 8 개의 큐보이드로 분할되며 원점 인덱스를 가지는 큐보이드는 이 된다. L-, R-, 그리고 O-space는 각각 (P=2, 1, R=2), (1, Q=2, R=2), 그리고 (P=2, Q=2, 1)를 이용한 큐보이드 분할 방법을 이용하여 분할된다. (b), (c), 그리고 (d)는 각 분할 방법에 의해서 분할된 L-, R-, O-space를 구체적으로 보여준다. 점선으로 표현된 블록들은 구체화되지 않는 것을 의미한다. (b)에서 입력 행렬 A, B, C는 일렬로 배열되어 있고 같은 인덱스를 가지는 블록들은 같은 큐보이드들에게 할당되며 여기서 출력행렬은 MM-space의 행렬 곱에 입력되기 ‹š문에 구체화되지 않는다. (c)에서 입력 행렬 D와 E는 행렬 곱에 의해서 곱해지기 때문에 복셀의 형태로 표현되며, 해당 곱의 결과 행렬은 (b)에서와 같이 MM-space의 입력이되기 때문에 구체화되지 않는다. (d)에서도 모든 중간 행렬이 구체화되지 않고 최종 출력 행렬이 구체화된다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
110: 분산 행렬 계산 제어 장치
120: 행렬 곱 기반 융합 계획 생성기
121: 융합 계획 후보군 결정 모듈
122: 융합 계획 결정 모듈
130: 큐보이드 기반 융합 연산 실행기
131: 융합 계획 탐색 모듈
132: 연산자 실행 모듈
133: 큐보이드 기반 융합 공간 분할 모듈
134: 융합 연산 실행 모듈

Claims (12)

  1. 분산 행렬 계산 제어 장치가 수행하는 분산 행렬 계산 제어 방법으로서,
    질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 단계와,
    상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드(cuboid) 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 단계를 포함하는
    분산 행렬 계산 제어 방법.
  2. 제 1 항에 있어서,
    상기 융합 계획을 생성하는 단계는,
    상기 질의 계획에서 모든 행렬 곱 연산자에 대하여 규칙 기반 방식을 통해 주변 연산자를 융합하여 부분 융합 계획 후보군을 결정하는 단계와,
    상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 하는 비용 기반 방식을 통해 상기 부분 융합 계획 후보군으로부터 상기 융합 계획을 결정하는 단계를 포함하는
    분산 행렬 계산 제어 방법.
  3. 제 1 항에 있어서,
    상기 융합 연산을 실행하는 단계는
    상기 융합 계획 내 실행되지 않은 연산자를 탐색하는 단계와,
    상기 탐색된 연산자가 기본 행렬 연산자인지 또는 융합 연산자인지를 판별하는 단계와,
    상기 기본 행렬 연산자로 판별되면 상기 3차원 모델 공간으로 표현하지 않고 실행하되 상기 융합 연산자로 판별되면 상기 큐보이드 기반 융합 공간 분할을 통해 실행하는 단계를 포함하는
    분산 행렬 계산 제어 방법.
  4. 제 3 항에 있어서,
    상기 연산자를 탐색하는 단계는,
    상기 융합 계획을 방향성 비순환 그래프(directed acyclic graph, DAG) 형태로 입력 받아 상기 융합 계획 내 연산자에 해당하는 정점들을 방문하여 해당 연산자를 실행하기 위해 선택하는
    분산 행렬 계산 제어 방법.
  5. 제 3 항에 있어서,
    상기 큐보이드 기반 융합 공간 분할을 통한 실행은 상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 이용해 결정한 파라미터를 기초로 상기 입력 행렬들을 다수의 큐보이드로 구성한 후 각 큐보이드를 상기 코어들 또는 상기 노드들에게 할당하는
    분산 행렬 계산 제어 방법.
  6. 질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 행렬 곱 기반 융합 계획 생성기와,
    상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 큐보이드 기반 융합 연산 실행기를 포함하는
    분산 행렬 계산 제어 장치.
  7. 제 6 항에 있어서,
    상기 행렬 곱 기반 융합 계획 생성기는,
    상기 질의 계획에서 모든 행렬 곱 연산자에 대하여 규칙 기반 방식을 통해 주변 연산자를 융합하여 부분 융합 계획 후보군을 결정하는 융합 계획 후보군 결정 모듈과,
    상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 하는 비용 기반 방식을 통해 상기 부분 융합 계획 후보군으로부터 상기 융합 계획을 결정하는 융합 계획 결정 모듈을 포함하는
    분산 행렬 계산 제어 장치.
  8. 제 6 항에 있어서,
    상기 큐보이드 기반 융합 연산 실행기는,
    상기 융합 계획 내 실행되지 않은 연산자를 탐색하는 융합 계획 탐색 모듈과,
    상기 탐색된 연산자가 기본 행렬 연산자인 경우에 상기 3차원 모델 공간으로 표현하지 않고 실행하는 연산자 실행 모듈과,
    상기 탐색된 연산자가 융합 연산자로 판별되면 상기 큐보이드 기반 융합 공간 분할을 수행하는 큐보이드 기반 융합 공간 분할 모듈과,
    상기 큐보이드 기반 융합 공간 분할이 수행된 융합 연산을 실행하는 융합 연산 실행 모듈을 포함하는
    분산 행렬 계산 제어 장치.
  9. 제 8 항에 있어서,
    상기 융합 계획 탐색 모듈은,
    상기 융합 계획을 방향성 비순환 그래프 형태로 입력 받아 상기 융합 계획 내 연산자에 해당하는 정점들을 방문하여 해당 연산자를 실행하기 위해 선택하는
    분산 행렬 계산 제어 장치.
  10. 제 8 항에 있어서,
    상기 융합 연산 실행 모듈은,
    상기 입력 행렬들의 메타 정보와 시스템 자원 정보를 이용해 결정한 파라미터를 기초로 상기 입력 행렬들을 다수의 큐보이드로 구성한 후 각 큐보이드를 상기 코어들 또는 상기 노드들에게 할당하는
    분산 행렬 계산 제어 장치.
  11. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 단계와,
    상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 단계를 포함하는 분산 행렬 계산 제어 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 판독 가능한 기록매체.
  12. 컴퓨터 판독 가능 기록매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    질의 계획과 입력 행렬들의 메타 정보와 시스템 자원 정보를 기초로 행렬 곱 기준으로 행렬 연산자를 융합하는 융합 계획을 생성하는 단계와,
    상기 융합 계획을 3차원 모델 공간으로 표현한 후 큐보이드 기반 융합 공간 분할을 통해 상기 입력 행렬들을 각 큐보이드를 담당하는 코어들 혹은 노드들에게 할당하여 상기 융합 계획에 따른 융합 연산을 실행하는 단계를 포함하는 분산 행렬 계산 제어 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 프로그램.
KR1020220131741A 2022-10-13 2022-10-13 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치 KR20240051715A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220131741A KR20240051715A (ko) 2022-10-13 2022-10-13 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220131741A KR20240051715A (ko) 2022-10-13 2022-10-13 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20240051715A true KR20240051715A (ko) 2024-04-22

Family

ID=90881650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220131741A KR20240051715A (ko) 2022-10-13 2022-10-13 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20240051715A (ko)

Similar Documents

Publication Publication Date Title
US9418048B2 (en) Apparatus and method for allocating shared storage areas to parallel processors for multiplication of sparse matrix and vector
Karloff et al. A model of computation for MapReduce
Wah MANIP—a multicomputer architecture for solving combinatonal extremum-search problems
US8200594B1 (en) System, method, and computer program product for accelerating a game artificial intelligence process
JP5425541B2 (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
Hong et al. MultiGraph: Efficient graph processing on GPUs
CN108475212B (zh) 使用动态分区处理数据的方法、系统和计算机可读介质
US11068504B2 (en) Relational database storage system and method for supporting fast query processing with low data redundancy, and method for query processing based on the relational database storage method
Serafini et al. Scalable graph neural network training: The case for sampling
Patidar et al. Parallel Computing Aspects in Improved Edge Cover Based Graph Coloring Algorithm
US10120717B2 (en) Method for optimizing the size of a data subset of a processing space for improved execution performance
Arnaiz-González et al. MR-DIS: democratic instance selection for big data by MapReduce
CN108415912A (zh) 基于MapReduce模型的数据处理方法和设备
KR101998020B1 (ko) 그래프 생성 방법 및 장치
WO2021202011A1 (en) Partitioning for an execution pipeline
US10171574B2 (en) Computer system, processing method, and computer-readable recording medium having job processing program
US20180349442A1 (en) Processing window partitioning and ordering for on-line analytical processing (olap) functions
US11222070B2 (en) Vectorized hash tables
Han et al. Distme: A fast and elastic distributed matrix computation engine using gpus
US20160063164A1 (en) Method for determining by optimization a multi-core architecture
KR102326586B1 (ko) 큰 규모 분산 행렬 곱 처리 방법 및 그 장치
US11599540B2 (en) Query execution apparatus, method, and system for processing data, query containing a composite primitive
KR20240051715A (ko) 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치
Serpa et al. Flexible use of temporal and spatial reasoning for fast and scalable CPU broad‐phase collision detection using KD‐Trees
Carr et al. Distributed hierarchical contour trees