KR20170135752A - 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 - Google Patents

효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 Download PDF

Info

Publication number
KR20170135752A
KR20170135752A KR1020170066981A KR20170066981A KR20170135752A KR 20170135752 A KR20170135752 A KR 20170135752A KR 1020170066981 A KR1020170066981 A KR 1020170066981A KR 20170066981 A KR20170066981 A KR 20170066981A KR 20170135752 A KR20170135752 A KR 20170135752A
Authority
KR
South Korea
Prior art keywords
requests
idp
weight
unit
transformed
Prior art date
Application number
KR1020170066981A
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 KR20170135752A publication Critical patent/KR20170135752A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0463Neocognitrons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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/15Correlation function computation including computation of convolution operations
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Abstract

시스템 및 대응되는 방법은 입력 특징 맵으로부터 복수의 출력 특징맵들을 생성할 수 있다. 시스템은 제 1 입력 데이터 경로(IDP) 유닛, 요청 어셈블리 유닛(RAU) 및 곱셈 누적연산 어레이(MAA)를 포함할 수 있다. IDP 유닛은 제 1 입력 특징 맵을 위노그래드 도메인으로 변환하고, 제 1 복수의 요청들을 생성할 수 있다. 제 1 복수의 요청들 각각은 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 1 복수의 0이 아닌 가중치들에 대한 것일 수 있다. RAU는 상기 제 1 복수의 요청들을 수신할 수 있다. MAA는 각각의 입력 행렬의 대응되는 원소들에 제 1 복수의 0이 아닌 가중치들을 적용함에 기초하여 제 1 출력 특징 맵을 위한 제 1 출력 행렬들을 병렬적으로 생성할 수 있다.

Description

효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계{EFFICIENT SPARSE PARALLEL WINOGRAD-BASED CONVOLUTION SCHEME}
본 개시는 컨볼루셔널 뉴럴 네트워크(Convolutional Neural Network: CNN)에 관한 것으로, 더욱 구체적으로는, 컨볼루션들의 위노그래드 기반 (Winograd-based) 구현(implementation)에 있어서 병렬적으로 0 값을 갖는 가중치들을 효율적으로 스킵하는 방법 및 장치에 관한 것이다.
컨볼루션 연산들(operations)은 추론(inference) 과정 및 네트워크 학습 과정에서 수행되는 역전파(backpropagation) 과정 모두에서 CNN을 실행하기 위해 요구되는 연산의 약 90%를 차지할 수 있다. 위노그래드 기반 컨볼루션 방식은 CNN에서 컨볼루션 연산들을 실행하기 위해 요구되는 곱셈 연산의 개수를 상당히 감소시킬 수 있다. 위노그래드 변환(transformation)에 의해 생성되는 출력 행렬의 크기 및 필터 커널의 크기에 따라, 감소는 곱셈 연산들의 개수의 2 배에서 4 배 사이가 될 수 있으며, 경우에 따라서는 훨씬 더 큰 감소가 있을 수 있다. 그러나, 곱셈 연산들의 감소는, (입력 특징 맵들로부터 독출된) 입력 데이터를 상당한 덧셈 연산들이 요구되는 위노그래드 도메인으로 변환함에 따른 약간의 오버헤드를 발생시킬 수 있다. 또한, 가중치 커널들은 위노그래드 도메인으로 변환되어야 하지만, 이는 일반적으로 오프라인(offline)으로 한번 수행될 수 있다. 변환된 데이터 및 변환된 가중치 커널 행렬의 원소 별(element-wise) 곱셈이 수행된 후에 마지막 변환이 요구되지만, 이는 컨볼루션된(convolved) 입력 특징 맵들 모두로부터의 결과들을 더한 후에 수행될 수 있다. 따라서, 마지막 변환 동작은 오버헤드가 전체적인 동작들의 매우 작은 일부에 해당되도록 분할될(amortized) 수 있다.
표준 컨볼루션 커널들과 마찬가지로, 위노그래드 변환된 가중치 행렬에 있는 많은 퍼센트의 가중치들은 프루닝(예를 들어, 0으로 설정)될(pruned) 수 있다. 예를 들어, 가중치들의 50%가 0으로 설정될 수 있으며, 이 경우 프루닝(pruning) 후에 남아있는 가중치 커널 행렬 원소들은 전체적인 뉴럴 네트워크의 정확도를 유지하기 위해 재학습될 수 있다.
최근, 컨볼루션-레이어 처리의 최선의 구현(implementations)은 그래픽 프로세싱 유닛(Graphic Processing Unit: GPU)들에서 수행된다. 하지만, GPU들이 효율적으로 병렬 0-값 가중치 스키핑(0-value weight skipping)을 수행하는 것은 쉽지 않을 수 있다. GPU들은 또한 위노그래드-변환된 가중치들의 프루닝을 포함하지 않으므로, 임의의 0-값 가중치들을 스키핑하는 이점을 얻기 위해 가중치 커널 행렬들은 상대적으로 적은 스파시티(SPARSITY)를 가질 수 있다.
본 개시는 컨볼루션들의 위노그래드 기반 (Winograd-based) 구현 (implementation)에 있어서 병렬적으로 0 값을 갖는 가중치들을 효율적으로 스킵하는 방법 및 장치를 제공하고자 한다.
일 실시예는 제 1 입력 데이터 경로(Input Data Path: IDP) 유닛에 의해, 제 1 입력 특징 맵을 위노그래도 도메인으로 변환하는 단계를 포함하는 방법을 제공할 수 있다. 상기 변환된 제 1 입력 특징 맵은 복수의 입력 패치들을 포함할 수 있고, 상기 제 1 복수의 입력 패치들 각각은 복수의 원소들을 포함할 수 있다. 또한, 상기 방법은 상기 제 1 IDP 유닛에 의해, 제 1 복수의 요청들을 생성하는 단계를 포함할 수 있다. 상기 제 1 복수의 요청들 각각은 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 1 복수의 0이 아닌 가중치들에 대한 것일 수 있다. 상기 방법은 제 1 요청 어셈블리 유닛(Request Assembly Unit: RAU)에 의해, 상기 제 1 복수의 요청들을 수신하는 단계를 포함할 수 있다. 상기 방법은 제 1 곱셈-누적연산 어레이(Multiply-Accumulate Array: MAA)에 의해, 각각의 입력 행렬의 대응되는 원소들에 상기 제 1 복수의 0이 아닌 가중치들을 적용함에 기초하여 제 1 출력 맵을 위한 복수의 출력 행렬들을 생성하는 단계를 포함할 수 있다. 일 실시예에서, 상기 방법은 상기 제 1 IDP 내의 위치 결정기에 의해, 상기 제 1 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 값을 갖는 가중치의 위치를 결정하는 단계를 포함할 수 있다. 상기 제 1 IDP 유닛에 의해, 상기 제 1 복수의 요청들을 생성하는 단계는, 상기 제 1 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 1 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 1 복수의 요청들을 상기 RAU로 제공하는 단계 및 상기 제 1 변환된 가중치 커널 내의 적어도 하나의 0 값을 갖는 가중치의 상기 위치에 대응되는 요청을 스킵하는 단계를 포함할 수 있다.
일 실시예는 입력 특징 맵으로부터 복수의 출력 특징 맵들을 생성하는 시스템을 제공할 수 있다. 상기 시스템은 IDP, RAU 및 MAA를 포함할 수 있다. IDP 유닛은 제 1 입력 특징 맵을 위노그래드 도메인으로 변환할 수 있다. 상기 변환된 제 1 입력 특징 맵은 제 1 복수의 입력 행렬들을 포함할 수 있고, 상기 제 1 복수의 입력 패치들 각각은 복수의 원소들을 포함할 수 있다. 또한, 상기 제 1 IDP 유닛은, 제 1 복수의 요청들을 생성할 수 있다. 상기 제 1 복수의 요청들 각각은 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 1 복수의 0이 아닌 가중치들에 대한 것일 수 있다. 상기 RAU는 상기 제 1 IDP 유닛과 연결되어 상기 제 1 복수의 요청들을 수신할 수 있다. 상기 MAA는, 각각의 입력 행렬의 대응되는 원소들에 상기 제 1 복수의 0이 아닌 가중치들을 적용함에 기초하여 제 1 출력 맵을 위한 복수의 출력 행렬들을 생성할 수 있다. 일 실시예에서, 상기 시스템은 상기 제 1 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 값을 갖는 가중치의 위치를 결정하는 위치 결정기를 더 포함할 수 있다. 상기 제 1 IDP 유닛은, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 1 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 1 복수의 요청들을 상기 RAU로 제공할 수 있다. 또한, 상기 제 1 IDP 유닛은 상기 제 1 변환된 가중치 커널 내의 적어도 하나의 0 값을 갖는 가중치의 상기 위치에 대응되는 요청을 스킵할 수 있다.
다음의 섹션에서, 본 개시의 측면들은 도면들에 도시된 예시적인 실시예들을 참조하여 설명될 것이다.
도 1은 n은 2 이상의 정수일 때, n개의 8x8 특징 맵들에 적용된 위노그래드 변환을 도시한 도면이다.
도 2는 일부 실시예에 따른 출력 맵 패치를 형성하기 위한 n개의 위노그래드-변환된 특징-맵 행렬들을 효율적으로 컨볼루션하는 시스템 아키텍처의 예시적인 실시예를 도시한 도면이다.
도 3은 일부 실시예에 따른 곱셈-누적 연산 어레이(Multiply-Accumulate Array: MAA) 내의 요청-어셈블리 유닛(Request-Assembly Unit: RAU)의 예시를 도시하는 도면이다.
도 4는 일부 실시예에 따른 시스템 아키텍처의 병렬 특성(nature)과 관련된 추가적인 세부사항(details)의 예시를 나타내는 도면이다.
도 5는 일부 실시예에 따른 컨볼루션들의 위노그래드-기반 수행에 있어 병렬적으로 0-값의 가중치들을 효율적으로 스킵하는 시스템을 형성하는 하나 이상의 집적 회로들 (칩들)을 포함하는 전자 기기를 나타내는 도면이다.
다음의 상세한 설명에서, 본 개시의 충분한 이해를 돕기 위해 많은 구체적인 세부사항들이 설명될 것이다. 하지만, 해당 기술분야의 통상의 지식을 가진 자는 개시된 측면들이 구체적인 세부사항들 없이 실시될 수 있음을 이해할 것이다. 다른 예시들에 있어서, 주지된(well-known) 방법들, 절차들(procedures), 컴포넌트들 및 회로들은 본 개시에 따른 주제를 모호하게 하지 않기 위해 상세하게 설명되지 않았다.
본 명세서에서 “하나의 실시예” 또는 “일 실시예”라는 언급(reference)은 상기 실시예와 관련되어 설명된 특정한 특징, 구조 또는 특성이 본 명세서에서 개시된 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 따라서, 본 명세서 전반에 걸쳐 다양한 부분에서 “하나의 실시예에서” 또는 “일 실시예에서” 또는 “일 실시예에 따른”이라는 표현은 반드시 모두 동일한 실시예를 지칭하는 것이 아닐 수 있다. 또한, 상기 특징들, 구조들 또는 특성들은 하나 이상의 실시예들에서 임의의 적절한 방식으로 결합될 수 있다. 이 관점에서, 본 명세서에서 사용되는 “예시적인”이라는 용어는 “예, 예시 또는 실례의 역할을 하는 것”을 의미할 수 있다. “예시적인”것으로 본 명세서에 기재된 임의의 실시예는 반드시 다른 실시예보다 바람직하거나 유리한 것으로 해석되어서는 안 된다. 또한, 본 명세서에서 논의되는 문맥(context)에 따라, 단수 형태의 용어는 대응되는 복수 형태를 포함할 수 있고, 복수 형태의 용어는 대응되는 단수 형태를 포함할 수 있다. (구성도를 포함하여) 본 명세서에 도시되고 논의되는 다양한 도면들은 단지 예시적인 목적을 위한 것이며, 실제 척도로 그려진 것은 아니라는 점에 유의해야 한다. 마찬가지로, 다양한 파형 및 시기 선도들은 오로지 예시적인 목적을 위해 도시된다. 예를 들어, 구성요소들 중 일부의 치수는 명확성을 위해 다른 구성요소들보다 과장될 수 있다. 또한, 적절한 것으로 간주되는 경우, 참조 부호는 대응되거나 유사한 원소들을 나타내기 위해 도면들 간에 반복될 수 있다.
본 명세서에서 이용되는 전문용어(terminology)는 단지 특정 예시적인 실시예들을 설명하기 위한 목적으로 이용되는 것이며, 청구된 주제를 한정하려는 것은 아니다. 본 명세서에서 사용된 단수 형태 “a”, “an” 및 “the”는 문맥상 명확하게 다른 경우를 나타내지 않는 한 복수의 형태들도 포함할 수 있다. 본 명세서에서 사용되는 '구성된다' 또는 '포함한다' 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 본 명세서에서 사용되는 “제 1” 또는 “제 2” 등과 같이 서수를 포함하는 용어는 명사들을 위한 라벨(label)로 이용되며, 그러한 것으로 명시적으로 정의되지 않는 한 임의의 종류의 순서(예를 들어, 공간의, 시간의, 논리적인 순서 등)를 암시하지 않는다. 또한, 동일하거나 유사한 기능을 갖는 부분들, 컴포넌트들, 블록들, 회로들, 유닛들 또는 모듈들을 지칭하기 위해 둘 이상의 도면에 걸쳐 동일한 참조부호가 사용될 수 있다. 그러나, 그러한 사용은 단지 설명의 단순화 및 논의의 용이함을 위해서만 이용된다. 그러한 컴포넌트들 또는 유닛들의 구조 또는 구조적 세부사항들은 모든 실시예들에 걸쳐 동일하다거나 그렇게 공통적으로 지칭되는 부분들/모듈들이 본 명세서에 개시된 특정 실시예들을 설명하기 위한 유일한 방법이라는 것을 의미하지는 않는다.
다르게 정의되지 않는 한, 본 명세서에서 이용되는 (기술적 및 과학적 용어들을 포함하는) 모든 용어들은 해당 기술분야에서 통상의 지식을 가진 자에 의해 공통적으로 이해되는 의미와 동일한 의미를 갖는다. 예를 들어, 본 명세서에서 이용되는 “mod”라는 용어는 “modulo”를 의미한다. 일반적으로 이용되는 사전들에서 정의된 용어와 같은 용어들은 관련된 기술의 문맥에서의 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 그렇게 정의하지 않는 한 이상적이거나 지나치게 형식적인 의미로 해석되지 않아야 할 것이다.
본 명세서에서 이용되는 “모듈”이라는 용어는 모듈과 관련되어 본 명세서에서 설명된 기능을 제공하기 위한 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합을 지칭할 수 있다. 본 명세서에서 임의의 구현 예에 적용되는, “소프트웨어”라는 용어는 소프트웨어 패키지, 코드 및/또는 명령어 집합 또는 명령어들로 구현될 수 있다. 본 명세서에서 임의의 구현 예에 적용되는, “하드웨어”라는 용어는 예를 들어, 단일 회로 또는 임의의 조합으로, 하드웨어에 내장된 회로, 프로그래밍할 수 있는 회로, 스테이트-머신(state-machine) 회로 및/또는 프로그래밍할 수 있는 회로에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 모듈들은 집합적으로 또는 개별적으로, 집적 회로(integrated circuit: IC), 시스템-온-칩(System-on-Chip: SoC) 등과 같은, 더 큰 시스템의 일부를 형성하는 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있으나, 이에 제한되지 않는다.
본 명세서에서 이용되는 “모듈”이라는 용어는 모듈과 관련되어 본 명세서에서 설명된 기능을 제공하기 위한 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합을 지칭할 수 있다. 본 명세서에서 임의의 구현 예에 적용되는, “소프트웨어”라는 용어는 소프트웨어 패키지, 코드 및/또는 명령어 집합 또는 명령어들로 구현될 수 있다. 본 명세서에서 임의의 구현 예에 적용되는, “하드웨어”라는 용어는 예를 들어, 단일 회로 또는 임의의 조합으로, 하드웨어에 내장된 회로, 프로그래밍할 수 있는 회로, 스테이트-머신(state-machine) 회로 및/또는 프로그래밍할 수 있는 회로에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 모듈들은 집합적으로 또는 개별적으로, 집적 회로(integrated circuit: IC), 시스템-온-칩(System-on-Chip: SoC) 등과 같은, 더 큰 시스템의 일부를 형성하는 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있으나, 이에 제한되지 않는다.
일 실시예에 따르면, 각각의 입력 유닛이 하나의 입력 특징 맵에 대응되는, 다수의 입력 유닛들은 입력 특징 맵들 및 대응되는 필터 커널들을 컨볼루션할 수 있고, 그 결과들은 다수의 출력 특징 맵들(output feature maps: OFMs) 생성하기 위해 합산될 수 있다. 입력 특징 맵들 각각에 있어서, 다수의 패치들은 예를 들어, 위노그래드 도메인으로 변환될 수 있다. 예를 들어, 16개의 2X2 패치들은 각각의 입력 특징 맵에서 위노그래드 도메인으로 변환되어 입력 특징 맵의 8X8 영역을 구성할 수 있다. 이 후, 각각의 입력 특징 맵들 각각은 각각 다른 필터 커널과 컨볼루션될 수 있다. 필터 커널은 오프라인에서 위노그래드 도메인으로 변환되고, 해당 도메인에서 프루닝될 수 있다. 따라서, 변환된 가중치들의 일부가 0 값을 가질 수 있다. 각각의 개별적인 필터 커널에서, 0 값을 갖는 가중치들은 각각 다른 위치에 있을 수 있다. 컨볼루션들은 변환된 입력 패치 원소들과 변환된 가중치 값들을 원소 별로 곱함으로써 수행될 수 있다. 각각의 입력 특징 맵에서, 원소 별 곱셈들은 사이클 당 오직 하나의 변환된 가중치를 모든 변환된 데이터 행렬들에 적용함으로써 수행될 수 있다. 한 번에 하나의 가중치를 적용하는 과정을 변환된 필터 커널의 0이 아닌 값을 갖는 가중치들에 대해 반복 적용함으로써, 0 값을 갖는 가중치들의 처리는 스킵될 수 있다. 각각의 가중치는 원소 별 곱셈 연산에서 2차원(2D) 위치와 연관될 수 있다.
예를 들어, 필터 커널에서 (1,3) 위치에 있는 가중치 값은 원소 (1,3)을 계산하기 위해 이용될 수 있고, (1,3) 위치에 있는 변환된 입력 데이터 원소에 적용될 수 있다. 16개의 입력 패치들이 있는 경우, 가중치는 동일한 사이클에서 모든 16개의 패치들의 (1,3) 위치에 있는 데이터 원소들에 적용될 수 있고, (1,3) 위치에 대응되는 16개의 누산기(accumulators)에 합산될 수 있다. 각각 다른 커널과 함께 병렬적으로 처리되는 다수의 입력 특징 맵들이 있기 때문에, 이 과정은 예를 들어, 8 번 되풀이될 수 있다. 한 사이클에서 하나의 0이 아닌 값을 갖는, 변환된 가중치는 대응되는 입력 특징 맵의 대응되는 원소에 적용될 수 있다. 하나의 입력-특징-맵 필터 커널은 예를 들어, (1,3) 위치에 처리할 0이 아닌 가중치를 가질 수 있는 반면, 또 다른 입력-특징-맵 필터 커널은 (2,2) 위치에 0이 아닌 가중치를 가질 수 있다. 동일한 사이클에서, 요청들은 두 개의 다른 위치들에 있는 0이 아닌 가중치들을 적용하기 위해 발행(issue)될 수 있다. 나머지 6개의 입력 특징 맵들 유닛들은 일반적으로, 각각의 가중치 커널들의 각각 다른 2D 위치들에 0 값을 가지므로, 다른 위치들에 있는 0이 아닌 가중치들을 적용할 것이다.
(예를 들어, (1,3) 위치에 있는) 주어진 출력 원소에 대한 모든 입력 특징 맵들로부터의 모든 기여들(contributions)은 입력 유닛들에 의해 동일한 사이클에서 처리될 수 있다. 입력 유닛들은 8개의 가중치들을 (각각 다른 입력 특징 맵으로부터의) 8개의 입력들에 적용하고, 그 결과들을 합산하며, 그 결과들을 대응되는 누산기(앞선 예시에 있어서 (1,3) 위치에 대응되는 누산기)에 더할 수 있다. 기여들은 동일한 출력 원소를 업데이트하는 것이기 때문에, 모든 입력 특징 맵들에 대해 처리되는 가중치 위치(앞선 예시에 있어 (1,3) 위치)는 동일할 수 있다.
가중치들은 필터 커널의 동일한 위치에 대해 처리되고, 입력 유닛들은 각각 다른 위치들에 대한 가중치들을 적용하기 위한 요청들을 만들기 때문에, 요청 어셈블리 유닛은 다수의 사이클에 걸친 서로 다른 요청들을 각각의 사이클에서 오직 하나의 위치에 대한 가중치들을 처리하는 더 큰 요청들로 결합 및 재배열할 수 있다. 제 1 사이클에서, 하나의 입력 유닛은 (1,3) 위치에 있는 가중치의 처리를 요청할 수 있고, 제 2 입력 유닛은 (0,1) 위치에 있는 가중치의 처리를 요청할 수 있다. 제 2 사이클에서, 제 1 입력 유닛은 (0,1) 위치에 있는 가중치의 처리를 요청할 수 있고, 제 2 입력 유닛은 (1,3) 위치에 있는 가중치의 처리를 요청할 수 있다. 이에 대응하여, 요청-어셈블리 유닛은 입력 요청들을 재배열하여 한 사이클에서 (1,3) 위치에 있는 가중치들이 처리되고, 그 다음의 사이클에서 (0,1) 위치에 있는 가중치들이 처리되도록 할 수 있다. 다수의 출력 특징 맵들은 입력 특징 맵들이 병렬적으로 처리됨으로써 다수의 입력 특징 맵들로부터 생성될 수 있다.
또 다른 실시예에 따르면, 다수의 입력 특징 맵들은 병렬적으로 컨볼루션되고, 합산되어 하나의 출력 특징 맵을 생성할 수 있다. 각각의 입력 특징 맵 및 대응되는 변환된 가중치 행렬은 IDP 유닛에 의해 처리될 수 있다. 병렬적으로 8개의 입력 특징 맵들을 컨볼루션하는 시스템 구조(configuration)에 있어서, 각각이 8개의 입력 특징 맵들 및 대응되는 커널 가중치들을 처리하는, 8개의 IDP 유닛들이 있을 수 있다. 각각의 IDP 유닛은 하나의 입력 특징 맵의 16개의 패치들을 예를 들어, 위노그래드 도메인으로 변환할 수 있다. 예를 들어, 입력 패치는 최종 출력 데이터의 2x2 행렬을 생성하기 위해 요구되는, 위노그래드-변환된 데이터를 포함할 수 있다. 2x2 출력 패치들을 생성하기 위해 3x3 커널을 적용하는 경우에 있어서, 입력 데이터는 4x4 위노그래드-변환된 입력들로 컨버팅될 수 있다. IDP 유닛은 입력 특징 맵 당 16개의 입력 패치들을 변환하여 입력 패치 맵에 대해 16 세트의 4x4 변환된 입력 패치들을 생성할 수 있다. 또한, IDP 유닛은 대응되는 위노그래드-변환된 가중치 커널(즉, 4X4 행렬)에서 다음 0이 아닌 가중치들을 선택할 수 있다. 가중치는 16개의 변환된 입력 패치들 각각 중 어떤 원소가 선택된 가중치에 의해 곱해질 것인지를 결정하는, 대응되는 xy 위치를 가질 수 있다. 예를 들어, 현재의 가중치가 커널의 (1,3) 위치인 경우, 16개의 변환된 입력 패치들의 (1,3) 원소들이 선택될 수 있다. 가중치 및 16개의 입력 값들은 요청-어셈블리 유닛에 의해 처리될 수 있다. 7개의 나머지 IDP 유닛들은 각각 다른 대응되는 입력 특징 맵들 및 대응되는 가중치 커널들을 동일한 방식으로 병렬적으로 처리할 수 있다. IDP 유닛들 각각은 처리 요청에 대한 결과인 가중치 및 16개의 입력 값을 요청-어셈블리 유닛으로 전송할 수 있다.
또 다른 실시예에 따르면, 다수의 입력 특징 맵들은 병렬적으로 컨볼루션되고, 합산되어 하나의 출력 특징 맵을 생성할 수 있다. 각각의 입력 특징 맵 및 대응되는 변환된 가중치 행렬은 IDP 유닛에 의해 처리될 수 있다. 병렬적으로 8개의 입력 특징 맵들을 컨볼루션하는 시스템 구조(configuration)에 있어서, 각각이 8개의 입력 특징 맵들 및 대응되는 커널 가중치들을 처리하는, 8개의 IDP 유닛들이 있을 수 있다. 각각의 IDP 유닛은 하나의 입력 특징 맵의 16개의 패치들을 예를 들어, 위노그래드 도메인으로 변환할 수 있다. 예를 들어, 입력 패치는 최종 출력 데이터의 2x2 행렬을 생성하기 위해 요구되는, 위노그래드-변환된 데이터를 포함할 수 있다. 2x2 출력 패치들을 생성하기 위해 3x3 커널을 적용하는 경우에 있어서, 입력 데이터는 4x4 위노그래드-변환된 입력들로 컨버팅될 수 있다. IDP 유닛은 입력 특징 맵 당 16개의 입력 패치들을 변환하여 입력 패치 맵에 대해 16 세트의 4x4 변환된 입력 패치들을 생성할 수 있다. 또한, IDP 유닛은 대응되는 위노그래드-변환된 가중치 커널(즉, 4X4 행렬)에서 다음 0이 아닌 가중치들을 선택할 수 있다. 가중치는 16개의 변환된 입력 패치들 각각 중 어떤 원소가 선택된 가중치에 의해 곱해질 것인지를 결정하는, 대응되는 xy 위치를 가질 수 있다. 예를 들어, 현재의 가중치가 커널의 (1,3) 위치인 경우, 16개의 변환된 입력 패치들의 (1,3) 원소들이 선택될 수 있다. 가중치 및 16개의 입력 값들은 요청-어셈블리 유닛에 의해 처리될 수 있다. 7개의 나머지 IDP 유닛들은 각각 다른 대응되는 입력 특징 맵들 및 대응되는 가중치 커널들을 동일한 방식으로 병렬적으로 처리할 수 있다. IDP 유닛들 각각은 처리 요청에 대한 결과인 가중치 및 16개의 입력 값을 요청-어셈블리 유닛으로 전송할 수 있다.
16개의 MAU들 각각은 병렬적으로 계산되는 16개의 출력 패치들 중 각각 다른 하나를 계산할 수 있다. 하나의 MAU와 연결(coupled)된 입력들은 모두 주어진 사이클에서 계산되는 동일한 출력 값에 대응될 수 있다. 예를 들어, 8개의 입력들 각각 및 8개의 각각 다른 입력 특징 맵들에서 비롯되는, 대응되는 가중치들은 주어진 사이클에서 (1,3) 위치에 있는 원소를 위한 것일 수 있다. 각각의 IDP 유닛은 각각 다른 입력 특징 맵들을 위한 처리 요청들을 생성할 수 있고, 대응되는 가중치 커널들은 각각 다른 위치들에 0 값의 가중치들을 가지므로, 입력 패치(fetch) 유닛들에 의해 생성되는 요청들은 다른 출력 원소들의 처리를 위한 것일 수 있다. 요청-어셈블리 유닛의 목적은 다수의 사이클들에 걸쳐 생성된 요청들을 수신하고, 요청들을 재배열하여 MAU로의 단일 요청을 생성하기 위한 것이다. 8개의 입력 특징 맵 각각으로부터의 입력들 및 가중치들은 출력 행렬의 동일한 xy 위치에 대응될 수 있다. 예를 들어, 8개의 가중치들이 각각의 가중치 행렬들의 (1,3) 위치에 있는 원소들 및 (1,3) 위치에 있는 입력 데이터 원소들에서 오는 경우, 요청은 (1,3) 위치에 있는 출력 원소를 업데이트하기 위한 것일 수 있다. 앞서 설명한 방식으로 요청들을 리어셈블리(reassembly)함으로써, 8개의 MAU 곱셈기들 및 MAU 곱셈기들에 포함된 가산기들 모두는 병렬적으로 연산들을 수행하고 완전히 이용될 수 있다. 요청들이 재배열되지 않는 경우, 0 값을 갖는 가중치들을 스키핑하면서 다수의 입력 특징 맵들을 병렬적으로 처리하는 것은 실용적이지 않을 수 있다.
앞선 실시예들에 있어서, 16개의 출력 패치들은 병렬적으로 처리되어 하나의 출력 특징 맵의 일부를 생성할 수 있다. 또한, 다수의 출력 특징 맵들은 병렬적으로 처리될 수 있다. 예를 들어, 16개의 출력 특징 맵들 각각에 대한 16개의 패치들은 병렬적으로 생성될 수 있다. 이 경우 각각의 IDP 유닛은 단 하나의 입력 특징 맵을 독출(read)하고 변환할 수 있지만, 16개의 각각 다른 변환된 가중치 커널들은 출력 특징 맵 당 하나의 커널씩 각각의 입력 특징 맵에 적용될 수 있다. IDP 유닛은 입력 데이터의 16개의 패치들을 예를 들어, 위노그래드 도메인으로 변환할 수 있다. 이 후, IDP 유닛은 16개의 커널들 각각으로부터 다음 0이 아닌 가중치를 선택할 수 있다. 0이 아닌 가중치 값들은 모두 4x4 커널들의 다른 xy 위치들에 대응될 수 있다. IDP 유닛은 각각이 다른 출력 특징 맵에 대응되는, 16개의 다른 요청-어셈블리 유닛들에 16개의 요청들을 전송할 수 있다. 각각의 요청-어셈블리 유닛은 16개의 MAU 집합을 피드(feed)할 수 있다. 16개의 요청-어셈블리 유닛들 및 대응되는 16개의 MAU들 각각은 서로 독립적으로 동작할 수 있고, 각각 하나의 출력 맵(“출력 특징 맵”)의 16개의 패치들을 생성할 수 있다.
다수의 사이클들에 걸쳐, 출력 4x4 행렬 각각의 16개의 원소들은 모두 계산될 수 있다. 모든 가중치들이 출력 맵들에 기여하는 모든 입력 특징 맵들에 대한 모든 입력 샘플들에 적용되었을 때, 그 결과에 따른, 각각의 출력 행렬을 위한 16개의 누적된 값들은 데이터-리턴 유닛(Data-return unit: DRU)과 같은 최종 처리 유닛으로 피딩될 수 있다. 병렬적으로 처리되는 출력 맵 당 16개의 출력 행렬들이 있을 수 있고, 각각의 행렬은 출력 맵의 출력 패치에 대응될 수 있고, 각각의 행렬은 16개의 원소들을 포함할 수 있다. 다른 계산들에 있어서, DRU는 예를 들어, 위노그래드 도메인에서 선형 공간으로의 출력 원소들의 최종 변환을 계산(compute)할 수 있다. 최종 변환에 있어서, 4x4 행렬은 2x2 패치로 변환될 수 있고, 각각의 원소는 출력 맵의 원소 하나에 대응될 수 있다.
종래의 컨볼루션들의 연산과는 달리, 위노그래드 방식에 있어서, 동일한 가중치는 인접한 입력 샘플들에 적용되지 않을 수 있다. 대신에, 위노그래드 컨볼루션 방식에서, 변환된 가중치 행렬의 원소 별 곱셈은 변환된 입력 원소들의 행렬과 수행되어 출력 행렬이 계산될 수 있다. 출력 행렬은 출력 패치의 위노그래드 변환된 표현일 수 있다. 2x2 출력 패치의 경우에, 입력 특징 맵 데이터, 출력 맵 데이터 및 3x3 가중치 커널은 모두 위노그래드 도메인에서 4x4 행렬들일 수 있다.
일 실시예에서, xy 차원(dimension)은 0 값을 갖는 가중치들의 스키핑(skipping)을 가능하게 하도록 병렬화될 수 있고, 16개의 4x4 행렬들은 병렬적으로 처리될 수 있다. 각 사이클에서, 하나의 변환된 가중치는 16개의 패치들 각각으로부터의 하나의 변환된 데이터 샘플에 적용될 수 있다. 예를 들어, 2x2 출력 패치를 생성하기 위해 3x3 커널을 적용하는 경우, 입력 데이터는 4x4 행렬들로 변환될 수 있고, 프루닝된 위노그래드 가중치 커널들은 4x4 행렬들일 수 있다. 16개의 출력 패치들에 대응되는 16개의 행렬들은 병렬적으로 처리될 수 있다. 동일한 변환된 가중치 행렬은 16개의 다른, 변환된 입력 행렬들에 적용될 수 있다. 각각의 사이클에서, 하나의 0이 아닌 가중치는 4x4 가중치 행렬로부터 선택되고, 해당 가중치는 변환된 입력 행렬들 각각으로부터 하나의 원소씩, 16개의 대응되는 원소들에 적용될 수 있다.
오직 0이 아닌 가중치들만이 적용될 수 있다. 0 값을 갖는 가중치들은 영향을 미치지 않고, 스킵되므로, 처리 사이클 및 전력이 절약될 수 있다. 0 값을 갖는 가중치들을 스킵하지 않으면, 각각 4x4 출력 행렬을 계산하기 위해 16번의 원소 별 곱셈이 요구될 수 있다. 16개의 가중치들 중에 단지 4개만 0이 아니라면, 0 값을 갖는 가중치들의 처리를 스킵함으로써, 출력 행렬을 계산하기 위해 단지 4번의 곱셈만이 요구될 수 있다. 16개의 출력 행렬들 각각에 대해 동일한 0이 아닌 가중치 값을 병렬적으로 처리함으로써, 16개의 행렬들을 모두 처리하는데 단지 4 사이클만이 요구될 수 있다. 앞선 예시에서, 0 값의 가중치들을 스킵함으로써 속도가4 배 증가될 수 있다. 각각의 출력 행렬은 출력 맵에서 2x2 패치(4개 원소들)를 나타내고, 0 값의 가중치들을 스킵하면서 위노그래드 체계(scheme)로 컨볼루션을 적용하기 위해 4번의 곱셈 연산들이 필요하므로, 출력 원소 당 전체적인 계산은 1번의 곱셈만이 요구될 수 있다.
반대로, 종래의 컨볼루션 구현에 있어 3x3 커널을 적용하기 위해서는, 0 값의 가중치들을 스킵하지 않는 경우에는 출력 당 9번의 곱셈 연산들이 요구될 수 있고, 가중치들 중 절반이 0 값을 갖고 스킵되는 경우에는 평균 4.5번의 곱셈 연산들이 요구될 수 있다. 종래의 커널들을 프루닝한 이후 0 값을 갖는 가중치들의 일반적인 비율은 약 50프로이다. 2x2 패치들을 생성하기 위해 3x3 커널을 적용하는데 이용되는 위노그래드 커널들은 0이 아닌 가중치들의 비율이 25%에 가까울 수 있다.
변환된 입력 데이터 및 변환된 가중치 행렬의 차원들은 출력 패치 크기 및 커널 크기에 의존한다. 출력 패치가 항상 2x2인 경우의 실시예에서, 3x3 커널을 적용하는 것은 4x4 변환된 가중치 및 데이터 행렬들을 수반할 수 있다. 가중치들 모두가 적용된 상황에서, 2x2 출력 패치를 생성하기 위해 이용되는 3x3 커널은 16번의 곱셈을 수반할 수 있다. 다른 예시에서, 4x4 패치를 생성하기 위해 5x5 커널이 이용되는 경우, 변환된 가중치 및 데이터 행렬들은 7x7이고, 0 값의 가중치들을 스킵하지 않는 경우 4x4 출력 패치를 생성하기 위해 49번의 곱셈이 요구될 수 있다.
각 사이클마다 다수의 입력 특징 맵들을 병렬적으로 처리함으로써 전체적인 처리량이 증가될 수 있다. 예를 들어, 주어진 출력 맵의 16개의 출력 패치들을 생성하기 위한 입력 데이터는 독출될 수 있고, 8개의 다른 입력 특징 맵들로부터 병렬적으로 변환될 수 있다. 각각 다른 커널이 각각의 입력 특징 맵에 적용되어 현재 출력 맵에 대한 해당 입력 특징 맵의 기여를 생성할 수 있다. 이러한 다른 커널들 각각에 대응되는 프루닝된 위노그래드 가중치 행렬은 각각 다른 위치들에 0 값의 가중치들을 포함할 수 있다. 예를 들어, 커널 1은 입력 특징 맵 1에 적용되고, 커널 2는 입력 특징 맵 2에 적용될 수 있다. 커널 1에 대응되는 4x4 가중치 행렬에 있어서, (0,0)에 0 값의 가중치가 있는 경우를 가정할 때, 커널 2 에 대응되는 제 2 행렬에서, (0,0)에는 0이 아닌 값이 있을 수 있다. 위노그래드 체계는 4x4 행렬들의 원소 별 곱셈들을 수행하고, 최종적인 4x4 출력 행렬을 얻기 위해 모든 입력 특징 맵들에 대한 결과들을 합산할 수 있다. 예를 들어, 출력 행렬의 (0,0) 원소를 위해, (0,0) 위치의 변환된 데이터 원소들 및 (0,0) 위치의 가중치 원소들만이 곱해질 수 있고, 합산될 수 있다. 곱셈-누적 연산 하드웨어 유닛들은 한 사이클에서 하나의 출력 행렬 원소에 대응되는 원소들을 합산하기만 하면 된다. 예를 들어, MAU 유닛이 (2,2)를 처리하는 경우, 입력 원소들 전부 및 대응되는 가중치들도 그들 각각의 행렬들의 (2,2) 원소들에 대응될 수 있다.
각각의 사이클에서, IDP유닛은 입력 특징 맵에 대응되는 현재의 변환된 가중치 커널에서 다음 0이 아닌 가중치를 발견할 것이다. IDP(“IDP 유닛”)는 0이 아닌 가중치를 각각의 MAU의 입력으로 패치하고, 변환하며, 피딩할 수 있다. 8개의 입력 특징 맵들이 병렬적으로 처리되는 경우, 8개의 IDP 유닛들이 있을 수 있고, 각각은 다른 입력 특징 맵 및 가중치 행렬을 처리할 수 있다. 가중치 행렬들 각각은 각각 다른 위치들에 0 값을 가질 수 있다. 따라서, 각각의 사이클에서, 각각의 IDP 유닛은 나머지 IDP 유닛들과는 다른 위치들에 대응되는 원소들(변환된 가중치 행렬 원소 및 입력 행렬 원소)을 내보낼(emits) 수 있다. 해당 원소들은 커널에서 다음 0이 아닌 가중치에 대응되는 것일 수 있다. IDP 유닛 1은 (1,1) 위치의 입력 데이터에 대응되는 가중치를 내보낼 수 있는 반면, IDP 유닛 2는 동일한 사이클에서 (2,2) 위치의 값들을 내보낼 수 있다. 해당 원소들은 각각 다른 출력 원소들에 대응되고, MAU는 동일한 누산기에 결과물들(products)을 함께 곱셈-누적 연산하므로, 동일한 사이클에서 동일한 MAU로 피딩될 수 없다. 따라서, 주어진 사이클에서 8개의 IDP 유닛들에 의해 생성된, MAU들로의 입력들은 MAU들로 피딩되기 전에 재배열되어야 한다.
요청 어셈블리 유닛은 8개의 요청들(8개의 IDP 유닛들 각각에 의해 내보내진 입력 원소 및 가중치 원소들)을 수신하고, 그러한 요청들의 여러 사이클들을 버퍼링한 후, 재배열하여 MAU들로 재배열된 요청들을 내보낼 수 있다. RAU에 의해 출력된 요청은 하나의 출력 행렬 위치에 대응되는 가중치들 및 입력들만을 가질 수 있다. 예를 들어, RAU가 주어진 사이클에서 (2,2) 위치의 출력 원소를 처리하기로 선택한 경우, RAU는 IDP 유닛들 각각으로부터 버퍼링된 하나의 (2,2) 요청을 선택하고, 한 사이클에서 그것들을 함께 내보낼 수 있다. RAU는 MAU들이 (2,2) 위치의 출력 행렬 원소에 대응되는 누산기를 함께 선택하도록 신호를 보낼 수 있다. 내보내진 요청은 각각의 MAU에 의해 한 사이클에서 처리될 수 있다. MAU는 8 개의 가중치 원소들을 8개의 입력 원소와 곱하고, 그 곱들을 모두 더하며, 선택된 누산기에 추가할 수 있다. 16 개의 MAU들은 MAU 당 하나의 패치씩, 16개의 출력 패치들을 병렬적으로 처리할 수 있다. 모든 MAU 들은 동일한 위치를 처리하고, 주어진 입력 특징 맵에 대해 동일한 가중치를 적용할 수 있다. RAU가 0 값의 가중치들을 스킵할 때 IDP 유닛들에 의해 내보내진 산발적인(scattered) 요청들을 재배열함으로써, RAU는 대응되는 커널들 각각에 있는 0 값의 가중치들을 스킵하면서도 다수의 입력 특징 맵들의 병렬 처리를 가능하게 할 수 있다.
동일한 출력 맵의 다수의 출력 패치들(예를 들어, 16개의 패치들)을 병렬적으로 처리함으로써 xy 차원에서 병렬화하고, 각각이 다른 입력 특징 맵들(예를 들어, RAU에서 재배열된 후 각각의 MAU로 피드된 8개의 입력 특징 맵들) 상에서 병렬적으로 동작하는 다수의 IDP 유닛들을 포함함으로써 입력 채널 차원에서 병렬화하는 것 이외에, 출력 채널 차원에서 병렬화하는 것이 가능하고 유리할 수 있다. 예를 들어, 16개의 출력 맵들은 병렬적으로 생성될 수 있다. 이는 출력 맵당 하나의 가중치 커널을 처리하기 위한 IDP 유닛들의 로직을 복제(replicate)하고, 병렬적으로 생성된 출력 채널들의 수에 비례하여 RAU들 및 MAA들의 수를 증가시킴으로써 수행될 수 있다.
병렬적으로 생성된 출력 채널들의 수를 증가시킴으로써 처리량이 증가됨과 더불어, 입력 특징 맵 데이터를 위노그래드 도메인으로 변환하는데 수반되는 오버헤드 또한 최소화될 수 있다. 또한, 위노그래드로부터 선형 도메인으로 출력 행렬을 역 변환하는 과정에서의 약간의 오버헤드가 있을 수 있지만, 출력 변환은 모든 가중치가 적용된 입력들이 최종 출력 행렬로 누산된 후에 단 한번만 수행되면 되므로, 출력 변환의 비용은 이미 상당히 낮을 수 있다. 그리고, 출력 변환은 출력 채널 차원에서의 병렬 처리에 의해 영향을 받지 않을 수 있다. 일 실시예에서, 하나의 출력 맵은 한번에 처리될 수 있다. 이 경우, 입력 특징 맵들 각각은 한번에 독출 및 선형에서 위노그래드 도메인으로 변환되어야 한다. 최종 4x4 출력 행렬은 입력 특징 맵들 모두로부터 가중치가 적용된 기여들을 더한 후에, 위노그래드에서 선형 도메인으로 한번만 변환될 수 있다. 예를 들어, 출력 맵을 생성하기 위해 요구되는 64개의 입력 특징 맵들이 있는 경우, 64번의 선형-위노그래드 입력 데이터 변환들이 하나의 출력 패치를 생성하기 위해 요구될 수 있다. 다른 실시예에서, 16개의 출력 맵들은 동일한 세트의 입력 특징 맵들을 이용하여 병렬적으로 생성되지만, 각각의 다른 출력 맵들을 생성하기 위해 각각의 입력 특징 맵에 각각 다른 커널들이 적용될 수 있다. 동일한 64개의 입력 특징 맵들은 각각 한번 변환되고, 변환된 결과들은 각각 16개의 다른 출력 맵들을 위한 출력 패치들을 생성하기 위해 16 번 이용될 수 있다. 이 경우, 각각의 출력 맵 패치를 생성하기 위해서는 평균 4 번의 입력 특징 맵 변환들이 요구될 수 있다. 다시 말하면, 각각의 입력 특징 맵은 한번 변환되고, 16 개의 다른 출력들을 위해 16번 재사용될 수 있다. 16개의 출력 맵들의 집합에 걸쳐, 64번의 입력 특징 맵 변환들이 요구될 수 있다(64/16=4). 따라서, 다수의 출력 맵들을 병렬적으로 처리하는 것은 입력 특징 맵 독출 및 입력 데이터의 변환들을 감소시키는 데 상당히 효율적일 수 있다.
도 1은 n은 2 이상의 정수일 때, n개의 8x8 특징 맵들에 적용된 위노그래드 변환을 도시한 도면이다. 일 실시예에서, n은 8일 수 있다. 도 1에 도시된 바와 같이, n개의 8x8 특징 맵들 각각에 포함된 데이터의 일부는 4x4의 변환된 입력 데이터 패치들을 형성하기 위한 4x4 변환 행렬(미도시)를 이용하여 위노그래드 도메인으로 변환될 수 있다. 다시 말하면, 8x8 특징 맵 각각의 부분 (101a-101n에서 굵은 선으로 표시됨)은 변환 행렬(미도시)에 의해 4x4의 변환된 특징-맵 데이터 패치로서 위노그래드 도메인으로 변환될 수 있고, 대응되는 4x4의 변환 및 프루닝된 가중치 커널은 원소 별 곱셈 (최대 16 번의 곱셈) 행렬과 함께 변환된 입력 데이터에 적용될 수 있다. 입력 데이터를 위노그래드 도메인으로 변환하는 변환 행렬은 원소 별 곱셈 행렬과 함께 이용되는 변환된 가중치 커널이 아니라는 점을 이해해야 한다. 변환된 가중치 커널에서 낮은 값을 갖는 가중치들은 프루닝될 수 있다. 변환된 가중치 커널은 0이 아닌 가중치 값들 및 0 과 동일한 가중치 값들을 모두 포함할 수 있다. 가중치 커널을 위노그래드 도메인으로 변환 및 프루닝하는 것은 오프라인으로 수행될 수 있다. 본 개시는 변환된 특징-맵 데이터 패치의 각각의 원소들 및 대응되는 변환된 가중치 커널에 있는 가중치 값들이 서로 곱해져서 위노그래드 도메인의 컨볼루션된 행렬을 형성하는 다수의 IDP 유닛들(102a-102n)을 포함할 수 있다. n개의 컨볼루션된 행렬들에 있는 원소들은 각각 더해질 수 있고, 그 결과(103에 도시됨)는 2x2 출력 특징 맵 패치를 형성하기 위해 역 위노그래드 변환될 수 있다.
도 2는 일부 실시예에 따른 출력 맵 행렬을 형성하기 위한 n개의 위노그래드-변환된 특징 맵 행렬들을 효율적으로 컨볼루션하는 시스템 아키텍처(200)의 예시적인 실시예를 도시한 도면이다. IDP 유닛(102a)에서 도시된 바와 같이, 8x8 특징 맵 0는 잘 알려진 방식에 의해 위노그래드 도메인으로 변환될 수 있다. 변환된 8x8 특징 맵 0는 16개의 패치들 (패치 0-패치 15)로 구성될 수 있다. 변환된 입력 데이터의 4x4 행렬 0는 도 2에서 설명의 목적을 위해 확대되었다. 예를 들어, 행렬 0의 각 위치는 8-비트 데이터 값을 포함할 수 있다. 변환된 가중치 커널 201에서 해당 위치들에 있는 가중치 값들도 8-비트 가중치 값들일 수 있다.
위치 결정기(202)는 가중치 커널에 있는 0이 아닌 가중치들의 위치에 기초하여 가중치 마스크(203)를 생성할 수 있다. 일 실시예에서, 가중치 마스크(203)에서 1의 위치는 가중치 커널에서 0이 아닌 값을 갖는 가중치의 위치에 대응될 수 있다. 마찬가지로, 가중치 마스크(203)에서 0의 위치는 가중치 커널에서 0 값을 갖는 가중치의 위치에 대응될 수 있다. 예를 들어, 가중치 마스크(203)에서 오른쪽에서 3 번째 위치에 있는 1의 위치(굵게 표시됨)는 가중치 커널의 (1,3) 위치에 있는 변환된 데이터 원소의 위치 및 패치 0의 (1,3) 위치에 대응될 수 있다.
0이 아닌 가중치 선택기(non-zero weight selector)(204)는 2개의 16:1 멀티플렉서들(205 및 206)을 구동하기 위해 가중치 마스크(203)를 이용할 수 있다. 멀티플렉서(205)는 패치들0-15 각각에 포함된, 변환된 입력 데이터의 원소를 선택할 수 있고, 멀티플렉서(206)는 가중치 커널로부터 변환된 가중치 값을 선택할 수 있다. 다시 말하면, 0이 아닌 가중치 선택기(204)는 가중치 마스크(203)에서 각각의 1의 위치에 대응되는, 패치들 0-15 각각에서의 위치에 있는, 변환된 입력 데이터의 원소를 선택하도록 멀티플렉서(205)를 구동할 수 있다. 마찬가지로, 0이 아닌 가중치 선택기(204)는 가중치 마스크(203)에서 1의 위치에 대응되는 변환된 가중치 커널(201)의 변환된 가중치 값을 선택하도록 멀티플렉서(206)을 구동할 수 있다. 예를 들어, 가중치 마스크(203)에서 1 (굵게 표시됨)은 패치 0 내지 패치 15 각각의 (1,3)에 있는 변환된 데이터 원소의 위치 및 가중치 커널의 (1,3) 위치에 있는 변환된 가중치 값과 대응될 수 있다. 일 실시예에서, 0이 아닌 가중치 선택기(204)는 가중치 마스크(203)에서 1을 포함하는 위치들에 대응되는 위치들에 있는 패치0 내지 패치 15 각각의 변환된 데이터 및 변환된 가중치 커널(201)에 있는 변환된 가중치 값들만을 선택하고, 가중치 마스크(203)에서 0을 포함하는 위치들에 대응되는 변환된 패치0 내지 패치 15 및 가중치 커널의 위치들을 스킵함으로써, 대응되는 변환된 가중치 값들과 변환된 입력 데이터의 컨볼루션을 간소화시킬 수 있다.
멀티플렉서(205)의 출력(변환된 데이터) 및 멀티플렉서(206)의 출력(변환된 가중치 값)은 MAA(240) 내의 RAU(220)에 입력될 수 있다. RAU(220)는 다수의 사이클에 걸쳐 다수의 IDP 유닛들로부터 요청들을 버퍼링하고, 동일한 xy 위치에 대한 요청들을 단일 요청으로 선택할 수 있다. RAU(220)는 수신된 변환된 입력 데이터 및 대응되는 변환된 가중치 값들 및 16개의 MAU들을 포함하는 MAA에서 누적 레지스터(accumulation register: Acc Register)를 선택하기 위한 위치 선택을 내보낼 수 있다. RAU(220)는 IDP 유닛들 (102A-102n) 각각으로부터 요청들을 수신할 수 있다. 요청들은 일반적으로는 모두 각각 다른 위치들에 있는 가중치들을 각각 다른 입력 특징 맵들에 적용하는 것일 수 있다. RAU(220)는 입력 요청들을 재배열함으로써, 출력 요청에서, 모든 가중치들(시스템 아키텍쳐 (200)의 예시적인 실시예에 있어서 8개의 IDP 유닛들(102a-102n)에 대한 8개의 가중치들)을 동일한 위치(예를 들어, (1,3) 위치)에 대해 적용할 수 있다. 다수의 이전 사이클들에 걸쳐 RAU(220)에 의해 수신된 입력 요청들은 동일한 위치를 이용하는 8개의 요청들을 하나의 출력 요청으로 결합하기 위해 RAU(220)에서 내부적으로 재배열될 수 있다. 출력 요청에 있어서, 동일한 8개의 가중치들은 각각의 MAU가 다른 패치로부터 변환된 입력 원소를 수신하는 경우를 제외하고는, 모든 MAU들에 입력될 수 있다. RAU(220)가 수신된, 변환된 입력 데이터 및 대응되는 변환된 가중치 값을 보내는(directs to) 특정 누적 레지스터는 변환된 입력 데이터로부터 선택된 패치들 내의 위치 및 변환된 가중치 값이 선택된 가중치 커널 내의 위치에 대응될 수 있고, 처리되는 출력 행렬 내의 위치에 대응될 수도 있다. 예를 들어, 변환된 패치들(패치 0 내지 15) 각각에 있는 (1,3) 위치의 변환된 데이터 원소 및 가중치 커널(201)에서 (1,3) 위치에 있는 변환된 가중치 값의 예시를 이용하면, RAU(220)는 패치 0에서 (1,3) 위치에 있는 변환된 데이터 원소 및 가중치 커널(201)에서 (1,3) 위치에 있는 변환된 가중치 값을 (패치 0을 위한) MAU 0 내의 (1,3) 레지스터로 보낼 수 있다. MAU 0에서 변환된 입력 데이터 및 변환된 가중치 값은 서로 곱해지고 누산될 수 있다.
RAU(220)는 마찬가지로 패치 1에서 (1,3) 위치에 있는 변환된 데이터 원소 및 대응되는 가중치 커널에서 (1,3) 위치에 있는 변환된 가중치 값을 (패치 1을 위한) MAU 1 내의 (1,3) 레지스터로 보낼 수 있다. MAU 1에서 변환된 입력 데이터 및 변환된 가중치 값은 곱해지고 누산될 수 있다. 앞의 과정은 모든 패치들에 대해 계속될 수 있고, 패치 15의 경우에, RAU (220)는 패치 15에서 (1,3) 위치에 있는 변환된 데이터 원소 및 대응되는 가중치 커널에서 (1,3) 위치에 있는 변환된 가중치 값을 (패치 15를 위한) MAU 15 내의 (1,3) 레지스터로 보낼 수 있고, 변환된 입력 데이터 및 변환된 가중치 값은 곱해지고 누산될 수 있다.
가중치 마스크(203)에서 1에 대응되는, 각각의 패치의 해당 위치에 있는 변환된 입력 데이터 및 가중치 커널의 해당 위치에 있는 변환된 가중치 값만이 RAU(220)로 출력될 수 있고, 변환된 입력 데이터와 대응되는 변환된 가중치 값들 간의 컨볼루션은 간소화되고, 0 값을 곱하는 연산들은 생략될 수 있다.
각각의 IDP 유닛들(102a-102n)은 변환된 입력 데이터 및 대응되는 변환된 가중치 값들을 RAU(220)로 출력할 수 있다. 또한, 위치 결정기(202)는 주어진 사이클에서 각각의 IDP 유닛에 의해 선택된 가중치 커널 내의 0이 아닌 가중치들의 위치 정보를 RAU(220)로 출력할 수 있다. 도 3은 일부 실시예에 따른 MAA(240)의 예시적인 실시예 내의 RAU 유닛(220)의 예시적인 실시예를 도시하는 도면이다. RAU(220)는 각각의 IDP 유닛으로부터 요청들에 대한 정보를 수신하고, 각각 다른 IDP 유닛들(102a-102n)로부터의 개별적인 요청들을 재배열 할 수 있다. 개별적인 요청들 각각은 일반적으로 각각 다른 위치들에 대응될 수 있다. 예를 들어, 하나의 IDP는 (1,3) 위치의 원소를 처리하는 요청을 전송함에 반해, 다른 IDP는 (3,0) 위치의 원소의 처리를 요청할 수 있다. 주어진 사이클 및 이전 사이클들에서 도착한 8개의 요청들을 재배열함으로써, RAU(220)는 하나의 위치에 적용되는 하나의 결합된 요청을 내보낼 수 있다. 예를 들어, 하나의 결합된 요청에 포함되는 모든 요청들은 모두 (1,3) 위치에 대한 것일 수 있다.
일 실시예에서, RAU(220)는 복수의 요청 유닛들(221a-221n) 및 원소-선택 로직(222)을 포함할 수 있다. 요청 유닛들(221a-221n) 각각은 IDP 유닛들(102a-102n)로부터 변환된 데이터, 변환된 가중치 값들 및 위치 정보를 수신할 수 있다. 원소-선택 로직(222)은 각각의 요청 유닛들(221)로부터의 출력들을 이용할 수 있고, 다음 사이클에서 처리될 변환된 가중치를 선택할 수 있다. 일 실시예에서, RAU(220)는 각각의 요청이 각각 다른 위치에 있는 값을 업데이트하려는 시도를 나타내는 마지막 몇 사이클에 걸쳐 모든 n 개의 IDP 유닛들로부터 요청들을 수신하고, 출력 원소들 중 하나를 업데이트하기 위해 처리될, 한 사이클의 가중치들 및 데이터로 어셈블(assemble)할 수 있다.
일 실시예에서, 요청 유닛(221)은 요청 버퍼(request buffer)(223), 마스크 어레이(mask array)(224), 제어 로직(control logic)(225), OR 로직(OR logic)(226) 및 펜딩-요청 카운터(pending-request counter)(227)를 포함할 수 있다. 요청 버퍼(223)는 대응되는 IDP 유닛(102)으로부터 변환된 입력 데이터 및 변환된 가중치 값(요청들)을 수신할 수 있다. 일 실시예에서, 요청 버퍼(223)는 대응되는 IDP 유닛으로부터 16개의 엔트리들을 순차적으로 수신하는 16개의 버퍼 위치를 포함할 수 있다. 마스크 어레이(224)는 위치 결정기(201)로부터, 가중치 마스크(202)와 같은, 위치 정보를 수신할 수 있고, IDP(102)로부터 수신된 변환된 입력 데이터 및 변환된 가중치 값에 대응되는 엔트리에 가중치 마스크(202)를 저장할 수 있다. 일 실시예에서, 마스크 어레이(224)는 16개의 엔트리들을 포함할 수 있다. OR 로직(225)은 수신된 위치 정보에 대해 논리 OR 연산을 수행하고, 위치 워드(word)를 출력할 수 있다. 위치 워드 내의 주어진 위치에 있는 1은 주어진 로케이션(location)에 있는 가중치 값을 나타낼 수 있다. 제어 로직(226)은 원소-선택 로직(222)에 의해 선택된 엔트리의 위치를 파악하고, MAU들로 전송하기 위한 로직, 마스크 어레이(224)에 있는 마스크들을 업데이트하는 로직 및 선택된 엔트리에 응답하여 펜딩-요청 카운터(227)를 디크리먼트(decrement)하는 로직을 포함할 수 있다. 펜딩-요청 카운터(227)는 요청 유닛(221)에 의해 수신된 각각의 요청들에 의해 인크리먼트될(incremented) 수 있다. OR 로직(225) 및 펜딩-요청 카운터(227)로부터의 출력은 원소-선택 로직(222)에 의해 다음 사이클에서 처리될 변환된 가중치를 선택하기 위해 이용될 수 있다.
원소-선택 로직(222)은 요청 유닛들(221) 내의 동일한 원소(가중치 어레이의 x,y 위치)에 대한 펜딩중인 요청들의 수를 더하고, 최대 요청 수를 갖는 원소를 선택할 수 있다. 일부 실시예에서, 모든 n 개의 요청 유닛들(221)은 특정 위치에 있는 가중치의 발생(occurrence)을 나타낼 수 있지만, 다른 실시예에서는, 요청 유닛들(221) 중 하나 이상의 요청 유닛들은 특정 위치에 요청들을 갖지 않을 수 있다. 이 경우, 특정 위치에 요청들을 갖지 않는 하나 이상의 요청들은 대응되는 MAU로 가중치들 및 입력 데이터를 전송하지 않을 수 있다. 요청 버퍼(223)가 가득 차는 것은 원소-선택 로직(222)에 의한 선택 프로세스에 의해 영향을 미칠 수 있다. 예를 들어, 요청 유닛(221)의 요청 버퍼(223)가 가득 찬 상황에서, 원소-선택 로직(222)은 전체적으로 최대 요청 수를 갖는 원소 위치를 우선적으로 처리하는 대신에, 가득 찬 대기행렬(full-queue)을 완화시키기 위해 요청 유닛(221)의 가득 찬 요청 버퍼(223)에 있는 원소를 선택할 수 있다. 또한, 가득 찬 대기행렬은 대응되는 IDP 유닛으로 전파(propagate)되는 정지 신호(미도시)를 발생시킬 수 있다.
앞에서 설명한 바와 같이, 시스템 아키텍처(200)는 입력 특징 맵들로부터 복수의 출력 특징 맵들을 병렬적으로 생성할 수 있다. 예를 들어, 16개의 출력 패치들은 8개의 입력 특징 맵들로부터 병렬적으로 생성될 수 있다. 단일 MAA 유닛은 하나의 출력 특징 맵 내의 16개의 출력 패치들을 생성할 수 있다. 일 실시예에 따르면, 시스템 아키텍쳐(200)는 동일한 입력 데이터로부터 다수의 출력 특징 맵들을 생성할 수 있고, 출력 특징 맵들은 병렬적으로 처리될 수 있다. 예를 들어, 16개의 MAA 유닛들은 병렬적으로 16개의 출력 특징 맵들을 생성할 수 있고, 16개의 패치들은 또한 각각의 출력 특징 맵 내에서 병렬적으로 생성될 수 있다. 각각의 IDP 유닛(102)은 하나의 입력 특징 맵으로부터 16개의 패치들을 독출하고 변환할 수 있다. 하나의 변환된 가중치 커널로부터 다음 0이 아닌 가중치가 내보내지는 대신, 16개의 다른 변환된 가중치 커널들로부터의 16개의 0이 아닌 가중치들은 하나의 가중치 및 생성되고 있는 출력 특징 맵들 각각에 대한 대응되는 위치에 기초하여 내보내질 수 있다.
예를 들어, 주어진 사이클에서 IDP 유닛(102a)은 출력 특징 맵 0를 생성하기 위해 이용되는 가중치 커널로부터 가중치 (1,3)을 내보낼 수 있고, 동시에 출력 특징 맵 1을 생성하기 위해 이용되는 가중치 커널로부터 가중치 (2,3)을 내보낼 수 있다. 모든 가중치들은 동일한 변환된 입력 데이터의 다른 원소들에 적용될 수 있다. 각각 다른 가중치들 및 대응되는 입력 데이터 원소들은 대응되는 출력 특징 맵을 계산하는 MAA 유닛으로 전송될 수 있다. 이에 따라, 입력 데이터를 독출하고 변환하기 위한 오버헤드가 감소될 수 있다.
도 4는 일부 실시예에 따른 시스템 아키텍처(400)의 병렬 특성과 관련된 추가적인 세부사항들의 예시를 나타내는 도면이다. 구체적으로, 도 4는 16개의 출력 특징 맵(OFMs)를 형성하기 위해 처리되는 8개의 입력 특징 맵들(IFMs)를 위한 시스템 아키텍쳐(400)의 병렬 특성을 도시한다. 도 4 에 도시된 바와 같이, 메모리들(4010 - 4017)은 각각 8개의 IFMs에 대한 입력-특징 맵 IFM0 - IFM7을 저장할 수 있다. 또한, 메모리들(4010 - 4017)은 메모리에 저장된 IFM에 적용될 가중치 커널들을 저장할 수 있다. 메모리(401)에 저장된 데이터는 RAU들(4030 - 40315)에 의해 수신되고, MAA들(MAAs 4040 - 40415) 내의 MAU들에 의해 누산되는 복수의 요청들을 생성하기 위해, 대응되는 IDP 유닛들(4020 - 40215)에 의해 처리될 수 있다. 도 2 및 도 3은 IDP, RAU, MAU 및 MAA의 예시적인 세부사항들을 도시한다. 메모리에 저장된 데이터는 대응되는 IDP에 입력될 수 있고, 16개의 MAA들 각각에서 처리될 수 있다. 메모리들(4010 - 4017)은 개별적으로 도시되었으나, 메모리들(4010 - 4017)이 별도의 메모리들 또는 통합된 메모리들의 임의의 조합일 수 있음은 당업자에게 자명할 수 있다.
도 2 내지 4에 도시된 다양한 기능 블록들은 해당 기능 블록과 관련되어 설명된 기능을 제공하기 위한 소프트웨어, 펌웨어 및/또는 하드웨어의 임의의 조합으로부터 형성되는 모듈들로 구현될 수 있다. 다시 말하면, 도 2 내지 4의 기능 블록들을 구현하는 모듈들은 집합적으로 또는 개별적으로, IC, SoC 등과 같은 더 큰 시스템의 일부를 형성하는 소프트웨어, 펌웨어 및/또는 하드웨어로 구현될 수 있으나, 이에 제한되지 않는다.
도 5는 일부 실시예에 따른 컨볼루션들의 위노그래드-기반 수행에 있어 병렬적으로 0-값의 가중치들을 효율적으로 스킵하는 시스템을 형성하는 하나 이상의 집적 회로들 (칩들)을 포함하는 전자 기기(500)를 나타내는 도면이다. 전자 기기(500)는 컴퓨팅 디바이스, 개인용 정보 단말기(personal digital assistant: PDA), 노트북 컴퓨터, 모바일 컴퓨터, 웹 태블릿, 무선 전화기, 휴대폰, 스마트폰, 디지털 뮤직 플레이어 또는 유선 또는 무선 전자 기기에서 이용될 수 있으나, 이에 제한되지 않는다. 전자 기기(500)는 버스(bus)(550)를 통해 서로 연결된, 제어부(510), (키패드, 키보드, 디스플레이, 터치-스크린 디스플레이, 카메라 및/또는 영상 센서 등과 같은) 입출력 장치(520), 메모리(530) 및 인터페이스(540)를 포함할 수 있다.
제어부(510)는 예를 들어, 적어도 하나의 마이크로프로세서, 적어도 하나의 디지털 신호 처리, 적어도 하나의 마이크로 컨트롤러 등을 포함할 수 있다. 메모리(530)는 제어부(510)에 의해 이용되는 명령 코드 또는 사용자 데이터를 저장할 수 있다. 전자 기기(500) 및 전자 기기(500)의 다양한 시스템 구성요소들은 일 실시예에 따라 컨볼루션들의 위노그래드-기반 구현에 있어 병렬적으로 0 값을 갖는 가중치들을 효율적으로 스킵하는 시스템을 형성할 수 있다. 인터페이스(540)는 RF 신호를 이용하는 무선 통신 네트워크를 통해 데이터를 전송하거나 수신하는 무선 인터페이스를 포함할 수 있다. 무선 인터페이스(540)은 예를 들어, 안테나, 무선 트랜시버 등을 포함할 수 있다. 전자 시스템(500)은 또한 Code Division Multiple Access (CDMA), Global System for Mobile Communications (GSM), North American Digital Communications (NADC), Extended Time Division Multiple Access (E TDMA), Wideband CDMA (WCDMA), CDMA2000, Wi Fi, Municipal Wi Fi (Muni Wi Fi), Bluetooth, Digital Enhanced Cordless Telecommunications (DECT), Wireless Universal Serial Bus (Wireless USB), Fast low-latency access with seamless handoff Orthogonal Frequency Division Multiplexing (Flash OFDM), IEEE 802.20, General Packet Radio Service (GPRS), iBurst, Wireless Broadband (WiBro), WiMAX, WiMAX-Advanced, Universal Mobile Telecommunication Service - Time Division Duplex (UMTS TDD), High Speed Packet Access (HSPA), Evolution Data Optimized (EVDO), Long Term Evolution - Advanced (LTE-Advanced), Multichannel Multipoint Distribution Service (MMDS) 등과 같은 통신 시스템의 통신 인터페이스 프로토콜 상에서 이용될 수 있다.
해당 기술분야의 통상의 기술자가 인식할 수 있는 바와 같이, 본 개시에서 설명된 혁신적인 개념들은 광범위한 응용 분야에 걸쳐 변경되고 변형될 수 있다. 따라서, 청구된 주제의 범위는 앞서 설명된 특정한 예시적인 설명 중 어떠한 것으로도 제한되어서는 안되고, 대신 이하 청구항들에 의해 정의될 수 있다.

Claims (15)

  1. 제 1 입력 데이터 경로(Input Data Path: IDP) 유닛에 의해, 제 1 입력 특징 맵을 위노그래드 도메인으로 변환하는 단계; 상기 변환된 제 1 입력 특징 맵은 제 1 복수의 입력 행렬들을 포함하고, 상기 제 1 복수의 입력 행렬들 각각은 복수의 원소들을 포함하며,
    상기 제 1 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 1 복수의 0이 아닌 가중치들에 대한 것인, 제 1 복수의 요청들을 생성하는 단계;
    제 1 요청 어셈블리 유닛(Request assembly unit: RAU)에 의해, 상기 제 1 복수의 요청들을 수신하는 단계; 및
    제 1 곱셈 누적연산 어레이(multiply accumulate array: MAA)에 의해, 입력 행렬 각각의 대응되는 원소들에 상기 제 1 복수의 0이 아닌 가중치들을 적용함에 기초하여 제 1 출력 특징 맵을 위한 제 1 복수의 출력 행렬들을 병렬적으로 생성하는 단계를 포함하는 방법.
  2. 제 1항에 있어서,
    상기 방법은,
    상기 제 1 IDP 유닛 내의 위치 결정기(position determiner)에 의해, 제 1 변환된 가중치 커널 내에 있는 적어도 하나의 0이 아닌 값을 갖는 가중치의 위치를 결정하는 단계를 더 포함하고,
    상기 제 1 IDP 유닛에 의해, 상기 제 1 복수의 요청들을 생성하는 단계는,
    상기 제 1 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 1 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 1 복수의 요청들을 상기 제 1 RAU로 제공하는 단계를 포함하는 것인, 방법.
  3. 제 2항에 있어서,
    상기 제 1 IDP 유닛에 의해, 0 값을 갖는 가중치의 표시(indication)에 기초하여 상기 제 1 변환된 가중치 커널 내에 있는 상기 0 값을 갖는 가중치에 대응되는 요청은 스킵(skipping)하는 단계를 더 포함하는, 방법.
  4. 제 1항에 있어서,
    제 2 IDP 유닛에 의해, 제 2 입력 특징 맵을 상기 위노그래드 도메인으로 변환하는 단계; 상기 변환된 제 2 입력 특징 맵은 제 2 복수의 입력 행렬들을 포함하고, 상기 제 2 복수의 입력 행렬들 각각은 복수의 원소들을 포함하며,
    상기 제 2 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 2 복수의 0이 아닌 가중치들에 대한 것인, 제 2 복수의 요청들을 생성하는 단계;
    상기 제 1 RAU에 의해, 각각의 행렬의 공통 위치에 있는 원소들과 연관된 요청들을 처리하기 위해 상기 제 1 복수의 요청들 및 상기 제 2 복수의 요청들을 재배열(reordering)하는 단계; 및
    상기 제 1 MAA에 의해, 상기 재배열된 요청들에 기초하여 상기 제 1 출력 특징 맵을 위한 상기 복수의 출력 행렬들을 병렬적으로 생성하는 단계를 더 포함하는 방법.
  5. 제 4항에 있어서,
    상기 제 1 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 3 복수의 0이 아닌 가중치들에 대한 것인, 제 3복수의 요청들을 제 2 RAU로 제공하는 단계;
    상기 제 2 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 4 복수의 0이 아닌 가중치들에 대한 것인, 제 4 복수의 요청들을 상기 제 2 RAU로 제공하는 단계;
    상기 제 2 RAU에 의해, 상기 각각의 행렬의 공통 위치에 있는 상기 원소들과 연관된 상기 요청들을 처리하기 위해 상기 제 3 복수의 요청들 및 상기 제 4 복수의 요청들을 재배열하는 단계; 및
    상기 재배열된 요청들에 기초하여 제 2 출력 특징 맵을 위한 제 2 복수의 출력 행렬들을 병렬적으로 생성하는 단계를 포함하고,
    상기 제 2출력 특징 맵은 상기 제 1 출력 특징 맵과 병렬적으로 생성되는 것인, 방법.
  6. 제 4항에 있어서,
    상기 제 1 IDP 유닛 내의 제 1 위치 결정기에 의해, 제 1 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 값들을 갖는 가중치의 위치를 결정하는 단계; 및
    상기 제 2 IDP 유닛 내의 제 2 위치 결정기에 의해, 제 2 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 값들을 갖는 가중치의 위치를 결정하는 단계를 더 포함하고,
    상기 제 1 IDP 유닛에 의해, 상기 제 1 복수의 요청들을 생성하는 단계는, 상기 제 1 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 1 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 1 복수의 요청들을 상기 제 1 RAU로 제공하는 단계를 포함하고,
    상기 제 2 IDP 유닛에 의해, 상기 제 2 복수의 요청들을 생성하는 단계는, 상기 제 2 IDP 유닛에 의해, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 2 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 2 복수의 요청들을 상기 제 1 RAU로 제공하는 단계를 포함하는, 방법.
  7. 입력 특징 맵으로부터 복수의 출력 특징 맵들을 생성하는 시스템에 있어서,
    제 1 입력 특징 맵을 위노그래드 도메인으로 변환하고, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 1 복수의 0이 아닌 가중치들에 대한 것인, 제 1 복수의 요청들을 생성하는 제 1 입력 데이터 경로(IDP) 유닛; 상기 변환된 제 1 입력 특징 맵은 제 1 복수의 입력 행렬들을 포함하고, 상기 제 1 복수의 입력 행렬들 각각은 복수의 원소들을 포함하며,
    상기 제 1 IDP 유닛과 연결되어, 상기 제 1 복수의 요청들을 수신하는 제 1 요청 어셈블리 유닛(RAU); 및
    상기 제 1 RAU와 연결되어, 각각의 입력 행렬에 대해 대응되는 원소들에 상기 제 1 복수의 0이 아닌 가중치들을 적용하기 위해 제 1 출력 맵을 위한 복수의 출력 행렬들을 병렬적으로 생성하는 제 1 곱셈-누적 연산 어레이(MAA)를 포함하는, 시스템.
  8. 제 7항에 있어서,
    상기 시스템은,
    제 1 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 가중치 값을 갖는 가중치의 위치를 결정하는 위치 결정기를 더 포함하고,
    상기 제 1 IDP 유닛은 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 1 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 1 복수의 요청들을 상기 제 1 RAU로 제공하는, 시스템.
  9. 제 8항에 있어서,
    상기 제 1 IDP 유닛은 0 값을 갖는 가중치의 표시에 기초하여 상기 제 1 변환된 가중치 커널 내의 0-값을 갖는 가중치에 대응되는 요청을 스킵하는, 시스템.
  10. 제 7항에 있어서,
    상기 시스템은,
    제 2 입력 특징 맵을 위노그래드 도메인으로 변환하고, 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 2 복수의 0이 아닌 가중치들에 대한 것인, 제 2 복수의 요청들을 생성하는 제 2 IDP 유닛을 더 포함하고,
    상기 변환된 제 2 입력 특징 맵은 제 2 복수의 입력 행렬들을 포함하고, 상기 제 2 복수의 입력 행렬들의 각각의 입력 행들은 복수의 원소들을 포함하며,
    상기 제 1 RAU는 각각의 행렬의 공통 위치에 있는 원소들과 연관된 요청들을 처리하기 위해 상기 제 1 복수의 요청들 및 상기 제 2 복수의 요청들을 재배열하고,
    상기 제 1 MAA는 상기 재배열된 요청들에 기초하여 상기 제 1 출력 특징 맵을 위한 상기 복수의 출력 행렬들을 병렬적으로 생성하는 것인, 시스템.
  11. 제 10항에 있어서,
    상기 제 1 IDP 유닛은 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 3 복수의 0이 아닌 가중치들에 대한 것인, 제 3 복수의 요청들을 제 2 RAU로 제공하고,
    상기 제 2 IDP 유닛은 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 제 4 복수의 0이 아닌 가중치들에 대한 것인, 제 4 복수의 요청들을 상기 제 2 RAU로 제공하며,
    상기 제 2 RAU는 상기 각각의 행렬의 공통 위치에 있는 원소들과 연관된 상기 요청들을 처리하기 위해 상기 제 3 복수의 요청들 및 상기 제 4 복수의 요청들을 재배열하고,
    상기 제 2 MAA는 상기 재배열된 요청들에 기초하여 제 2 출력 특징 맵을 위한 제 2 복수의 출력 행렬들을 병렬적으로 생성하며,
    상기 제 2 출력 특징 맵은 상기 제 1 출력 특징 맵과 병렬적으로 생성되는 것인, 시스템.
  12. 제 10항에 있어서,
    상기 시스템은,
    제 1 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 값을 갖는 가중치의 위치를 결정하는 제 1 위치 결정기; 및
    제 2 변환된 가중치 커널 내의 적어도 하나의 0이 아닌 값을 갖는 가중치의 위치를 결정하는 제 2 위치 결정기를 더 포함하고,
    상기 제 1 IDP 유닛은 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 1 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 1 복수의 요청들을 상기 제 1 RAU로 제공하고,
    상기 제 2 IDP 유닛은 각각이 대응되는 원소들을 갖는, 변환된 가중치 커널들 내의 상기 제 2 복수의 0이 아닌 가중치들에 대한 것인, 상기 제 2 복수의 요청들을 상기 제 1 RAU로 제공하는, 시스템.
  13. 제 12항에 있어서,
    상기 제 1 IDP 유닛은 0 값을 갖는 가중치의 표시에 기초하여 상기 제 1 변환된 가중치 커널 내의 0 값을 갖는 가중치에 대응되는 요청을 스킵하는, 시스템.
  14. 제 12항에 있어서,
    상기 제 2 IDP 유닛은 0 값을 갖는 가중치의 표시에 기초하여 상기 제 2 변환된 가중치 커널 내의 0 값을 갖는 가중치에 대응되는 요청을 스킵하는, 시스템.
  15. 제 7항에 있어서,
    상기 시스템은,
    상기 제 1 입력 특징 맵을 저장하는 메모리를 더 포함하고,
    상기 제 1 IDP 유닛은 상기 메모리로부터 상기 저장된 제 1 입력 특징 맵을 수신하는, 시스템.
KR1020170066981A 2016-05-31 2017-05-30 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 KR20170135752A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662343721P 2016-05-31 2016-05-31
US62/343,721 2016-05-31
US15/593,210 US20170344876A1 (en) 2016-05-31 2017-05-11 Efficient sparse parallel winograd-based convolution scheme
US15/593,210 2017-05-11

Publications (1)

Publication Number Publication Date
KR20170135752A true KR20170135752A (ko) 2017-12-08

Family

ID=60417997

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170066981A KR20170135752A (ko) 2016-05-31 2017-05-30 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계

Country Status (3)

Country Link
US (1) US20170344876A1 (ko)
KR (1) KR20170135752A (ko)
CN (1) CN107451652A (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035556A (ko) * 2017-09-25 2019-04-03 난징 호라이즌 로보틱스 테크놀로지 컴퍼니 리미티드 신경 네트워크의 파라미터들을 적응시키기 위한 방법 및 장치
KR20190072404A (ko) * 2017-12-15 2019-06-25 삼성전자주식회사 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진
KR20200049695A (ko) * 2018-10-24 2020-05-08 알리바바 그룹 홀딩 리미티드 콘볼루션 뉴럴 네트워크의 고속 계산
KR20200062743A (ko) * 2018-11-27 2020-06-04 한국과학기술원 컨볼루션 신경망 훈련의 다차원 병렬화 방법과 이를 수행하는 장치 사이의 재구성 가능한 연결 구조
KR20200066538A (ko) * 2018-11-30 2020-06-10 한국전자통신연구원 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기
CN111931918A (zh) * 2020-09-24 2020-11-13 深圳佑驾创新科技有限公司 神经网络加速器
WO2020262825A1 (ko) * 2019-06-27 2020-12-30 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
US11580393B2 (en) 2019-12-27 2023-02-14 Samsung Electronics Co., Ltd. Method and apparatus with neural network data input and output control
US11899741B2 (en) 2019-09-19 2024-02-13 Samsung Electronics Co., Ltd. Memory device and method

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
US10360494B2 (en) * 2016-11-30 2019-07-23 Altumview Systems Inc. Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules
CN108229654B (zh) * 2016-12-14 2020-08-14 上海寒武纪信息科技有限公司 神经网络卷积运算装置及方法
KR101952870B1 (ko) 2017-01-23 2019-02-28 삼성전기주식회사 안테나 통합형 rf 모듈
US10396432B2 (en) * 2017-01-23 2019-08-27 Samsung Electro-Mechanics Co., Ltd. Antenna-integrated radio frequency module
KR102415508B1 (ko) * 2017-03-28 2022-07-01 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
WO2018235357A1 (ja) * 2017-06-22 2018-12-27 日本電気株式会社 演算装置、演算方法及びプログラム
US10990648B2 (en) * 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US20190087729A1 (en) * 2017-09-18 2019-03-21 Intel Corporation Convolutional neural network tuning systems and methods
WO2019081623A1 (en) * 2017-10-25 2019-05-02 Deepmind Technologies Limited SELF-REGRESSIVE NEURAL NETWORK SYSTEMS INCLUDING A SOFTWARE ATTENTION MECHANISM USING SUPPORT DATA CORRECTIVES
GB2568086B (en) * 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
EP3480748A1 (en) * 2017-11-06 2019-05-08 Imagination Technologies Limited Neural network hardware
CN107798382B (zh) 2017-11-21 2020-09-01 南京地平线机器人技术有限公司 用于适配卷积神经网络中的特征数据的方法和装置
CN107909148B (zh) * 2017-12-12 2020-10-20 南京地平线机器人技术有限公司 用于执行卷积神经网络中的卷积运算的装置
CN107993186B (zh) * 2017-12-14 2021-05-25 中国人民解放军国防科技大学 一种基于Winograd算法的3D CNN加速方法及系统
CN108320019B (zh) * 2018-02-06 2020-11-24 澎峰(北京)科技有限公司 用于深度卷积神经网络的卷积计算方法及装置
CN108171328B (zh) * 2018-03-02 2020-12-29 中国科学院计算技术研究所 一种神经网络处理器和采用其执行的卷积运算方法
CN110263909B (zh) * 2018-03-30 2022-10-28 腾讯科技(深圳)有限公司 图像识别方法及装置
US11580191B1 (en) * 2018-04-26 2023-02-14 Xilinx, Inc. Method and system for convolution
US11645529B2 (en) * 2018-05-01 2023-05-09 Hewlett Packard Enterprise Development Lp Sparsifying neural network models
US11423312B2 (en) * 2018-05-14 2022-08-23 Samsung Electronics Co., Ltd Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
JP2019200675A (ja) * 2018-05-17 2019-11-21 東芝メモリ株式会社 演算デバイス及びデータの処理方法
WO2020003345A1 (ja) * 2018-06-25 2020-01-02 オリンパス株式会社 演算処理装置
US11579921B2 (en) * 2018-08-29 2023-02-14 Alibaba Group Holding Limited Method and system for performing parallel computations to generate multiple output feature maps
CN112602054B (zh) 2018-08-31 2024-06-25 弗莱克斯-罗技克斯技术公司 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic
CN109190755B (zh) * 2018-09-07 2021-07-20 中国科学院计算技术研究所 面向神经网络的矩阵转换装置及方法
US11868875B1 (en) * 2018-09-10 2024-01-09 Amazon Technologies, Inc. Data selection circuit
CN109543830B (zh) * 2018-09-20 2023-02-03 中国科学院计算技术研究所 一种用于卷积神经网络加速器的拆分累加器
WO2020059073A1 (ja) * 2018-09-20 2020-03-26 株式会社Pfu 情報処理装置、方法及びプログラム
CN111260020B (zh) * 2018-11-30 2024-04-16 深圳市海思半导体有限公司 卷积神经网络计算的方法和装置
CN109558329A (zh) * 2018-12-10 2019-04-02 广东浪潮大数据研究有限公司 一种程序检测方法、装置、设备及可读存储介质
JP6741159B1 (ja) * 2019-01-11 2020-08-19 三菱電機株式会社 推論装置及び推論方法
KR102556506B1 (ko) * 2019-01-15 2023-07-19 한국전자통신연구원 뉴로모픽 연산 장치 및 그것의 동작 방법
US11604958B2 (en) 2019-03-13 2023-03-14 Samsung Electronics Co., Ltd. Method and apparatus for processing computation of zero value in processing of layers in neural network
CN110097172B (zh) * 2019-03-18 2021-10-29 中国科学院计算技术研究所 一种基于winograd卷积运算的卷积神经网络数据处理方法及装置
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11645510B2 (en) 2019-04-08 2023-05-09 Mipsology SAS Accelerating neuron computations in artificial neural networks by selecting input data
EP3953867A1 (en) * 2019-04-08 2022-02-16 Mipsology SAS Accelerating neuron computations in artificial neural networks by selecting input data
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
CN110188869B (zh) * 2019-05-05 2021-08-10 北京中科汇成科技有限公司 一种基于卷积神经网络算法的集成电路加速计算的方法及系统
JP7251354B2 (ja) * 2019-06-26 2023-04-04 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
CN111881705B (zh) * 2019-09-29 2023-12-12 深圳数字生命研究院 数据处理、训练、识别方法、装置和存储介质
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
CN112784206A (zh) * 2019-11-01 2021-05-11 中科寒武纪科技股份有限公司 winograd卷积运算方法、装置、设备及存储介质
CN112784207B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算方法及相关产品
CN112765542A (zh) * 2019-11-01 2021-05-07 中科寒武纪科技股份有限公司 运算装置
US12015428B2 (en) * 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
CN111415004B (zh) * 2020-03-17 2023-11-03 阿波罗智联(北京)科技有限公司 用于输出信息的方法和装置
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
KR20220009126A (ko) * 2020-07-15 2022-01-24 삼성전자주식회사 뉴럴 네트워크 연산 처리 장치 및 방법
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
WO2022061867A1 (zh) * 2020-09-28 2022-03-31 深圳市大疆创新科技有限公司 数据处理方法、装置及计算机可读存储介质
US20220164663A1 (en) * 2020-11-24 2022-05-26 Arm Limited Activation Compression Method for Deep Learning Acceleration
CN113657595B (zh) * 2021-08-20 2024-03-12 中国科学院计算技术研究所 基于神经网络实时剪枝的神经网络加速器
US20240048152A1 (en) * 2022-08-03 2024-02-08 Arm Limited Weight processing for a neural network

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60131152D1 (en) * 2000-03-10 2007-12-13 Jaber Associates L L C Paralleles multiprocessing für die fast fourier-transformation mit pipelinearchitektur
US7164741B2 (en) * 2001-05-09 2007-01-16 Signum Concept, Inc. Non-recursive resampling digital fir filter structure for demodulating 3G cellular signals
US20040122887A1 (en) * 2002-12-20 2004-06-24 Macy William W. Efficient multiplication of small matrices using SIMD registers
US7634137B2 (en) * 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
CN101296211A (zh) * 2007-04-28 2008-10-29 北京三星通信技术研究有限公司 3780点离散傅立叶变换处理器
US20100011044A1 (en) * 2008-07-11 2010-01-14 James Vannucci Device and method for determining and applying signal weights
CN103098464A (zh) * 2010-08-04 2013-05-08 Nxp股份有限公司 在频域中具有下采样的视频解码器
WO2017166019A1 (en) * 2016-03-28 2017-10-05 Xiaogang Wang Method and system for pose estimation

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461632B2 (en) 2017-09-25 2022-10-04 Nanjing Horizon Robotics Technology Co., Ltd. Method and apparatus for adapting parameters of neural network
KR20190035556A (ko) * 2017-09-25 2019-04-03 난징 호라이즌 로보틱스 테크놀로지 컴퍼니 리미티드 신경 네트워크의 파라미터들을 적응시키기 위한 방법 및 장치
KR20190072404A (ko) * 2017-12-15 2019-06-25 삼성전자주식회사 딥러닝 가속기를 위한 고 대역폭 메모리 기반 메모리 룩업 엔진
KR20200049695A (ko) * 2018-10-24 2020-05-08 알리바바 그룹 홀딩 리미티드 콘볼루션 뉴럴 네트워크의 고속 계산
KR20200062743A (ko) * 2018-11-27 2020-06-04 한국과학기술원 컨볼루션 신경망 훈련의 다차원 병렬화 방법과 이를 수행하는 장치 사이의 재구성 가능한 연결 구조
KR20200066538A (ko) * 2018-11-30 2020-06-10 한국전자통신연구원 시스톨릭 어레이 구조를 가지는 뉴럴 네트워크 가속기
WO2020262825A1 (ko) * 2019-06-27 2020-12-30 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
KR20210001305A (ko) * 2019-06-27 2021-01-06 에스케이텔레콤 주식회사 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
US11899741B2 (en) 2019-09-19 2024-02-13 Samsung Electronics Co., Ltd. Memory device and method
US11580393B2 (en) 2019-12-27 2023-02-14 Samsung Electronics Co., Ltd. Method and apparatus with neural network data input and output control
US11790232B2 (en) 2019-12-27 2023-10-17 Samsung Electronics Co., Ltd. Method and apparatus with neural network data input and output control
CN111931918A (zh) * 2020-09-24 2020-11-13 深圳佑驾创新科技有限公司 神经网络加速器
CN111931918B (zh) * 2020-09-24 2021-02-12 深圳佑驾创新科技有限公司 神经网络加速器

Also Published As

Publication number Publication date
US20170344876A1 (en) 2017-11-30
CN107451652A (zh) 2017-12-08

Similar Documents

Publication Publication Date Title
KR20170135752A (ko) 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계
US20220237461A1 (en) Optimized neural network input stride method and apparatus
US20210182025A1 (en) Accelerating 2d convolutional layer mapping on a dot product architecture
US20100122070A1 (en) Combined associative and distributed arithmetics for multiple inner products
CN109144469B (zh) 流水线结构神经网络矩阵运算架构及方法
CN110222833B (zh) 一种用于神经网络的数据处理电路
US10810696B2 (en) System and methods for computing 2-D convolutions and cross-correlations
WO2022151779A1 (zh) 卷积运算的实现方法、数据处理方法及装置
US12009948B2 (en) Data processing apparatus and method, base station, and storage medium
KR20220154764A (ko) 추론 엔진 회로 아키텍처
US20220405559A1 (en) Mixed-precision neural network accelerator tile with lattice fusion
KR20210117905A (ko) 가중치 스테이션 내적 기반 CNN 가속기에 3x3, 1x3 및 3x1 필터가 있는 CNN을 위한 위노그라드의 낮은 오버헤드 구현
US20240160483A1 (en) Dnns acceleration with block-wise n:m structured weight sparsity
US20240095518A1 (en) Structured sparse memory hierarchy for deep learning
CN117473212B (zh) Ntt算法的gpu加速方法、装置、设备及存储介质
US20230177321A1 (en) Neural network accelerator with a configurable pipeline
US20230153586A1 (en) Accelerate neural networks with compression at different levels
CN118277328A (zh) 数据处理方法、处理器、芯片及电子设备
CN118052256A (zh) 利用分块n:m结构化权重稀疏性的dnn加速
KR20220166730A (ko) 신경 처리 장치의 코어 및 신경망 계층의 입력 특징 맵 값을 처리하는 방법
CN118296273A (en) Computing unit and method based on data stream and artificial intelligent chip
CN115700605A (zh) 一种应用于卷积神经网络训练的可重构硬件加速器
CN114186679A (zh) 一种基于fpga的卷积神经网络加速器及其优化方法
CN111651138A (zh) 一种集成电路、信号处理方法及装置、存储介质
CN117744724A (zh) 神经处理单元

Legal Events

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