KR102512704B1 - 매트릭스 연산 방법 및 그 장치 - Google Patents

매트릭스 연산 방법 및 그 장치 Download PDF

Info

Publication number
KR102512704B1
KR102512704B1 KR1020210078023A KR20210078023A KR102512704B1 KR 102512704 B1 KR102512704 B1 KR 102512704B1 KR 1020210078023 A KR1020210078023 A KR 1020210078023A KR 20210078023 A KR20210078023 A KR 20210078023A KR 102512704 B1 KR102512704 B1 KR 102512704B1
Authority
KR
South Korea
Prior art keywords
matrix
expression
type
calculation
result
Prior art date
Application number
KR1020210078023A
Other languages
English (en)
Other versions
KR20210116356A (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 KR1020210078023A priority Critical patent/KR102512704B1/ko
Publication of KR20210116356A publication Critical patent/KR20210116356A/ko
Application granted granted Critical
Publication of KR102512704B1 publication Critical patent/KR102512704B1/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (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)
  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Abstract

매트릭스 연산 방법 및 그 장치가 제공된다. 본 발명의 몇몇 실시예들에 따르면 매트릭스 연산 프레임워크가 매트릭스 표현(matrix expression)을 포함하는 프로그램 코드의 컴파일 또는 실행에 개입하여 매트릭스 연산을 최적화한다. 이에 따라, 매트릭스 연산 최적화에 대한 프로그램 코드 작성자의 부담이 경감될 수 있다.

Description

매트릭스 연산 방법 및 그 장치 {METHOD AND APPARATUS FOR MATRIX COMPUTATION}
본 발명은 매트릭스 연산 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 매트릭스 연산을 포함하는 프로그램 코드 작성자가 매트릭스 연산의 최적화 관련하여 신경을 쓰지 않아도 되도록, 매트릭스 연산 프레임워크에 의한 매트릭스 연산이 이뤄지는 매트릭스 연산 방법 및 그 장치에 관한 것이다.
매트릭스 연산은 다양한 분야의 컴퓨팅에 포함된다. 예를 들어, 딥 러닝을 포함한 머신 러닝, 컴퓨터 비전, 신호 처리, 빅데이터 분석, 바이오 인포매틱스 또는 지능형 로보틱스 등 최근 활발히 연구되는 다양한 분야에서 매트릭스 연산이 수행된다.
그런데, 기존의 몇몇 프로그램 언어 또는 수학 연산 라이브러리들의 매트릭스 연산은 비효율적으로 컴퓨팅 자원을 활용하는 문제를 가진다. 도 1을 참조하여 설명하면, 매트릭스 표현(10)의 결과를 연산하기 위해, (A+B)의 결과가 임시 저장 공간 T1에 할당되고, exp(T1)의 결과가 임시 저장 공간 T2에 할당되며, transpose(C)의 결과가 임시 저장 공간 T3에 할당되고, T2+T3의 결과가 임시 저장 공간 T4에 할당된다. 이러한 기존의 매트릭스 연산은 과도한 임시 저장 공간의 사용에 의하여 메모리 공간이 부족해지는 문제, 임시 저장 공간의 할당 및 해제를 위한 불필요한 연산 자원 활용 등의 문제를 가진다. 특히, 매트릭스의 데이터 사이즈가 큰 경우, 메모리 공간이 부족해지는 문제는 더욱 심각해질 것이다.
또한, 기존의 몇몇 수학 연산 라이브러리들의 매트릭스 연산들은 매트릭스 오퍼레이션 단위의 최적화는 제공하나, 매트릭스 표현(expression) 단위의 최적화는 제공하지 못한다. 예를 들어, 선형대수(Linear Algebra) 관련 다양한 오퍼레이션들을 제공하는 저수준(low-level) 루틴들의 집합인 BLAS(Basic Linear Algebra Subprograms)에서도 매트릭스 곱(matrix product)의 최적화된 루틴을 제공할 뿐, 다양한 오퍼레이션들을 이용하여 구성되는 매트릭스 표현 전체의 연산을 최적화하지는 못한다.
따라서, 매트릭스 표현을 포함하는 프로그램 코드를 작성하는 소프트웨어 개발자가 매트릭스 표현 연산의 최적화를 신경 쓰지 않으면서도 결과적으로 상기 매트릭스 표현의 연산이 최적화된 방식으로 이뤄짐으로써, 프로그램의 성능이 개선되도록 하는 기술의 제공이 요구된다.
미국공개특허 제2014-0324935호 (2014.10.30) 미국등록특허 제8,788,556호 (2014.7.22)
본 발명이 해결하고자 하는 기술적 과제는, 매트릭스 표현의 전체적인 연산 최적화가 수행되는 매트릭스 연산 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 프로그램 코드의 수정 없이 매트릭스 표현 연산 최적화 기능을 지원하는 프레임워크를 이용한 매트릭스 연산 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 매트릭스 연산 방법은, 프로그램 코드에 포함된 원본 매트릭스 표현(expression)을 변환하여 변환 매트릭스 표현을 생성하되, 상기 변환 매트릭스 표현에 포함된 오퍼레이션은 제1 타입 오퍼레이션 및 제2 타입 오퍼레이션 중 어느 하나로 구분된 것인, 매트릭스 표현 변환 단계와, 상기 변환 매트릭스 표현을 평가(evaluation)하여 최종 결과 매트릭스의 각 원소 값의 산출식을 생성하고, 상기 산출식의 피연산자 매트릭스로 참조되는 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 연산하며, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 임시 저장 공간에 저장하는, 매트릭스 평가 단계와, 상기 임시 저장 공간에 저장된 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 원소 값을 이용한 상기 산출식에 따른 상기 제1 타입 오퍼레이션의 연산 결과를 이용하여 상기 최종 결과 매트릭스의 원소 값을 연산하는, 매트릭스 연산 단계를 포함할 수 있다.
일 실시예에서, 상기 제1 타입 오퍼레이션은 피연산자 매트릭스의 참조되는 원소 값의 액세스만 가능한 상태에서도 연산이 가능한 매트릭스 오퍼레이션이고, 상기 제2 타입 오퍼레이션은 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서만 연산이 가능한 매트릭스 오퍼레이션일 수 있다. 이 때, 상기 매트릭스 표현 변환 단계는, 상기 원본 매트릭스 표현에 포함된 각각의 오퍼레이션을, 오퍼레이션 별 타입 매칭 데이터를 참조하여, 상기 제1 타입 오퍼레이션 및 상기 제2 타입 오퍼레이션 중 하나로 구분하는 단계를 포함하거나, 상기 원본 매트릭스 표현에 포함된 각각의 오퍼레이션을, 원칙적으로 제1 타입 오퍼레이션으로 구분하고, 예외 규칙을 만족하는 경우에 한하여 제2 타입 오퍼레이션으로 구분하는 단계를 포함할 수 있다. 또한, 상기 매트릭스 표현 변환 단계는, 상기 원본 매트릭스 표현에 포함된 각각의 오퍼레이션을, 상기 컴퓨팅 장치의 하드웨어 사양을 반영하여, 상기 제1 타입 오퍼레이션 및 상기 제2 타입 오퍼레이션 중 하나로 구분하는 단계를 포함할 수 있다. 예를 들어, 상기 원본 매트릭스 표현에 포함된 각각의 오퍼레이션을, 상기 컴퓨팅 장치의 하드웨어 사양을 반영하여, 상기 제1 타입 오퍼레이션 및 상기 제2 타입 오퍼레이션 중 하나로 구분하는 단계는, 상기 컴퓨팅 장치의 메모리 사이즈가 제1 사이즈 미만인 경우, 상기 원본 매트릭스 표현에 포함된 제1 오퍼레이션을 상기 제1 타입 오퍼레이션으로 구분하고, 상기 컴퓨팅 장치의 메모리 사이즈가 상기 제1 사이즈 이상인 경우, 상기 제1 오퍼레이션을 상기 제2 타입 오퍼레이션으로 구분하는 단계를 포함할 수 있다. 상기 매트릭스 표현 변환 단계는 상기 프로그램 코드의 실행 시점에 수행될 수 있다. 또한, 상기 매트릭스 표현 변환 단계는, 상기 원본 매트릭스 표현에 포함된 각각의 오퍼레이션을, 상기 컴퓨팅 장치의 매트릭스 표현 변환 시점의 가용 하드웨어 자원을 반영하여, 상기 제1 타입 오퍼레이션 및 상기 제2 타입 오퍼레이션 중 하나로 구분하는 단계를 포함할 수 있다.
일 실시예에서, 상기 매트릭스 표현 변환 단계는 제1 오퍼레이션의 연산 결과 매트릭스가, 상기 제1 오퍼레이션과 다른 복수의 오퍼레이션의 피연산자인 경우, 상기 제1 오퍼레이션을 상기 제2 타입 오퍼레이션으로 구분하는 단계를 포함할 수 있다. 이 때, 상기 복수의 오퍼레이션은 상기 원본 매트릭스 표현과 다른 인접 매트릭스 표현의 오퍼레이션을 포함할 수 있다. 이 때, 상기 인접 매트릭스 표현은, 상기 프로그램 코드 상에서, 상기 원본 매트릭스 표현과의 사이에 기초 매트릭스의 원소 값을 변경시키는 구문이 포함되지 않은 매트릭스 표현이고, 상기 기초 매트릭스는 상기 컴퓨팅 장치의 메모리에 원소 값이 저장되어 있는 것일 수 있다.
일 실시예에서, 상기 매트릭스 표현 변환 단계는, 상기 변환 매트릭스 표현에 포함된 오퍼레이션의 타입 구분 결과를 바꿔가며 상기 매트릭스 평가 단계 및 상기 매트릭스 연산 단계를 수행하고, 실행 소요 시간을 측정하는 단계와, 상기 실행 소요 시간을 기준으로, 상기 변환 매트릭스 표현에 포함된 오퍼레이션의 최적의 타입 구분을 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 매트릭스 평가 단계는, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스에 대한 연산 여부 플래그를 확인하는 단계와, 상기 연산 여부 플래그가 상기 제2 타입 오퍼레이션의 연산이 미수행 되었음을 가리키는 경우에 한하여, 상기 제2 타입 오퍼레이션의 연산 결과를 연산하고, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 임시 저장 공간에 저장하는 단계를 포함할 수 있다.
일 실시예에서, 상기 매트릭스 표현 변환 단계, 상기 매트릭스 평가 단계 및 상기 매트릭스 연산 단계는, 상기 원본 매트릭스 표현의 상기 최종 결과 매트릭스의 원소 값이, 상기 프로그램 코드로 구성되는 어플리케이션 프로그램에 의하여 액세스 되는 시점에 수행되는 것을 특징으로 하는 것일 수 있다. 또한, 상기 매트릭스 표현 변환 단계, 상기 매트릭스 평가 단계 및 상기 매트릭스 연산 단계는, 상기 프로그램 코드의 프로그램에 포함되는 매트릭스 연산 프레임워크 모듈에 의하여 수행되는 것일 수 있다. 또한, 상기 매트릭스 표현 변환 단계, 상기 매트릭스 평가 단계 및 상기 매트릭스 연산 단계는, 상기 프로그램 코드의 프로그램에 포함되는 매트릭스 연산 프레임워크 모듈에 의하여 연산자 오버로딩 된, 상기 원본 매트릭스 표현을 다른 매트릭스에 할당(assign)하는 연산자의 실행 시 수행되거나, 상기 매트릭스 연산 프레임워크 모듈에 의하여 오버로딩 된, 상기 원본 매트릭스 표현의 평가 함수 호출 시 수행되는 것일 수 있다.
일 실시예에서, 상기 매트릭스 연산 단계는, 상기 임시 저장 공간에 저장된 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 각 원소 값을 참조하는 상기 산출식을 각 원소 별로(element-wise) 연산함으로써 상기 최종 결과 매트릭스의 원소 값을 연산하는 단계를 포함할 수 있다.
일 실시예에서, 상기 매트릭스 표현 변환 단계는, 상기 원본 매트릭스 표현을, 상기 제1 타입 오퍼레이션 또는 상기 제2 타입 오퍼레이션 및 그 피연산자 매트릭스의 조합인 메타 매트릭스들의 집합인 상기 변환 매트릭스 표현으로 변환하는 단계를 포함할 수 있다. 이 때, 상기 피연산자 매트릭스는, 상기 컴퓨팅 장치의 메모리에 원소 값이 저장되어 있는 기초 매트릭스(primary matrix) 및 상기 컴퓨팅 장치의 메모리에 원소 값이 저장되어 있지 않은 상기 메타 매트릭스 중 적어도 하나일 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 매트릭스 연산 방법은, 원본 매트릭스 표현을 포함하는 프로그램 코드의 프로그램에 매트릭스 연산 프레임워크 모듈이 포함되는 단계와, 상기 원본 매트릭스 표현의 결과 매트릭스의 원소 값이 액세스 되면, 상기 매트릭스 연산 프레임워크 모듈이, 최적화된 매트릭스 연산을 수행하는 단계를 포함할 수 있다. 이 때, 상기 최적화된 매트릭스 연산을 수행하는 단계는, 상기 원본 매트릭스 표현의 오퍼레이션을 제1 타입 오퍼레이션 및 제2 타입 오퍼레이션 중 어느 하나로 구분하되, 상기 제1 타입 오퍼레이션은 피연산자 매트릭스의 참조되는 원소 값의 액세스만 가능한 상태에서도 연산이 가능한 매트릭스 오퍼레이션이고, 상기 제2 타입 오퍼레이션은 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서 연산이 가능한 매트릭스 오퍼레이션인 단계와, 상기 제2 타입 오퍼레이션의 결과 매트릭스를 연산하고, 상기 제2 타입 오퍼레이션의 결과 매트릭스를 상기 컴퓨팅 장치의 임시 저장 공간에 저장하는 단계와, 상기 원본 매트릭스 표현의 결과 매트릭스의 각 원소 값의 산출식을 이용하여, 상기 원본 매트릭스 표현의 결과 매트릭스의 각 원소 값을 연산하는 단계를 포함할 수 있다. 이 때, 상기 산출식은 상기 제1 타입 오퍼레이션 및 상기 제1 타입 오퍼레이션의 피연산자 매트릭스로 구성되고, 상기 피연산자 매트릭스는 상기 제2 타입 오퍼레이션의 결과 매트릭스 및 상기 컴퓨팅 장치의 메모리에 원소 값이 저장되어 있는 기초 매트릭스 중 적어도 하나일 수 있다.
상기 최적화된 매트릭스 연산을 수행하는 단계는, 상기 프로그램 코드의 컴파일 도중, 상기 프로그램 코드에 포함된 원본 매트릭스 표현의 결과 매트릭스의 원소 값이 액세스 되는 경우, 상기 매트릭스 연산 프레임워크 모듈이 최적화된 매트릭스 연산을 수행하는 단계를 포함할 수 있다.
상기 최적화된 매트릭스 연산을 수행하는 단계는, 상기 프로그램 코드의 실행 도중, 상기 프로그램 코드에 포함된 원본 매트릭스 표현의 결과 매트릭스의 원소 값이 액세스 되는 경우, 상기 매트릭스 연산 프레임워크 모듈이 최적화된 매트릭스 연산을 수행하는 단계를 포함할 수 있다.
상기 원본 매트릭스 표현의 오퍼레이션을 제1 타입 오퍼레이션 및 제2 타입 오퍼레이션 중 어느 하나로 구분하는 단계는, 상기 매트릭스 연산 프레임워크 모듈이 상기 컴퓨팅 장치의 하드웨어 사양 및 상기 컴퓨팅 장치의 가용 하드웨어 자원 중 적어도 하나를 이용하여 하드웨어 프로파일을 생성하는 단계와, 상기 매트릭스 연산 프레임워크 모듈이 상기 원본 매트릭스 표현의 각 오퍼레이션을, 상기 하드웨어 프로파일을 이용하여 상기 제1 타입 오퍼레이션 및 제2 타입 오퍼레이션 중 어느 하나로 구분하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 매트릭스 연산 방법은, 매트릭스 표현을 포함하는 프로그램 코드의 프로그램에 매트릭스 연산 프레임워크 모듈이 포함되는 단계와, 상기 프로그램 코드의 컴파일 또는 실행 시점에, 상기 매트릭스 연산 프레임워크 모듈이, 매트릭스 연산을 수행하는 단계를 포함할 수 있다. 이 때, 상기 매트릭스 연산을 수행하는 단계는, 상기 원본 매트릭스 표현의 오퍼레이션을 제1 타입 오퍼레이션 및 제2 타입 오퍼레이션 중 어느 하나로 구분하는 단계와, 상기 원본 매트릭스 표현의 결과 매트릭스의 각 원소 값을 상기 제1 타입 오퍼레이션을 이용하여 연산하되, 상기 제1 타입 오퍼레이션의 피연산자 매트릭스 중 상기 제2 타입 오퍼레이션의 결과 매트릭스는 상기 컴퓨팅 장치의 임시 저장 공간에서 액세스 하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 매트릭스 연산 방법은, 프로그램 코드를 파싱하여 제1 오퍼레이션, 제2 오퍼레이션 및 제3 오퍼레이션을 포함하여 구성되는 매트릭스 표현을 얻는 단계와, 상기 제1 오퍼레이션 및 상기 제2 오퍼레이션을 피연산자 매트릭스의 참조되는 원소 값의 액세스만 가능한 상태에서 연산이 가능한 제1 타입 오퍼레이션으로 결정하고, 상기 제3 오퍼레이션을 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서 연산이 가능한 제2 타입 오퍼레이션으로 결정하는 단계와, 상기 제2 타입 오퍼레이션인 상기 제3 오퍼레이션의 연산을 수행하고, 상기 제3 매트릭스 오퍼레이션의 결과 매트릭스를 상기 컴퓨팅 장치에 구비된 임시 저장 공간에 저장하는 단계와, 상기 제1 타입 오퍼레이션인 상기 제1 오퍼레이션 및 상기 제2 오퍼레이션의 연산의 일괄 수행을 포함하는 상기 매트릭스 표현의 결과 매트릭스 연산을 수행하되, 상기 제1 오퍼레이션 및 상기 제2 오퍼레이션 중 적어도 하나는 상기 임시 저장 공간에 저장된 상기 제3 매트릭스 오퍼레이션의 연산 결과를 피연산자로 가지는 것인 단계를 포함할 수 있다. 상기 결정하는 단계는, 상기 결정하는 단계의 수행 시점의 상기 컴퓨팅 장치의 실행 환경 정보 및 상기 컴퓨팅 장치의 사양 정보 중 적어도 하나를 이용하여, 상기 제1 오퍼레이션, 상기 제2 오퍼레이션 및 상기 제3 오퍼레이션의 타입을 상기 제1 타입 오퍼레이션 및 상기 제2 타입 오퍼레이션 중 하나로 결정하는 단계를 포함할 수 있다. 이 때, 상기 프로그램 코드의 프로그램은 매트릭스 연산 프레임워크 모듈을 포함하는 것이고, 상기 결정하는 단계, 상기 저장하는 단계 및 상기 결과 매트릭스 연산을 수행하는 단계는, 상기 매트릭스 연산 프레임워크 모듈에 의하여 수행되는 단계일 수 있다. 상기 결정하는 단계는, 상기 매트릭스 표현의 결과 매트릭스가 동일한 한도 내에서의 상기 매트릭스 표현을 변형하는 최적화를 수행하는 단계를 포함하고, 상기 저장하는 단계 및 상기 결과 매트릭스 연산을 수행하는 단계는 상기 변형된 매트릭스 표현에 대하여 수행되는 것을 특징으로 하는 것일 수 있다.
도 1은 종래 기술에 따른 매트릭스 연산 과정을 설명하기 위한 도면이다.
도 2는 본 발명의 몇몇 실시예들에 따른 원소별(element-wise) 연산 방식의 매트릭스 연산을 설명하기 위한 도면이다.
도 3 및 도 4는 본 발명의 몇몇 실시예들에 따른 매트릭스 연산 장치의 계층 구조도이다.
도 5는 본 발명의 몇몇 실시예들에서 매트릭스 연산 프레임워크 모듈을 이용하기 위한 프로그램 코드 기재 방식을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 매트릭스 연산 장치의 구성도이다.
도 7 내지 도 14는 도 6에 도시된 매트릭스 연산 장치의 동작을 보다 상세히 설명하기 위한 도면들이다.
도 15 및 도 16은 매트릭스 연산 프레임워크 모듈의 계층 구조상 배치가 서로 다른 매트릭스 연산 장치들의 구성도들이다.
도 17은 본 발명의 몇몇 실시예들에 따른 방법을 구현하기 위한 예시적인 제1 컴퓨팅 장치의 하드웨어 구조를 설명하기 위한 하드웨어 구성도이다.
도 18 및 도 19는 본 발명의 몇몇 실시예들에 따른 매트릭스 연산 프레임워크 모듈의 메모리 로딩 구역을 설명하기 위한 도면이다.
도 20은 본 발명의 몇몇 실시예들에 따른 방법을 구현하기 위한 예시적인 제2 컴퓨팅 장치의 하드웨어 구조를 설명하기 위한 하드웨어 구성도이다.
도 21은 본 발명의 다른 실시예에 따른 매트릭스 연산 방법의 순서도이다.
도 22 내지 도 24는 도 21을 참조하여 설명되는 매트릭스 연산 방법의 일부 동작을 보다 상세히 설명하기 위한 도면들이다.
도 25는 본 발명의 몇몇 실시예들에서, 매트릭스 표현을 포함한 프로그램 코드에 컴파일 타임 또는 런타임에 일부 루틴이 삽입되는 것을 설명하기 위한 도면이다.
도 26 내지 도 30은 도 25를 참조하여 설명된 삽입 루틴들을 설명하기 위한 도면들이다.
도 31은, 도21을 참조하여 설명된 매트릭스 연산 방법이 예시적인 매트릭스 표현을 대상으로 적용되는 과정을 설명하기 위한 도면이다.
도 32는, 도 32에서 제시된 예시적인 매트릭스 표현에 대하여 도 25를 참조하여 설명된 삽입 루틴이 호출되는 순서를 가리키는 컨트롤 플로우 그래프이다.
도 33은, 도 32에서 제시된 예시적인 매트릭스 표현의 일부 오퍼레이션의 타입을 변경한 경우, 도 31을 참조하여 설명된 과정이 어떻게 바뀌는지 설명하기 위한 도면이다.
도 34는, 도 33에서 제시된 예시적인 매트릭스 표현에 대하여 도 25를 참조하여 설명된 삽입 루틴이 호출되는 순서를 가리키는 컨트롤 플로우 그래프이다.
도 35는, 본 발명의 몇몇 실시예들에서, 복수의 매트릭스 표현을 포함하는 프로그램 코드에 컴파일 타임 또는 런타임에 일부 루틴이 삽입되는 것을 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
본 발명의 몇몇 실시예들에 따르면, 도 1을 참조하여 설명한 종래 방식과 달리, 매트릭스 오퍼레이션들의 연산(computing)이 원소 별(element-wise) 연산 방식으로 일괄 수행(12)된다. 즉, 도 1과 달리 각각의 매트릭스 오퍼레이션의 연산 시점이 일괄 수행(12)의 시점으로 지연되는 것으로 이해될 수도 있을 것이다. 매트릭스 표현의 결과 매트릭스의 원소 값이 원소 별 연산 방식으로 일괄 수행(12) 됨에 따라 임시 저장 공간의 사용이 최대한 억제될 수 있다.
도 3 및 도 4는 본 발명의 몇몇 실시예들에 따른 매트릭스 연산 장치의 계층 구조도이다. 도 3 및 도 4에 도시된 바와 같이, 매트릭스 표현을 포함하는 프로그램 코드에 의하여 구현되는 응용 프로그램(17)은 범용 라이브러리(16) 및 매트릭스 연산 프레임워크 모듈(15)을 링크하거나, 프로그램 코드의 일부로서 포함하게 되며, 범용 라이브러리(16) 또는 매트릭스 연산 프레임워크 모듈(15)을 이용하여 드라이버/운영체제(14)를 제어하고, 종국적으로 하드웨어(13)의 연산 자원을 활용한다.
몇몇 실시예들에서, 응용 프로그램(17)은 매트릭스 연산 프레임워크 모듈(15)의 적어도 일부 루틴을 컴파일 시점(compile-time)에 포함할 수도 있다. 즉, 매트릭스 연산 프레임워크 모듈(15)은 템플릿 메타프로그래밍(template metaprogramming) 기법으로 구현될 수도 있는 것이다. 이 때, 컴파일러는 매트릭스 연산 프레임워크 모듈(15)의 모든 루틴 중, 응용 프로그램(17)에 필요한 루틴만을 응용 프로그램(17)의 바이너리에 포함시킬 수 있다. 상기 '응용 프로그램(17)에 필요한 루틴'은 응용 프로그램(17)의 프로그램 코드에 포함된 매트릭스 표현의 결과를 연산하기 위한 모든 오퍼레이션들을 포함할 수 있다. 예를 들어, 응용 프로그램(17)의 프로그램 코드에 포함된 매트릭스 표현이 매트릭스의 합(+)과 곱(*)으로 구성되었고, 매트릭스의 합(+)과 곱(*) 모두 후술될 EOP(Element accessible OPeration)로 구현되는 경우, 상기 '응용 프로그램(17)에 필요한 루틴'은 EOP 방식의 매트릭스 합산(+) 및 매트릭스 곱(*)이 될 것이다.
응용 프로그램(17)의 컴파일러가 매트릭스 연산 프레임워크 모듈(15)의 루틴 중 응용 프로그램(17)의 바이너리에 포함시킬 루틴을 컴파일 시점에 결정할 수 있도록, 매트릭스 연산 프레임워크 모듈(15)의 각 루틴은 각각의 템플릿의 형태로 구현되고, 상기 각각의 템플릿은 루틴의 실행 코드를 포함하며, 상기 각각의 템플릿은 헤더 파일에 기재될 수 있다. 따라서, 응용 프로그램(17)의 개발자는 상기 헤더 파일을 include 한 소스 코드를 작성하는 것만으로 몇몇 실시예들에 따른 매트릭스 연산 방법을 적용시킬 수 있게 되는 것이다.
도 4에 도시된 바와 같이, 매트릭스 연산 프레임워크 모듈(15)은 매트릭스 연산의 루틴들을 제공하는 매트릭스 연산 외부 라이브러리(15a)를 포함함으로써, 매트릭스 표현에 특정 오퍼레이션이 포함된 경우, 그 오퍼레이션의 루틴으로서 매트릭스 연산 프레임워크 모듈(15) 자체적으로 구현된 루틴뿐만 아니라 매트릭스 연산 외부 라이브러리(15a)에 포함된 루틴도 사용한다. 예를 들어, 매트릭스 곱 연산의 경우, 매트릭스 연산 프레임워크 모듈(15) 자체 구현 루틴이 매트릭스 연산 프레임워크 모듈(15)에 의하여 선택되거나, BLAS 라이브러리의 GEMM(General Matrix-Matrix Multiplication) 루틴이 매트릭스 연산 프레임워크 모듈(15)에 의하여 선택될 수 있을 것이다.
도 5에 도시된 바와 같이, 매트릭스 표현(17a-1)을 포함하는 응용 프로그램의 프로그램 코드(17a)는 매트릭스 연산 프레임워크 모듈(15)을 포함하기 위한 구문(17a-2)이 추가되는 것을 제외하고는 일반적인 방식 그대로 기재된다. 즉, 본 발명의 몇몇 실시예들에 따른 매트릭스 연산 방법은 기존의 방식 그대로 작성된 구문(매트릭스 표현을 포함한 것)으로 구성된 프로그램 코드에 의하여 수행될 수 있는 것이다. 이를 위해, 매트릭스 연산 프레임워크 모듈은 범용 라이브러리(16)의 매트릭스 오퍼레이션 메소드 또는 '+', '-', '*', 'log' 등의 연산자(operator)를 오버로딩(overloading) 하여, 매트릭스 오퍼레이션을 수행할 수 있다.
이미 설명한 바와 같이, 응용 프로그램(17)에 매트릭스 연산 프레임워크 모듈(15)이 포함될 때, 정적 링크, 동적 링크 또는 템플릿 메타프로그래밍 방식 등이 적용될 수 있는 것이다. 즉, 본 발명의 몇몇 실시예들에 따른 매트릭스 연산 방법은, 프로그램 코드 상에 매트릭스 연산 프레임워크 모듈의 포함을 위한 구문을 추가해 주는 것만으로 프로그램 개발자가 작성해 둔 기존의 프로그램 코드에 적용될 수 있는 편의성을 제공하는 것이다. 예를 들어, 응용 프로그램(17)의 프로그램 코드는 매트릭스 연산 프레임워크 모듈(15)의 헤더 파일을 include 하는 구문을 포함할 수 있을 것이다.
또는, 후술하겠으나, 도 16에 도시된 바와 같이 매트릭스 연산 프레임워크 모듈(15)이 운영체제/드라이버 레이어에 구현될 수도 있다. 이 경우, 응용 프로그램의 매트릭스 오퍼레이션 호출을 후킹(hooking) 하는 것에 의하여 매트릭스 오퍼레이션이 매트릭스 연산 프레임워크의 것으로 대체될 수 있다. 이 경우, 프로그램 코드에서 매트릭스 연산 프레임워크 모듈(15)의 포함을 위한 구문을 추가하지 않더라도 매트릭스 연산 프레임워크 모듈(15)에 의한 매트릭스 표현의 연산 최적화가 이뤄질 수 있다.
또한, 몇몇 실시예에서, 매트릭스 연산 프레임위크 모듈(15)은 응용프로그램(17)의 프로그램 코드를 실행시켜주는 인터프리터(interpreter) 내부의 모듈로서 구현될 수도 있을 것이다.
이하, 도 6을 참조하여, 본 발명의 일 실시예에 따른 매트릭스 연산 장치의 구성 및 동작을 설명한다. 도 6은 본 실시예에 따른 매트릭스 연산 장치의 블록 구성도이다. 도 6에 도시된 블록 구성도에 포함된 각각의 블록 중 매트릭스 연산 프레임워크 모듈(15)에 포함된 블록들(151 내지 157)은 각각의 기능 단위를 실행하는 논리적 블록으로서 소프트웨어 로직으로 구현된 것이거나, 각각의 기능 단위를 실행하는 하드웨어 유닛으로서 FPGA(Field Programming Gate Array) 및 SoC(System-on-Chip) 등의 연산 수단이 구비된 하드웨어를 이용하여 구현된 것일 수 있다. 이하, 매트릭스 연산 프레임워크 모듈(15)의 구성 및 동작을 중심으로, 본 실시예에 따른 매트릭스 연산 장치의 구성 및 동작을 설명한다.
매트릭스 연산 프레임워크 모듈(15)은 응용 프로그램(17)의 프로그램 코드에 포함된 매트릭스 표현(matrix expression)에 대한 데이터를 제공받는다. 예를 들어, 상기 매트릭스 표현에 따른 결과 매트릭스의 원소 값이 액세스 되거나, 상기 매트릭스 표현에 따른 결과 매트릭스가 출력 매트릭스로서 할당(assign) 되거나, 상기 매트릭스 표현으로 정의된 변수(variable)의 값이 액세스 되거나, 상기 매트릭스 표현에 대한 평가 함수가 호출될 때, 상기 매트릭스 표현에 대한 데이터가 매트릭스 연산 프레임워크 모듈(15)에 제공될 수 있다. 상기 평가 함수는 파라미터로 지정된 평가 대상 표현(expression)의 값을 출력하는 함수로서, 예를 들어 Perl, JavaScript, Python과 같은 스크립트 언어에서 지원하는 'eval()' 함수일 수 있다. 원소 값 액세스 연산자(operator) 또는 함수와, 할당 연산자와, 상기 평가 함수가 매트릭스 연산 프레임워크 모듈(15)에 의하여 오버로딩 됨으로써, 상기 매트릭스 표현에 대한 데이터가 매트릭스 연산 프레임워크 모듈(15)에 제공될 수 있을 것이다.
몇몇 실시예들에서, 매트릭스 연산 프레임워크 모듈(15)은 컴파일 타임에 상기 매트릭스 표현에 대한 연산을 수행할 수 있다. 즉, 프로그램 코드의 컴파일 결과로 생성된 바이너리는 매트릭스 연산 프레임워크 모듈(15)에 의하여 구성된 매트릭스 표현 연산 관련 인스트럭션(instruction)들을 포함할 수 있다.
또한, 다른 몇몇 실시예들에서, 매트릭스 연산 프레임워크 모듈(15)은 런타임(run-time)에 상기 매트릭스 표현에 대한 연산을 수행할 수도 있다. 예를 들어, 인터프리터 방식의 프로그램 언어로 작성된 프로그램 코드가 실행될 때, 매트릭스 연산 프레임워크 모듈(15)이 상기 매트릭스 표현에 대한 연산을 수행할 수 있다. 또한, 예를 들어, 매트릭스 표현을 포함하는 프로그램 코드의 바이너리가 실행될 때, 상기 매트릭스 표현에 따른 결과 매트릭스의 원소 값이 액세스 되거나, 상기 매트릭스 표현에 따른 결과 매트릭스가 출력 매트릭스로서 할당(assign) 되거나, 상기 매트릭스 표현으로 정의된 변수(variable)의 값이 액세스 되거나, 상기 매트릭스 표현에 대한 평가 함수가 호출되는 것을, 매트릭스 연산 프레임워크 모듈(15)이 후킹(hooking) 함으로써, 상기 매트릭스 표현에 대한 연산이 매트릭스 연산 프레임워크 모듈(15)에 의하여 수행될 수도 있을 것이다.
상기 인터프리터 방식의 프로그램 언어는, 파이썬(Python), 매트랩(Matlab) 등과 같이 특정 인터프리터에 의해 해석되어 실행되는 스크립트 언어로 작성된 것일 수 있다. 또한 상기 프로그램 코드는, C++11과 같이 템플릿 메타-프로그래밍을 지원하는 언어에 의해서 해석되는 템플릿 소스 코드일 수 있다.
이하, 매트릭스 연산 프레임워크 모듈(15)이 매트릭스 표현의 결과 매트릭스의 각 원소 값을 연산하는 과정을 보다 자세히 설명한다.
도 7을 참조하면, 매트릭스 표현 변환부(151)는 응용 프로그램(17)으로부터 제공된 매트릭스 표현(이하, '원본 매트릭스 표현'이라 한다)(10)을 변환한다. 도 7을 참조하면, 변환된 매트릭스 표현(20)은 하나 이상의 오퍼레이션(20-1) 및 그 피연산자 매트릭스(20-2)를 포함한다. 피연산자 매트릭스(20-2)는 기초 매트릭스(primary matrix)이거나 메타 매트릭스(meta matrix)일 수 있다.
상기 기초 매트릭스는 하드웨어(13)의 메모리 주소가 지정된 것으로, 상기 메모리 주소를 통하여 원소 값을 액세스 할 수 있는 매트릭스이다. 원소 값이 상기 메모리 상에 저장된 매트릭스 및 매트릭스 표현의 결과 매트릭스가 할당되는 매트릭스 모두 상기 기초 매트릭스이다. 상기 메타 매트릭스는 매트릭스 오퍼레이션과 그 피연산자 매트릭스들에 의하여 생성되는 결과로서 논리적인 매트릭스 형태의 데이터를 가리킨다. 도 8에 도시된 바와 같이, 각각의 기초 매트릭스는 메모리(30) 상에 특정 주소 영역을 할당 받게 되므로, 상기 주소를 이용하여 메모리 상에서 액세스 가능하나, 메타 매트릭스는 메모리(30)의 특정 변수에 할당되지 않은 힙(heap) 영역(31) 또는 힙 영역(31) 이외의 기타 저장 영역에 그 데이터의 일부가 일시적으로 저장될 수는 있으나, 메모리 상에서 액세스가 가능하지 않은 차이점이 있다.
또한, 메타 매트릭스의 각 원소 값은 연산 되지 않으므로 더더욱 메타 매트릭스는 메모리(30) 상에서 액세스 불가능하다. 다만, 메타 매트릭스의 오퍼레이션이 특정 타입의 오퍼레이션인 경우, 그 결과 매트릭스의 각 원소 값이 연산되어 임시 저장 공간에 저장된다. 이에 대하여는 후술한다.
도 9는 기초 매트릭스 A, B, C와 메타 매트릭스 E1, E2, E3, E4 로 변환된 원본 매트릭스 표현(20a)이 구성된 결과를 도시한 것이다.
본 발명의 몇몇 실시예들에서, 매트릭스 표현 변환부(151)는 원본 매트릭스 표현에 포함된 오퍼레이션을 제1 타입 및 제2 타입 중 어느 하나로 구분할 수 있다. 즉, 매트릭스 표현 변환부(151)에 의하여 변환된 변환 매트릭스 표현(21)은 제1 타입 오퍼레이션 및 제2 타입 오퍼레이션 중 어느 하나로 구분된 오퍼레이션(21-1) 및 그 피연산자 매트릭스(21-2)로 구성된 것이다.
몇몇 실시예에서, 제1 타입의 오퍼레이션은 피연산자 매트릭스의 참조되는 원소 값의 액세스가 가능한 상태에서 연산이 가능한 매트릭스 오퍼레이션이고, 제2 타입의 오퍼레이션은 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서 연산이 가능한 매트릭스 오퍼레이션이다. 다른 몇몇 실시예에서, 제1 타입의 오퍼레이션은 피연산자 매트릭스의 참조되는 원소 값의 액세스만 가능한 상태에서도 연산이 가능한 매트릭스 오퍼레이션이고, 제2 타입의 오퍼레이션은 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서만 연산이 가능한 매트릭스 오퍼레이션이다.
이하, 제1 타입 오퍼레이션은 EOP(Element accessible OPeration)로 지칭하고, 제2 타입 오퍼레이션은 NOP(Non-element accessible OPeration)로 지칭하기로 한다.
EOP는 원소 단위의 국소적 연산(element-wise computation) 실행이 가능한 오퍼레이션이다. 즉, EOP는 특정 원소 값을 구하기 위해, 피연산자 매트릭스의 대응되는 위치의 원소 값만이 요구되는 오퍼레이션인 것으로 이해될 수 있을 것이다. 예를 들어, (A + B), (A - B) 등의 원소 별 산수 매트릭스 연산(element-wise arithmetic matrix operation), exp(A), log(A) 등의 원소 별 수학 매트릭스 연산(element-wise mathematical matrix operation), (A > B), (A < B) 등의 원소 별 논리 매트릭스 연산(element-wise logic matrix operation), matrix transpose 등의 원소 별 변환 매트릭스 연산(element-wise transforming matrix operation)이 EOP가 될 수 있을 것이다.
반면에, NOP는 원소 단위의 국소적 연산이 불가능하고, 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서 연산이 가능한 매트릭스 오퍼레이션이다. 예를 들어, BLAS 라이브러리의 GEMM 루틴, Matrix Inverse, Matrix Decomposition 등의 오퍼레이션이 NOP가 될 수 있을 것이다.
도 10에 도시된 변환 매트릭스 표현(21)은 E1의 오퍼레이션인 '+', E3의 오퍼레이션인 'transpose', E4의 오퍼레이션인 '+'가 EOP이고, E2의 오퍼레이션인 'exp'가 NOP인 것으로 도시되어 있다
매트릭스 표현 변환부(151)는 오퍼레이션 타입 지정부(152)에 원본 매트릭스 표현에 포함된 오퍼레이션의 타입을 문의할 수 있다. 이하, 오퍼레이션 타입 지정부(152)가 오퍼레이션의 타입을 결정하는 몇몇 실시예들을 설명한다.
몇몇 실시예에서, 오퍼레이션 타입 지정부(152)는 오퍼레이션 별 타입 매칭 데이터를 참조하여 오퍼레이션이 EOP인지 혹은 NOP인지 결정할 수 있다. 도 11에는 예시적인 오퍼레이션 별 타입 매칭 데이터(1520)가 도시되어 있다. 오퍼레이션 별 타입 매칭 데이터(1520)에 특정 오퍼레이션의 타입이 단일 타입으로 지정된 경우, 오퍼레이션 타입 지정부(152)는 상기 특정 오퍼레이션의 타입을 상기 지정된 타입으로 결정할 것이다. 예를 들어, 오퍼레이션 별 타입 매칭 데이터(1520)를 참조하는 오퍼레이션 타입 지정부(152)는 '+', '-', 'transpose', 'log' 오퍼레이션의 타입을 EOP(1521)로 결정하고, 'matrix inverse', 'matrix decomposition', 'matrix convolution' 오퍼레이션의 타입을 NOP(1522)로 결정할 것이다.
다만, 오퍼레이션 별 타입 매칭 데이터(1520)는 몇몇 오퍼레이션들의 타입을 EOP와 NOP 모두 가능한 것으로 지정할 수도 있다. 예를 들어, 도 11에 도시된 바와 같이 Matrix product(행렬 곱) 오퍼레이션과, exp 오퍼레이션은 EOP와 NOP 모두 가능한 것으로 지정될 수 있다. Matrix product(행렬 곱) 오퍼레이션 중 Dot product 루틴은 EOP이고, BLAS GEMM 루틴은 NOP인 점이 상세 타입 매칭 데이터(1524)에 기재되어 있다.
오퍼레이션 타입 지정부(152)는 EOP와 NOP 모두 가능한 오퍼레이션의 타입을 EOP와 NOP 중에서 랜덤하게 결정하거나, 상황 정보에 따라 EOP와 NOP 중 하나를 우선시하여 결정할 수 있다.
상기 상황 정보는, 예를 들어 하드웨어 스펙 정보 또는 현재 하드웨어 가용 자원의 모니터링 정보일 수 있다. 즉, 오퍼레이션 타입 지정부(152)는 상기 원본 매트릭스 표현에 포함된 각각의 오퍼레이션을, 상기 컴퓨팅 장치의 하드웨어 사양을 반영하여, EOP 또는 NOP 중 하나로 결정할 수 있는 것이다. 컴파일 타임이 아닌 런타임에 본 실시예가 수행되는 경우, 하드웨어 스펙 정보 또는 현재 하드웨어 가용 자원의 모니터링 정보가 상기 상황 정보로 이용됨으로써, 응용 프로그램(17)을 실행하는 장치의 컴퓨팅 환경에 최적화된 매트릭스 연산이 수행될 수 있을 것이다. 오퍼레이션 타입 지정부(152)는 운영체제/드라이버(14)에서 제공하는 메소드의 호출 등을 통하여 하드웨어(13)의 자원 상황을 모니터링 하거나, 하드웨어(13)의 스펙 정보를 얻을 수 있다.
몇몇 실시예에서, 오퍼레이션 타입 지정부(152)는 상기 컴퓨팅 장치의 하드웨어 스펙 정보 및 현재 가용 하드웨어 리소스 정보 중 적어도 하나를 이용하여, 상기 컴퓨팅 장치의 하드웨어 프로파일링을 수행하고, 그 결과를 이용하여 EOP와 NOP 모두 가능한 오퍼레이션의 타입을 EOP와 NOP 중 어느 하나로 결정할 수 있다.
다른 몇몇 실시예에서, 오퍼레이션 타입 지정부(152)는 상기 컴퓨팅 장치에 구비된 전체 메모리 사이즈 또는 현재 가용 메모리 사이즈가 제1 사이즈 미만인 경우, 상기 원본 매트릭스 표현에 포함된 오퍼레이션을 EOP로 결정하고, 상기 컴퓨팅 장치에 구비된 전체 메모리 사이즈 또는 현재 가용 메모리 사이즈가 상기 제1 사이즈 이상인 경우, 상기 오퍼레이션을 NOP로 결정할 수 있을 것이다. 이는, 후술하겠으나, NOP 오퍼레이션은 그 결과를 메모리 상의 임시 저장 공간에 저장해 두기 때문이다. 즉, NOP 오퍼레이션은 중복 연산을 방지하는 대신 메모리 공간을 요한다.
또 다른 몇몇 실시예에서, 오퍼레이션 타입 지정부(152)는 상기 컴퓨팅 장치에 설치된 전체 프로세싱 파워 또는 현재 가용 프로세싱 파워가 기준치 미만인 경우, 상기 원본 매트릭스 표현에 포함된 오퍼레이션을 EOP로 결정하고, 상기 컴퓨팅 장치에 설치된 전체 프로세싱 파워 또는 현재 가용 프로세싱 파워가 기준치 이상인 경우, 상기 원본 매트릭스 표현에 포함된 오퍼레이션을 NOP로 결정할 수 있을 것이다. 예를 들어, 상기 프로세싱 파워의 기준치는 초당 연산 횟수의 단위로 지정될 수 있을 것이다. SOC(System-on-Chip) 또는 임베디드 시스템과 같은 저사양 시스템에서는 상기 컴퓨팅 장치에 설치된 전체 프로세싱 파워 또는 현재 가용 프로세싱 파워가 기준치 미만일 것이고, 이러한 저사양 시스템에는 메모리 사용 제약이 있을 수 있는 바, 오퍼레이션 타입 지정부(152)는 오퍼레이션의 타입을 EOP로 결정할 수 있다.
상기 상황 정보는, 다른 예를 들어, 코드 파싱부(156)로부터 제공받는 프로그램 코드의 매트릭스 표현 정량 정보일 수도 있다. 코드 파싱부(156)는 프로그램 코드를 파싱(parsing) 하고, 매트릭스 표현을 식별함으로써, 매트릭스 표현의 개수를 카운트할 수 있다. 예를 들어, 상기 매트릭스 표현의 개수 정보가 상기 매트릭스 표현 정량 정보로서 오퍼레이션 타입 지정부(152)에 제공될 수 있는 것이다. 프로그램 코드에 포함된 매트릭스 표현의 개수가 많을 수록 메모리 사용량이 많을 것이므로, 메모리 부족을 방지하기 위하여 오퍼레이션 타입 지정부(152)는 EOP와 NOP 모두 가능한 오퍼레이션의 타입을 EOP로 결정할 수 있을 것이다. 반대로, 프로그램 코드에 포함된 매트릭스 표현의 개수가 적을 수록 메모리 부족을 걱정할 필요가 없을 것이므로, 빠른 연산 속도를 위하여, 오퍼레이션 타입 지정부(152)는 EOP와 NOP 모두 가능한 오퍼레이션의 타입을 NOP로 결정할 수 있을 것이다.
상기 상황 정보는, 또 다른 예를 들어, 프로그램 코드를 통해 세팅 된 연산 모드 정보일 수도 있다. 예를 들어, 응용 프로그램의 개발자가 프로그램 코드를 통해 매트릭스 연산 프레임워크 모듈(15)이 제공하는 연산 모드 세팅 메소드를 통해 연산 모드를 속도 우선, 메모리 절약 우선 중 하나로 세팅하는 경우, 오퍼레이션 타입 지정부(152)는 그에 따른 오퍼레이션 타입 결정을 할 수 있을 것이다. 예를 들어, 오퍼레이션 타입 지정부(152)는 상기 연산 모드 정보가 속도 우선을 가리키는 값인 경우, EOP와 NOP 모두 가능한 오퍼레이션의 타입을 NOP로 결정할 수 있을 것이다. 또한, 오퍼레이션 타입 지정부(152)는 상기 연산 모드 정보가 메모리 절약 우선을 가리키는 값인 경우, EOP와 NOP 모두 가능한 오퍼레이션의 타입을 EOP로 결정할 수 있을 것이다.
상기 상황 정보는, 또 다른 예를 들어, 코드 파싱부(156)로부터 제공받는 매트릭스 표현의 결과 매트릭스에 대한 원소 값 희소(sparse) 액세스 여부를 가리킬 수 있다. 예를 들어, 매트릭스 표현 X의 결과 매트릭스의 원소 값 중 희소 액세스 기준치 이하의 원소 값만 액세스 되는 경우, 상기 매트릭스 표현의 오퍼레이션의 타입은 NOP를 최소화하는 방향으로 결정될 수 있을 것이다. 예를 들어 매트릭스 표현 X의 결과 매트릭스의 원소 값 중 단 하나의 원소 값만 액세스 되는 경우, 상기 매트릭스 표현 X를 구성하는 오퍼레이션은 NOP 타입의 오퍼레이션만 제공되는 경우 등 불가피한 경우를 제외하고는 EOP 타입으로 결정될 수 있을 것이다.
몇몇 실시예에서, 상기 희소 액세스 기준치는, 상기 컴퓨팅 장치에 구비된 전체 메모리 사이즈 또는 현재 가용 메모리 사이즈가 클 수록 더 높은 값으로 설정될 수 있다.
지금까지, 오퍼레이션 타입 지정부(152)가 오퍼레이션 별 타입 매칭 데이터를 참조하여 오퍼레이션이 EOP인지 혹은 NOP인지 결정하는 실시예들을 설명하였다. 다른 몇몇 실시예에서, 오퍼레이션 타입 지정부(152)는 오퍼레이션 별 타입 매칭 데이터 없이 오퍼레이션의 타입을 결정할 수도 있다. 이하 설명한다.
오퍼레이션 타입 지정부(152)는 원칙적으로 오퍼레이션을 EOP로 결정하고, 예외 규칙을 만족하는 경우에 한하여 NOP로 결정할 수 있다. 상기 예외 규칙은, 타입 결정 대상인 오퍼레이션이 NOP로만 처리할 수 있는 오퍼레이션 리스트에 포함되는 것일 수 있다. 이 경우, NOP의 형태로 연산 되는 오퍼레이션을 최소화함으로써, 메모리 사용량을 최대한 억제하고, 이에 따라 큰 사이즈의 매트릭스 연산도 메모리 문제없이 처리할 수 있는 효과를 얻는다.
오퍼레이션 타입 지정부(152)는 원칙적으로 오퍼레이션을 NOP로 결정하고, 예외 규칙을 만족하는 경우에 한하여 EOP로 결정할 수도 있다. 상기 예외 규칙은, 타입 결정 대상인 오퍼레이션이, 결과 매트릭스의 한개 원소를 얻기 위해 피연산자 매트릭스의 한개 원소를 액세스하는 오퍼레이션인 1:1 오퍼레이션의 리스트에 포함되는 것일 수 있다. 상기 1:1 오퍼레이션은, 예를 들어 '+', '-' 등을 포함할 수 있다. Matrix product(행렬 곱) 연산의 경우, 상기 1:1 오퍼레이션의 리스트에 포함되지 않을 것이다. 이 경우, 상기 1:1 오퍼레이션을 제외한 모든 매트릭스 오퍼레이션을 즉시 수행하여 그 결과를 임시 저장 공간에 저장해 두고, NOP 연산에 비해 상대적으로 연산 부하가 적은 1:1 오퍼레이션만을 최종적으로 일괄하여 수행함으로써, 연산 속도를 증가시킬 수 있는 효과를 얻는다. 물론, 본 실시예는 메모리 사이즈가 충분한 컴퓨팅 환경에서 유효할 것이다.
지금까지 매트릭스 표현 변환부(151)에 의하여 원본 매트릭스 표현이 변환 매트릭스 표현으로 변환되는 과정을 원본 매트릭스 표현의 오퍼레이션의 타입을 EOP와 NOP 중 하나로 결정하는 것을 중심으로 설명하였다. 변환 매트릭스 표현에 포함되는 오퍼레이션은 EOP 또는 NOP 중 어느 하나로 지정된다. 그리고, 매트릭스 표현의 전체적인 연산 과정에서 NOP는 미리 연산되어 임시 저장 공간에 저장되고, EOP 들은 마지막에 요소별(element-wise) 일괄 연산의 방식으로 연산이 수행된다.
즉, EOP는 마지막에 다른 EOP들과 함께 일괄 연산 되는 점에서 지연된 연산(delayed computation)이 되는 것으로 이해될 수 있을 것이다. 또한, EOP는 그 결과를 임시 저장 공간에 저장해 두지 않으므로 메모리 공간이 절약된다. 또한, EOP들이 마지막에 함께 일괄 연산되는 과정에서 프로세서의 효율적인 활용이 가능하다. 모든 매트릭스 오퍼레이션이 2개 피연산자 매트릭스들을 이용하여 즉시 연산되고, 그 결과 매트릭스가 임시 저장 공간에 저장되는 종래의 매트릭스 연산 방식과 대비할 때, 메모리 절약 및 속도 향상의 효과가 매우 크다.
몇몇 실시예에서, EOP 뿐만 아니라 NOP도 지연 연산이 수행될 수 있다. 이 때, NOP 및 EOP 모두 원본 매트릭스 표현의 최종 결과 매트릭스의 원소 값이 액세스될 때 연산 되는 점에서 지연 연산이 되는 것으로 이해 될 수 있을 것이다. 이 때, 최종 결과 매트릭스의 원소 값이 액세스되는 될 때, NOP의 결과가 먼저 연산되어 임시 저장 공간에 저장되고, 그 후에 EOP들이 요소별(element-wise) 일괄 연산의 방식으로 연산될 수 있을 것이다.
이하, 변환 매트릭스 표현을 이용하여, 원본 매트릭스 표현의 최종 결과 매트릭스의 각 원소 값이 연산되는 과정을 계속하여 설명한다.
도 12는 매트릭스 표현 평가부(153)가 변환 매트릭스 표현(21)을 평가(evaluation)하여 상기 최종 결과 매트릭스의 각 원소 값의 산출식을 생성하는 과정을 설명하기 위한 도면이다. 도 12에 도시된 바와 같이, EOP에 대하여는 그 결과인 메타 매트릭스의 각 원소 값의 산출식이 생성되고, NOP에 대하여는 그 결과인 메타 매트릭스의 각 원소 값이 연산 된 후 임시 저장 공간에 저장된다. 메타 매트릭스 E2의 경우 그 오퍼레이션이 NOP이므로, 각 원소 값이 연산 된 후, 임시 저장 공간 T1(22-1)에 저장되는 점이 도시되어 있다.
NOP 연산이 BLAS 등의 외부 라이브러리(157)의 루틴을 호출하여 수행될 수도 있는 점은 이미 설명한 바 있다.
상기 임시 저장 공간은 임시 저장 공간 관리부(154)에 의하여 할당되고, 사용 완료 된 임시 저장 공간은 다시 회수 될 수 있다. 도 14를 참조하여 설명한다. 임시 저장 공간 관리부(154)는 응용 프로그램이 사용할 수 있는 HEAP 영역 내에서 임시 저장 공간(32)을 할당하고, 필요한 임시 저장 공간의 크기를 피연산자 매트릭스의 데이터 사이즈를 이용하여 결정할 수 있다. 임시 저장 공간 관리부(154) 임시 저장 공간의 식별자 및 그 주소 범위를 매칭한 임시 저장 공간 테이블(1540)을 이용하여 임시 저장 공간(32)을 관리할 수 있을 것이다.
마지막 메타 매트릭스인 E4[i][j]는 메타 매트릭스 E2[i][j]와 메타 매트릭스 E3[i][j]의 합인데, 메타 매트릭스 E2[i][j]는 NOP의 결과 매트릭스이므로, 임시 저장 공간인 T1(22-2)에서 바로 액세스 되고, 메타 매트릭스 E3는 그 산출식인 C[j][i]으로 치환된다. C는 기초 매트릭스이므로 메모리 상에서 액세스 가능하다. 즉, 도 12에 도시된 사례에서 매트릭스 표현 평가부(153)는 원본 매트릭스 표현의 최종 결과 매트릭스 원소 값의 산출식을 'R[i][j] = T1[i][j] + C[j][i]'로 생성할 수 있을 것이다.
다음으로, 도 13에 도시된 바와 같이, 매트릭스 연산부(155)가 상기 최종 결과 매트릭스의 각 원소 값을 연산한다. 몇몇 실시예들에서, 매트릭스 연산부(155)는 각 원소 별(element-wise) 연산을 통해 상기 최종 결과 매트릭스의 각 원소 값을 연산할 수 있다. 이 때, EOP의 메타 매트릭스의 각 원소 값은 피연산자 메트릭스의 모든 원소 값의 액세스가 가능하지 않더라도 연산이 가능하나, NOP의 메타 매트릭스의 각 원소 값은 피연산자 메트릭스의 모든 원소 값의 액세스가 가능해야 연산이 가능하다. 이러한 이유로 NOP의 메타 매트릭스의 결과 매트릭스를 미리 연산해 둔 것이고, 그 결과를 임시 저장 공간(23-1)에 저장해 둔 것으로 이해될 수 있을 것이다. 즉, 매트릭스 연산부(155)는 원본 매트릭스 표현의 최종 결과 매트릭스 원소 값의 산출식인 'R[i][j] = T1[i][j] + C[j][i]'(23)를 이용하여 각 원소 별(element-wise) 연산을 통해 일괄 연산할 수 있다.
이미 설명한 바와 같이, 몇몇 실시예에서, EOP 뿐만 아니라 NOP도 지연 연산이 수행될 수 있다. 이 때, NOP 및 EOP 모두 원본 매트릭스 표현의 최종 결과 매트릭스의 원소 값이 액세스될 때 연산 되는 점에서 지연 연산이 되는 것으로 이해 될 수 있을 것이다. 이 때, 최종 결과 매트릭스의 원소 값이 액세스 될 때, NOP의 결과가 먼저 연산되어 임시 저장 공간에 저장되고, 그 후에 EOP들이 요소별(element-wise) 일괄 연산의 방식으로 연산될 수 있을 것이다.
지금까지 매트릭스 연산 프레임워크 모듈(15)의 동작을 중심으로 본 실시예에 따른 매트릭스 연산 장치의 구성 및 동작을 설명하였다. 도 15 내지 도 16을 참조하여 매트릭스 연산 프레임워크 모듈(15)의, 응용 프로그램(17)의 실행을 위한 소프트웨어 계층 구조 상 위치를 기준으로 한 실시예들을 설명한다.
몇몇 실시예들에서, 매트릭스 연산 프레임워크 모듈(15)은 매트릭스 표현(10)을 포함하는 응용 프로그램(17)에 포함된 모듈일 수 있다. 이 경우, 매트릭스 연산 프레임워크 모듈(15)은 응용 프로그램(17)의 프로세스 내부에서 실행된다. 매트릭스 연산 프레임워크 모듈(15)은 정적 링크 방식으로 응용 프로그램의 프로그램 코드와 함께 컴파일 된 것이거나, 컴파일이 된 라이브러리의 형태로 동적 링크 방식으로 응용 프로그램의 바이너리에 링크된 것이거나, 템플릿 메타프로그래밍 방식으로 컴파일 시점에 필요한 루틴이 응용 프로그램의 프로그램 코드와 함께 컴파일 된 것일 수 있다.
이 때, 매트릭스 연산 프레임워크 모듈(15)은 응용 프로그램의 프로그램 코드에서 매트릭스 표현의 연산을 위하여 사용한 연산자 또는 함수를 오버로딩(overloading) 함으로써 실행될 수 있다. 이렇게 실행된 매트릭스 연산 프레임워크 모듈은 하드웨어 자원 정보를 모니터링한 결과를 이용하여 매트릭스 표현의 연산을 최적화할 수 있다.
다른 몇몇 실시예들에서, 매트릭스 연산 프레임워크 모듈(15)은 드라이버/운영체제 계층(14)에서 실행될 수 있다. 이 경우는 매트릭스 연산 프레임워크 모듈(15)이 런-타임에 실행되는 것으로 이해될 수 있을 것이다.
이 때, 매트릭스 연산 프레임워크 모듈(15)은 운영체제에 등록된 서비스의 형태로 실행될 수 있다. 이 경우, 매트릭스 연산 프레임워크 모듈(15)은 응용 프로그램(17)의 매트릭스 오퍼레이션 호출, 매트릭스 표현의 결과 매트릭스의 원소 값이 액세스 되는 것, 매트릭스 표현으로 정의된 변수(variable)의 값이 액세스 되는 것, 또는 매트릭스 표현의 결과를 평가하는 평가 함수가 호출되는 것을 후킹(hooking) 하는 것에 의하여 매트릭스 오퍼레이션이 매트릭스 연산 프레임워크의 것으로 대체될 수 있다. 이 경우, 프로그램 코드에서 매트릭스 연산 프레임워크 모듈(15)을 링크하지 않더라도 매트릭스 연산 프레임워크 모듈(15)에 의한 매트릭스 표현의 연산 최적화가 이뤄질 수 있다. 즉, 이 경우는 이미 개발이 완료되어 배포된 응용 프로그램에 대하여도 매트릭스 표현의 연산 최적화가 가능한 효과를 얻을 수 있다.
이하에서는, 도 17을 참조하여 본 발명의 다양한 실시예에서 설명된 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치(500)에 대하여 설명하도록 한다.
도 17은 컴퓨팅 장치(500)를 나타내는 예시적인 하드웨어 구성도이다.
도 17에 도시된 바와 같이, 컴퓨팅 장치(500)는 하나 이상의 프로세서(510), 버스(550), 통신 인터페이스(570), 프로세서(510)에 의하여 수행되는 컴퓨터 프로그램(591)을 로드(load)하는 메모리(530)와, 컴퓨터 프로그램(591)를 저장하는 스토리지(590)를 포함할 수 있다. 다만, 도 17에는 본 발명의 실시예와 관련 있는 구성요소들 만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 17에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다. 도 13에 도시된 컴퓨팅 장치(500)는 IaaS(Infrastructure-as-a-Service) 방식의 클라우드 서비스를 제공하는 서버팜(server farm)에 소속된 물리 서버 중 어느 하나를 가리킬 수 있다.
프로세서(510)는 컴퓨팅 장치(500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit), GPGPU(General Purpose Graphics Processing Unit), DSP(Digital Signal Processor), TP(Tensor Processor) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서 중 적어도 하나를 포함하여 구성될 수 있다. 또한, 프로세서(510)는 본 발명의 다양한 실시예들에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(500)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(530)는 본 발명의 다양한 실시예들에 따른 방법/동작들을 실행하기 위하여 스토리지(590)로부터 하나 이상의 프로그램(591)을 로드(load) 할 수 있다. 예를 들어, 컴퓨터 프로그램(591)이 메모리(530)에 로드 되면, 도 6에 도시된 바와 같은 매트릭스 연산 프레임워크 모듈(15)이 메모리(530) 상에 구현될 수 있다. 메모리(530)의 예시는 RAM이 될 수 있으나, 이에 한정되는 것은 아니다.
매트릭스 연산 프레임워크 모듈(15)은, 몇몇 실시예에서, 도 18에 도시된 바와 같이 각각의 응용 프로그램(17-1, 17-2)에 내장된 형태(15a, 15b)로 메모리(530)의 사용자 레벨(531)에 로드 될 수 있다. 또한, 매트릭스 연산 프레임워크 모듈(15)은, 다른 몇몇 실시예에서, 도 19에 도시된 바와 같이 각각의 응용 프로그램(17-1, 17-2)와 별개로, 시스템 서비스 등의 형태(15c)로 메모리(530)의 커널 레벨(532)에 로드 될 수도 있다.
버스(550)는 컴퓨팅 장치(500)의 구성 요소 간 통신 기능을 제공한다. 버스(550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(570)는 컴퓨팅 장치(500)의 유무선 인터넷 통신을 지원한다. 통신 인터페이스(570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(570)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(590)는 하나 이상의 컴퓨터 프로그램(591)을 비임시적으로 저장할 수 있다. 스토리지(590)는 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(591)은 본 발명의 다양한 실시예들에 따른 방법/동작들이 구현된 하나 이상의 인스트럭션들을 포함할 수 있다. 컴퓨터 프로그램(591)이 메모리(530)에 로드 되면, 프로세서(510)는 상기 하나 이상의 인스트럭션들을 실행시킴으로써 본 발명의 다양한 실시예들에 따른 방법/동작들을 수행할 수 있다.
본 발명의 다양한 실시예에서 설명된 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치(500)는 매트릭스 연산을 위한 특화된 하드웨어 구조를 가진 것일 수 있다. 즉, 도 20에 도시된 바와 같이, 메모리(530)의 커널 레벨에 상시 로드 되어 있는, 시스템 서비스로서의 매트릭스 연산 프레임워크 모듈(15c)과 매트릭스 연산 전용 노스브릿지(northbridge)로 연결된 매트릭스 연산 전용 프로세서(510-2)가 제공될 수 있다. 매트릭스 연산 전용 프로세서(510-2)는 매트릭스 연산 프레임워크 모듈(15c)이 요청하는 연산 만을 처리하는 특화된 프로세서로 이해될 수 있을 것이다.
예를 들어, 매트릭스 연산 전용 프로세서(510-2)는 GPU(Graphic Processing Unit), GPGPU(General Purpose Graphics Processing Unit) 또는 TP(Tensor Processor)일 수 있다.
몇몇 실시예에서, 매트릭스 연산 프레임워크 모듈(15c)은 사전에 지정된 제1 그룹의 NOP 연산 만을 매트릭스 연산 전용 프로세서(510-2)를 통해 처리하고, 상기 제1 그룹의 NOP 연산을 제외한 나머지 NOP 연산 및 EOP 연산은 범용 프로세서(510-1)를 통해 처리할 수도 있다. 상기 제1 그룹의 NOP 연산은 머신 러닝 과정에서 활용 빈도가 높은 행렬 곱 오퍼레이션 또는 컨볼루션 오퍼레이션을 포함할 수 있다. 범용 프로세서(510-1)는 예를 들어 CPU(Central Processing Unit)일 수 있다.
지금까지 도 2 내지 도 20을 참조하여, 본 발명의 일 실시예에 따른 매트릭스 연산 장치의 구성 및 동작을 설명하였다. 본 실시예에서 설명한 기술 사상은 후술할 매트릭스 연산 방법에서도 그대로 적용되거나, 일부 변형되어 적용될 수 있음은 물론이다. 또한, 후술할 매트릭스 연산 방법에서 설명되는 기술 사상 역시 전술한 매트릭스 연산 장치에 그대로 적용되거나, 일부 변형되어 적용될 수 있음을 유의한다.
이하, 도 21 내지 도 24를 참조하여, 본 발명의 다른 실시예에 따른 매트릭스 연산 방법을 설명한다. 이해의 편의를 돕기 위해 전술한 내용은 간략히 설명한다. 본 실시예에 따른 방법은 컴퓨팅 장치에 의하여 실행될 수 있다. 상기 컴퓨팅 장치는 프로그램 개발 환경을 구비한 컴퓨팅 장치이거나, 응용 프로그램 실행 환경을 구비한 컴퓨팅 장치일 수 있다. 본 실시예에 따른 방법에 포함되는 일부 동작의 수행 주체에 대한 기재가 생략될 수 있으며, 그러한 경우 그 주체는 상기 컴퓨팅 장치임을 유의한다.
도 21를 참조하여 본 실시예에 따른 매트릭스 연산 방법을 간략하게 설명한다. 매트릭스 표현이 포함된 프로그램 코드가 컴파일 또는 실행을 위해 컴파일 환경 또는 실행 환경에 제공되고(S101), 상기 매트릭스 표현의 결과 매트릭스의 원소 값이 액세스되면(S102), 상기 매트릭스 표현이 변환되어 변환 매트릭스 표현이 생성된다(S110). 상기 변환 매트릭스 표현에 포함된 오퍼레이션은 NOP 또는 EOP 중 어느 하나로 구분된 것이다.
도 22를 참조하면, 변환 매트릭스 표현은 기초 매트릭스의 식별(S111), 오퍼레이션과 그 피연산자 식별 및 식별된 오퍼레이션의 결과 매트릭스인 메타 매트릭스의 구성(S112), 오퍼레이션의 타입 결정(S113)의 과정을 거쳐 생성된다.
EOP 또는 NOP 중 어느 하나로 오퍼레이션의 타입이 결정될 때, 하드웨어 스펙 정보 또는 하드웨어 가용 리소스 정보가 고려되거나, 응용 프로그램 개발자에 의하여 세팅된 연산 모드 정보가 고려되거나, 프로그램 코드의 파싱 결과를 이용한 매트릭스 표현 개수 정보가 고려될 수 있는 점은 상술한 바를 참조한다.
몇몇 실시예에 따른 오퍼레이션 타입 결정(S113)의 과정을 도 23을 통하여 보다 자세히 설명한다. 변환 매트릭스 표현의 최초 오퍼레이션으로부터 오퍼레이션 타입 결정이 진행된다(S1130). 현재 오퍼레이션이 단일 타입만 지원되는 것이라면(S1131), 당연히 현재 오퍼레이션의 타입은 상기 단일 타입에 해당되는 타입으로 결정된다(S1133).
반면, 현재 오퍼레이션이 단일 타입만 지원되는 것이 아니라면(S1131), 예를 들어, 하드웨어 상황 정보를 이용하여 오퍼레이션의 타입이 결정될 수 있다(S1132). 물론, 도 23에 기재된 것과는 달리, 응용 프로그램 개발자에 의하여 세팅된 연산 모드 정보가 고려되거나, 프로그램 코드의 파싱 결과를 이용한 매트릭스 표현 개수 정보가 고려될 수 있는 점을 다시 한번 유의한다.
몇몇 실시예들에서, 매트릭스 표현 내에 여러번 포함된 오퍼레이션이 중복 연산되는 것이 방지됨으로써, 매트릭스 표현 단위의 연산 최적화가 수행될 수 있다. 이를 위해, 현재 오퍼레이션이 다른 복수의 오퍼레이션의 피연산자인 경우, 상기 현재 오퍼레이션의 타입은 NOP 타입인 것으로 결정함으로써(S1134), 매트릭스 표현 내에 여러번 포함된 오퍼레이션이 중복 연산되는 것이 방지될 수 있다. 매트릭스 표현 내에 여러번 포함된 오퍼레이션이 중복 연산되는 것이 방지되는 예시는 도 33 내지 도 34를 참조하여 보다 자세히 후술 될 것이다.
단계 S1131 내지 S1134의 오퍼레이션 타입 결정 동작은 변환된 매트릭스 표현의 마지막 오퍼레이션에 대하여 타입 결정이 마무리될 때까지 반복된다(S1135, S1136).
다른 몇몇 실시예에 따른 오퍼레이션 타입 결정(S113)의 과정을 도 24를 통하여 보다 자세히 설명한다. 본 실시예에 따른 오퍼레이션 타입 결정의 과정은 연산 대상인 현재 매트릭스 표현에 대한 최적의 오퍼레이션 별 타입 세팅이 기 저장되지 않은 경우 수행된다(S1136). 연산 대상인 현재 매트릭스 표현에 대한 최적의 오퍼레이션 별 타입 세팅이 이미 이전의 연산 과정에서 지정되었고, 그 결과가 저장되었다면 저장된 오퍼레이션 별 타입 세팅 결과가 그대로 적용될 수 있을 것이다.
단계 S1137에서, 변환된 매트릭스 표현에 포함된 오퍼레이션 중 복수 타입을 지원하는 오퍼레이션들을 이용하여 조합 가능한 케이스들이 생성된다. 이 때, 변환된 매트릭스 표현에 포함된 오퍼레이션 중 단일 타입만을 지원하는 오퍼레이션들은 변수가 아닌 상수이므로, 상기 케이스에 상기 단일 타입의 오퍼레이션이 포함될 것이다.
단계 S1138에서 각각의 조합 가능 케이스에 따른 연산 시간이 시뮬레이션 된다. 그리고, 단계 S1139에서 연산 시간이 최소인 케이스가 최적의 오퍼레이션 타입 정보로 저장된다.
즉, 도 24를 참조하여 설명한 오퍼레이션 타입 결정(S113)에 따르면, 하나의 매트릭스 표현에 포함된 각각의 오퍼레이션들 중 EOP 및 NOP 모두 가능한 오퍼레이션들의 존재에 의하여 발생되는 다양한 가능성을 모두 시뮬레이션 해보고, 그 중 가장 짧은 연산 시간을 가지는 오퍼레이션 타입 세팅을 찾아낼 수 있는 효과를 얻는다. 본 실시예에 따르면, 예를 들어 컴파일 시점에, 시간이 좀 걸리더라도 매트릭스 표현 별 최적의 오퍼레이션 타입 세팅을 찾고, 그 결과를 적용함으로써, 추후 런타임에서는 빠른 연산 속도를 얻을 수 있는 효과를 얻을 수 있을 것이다.
지금까지 도 21 내지 도 24를 참조하여 본 실시예에 따른 매트릭스 연산 방법의 기본적인 동작들을 설명하였다. 이하, 도 25 내지 도 35를 참조하여 본 실시예에 따른 매트릭스 연산 방법이 구현되는 몇몇 예시들과, 그러한 예시들에 따른 본 실시예의 파생 예시들을 설명하기로 한다.
도 25는 몇몇 실시예들에서, 매트릭스 표현을 포함한 프로그램 코드에 컴파일 타임 또는 런타임에 일부 루틴이 삽입되는 것을 설명하기 위한 도면이다. 도 25에 도시된 바와 같이 매트릭스 표현(17b-1)을 포함한 프로그램 코드(17b)가 컴파일 되거나(compile-time), 실행 될 때(run-time), 본 실시예의 적용이 있는 경우, 매트릭스 표현(17b-1)이 포함된 구문의 전, 후로 액세스 시작 루틴(40) 및 액세스 종료 루틴(41)이 자동으로 부가 될 수 있다. 액세스 시작 루틴(40) 및 액세스 종료 루틴(41)은, 예를 들어 매트릭스 연산 프레임워크 모듈(15)에 의하여 자동으로 부가될 수 있을 것이다.
프로그램 코드 상에 매트릭스 표현(17b-1)이 포함되어 있다 하여, 그 매트릭스 표현(17b-1)이 바로 연산되어야 하는 것은 아니다. 예를 들어, 매트릭스 표현(17b-1)이 다른 결과 매트릭스에 할당되거나, 매트릭스 표현(17b-1)의 원소 값이 액세스 되거나, 매트릭스 표현으로 정의된 변수(variable)의 값이 액세스 되거나, 매트릭스 표현이 평가되는 평가 함수가 호출되는 경우에 연산이 필요하다. 예를 들어, 도 25에 도시된 프로그램 코드에는 매트릭스 표현(17b-1)이 다른 결과 매트릭스에 할당되기 위한 연산자(=)가 존재하므로, 이러한 연산자의 식별에 따라 액세스 시작 루틴(40) 및 액세스 종료 루틴(41)이 자동으로 부가될 수 있다.
액세스 시작 루틴(40)은 파라미터로 인입된 매트릭스의 원소 값을 액세스 가능한 상태로 만들어 주는 루틴이다. 상기 파라미터는 기초 매트릭스이거나, 메타 매트릭스이거나, 오퍼레이션 및 그 피연산자 매트릭스들로 구성되는 매트릭스 표현일 수 있다. 상기 피연산자 매트릭스들은 기초 매트릭스 또는 메타 매트릭스일 수 있다.
도 26은 액세스 시작 루틴(40)의 동작을 설명하기 위한 도면이다. 먼저, 입력 파라미터(M)가 기초 매트릭스인 경우는 이미 액세스 가능하므로 더 이상의 동작을 수행하지 않고 루틴을 종료한다. 입력 파라미터(M)가 기초 매트릭스도 아니고 메타 매트릭스도 아닌 경우, 입력 파라미터가 처리할 수 없는 데이터인 것이므로 에러 처리한 후 루틴을 종료한다.
입력 파라미터(M)가 기초 매트릭스가 아닌 이상 입력 파라미터(M)의 매트릭스 오퍼레이터가 존재할 것인데, 상기 매트릭스 오퍼레이터가 element accessible한 경우, 즉 상기 매트릭스 오퍼레이터가 EOP인 경우는, 상기 매트릭스 오퍼레이터의 모든 피연산자 매트릭스에 대하여 액세스 시작 루틴(40)을 실행해 줌으로써, 모든 피연산자 매트릭스를 액세스 가능한 상태로 만들어 준다. 즉, 액세스 시작 루틴(40)은 재귀적(recursive) 루틴인 것으로 이해할 수 있을 것이다.
상기 매트릭스 오퍼레이터가 element accessible하지 않은 경우, 즉 상기 매트릭스 오퍼레이터가 NOP인 경우는, 이미 설명한 바와 같이 NOP를 연산하고 그 연산 결과를 임시 저장 공간에 저장한다. 이를 위해 입력 파라미터(M)에 대하여 HOLD 루틴(50)을 실행하여 준다. 도 27을 참조하여 HOLD 루틴(50)을 보다 상세히 설명한다.
HOLD(M) 루틴 시작 시에 M에 대한 HOLD 카운터 holdM의 값이 체크된다. 상기 holdM의 값은 예를 들어 매트릭스 연산 프레임워크 모듈(15)에 의하여 관리되는 값일 수 있고, 그 초기 값은 '0'이다. holdM의 값은 M에 대하여 HOLD 루틴이 호출될 때마다 '1'씩 증가한다. 즉, holdM의 값은 NOP의 결과 매트릭스인 M의 액세스가 요청된 횟수를 가리키는 것으로 이해될 수 있을 것이다. 따라서, HOLD(M) 루틴 시작 시에 M에 대한 HOLD 카운터 holdM의 값이 '0'이 아닌 경우, HOLD(M) 루틴은 holdM의 값만 '1' 증가시켜 주고 종료한다.
holdM의 값이 '0'이면, M의 연산을 수행하고 그 결과가 임시 저장 공간에 저장된다. 이를 위해, M의 모든 피연산자 매트릭스가 액세스 가능해야 하므로, M의 모든 피연산자 매트릭스에 대하여 액세스 시작 루틴(40)이 연산 시작 전에 호출된다. 그 후에 M의 연산 결과를 저장하기 위한 임시 저장 공간을 할당 받고, 외부 라이브러리의 루틴이 호출되거나, 매트릭스 연산 프레임워크 모듈(15)에 자체 구현된 매트릭스 연산 루틴이 호출되어 M의 결과 매트릭스의 각 원소 값이 연산된다. 상기 연산이 마무리되면, M의 각 피연산자에 대하여 액세스 종료 루틴(41)이 호출되고, holdM의 값이 '1' 증가된 후 루틴이 종료된다.
지금까지 액세스 시작 루틴(40) 및 액세스 시작 루틴을 통하여 액세스가 시작되는 매트릭스의 오퍼레이터가 NOP인 경우 호출되는 HOLD 루틴(50)의 기능을 설명하였다. 매트릭스 M에 대하여 액세스 시작 루틴(40)이 호출됨으로써 매트릭스 M에 대한 일괄 연산이 준비될 것이다. 또한, 액세스 시작 루틴(40)의 동작과 관련하여 설명되지는 않았으나, 도 10 내지 도 11 등을 통하여 설명된 매트릭스 표현을 변환 매트릭스 표현으로 변환하는 전처리 동작이 매트릭스 표현의 연산 전에 수행될 수 있음은 물론이다.
매트릭스 표현에 대하여 액세스 시작 루틴(40)을 호출함으로써, 매트릭스 표현의 연산이 가능한 상태가 된 것이고, 매트릭스 표현의 연산은 매트릭스 표현의 결과 매트릭스가 다른 매트릭스에 할당되거나, 매트릭스 표현의 원소 값이 액세스 되거나, 매트릭스 표현으로 정의된 변수(variable)의 값이 액세스 되거나, 매트릭스 표현이 평가되는 평가 함수가 호출되는 경우에 수행된다.
예를 들어, 매트릭스 표현의 결과 매트릭스가 다른 매트릭스에 할당되는 연산자(=), 매트릭스 표현의 원소 값이 액세스 되는 메소드, 매트릭스 표현이 평가되는 평가 함수가 매트릭스 연산 프레임워크 모듈에 의하여 오버로딩 된 결과로, 기존의 프로그램 코드에 대한 변경 없이도 본 실시예에 따른 매트릭스 연산이 호출될 수 있을 것이다. 도 25의 예시의 경우, 연산자(=)에 오버로딩 된 원소 값 평가 루틴(60)이 수행될 수 있을 것이다. 오버로딩 된 원소 값 평가 루틴(60)은 연산자(=)의 우측에 매트릭스 표현이 존재하는 경우에 한하여 호출될 수 있다.
도 28을 참조하여 설명한다. 매트릭스 M에 대한 원소 값 평가 루틴(60)은, M이 기초 매트릭스인 경우 바로 M[i][j]를 액세스 하여 출력하고 루틴 종료한다. 또한, 원소 값 평가 루틴(60)은, M이 메타 매트릭스가 아닌 경우, 에러 처리 후 루틴 종료한다. 또한, 원소 값 평가 루틴(60)은, M의 오퍼레이션이 NOP인 경우, HOLD 루틴을 통해 그 연산 결과가 저장된 임시 저장 공간 TM에서 M[i][j]를 액세스 하여 출력하고 루틴 종료한다. 또한, 원소 값 평가 루틴(60)은, M의 오퍼레이션이 EOP인 경우, M의 오퍼레이션을 연산한다. 이를 위해, M의 오퍼레이션의 각각의 피연산자 매트릭스에 대하여 원소 값 평가 루틴(60)이 호출된다. 즉, 원소 값 평가 루틴(60)은 재귀적(recursive) 루틴인 것으로 이해할 수 있을 것이다.
다음으로, 액세스 종료 루틴(41)에 대하여 도 29를 참조하여 설명한다. 매트릭스 M에 대한 액세스 종료 루틴(41)은, M이 기초 매트릭스이면 바로 종료하고, M이 메타 매트릭스가 아니면 에러 처리 후 종료하며, M의 오퍼레이션이 EOP라면 M의 모든 피연산자 매트릭스에 대하여 액세스 종료 루틴(41)을 재귀적으로 호출해주고, M의 오퍼레이션이 NOP라면 M에 대하여 RELEASE 루틴(70)을 호출해준다. RELEASE 루틴(70)에 대하여 도 30을 참조하여 설명한다.
도 30에 도시된 바와 같이, 매트릭스 M에 대한 RELEASE 루틴(70)은 NOP의 연산 결과에 대한 액세스가 마무리되었으므로, HOLD 카운터를 1회 감소시켜주고, 그에 따라 HOLD 카운터가 0이 되면 액세스 횟수 HOLD 루틴(27)에 의하여 할당된 임시 저장 공간을 해제하여, 해당 메모리를 가용 공간으로 만들어 주는 루틴이다.
도 31 내지 도 32를 참조하여, 예시적인 매트릭스 표현에 대하여 도 26 내지 도 30의 예시적인 루틴들이 어떤 순서로 호출되는지 설명하기로 한다.
매트릭스 표현(17b-1)이 매트릭스 표현 변환 단계(S110)를 거쳐 변환 매트릭스 표현(17b-2)로 변환된다. 변환 매트릭스 표현(17b-2)은 총 6개의 메타 매트릭스(E1 내지 E6)로 구성되는데, 그 중 E4가 NOP이고 나머지는 EOP인 것으로 도시되어 있다. 다음으로, 매트릭스 평가 단계(S120)에서 변환 매트릭스 표현(17b-2)에 따른 산출식(17b-3)이 생성된다. 다음으로, 매트릭스 연산 단계에서, 최종 오퍼레이션인 E6의 원소 별(element-wise) 연산에 의하여 매트릭스 표현(17b-1)의 각 원소 값이 연산된다.
도 32는 프로그램 코드의 매트릭스 표현(17b-1)이 포함된 구문의 전, 후로 자동 부가되는 액세스 시작 루틴(40)의 호출 흐름(17b-5) 및 액세스 종료 루틴(41)의 호출 흐름(17b-6)을 도시한 도면이다. 각 메타 매트릭스의 오퍼레이션이 EOP인 경우, 그 피연산자 매트릭스에 대하여 액세스 시작 루틴(40) 및 액세스 종료 루틴(41)이 재귀적으로 호출되고, 각 메타 매트릭스의 오퍼레이션이 NOP인 경우, 액세스 시작 루틴(40)의 경우 HOLD 루틴(50)이 호출되고, 액세스 종료 루틴(41)의 경우 RELEASE 루틴(70)이 호출되는 것을 확인할 수 있다.
그런데, 변환 매트릭스 표현(17b-2)에 따르면 메타 매트릭스 E3는 E4와 E6의 피연산자 매트릭스임에도 불구하고, 그 오퍼레이션의 타입이 EOP로 지정되어 있다. 이는, 매트릭스 연산 단계(S130)에서 E3의 결과값 연산이 중복 수행되는 것을 의미한다. 따라서, 이러한 중복 연산이 수행되지 않도록 다른 메타 매트릭스의 피연산자로 중복하여 사용되는 메타 매트릭스의 연산자인 'exp'는 EOP에서 NOP(17b-6)로 조정될 수 있다. 도 33 및 도 34는 'exp'가 EOP에서 NOP(17b-6)로 조정된 경우의 매트릭스 연산 과정 및 그 경우의 액세스 시작 루틴(40)의 호출 흐름(17b-10) 및 액세스 종료 루틴(41)의 호출 흐름(17b-11)을 도시한 도면이다.
본 발명의 몇몇 실시예들에서, 복수의 매트릭스 표현에 대하여 일괄하여 매트릭스 표현 연산이 수행될 수도 있다. 예를 들어, 도 35에 도시된 바와 같이, 제1 매트릭스 표현(17b-8) 및 제2 매트릭스 표현(17b-1)의 사이에 제1 매트릭스 표현(17b-8) 또는 제2 매트릭스 표현(17b-1)에 포함되는 기초 매트릭스의 원소 값을 변경하는 구문이 존재하지 않는 경우(즉, STATEMENT#2가 기초 매트릭스의 원소 값을 변경하는 구문이 아닌 경우)이거나, 제1 매트릭스 표현(17b-8) 및 제2 매트릭스 표현(17b-1)이 바로 인접한 경우, 제1 매트릭스 표현(17b-8)의 앞에 액세스 시작 루틴(40)을 호출하는 구문을 자동 부가하고, 제2 매트릭스 표현(17b-1)의 뒤에 액세스 종료 루틴(40)을 호출하는 구문을 자동 부가함으로써, 복수의 매트릭스 표현에 대하여 일괄하여 매트릭스 표현 연산이 수행될 수 있다.
이 경우, 서로 다른 매트릭스 표현에 동일한 NOP 연산이 존재하는 경우, 그 결과를 임시 저장 공간에 저장하고, 이를 서로 다른 매트릭스 표현 간에 공유하여 액세스 함으로써 연산의 효율성이 높아지는 효과를 얻는다. 예를 들어, 도 35에 도시된 예시 코드에서 매트릭스 표현 A+AT(17b-8)이 3회 기재된 점으로 인해, A와 AT의 매트릭스 합산(+) 연산이 EOP가 아닌 NOP로 연산 될 수 있는 것이다.
지금까지 설명의 편의를 위하여 2차원 매트릭스에 대한 연산을 대상으로 설명하였으나, 본 개시의 실시예들은 매트릭스의 차원에 무관하게 적용될 수 있음을 유의한다.
본 발명의 몇몇 실시예들에서, 매트릭스 표현의 결과 매트릭스가 기초 매트릭스에 할당되는 구문(statement)이 프로그램 코드에 포함되고, 상기 매트릭스 표현의 모든 오퍼레이션이 NOP로 결정되는 경우, 상기 구문의 처리를 위해 NOP의 연산 결과를 저장할 임시 저장 공간이 할당되지 않고, 상기 기초 매트릭스의 메모리 상 할당 영역이 상기 임시 저장 공간으로 사용될 수도 있다. 예를 들어, 'R = A*B" 라는 구문이 프로그램 코드에 포함되고, 매트릭스 곱(*) 연산이 NOP인 경우(R, A, B 모두 기초 매트릭스), A*B의 결과를 저장할 임시 저장 공간 T가 할당되고, 임시 저장 공간 T에 A*B의 결과가 저장된 후, T가 R에 할당(assign)되는 원소별 할당 오퍼레이션(EOP)이 수행되는 것 대신, A*B의 결과를 저장할 임시 저장 공간의 주소를 R의 메모리 주소로 지정함으로써 임시 저장 공간의 할당에 따른 메모리 공간 사용을 절약하고, 임시 저장 공간에서 R의 메모리 저장 공간으로의 원소별 할당 오퍼레이션(EOP)의 수행이 소요되는 시간이 절약될 수 있을 것이다. 본 실시예는, NOP의 오퍼레이션 수행을 외부 라이브러리를 호출함으로써 수행될 수 있을 것이다. 예를 들어 A*B의 매트릭스 곱(*) 연산을 BLAS 라이브러리의 GEMM 루틴을 호출하여 수행하는 경우, GEMM(R, A, B)를 호출하는 것으로 'R=A*B' 구문이 처리될 수 있는 것이다.
본 발명의 몇몇 실시예들에 따른 매트릭스 연산의 퍼포먼스에 대한 테스트 결과를 설명한다. 아래의 표 1은 테스트에 있어서 비교 대상에 대한 기재를 포함한다. 프레임워크 중 'MMP'가 본 개시의 실시예가 적용된 프레임워크를 가리킨다.
Figure 112021069349558-pat00001
아래의 표 2는 테스트 환경에 대한 기재를 포함한다.
Figure 112021069349558-pat00002
아래의 표 3은 테스트 대상 오퍼레이션을 가리킨다. EOP 연산에 대한 성능을 위주로 테스트가 진행되었다.
Figure 112021069349558-pat00003
아래의 표 4는 상대적인 연산 소요 시간에 대한 비교 지표를 표시한다. 본 개시에 따른 프레임워크(MMP)가 가장 낮은 연산 소요 시간을 보이는 점을 확인할 수 있다.
Figure 112021069349558-pat00004
아래의 표 5는 메모리 사용량에 대한 비교 지표를 표시한다. 본 개시에 따른 프레임워크(MMP)가 가장 낮은 메모리 사용량을 보이는 점을 확인할 수 있다.
Figure 112021069349558-pat00005
지금까지 도 2 내지 도 35를 참조하여 설명된 본 개시의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.

Claims (5)

  1. 컴퓨팅 장치에 의하여 수행되는 방법에 있어서,
    프로그램 코드에 포함된 원본 매트릭스 표현(expression)을, 제1 타입 오퍼레이션 또는 제2 타입 오퍼레이션 중 어느 하나인 오퍼레이션과 그 피연산자 매트릭스의 조합인 메타 매트릭스들을 포함하는 변환 매트릭스 표현으로 변환하는 단계;
    상기 변환 매트릭스 표현을 평가(evaluation)하여 최종 결과 매트릭스의 각 원소 값의 산출식을 생성하고, 상기 산출식의 피연산자 매트릭스로 참조되는 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 연산하는 단계; 및
    상기 산출식에 따른 상기 제1 타입 오퍼레이션의 연산 결과를, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 원소 값을 이용하여 연산함으로써, 상기 최종 결과 매트릭스의 원소 값을 연산하는 단계를 포함하고,
    상기 제1 타입 오퍼레이션은, 상기 제1 타입 오퍼레이션의 연산 결과 중 특정 위치의 원소 값을 구하기 위해, 피연산자 매트릭스의 상기 특정 위치의 원소들 만을 이용한 국소적 연산 실행이 가능한 매트릭스 오퍼레이션인 EOP(Element accessible OPeration)이고, 상기 제2 타입 오퍼레이션은 원소 단위의 국소적 연산이 불가능하고 피연산자 매트릭스의 모든 원소 값의 액세스가 가능한 상태에서만 연산이 가능한 매트릭스 오퍼레이션인 NOP(Non-element accessible OPeration)이고,
    상기 변환 매트릭스 표현으로 변환하는 단계는,
    상기 원본 매트리스 표현에 포함된 오퍼레이션을 상기 EOP 또는 상기 NOP로 결정하여 상기 변환 매트릭스 표현으로 변환하는 단계를 포함하고,
    상기 변환 매트릭스 표현을 평가(evaluation)하여 최종 결과 매트릭스의 각 원소 값의 산출식을 생성하고, 상기 산출식의 피연산자 매트릭스로 참조되는 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 연산하는 단계는,
    제1 시점에 상기 변환 매트릭스 표현을 평가(evaluation)하여 최종 결과 매트릭스의 각 원소 값의 산출식을 생성하는 단계; 및
    상기 제1 시점 이후의 제2 시점에 상기 산출식의 피연산자 매트릭스로 참조되는 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 연산하는 단계를 포함하고,
    상기 산출식에 따른 상기 제1 타입 오퍼레이션의 연산 결과를, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 원소 값을 이용하여 연산함으로써, 상기 최종 결과 매트릭스의 원소 값을 연산하는 단계는,
    제3 시점에, 상기 산출식에 따른 상기 제1 타입 오퍼레이션의 요소별(element-wise) 일괄 연산 결과를, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 원소 값을 이용하여 연산하는 단계를 포함하는,
    매트릭스 연산 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 제2 시점 및 상기 제3 시점은, 상기 프로그램 코드가 실행됨으로써 상기 원본 매트릭스 표현이 액세스된 시점 이후의 시점이고, 상기 제1 시점은, 상기 원본 매트릭스 표현이 액세스되기 전의 시점인,
    매트릭스 연산 방법.
  4. 제3 항에 있어서,
    상기 제2 시점에 상기 산출식의 피연산자 매트릭스로 참조되는 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스를 연산하는 단계는,
    상기 제2 타입 오퍼레이션의 연산 결과 매트릭스에 대한 데이터를 임시 저장 공간에 저장하는 단계를 포함하고,
    상기 제3 시점에, 상기 산출식에 따른 상기 제1 타입 오퍼레이션의 요소별(element-wise) 일괄 연산 결과를, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 원소 값을 이용하여 연산하는 단계는,
    상기 제2 시점 이후의 제3 시점에, 상기 제2 타입 오퍼레이션의 연산 결과 매트릭스의 원소 값을 상기 임시 저장 공간에 액세스 하여 획득하는 단계를 포함하는,
    매트릭스 연산 방법.
  5. 제4 항에 있어서,
    상기 변환 매트릭스 표현으로 변환하는 단계 이전에, 상기 프로그램 코드의 프로그램에 매트릭스 연산 프레임워크 모듈이 포함되는 단계를 더 포함하고,
    상기 임시 저장 공간은,
    상기 매트릭스 연산 프레임워크 모듈에 의하여 동적으로 할당되는, 상기 프로그램이 사용할 수 있는 HEAP 영역 내의 메모리 공간인,
    매트릭스 연산 방법.
KR1020210078023A 2020-03-13 2021-06-16 매트릭스 연산 방법 및 그 장치 KR102512704B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210078023A KR102512704B1 (ko) 2020-03-13 2021-06-16 매트릭스 연산 방법 및 그 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200031387A KR102267920B1 (ko) 2020-03-13 2020-03-13 매트릭스 연산 방법 및 그 장치
KR1020210078023A KR102512704B1 (ko) 2020-03-13 2021-06-16 매트릭스 연산 방법 및 그 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200031387A Division KR102267920B1 (ko) 2020-03-13 2020-03-13 매트릭스 연산 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20210116356A KR20210116356A (ko) 2021-09-27
KR102512704B1 true KR102512704B1 (ko) 2023-03-21

Family

ID=76600223

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200031387A KR102267920B1 (ko) 2020-03-13 2020-03-13 매트릭스 연산 방법 및 그 장치
KR1020210078023A KR102512704B1 (ko) 2020-03-13 2021-06-16 매트릭스 연산 방법 및 그 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200031387A KR102267920B1 (ko) 2020-03-13 2020-03-13 매트릭스 연산 방법 및 그 장치

Country Status (3)

Country Link
US (1) US20230077455A1 (ko)
KR (2) KR102267920B1 (ko)
WO (1) WO2021182781A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002101656A1 (en) * 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US20040015830A1 (en) * 2001-05-31 2004-01-22 Reps Thomas W. Computational divided differencing
US20100275189A1 (en) * 2009-02-27 2010-10-28 Cooke Daniel E Method, Apparatus and Computer Program Product for Automatically Generating a Computer Program Using Consume, Simplify & Produce Semantics with Normalize, Transpose & Distribute Operations
JP2013205973A (ja) * 2012-03-27 2013-10-07 Fujitsu Ltd 行列演算装置
KR101990735B1 (ko) * 2018-03-30 2019-06-18 서울대학교산학협력단 사전 그래프 분할 기반 행렬 벡터 곱을 이용한 대규모 그래프 마이닝 방법 및 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3930232A (en) * 1973-11-23 1975-12-30 Raytheon Co Format insensitive digital computer
JP3695798B2 (ja) * 1995-08-25 2005-09-14 富士通株式会社 コンピュータシステムおよびコード生成最適化制御方法
KR101421054B1 (ko) * 2007-08-06 2014-07-18 삼성전자주식회사 버퍼를 이용한 연산 분산 방법 및 이를 이용한 연산 분산시스템
US8788556B2 (en) 2011-05-12 2014-07-22 Microsoft Corporation Matrix computation framework
JP2014112327A (ja) * 2012-12-05 2014-06-19 Fujitsu Ltd 変換プログラム、変換装置及び変換方法
KR102046571B1 (ko) * 2016-04-25 2019-11-19 삼성에스디에스 주식회사 데이터 처리 룰 생성 방법
US20180113840A1 (en) * 2016-10-25 2018-04-26 Wisconsin Alumni Research Foundation Matrix Processor with Localized Memory
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
KR102228586B1 (ko) * 2018-01-19 2021-03-16 한국전자통신연구원 Gpu 기반의 적응적 blas 연산 가속화 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015830A1 (en) * 2001-05-31 2004-01-22 Reps Thomas W. Computational divided differencing
WO2002101656A1 (en) * 2001-06-08 2002-12-19 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US20100275189A1 (en) * 2009-02-27 2010-10-28 Cooke Daniel E Method, Apparatus and Computer Program Product for Automatically Generating a Computer Program Using Consume, Simplify & Produce Semantics with Normalize, Transpose & Distribute Operations
JP2013205973A (ja) * 2012-03-27 2013-10-07 Fujitsu Ltd 行列演算装置
KR101990735B1 (ko) * 2018-03-30 2019-06-18 서울대학교산학협력단 사전 그래프 분할 기반 행렬 벡터 곱을 이용한 대규모 그래프 마이닝 방법 및 장치

Also Published As

Publication number Publication date
KR20210116356A (ko) 2021-09-27
US20230077455A1 (en) 2023-03-16
WO2021182781A1 (ko) 2021-09-16
KR102267920B1 (ko) 2021-06-21

Similar Documents

Publication Publication Date Title
EP3126971B1 (en) Program execution on heterogeneous platform
JP6939132B2 (ja) アプリケーション・プロファイリング・ジョブ管理システム、プログラム、及び方法
JP5934094B2 (ja) データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング
CN111831287B (zh) 用于确定执行代码段所需的资源的方法、设备和程序产品
US20180157471A1 (en) Systems and methods for generating code for parallel processing units
JP5209059B2 (ja) ソース・コード処理方法、システム、及びプログラム
US9477465B2 (en) Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus
US20130283250A1 (en) Thread Specific Compiler Generated Customization of Runtime Support for Application Programming Interfaces
US9684493B2 (en) R-language integration with a declarative machine learning language
US11385931B2 (en) Method, electronic device, and computer program product for processing computing job
KR20140014090A (ko) 기민 통신 오퍼레이터
JP2019049843A (ja) 実行ノード選定プログラム、実行ノード選定方法及び情報処理装置
WO2016105840A1 (en) Technologies for low-level composable high performance computing libraries
Han et al. Parallel data intensive applications using MapReduce: a data mining case study in biomedical sciences
US10496433B2 (en) Modification of context saving functions
JP6004818B2 (ja) 並列化方法、システム、及びプログラム
KR102512704B1 (ko) 매트릭스 연산 방법 및 그 장치
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
JP2023180315A (ja) 変換プログラムおよび変換処理方法
CN110879744B (zh) 利用多线程执行计算图的方法和系统
WO2021098105A1 (en) Method and apparatus for functional unit assignment
JP6322968B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN113704687B (zh) 一种张量计算运行方法、装置及运算系统
Li et al. swTVM: Towards Optimized Tensor Code Generation for Deep Learning on Sunway Many-Core Processor
Drobintsev et al. An Effective Implementation Approach for Adapting of HPC Applications

Legal Events

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