KR20210071073A - 부분 행렬 순서화를 이용하는 행렬 곱셈기 - Google Patents

부분 행렬 순서화를 이용하는 행렬 곱셈기 Download PDF

Info

Publication number
KR20210071073A
KR20210071073A KR1020217015589A KR20217015589A KR20210071073A KR 20210071073 A KR20210071073 A KR 20210071073A KR 1020217015589 A KR1020217015589 A KR 1020217015589A KR 20217015589 A KR20217015589 A KR 20217015589A KR 20210071073 A KR20210071073 A KR 20210071073A
Authority
KR
South Korea
Prior art keywords
matrix
sub
multiplication
input register
multiplication cycle
Prior art date
Application number
KR1020217015589A
Other languages
English (en)
Other versions
KR102586989B1 (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 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20210071073A publication Critical patent/KR20210071073A/ko
Application granted granted Critical
Publication of KR102586989B1 publication Critical patent/KR102586989B1/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

처리기의 그래픽 처리 장치(GPU)[100]는 행렬 곱셈기의 입력 레지스터[106, 107]에서의 입력 변화의 수를 감소시키기 위해 행렬 곱셈기[110]에서의 부분 행렬들의 적용을 순서화한다. 행렬 곱셈기는 비교적 작은 행렬에 대해 행렬 곱셈을 수행하도록 구성된다. 두 개의 더 큰 행렬들[220, 222]을 곱셈하기 위해, GPU는 더 큰 행렬들을 더 작은 부분 행렬들[221]로 분해하고 부분 행렬들을 행렬 곱셈기의 입력 레지스터들에 순서대로 저장함으로써, 결과 행렬의 각 열을 계산한다. GPU는 행렬 곱셈기의 다수의 계산 사이클들에 걸쳐 입력 레지스터들 중 하나에 입력 데이터를 유지시키기 위해 입력 레지스터들에의 부분 행렬들의 저장을 순서화함으로써 GPU에서의 전력 소비를 감소시킨다.

Description

부분 행렬 순서화를 이용하는 행렬 곱셈기
최신 처리기 애플리케이션들은 보통 벡터들, 행렬들, 및 유사한 구조들의 비교적 복잡한 조작을 필요로 한다. 예를 들어, 벡터 및 행렬 조작은 그래픽 작업들, 디지털 신호 처리 애플리케이션들, 신경망 애플리케이션들 등에 유용하다. 이들 애플리케이션들 및 작업들에 대한 처리 효율을 향상시키기 위해, 처리기는 그래픽 처리 장치(graphics processing unit; GPU)를 포함할 수 있다. GPU는 비교적 큰 데이터 블록들에 대해 병렬 처리를 수행하는 데 특화된 하드웨어를 포함한다. 이에 따라, GPU는 그래픽 애플리케이션들뿐만 아니라, 벡터 및 행렬 조작을 필요로 하는 다른 작업들도 지원할 수 있다. 처리 효율을 더 향상시키기 위해, GPU는 행렬 곱셈을 포함하여, 지정된 유형들의 행렬 연산들을 수행하기 위한 전용 하드웨어를 포함할 수 있다. 그러나, 이러한 전용 하드웨어에 대한 종래의 접근법들은 많은 양의 전력을 소비할 수 있고 이에 의해 처리기 성능에 부정적으로 영향을 미칠 수 있다.
본 개시는 첨부 도면들을 참조하여 해당 기술분야의 통상의 기술자들에게 이해가 더 잘 되고, 이의 많은 특징들 및 이점들이 명백해질 수 있다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시 예들에 따른 처리기의 GPU의 블록도이다 - GPU는 행렬 곱셈기에 부분 행렬들의 적용을 순서화함으로써 행렬 곱셈을 수행하도록 구성된다.
도 2는 일부 실시 예들에 따른 도 1의 GPU에서의 곱셈을 위한 예시적인 행렬들을 도시하는 도면이다.
도 3은 일부 실시 예들에 따른 도 1의 행렬 곱셈기에 부분 행렬들의 적용을 순서화하는 예를 도시하는 도면이다.
도 4는 일부 실시 예들에 따른 부분 행렬 순서화를 지원하는 도 1의 GPU의 추가 양태들의 블록도이다.
도 5는 일부 실시 예들에 따른 GPU의 행렬 곱셈기에서의 부분 행렬들의 적용을 순서화하는 방법의 흐름도이다.
도 1 내지 도 5는 행렬 곱셈기의 입력 레지스터에서의 입력 변화의 수를 감소시키기 위해 행렬 곱셈기에서의 부분 행렬들의 적용을 순서화함으로써 처리기의 그래픽 처리 장치(GPU)에서의 전력 소비를 감소시키기 위한 기술들을 도시한다. 행렬 곱셈기는 비교적 작은 행렬(예를 들어, 4X4 행렬)에 대해 행렬 곱셈을 수행하도록 구성된다. 두 개의 더 큰 행렬들(예를 들어, 16X16 행렬들)을 곱셈하기 위해, GPU는 더 큰 행렬들을 더 작은 부분 행렬들로 분해하고 부분 행렬들을 행렬 곱셈기의 입력 레지스터들에 순서대로 저장함으로써, 결과 행렬의 각 열을 계산한다. GPU는 행렬 곱셈기의 다수의 계산 사이클들에 걸쳐 입력 레지스터들 중 하나에 입력 데이터를 유지시키기 위해 입력 레지스터들에의 부분 행렬들의 저장을 순서화함으로써 GPU에서의 전력 소비를 감소시킨다.
도 1은 일부 실시 예들에 따라 부분 행렬들의 적용을 순서화함으로써 행렬 곱셈을 수행하도록 구성된 처리기의 GPU(100)를 도시한다. 적어도 일 실시 예에서, GPU(100)는 전자 디바이스를 대신하여 연산들을 수행하기 위한 명령어들의 집합들을 실행하도록 일반적으로 구성되는 처리기의 일부이다. 이에 따라, 상이한 실시 예들에서, GPU(100)는 데스크탑 또는 랩탑 컴퓨터와 같은 전자 디바이스, 서버, 스마트폰 또는 태블릿과 같은 핸드헬드 전자 디바이스, 및 게임 콘솔 등의 일부이다. GPU(100)는 일반적으로 처리기를 대신하여 그래픽 및 벡터 처리 연산들을 실행하도록 구성된다. 예를 들어, 일부 실시 예들에서, 처리기의 중앙 처리 장치(CPU, 도 1에 도시되지 않음)는 GPU에 실행할 연산들의 집합들을 제공한다 - 연산들의 집합들은 그래픽 또는 벡터 처리와 연관된다.
제공된 연산들의 실행을 용이하게 하기 위해, GPU(100)는 복수의 단일 명령어 다중 데이터(Single-Instruction Multiple-Data; SIMD) 처리 장치들(예를 들어, SIMD 장치들(102 및 104))을 포함한다. GPU(100)는 또한 SIMD 장치들을 지원하기 위한 추가 모듈들, 이를테면 SIMD 장치들에 대한 명령어들을 페치 및 디코딩하기 위한 페치 및 디코딩 로직, 및 SIMD 장치들에 대한 피연산자들을 저장하기 위한 레지스터 파일 등을 포함한다는 것이 이해될 것이다. 입력 행렬들의 집합(105)의 행렬 곱셈 연산들을 지원하기 위해, 각 SIMD 장치는 대응하는 입력 레지스터들 및 대응하는 출력 레지스터와 함께 행렬 곱셈기를 포함한다. 예를 들어, SIMD 장치(102)는 행렬 곱셈기(110), 입력 레지스터들(106 및 107), 및 출력 레지스터(108)를 포함한다. "레지스터"라는 용어는 행렬들(부분 행렬들 포함)을 저장하도록 구성되는 임의의 저장 모듈을 지칭한다는 것이 이해될 것이다.
행렬 곱셈기(110)는 레지스터들(106 및 107)에 저장된 행렬들을 곱셈하고 결과 곱을 레지스터(108)에 저장하도록 구성된다. 입력 레지스터들(106 및 102)에서의 행렬들에 대한 단일 곱의 생성은 본 명세서에서 행렬 곱셈기(110)에 대한 "곱셈 사이클"로서 지칭된다. 일부 실시 예들에서, SIMD 장치(102)는 클록 신호("CLK"로 지정됨)에 의해 클록킹되고, 행렬 곱셈기(110)의 곱셈 사이클은 CLK 클록 신호의 단일 클록 사이클에 대응한다. 즉, CLK 클록 신호의 단일 클록 사이클 동안, 행렬 곱셈기(110)는 입력 레지스터들(106 및 107)에 저장된 입력 피연산자들에 기초하여 레지스터(108)에서 곱을 생성하도록 구성된다. 다른 실시 예들에서, 행렬 곱셈기(110)의 각 곱셈 사이클은 CLK 클록 신호의 다수의 사이클들을 필요로 한다.
일부 실시 예들에서, 회로 영역을 보존하기 위해, 행렬 곱셈기(110)는 비교적 작은 입력 행렬들에 대한 곱을 생성하도록 구성된다. 예를 들어, 일부 실시 예들에서, 행렬 곱셈기(110)는 4X4X4 곱셈기이며, 이에 따라 행렬 곱셈기(110)는 입력 레지스터(106)에 저장된 4X4 행렬과 입력 레지스터(107)에 저장된 4x4 행렬을 곱셈해 출력 레지스터(108)에서 4X4 곱 (결과) 행렬을 생성하도록 구성된다. 그러나, 일부 시나리오들에서, CPU는 16X16 행렬들의 곱셈과 같은 더 큰 행렬들의 곱셈을 필요로 하는 연산들을 GPU(100)에 제공한다. 더 큰 행렬들의 곱셈을 지원하기 위해, SIMD는 더 큰 행렬들을 다수의 더 작은 부분 행렬들로 분해하고, 행렬 곱셈기(110)에서 부분 행렬들을 곱셈해 중간 결과들의 집합을 생성하며, 중간 결과들을 조합하여 더 큰 행렬들에 대한 곱을 생성하도록 구성된다.
예시하자면, 일부 실시 예들에서, 행렬 곱셈기(110)는 행렬 A, MXK 행렬, 및 행렬 B, KXN 행렬로 지정된 입력 행렬들을 곱셈해 결과 행렬 R(MXN 행렬)을 계산한다. 행렬들 A 및 B는 각각 입력 레지스터들(106 및 107)에 저장되고, 결과 행렬 R은 출력 레지스터(108)에 저장된다. 일부 실시 예들에서, 행렬 곱셈기(110)는 다음의 식에 의해 제시되는 바와 같이, i 번째 행과 j 번째 열의 내(점)곱(inner(dot) product)을 계산함으로써 결과 행렬 R을 계산한다:
Ri,j = Sum Ai,k * Bk,j, k=0..K-1이고, 여기서 i는 [0..M-1] 그리고 j는 [0..N-1]
다른 실시 예들에서, 행렬 곱셈기(110)는 다음의 식에 의해 제시되는 바와 같이, A 행렬의 열 k 및 B 행렬의 행 k의 K개의 외곱(outer product)들을 합산함으로써 결과 행렬 R을 계산한다:
R = Sum Rk, Rk i,j=Ai,k * Bk,j
더 큰 행렬들에 대해, SIMD(102)는 입력 행렬들을 행렬 곱셈기(110)에 의해 지정된 입력 크기인 더 작은 부분 행렬들로 분해하고, 행렬 곱셈기(110)에서 부분 행렬들을 곱셈해 중간 결과들의 집합을 생성하고, 중간 결과들을 조합하여 최종 결과 행렬 R을 결정한다. 이에 따라, 행렬 곱셈기가 내곱을 계산하는 실시 예들의 경우, SIMD(102)는 입력 행렬들을 더 작은 부분 행렬들로 분해하고, 상이한 집합들의 내곱들에 기초하여 부분 행렬들의 상이한 집합들의 곱들을 결정한 다음, 결과 점곱들에 대한 외곱을 계산하여 최종 결과 행렬을 결정한다.
본 명세서에서 더 설명될 바와 같이, 상이한 중간 결과들(상이한 부분 행렬 곱들)을 계산하는 것은 입력 레지스터들(106 및 107)에 저장된 부분 행렬들을 변경하는 것을 필요로 한다는 것이 이해될 것이다. 그러나, 입력 레지스터에 저장된 데이터의 각 변화는 GPU(102)에서 전력을 소비한다. 또한, 행렬 곱셈기(110)의 대응하는 산술 논리 장치(arithmetic logic unit; ALU)들 또는 다른 모듈들의 입력들에서의 데이터의 각 변화는 입력 데이터를 변경되지 않는 상태로 유지시키는 것에 비해, 추가 전력을 소비한다. 이에 따라, 전력을 보존하기 위해, SIMD(102)는 부분 행렬이 결과 행렬 R의 계산에 더 이상 요구되지 않을 때까지, 복수의 잇따른 곱셈 사이클들 동안 입력 레지스터들 중 하나(예를 들어, 레지스터(107))에서 부분 행렬이 유지되도록 입력 레지스터들(106 및 107)에서의 부분 행렬들의 저장을 순서화한다. 즉, SIMD(102)는 입력 레지스터들(106 및 107)에서의 입력 부분 행렬들의 적용을 순서화하여 레지스터들 중 하나에서 그리고 결과적으로 행렬 곱셈기(110)의 입력들 중 하나에서 입력 전환의 양을 감소시킴으로써, 전력을 보존한다.
GPU(100)에서 입력 부분 행렬들을 순서화하는 예는 도 2 및 도 3에 대하여 설명된다. 도 2는 각각 행렬 A 및 행렬 B로 지정된 두 개의 16X16 행렬들(220 및 222)의 예를 도시한다. 행렬들 A 및 B 각각은 16개의 4X4 부분 행렬들(예를 들어, 행렬 A의 부분 행렬(221))을 포함한다. 행렬들 A 및 B는 GPU(102)에서 곱셈되어 행렬 R로 지정된 결과 행렬(224)을 생성하며, 이 결과 행렬은 또한 복수의 4X4 부분 행렬들을 포함한다. 행렬 R은 부분 행렬들의 열들의 집합으로 보여질 수 있다. 예를 들어, R의 첫 번째 열은 부분 행렬들 R0,0, R1,0, R2,0, 및 R3, 0로 구성된다. 아래에서 더 설명될 바와 같이, 일부 실시 예들에서, GPU(100)는 R의 부분 행렬들의 각 열을 계산함으로써 행렬 R을 계산한 다음, 상이한 열들을 연결시켜 R 행렬을 형성한다. 일부 실시 예들에서, GPU(100)의 상이한 대응하는 SIMD에서 R의 부분 행렬들의 각 열이 동시에 계산되고, SIMD들 중 하나가 부분 행렬 열들을 연결시켜 R을 형성한다.
R의 부분 행렬들의 열을 계산하기 위해, 대응하는 SIMD는 자신의 행렬 곱셈기를 사용하여 행렬들 A 및 B의 대응하는 부분 행렬들에 대한 내(점)곱들의 집합을 결정한 다음, 내곱 결과들에 대한 외곱들을 계산한다. 예를 들어, 부분 행렬 R0, 0를 생성하기 위해, SIMD(102)는 다음의 계산들을 수행한다:
R0,0 = A0,0* B0,0
R0,0 += A0,1* B1,0
R0,0 += A0,2* B2,0
R0,0 += A0,3* B3,0
여기서 "+="는 대응하는 곱을 R0,0에 대한 이전 값에 더하는 것을 나타낸다. 유사하게, 부분 행렬 R1,0를 생성하기 위해, SIMD(102)는 다음의 계산들을 수행한다:
R1,0 = A1,0* B0,0
R0,0 += A1,1* B1,0
R0,0 += A1,2* B2,0
R0,0 += A1,3* B3,0
SIMD(102)는 부분 행렬들 R2,0 및 R3, 0를 생성하기 위해 유사한 계산들을 수행한다.
대응하는 부분 행렬을 계산하기 위한 각 곱셈을 수행하기 위해, SIMD(102)는 행렬 A 및 행렬 B의 대응하는 부분 행렬들을 각각 입력 레지스터들(106 및 107)에 로딩하고, 행렬 곱셈기(110)는 곱셈을 수행하여, 결과를 출력 레지스터(108)에 저장한다. 그러나, 위의 예들로부터 알 수 있는 바와 같이, 행렬 B의 부분 행렬들은 행렬 R의 상이한 부분 행렬들을 계산하는 데 재사용된다. 이에 따라, SIMD(102)는 곱셈들을 순서화하도록 구성되며, 이에 따라 입력 레지스터(107)에 저장된 행렬 B의 부분 행렬들이 행렬 곱셈기(110)의 복수의 잇따른 곱셈 사이클들에 걸쳐 변경되지 않은 채로 유지된다. 이에 의해 SIMD(102)는 입력 레지스터(107)에 대한 로드들의 수 및 행렬 곱셈기(110)의 입력의 변화들을 감소시킴으로써, 전력 소비를 감소시킨다.
입력 순서화의 일부의 예가 일부 실시 예들에 따라 도 3에 도시된다. 도 3은 일련의 잇따른 곱셈 사이클들(301-305) 및 입력 레지스터들(106 및 107) 각각의 대응하는 내용들을 도시한다. 이에 따라, 도시된 예에서, 곱셈 사이클(301)에 대해, SIMD(102)는 각각 입력 레지스터들(106 및 107)에 부분 행렬들 A0,0 및 B0, 0를 로딩한다. 아래에서 더 설명될 바와 같이, 행렬 곱셈기(110)는 부분 행렬들을 곱셈해 결과 행렬 R의 제1 열에 대한 중간 결과를 계산한다. 다음 곱셈 사이클(302)(곱셈 사이클(301) 바로 다음 곱셈 사이클)에 대해, SIMD(102)는 입력 레지스터(106)에 부분 행렬 A1, 0를 로딩하지만, 입력 레지스터(107)에 부분 행렬 B0, 0를 유지시킨다. 행렬 곱셈기(110)는 부분 행렬들을 곱셈해 결과 행렬 R의 제1 열에 대한 다른 중간 결과를 계산한다.
다음 곱셈 사이클(303)에 대해, SIMD(102)는 입력 레지스터(106)에 부분 행렬 A2, 0를 로딩하지만, 입력 레지스터(107)에 부분 행렬 B0, 0를 유지시킨다. 행렬 곱셈기(110)는 부분 행렬들을 곱셈해 결과 행렬 R의 제1 열에 대한 또 다른 중간 결과를 계산한다. 다음 곱셈 사이클(304)에 대해, SIMD(102)는 입력 레지스터(106)에 부분 행렬 A3, 0를 로딩하지만, 입력 레지스터(107)에 부분 행렬 B0, 0를 유지시킨다. 행렬 곱셈기(110)는 부분 행렬들을 곱셈해 결과 행렬 R의 제1 열에 대한 다른 중간 결과를 계산한다. 다음 곱셈 사이클(305)에 대해, 부분 행렬 B0, 0를 필요로 하는 모든 계산들이 완료되었다. 이에 따라, 곱셈 사이클(305)에 대해, SIMD(102)는 입력 레지스터(106)에 부분 행렬 A0,1을 로딩하고 입력 레지스터(107)에 부분 행렬 B1, 0를 로딩한다. 이에 따라, 도시된 예에서, SIMD(102)는 네 개의 연이은(잇따른) 곱셈 사이클들 동안 입력 레지스터(107)에 부분 행렬 B0, 0를 유지시킴으로써, 그렇지 않으면 입력 부분 행렬을 변경하는 데 요구될 전력을 보존하고 행렬 곱셈 결과를 계산한다.
SIMD(102)는 행렬 곱셈기(110)에서 곱셈 연산들을 계속 실행하고 결과 곱들을 조합하여 결과 행렬 R의 첫 번째 열을 계산한다. (입력 레지스터들(106 및 107)에 로딩되고 유지되는 대응하는 입력 행렬들을 포함하여) 곱셈들의 순서는 다음과 같다:
R0,0 = A0,0* B0,0
R1,0 = A1,0* B0,0 <= B 입력 유지됨
R2,0 = A2,0* B0,0 <= B 입력 유지됨
R3,0 = A3,0* B0,0 <= B 입력 유지됨 (4x 사용됨)
R0,0 += A0,1* B1,0 <= B 입력 업데이트됨
R1,0 += A1,1* B1,0 <= B 입력 유지됨
R2,0 += A2,1* B1,0 <= B 입력 유지됨
R3,0 += A3,1* B1,0 <= B 입력 유지됨 (4x 사용됨)
R0,0 += A0,2* B2,0 <= B 입력 업데이트됨
R1,0 += A1,2* B2,0 <= B 입력 유지됨
R2,0 += A2,2* B2,0 <= B 입력 유지됨
R3,0 += A3,2* B2,0 <= B 입력 유지됨 (4x 사용됨)
R0,0 += A0,3* B3,0 <= B 입력 업데이트됨
R1,0 += A1,3* B3,0 <= B 입력 유지됨
R2,0 += A2,3* B3,0 <= B 입력 유지됨
R3,0 += A3,3* B3,0 <= R의 첫 번째 열에 대해 계산 완료
GPU(102)는 결과 행렬 R의 다른 열들을 계산하기 위해 유사한 계산들을 수행한다. 일부 실시 예들에서, GPU(102)는 상이한 SIMD를 이용하여 결과 행렬 R의 대응하는 열을 동시에 계산하고, SIMD들 중 하나, 또는 다른 모듈을 이용하여 상이한 열들을 최종 결과 행렬 R로 연결시킨다.
도 4는 일부 실시 예들에 따른 행렬 곱셈기(110)에 대한 입력 행렬들의 순서화를 지원하는 도 1의 SIMD(102)의 추가 양태들의 블록도이다. 도시된 예에서, SIMD(102)는 순서기(430)에 연결되는 데이터 저장소(435)를 포함한다. 데이터 저장소(435)는 버퍼, 캐시, 레지스터 파일, 또는 행렬 곱셈기(110)에 대한 부분 행렬들(예를 들어, 부분 행렬(433))을 저장하도록 구성된 다른 메모리 구조이다. 순서기(430)는 입력 행렬들(105)(행렬 A 및 행렬 B)을 대응하는 부분 행렬들로 분해하고 부분 행렬들을 데이터 저장부(435)에 저장하도록 구성된 하드웨어 모듈이다. 순서기(430)는 또한 대응하는 곱셈 사이클들 동안, 데이터 저장소(435)로부터 하나 이상의 부분 행렬을 검색하고 검색된 각 부분 행렬을 대응하는 입력 레지스터(106 및 107)에 로딩하도록 구성된다. 이에 따라 순서기(430)는 비교적 큰 행렬의 행렬 곱셈을 수행하기 위해 행렬 곱셈기(110)에서의 입력 부분 행렬들의 순서화를 제어한다.
도 5는 일부 실시 예들에 따른 GPU의 행렬 곱셈기에서의 부분 행렬들의 적용을 순서화하는 방법(500)의 흐름도이다. 설명의 목적으로, 방법(500)은 도 1의 GPU(100)에서의 예시적인 구현 예에 대해 설명된다. 블록 502에서, 순서기(430)가 데이터 저장소(435)로부터 입력 레지스터들(106 및 107)에 각각 초기 부분 행렬들(예를 들어, 부분 행렬들 A0,0 및 B0, 0)을 로딩한다. 블록 504에서, 행렬 곱셈기(110)가 입력 레지스터들(106 및 107)에 저장된 부분 행렬들을 곱셈해 곱을 생성하고 위에서 제시된 바와 같이, 만약 있다면, 결과 행렬 R의 대응하는 열에 대한 중간 결과에 결과를 추가한다. 방법 흐름은 블록 506으로 이동하고 순서기(430)가 입력 레지스터(106)에서의 입력 부분 행렬이 행렬 A의 마지막 행에 대응하는지를 결정한다. 그렇지 않다면, 방법 흐름은 블록 508로 이동하고 순서기(430)가 현재 열(예를 들어, 열 0) 및 다음 행에 대응하는 A의 부분 행렬을 입력 레지스터(106)에 로딩한다. 입력 레지스터(107)에 저장된 B의 부분 행렬은 유지됨으로써, 전력을 보존한다. 방법 흐름은 블록 504로 복귀하고 행렬 곱셈기(110)가 다음 곱셈 연산을 실행한다 - 즉, 다음 곱셈 사이클을 실행한다.
블록 506으로 돌아가서, 입력 레지스터(106)에서의 입력 부분 행렬이 행렬 A의 마지막 행에 대응한다면, 방법 흐름은 블록 510으로 이동하고 순서기(430)가 입력 레지스터(510)에 저장된 입력 부분 행렬이 행렬 B의 마지막 행에 대응하는지를 결정한다. 그렇지 않다면, 방법 흐름은 블록 512로 이동하고 순서기(430)가 계산되고 있는 R의 열에 대응하는 B의 부분 행렬을 입력 레지스터(107)에 로딩한다. 또한, 순서기(430)가 초기 행(예를 들어, 행 0) 및 다음 열에 대응하는 A의 부분 행렬을 입력 레지스터(106)에 로딩한다. 방법 흐름은 블록 504로 복귀하고 행렬 곱셈기(110)가 다음 곱셈 연산을 실행한다.
블록 510으로 돌아가서, 입력 레지스터(510)에 저장된 입력 부분 행렬이 행렬 B의 마지막 행에 대응한다면, 결과 행렬 R의 대응하는 열의 계산이 완료된다. 이에 따라, 방법 흐름은 블록 514로 이동하고 SIMD(102)는 R의 열에 대한 최종 결과를 저장한다. 블록 516에서, GPU(100)는 계산된 열들 각각을 조합하여 결과 행렬 R을 생성한다. 일부 실시 예들에서, GPU(102)는 추가 처리를 위해 CPU에 결과 행렬 R을 제공한다. 다른 실시 예들에서, GPU(100)는 결과 행렬 R을 이용하여 예를 들어, 디스플레이 프레임에서의 하나 이상의 객체를 생성하고, 디스플레이 디바이스에서의 디스플레이를 위해 디스플레이 프레임을 프레임 버퍼에 제공한다.
본 명세서에서 개시된 바와 같이, 일부 실시 예들에서, 방법은: 제1 행렬과 제2 행렬을 곱셈하는 그래픽 처리 장치(GPU)의 행렬 곱셈기의 제1 곱셈 사이클 동안, 제1 입력 레지스터에 저장된 제1 행렬의 제1 부분 행렬을 제2 입력 레지스터에 저장된 제2 행렬의 제1 부분 행렬과 곱셈하는 단계; 및 행렬 곱셈기의 제2 곱셈 사이클 동안 - 제2 곱셈 사이클은 제1 곱셈 사이클에 잇따라 일어나는 것임-: 제1 입력 레지스터에 저장된 제1 행렬의 제1 부분 행렬을 제2 입력 레지스터에 저장된 제2 행렬의 제2 부분 행렬과 곱셈하는 단계; 및 제1 곱셈 사이클 및 제2 곱셈 사이클 동안 제1 입력 레지스터에서 제1 부분 행렬을 유지하는 단계를 포함한다. 일 양태에서, 방법은: 행렬 곱셈기의 제3 곱셈 사이클 동안 - 제3 곱셈 사이클은 제2 곱셈 사이클에 잇따라 일어나는 것임-: 제1 입력 레지스터에 저장된 제1 행렬의 제1 부분 행렬을 제2 입력 레지스터에 저장된 제2 행렬의 제2 부분 행렬과 곱셈하는 단계; 및 제1 곱셈 사이클, 제2 곱셈 사이클, 및 제3 곱셈 사이클 동안 제1 입력 레지스터에서 제1 부분 행렬을 유지하는 단계를 포함한다. 다른 양태에서, 제1 부분 행렬은 적어도 하나의 0이 아닌 요소를 포함한다.
일 양태에서, 방법은 제1 곱셈 사이클 및 제2 곱셈 사이클의 결과들에 기초하여 제1 행렬과 제2 행렬의 곱을 결정하는 단계를 포함하며, 곱은 결과 행렬을 포함한다. 다른 양태에서, 곱을 결정하는 단계는: 제1 곱셈 사이클 및 제2 곱셈 사이클의 결과들에 기초하여 결과 행렬의 부분 행렬을 결정하는 단계를 포함한다. 또 다른 양태에서, 결과 행렬의 부분 행렬은 결과 행렬의 열 및 행 중 하나를 포함한다. 또 다른 양태에서, 곱을 결정하는 단계는: 제1 곱셈 사이클 및 제2 곱셈 사이클의 결과들에 기초하여 외곱을 결정하는 단계를 포함한다. 또 다른 양태에서, 방법은 행렬 곱셈기의 제3 곱셈 사이클 동안 - 제3 곱셈 사이클은 제1 곱셈 사이클에 잇따라 일어나는 것임-: 제1 입력 레지스터에 저장된 제1 행렬의 제2 부분 행렬을 제2 입력 레지스터에 저장된 제2 행렬의 제2 부분 행렬과 곱셈하는 단계; 및 제3 곱셈 사이클 동안 제1 행렬의 제1 부분 행렬을 제1 행렬의 제2 부분 행렬로 변경하는 단계를 포함한다.
본 명세서에서 개시된 바와 같이, 일부 실시 예들에서, 방법은: 그래픽 처리 장치(GPU)의 행렬 곱셈기에서 제1 행렬의 부분 행렬들과 제2 행렬의 부분 행렬들을 곱셈해 행렬 곱을 결정하는 단계를 포함하며, 곱셈은: 제1 복수의 곱셈 사이클들에 걸쳐 행렬 곱셈기의 제1 입력 레지스터에서 제1 부분 행렬을 유지하는 단계를 포함한다. 일 양태에서, 곱셈은: 제1 복수의 곱셈 사이클들에 걸쳐 행렬 곱셈기의 제2 입력 레지스터에서 부분 행렬들을 유지하는 단계를 더 포함한다. 다른 양태에서, 곱셈은: 제2 복수의 곱셈 사이클들에 걸쳐 행렬 곱셈기의 제2 입력 레지스터에서 제2 부분 행렬을 유지하는 단계를 더 포함한다. 또 다른 양태에서, 제1 부분 행렬의 적어도 하나의 요소는 0이 아닌 요소이다.
본 명세서에서 개시된 바와 같이, 일부 실시 예들에서, 그래픽 처리 장치(GPU)는: 제1 입력 레지스터; 제2 입력 레지스터; 제1 입력 레지스터에 저장된 부분 행렬을 제2 입력 레지스터에 저장된 부분 행렬과 곱셈하는 행렬 곱셈기; 및 제1 입력 레지스터 및 제2 입력 레지스터에 저장된 부분 행렬들을 제어하는 순서기를 포함하며, 순서기는: 행렬 곱셈기의 제1 곱셈 사이클에 대해, 제1 입력 레지스터에 제1 행렬의 제1 부분 행렬을 그리고 제2 입력 레지스터에 저장된 제2 행렬의 제1 부분 행렬을 저장하도록; 행렬 곱셈기의 제2 곱셈 사이클에 대해, 제1 입력 레지스터에 제1 행렬의 제1 부분 행렬을 유지시키고 제2 입력 레지스터에 제2 행렬의 제2 부분 행렬을 저장하도록 구성되며, 제2 곱셈 사이클은 제1 곱셈 사이클에 잇따라 일어난다. 일 양태에서, 순서기는: 행렬 곱셈기의 제3 곱셈 사이클 동안 - 제3 곱셈 사이클은 제1 곱셈 사이클에 잇따라 일어나는 것임-: 제1 입력 레지스터에 저장된 제1 행렬을 유지시키고, 제2 입력 레지스터에 저장된 제2 행렬의 제2 부분 행렬을 저장하도록 구성된다. 다른 양태에서, 제1 부분 행렬은 적어도 하나의 0이 아닌 요소를 포함한다.
일 양태에서, GPU는: 제1 곱셈 사이클 및 제2 곱셈 사이클의 결과들에 기초하여 제1 행렬과 제2 행렬의 곱을 결정하도록 구성되며, 곱은 결과 행렬을 포함한다. 다른 양태에서, GPU는: 제1 곱셈 사이클 및 제2 곱셈 사이클의 결과들에 기초하여 결과 행렬의 부분 행렬을 결정함으로써, 곱을 결정하도록 구성된다. 또 다른 양태에서, 결과 행렬의 부분 행렬은 결과 행렬의 열 및 행 중 하나를 포함한다. 또 다른 양태에서, GPU는: 제1 곱셈 사이클 및 제2 곱셈 사이클의 결과들에 기초하여 외곱을 결정함으로써, 곱을 결정하도록 구성된다. 다른 양태에서, 순서기는: 행렬 곱셈기의 제3 곱셈 사이클 동안 - 제3 곱셈 사이클은 제1 곱셈 사이클에 잇따라 일어나는 것임-: 제1 입력 레지스터에 제1 행렬의 제2 부분 행렬을 저장하고 제2 입력 레지스터에 제2 행렬의 제2 부분 행렬을 저장하도록 구성된다.
컴퓨터 판독 가능한 저장 매체는 컴퓨터 시스템에 명령어들 및/또는 데이터를 제공하기 위해 사용 중 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체들은 광학 매체들(예를 들어, 컴팩트 디스크(compact disc; CD), 디지털 다목적 디스크(digital versatile disc; DVD), 블루-레이 디스크), 자기 매체들(예를 들어, 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(random access memory; RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(read-only memory; ROM) 또는 플래시 메모리), 또는 미세 전자 기계 시스템들(microelectromechanical systems; MEMS) 기반 저장 매체들을 포함할 수 있으나, 이에 제한되는 것은 아니다. 컴퓨터 판독 가능한 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 착탈 가능하게 부착되거나(예를 들어, 광학 디스크 또는 범용 직렬 버스(Universal Serial Bus; USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합될 수 있다(예를 들어, 네트워크 액세스 가능한 스토리지(network accessible storage; NAS)).
일부 실시 예들에서, 상술된 기술들의 특정 양태들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 처리기에 의해 구현될 수 있다.  소프트웨어는 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장되거나 그 외 유형적으로 구현되는 실행 가능한 명령어들의 하나 이상의 집합을 포함한다.  소프트웨어는 하나 이상의 처리기에 의해 실행될 때, 하나 이상의 처리기를 조작하여 상술된 기술들의 하나 이상의 양태를 수행하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적인 컴퓨터 판독 가능한 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 고체 상태 저장 디바이스들 이를테면 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비일시적인 컴퓨터 판독 가능한 저장 매체 상에 저장된 실행 가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 처리기에 의해 해석되거나 그 외 실행 가능한 다른 명령어 포맷으로 있을 수 있다.
일반적인 설명으로 상술된 모든 동작들 또는 요소들이 요구되지는 않을 수 있다는 것, 특정 동작 또는 디바이스의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 동작들 또는 요소들에 더하여, 하나 이상의 추가 동작이 수행되거나 요소들이 포함될 수 있다는 것에 유념한다. 더 나아가, 동작들이 나열된 순서는 반드시 이것들이 수행되는 순서는 아니다. 또한, 개념들은 구체적인 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야의 통상의 기술자는 아래 청구항들에 제시된 바에 따라 본 개시의 범위로부터 벗어나지 않고 다양하게 수정 및 변경될 수 있다는 것을 이해한다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아닌 예시적인 의미로 여겨져야 하고, 상기한 모든 수정이 본 개시의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들 및 문제들에 대한 솔루션들이 구체적인 실시 예들과 관련하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들 및 임의의 혜택, 이점, 또는 솔루션을 발생시키거나 더 확연히 드러낼 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항들의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본 명세서에서의 교시 내용의 혜택을 받는 해당 기술분야의 통상의 기술자들에게 명백한 상이하지만 균등한 방식들로 수정 및 실시될 수 있음에 따라 단지 예시적인 것일 뿐이다. 아래 청구항들에서 설명되는 것 이외에, 제시되는 본 명세서에서의 구성 또는 설계의 세부 사항들로 제한되도록 의도되지 않는다. 이에 따라 위에서 개시된 특정 실시 예들이 대체 또는 수정될 수 있고 모든 그러한 변형 예들은 개시된 주제의 범위 내인 것으로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래 청구항들에 제시되는 바에 따른다.

Claims (20)

  1. 방법으로서,
    제1 행렬[220]과 제2 행렬[222]을 곱셈하는 그래픽 처리 장치(graphics processing unit; GPU)[100]의 행렬 곱셈기[110]의 제1 곱셈 사이클[301] 동안:
    제1 입력 레지스터[106]에 저장된 상기 제1 행렬의 제1 부분 행렬을 제2 입력 레지스터[107]에 저장된 상기 제2 행렬의 제1 부분 행렬과 곱셈하는 단계;
    상기 행렬 곱셈기의 제2 곱셈 사이클[302] 동안 - 상기 제2 곱셈 사이클은 상기 제1 곱셈 사이클에 잇따라 일어나는 것임 -:
    상기 제1 입력 레지스터에 저장된 상기 제1 행렬의 상기 제1 부분 행렬을 제2 입력 레지스터에 저장된 상기 제2 행렬의 제2 부분 행렬과 곱셈하는 단계; 및
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클 동안 상기 제1 입력 레지스터에서 상기 제1 부분 행렬을 유지하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 행렬 곱셈기의 제3 곱셈 사이클[303] 동안 - 상기 제3 곱셈 사이클은 상기 제2 곱셈 사이클에 잇따라 일어나는 것임-:
    상기 제1 입력 레지스터에 저장된 상기 제1 행렬의 상기 제1 부분 행렬을 제2 입력 레지스터에 저장된 상기 제2 행렬의 제2 부분 행렬과 곱셈하는 단계; 및
    상기 제1 곱셈 사이클, 상기 제2 곱셈 사이클, 및 상기 제3 곱셈 사이클 동안 상기 제1 입력 레지스터에서 상기 제1 부분 행렬을 유지하는 단계를 더 포함하는, 방법.
  3. 제1항에 있어서,
    상기 제1 부분 행렬은 적어도 하나의 0이 아닌 요소를 포함하는 것인, 방법.
  4. 제1항에 있어서,
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클의 결과들에 기초하여 상기 제1 행렬과 상기 제2 행렬의 곱을 결정하는 단계를 더 포함하며, 상기 곱은 결과 행렬[224]을 포함하는 것인, 방법.
  5. 제4항에 있어서,
    상기 곱을 결정하는 단계는:
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클의 결과들에 기초하여 상기 결과 행렬의 부분 행렬을 결정하는 단계를 포함하는 것인, 방법.
  6. 제5항에 있어서,
    상기 결과 행렬의 상기 부분 행렬은 상기 결과 행렬의 열 및 행 중 하나를 포함하는 것인, 방법.
  7. 제4항에 있어서,
    상기 곱을 결정하는 단계는:
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클의 결과들에 기초하여 외곱(outer product)을 결정하는 단계를 포함하는 것인, 방법.
  8. 제1항에 있어서,
    상기 행렬 곱셈기의 제3 곱셈 사이클 동안 - 상기 제3 곱셈 사이클은 상기 제1 곱셈 사이클에 잇따라 일어나는 것임-:
    상기 제1 입력 레지스터에 저장된 상기 제1 행렬의 제2 부분 행렬을 상기 제2 입력 레지스터에 저장된 상기 제2 행렬의 제2 부분 행렬과 곱셈하는 단계; 및
    상기 제3 곱셈 사이클 동안 상기 제1 행렬의 상기 제1 부분 행렬을 상기 제1 행렬의 상기 제2 부분 행렬로 변경하는 단계를 더 포함하는, 방법.
  9. 방법으로서,
    그래픽 처리 장치(GPU)[100]의 행렬 곱셈기[110]에서 제1 행렬[220]의 부분 행렬들과 제2 행렬[222]의 부분 행렬들을 곱셈해 행렬 곱을 결정하는 단계를 포함하며, 상기 곱셈은:
    제1 복수의 곱셈 사이클들에 걸쳐 상기 행렬 곱셈기의 제1 입력 레지스터[107]에서 제1 부분 행렬을 유지하는 단계를 포함하는 것인, 방법.
  10. 제9항에 있어서,
    상기 곱셈은:
    상기 제1 복수의 곱셈 사이클들에 걸쳐 상기 행렬 곱셈기의 제2 입력 레지스터[106]에서 부분 행렬들을 변경하는 단계를 더 포함하는 것인, 방법.
  11. 제10항에 있어서,
    상기 곱셈은:
    제2 복수의 곱셈 사이클들에 걸쳐 상기 행렬 곱셈기의 상기 제2 입력 레지스터에서 제2 부분 행렬을 유지하는 단계를 더 포함하는 것인, 방법.
  12. 제9항에 있어서,
    상기 제1 부분 행렬의 적어도 하나의 요소는 0이 아닌 요소인 것인, 방법.
  13. 그래픽 처리 장치(GPU)[100]로서,
    제1 입력 레지스터[106];
    제2 입력 레지스터[107];
    상기 제1 입력 레지스터에 저장된 부분 행렬을 상기 제2 입력 레지스터에 저장된 부분 행렬과 곱셈하는 행렬 곱셈기[110]; 및
    상기 제1 입력 레지스터 및 상기 제2 입력 레지스터에 저장된 부분 행렬들을 제어하는 순서기(sequencer)[430]를 포함하며, 상기 순서기는:
    상기 행렬 곱셈기의 제1 곱셈 사이클[301]에 대해, 상기 제1 입력 레지스터에 상기 제1 행렬의 제1 부분 행렬을 그리고 상기 제2 입력 레지스터에 저장된 제2 행렬의 제1 부분 행렬을 저장하도록;
    상기 행렬 곱셈기의 제2 곱셈 사이클[302]에 대해, 상기 제1 입력 레지스터에 상기 제1 행렬의 상기 제1 부분 행렬을 유지시키고 상기 제2 입력 레지스터에 저장된 상기 제2 행렬의 제2 부분 행렬을 저장하도록 구성되며, 상기 제2 곱셈 사이클은 상기 제1 곱셈 사이클에 잇따라 일어나는 것인, 그래픽 처리 장치(GPU).
  14. 제13항에 있어서,
    상기 순서기는:
    상기 행렬 곱셈기의 제3 곱셈 사이클 동안 - 상기 제3 곱셈 사이클은 상기 제1 곱셈 사이클에 잇따라 일어나는 것임-:
    상기 제1 입력 레지스터에 저장된 상기 제1 행렬을 유지시키고 상기 제2 입력 레지스터에 저장된 상기 제2 행렬의 제2 부분 행렬을 저장하도록 구성되는 것인, 그래픽 처리 장치(GPU).
  15. 제13항에 있어서,
    상기 제1 부분 행렬은 적어도 하나의 0이 아닌 요소를 포함하는 것인, 그래픽 처리 장치(GPU).
  16. 제13항에 있어서,
    상기 GPU는:
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클의 결과들에 기초하여 상기 제1 행렬과 상기 제2 행렬의 곱을 결정하도록 구성되며, 상기 곱은 결과 행렬을 포함하는 것인, 그래픽 처리 장치(GPU).
  17. 제16항에 있어서,
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클의 결과들에 기초하여 상기 결과 행렬의 부분 행렬을 결정함으로써, 상기 곱을 결정하도록 구성되는, 그래픽 처리 장치(GPU).
  18. 제17항에 있어서,
    상기 결과 행렬의 상기 부분 행렬은 상기 결과 행렬의 열 및 행 중 하나를 포함하는 것인, 그래픽 처리 장치(GPU).
  19. 제16항에 있어서,
    상기 GPU는:
    상기 제1 곱셈 사이클 및 상기 제2 곱셈 사이클의 결과들에 기초하여 외곱을 결정함으로써, 상기 곱을 결정하도록 구성되는, 그래픽 처리 장치(GPU).
  20. 제13항에 있어서,
    상기 순서기는:
    상기 행렬 곱셈기의 제3 곱셈 사이클 동안 - 상기 제3 곱셈 사이클은 상기 제1 곱셈 사이클에 잇따라 일어나는 것임-:
    상기 제1 입력 레지스터에 상기 제1 행렬의 제2 부분 행렬을 저장하고 상기 제2 입력 레지스터에 상기 제2 행렬의 제2 부분 행렬을 저장하도록 구성되는 것인, 그래픽 처리 장치(GPU).
KR1020217015589A 2018-10-31 2019-06-18 부분 행렬 순서화를 이용하는 행렬 곱셈기 KR102586989B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/176,449 2018-10-31
US16/176,449 US11093580B2 (en) 2018-10-31 2018-10-31 Matrix multiplier with submatrix sequencing
PCT/US2019/037656 WO2020091848A1 (en) 2018-10-31 2019-06-18 Matrix multiplier with submatrix sequencing

Publications (2)

Publication Number Publication Date
KR20210071073A true KR20210071073A (ko) 2021-06-15
KR102586989B1 KR102586989B1 (ko) 2023-10-10

Family

ID=70327188

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217015589A KR102586989B1 (ko) 2018-10-31 2019-06-18 부분 행렬 순서화를 이용하는 행렬 곱셈기

Country Status (6)

Country Link
US (1) US11093580B2 (ko)
EP (1) EP3891626A4 (ko)
JP (2) JP7461945B2 (ko)
KR (1) KR102586989B1 (ko)
CN (1) CN113168430A (ko)
WO (1) WO2020091848A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102640249B1 (ko) * 2023-06-12 2024-02-27 주식회사 하이퍼엑셀 대규모 언어 모델을 위해 멀티-디바이스에 기반한 추론을 수행하는 방법 및 시스템

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210303987A1 (en) * 2020-03-26 2021-09-30 Advanced Micro Devices, Inc. Power reduction for machine learning accelerator background
US11720328B2 (en) * 2020-06-26 2023-08-08 Advanced Micro Devices, Inc. Processing unit with small footprint arithmetic logic unit
CN112429475B (zh) * 2020-09-29 2023-06-30 贵州大学 一种胶囊排序送料装置
CN112433760B (zh) * 2020-11-27 2022-09-23 海光信息技术股份有限公司 数据排序方法和数据排序电路
CN112632464B (zh) * 2020-12-28 2022-11-29 上海壁仞智能科技有限公司 用于处理数据的处理装置
US11556337B2 (en) 2021-04-12 2023-01-17 Analog Devices International Unlimited Company Parallel matrix multiplication technique optimized for memory fetches
CN117407640A (zh) * 2022-07-15 2024-01-16 华为技术有限公司 一种矩阵计算方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5324700A (en) * 1976-08-20 1978-03-07 Agie Ag Ind Elektronik Head assembly for use in discharge machining device
US20050193050A1 (en) * 2001-03-21 2005-09-01 Apple Computer Inc. Matrix multiplication in a vector processing system
US20180246855A1 (en) * 2017-02-28 2018-08-30 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324700A (ja) * 1992-05-19 1993-12-07 N T T Data Tsushin Kk 行列乗算装置
JP3935678B2 (ja) * 2001-01-31 2007-06-27 富士通株式会社 Simd積和演算方法、積和演算回路、および、半導体集積回路装置
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US20050240646A1 (en) * 2004-04-23 2005-10-27 The Research Foundation Of State University Of New York Reconfigurable matrix multiplier architecture and extended borrow parallel counter and small-multiplier circuits
US8051124B2 (en) * 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
EP2239419A1 (de) 2009-03-31 2010-10-13 Siemens Aktiengesellschaft Axialturbomaschinenrotor mit Dichtscheibe
US9354944B2 (en) * 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8577951B1 (en) * 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8862653B2 (en) * 2011-04-26 2014-10-14 University Of South Carolina System and method for sparse matrix vector multiplication processing
US9886418B2 (en) 2015-04-28 2018-02-06 Intel Corporation Matrix operands for linear algebra operations
CN108388541B (zh) 2016-04-22 2020-12-11 安徽寒武纪信息科技有限公司 卷积运算装置及方法
US10032247B2 (en) 2016-06-22 2018-07-24 Palo Alto Research Center Incorporated System and method for speeding up general matrix-vector multiplication on GPU
US10067910B2 (en) 2016-07-01 2018-09-04 Palo Alto Research Center Incorporated System and method for GPU maximum register count optimization applied to general matrix-matrix multiplication
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
JP6912703B2 (ja) * 2017-02-24 2021-08-04 富士通株式会社 演算方法、演算装置、演算プログラム及び演算システム
US10521225B2 (en) * 2017-06-29 2019-12-31 Oracle International Corporation Matrix multiplication at memory bandwidth
CN107622037A (zh) 2017-09-27 2018-01-23 郑州云海信息技术有限公司 一种提高图形处理单元的矩阵乘计算性能的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5324700A (en) * 1976-08-20 1978-03-07 Agie Ag Ind Elektronik Head assembly for use in discharge machining device
US20050193050A1 (en) * 2001-03-21 2005-09-01 Apple Computer Inc. Matrix multiplication in a vector processing system
US20180246855A1 (en) * 2017-02-28 2018-08-30 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102640249B1 (ko) * 2023-06-12 2024-02-27 주식회사 하이퍼엑셀 대규모 언어 모델을 위해 멀티-디바이스에 기반한 추론을 수행하는 방법 및 시스템

Also Published As

Publication number Publication date
EP3891626A4 (en) 2022-08-10
EP3891626A1 (en) 2021-10-13
WO2020091848A1 (en) 2020-05-07
US20200133991A1 (en) 2020-04-30
JP2022506418A (ja) 2022-01-17
JP2023089161A (ja) 2023-06-27
CN113168430A (zh) 2021-07-23
US11093580B2 (en) 2021-08-17
KR102586989B1 (ko) 2023-10-10
JP7461945B2 (ja) 2024-04-04

Similar Documents

Publication Publication Date Title
KR102586989B1 (ko) 부분 행렬 순서화를 이용하는 행렬 곱셈기
US11698773B2 (en) Accelerated mathematical engine
US10810484B2 (en) Hardware accelerator for compressed GRU on FPGA
JP7335231B2 (ja) Simd命令を用いた効率的な直接畳み込み
CN112612521A (zh) 一种用于执行矩阵乘运算的装置和方法
US20140351566A1 (en) Moving average processing in processor and processor
CN112446007A (zh) 一种矩阵运算方法、运算装置以及处理器
US20220100813A1 (en) Dynamically adaptable arrays for vector and matrix operations
JP6712052B2 (ja) 演算処理装置及び演算処理装置の制御方法
US11573765B2 (en) Fused convolution and batch normalization for neural networks
US20230289191A1 (en) Vertical and horizontal broadcast of shared operands
CN115408061B (zh) 复数矩阵运算的硬件加速方法、装置、芯片及存储介质
KR20210089247A (ko) 그래픽 처리 장치에서 행렬 곱셈의 파이프라인 처리
CN115730653A (zh) 量化神经网络训练与推理
EP1936492A1 (en) SIMD processor with reduction unit
US20240111530A1 (en) Matrix multiplication unit with flexible precision operations
US11995149B2 (en) Sparse matrix-vector multiplication
JP7241397B2 (ja) 演算装置、演算方法、および演算プログラム
Venieris et al. Towards heterogeneous solvers for large-scale linear systems
Risikesh et al. Variable bit-precision vector extension for RISC-V based Processors

Legal Events

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