KR102326586B1 - 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 - Google Patents

큰 규모 분산 행렬 곱 처리 방법 및 그 장치 Download PDF

Info

Publication number
KR102326586B1
KR102326586B1 KR1020190148945A KR20190148945A KR102326586B1 KR 102326586 B1 KR102326586 B1 KR 102326586B1 KR 1020190148945 A KR1020190148945 A KR 1020190148945A KR 20190148945 A KR20190148945 A KR 20190148945A KR 102326586 B1 KR102326586 B1 KR 102326586B1
Authority
KR
South Korea
Prior art keywords
matrix
cuboids
cuboid
size
input
Prior art date
Application number
KR1020190148945A
Other languages
English (en)
Other versions
KR20210061119A (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 KR1020190148945A priority Critical patent/KR102326586B1/ko
Priority to US17/093,718 priority patent/US20210149985A1/en
Publication of KR20210061119A publication Critical patent/KR20210061119A/ko
Application granted granted Critical
Publication of KR102326586B1 publication Critical patent/KR102326586B1/ko

Links

Images

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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products

Abstract

본 발명의 행렬 곱 연산 장치는 제1 입력 행렬 및 제2 입력 행렬을 저장하는 보조 기억 장치, 상기 제1 입력 행렬, 상기 제2 입력 행렬, CPU 메모리 크기 및 GPU 메모리 크기를 기초로 복수의 큐보이드 후보군 및 복수의 하위 큐보이드 후보군을 생성하는 큐보이드 후보군 결정 모듈, 상기 복수의 큐보이드 후보군 중 상기 CPU 메모리 크기를 기초로 상기 복수의 큐보이드의 크기를 결정하고, 상기 복수의 하위 큐보이드 후보군 중 상기 GPU 메모리 크기를 기초로 상기 복수의 하위 큐보이드의 크기를 결정하는 큐보이드 크기 결정 모듈, 상기 큐보이드 크기 결정 모듈에서 결정한 복수의 큐보이드의 크기를 기초로 상기 제1 입력 행렬 및 상기 제2 입력 행렬을 상기 복수의 큐보이드로 분할하는 행렬 분할 모듈, 상기 큐보이드 크기 결정 모듈에서 결정한 복수의 하위 큐보이드의 크기를 기초로 획득된 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 수행하는 행렬 곱 계산 모듈 및 상기 행렬 곱 계산 모듈에서 획득한 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 누적하는 행렬 블록 누적 모듈을 포함할 수 있다.

Description

큰 규모 분산 행렬 곱 처리 방법 및 그 장치 { METHOD AND APPARATUS FOR PROCESSING LARGE-SCALE DISTRIBUTED MATRIX PRODUCT }
본 발명은 그래픽 처리 장치를 이용하여 큰 규모의 분산 행렬 곱을 처리하는 방법 및 그 장치에 관한 것이다. 보다 상세하게 그래픽 처리 장치를 이용하여 통신 비용이 낮은 행렬 곱 연산을 수행하는 방법 및 그 장치에 관한 것이다.
행렬 곱은 현대 추천시스템과 기계학습부터 전통적인 선형 시스템과 그래픽 렌더링까지 컴퓨터 과학 분야의 대부분 알고리즘들에서 근간이 되는 기본적인 연산자로써 널리 사용되어 왔다.
특히, 최근 추천 시스템과 기계학습에서 사용되는 행렬 데이터의 크기가 증가함에 따라 하나의 노드에서 행렬 곱 연산을 수행 하기 어렵게 되자, 네트워크로 계산 노드가 연결되어 있는 병렬 및 분산 행렬 시스템을 활용하여 행렬을 계산 노드들에게 분산하여 행렬 곱 연산 처리가 가능한 장점 때문에 최근 분산 행렬 곱 방법의 중요성이 더욱 강조되고 있다.
다만, 분산 행렬 곱을 수행하기 위하여는 방대한 양의 메모리 비용 및 네트워크 비용이 소요된다는 한계가 존재한다. 이에 따라, 많은 양의 메모리 비용 및 네트워크 비용이 소요되지 않는 행렬 곱 연산을 수행할 수 있는 기술의 제공이 요구된다.
본 발명은 행렬의 크기 및 하드웨어의 성능에 관계 없이 효율적으로 행렬 곱 연산을 수행할 수 있는 방법 및 그 장치를 제공하는 것을 일 목적으로 한다.
본 발명은 시스템 자원을 최대한 활용하면서 큰 규모의 행렬 곱 연산을 수행할 수 있는 방법 및 그 장치를 제공하는 것을 일 목적으로 한다.
그러나 이러한 과제는 예시적인 것으로, 이에 의해 본 발명의 범위가 한정되는 것은 아니다.
본 발명의 일 실시예에 따른 행렬 곱 연산 장치는 제1 입력 행렬 및 제2 입력 행렬을 저장하는 보조 기억 장치, 상기 제1 입력 행렬, 상기 제2 입력 행렬, CPU 메모리 크기 및 GPU 메모리 크기를 기초로 복수의 큐보이드 후보군 및 복수의 하위 큐보이드 후보군을 생성하는 큐보이드 후보군 결정 모듈, 상기 복수의 큐보이드 후보군 중 상기 CPU 메모리 크기를 기초로 상기 복수의 큐보이드의 크기를 결정하고, 상기 복수의 하위 큐보이드 후보군 중 상기 GPU 메모리 크기를 기초로 상기 복수의 하위 큐보이드의 크기를 결정하는 큐보이드 크기 결정 모듈, 상기 큐보이드 크기 결정 모듈에서 결정한 복수의 큐보이드의 크기를 기초로 상기 제1 입력 행렬 및 상기 제2 입력 행렬을 상기 복수의 큐보이드로 분할하는 행렬 분할 모듈, 상기 큐보이드 크기 결정 모듈에서 결정한 복수의 하위 큐보이드의 크기를 기초로 획득된 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 수행하는 행렬 곱 계산 모듈, 및 상기 행렬 곱 계산 모듈에서 획득한 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 누적하는 행렬 블록 누적 모듈을 포함할 수 있다.
일 실시예에서 상기 보조 기억 장치는, 상기 행렬 곱 계산 모듈에서 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산 결과로 생성된 복수의 중간 결과 행렬 및 상기 행렬 블록 누적 모듈에서 상기 복수의 중간 결과 행렬을 누적하여 생성된 결과 행렬을 더 저장할 수 있다.
일 실시예에서 상기 큐보이드 크기 결정 모듈은, 주 기억 장치와 보조 기억 장치간 통신 비용 및 상기 CPU 메모리 크기를 기초로 상기 복수의 큐보이드 크기를 결정하고, CPU 와 GPU간 통신 비용 및 상기 GPU 메모리 크기를 기초로 상기 복수의 하위 큐보이드 크기를 결정할 수 있다.
일 실시예에서 상기 행렬 분할 모듈은, 상기 제1 입력 행렬의 차원(dimension) 및 상기 제2 입력 행렬의 차원(dimension)를 기초로 3차원 공간을 생성하고, 상기 3차원 공간에 상기 제1 입력 행렬 및 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성하고, 상기 3차원 모델을 분할하여 상기 복수의 큐보이드를 생성할 수 있다.
일 실시예에서 상기 행렬 곱 계산 모듈은, GPU의 스트림을 이용하여 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 병렬적으로 수행할 수 있다.
본 발명의 다른 실시예에 따른 행렬 곱 계산 방법은 제1 입력 행렬 및 제2 입력 행렬을 수신하는 단계, 상기 제1 입력 행렬의 행 차원(row dimension)에 대응되는 제1 축, 상기 제1 입력 행렬의 열 차원(column dimension)에 대응되는 제2 축 및 제2 입력 행렬의 열 차원(column dimension)에 대응되는 제3 축을 기초로 3차원 공간을 생성하고, 상기 3차원 공간 상에 상기 제1 입력 행렬과 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성하는 단계, 상기 3차원 모델을 CPU 메모리 크기를 기초로 복수의 큐보이드로 분할하는 단계, 상기 복수의 큐보이드 각각을 GPU 메모리 크기를 기초로 복수의 하위 큐보이드로 분할하는 단계, GPU를 이용하여 상기 복수의 하위 큐보이드 각각에 대응되는 행렬 원소들 간 곱 연산 결과를 획득하고, 상기 획득된 행렬 원소들 간 곱 연산 결과를 이용하여 중간 결과 행렬을 생성하는 단계 및 CPU를 이용하여 상기 중간 결과 행렬을 누적하여 결과 행렬을 생성하는 단계를 포함할 수 있다.
일 실시예에서 상기 제2 입력 행렬의 행 차원은, 상기 제1 입력 행렬의 열 차원과 동일하다.
일 실시예에서 상기 큐보이드는, 복수의 복셀로 구성되며, 복셀 vi,j,k 는 상기 제1 입력 행렬의 행렬 원소 (i, k)와 상기 제2 입력 행렬의 행렬 원소 (k, j) 간 곱 연산과 대응될 수 있다.
일 실시예에서 상기 결과 행렬은, 복수의 복셀의 합과 대응되는 행렬 원소 (i,j)로 구성될 수 있다.
일 실시예에서 상기 복수의 큐보이드로 분할하는 단계는, 상기 CPU의 주 기억 장치와 상기 CPU의 보조 기억 장치 간 통신 비용 및 상기 CPU 메모리 크기를 기초로 상기 3차원 모델을 상기 복수의 큐보이드로 분할하는 단계를 포함할 수 있다.
일 실시예에서 상기 복수의 하위 큐보이드로 분할하는 단계는, 상기 CPU와 상기 GPU 간 통신 비용 및 상기 GPU 메모리 크기를 기초로 상기 복수의 큐보이드 각각을 상기 복수의 하위 큐보이드로 분할하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 컴퓨터 프로그램은 컴퓨터를 이용하여 제1항 내지 제5항 중 어느 한 항의 방법을 실행시키기 위하여 기록 매체에 저장될 수 있다.
이에 한정되지 않고 본 발명의 또 다른 실시예에 따른 분산 행렬 곱 방법은 각각 IХK의 블록들과 KХJ의 블록들을 가지는 두 개의 행렬들을 입력 행렬들을 가지며 그 결과는 IХJ의 블록들을 가지는 행렬을 생성하는 것으로 기초로, 입력 행렬들을 큐보이드 기반 분할하는 단계, 상기 큐보이드들을 기초하여 그래픽 처리 장치 기반 행렬 곱 단계, 상기 큐보이드의 결과인 중간 결과 블록들을 정확한 결과 행렬 블록들로 생성하기 위한 행렬 누적 합 단계를 포함할 수 있다.
일 실시예에 따르면, 상기 분산 행렬 곱 방법이 적용되는 행렬 계산 시스템은 병렬 처리 머신에서 구동이 되고 각 단계들을 제어하는 복수의 중앙 처리 장치, 입력 행렬들의 일부 블록들을 임시로 저장하는 주 기억 장치, 행렬 곱을 계산하는 그래픽 처리 장치, 입력 행렬들과 결과 행렬 모두를 저장하는 보조 기억장치를 포함할 수 있다.
일 실시예에서 상기 행렬 계산 시스템은 컨트롤 그룹을 통해 관리된다. 상기 컨트롤 그룹은 병렬 처리 머신의 경우 중앙 처리 장치의 하나의 쓰래드(thread)이고, 다수의 머신들로 구성된 소규모 클러스터의 경우 분산 처리 시스템을 위한 마스터-슬레이브 구조의 마스터 노드에 해당하는 머신일 수 있다.
일 실시예에서 상기 컨트롤 그룹은 상기 큐보이드 기반 분할 단계를 수행하는 큐보이드 기반 행렬 분할기, 상기 그래픽 처리 장치 기반 행렬 곱 단계를 수행하기 위해 각 큐보이드를 그래픽 처리 장치에서 다수의 스트림을 이용하여 계산하는 그래픽 처리 장치 실행기, 상기 행렬 누적 합 단계를 수행하기 위한 행렬 누적 합 실행기를 포함할 수 있다.
일 실시예에서 상기 큐보이드 기반 행렬 분할기는 사용자 혹은 시스템으로부터 입력 행렬들의 메타 정보인 차원의 크기, 희소성, 크기 등과 시스템 정보인 전체 코어들의 수, 노드의 수, 코어가 사용 가능한 주 기억 장치의 크기와 코어가 사용 가능한 그래픽 처리 장치의 크기 등을 기초로, 큐보이드 후보군 결정 모듈, 상기 후보군에서 최적의 큐보이드 분할 방법의 파라미터 선택하는 큐보이드 크기 결정 모듈, 상기 파라미터를 활용한 입력 행렬들에 대한 행렬 분할 모듈을 포함할 수 있다.
일 실시예에서 상기 큐보이드 후보군 결정 모듈은 입력 인자가 행렬 일 경우 행렬 곱을 3차원 모델로 표현하여 3차원 모델을 다수의 큐보이드 형태로 분할 할 수 있는 모든 경우에 대한 큐보이드 후보군을 결정하고, 입력 인자가 큐보이드 일 경우 해당 큐보이드를 다수의 하위 큐보이드들로 분할 할 수 있는 모든 경우에 대한 하위 큐보이드 후보군을 결정할 수 있다.
일 실시예에서 상기 큐보이드 크기 결정 모듈은 상기 큐보이드 후보군 결정 모듈에서 큐보이드 후보군을 전달 받을 경우 해당 후보군을 탐색하면서 코어 별 사용 가능한 주 기억 장치 크기에 알맞은 큐보이드 크기를 결정하는 후보군들 중 최소의 통신 비용을 발생하는 후보군을 선택하여 큐보이드 크기를 결정하고, 하위 큐보이드 후보군을 전달 받을 경우 해당 후보군 중 사용 가능한 그래픽 주 기억 장치의 크기에 알맞으면서 주 기억 장치와 그래픽 처리 장치 간의 통신 비용이 최소화하는 후보군을 선택하여 하위 큐보이드 크기를 결정할 수 있다.
일 실시예에서 상기 행렬 분할 모듈은 상기 큐보이드 크기 결정 모듈에서 결정된 파라미터를 기반으로 입력 행렬들을 다수의 큐보이드로 구성하며, 각 큐보이드를 해쉬 기반 혹은 임의의 방법으로 담당하게 될 코어들 혹은 노드들에게 할당할 수 있다.
일 실시예에서 상기 그래픽 처리 장치 실행기는 그래픽 처리 장치의 스트림들을 관리하는 스트림 모듈, 그래픽 처리 장치에서 하위 큐보이드를 계산하는 행렬 곱 계산 모듈을 포함할 수 있다.
일 실시예에서 상기 스트림 모듈은 그래픽 처리 장치의 실행을 비동기적으로 수행 할 수 있도록 해주는 다수의 스트림들을 관리할 수 있다.
일 실시예에서 상기 행렬 곱 계산 모듈은 상기 큐보이드 기반 행렬 분할기에서 하위 큐보이드 분할을 위해 결정된 파라미터를 기반으로 큐보이드를 다수의 하위 큐보이드로 구성하여 스트림 모듈에서 관리되는 스트림들 중 일부를 활용하여 하위 큐보이드에 대한 행렬 곱을 계산할 수 있다.
일 실시예에서 상기 행렬 누적 합 실행기는 상기 그래픽 처리 장치 실행기에 의해서 계산된 큐보이드들의 중간 결과 행렬 블록들을 결과 행렬 블록들로 생성하기 위해서 코어들 혹은 노드들간 셔플(shuffle)하여 누적 합계를 계산하는 행렬 블록 누적 모듈을 이용하여 상기 분산 행렬 곱의 마지막 단계인 행렬 누적 합 단계를 수행할 수 있다.
일 실시예에서 상기 행렬 계산 시스템은 복수의 중앙 처리 장치, 주 기억 장치와 PCI_E 및 SATA 인터페이스로 연결된 복수의 그래픽 처리 장치와 보조 기억 장치로 구성되어 있다. 행렬 계산 시스템의 중앙 처리 장치가 가진 계산 자원인 코어 (Core)와 그래픽 처리 장치가 가진 스트림(Stream)을 이용하여 그래픽 처리 장치의 코어와 기억 장치들 (주 기억 장치와 그래픽 주 기억 장치)를 가용 메모리 크기를 전부 사용할 수 있다. 주 기억 장치는 다수의 큐보이드들이 적재되며, 그래픽 주 기억 장치에는 다수의 하위 큐보이드들이 적재될 수 있다.
일 실시예에서 상기 각 계산 자원인 주 기억 장치와 코어는 큐보이드를 할당 받아 해당 큐보이드를 해당 코어가 사용 가능한 그래픽 주 기억 장치의 크기에 따라서 최적의 파라미터를 선택하여 하위 큐보이드로 구성하는 것을 수행하며, 생성된 하위 큐보이드들은 데이터 전송을 최소화한 순서로 그래픽 처리 장치의 스트림들에 의해서 그래픽 처리 장치의 코어들에서 행렬 곱 계산되며, 하위 큐보이드들이 계산이 끝난 이후에 각 스트림들은 중간 결과 블록들을 그래픽 주 기억 장치에서 주 기억 장치로 전송 할 수 있다.
일 실시예에서 상기 중앙 처리 장치의 코어는 중간 결과 블록들을 셔플하여 누적 합 계산을 수행한 이후, 결과 행렬 블록들을 보조 기억 장치로 저장할 수 있다.
상기한 바와 같이 이루어진 본 발명의 일 실시예에 따르면, 병렬 처리 머신에서 사용 가능한 기억 장치들의 크기보다 큰 행렬들에 대한 행렬 곱 연산을 수행할 수 있다.
본 발명의 일 실시예에 따른 행렬 곱 수행 방법은 입력 행렬들에 대한 정보를 기초로 정해진 비용 기반 모델을 이용하여 효율적인 통신 비용으로 행렬 곱 연산을 수행할 수 있다.
본 발명은 기존의 시스템에서 분산 행렬 곱을 수행 할 때 이용하지 못하는 그래픽 처리 장치를 이용하기 위해 이론적으로 동일한 큐보이드 기반 분할 방법을 통해 그래픽 주 기억 장치의 크기보다 큰 행렬에 대한 행렬 곱이 가능하나, 이러한 효과에 의해 본 발명의 범위가 한정되는 것은 아니다.
도 1은 일 실시예에 따른 행렬 곱 연산 장치를 포함하는 행렬 계산 시스템을 설명하기 위한 도면이다
도 2는 본 발명의 도면에 사용된 기호 및 그 의미를 설명하기 위한 표이다.
도 3은 일 실시예에 따른 행렬 곱 연산 방법을 설명하기 위한 순서도이다.
도 4는 도 3의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따른 큐보이드 기반 행렬 분할 방법을 설명하기 위한 순서도이다.
도 5는 도 4의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따른 큐보이드 기반 행렬 분할을 위한 최적의 파라미터를 선택하는 방법을 설명하기 위한 순서도이다.
도 6은 도 4의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따라 선택된 파라미터를 이용하여 입력 행렬을 분할 하는 방법을 설명하기 위한 도면이다.
도 7은 도 3의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따라 그래픽 처리 장치 기반 행렬 곱 방법을 설명하기 위한 순서도이다..
도 8은 도 7의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따른 하위 큐보이드를 결정하기 위한 최적의 파라미터를 선택하는 방법을 나타낸 흐름도.
도 9는 도 7의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따른 큐보이드를 다수의 하위 큐보이드로 분할 하는 방법을 설명하기 위한 순서도이다.
도 10은 도 7의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따른 그래픽 처리 장치에서 하위 큐보이드에 속하는 블록들에 대한 행렬 곱 계산하는 방법을 설명하기 위한 순서도이다.
도 11은 도 3의 일부 동작을 상세히 설명하기 위한 도면으로, 일 실시예에 따른 분산 행렬 곱 방법에서 행렬 누적 합 방법을 설명하기 위한 도면이다.
도 12는 일 실시예에 따른 큐보이드 기반 행렬 분할 방법을 설명하기 위한 예시도이다.
이하, 본 개시의 다양한 실시예가 첨부된 도면과 연관되어 기재된다. 본 개시의 다양한 실시예는 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들이 도면에 예시되고 관련된 상세한 설명이 기재되어 있다. 그러나, 이는 본 개시의 다양한 실시예를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 다양한 실시예의 사상 및 기술 범위에 포함되는 모든 변경 및/또는 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용되었다.
본 개시의 다양한 실시예에서 사용될 수 있는 "포함한다" 또는 "포함할 수 있다" 등의 표현은 개시(disclosure)된 해당 기능, 동작 또는 구성요소 등의 존재를 가리키며, 추가적인 하나 이상의 기능, 동작 또는 구성요소 등을 제한하지 않는다. 또한, 본 개시의 다양한 실시예에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 개시의 다양한 실시예에서 "또는" 등의 표현은 함께 나열된 단어들의 어떠한, 그리고 모든 조합을 포함한다. 예를 들어, "A 또는 B"는, A를 포함할 수도, B를 포함할 수도, 또는 A 와 B 모두를 포함할 수도 있다.
본 개시의 다양한 실시예에서 사용된 "제1", "제2", "첫째", 또는 "둘째" 등의 표현들은 다양한 실시예들의 다양한 구성요소들을 수식할 수 있지만, 해당 구성요소들을 한정하지 않는다. 예를 들어, 상기 표현들은 해당 구성요소들의 순서 및/또는 중요도 등을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들어, 제1 사용자 기기와 제2 사용자 기기는 모두 사용자 기기이며, 서로 다른 사용자 기기를 나타낸다. 예를 들어, 본 개시의 다양한 실시예의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 새로운 다른 구성요소가 존재하지 않는 것으로 이해될 수 있어야 할 것이다.
본 개시의 다양한 실시예에서 사용한 용어는 단지 특정일 실시예를 설명하기 위해 사용된 것으로, 본 개시의 다양한 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시의 다양한 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.
일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 개시의 다양한 실시예에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 일 실시예에 따른 행렬 계산 시스템의 구조를 나타낸 도면이다. 도 1을 참조하면, 일 실시예에 따른 행렬 곱 연산을 수행하는 행렬 계산 시스템(100)은 컨트롤 그룹(110)과 하드웨어 장치(160, 170)를 포함할 수 있다. 또한, 다른 실시예에서 행렬 곱 연산을 수행하는 행렬 곱 연산 장치는 컨트롤 그룹(110)을 포함할 수 있다. 일 실시예에서 컨트롤 그룹(110)은 제1 입력 행렬 및 제2 입력 행렬을 수신하고, 상기 제1 입력 행렬의 행 차원(row dimension)에 대응되는 제1 축, 상기 제1 입력 행렬의 열 차원(column dimension)에 대응되는 제2 축 및 제2 입력 행렬의 열차원(column dimension)에 대응되는 제3 축을 기초로 3차원 공간을 생성하고, 상기 3차원 공간 상에 상기 제1 입력 행렬과 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성하고, 상기 3차원 모델을 CPU 메모리 크기를 기초로 복수의 큐보이드로 분할하며, 상기 복수의 큐보이드 각각을 GPU 메모리 크기를 기초로 복수의 하위 큐보이드로 분할하고, GPU를 이용하여 상기 복수의 하위 큐보이드 각각에 대응되는 행렬 원소들 간 곱 연산 결과를 획득하고, 상기 획득된 행렬 원소들 간 곱 연산 결과를 이용하여 중간 결과 행렬을 생성하고, CPU를 이용하여 상기 중간 결과 행렬을 누적하여 결과 행렬을 생성할 수 있다.
보다 상세하게 일 실시예에서 컨트롤 그룹(110)은 큐보이드 기반 분할 단계를 수행하는 큐보이드 기반 행렬 분할기(120), 그래픽 처리 장치 기반 행렬 곱 단계를 수행하기 위해 각 큐보이드를 그래픽 처리 장치에서 다수의 스트림을 이용하여 계산하는 그래픽 처리 장치 실행기(130), 행렬 누적 합 단계를 수행하는 행렬 누적 합 실행기(140)를 포함할 수 있다.
일 실시예에서 큐보이드 기반 행렬 분할기(120)는 사용자 혹은 시스템으로부터 입력 행렬들의 차원(dimension)의 크기, 희소성, 행렬의 크기를 포함하는 입력 행렬의 메타 정보 컴퓨팅 장치의 코어들의 수, 노드의 수, 코어가 사용 가능한 주 기억 장치의 크기와 그래픽 처리 장치의 사용 가능한 그래픽 기억 장치의 크기를 포함하는 시스템 정보를 기초로 큐보이드를 결정하는 큐보이드 후보군 결정 모듈(121), 큐보이드 후보군 결정 모듈(121)에서 획득된 큐보이드 후보군을 기초로 큐보이드 분할 방법의 파라미터를 결정하는 큐보이드 크기 결정 모듈(122) 및 큐보이드 크기 결정 모듈(122)에서 결정된 파라미터를 이용하여 입력 행렬들을 각 코어에게 분할하는 행렬 분할 모듈(123)을 포함할 수 있다.
일 실시예에서 큐보이드 후보군 결정 모듈(121)은 제1 입력 행렬, 제2 입력 행렬, CPU 메모리 크기 및 GPU 메모리 크기를 기초로 복수의 큐보이드 후보군 및 복수의 하위 큐보이드 후보군을 생성할 수 있다.
먼저, 큐보이드 후보군 결정 모듈(121)은 복수의 입력 행렬을 이용하여 입력 행렬 간 행렬 곱을 3차원 모델로 표현할 수 있다. 보다 상세하게 큐보이드 후보군 결정 모듈(121)은 복수의 입력 행렬에 포함된 제1 입력 행렬 및 제2 입력 행렬에 대하여, 상기 제1 입력 행렬의 행 차원(row dimension)에 대응되는 제1 축, 상기 제1 입력 행렬의 열 차원(column dimension)에 대응되는 제2 축 및 제2 입력 행렬의 열 차원(column dimension)에 대응되는 제3 축을 기초로 3차원 공간을 정의할 수 있다. 이후, 큐보이드 후보군 결정 모듈(121)은 상기 3차원 공간 상에 상기 제1 입력 행렬과 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성할 수 있다.
일 실시예에서 큐보이드 후보군 결정 모듈(121)은 3차원 모델을 다수의 큐보이드 형태로 분할 할 수 있는 모든 경우에 대한 큐보이드 후보군을 획득할 수 있다.다른 실시예에서 큐보이드 후보군 결정 모듈(121)은 큐보이드를 다수의 하위 큐보이드들로 분할 할 수 있는 모든 경우에 대한 하위 큐보이드 후보군을 획득할 수 있다.
일 실시예에서 큐보이드 크기 결정 모듈(122)은 복수의 큐보이드 후보군 중 상기 CPU 메모리 크기를 기초로 상기 복수의 큐보이드의 크기를 결정하고, 상기 복수의 하위 큐보이드 후보군 중 상기 GPU 메모리 크기를 기초로 상기 복수의 하위 큐보이드의 크기를 결정할 수 있다.
일 실시예에서 큐보이드 크기 결정 모듈(122)은 큐보이드 후보군 결정 모듈(121)로부터 복수의 큐보이드 후보군을 수신할 수 있다. 본 실시예에서 큐보이드 크기 결정 모듈(122)은 코어 별 사용 가능한 주 기억 장치 크기 및 통신 비용을 기초로 큐보이드의 크기를 결정할 수 있다. 예를 들어, 큐보이드 크기 결정 모듈(122)은 코어 별 사용 가능한 주 기억 장치 크기에 알맞은 파라미터 후보들 중 최소의 통신 비용을 발생하는 파라미터를 선택하여 큐보이드 크기를 결정할 수 있다.
다른 실시예에서 큐보이드 크기 결정 모듈(122)은 큐보이드 후보군 결정 모듈(121)로부터 복수의 하위 큐보이드 후보군을 수신할 수 있다. 본 실시예에서 큐보이드 크기 결정 모듈(122)은 사용 가능한 그래픽 주 기억 장치의 크기 및 주 기억 장치와 그래픽 처리 장치 간의 통신 비용을 기초로 하위 큐보이드의 크기를 결정할 수 있다. 예를 들어, 큐보이드 크기 결정 모듈(122)은 사용 가능한 그래픽 주 기억 장치의 크기에 알맞은 파라미터중 주 기억 장치와 그래픽 처리 장치 간의 통신 비용이 최소화하는 파라미터를 이용하여 하위 큐보이드의 크기를 결정할 수 있다.
일 실시예에서 행렬 분할 모듈(123)은 상기 큐보이드 크기 결정 모듈에서 결정된 파라미터를 기반으로 보조 기억 장치(163)에서 입력 행렬(166)들을 다수의 큐보이드(165)로 분할할 수 있다. 이후, 행렬 분할 모듈(123)은 전술한 다수의 큐보이드에 대한 연산을 수행할 컴퓨팅 장치의 코어들(또는 노드들)을 지정할 수 있다.
그래픽 처리 장치 실행기(130)는 그래픽 처리 장치의 스트림(171)들을 관리하는 스트림 모듈(131) 및 그래픽 처리 장치에서 하위 큐보이드에 대한 연산을 수행하는 행렬 곱 계산 모듈(132)을 포함할 수 있다.
일 실시예에서 스트림 모듈(131)은 복수의 스트림(171)들을 이용하여 그래픽 처리 장치(170)의 실행을 비동기적으로 수행하도록 할 수 있다.
행렬 곱 계산 모듈(132)은 스트림 모듈(131)에서 관리되는 스트림(171)을 이용하여 하위 큐보이드에 대한 행렬 곱 연산을 수행할 수 있다.
행렬 누적 합 실행기(140)는 상기 그래픽 처리 장치 실행기(130)에 의해서 계산된 큐보이드들의 중간 결과 행렬들을 결과 행렬들로 생성하기 위해서 코어들 혹은 노드들 간 셔플(shuffle)을 수행하여 누적 합계를 계산하는 행렬 블록 누적 모듈(141)을 포함할 수 있다.
일 실시예에서 행렬 블록 누적 모듈(141)은 중간 결과 행렬의 블록을 누적하여 결과 행렬의 블록을 생성할 수 있고, 이를 통해 행렬 곱 연산의 최종 결과 행렬을 획득할 수 있다.
일 실시예에서 행렬 곱 연산 장치는 컴퓨팅 장치(160)와 그래픽 처리 장치(170)를 포함할 수 있다. 컴퓨팅 장치(160)와 그래픽 처리 장치(170)는 PCI-E인터페이스(174)으로 연결될 수 있다.
일 실시예에서 컴퓨팅 장치(160)는 복수의 중앙 처리 장치(161), 주 기억 장치(162), 그리고 적어도 하나의 보조 기억 장치(163)를 포함할 수 있다. 중앙 처리 장치(161)는 행렬 곱 연산에서 수행되는 복수의 작업(164)들을 각 코어들에게 할당할 수 있다. 예를 들어 중앙 처리 장치(161)는 큐보이드 크기 결정 모듈(122)에서 결정된 파라미터를 이용하여 입력 행렬(166)을 각 코어들에게 할당할 수 있다.
전술한 작업(164)의 수는 병렬화 수준 및 중앙 처리 장치(161)가 가진 코어의 개수에 따라 결정될 수 있다. 주 기억 장치(162)는 큐보이드 기반 행렬 분할기(120)로부터 생성된 복수의 큐보이드(165)들을 저장할 수 있다. 중앙 처리 장치(161)와 주 기억 장치(162)는 메모리 컨트롤러(168)를 통행 연결될 수 있다. 또한, 주 기억 장치(162)와 보조 기억 장치(163)는 PCI-E 혹은 SATA 인터페이스(169)으로 연결될 수 있다. 다만 본 발명의 몇몇 실시예에 따른 행렬 곱 연산을 수행하는 컴퓨팅 장치(160)의 구성 및 구성 간 연결 관계가 이에 한정되는 것은 아니며, 각 구성은 통상의 기술자가 용이하게 설계 및 변경할 수 있는 다양한 인터페이스로 연결되어 있을 수 있음에 유의한다. 다만, 이 경우에도 적어도 모든 계산 노드들에 연결된 보조 기억 장치(163)는 최종 결과 행렬(167)의 크기보다 큰 용량이어야 함은 물론이다.
그래픽 처리 장치(170)는 그래픽 처리 장치의 코어들을 실행하기 위한 스트림(171)들과 그래픽 주 기억 장치(172)를 포함할 수 있다. 그래픽 주 기억 장치(172)는 큐보이드 기반 행렬 분할기(120)로부터 획득한 하위 큐보이드(173)들을 저장할 수 있다.
이하의 도 3 내지 도 12를 통해 본 발명의 몇몇 실시예에 따른 행렬 곱 연산 방법을 설명하기 위해 이용되는 기호의 의미는 도 2에 도시된 표에 따른 의미임을 가정한다.
도 3은 본 발명의 일 실시예에 따른 행렬 곱 연산 방법의 순서도이다.
일 실시예에 따른 행렬 곱 연산 방법은 입력 행렬들을 큐보이드로 분할(S100)하고, 획득된 복수의 큐보이드에 대하여 그래픽 처리 장치를 이용하여 행렬 곱 연산을 수행한 후(S200), 각 큐보이드를 통해 획득한 중간 결과 행렬에 대한 누적 합을 통해 결과 행렬을 획득할 수 있다(S300). 이하, 각 단계에서 수행되는 세부 단계에 대하여 상세히 설명한다.
단계 S100에서 큐보이드 기반 행렬 분할기(120)는 보조 기억 장치(163)의 입력 행렬(166)을 분할하여 주 기억 장치(162)에 복수의 큐보이드(165)로 저장할 수 있다.
보다 상세하게, 큐보이드 기반 행렬 분할기(120)는 제1 입력 행렬 및 제2 입력 행렬을 수신하고, 상기 제1 입력 행렬의 행 차원(row dimension)에 대응되는 제1 축, 상기 제1 입력 행렬의 열 차원(column dimension)에 대응되는 제2 축 및 제2 입력 행렬의 열 차원(column dimension)에 대응되는 제3 축을 기초로 3차원 공간을 생성하고, 상기 3차원 공간 상에 상기 제1 입력 행렬과 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성할 수 있다.
그리고, 큐보이드 기반 행렬 분할기(120)는 상기 3차원 모델을 CPU 메모리 크기를 기초로 복수의 큐보이드로 분할 할 수 있다. 큐보이드를 분할하는 방법에 대해서 도 4를 참조하여 설명한다.
이후, 단계 S200에서 상기 복수의 큐보이드 각각이 GPU 메모리 크기를 기초로 복수의 하위 큐보이드로 분할될 수 있고, GPU를 이용하여 상기 복수의 하위 큐보이드 각각에 대응되는 행렬 원소들 간 곱 연산 결과가 획득되고, 상기 획득된 행렬 원소들 간 곱 연산 결과를 이용하여 중간 결과 행렬이 생성될 수 있다.
보다 상세하게 전술한 복수의 큐보이드(165)들은 그래픽 처리 장치(170)의 자원 정보를 기초로 하위 큐보이드들로 분할 될 수 있다. 이후, 그래픽 처리 장치 실행기(130)는 스트림(171)들을 이용하여 하위 큐보이드(173)들을 그래픽 주 기억 장치(172)에 저장할 수 있다. 또한, 그래픽 처리 장치 실행기(130)는 하위 큐보이드(173) 각각에 대하여 행렬 곱 연산을 수행할 수 있다. 그래픽 처리 장치를 이용하여 행렬 곱 연산을 수행하는 방법에 대하여는, 도 7를 참조하여 상세히 설명한다.
단계 S300에서 행렬 누적 합 실행기(140)는 그래픽 처리 장치(170)에서 얻은 중간 결과 행렬들을 누적하여 결과 행렬을 생성할 수 있다. 중간 겨로가 행렬들의 누적 합을 계산을 하는 방법에 대해서 도 11을 참조하여 설명한다.
이하, 도 4를 참조하여 일 실시예에 따른 입력 행렬들을 큐보이드들로 분할하는 과정에 대하여 상세히 설명한다. 본 발명의 몇몇 실시예에서 입력 행렬을 복수의 큐보이드로 분할하는 방법은 입력 행렬의 메타 정보와 시스템 자원 정보를 기반으로 큐보이드의 크기는 최대한 사용 가능한 주 기억 장치의 크기와 같으면서 통신 비용을 최소화하도록 결정될 수 있다.
단계 S110에서 입력 행렬들의 각 차원의 크기(
Figure 112019118919643-pat00001
)들과 입력 행렬들과 결과 행렬의 크기(
Figure 112019118919643-pat00002
)에 대한 정보를 획득할 수 있다.
단계 S120에서 시스템 자원인 각 코어에서 사용 가능한 주 기억 장치 메모리의 크기(
Figure 112019118919643-pat00003
), 전체 노드의 수(
Figure 112019118919643-pat00004
), 노드 당 동시에 실행될 수 있는 코어들의 수(
Figure 112019118919643-pat00005
)에 대한 정보를 획득할 수 있다.
단계 S130에서 각 차원의 크기들에 대한 정보를 이용하여 큐보이드의 크기를 결정할 파라미터
Figure 112019118919643-pat00006
에 대한 후보군을 생성한다. 각 후보군은 3개의 integer (
Figure 112019118919643-pat00007
)로 구성되며, 각 integer들은
Figure 112019118919643-pat00008
의 범위를 가질 수 있다.
단계 S140에서 전술한 파라미터
Figure 112019118919643-pat00009
에 대한 후보군들 중에서 사용 가능한 메모리 크기에 맞으면서 통신 비용이 최소화하는 최적의 큐보이드 크기를 결정하는 (
Figure 112019118919643-pat00010
)을 선택할 수 있다. 최적의 파라미터를 선택하는 방법에 대하여는 도 5를 참조하여 상세히 설명한다.
단계 S150에서 최적의 파라미터를 이용하여 입력 행렬들을 복수의 큐보이드로 분할할 수 있다. 입력 행렬들을 분할하는 방법에 대하여는 도 6을 참조하여 상세히 설명한다.
도 5는 일 실시예에 따른 입력 행렬들과 시스템 자원들의 상황에 따라서 최적의 큐보이드 크기를 결정하는 방법을 설명하기 위한 순서도이다. 일 실시예에 따라 결정된 큐보이드 크기는 사용 가능한 주 기억 장치의 크기(
Figure 112019118919643-pat00011
)보다 작거나 같으면서 통신 비용을 최소화하는 크기일 수 있다.
일 실시예에서 큐보이드의 전체 수는 시스템 병렬 수준(
Figure 112019118919643-pat00012
)을 최대한 이용하기 위해 시스템에서 사용 가능한 코어들의 수보다 크도록 결정될 수 있다(S143). 이 경우, 큐보이드의 크기는 입력과 결과 행렬들에서 큐보이드 당 값들의 평균 수로써 계산될 수 있다(S144), 또한 일 실시예에서 통신 비용은 입력과 결과 행렬들이 각 큐보이드에 복제되는 수에 의해 결정될 수 있다(S146).
보다 상세하게 단계 S141에서 선택된 후보군의 통신 비용을 비교하기 위한 변수
Figure 112019118919643-pat00013
가 초기화 될 수 있다. 또한, 단계 S142에서 단계S130에서 생성된 파라미터
Figure 112019118919643-pat00014
에 대한 후보군들 중 하나가 선택될 수 있다.
단계 S143에서 선택된 후보군
Figure 112019118919643-pat00015
이 생성할 큐보이드의 수가 전체 병렬 수준(
Figure 112019118919643-pat00016
)보다 크거나 같은지 확인될 수 있다. 일 실시예에서 해당 후보군이 전체 병렬 수준보다 크다면 단계 S144이 수행될 수 있고, 다른 실시예에서 해당 후보군이 전체 병렬 수준보다 작다면 다음 후보군이 선택될 수 있다(S145).
단계 S144에서 선택된 후보군(
Figure 112019118919643-pat00017
)이 생성할 큐보이드의 크기가 코어에서 사용 가능한 주 기억 장치의 크기(
Figure 112019118919643-pat00018
)보다 작은지 확인될 수 있다. 일 실시예에서 선택된 후보군이 사용 가능한 주 기억 장치의 크기보다 크다면 다음 후보군을 선택할 수 있다(S145).
단계 S146에서 선택된 후보군(
Figure 112019118919643-pat00019
)이 발생 할 통신 비용이
Figure 112019118919643-pat00020
보다 작은지 확인될 수 있다. 일 실시예에서 선택된 후보군(
Figure 112019118919643-pat00021
)이 발생 할 통신 비용이
Figure 112019118919643-pat00022
보다 크다면 다음 후보군이 선택될 수 있다(S145).
단계 S147에서 선택된 후보군(
Figure 112019118919643-pat00023
)은 현재까지 본 후보군들 중 가장 최적이므로, 현재 후보군을 최적의 후보군(
Figure 112019118919643-pat00024
)과 최적의
Figure 112019118919643-pat00025
로써 결정할 수 있다.
단계 S148에서 모든 후보군들을 탐색했는지 여부가 확인될 수 있고, 모든 후보군이 탐색되지 않은 경우 다음 후보군을 선택할 수 있다(S145).
도 6은 일 실시예에 따라 선택된 최적의 파라미터 (
Figure 112019118919643-pat00026
)를 이용하여 입력 행렬들을 복수의 큐보이드로 분할하고, 분할된 각각의 큐보이드를 복수의 코어들에게 각각 분배하는 과정을 설명하기 위한 순서도이다.
단계 S151에서 입력 행렬을 이용하여 주 기억 장치(162)에 입력 행렬 각각이
Figure 112019118919643-pat00027
의 집합으로써 저장되고, 이후 생성 될 큐보이드
Figure 112019118919643-pat00028
들에 대한 집합
Figure 112019118919643-pat00029
가 초기화 될 수 있다.
단계 S152에서
Figure 112019118919643-pat00030
에서 하나의 블록
Figure 112019118919643-pat00031
이 선택될 수 있다.
단계 S153에서 선택된 블록
Figure 112019118919643-pat00032
이 어떤 입력 행렬에 속하는 블록인지 확인될 수 있다.
이후 S154에서 선택된 블록
Figure 112019118919643-pat00033
이 행렬
Figure 112019118919643-pat00034
의 블록인 경우, 할당될
Figure 112019118919643-pat00035
개의 큐보이드의 인덱스(
Figure 112019118919643-pat00036
)를 계산하여 블록
Figure 112019118919643-pat00037
를 대응되는 큐보이드에 할당할 수 있다.
또한, 단계 S155에서 선택된 블록
Figure 112019118919643-pat00038
가 행렬
Figure 112019118919643-pat00039
의 블록인 경우, 할당될
Figure 112019118919643-pat00040
개의 큐보이드의 인덱스(
Figure 112019118919643-pat00041
)를 계산하여 블록
Figure 112019118919643-pat00042
를 대응되는 큐보이드에 할당할 수 있다..
단계 S156에서 모든 블록이 큐보이드에 할당 되었는지 여부가 확인될 수 있다. 일 실시예에서 모든 블록이 큐보이드에 할당되지 않은 경우 다음 블록들을 선택할 수 있고(S157), 모든 블록이 큐보이드에 할당된 경우 복수의 블록이 할당된 복수의 큐보이드를 복수의 코어들 각각에 분배할 수 있다(S158).
도 7은 일 실시예에 따라 획득된 복수의 큐보이드를 큐보이드 기반 행렬 분할기(120)를 이용하여 복수의 하위 큐보이드로 분할하는 방법을 설명하기 위한 도면이다.
일 실시예에서 하위 큐보이드의 크기는 사용 가능한 그래픽 처리 장치의 그래픽 주 기억 장치의 크기(
Figure 112019118919643-pat00043
)보다 작거나 같으면서 주 기억 장치와 그래픽 처리 장치 사이의 통신 비용을 최소화하는 하위 큐보이드의 크기를 결정할 최적의 파라미터 (
Figure 112019118919643-pat00044
)를 선택할 수 있다.
보다 상세하게 단계 S210에서 그래픽 처리 장치 실행기(130)는 사용 가능한 그래픽 처리 장치의 그래픽 주 기억 장치의 크기
Figure 112019118919643-pat00045
정보를 획득할 수 있다.
이후, 단계 S220에서 집합
Figure 112019118919643-pat00046
에서 큐보이드
Figure 112019118919643-pat00047
을 선택할 수 있다.
그 다음, 단계 S230에서 하위 큐보이드의 크기를 결정할 파라미터
Figure 112019118919643-pat00048
에 대한 후보군을 생성할 수 있다. 하위 큐보이드의 크기를 결정할 파라미터 후보는 3개의 integer (
Figure 112019118919643-pat00049
)로 구성되며, 각 integer들은
Figure 112019118919643-pat00050
의 범위에서 정해질 수 있다.
단계 S240에서 파라미터
Figure 112019118919643-pat00051
의 후보군들 중 사용 가능한 그래픽 기억 장치 크기에 맞으면서 통신 비용이 최소화하는 하위 큐보이드 크기를 결정하는 최적의 파라미터(
Figure 112019118919643-pat00052
)가 선택될 수 있다. 전술한 최적의 파라미터(
Figure 112019118919643-pat00053
)를 선택하는 방법에 대하여는 이하 도 8를 참조하여 상세히 설명한다.
단계 S250에서 단계 S240에서 획득한 파라미터를 이용하여 복수의 큐보이드를 복수의 하위 큐보이드로 분할할 수 있다. 상세한 설명은 도 9을 참조하여 후술한다.
단계 S260에서 그래픽 처리 장치의 스트림들을 이용하여 하위 큐보이드에 대한 행렬 곱 연산이 수행될 수 있다. 상세한 설명은 도 10을 참조하여 후술한다.
단계 S270은 모든 큐보이드들에 대한 행렬 곱 연산이 수행되었는지 확인될 수 있다. 일 실시예에서 모든 큐보이드들에 대한 행렬 곱 연산이 완료되지 않은 경우 다음 큐보이드를 선택할 수 있다(S280).
도 8은 일 실시예에 따른 큐보이드들과 그래픽 처리 장치의 상황에 따라서 최적의 하위 큐보이드 크기를 결정하는 방법을 설명하기 위한 도면이다.
일 실시예에서 정해진 하위 큐보이드 크기는 사용 가능한 그래픽 기억 장치의 크기(
Figure 112019118919643-pat00054
)보다 작으면서 주 기억 장치와 그래픽 처리 장치 간의 통신 비용을 최소화하는 크기일 수 있다.
일 실시예에서 하위 큐보이드의 크기는 큐보이드 내의 입력과 결과 행렬들에서 하위 큐보이드 당 값들의 평균 수로써 계산될 수 있고, 통신 비용은 큐보이드 내의 입력 행렬들이 각 하위 큐보이드에 복제되는 수에 의해서 결정될 수 있다. 또한, 결과 행렬에 대한 복제 수는 그래픽 처리 장치에서 하위 큐보이드들에 대한 계산 순서에 의해서 한 번만 복제될 수 있다.
단계 S241에서 선택된 후보군의 통신 비용을 비교하기 위한 변수
Figure 112019118919643-pat00055
가 초기화 될 수 있다.
단계 S242에서 단계 S230에서 생성된 후보군들 중에서 선택된 후보군(
Figure 112019118919643-pat00056
)을 파라미터를 획득할 수 있다.
단계 S243에서 선택된 후보군 파라미터(
Figure 112019118919643-pat00057
)에 의해 정해지는 하위 큐보이드의 크기가 사용 가능한 그래픽 기억 장치의 크기
Figure 112019118919643-pat00058
보다 작은지 확인될 수 있다.
단계 S245에서 일 실시예에서 해당 후보군 파라미터(
Figure 112019118919643-pat00059
)가 사용 가능한 주 기억 장치의 크기보다 큰 경우 다음 후보군 파라미터를 선택할 수 있다.
단계 S244에서 선택된 후보군 파라미터(
Figure 112019118919643-pat00060
)가 발생 할 통신 비용이
Figure 112019118919643-pat00061
보다 작은지 확인될 수 있다.
일 실시예에서 선택된 후보군 파라미터(
Figure 112019118919643-pat00062
)가 발생 할 통신 비용이
Figure 112019118919643-pat00063
보다 큰 경우, 다음 후보군 파라미터를 선택할 수 있다(S245).
단계 S246에서 현재 후보군 파라미터(
Figure 112019118919643-pat00064
)를 최적의 후보군 파라미터 (
Figure 112019118919643-pat00065
)와 최적의
Figure 112019118919643-pat00066
로써 결정할 수 있다.
단계 S247에서 모든 후보군들을 탐색 하였는지 여부를 확인할 수 있다. 일 실시예에서 모든 후보군들을 탐색 하지 않았다면 다음 후보군을 선택할 수 있다 (S245).
도 9는 일 실시예에 따라 선택된 최적의 파라미터 (
Figure 112019118919643-pat00067
)를 이용하여 큐보이드를 하위 큐보이드로 분할하는 방법을 설명하기 위한 도면이다.
단계 S251에서 큐보이드
Figure 112019118919643-pat00068
내 입력 행렬들을
Figure 112019118919643-pat00069
의 집합으로써 저장하고 하위 큐보이드로 구성될 집합
Figure 112019118919643-pat00070
를 초기화 할 수 있다.
단계 S252에서
Figure 112019118919643-pat00071
에서 하나의 블록
Figure 112019118919643-pat00072
을 선택할 수 있다.
단계 S253에서 선택된 블록
Figure 112019118919643-pat00073
이 어떤 입력 행렬에 속하는 블록인지 확인할(S253), 수 있다.
단계 S254에서 일 실시예에 따라 선택된 블록
Figure 112019118919643-pat00074
이 행렬
Figure 112019118919643-pat00075
의 블록이면 할당될
Figure 112019118919643-pat00076
개의 하위 큐보이드의 인덱스(
Figure 112019118919643-pat00077
)를 계산하여 하위 큐보이드에 할당하고, 단계 S255에서 다른 실시예에 따라 선택된 블록
Figure 112019118919643-pat00078
이 행렬
Figure 112019118919643-pat00079
의 블록이면 할당될
Figure 112019118919643-pat00080
개의 하위 큐보이드의 인덱스(
Figure 112019118919643-pat00081
)를 계산하여 하위 큐보이드에 할당할 수 있다.
단계 S256에서 모든 블록을 각각 하위 큐보이드에 할당 하였는지 여부를 확인할 수 있다. 일 실시예에서 모든 블록을 각각 하위 큐보이드에 할당하지 않은 경우 다음 블록들을 선택할 수 있다(S257).
도 10은 일 실시예에 따른 행렬 곱 계산 모듈(132)을 통해서 하위 큐보이드(173)들을 그래픽 주 기억 장치(172)에 적재하고 스트림(171)들을 이용하여 행렬 곱 연산을 수행하는 방법을 설명하기 위한 도면이다.
일 실시예에서 하위 큐보이드
Figure 112019118919643-pat00082
내 입력 행렬들의 블록들을 그래픽 기억 장치로 적재 할 때, 먼저 입력 행렬들 중 크기가 작은 행렬의 블록들을 그래픽 기억 장치로 저장할 수 있다. 도 10은 본 발명의 일 예로 입력 행렬들 중 행렬
Figure 112019118919643-pat00083
의 크기가 작은 경우를 도시한다.
단계 S261에서 집합
Figure 112019118919643-pat00084
내의 하위 큐보이드
Figure 112019118919643-pat00085
들을
Figure 112019118919643-pat00086
기준으로 정렬할 수 있다. 이를 통해 중간 결과 행렬에 대한 이동을 한 번으로 최소화 할 수 있다.
단계 S262에서
Figure 112019118919643-pat00087
에서 하위 큐보이드
Figure 112019118919643-pat00088
을 선택하고,단계 S263에서 하위 큐보이드
Figure 112019118919643-pat00089
내 행렬
Figure 112019118919643-pat00090
에 대한 블록들을 모두 그래픽 기억 장치로 저장할 수 있다.
단계 S264 내지 단계S2695를 통해 3중 반복문을 통해서 하위 큐보이드
Figure 112019118919643-pat00091
내의 모든 블록 간의 행렬 곱 연산이 수행될 수 있다.
먼저, 단계 S264 내지 S2694 및 S2695를 포함하는 제1 반복문은 하위 큐보이드
Figure 112019118919643-pat00092
Figure 112019118919643-pat00093
-축 인덱스
Figure 112019118919643-pat00094
를 이용하고, 단계 S265 내지 S2692 및 S2693을 포함하는 제2 반복문은
Figure 112019118919643-pat00095
-축 인덱스
Figure 112019118919643-pat00096
를 이용하여 단계 S266을 수행할 수 있다.
단계 S266에서 하위 큐보이드
Figure 112019118919643-pat00097
내의 행렬
Figure 112019118919643-pat00098
의 블록
Figure 112019118919643-pat00099
은 스트림
Figure 112019118919643-pat00100
를 이용한 비동기 전송을 통해 그래픽 주 기억 장치에 저장될 수 있다.
또한, 단계 S267 내지 S269 및 S2691를 포함하는 제3 반복문은
Figure 112019118919643-pat00101
-축 인덱스
Figure 112019118919643-pat00102
를 이용하여 단계 S268을 수행할 수 있고, 단계 S268에서 행렬 곱
Figure 112019118919643-pat00103
이 스트림
Figure 112019118919643-pat00104
을 통하여 비동기 실행될 수 있다.
단계 S2696에서 계산된 하위 큐보이드
Figure 112019118919643-pat00105
의 결과에 대하여 더 이상 다른 하위 큐보이드들의 결과들에 대해서 누적 합 연산을 수행할 필요가 없는지 여부가 확인 될 수 있다.
일 실시예에서 더 이상 다른 하위 큐보이드들의 결과들에 대해서 누적 합 연산을 수행할 필요가 없는 경우 단계 S2698에서 모든 스트림들을 동기화하여, 단계 S2699를 통해 하위 큐보이드
Figure 112019118919643-pat00106
의 결과가 주 기억 장치로 저장될 수 있다.
다른 실시예에서 하위 큐보이드
Figure 112019118919643-pat00107
의 결과에 대하여 다른 하위 큐보이드들의 결과들에 대해서 누적 합 연산을 수행할 필요가 있는 경우, 다음 하위 큐보이드를 선택한다(S2697).
단계 S26991는 모든 하위 큐보이드들이 계산되었는지 여부가 확인될 수 있다.
일 실시예에서 모든 하위 큐보이드들이 계산된 경우 다음 하위 큐보이드를 선택할 수 있다(S2697).
도 11은 일 실시예에 따른 큐보이드의 결과인 중간 결과
Figure 112019118919643-pat00108
에 대해서 결과 행렬의 블록들로 생성하기 위해 누적 합 하는 과정을 설명하는 도면이다.
단계 S310에서 동일한 인덱스 (
Figure 112019118919643-pat00109
)를 가지는 중간 블록들을 동일한 코어에 분배할 수 있다.
단계 S320에서 모든 중간 결과 블록들에 대해서
Figure 112019118919643-pat00110
을 선택할 수 있고, 단계 S330에서
Figure 112019118919643-pat00111
을 결과 블록
Figure 112019118919643-pat00112
에 누적하는 연산을 수행할 수 있다.
이후 단계 S340에서 모든 중간 결과 블록들이 계산되었는지 여부가 확인 될 수 있다. 일 실시예에서 모든 중간 결과 블록들이 계산된 경우 단계 S360에서 모든 결과 블록
Figure 112019118919643-pat00113
들을 보조 기억 장치(163)에 저장할 수 있다. 다른 실시예에서 모든 중간 결과 블록들이 계산되지 않은 경우 다음 중간 결과
Figure 112019118919643-pat00114
를 획득할 수 있다(S350).
도 12는 본 발명의 일 실시예에 따른 행렬 곱 연산 방법의 일 예를 설명하기 위한 도면이다.
이하, 도 12를 참조하여 일실시예에 따른
Figure 112019118919643-pat00115
블록들로 구성된 행렬
Figure 112019118919643-pat00116
Figure 112019118919643-pat00117
블록들로 구성된 행렬
Figure 112019118919643-pat00118
에 대한 행렬 곱을 큐보이드 기반으로 분할 하는 방법에 대하여 설명한다.
행렬
Figure 112019118919643-pat00119
Figure 112019118919643-pat00120
차원을 가지며, 행렬
Figure 112019118919643-pat00121
Figure 112019118919643-pat00122
차원을 가지며, 각 차원의 인덱스
Figure 112019118919643-pat00123
의 범위는
Figure 112019118919643-pat00124
이다. 그러므로 행렬
Figure 112019118919643-pat00125
Figure 112019118919643-pat00126
의 곱은 (a)와 같이 3차원 모델로써 표현할 수 있다.
(a)의 하나의 정육면체는 복셀로써 표현되며, 각 복셀은 3차원 상의 인덱스 (
Figure 112019118919643-pat00127
)를 가질 수 있다. 검은색 복셀은 3차원 상 원점에 해당되는 복셀이며
Figure 112019118919643-pat00128
으로 표기 된다고 가정하자. 복셀
Figure 112019118919643-pat00129
의 의미는
Figure 112019118919643-pat00130
를 의미할 수 있다.
(b)는 도 (a)에 도시된 3차원 모델을 파라미터 (
Figure 112019118919643-pat00131
)를 이용하여 큐보이드 기반 분할 방법을 적용 했을 때 생성되는 큐보이드이다. 파라미터의 값들의 의미는 3차원 모델의 각 축에서 파티션의 개수를 의미할 수 있다.
(b)에 도시된 바와 같이 파라미터 (
Figure 112019118919643-pat00132
)를 사용하여 도 (a)에 도시된 큐보이드를 분할하는 경우, 각 축에서 2개의 큐보이드들이 존재하며 총 8개의 큐보이드들이 생성된다. 각 큐보이드는 3차원 인덱스 (
Figure 112019118919643-pat00133
)를 가지며 각 인덱스의 범위는
Figure 112019118919643-pat00134
을 가진다. (b)의 회색 복셀들로 이뤄진 큐보이드는 원점 인덱스를 가지며
Figure 112019118919643-pat00135
로 표기될 수 있다.
이상 설명된 본 발명에 따른 실시예는 컴퓨터 상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다.
한편, 상기 컴퓨터 프로그램은 본 발명을 위하여 특별히 설계되고 구성된 것이나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 프로그램의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함될 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, "필수적인", "중요하게" 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
이와 같이 본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 당해 기술분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의하여 정해져야 할 것이다.

Claims (12)

  1. 제1 입력 행렬 및 제2 입력 행렬을 저장하는 보조 기억 장치;
    상기 제1 입력 행렬, 상기 제2 입력 행렬, CPU 메모리 크기 및 GPU 메모리 크기를 기초로 복수의 큐보이드 후보군 및 복수의 하위 큐보이드 후보군을 생성하는 큐보이드 후보군 결정 모듈;
    상기 복수의 큐보이드 후보군 중 상기 CPU 메모리 크기를 기초로 상기 복수의 큐보이드의 크기를 결정하고, 상기 복수의 하위 큐보이드 후보군 중 CPU와 GPU간 통신 비용 및 상기 GPU 메모리 크기를 기초로 상기 복수의 하위 큐보이드의 크기를 결정하는 큐보이드 크기 결정 모듈;
    상기 큐보이드 크기 결정 모듈에서 결정한 복수의 큐보이드의 크기를 기초로 상기 제1 입력 행렬 및 상기 제2 입력 행렬을 상기 복수의 큐보이드로 분할하는 행렬 분할 모듈;
    상기 큐보이드 크기 결정 모듈에서 결정한 복수의 하위 큐보이드의 크기를 기초로 획득된 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 수행하는 행렬 곱 계산 모듈; 및
    상기 행렬 곱 계산 모듈에서 획득한 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 누적하는 행렬 블록 누적 모듈;을 포함하는,
    행렬 곱 연산 장치.
  2. 제1 항에 있어서,
    상기 보조 기억 장치는,
    상기 행렬 곱 계산 모듈에서 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산 결과로 생성된 복수의 중간 결과 행렬 및 상기 행렬 블록 누적 모듈에서 상기 복수의 중간 결과 행렬을 누적하여 생성된 결과 행렬을 더 저장하는,
    행렬 곱 연산 장치.
  3. 제1 항에 있어서,
    상기 큐보이드 크기 결정 모듈은,
    주 기억 장치와 보조 기억 장치간 통신 비용 및 상기 CPU 메모리 크기를 기초로 상기 복수의 큐보이드의 크기를 결정하는, 행렬 곱 연산 장치.
  4. 제1 항에 있어서,
    상기 행렬 분할 모듈은,
    상기 제1 입력 행렬의 차원(dimension) 및 상기 제2 입력 행렬의 차원(dimension)을 기초로 3차원 공간을 생성하고, 상기 3차원 공간에 상기 제1 입력 행렬 및 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성하고, 상기 3차원 모델을 분할하여 상기 복수의 큐보이드를 생성하는,
    행렬 곱 연산 장치.
  5. 제1 항에 있어서,
    상기 행렬 곱 계산 모듈은,
    GPU의 스트림을 이용하여 상기 복수의 하위 큐보이드에 대한 행렬 곱 연산을 병렬적으로 수행하는,
    행렬 곱 연산 장치.
  6. 행렬 곱 연산 장치에서의 행렬 곱 연산 방법에 있어서,
    제1 입력 행렬 및 제2 입력 행렬을 수신하는 단계;
    상기 제1 입력 행렬의 행 차원(row dimension)에 대응되는 제1 축, 상기 제1 입력 행렬의 열차원(column dimension)에 대응되는 제2 축 및 제2 입력 행렬의 열차원(column dimension)에 대응되는 제3 축을 기초로 3차원 공간을 생성하고, 상기 3차원 공간 상에 상기 제1 입력 행렬과 상기 제2 입력 행렬 간 곱 연산에 대응되는 3차원 모델을 생성하는 단계;
    상기 3차원 모델을 CPU 메모리 크기를 기초로 복수의 큐보이드로 분할하는 단계;
    CPU와 GPU간 통신 비용 및 GPU 메모리 크기를 기초로 상기 복수의 큐보이드 각각을 복수의 하위 큐보이드로 분할하는 단계;
    GPU를 이용하여 상기 복수의 하위 큐보이드 각각에 대응되는 행렬 원소간 곱 연산 결과를 획득하고, 상기 획득된 행렬 원소간 곱 연산 결과를 이용하여 중간 결과 행렬을 생성하는 단계; 및
    CPU를 이용하여 상기 중간 결과 행렬을 누적하여 결과 행렬을 생성하는 단계를 포함하는,
    행렬 곱 연산 방법.
  7. 제6 항에 있어서,
    상기 제2 입력 행렬의 행 차원은, 상기 제1 입력 행렬의 열차원과 동일한,
    행렬 곱 연산 방법.
  8. 제6 항에 있어서,
    상기 큐보이드는,
    복수의 복셀로 구성되며,
    복셀 vi,j,k 는 상기 제1 입력 행렬의 행렬 원소 (i, k)와 상기 제2 입력 행렬의 행렬 원소 (k, j) 간 곱 연산과 대응되는,
    행렬 곱 연산 방법.
  9. 제8 항에 있어서, 상기 결과 행렬은,
    복수의 복셀의 합과 대응되는 행렬 원소 (i,j)로 구성된,
    행렬 곱 연산 방법.
  10. 제6 항에 있어서,
    상기 복수의 큐보이드로 분할하는 단계는,
    상기 CPU의 주 기억 장치와 상기 CPU의 보조 기억 장치 간 통신 비용 및 상기 CPU 메모리 크기를 기초로 상기 3차원 모델을 상기 복수의 큐보이드로 분할하는 단계를 포함하는,
    행렬 곱 연산 방법.
  11. 삭제
  12. 컴퓨터를 이용하여 제6항 내지 제10항 중 어느 한 항의 방법을 실행시키기 위하여 기록매체에 저장된 컴퓨터 프로그램.
KR1020190148945A 2019-11-19 2019-11-19 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 KR102326586B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190148945A KR102326586B1 (ko) 2019-11-19 2019-11-19 큰 규모 분산 행렬 곱 처리 방법 및 그 장치
US17/093,718 US20210149985A1 (en) 2019-11-19 2020-11-10 Method and apparatus for processing large-scale distributed matrix product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190148945A KR102326586B1 (ko) 2019-11-19 2019-11-19 큰 규모 분산 행렬 곱 처리 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20210061119A KR20210061119A (ko) 2021-05-27
KR102326586B1 true KR102326586B1 (ko) 2021-11-16

Family

ID=75909502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190148945A KR102326586B1 (ko) 2019-11-19 2019-11-19 큰 규모 분산 행렬 곱 처리 방법 및 그 장치

Country Status (2)

Country Link
US (1) US20210149985A1 (ko)
KR (1) KR102326586B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7389244B2 (ja) 2020-05-12 2023-11-29 エルジー エナジー ソリューション リミテッド リチウム二次電池用電解液及びこれを含むリチウム二次電池
KR102621139B1 (ko) * 2021-11-18 2024-01-04 서울대학교산학협력단 프레임 양자화에 기반한 분산 행렬 곱 연산 방법 및 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236998B2 (en) * 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US8250130B2 (en) * 2008-05-30 2012-08-21 International Business Machines Corporation Reducing bandwidth requirements for matrix multiplication
KR102505279B1 (ko) * 2015-07-24 2023-03-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법
KR102011671B1 (ko) * 2016-12-06 2019-08-19 한국전자통신연구원 이종 계산 장치 기반의 질의 처리 방법 및 장치
JP7091930B2 (ja) * 2018-08-16 2022-06-28 日本電信電話株式会社 テンソルデータ計算装置、テンソルデータ計算方法及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
이기용 외 4명, 맵리듀스를 사용한 데이터 큐브의 효율적인 계산 기법, 정보처리학회논문지/소프트웨어 및 데이터공학 제3권 제11호(2014.11.)*

Also Published As

Publication number Publication date
US20210149985A1 (en) 2021-05-20
KR20210061119A (ko) 2021-05-27

Similar Documents

Publication Publication Date Title
US10374792B1 (en) Layout-independent cryptographic stamp of a distributed dataset
JP5425541B2 (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
KR102326586B1 (ko) 큰 규모 분산 행렬 곱 처리 방법 및 그 장치
CN105302536A (zh) MapReduce应用的相关参数的配置方法和装置
US10171574B2 (en) Computer system, processing method, and computer-readable recording medium having job processing program
US11914648B2 (en) Graph refactorization method and graph refactorization apparatus
KR101573112B1 (ko) 데이터 분배 방법 및 장치
CN116862019B (zh) 基于数据并行范式的模型训练方法及装置
TWI758223B (zh) 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體
KR102209526B1 (ko) 병렬 연산을 통한 단백질-리간드 상호 작용 분석 방법 및 장치
CN112948087A (zh) 一种基于拓扑排序的任务调度方法及系统
JP2973973B2 (ja) 並列計算における動的負荷分散方法、動的負荷分散装置及び動的負荷分散プログラムを記録した記録媒体
WO2011131248A1 (en) Method and apparatus for losslessly compressing/decompressing data
KR101969219B1 (ko) 빈발 패턴 마이닝 방법 및 장치
CN114625474A (zh) 容器迁移方法、装置、电子设备及存储介质
JP7084894B2 (ja) リソース管理システム、リソース割当方法
KR20240051715A (ko) 행렬 융합 연산을 지원하는 분산 행렬 계산 제어 방법 및 장치
CN110955380A (zh) 访存数据生成方法、存储介质、计算机设备和装置
KR102488614B1 (ko) 가상화된 리소스를 관리하는 방법, 장치 및 컴퓨터 프로그램
KR102488615B1 (ko) 리소스 크기 추전 방법, 장치 및 컴퓨터 프로그램
WO2020217965A1 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US11709812B2 (en) Techniques for generating and processing hierarchical representations of sparse matrices
US20240134932A1 (en) Distributed matrix computation control method and apparatus supporting matrix fused operation
CN112100446B (zh) 搜索方法、可读存储介质和电子设备
US20220374961A1 (en) Techniques for performing matrix computations using hierarchical representations of sparse matrices

Legal Events

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