KR20230159489A - 행렬 곱하기 동작들에 대한 행렬의 근사화 - Google Patents

행렬 곱하기 동작들에 대한 행렬의 근사화 Download PDF

Info

Publication number
KR20230159489A
KR20230159489A KR1020237035315A KR20237035315A KR20230159489A KR 20230159489 A KR20230159489 A KR 20230159489A KR 1020237035315 A KR1020237035315 A KR 1020237035315A KR 20237035315 A KR20237035315 A KR 20237035315A KR 20230159489 A KR20230159489 A KR 20230159489A
Authority
KR
South Korea
Prior art keywords
elements
products
matrix
product
pairs
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020237035315A
Other languages
English (en)
Inventor
프라모드 바산트 아게이드
스와프닐 피. 사카르세테
맥심 브이. 카자코프
알렉산더 엠. 포타포프
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20230159489A publication Critical patent/KR20230159489A/ko
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

데이터를 저장하도록 구성된 메모리 및 제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하고 제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하도록 구성된 프로세서를 포함하는 처리 디바이스가 제공된다. 프로세서는 또한 요소들의 쌍들의 곱들을 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 제1 및 제2 행렬들의 요소들의 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리고 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행함으로써 제3 행렬에 대한 값들을 결정하도록 구성된다.

Description

행렬 곱하기 동작들에 대한 행렬의 근사화
관련 출원에 대한 상호 참조
본 출원은 2021년 3월 26일에 출원된 "행렬 곱셈 연산을 위한 행렬의 근사화"라는 명칭의 계류 중인 미국 가특허 출원 번호 제17/214,784호의 이익을 주장하며, 그 전체 내용은 본 명세서에 참조로 포함된다. 본 출원은, 2021년 3월 26일에 출원된 "행렬 곱셈 연산을 위한 행렬의 근사화를 위한 데이터 압축기"라는 명칭의 미국 가특허 출원 번호 제17/214,779호에 관한 것이며, 이는 완전히 설명된 것처럼 본 명세서에 참고로 포함된다.
행렬 곱셈은 고성능 컴퓨팅(HPC) 및 기계 학습에서의 사용을 포함하는 다수의 애플리케이션 도메인들에 걸친 키 빌딩 블록이다. 행렬 곱셈은 또한 컨볼루션 신경망, 순환 신경망 및 다른 형태의 인공 신경망에서 사용된다.
행렬 곱셈 기술은 행렬 곱셈의 효율을 증가시키기 위해 병렬화를 이용한다. 예를 들어, 2개의 행렬들은 전형적으로 더 작은 부분들(예컨대, 열들, 행들 및 열들과 행들의 부분들)로 분할되고, 2개의 행렬들의 행렬 곱셈 동작은 하나의 행렬의 일부분과 다른 행렬의 일부분의 곱셈을 포함하는 복수의 행렬 곱셈 계산들을 실행함으로써 수행된다. 행렬 곱셈 계산들은 행렬 곱셈 동작을 수행하기 위해 프로세서 네트워크의 상이한 프로세서 코어들에 맵핑되고 그에 의해 실행된다.
더 상세한 이해는 첨부된 도면과 함께 예로서 주어진 다음의 설명으로부터 얻을 수 있다.
도 1은 본 개시의 하나 이상의 특징들이 구현될 수 있는 예시적인 디바이스의 블록도이다.
도 2는 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 컴포넌트를 도시하는 블록도이다.
도 3은 본 개시의 특징들에 따라 행렬 곱셈에 대한 데이터를 선택하는 예시적인 방법을 도시하는 흐름도이다.
도 4a는 본 개시내용의 특징들에 따른 근사화된 곱 지수(product exponent) 값들의 어레이의 제1 예를 도시한다.
도 4b는 본 개시내용의 특징들에 따른 근사화된 곱 지수 값들의 어레이의 제2 예를 도시한다.
도 4c는 본 개시내용의 특징들에 따른 근사화된 곱 지수 값들의 어레이의 제3 예를 도시한다.
도 4d는 본 개시내용의 특징들에 따른 근사화된 곱 지수 값들의 어레이의 제4 예를 도시한다.
도 5는 본 발명의 특징들에 따른 두 행렬, A 및 B의 부분 행렬 곱셈과 출력 행렬 C의 일례를 도시하는 도면이다.
본 명세서에 사용되는 바와 같이, 프로그램들은 절차 또는 루틴들(예컨대, 동작들, 계산들, 기능들, 프로세스들, 작업들)을 수행하기 위해 하나 이상의 프로세서들을 사용하여 실행될 명령어들의 시퀀스들을 포함한다. 프로그래밍된 명령어들 및 데이터의 처리는, 프로그래밍된 명령어들 및 데이터를 실행 및 디코딩하기 위한 페치, 디코딩, 스케줄링과 같은 그러나 이로 제한되지 않는 복수의 처리 스테이지들 중 하나 이상을 포함한다. 프로그래밍된 명령어들은 예를 들어, 운영 체제들과 같은 애플리케이션들 및 제어 프로그램들을 포함한다. 프로세서들은, 예를 들어, 행렬 곱셈들을 수행하기 위한 명령어들과 같은 프로그램 명령어들을 판독 및 실행하도록 구성된 다수의 처리 코어들(예컨대, 계산 유닛들(CU))을 포함한다.
행렬 곱셈은 제1 행렬 및 제2 행렬의 데이터의 하위 부분들의 내적(dot product)들을 계산하는 것을 포함한다. 행렬 곱셈 연산은 계산 C = A x B를 포함하며, 여기서 A, B, C는 각각 크기 M x K, K x N, 및 M x N의 행렬이다. 행렬 C의 각각의 요소는 행렬 A의 행과 행렬 B의 열의 내적이다. 예를 들어, 곱셈 누산 동작은 한 쌍의 값들의 곱을 계산하고, 각각의 값은 행렬의 일부분의 요소(예컨대, 행, 열, 행 또는 열의 일부, 또는 다수의 행들 또는 열들)에 대응하고, 승수 누산기(MAC)로서 알려진 하드웨어 컴포넌트들을 사용하여 누산기에 곱을 추가한다. 예를 들어, 64 x 64 곱이 4개의 16 x 16 MAC 또는 8개의 8 x 8 MAC로서 구현될 수 있다. 행렬 곱셈은 전형적으로 많은 계산을 수반하며, 이는 시간 소모적이고 비용이 많이 든다.
본 출원은 행렬 곱셈의 근사치를 효율적으로 수행하기 위한 디바이스들 및 방법들을 제공한다. 본 발명의 특징은 입력 행렬의 행렬 곱셈의 내적 계산에 사용될 곱으로부터, 두 행렬의 공통 치수 K를 따라, 다수의 곱(즉, 두 입력 행렬의 요소의 쌍의 곱)의 수를 떨어뜨림으로써 출력 행렬을 동적으로 결정하는 디바이스 및 방법을 포함한다. 떨어진 곱(dropped product)은 내적 계산에 사용될 곱 중에서 최소 지수 합을 갖는 것으로 근사화된 곱이다. 아래에서 더 상세히 설명되는 바와 같이, 유지될(즉, 떨어지지 않음) 및 MAC들에 제공될 요소들의 목표 개수는, 곱 지수 값들의 최대 유효 비트(MSB)들의 합으로 시작하고 대응하는 다음 유효 비트들의 각각의 세트의 세트들을 통해 목표 개수의 곱 지수 값들이 유지되도록 결정될 때까지 계속되고, 이어서, 행렬들 A 및 B의 대응하는 요소들이 행렬 곱셈을 위해 MAC들에 제공되는지를 나타내는 근사화된 곱 값들(본 명세서에서 곱 지수 값들로 지칭됨)의 비트 값들의 합들에 기초하여 결정된다.
본 발명의 특징은 그들의 값들에 따라 입력 어레이들의 요소들을 먼저 분류하지 않고 곱들의 수를 감소시키며, 이는 그렇지 않으면 하드웨어에서 구현하는 데 비용이 많이 들 것이다.
예를 들어, 64 x 64 곱 값들 중에서 최대 근사화된 48 곱 값들을 유지함(즉, 최저 16 근사화된 값들을 떨어뜨리는 것)으로써 64 x 64 곱이 48 x 48 곱으로 감소된다. 예로서, 64 x 64 곱이 16 x 16 MAC로서 구현되는 경우, 4개의 16 x 16 MAC들이 3개의 16 x 16 MAC로 감소되어, 태스크를 실행하는 25% 감소 시간 및 태스크를 실행하기 위한 에너지 비용의 감소를 초래한다. 마찬가지로, 64 x 64 곱이 8 x 8 MAC로서 구현되는 경우, 8개의 8 x 8 MAC들이 6개의 8 x 8 MAC로 감소되어, 또한 25% 감소 시간을 초래한다. MAC들을 실행하기 위해 유지되고 MAC들에 제공될 곱 값들의 목표 수는, MAC들에 제공될 곱 값들로부터 떨어질 (즉, 곱 값들을 떨어뜨리는) 곱 값들의 목표 수는 임의의 수일 수 있고, 특정 태스크 또는 애플리케이션에 대한 근사치들에 의해 허용될 수 있는 결과 에러의 양과 같은, 런타임 동안 다양한 인자들에 기초하여 결정될 수 있다. 예를 들어, 기계 학습 훈련에 사용될 때, 떨어지는 것으로 결정된 곱들의 목표 수는 생성된 네트워크의 정확도에 대해 가질 것이라는 근사치들 효과에 기초한다. 떨어질 곱 값의 목표 개수는 또한 공통 치수 K의 크기에 기초하여 결정될 수 있다. 예를 들어, 휴리스틱에 기초하여, K의 더 큰 값에 대해 추가적인 곱 값이 떨어질 수 있고, K의 더 낮은 값을 위해 부가적인 곱 값이 유지되고 MAC에 제공될 수 있다.
본 발명의 특징들은 플로트 데이터 유형들(예컨대, FP32, FP16 및 BF16 포맷들) 및 정수 데이터 유형들(예컨대, int8 포맷)과 같은 다양한 상이한 데이터 유형들에 대한 행렬 곱셈을 수행하는 것을 포함한다.
데이터를 저장하도록 구성된 메모리 및 제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하고 제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하도록 구성된 프로세서를 포함하는 처리 디바이스가 제공된다. 프로세서는 또한 요소들의 쌍들의 곱들을 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 제1 및 제2 행렬들의 요소들의 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리고 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행함으로써 제3 행렬에 대한 값들을 결정하도록 구성된다.
제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하고 제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하는 단계를 포함하는 행렬 곱셈 데이터 선택 방법이 제공된다. 방법은 또한 요소들의 쌍들의 곱들을 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 제1 및 제2 행렬들의 요소들의 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리고 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행함으로써 제3 행렬에 대한 값들을 결정하는 단계를 포함한다.
컴퓨터로 하여금 행렬 곱셈 데이터 선택 방법을 실행하게 하기 위한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체가 제공되며, 이는 제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하는 단계, 제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하는 단계, 및 제3 행렬에 대한 값들을 결정하는 단계로서 상기 제1 및 제2 행렬들의 요소들의 쌍들의 곱들을 상기 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 상기 요소들의 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리는 것 및 상기 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행하는 것에 의하는 단계를 포함한다.
도 1은 본 개시의 하나 이상의 특징이 구현될 수 있는 예시적인 디바이스(100)의 블록도이다. 장치(100)는, 예를 들어, 컴퓨터, 게이밍 장치, 핸드헬드 장치, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함한다. 디바이스(100)는 프로세서(102), 메모리(104), 스토리지(106), 하나 이상의 입력 디바이스(108), 및 하나 이상의 출력 디바이스(110)를 포함한다. 장치(100)는 또한 선택적으로 입력 드라이버(112) 및 출력 드라이버(114)를 포함한다. 디바이스(100)는 도 1에 도시되지 않은 추가적인 컴포넌트들을 포함할 수 있다는 것이 이해된다.
다양한 대안들에서, 프로세서(102)는 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 동일한 다이 상에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어들을 포함하고, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안들에서, 메모리(104)는 프로세서(102)와 동일한 다이 상에 위치되거나 또는 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 예를 들어, 동적 RAM(DRAM), 또는 정적 RAM(SRAM)을 포함하는 RAM(random access memory)을 포함한다. RAM은 예를 들어 캐시 메모리, 스크래치패드 메모리 및 레지스터들을 포함한다.
스토리지(106)는 고정 또는 제거 가능한 스토리지, 예를 들어, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크, 또는 플래시 드라이브를 포함한다. 입력 디바이스들(108)은 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 바이오메트릭 스캐너, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다. 출력 디바이스들(110)은 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명들, 안테나, 또는 네트워크 연결(예를 들어, 무선 IEEE 802 신호들의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)을 포함하지만, 이에 제한되지 않는다.
입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신하도록 허용한다. 출력 드라이버(114)는 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력 디바이스들(110)에 출력을 발송하도록 허용한다. 입력 드라이버(112) 및 출력 드라이버(114)는 선택적인 컴포넌트들이며, 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는 경우에 디바이스(100)는 동일한 방식으로 동작할 것이라는 점에 유의한다.
본 발명의 특징은 프로세서 코어의 예로서 CU를 사용하여 본 명세서에 기술된다. CU들은 SIMD(single instruction, multiple data) 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청에서 동작들을 수행하도록 구성된 하나 이상의 단일 명령어, 다수의 데이터(SIMD) 유닛들을 포함한다. SIMD 패러다임은 다수의 프로세싱 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고, 따라서 동일한 프로그램을 실행하지만, 상이한 데이터로 해당 프로그램을 실행할 수 있는 것이다. 일례에서, 각각의 SIMD 유닛은 16개의 레인을 포함하고, 여기서 각각의 레인은 SIMD 유닛의 다른 레인과 동일한 시간에 동일한 명령어를 실행하지만 상이한 데이터로 해당 명령어를 실행할 수 있다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우 예측으로 레인을 끌 수 있다. 예측은 또한, 프로그램들을 분기하는(divergent) 제어 흐름으로 실행하기 위해 사용될 수 있다. 더 구체적으로, 제어 흐름이 개별 레인에 의해 수행되는 계산들에 기초하는 조건부 분기들 또는 다른 명령어들을 갖는 프로그램들에 대해, 현재 실행되고 있지 않은 제어 흐름 경로들에 대응하는 레인들의 예측, 및 상이한 제어 흐름 경로들의 직렬 실행은 자의적인 제어 흐름을 가능하게 한다. CU에 의해 제공되는 평행성은 예를 들어 픽셀 값 계산, 정점 변환, 및 다른 그래픽 동작과 같은 그래픽 관련 동작에서 사용되는 행렬 곱셈과 같은 행렬 곱셈에 적합하다.
도 2는 본 개시의 하나 이상의 특징이 구현될 수 있는 도 1에 도시된 프로세서(102)의 예를 도시하는 블록도이다. 도 2에 도시된 바와 같이, 프로세서(102)는 복수의 CU들(202)을 포함한다. 각각의 CU(202)는 대응하는 레벨 N 캐시(204)와 통신하는 레벨 N(예를 들어, 레벨 1) 캐시 제어기(208)를 포함하고 대응하는 레벨 N 캐시(204)를 사용하여 데이터를 처리하도록 구성된다. 대안적으로, 복수의 레벨 N 캐시 제어기(208)(예를 들어, 각각의 CU(202)에 대한 캐시 제어기(208) 또는 CU(202) 그룹과 각각 통신하는 복수의 캐시 제어기(208))가 데이터를 처리하는 데 사용된다.
도 2에 도시된 바와 같이, 프로세서(102)는 또한 레벨 N+1 캐시(206)와 통신하는 레벨 N+1(예를 들어, 레벨 2) 캐시 제어기(210)를 포함하고 레벨 N+1 캐시(206)를 사용하여 데이터를 처리하도록 구성된다. 대안적으로, 하나 이상의 대응하는 레벨 N+1개의 캐시들과 통신하는 복수의 레벨 N+1개의 캐시 제어기들이 데이터를 처리하는 데 사용된다. 도 2에 도시된 바와 같이, 캐시 제어기(210)는 또한 다음 캐시 레벨(예컨대, 레벨 3) 및 각각의 레벨 N 캐시 제어기(208)와 통신한다. 추가적으로 또는 대안적으로, 각각의 CU(202)는 레지스터들 및 스크래치패드 메모리와 같은 상이한 유형들의 메모리(104)와 통신한다.
도 2에 도시된 바와 같이, 각각의 CU(202)는 또한 MAC들(212) 및 MAC들(212)과 통신하는 데이터 압축기(214)를 포함한다. MAC(212)는 행렬들의 부분들의 요소 쌍들의 곱들(예컨대, 근사화된 곱 지수 값들)을 계산하고, 행렬 곱셈 동작들을 실행하기 위해 곱들을 누산(예컨대, 저장)하도록 구성된다. 가장 작은 지수 합들을 갖는 곱으로서 근사화되는 곱의 목표 수는 행렬 곱셈의 내적 계산을 실행하기 위해 MAC(212)에 의해 사용될 곱으로부터 떨어진다.
데이터 압축기(214)는 지수 값들(즉, 지수 합들)로부터, 지수 값들이 유지되어야 하는(즉, 떨어지지 않음), 그들의 비트 값들에 기초하여 MAC(212)에 제공되고, 그들의 최대 유효 비트들로 시작하여, 지수 값들의 목표 수가 결정될 때까지 대응하는 다음 유효 비트들의 세트들을 통해 계속되는 하드웨어 회로부를 포함한다. 데이터 압축기(214)는 또한 행렬 곱셈을 실행하기 위해 MAC(212)에 유지된 지수 값들을 제공하도록 구성된다.
도 3은 본 개시의 특징들에 따라 행렬 곱셈에 대한 데이터를 선택하는 예시적인 방법(300)을 도시하는 흐름도이다.
블록 302에 도시된 바와 같이, 방법(300)은 제1 행렬 A의 데이터의 일부분 및 제2 행렬 B의 데이터의 일부분을 수신하는 단계를 포함한다. 도 5는 본 발명의 특징들에 따른 두 행렬, A 및 B의 부분 행렬 곱셈과 출력 행렬 C의 일례를 도시하는 도면이다. 전술한 바와 같이, 행렬 곱셈 연산은 계산 C = A x B를 포함하며, 여기서 A, B, C는 각각 크기 M x K, K x N, 및 M x N의 행렬이다. 행렬 C의 각각의 요소는 행렬 A의 행과 행렬 B의 열의 내적이다. 예를 들어, 본 개시의 특징에 따르면, 행렬 B의 요소 어레이(502)의 4개의 요소(502(1) 내지 502(4))와, 행렬 B의 어레이(504)의 4개의 해당 요소(504(1) 내지 504(4))의 곱 값을 근사화함으로써 행렬 A와 B의 행렬 곱셈의 일부가 수행되어 행렬 C의 부분 1(P1)에서 결과를 생성한다.
도 5에서의 행렬 A 및 행렬 B의 크기들이 서로 상이하지만, 하나의 행렬 내의 열들의 수가 다른 행렬 내의 행들의 수와 동일한 경우 행렬 곱셈 연산이 행렬들에 대해 수행될 수 있다. 도 5에 도시된 예에서, 행렬 A는 8개의 열들을 포함하고, 행렬 B는 8개의 행들을 포함한다. 행렬들 A 및 B에서 열들 및 행들의 수는 단지 예일 뿐이다. 행렬 곱셈에 대한 일반적인 규칙을 충족하는 임의의 크기의 행렬에 대해, 본 개시내용의 특징에 따라 행렬 곱셈이 수행된다(예를 들어, 행렬 A의 열의 수는 행렬 B에서 행의 수와 동일함).
제1 행렬 및 제2 행렬의 데이터의 부분들은 예를 들어 정수 데이터 유형들(예컨대, int8 포맷) 및 플로트 데이터 유형들(예컨대, BF16 포맷)과 같은 상이한 데이터 유형들의 임의의 수의 요소들을 포함할 수 있다. 각각의 요소를 나타내는 비트들의 수는 플로트 포맷(예컨대, FP32, FP16, BF16) 및 사용되는 정수 포맷(예컨대, int8, int16, int32)에 의존한다. 예를 들어, 플로트 포맷 BF16의 경우, 각각의 요소는 16 비트들로 표현되는 반면, 각각의 지수는 8 비트로 표현된다.
블록 304에 도시된 바와 같이, 방법(300)은 요소 쌍들의 지수들의 합으로서 제1 및 제2 행렬들의 부분들의 요소 쌍들의 곱들의 값들을 근사화하는 단계를 포함한다.
제1 및 제2 행렬들의 데이터의 부분들의 요소들이 플로트 데이터 유형들인 경우, 지수 값들은 각각의 요소의 지수 비트들로부터 단지 추출될 수 있다. 예를 들어, 요소가 BF16 포맷에 있는 경우, 제1 비트는 사인 비트이고, 비트 2 내지 비트 9는 지수 비트들이고 비트 10 내지 16은 가수 비트들이다. 따라서, 지수 값들은 비트 2 내지 비트 9의 값들로부터 추출될 수 있다.
제1 행렬 A 및 제2 행렬 B의 데이터의 하위 부분들이 인트 데이터 유형 포맷(int8)의 8개의 요소들을 포함하는 경우, 지수는 다음과 같이 추출된다: 데이터의 각 하위 부분(Aa[8], Ba[8])의 요소에 대한 절대값을 결정; 각 요소에 대해 삭제될 선행 0의 수를 결정; 각 요소를 1.M * 2e로 표현(여기서 M은 요소 값의 가수이고 e는 요소 값의 지수임); 및 각 요소의 지수 값을 [비트수 -1] - LA로 근사화(여기서 LA는 요소의 앞에 오는 0의 개수임).
예로서, 제1 행렬의 제1 요소의 절대값(Aa[1])이 00001011이면, 4개의 앞 0은 떨어지는 것으로 결정된다. 요소는 1.011 * 2e로 표시되며 A[1]에 대한 지수 값(e)은 [비트 수 -1] - LA = 7 - 4 = 3으로 계산된다. 제2 행렬의 제1 요소의 절대값(Ba[1])이 00101111인 경우, 2개의 앞 0들이 떨어지는 것으로 결정된다. 요소는 1.01111 * 2e로 표시되며 A[1]에 대한 지수 값(e)은 [비트 수 -1] - LB = 7 - 2 = 5로 계산된다. 따라서 A[1]과 B[1]의 근사곱(P)은 14 - (LA + LB) = 14 - 8 = 6으로 결정된다.
제1 행렬 A의 하위 부분의 나머지 7 요소들(A[2-8]) 및 제2 행렬 B의 하위 부분의 대응하는 나머지 7 요소들(B[2-8])의 대략적인 곱을 결정하기 위해 동일한 프로세스가 수행된다. 즉, 제1 행렬 A 및 제2 행렬 B의 요소들의 대응하는 쌍들의 곱들은 2에 기초하여 근사화되어, 제1 행렬 A와 제2 행렬 B의 요소들의 지수들의 합으로 상승된다.
블록 306에 도시된 바와 같이, 방법(300)은 수많은 곱들을 떨어뜨리고 행렬들 A 및 B의 제1 및 제2 부분들의 행렬 곱셈을 유지할 어느 곱들을 결정하는 것을 결정하는 단계를 포함한다. 즉, 곱들은 그들의 지수들의 합에 기초하여 제1 및 제2 행렬들로부터 요소들의 쌍들을 떨어뜨림으로써 본질적으로 떨어지고(즉, 행렬 곱셈을 위해 유지되지 않음), 결과적으로, 요소 쌍들의 곱들 중에서 최소 곱들이 된다. 떨어지지 않은 나머지 곱은 행렬 곱셈을 수행하기 위해 유지된다.
도 4a 내지 도 4d는, 블록 304에서 전술된 바와 같이, 대응하는 요소 쌍들의 지수들의 합에 기초하여 근사화되는, 근사화된 곱 값들의 상이한 어레이들(본 명세서에서 곱 지수 값들로 지칭됨)의 예들을 도시한다. 어느 곱 지수 값들이 유지될 것인지를 결정하고, 이어서, 행렬들 A 및 B의 어느 대응하는 요소들이 도 2의 MAC들(212)에 제공되는지를 나타내는 프로세스가 도 4a 내지 도 4d에 도시된 곱 지수 값들의 어레이들 각각에 대해 설명된다. 단순화 목적들을 위해, 도 4a 내지 도 4d에 예시된 곱 지수 값들의 어레이들은 4 비트 값들이다. 그러나, 본 발명의 특징들은 곱 값들을 보여주는 데 사용되는 임의의 수의 비트들에 대해 구현될 수 있다. 또한, 단순화 목적들을 위해, 8개의 곱 지수 값들(8개의 요소 쌍들에 대응함)의 어레이들이 사용되고, 8개의 요소들 각각으로부터 6개의 목표 수가 사용되고, 곱 지수 값들의 수는 도 4a 내지 도 4d에 도시된 곱 지수 값들의 어레이들에 대해 유지되는 것으로서 사용된다. 그러나, 본 발명의 특징들은 곱 지수 값들의 임의의 목표 수에 대해 구현될 수 있다.
도 4a 내지 도 4d에 도시된 어레이들 각각에 대해, 어느 곱 지수 값들이 유지될 것인지의 결정은 곱 지수 값들에 대해 최대 유효 비트들로 시작하여, 곱 지수 값들의 대응하는 유효성의 비트들의 값들을 합산하고, 곱 지수 값들의 목표 수가 결정될 때까지 합들의 각각을 곱 지수 값들의 목표 수(예컨대, 6)와 비교하는 것을 포함한다. 예를 들어, 도 4a에 도시된 8개의 곱 지수 값들의 어레이에 대해, 8 곱 지수 값들의 MSB들이 합산된다. 이 경우, 8 곱 지수 값들의 MSB들의 합은 6이고, 이는 유지될 6 곱 지수 값들의 목표 수와 동일하다. 따라서, MSB가 1인 6 곱 지수 값들은 유지될 곱 지수 값들(즉, 행렬들 A 및 B의 대응하는 요소들이 유지되어야 하고 MAC들(212)에 제공되어야 하는지를 나타냄)으로서 결정되고, MSB가 0인 2 곱 지수 값들은 곱 지수 값들이 떨어지는 것으로서 결정된다(즉, 행렬들 A 및 B의 어느 대응하는 요소들이 떨어지고 MAC들(212)에 제공되지 않는지를 나타냄).
도 4b에 도시된 8개의 곱 지수 값들의 어레이에 대해, 8 곱 지수 값들의 MSB들의 합은 8이며, 이는 유지될 6 곱 지수 값들의 목표 수보다 크다. MSB들의 합이 6보다 크면, 8 곱 지수 값들의 다음 더 낮은 유효성의 비트들이 합산된다. 이 경우, 상기 8 곱 지수 값들의 다음 더 낮은 유효성의 비트(즉, 제2 비트)의 합은 4와 동일하다. 따라서 "11"로 시작하는 곱 지수 값은 가장 큰 4개의 곱 지수 값으로 식별되어 유지된다(즉, 유지되어 MAC(212)에 제공될 행렬 A의 4개 대응 요소와 행렬 B의 4개 대응 요소를 나타냄). 그러나, 가장 큰 4개의 곱 지수 값은 목표 수인 6보다 2가 작기 때문에, "10"으로 시작하는 곱 지수 값이 식별되고 "10"으로 시작하는 곱 지수 값의 다음 최하위 비트(즉, 제3 비트)가 합산되고, 결과는 이전 합계에 추가된다. 이 경우에, "10"으로 시작하는 곱 지수 값들의 제3 비트들의 합은 2와 동일하며, 이는 이전 합 4에 추가될 때 6의 목표 수와 동일하다. 따라서, "101"로 시작하는 2 곱 지수 값들은 또한 유지될 곱 지수 값들로서 식별된다(즉, 유지되고 MAC들(212)에 제공되는 행렬 A의 2개의 대응하는 요소들 및 행렬 B의 2개의 대응하는 요소들을 나타냄).
도 4c에 도시된 8개의 곱 지수 값들의 어레이에 대해, 8 곱 지수 값들의 MSB들의 합은 8이며, 이는 유지될 6 곱 지수 값들의 목표 수보다 크다. 전술한 바와 같이, MSB들의 합이 6보다 크면, 8 곱 지수 값들의 다음 더 낮은 유효성의 비트들이 합산된다. 이 경우(도 4b에 도시된 곱 지수 값들에 대해 전술된 경우와 동일한), 8개의 곱 지수 값 중 다음으로 낮은 유효성의 비트(즉, 제2 비트)의 합은 4와 같다. 이에 따라 "11"로 시작하는 곱 지수 값이 가장 큰 4개의 곱 지수 값으로 식별되어 유지되지만, 가장 큰 4개의 곱 지수 값은 목표 수인 6보다 2가 작기 때문에 "10"으로 시작하는 곱 지수 값이 식별되고 "10"으로 시작하는 곱 지수 값의 다음 최하위 비트(즉, 제3 비트)가 합산되어 이전 합계 4에 추가된다. 이 경우에, "10"으로 시작하는 곱 지수 값들의 제3 비트들의 합은 3과 동일하며, 이는 4의 이전 합에 추가될 때 7과 동일하며, 이는 6의 목표 수보다 크다. 따라서, "10"으로 시작하는 8 곱 지수 값들의 최하위 비트(즉, 제4 비트)가 합산되고, 이는 다시 3과 동일하고, 이전 합 4에 추가될 때 6의 목표 수보다 더 크다. 합산될 비트들이 없고 이전 합의 총계가 목표 수보다 크면, "10"으로 시작하는 어레이 내의 제1 2 곱 지수 값들이 또한 유지된다.
도 4d에 도시된 8개의 곱 지수 값들의 어레이에 대해, 8 곱 지수 값들의 MSB들의 합은 8이며, 이는 유지될 6 곱 지수 값들의 목표 수보다 크다(도 4b 및 도 4c에 도시된 곱지수 값에 대해 위에서 설명한 경우와 동일). 그러나, 이 경우에, 나머지 비트들 각각은 0이다. 이 경우에, 어레이 내의 제1 6 곱 지수 값들이 유지된다.
도 4a 내지 도 4d와 관련하여 전술된 프로세스는 곱 값들의 임의의 분류(즉, 순서화)를 포함하지 않는데, 이는 그렇지 않으면 하드웨어에서 구현하는 데 비용이 많이 들 것이다.
블록 308에 도시된 바와 같이, 방법(300)은 블록 306에서 전술한 바와 같이, 떨어지는 것으로 결정되지 않는, 대신에 유지되는 것으로 결정되는 데이터(즉, 곱들)를 선택하는 단계를 포함한다. 블록 310에 나타낸 바와 같이, 방법(300)은 유지되는 것으로 결정된 곱으로부터 내적을 결정하는 단계를 포함한다.
또한, 행렬 곱셈 동작들에 의해 생성된 정보는 디스플레이 디바이스(예컨대, 도 1의 출력 디바이스(110))에 디스플레이될 수 있다.
본 명세서의 개시내용에 기초하여 많은 변형들이 가능하다는 것이 이해되어야 한다. 특징들 및 요소들이 특정 조합으로 위에서 설명되었지만, 각각의 특징 또는 요소는 다른 특징들 및 요소들 없이 단독으로 또는 다른 특징들 및 요소들을 갖거나 갖지 않는 다양한 조합으로 사용될 수 있다.
제공된 방법들은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서 구현될 수 있다. 적합한 프로세서들은, 예를 들어, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서들, DSP 코어와 연관된 하나 이상의 마이크로프로세서들, 제어기, 마이크로제어기, ASICs(Application Specific Integrated Circuits), FPGAs(Field Programmable Gate Arrays) 회로들, 임의의 다른 유형의 집적 회로(IC), 및/또는 상태 머신을 포함한다. 이러한 프로세서들은 프로세싱된 하드웨어 기술 언어(HDL) 명령어들의 결과들 및 넷리스트들을 포함하는 다른 중간 데이터(이러한 명령어들은 컴퓨터 판독가능 매체 상에 저장될 수 있음)를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 프로세싱의 결과는 본 개시의 특징을 구현하는 프로세서를 제조하기 위해 반도체 제조 공정에 사용되는 마스크워크일 수 있다.
본 명세서에 제공된 방법들 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독가능 스토리지 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능 스토리지 매체의 예로는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 매체, CD-ROM 디스크 및 디지털 다목적 디스크(DVD)와 같은 광학 매체를 포함한다.

Claims (20)

  1. 처리 디바이스로서,
    데이터를 저장하도록 구성된 메모리; 및
    프로세서를 포함하고, 상기 프로세서는,
    제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하고;
    제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하고;
    제3 행렬에 대한 값들을 결정하도록 구성되며, 이는
    상기 제1 및 제2 행렬들의 요소들의 쌍들의 곱들을 상기 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 상기 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리는 것; 및
    상기 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행하는 것에 의하는, 처리 디바이스.
  2. 제1항에 있어서, 떨어지는 상기 개수 곱들은 상기 최소 대응하는 지수 합들을 갖는 것으로 근사화되는, 처리 디바이스.
  3. 제2항에 있어서, 복수의 승수 누산기(MAC)들을 더 포함하고,
    상기 떨어진 곱들의 수는 행렬 곱셈을 수행하는 데 사용되는 MAC들의 수를 감소시키는, 처리 디바이스.
  4. 제1항에 있어서, 상기 프로세서는 행렬 곱셈을 수행하는 데 사용할 곱을 결정하도록 구성되며, 이는
    상기 곱 지수들에 대한 최대 유효 비트들로 시작하여, 상기 곱 지수들의 대응하는 유효성의 비트들의 값들을 합산하는 것, 및
    상기 곱 지수 값들의 목표 수가 결정될 때까지 상기 합들의 각각을 곱 지수들의 목표 수와 비교하는 것에 의하는, 처리 디바이스.
  5. 제1항에 있어서, 상기 제1 및 제2 복수의 요소들은 정수 데이터 유형 포맷인, 처리 디바이스.
  6. 제1항에 있어서, 상기 프로세서는, 곱 지수를 추출하도록 구성되며, 이는
    상기 제1 및 제2 복수의 요소들의 절대값들을 결정하는 것,
    각각의 요소에 대해, 앞 0들의 수를 결정하는 것, 및
    각각의 요소에 대해, 지수 값이 (요소 비트들의 수 -1) 및 요소의 앞 0들의 수 사이의 차이로서 근사화하는 것에 의하는, 처리 디바이스.
  7. 제6항에 있어서, 상기 프로세서는 각각의 요소를 1.M*2e로 나타냄으로써 상기 곱 지수들을 추가로 추출하도록 구성되고, M은 가수이고, e는 지수 값인, 처리 디바이스.
  8. 제1항에 있어서, 상기 제1 복수의 요소들 및 상기 제2 복수의 요소들은 플로트 데이터 유형 포맷인, 처리 디바이스.
  9. 제1항에 있어서, 떨어지는 상기 개수 곱들은 런타임에서 결정된 곱들의 목표 수인, 처리 디바이스.
  10. 제1항에 있어서, 디스플레이 디바이스를 더 포함하고,
    상기 행렬 곱셈으로부터 생성된 정보는 상기 디스플레이 디바이스 상에 디스플레이되는, 처리 디바이스.
  11. 행렬 곱셈 데이터 선택 방법으로서,
    제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하는 단계;
    제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하는 단계;
    제3 행렬에 대한 값들을 결정하는 단계로서, 이는
    상기 제1 및 제2 행렬들의 요소들의 쌍들의 곱들을 상기 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 상기 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리는 단계; 및
    상기 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행하는 단계에 의하는, 방법.
  12. 제11항에 있어서, 떨어지는 상기 개수 곱들은 상기 최소 대응하는 지수 합들을 갖는 것으로 근사화되는, 방법.
  13. 제11항에 있어서, 행렬 곱셈을 수행하는 데 사용할 곱들을 결정하는 단계를 더 포함하며, 이는
    상기 곱 지수들에 대한 최대 유효 비트들로 시작하여, 상기 곱 지수들의 대응하는 유효성의 비트들의 값들을 합산하는 단계, 및
    상기 곱 지수들의 목표 수가 결정될 때까지 상기 합들의 각각을 곱 지수들의 목표 수와 비교하는 단계에 의하는, 방법.
  14. 제11항에 있어서, 상기 제1 및 제2 복수의 요소들은 정수 데이터 유형 포맷인, 방법.
  15. 제14항에 있어서, 지수를 추출하는 단계를 더 포함하며, 이는
    상기 제1 및 제2 복수의 요소들의 절대값들을 결정하는 단계,
    각각의 요소에 대해, 앞 0들의 수를 결정하는 단계, 및
    각각의 요소에 대해, 지수 값이 (요소 비트들의 수 -1) 및 요소의 앞 0들의 수 사이의 차이로서 근사화하는 단계에 의하는, 방법.
  16. 제15항에 있어서, 각각의 요소를 1.M * 2e로 나타냄으로써 지수들을 추출하는 단계로서, M은 가수이고, e는 지수 값인 단계를 더 포함하는, 방법.
    [청구항 16]
    제11항에 있어서, 상기 제1 복수의 요소들 및 상기 제2 복수의 요소들은 플로트 데이터 유형 포맷인, 방법.
  17. 제11항에 있어서, 떨어지는 상기 개수 곱들은 런타임에서 결정된 곱들의 목표 수인, 방법.
  18. 제11항에 있어서, 상기 행렬 곱셈으로부터 생성된 정보가 디스플레이되는, 방법.
  19. 컴퓨터로 하여금 행렬 곱셈 데이터 선택 방법을 실행하게 하기 위한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어들은,
    제1 복수의 요소들을 포함하는 제1 행렬의 데이터의 일부를 수신하는 단계;
    제2 복수의 요소들을 포함하는 제2 행렬의 데이터의 일부를 수신하는 단계;
    제3 행렬에 대한 값들을 결정하는 단계로서, 이는
    상기 요소들의 쌍들의 곱들을 상기 요소들의 쌍들의 지수들의 합으로서 근사화하는 것에 기초하여 상기 제1 및 제2 행렬들의 요소들의 쌍들의 곱들로부터 다수의 곱들을 떨어뜨리는 단계; 및
    상기 제1 및 제2 행렬들의 요소들의 쌍들의 나머지 곱들에 대한 행렬 곱셈을 수행하는 단계에 의하는, 비일시적 컴퓨터 판독가능 매체.
  20. 제19항에 있어서, 떨어지는 상기 개수 곱들은 상기 최소 대응하는 지수 합들을 갖는 것으로 근사화되는, 비일시적 컴퓨터 판독가능 매체.
KR1020237035315A 2021-03-26 2022-03-11 행렬 곱하기 동작들에 대한 행렬의 근사화 Pending KR20230159489A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/214,784 2021-03-26
US17/214,784 US12197533B2 (en) 2021-03-26 2021-03-26 Approximation of matrices for matrix multiply operations
PCT/US2022/020065 WO2022203883A1 (en) 2021-03-26 2022-03-11 Approximation of matrices for matrix multiply operations

Publications (1)

Publication Number Publication Date
KR20230159489A true KR20230159489A (ko) 2023-11-21

Family

ID=83363436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237035315A Pending KR20230159489A (ko) 2021-03-26 2022-03-11 행렬 곱하기 동작들에 대한 행렬의 근사화

Country Status (6)

Country Link
US (1) US12197533B2 (ko)
EP (1) EP4315044A4 (ko)
JP (1) JP2024510625A (ko)
KR (1) KR20230159489A (ko)
CN (1) CN116997888A (ko)
WO (1) WO2022203883A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116303722B (zh) * 2023-03-21 2025-08-05 昆仑芯(北京)科技有限公司 数据处理方法及装置、设备和介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051124B2 (en) 2007-07-19 2011-11-01 Itt Manufacturing Enterprises, Inc. High speed and efficient matrix multiplication hardware module
US8620984B2 (en) 2009-11-23 2013-12-31 Xilinx, Inc. Minimum mean square error processing
WO2011063824A1 (en) 2009-11-30 2011-06-03 Martin Raubuch Microprocessor and method for enhanced precision sum-of-products calculation on a microprocessor
US8838664B2 (en) 2011-06-29 2014-09-16 Advanced Micro Devices, Inc. Methods and apparatus for compressing partial products during a fused multiply-and-accumulate (FMAC) operation on operands having a packed-single-precision format
US9829956B2 (en) * 2012-11-21 2017-11-28 Nvidia Corporation Approach to power reduction in floating-point operations
US20140331014A1 (en) 2013-05-01 2014-11-06 Silicon Graphics International Corp. Scalable Matrix Multiplication in a Shared Memory System
US10083250B2 (en) 2013-05-22 2018-09-25 International Business Machines Corporation Simplification of large networks and graphs
US9384168B2 (en) * 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US9697176B2 (en) * 2014-11-14 2017-07-04 Advanced Micro Devices, Inc. Efficient sparse matrix-vector multiplication on parallel processors
US9558156B1 (en) 2015-11-24 2017-01-31 International Business Machines Corporation Sparse matrix multiplication using a single field programmable gate array module
US9600194B1 (en) 2015-11-25 2017-03-21 International Business Machines Corporation Integrating sign extensions for loads
US10747501B2 (en) 2017-08-31 2020-08-18 Qualcomm Incorporated Providing efficient floating-point operations using matrix processors in processor-based systems
US10482156B2 (en) * 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
US10732929B2 (en) 2018-01-09 2020-08-04 Samsung Electronics Co., Ltd. Computing accelerator using a lookup table
US10528642B2 (en) 2018-03-05 2020-01-07 International Business Machines Corporation Multiple precision integer multiple by matrix-matrix multiplications using 16-bit floating point multiplier
US11645493B2 (en) 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
US10599429B2 (en) 2018-06-08 2020-03-24 Intel Corporation Variable format, variable sparsity matrix multiplication instruction
US20220075598A1 (en) 2018-09-23 2022-03-10 Groq, Inc. Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
KR102340412B1 (ko) 2018-11-02 2021-12-17 울산과학기술원 스토캐스틱 연산을 위한 로그-양자화된 곱셈 및 누적기와 이를 포함하는 가속기
KR102774162B1 (ko) 2019-05-16 2025-03-04 삼성전자주식회사 전자 장치 및 이의 제어 방법
US11500962B1 (en) * 2020-06-30 2022-11-15 Amazon Technologies, Inc. Emulating fine-grained sparsity in a systolic array
US20220108157A1 (en) * 2020-10-05 2022-04-07 Numenta, Inc. Hardware architecture for introducing activation sparsity in neural network
US11150298B1 (en) 2020-12-11 2021-10-19 International Business Machines Corporation Converting formal verification testbench drivers with nondeterministic inputs to simulation monitors
CN112835551B (zh) * 2021-03-09 2022-06-28 上海壁仞智能科技有限公司 用于处理单元的数据处理方法、电子设备和计算机可读存储介质

Also Published As

Publication number Publication date
JP2024510625A (ja) 2024-03-08
US20220309126A1 (en) 2022-09-29
CN116997888A (zh) 2023-11-03
EP4315044A4 (en) 2025-02-12
WO2022203883A1 (en) 2022-09-29
EP4315044A1 (en) 2024-02-07
US12197533B2 (en) 2025-01-14

Similar Documents

Publication Publication Date Title
US20240362471A1 (en) Method and apparatus for processing convolution operation in neural network using sub-multipliers
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
US20190339939A1 (en) Operation processing device, information processing device, and information processing method
US8239438B2 (en) Method and apparatus for implementing a multiple operand vector floating point summation to scalar function
WO2018103736A1 (en) Systems and methods for data management
US8239439B2 (en) Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor
US8356160B2 (en) Pipelined multiple operand minimum and maximum function
US12039288B2 (en) Method and apparatus with data processing
US12125124B1 (en) Matrix transpose hardware acceleration
US10528642B2 (en) Multiple precision integer multiple by matrix-matrix multiplications using 16-bit floating point multiplier
US10185560B2 (en) Multi-functional execution lane for image processor
KR20240063137A (ko) 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델
KR20230159489A (ko) 행렬 곱하기 동작들에 대한 행렬의 근사화
JP2006039790A (ja) ブロードキャスト型並列処理のための演算処理装置
CN115269003A (zh) 数据处理方法及装置、处理器、电子设备、存储介质
US12072952B2 (en) Data compressor for approximation of matrices for matrix multiply operations
US20230012127A1 (en) Neural network acceleration
US20250245290A1 (en) Arithmetic device
US12153930B2 (en) Forward tensor and activation scaling for lower precision neural networks
US20250272353A1 (en) Methods and apparatus for computing pooling operations on a graphics processing unit (gpu) architecture
US20250199760A1 (en) Systems and methods for performing floating point mac operations with improved cim
US20220283778A1 (en) Method and device for encoding
US10037191B2 (en) Performing a comparison computation in a computer system
CN117742786A (zh) 通过存储器处理器执行的计算方法和存储器装置
CN119156618A (zh) 在机器学习硬件加速器处利用数据稀疏性

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20231016

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20250305

Comment text: Request for Examination of Application