KR20200037748A - 칩 장치 및 관련 제품 - Google Patents

칩 장치 및 관련 제품 Download PDF

Info

Publication number
KR20200037748A
KR20200037748A KR1020197037895A KR20197037895A KR20200037748A KR 20200037748 A KR20200037748 A KR 20200037748A KR 1020197037895 A KR1020197037895 A KR 1020197037895A KR 20197037895 A KR20197037895 A KR 20197037895A KR 20200037748 A KR20200037748 A KR 20200037748A
Authority
KR
South Korea
Prior art keywords
circuits
convolution
data
basic
main circuit
Prior art date
Application number
KR1020197037895A
Other languages
English (en)
Other versions
KR102481256B1 (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 KR20200037748A publication Critical patent/KR20200037748A/ko
Application granted granted Critical
Publication of KR102481256B1 publication Critical patent/KR102481256B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/048Activation functions
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2218/00Aspects of pattern recognition specially adapted for signal processing
    • G06F2218/02Preprocessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 발명은 칩 장치 및 관련 제품을 제공하는바, 상기 칩 장치는 메인 처리 회로 및 복수의 통신 연결이 가능한 기본 처리 회로를 포함하며, 메인 처리 회로는 연산될 데이터 블록 및 연산 명령을 얻고, 상기 연산 명령에 따라 상기 연산될 데이터 블록을 분배 데이터 블록 및 브로드캐스트 데이터 블록으로 구분하며; 상기 분배 데이터 블록에 대해 분할 처리하여 복수의 기본 데이터 블록을 얻고, 상기 복수의 기본 데이터 블록을 상기 복수의 기본 처리 회로에 분배하며, 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 브로드캐스트하는 역할을 한다. 기본 처리 회로는 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 송신하는 역할을 한다. 메인 처리 회로는 상기 연산 결과에 대해 처리하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는다. 본 발명의 과제의 해결수단은 계산 시간이 짧고 전력소모가 낮은 장점을 가진다.

Description

칩 장치 및 관련 제품{CHIP DEVICE AND RELATED PRODUCT}
본 발명은 통신 및 칩 기술 분야에 관한 것으로, 특히 칩 장치 및 관련 제품에 관한 것이다.
인공신경망(Artificial Neural Network, ANN)은 20세기 80년대부터 인공 지능 분야에서 대량 연구되기 시작한 연구 포인트이다. 인공신경망은 정보처리의 관점에서 인간의 뇌의 신경망을 추상화하고 간단한 모델을 만들어 서로 다른 연결 방식에 따라 서로 다른 네트워크를 구성하는 것이다. 공학과 학술계에서는 종종 신경망 또는 인공신경망이라 한다. 신경망은 일종의 연산 모델로서, 대량의 노드(또는 뉴런이라 칭함)의 상호 연결에 의해 구성된다. 기존의 신경망의 연산은 중앙처리장치(Central Processing Unit, CPU) 또는 그래픽처리장치(Graphics Processing Unit,GPU)를 기반으로 하는데, 이러한 연산은 전력소모가 높고 계산 시간이 길다.
본 발명의 실시예는 연산 시간을 절감하고 모듈의 전력소모를 감소시키는 장점을 가진 신경망의 연산 방법 및 관련 제품을 제공한다.
제1양상에서, 본 발명의 실시예는 메인 처리 회로 및 복수의 기본 처리 회로를 포함하는 칩 장치에 적용되는 신경망의 연산 방법에 있어서, 메인 처리 회로가 연산될 데이터 블록 및 연산 명령을 얻고, 상기 연산 명령에 따라 상기 연산될 데이터 블록을 분배 데이터 블록 및 브로드캐스트 데이터 블록으로 구분하는 단계; 메인 처리 회로가 상기 분배 데이터 블록에 대해 분할 처리하여 복수의 기본 데이터 블록을 얻고, 상기 복수의 기본 데이터 블록을 상기 복수의 기본 처리 회로에 분배하며, 메인 처리 회로가 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 브로드캐스트하는 단계; 기본 처리 회로가 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 송신하는 단계; 메인 처리 회로가 상기 연산 결과에 대해 처리하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는 단계를 포함하는 신경망의 연산 방법을 제공한다.
대안적으로, 상기 메인 처리 회로가 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 브로드캐스트하는 단계는,
상기 메인 처리 회로가 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 1회에 브로드캐스트하는 단계를 포함한다.
대안적으로, 상기 기본 처리 회로가 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 송신하는 단계는,
상기 기본 처리 회로가 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 처리를 수행하여 내적 처리 결과를 얻고, 상기 내적 처리 결과를 누적하여 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 송신하는 단계를 포함한다.
대안적으로, 상기 연산 결과는 내적 처리의 결과로서, 상기 메인 처리 회로가 상기 연산 결과를 처리하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는 단계는,
상기 메인 처리 회로가 상기 연산 결과에 대해 누적하여 누적 결과를 얻고, 상기 누적 결과를 배열하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는 단계를 포함한다.
대안적으로, 상기 메인 처리 회로가 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 브로드캐스트하는 단계는,
상기 브로드캐스트 데이터 블록을 복수의 부분 브로드캐스트 데이터 블록으로 분할하고, 상기 복수의 부분 브로드캐스트 데이터 블록을 여러회에 거쳐 상기 복수의 기본 처리 회로에 브로드캐스트하는 단계를 포함한다.
대안적으로, 상기 기본 처리 회로가 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 분배하는 단계는,
상기 기본 처리 회로가 상기 부분 브로드캐스트 데이터 블록과 상기 기본 데이터 블록에 대해 내적 처리를 1회 수행하여 내적 처리 결과를 얻고, 상기 내적 처리 결과를 누적하여 부분 연산 결과를 얻고, 상기 부분 연산 결과를 상기 메인 처리 회로에 송신하는 단계를 포함한다.
대안적으로, 상기 기본 처리 회로가 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 송신하는 단계는,
상기 기본 처리 회로는 상기 부분 브로드캐스트 데이터 블록을 n번 다중화하여 상기 부분 브로드캐스트 데이터 블록과 상기 n개 기본 데이터 블록에 대해 내적 연산을 수행하여 n개 부분 처리 결과를 얻고, 상기 n개 부분 처리 결과를 각각 누적하여 n개 부분 연산 결과를 얻고, 상기 n개 부분 연산 결과를 메인 처리 회로에 송신하는 단계를 포함하며, 상기 n은 2보다 크거나 같은 정수이다.
제2양상에서, 메인 처리 회로 및 복수의 기본 처리 회로를 포함하는 칩 장치에 있어서, 상기 메인 처리 회로는 연산될 데이터 블록 및 연산 명령을 얻고, 상기 연산 명령에 따라 상기 연산될 데이터 블록을 분배 데이터 블록 및 브로드캐스트 데이터 블록으로 구분하며; 상기 분배 데이터 블록에 대해 분할 처리하여 복수의 기본 데이터 블록을 얻고, 상기 복수의 기본 데이터 블록을 상기 복수의 기본 처리 회로에 분배하고, 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 브로드캐스트하며; 상기 기본 처리 회로는 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 상기 메인 처리 회로에 분배하며; 상기 메인 처리 회로는 상기 연산 결과에 대해 처리하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는 칩 장치를 제공한다.
대안적으로, 상기 칩 장치는 메인 처리 회로와 기본 처리 회로 사이에 설치되며 데이터를 전달하는 브랜치 처리 회로를 더 포함한다.
대안적으로, 상기 메인 처리 회로는 구체적으로는 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 1회에 브로드캐스트한다.
대안적으로, 상기 기본 처리 회로는 구체적으로는 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 처리를 수행하여 내적 처리 결과를 얻고, 상기 내적 처리 결과를 누적하여 연산 결과를 얻고, 상기 연산 결과를 상기 메인 처리 회로에 송신한다.
대안적으로, 상기 메인 처리 회로는 상기 연산 결과가 내적 처리의 결과인 경우에 상기 연산 결과를 누적하여 누적 결과를 얻고, 상기 누적 결과를 배열하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는다.
대안적으로, 상기 메인 처리 회로는 구체적으로는 상기 브로드캐스트 데이터 블록을 복수의 부분 브로드캐스트 데이터 블록으로 구분하고, 상기 복수의 부분 브로드캐스트 데이터 블록을 여러회에 거쳐 상기 복수의 기본 처리 회로에 브로드캐스트한다.
대안적으로, 상기 기본 처리 회로는 구체적으로는 상기 부분 브로드캐스트 데이터 블록과 상기 기본 데이터 블록에 대해 내적 처리를 1회 수행하여 내적 처리 결과를 얻고, 상기 내적 처리 결과를 누적하여 부분 연산 결과를 얻고, 상기 부분 연산 결과를 상기 메인 처리 회로에 송신한다.
대안적으로, 상기 기본 처리 회로는 구체적으로는 상기 부분 브로드캐스트 데이터 블록을 n번 다중화하여 상기 부분 브로드캐스트 데이터 블록과 상기 n개 기본 데이터 블록에 대해 내적 연산을 수행하여 n개 부분 처리 결과를 얻고, n개 부분 처리 결과를 각각 누적하여 n개 부분 연산 결과를 얻고, 상기 n개 부분 연산 결과를 메인 처리 회로에 송신하며, 상기 n은 2보다 크거나 같은 정수이다.
대안적으로, 상기 메인 처리 회로는 메인 레지스터 또는 메인 온칩 캐시 회로의 한가지 또는 임의의 조합을 포함하며;
상기 기본 처리 회로는 기본 레지스터 또는 기본 온칩 캐시 회로의 한가지 또는 임의의 조합을 포함한다.
대안적으로, 상기 메인 처리 회로는 벡터 연산자 회로, 산술 논리 유닛 회로, 누산기 회로, 전치 행렬 회로, 직접 메모리 액세스 회로 또는 데이터 재배치 회로중의 한가지 또는 임의의 조합을 포함한다.
대안적으로, 상기 유닛은 내적 연산자 회로 또는 누산기 회로 등 중의 한가지 또는 임의의 조합을 포함한다.
대안적으로, 상기 브랜치 처리 회로는 복수의 브랜치 처리 회로이고, 상기 메인 처리 회로와 상기 복수의 브랜치 처리 회로가 각각 연결되고, 각각의 브랜치 처리 회로는 적어도 하나의 기본 처리 회로와 연결된다.
대안적으로, 상기 브랜치 처리 회로는 복수의 브랜치 처리 회로이고, 상기 복수의 브랜치 처리 회로는 직렬로 연결된 후 상기 메인 처리 회로와 연결되고, 각각의 브랜치 처리 회로는 각각 적어도 하나의 기본 처리 회로에 연결된다.
대안적으로, 상기 브랜치 처리 회로는 구체적으로는 상기 메인 처리 회로와 상기 기본 처리 회로 사이의 데이터를 전달한다.
대안적으로, 상기 브랜치 처리 회로는 구체적으로는 상기 메인 처리 회로와 상기 기본 처리 회로 또는 기타 브랜치 처리 회로 사이의 데이터를 전달한다.
대안적으로, 상기 데이터는 벡터, 행렬, 3차원 데이터 블록, 4차원 데이터 블록 및 n차원 데이터 블록중의 한가지 또는 임의의 조합이다.
대안적으로, 만일 상기 연산 명령이 곱셈 명령이면, 승수 데이터 블록을 브로드캐스트 데이터 블록으로 결정하고, 피승수 데이터 블록을 분배 데이터 블록으로 결정하며;
만일 상기 연산 명령이 컨벌루션 명령이면, 입력 데이터 블록을 브로드캐스트 데이터 블록으로 결정하고, 컨볼루션 커널을 분배 데이터 블록으로 결정한다.
제3양상에서, 제2양상에서 제공하는 행렬 곱셈 행렬 연산, 행렬 곱셈 벡터 연산, 컨볼루션 연산 또는 완전 연결 연산중의 한가지 또는 임의의 조합을 수행하기 위한 칩 장치의 적용 방법을 제공한다.
제4양상에서, 제2양상에서 제공하는 칩 장치를 통합하는 칩을 제공한다.
제5양상에서, 제4양상에서 제공하는 칩을 포함하는 스마트 장치를 제공한다.
본 발명의 실시예는 다음과 같은 유익한 효과를 가진다.
상술한 내용으로부터 알 수 있다 싶이, 본 발명의 실시예는 데이터와 연산 명령을 수신한 후에 데이터를 분배 데이터 및 브로드캐스트 데이터로 구분하고, 분배 데이터를 기본 데이터 블록으로 분할하여 복수의 기본 처리 회로에 분배하여 내적 연산을 수행하며, 이렇게 연산량이 제일 큰 내적 연산을 복수의 기본 처리 회로에 분배하여 동시에 수행하므로 계산시간을 줄이고, 전력 소모를 절감하는 장점이 있다.
도1a는 본 발명에 따른 칩 장치의 구조도이다.
도1b는 본 발명에 따른 다른 한가지 칩 장치의 구조도이다.
도1c는 본 발명에 따른 칩 장치의 데이터 분배 개략도이다.
도1d는 칩 장치의 데이터 반환 개략도이다.
도2는 본 발명의 실시예에 따른 신경망의 연산 방법의 흐름도이다.
도2a는 본 발명의 실시예에 따른 행렬A와 행렬B를 곱한 개략도이다.
도3은 본 발명의 실시예에 따른 신경망의 연산 방법의 흐름도이다.
도3a는 완전 연결1의 단일 샘플 데이터의 개략도이다.
도3b는 완전 연결2의 복수 다중 샘플 데이터의 개략도이다.
도3c는 컨볼루션1의 M개 컨볼루션 커널 데이터의 개략도이다.
도3d는 컨볼루션2의 입력 데이터의 개략도이다.
도3e는 입력 데이터의 하나의 3차원 데이터 블록의 연산 창의 개략도이다.
도3f는 입력 데이터의 하나의 3차원 데이터 블록의 다른 하나의 연산 창의 개략도이다.
도3g는 입력 데이터의 하나의 3차원 데이터 블록의 또 다른 하나의 연산 창의 개략도이다.
이하, 본 발명의 실시예의 도면을 결부하여 본 발명의 실시예의 과제의 해결수단에 대해 명확하고 완전하게 설명하고자 하며, 이러한 실시예는 본 발명의 일부 실시예에 불과한 것으로서 본 발명의 전체 실시예인 것은 아니다. 그리고, 본 발명의 기술 분야의 통상의 지식을 가진 자가 본 발명의 실시예를 기반으로 창의적인 작업을 거치지 않고 취득한 기타 모든 실시예는 모두 본 발명의 보호범위에 속하는 것이 자명하다.
본 발명의 명세서와 특허청구의 범위 및 상기 도면에서 용어 “제1", "제2", "제3" 및 "제4" 등은 상이한 대상을 구분하기 위한 것으로서 특정한 순서를 설명하기 위한 것이 아니다. 또한, "~을 포함"과 "~을 갖는" 및 이와 관련된 모든 변형은 비 배타적인 포함을 가리킨다. 예를 들어, 일련의 단계 또는 유닛을 포함하는 과정, 방법, 시스템, 제품 또는 장비는 열거된 단계 또는 유닛에 의해 한정되는 것이 아니라, 열거되지 않은 다른 단계와 유닛을 대안적으로 더 포함하거나 또는 이러한 과정, 방법, 제품 또는 장비가 고유한 다른 단계와 유닛을 대안적으로 더 포함한다.
본 명세서에서 언급하는 "실시예"는 실시예를 결부하여 설명한 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있다는 것을 의미한다. 명세서의 여러 곳에 나타난 상기 문구는 모두 동일한 실시예를 가리키는 것이 아니고, 다른 실시예와 서로 배척하는 독립적인 실시예 또는 대안적인 실시예를 가리키는 것도 아니다. 본 발명의 기술 분야의 통상의 지식을 가진 자는 여기서 설명된 실시예가 다른 실시예와 결합 될 수 있음을 명시적 또는 암시적으로 이해할 수 있을 것이다.
이하, CPU를 예를 들어 신경망의 연산 방법을 설명하면, 신경망에서 행렬과 행렬의 곱셈이 대량으로 사용되는데, 여기에서 행렬A와 행렬B의 곱셈을 예를 들어 CPU의 “앤드(AND)"의 연산 방식을 설명한다. 아래에 표시한 바와 같이, 행렬A와 행렬B의 결과가 C, 즉 C=A*B라고 가정할 경우,
Figure pat00001
CPU의 경우, 먼저 첫번째 행에 대해 계산을 완성한 다음에 두번째 행에 대해 계산을 완성하고, 그 다음에 세번째 행에 대해 계산을 완성하는 단계를 거쳐 C를 얻는데, 다시 말하면, CPU는 연산 시에 한 행의 데이터에 대해 계산을 완성한 후에 다시 두번째 행에 대해 계산을 수행한다. 상기 공식을 예를 들면, 구체적으로는 CPU가 먼저 첫번째 행에 대해 계산을 완성하는바, 다시 말하면
Figure pat00002
Figure pat00003
에 대해 계산을 완성하며; 상기 계산을 완성한 후에, 다시
Figure pat00004
Figure pat00005
에 대해 계산하며; 마지막으로
Figure pat00006
,
Figure pat00007
Figure pat00008
에 대해 계산한다.
따라서, CPU 또는 GPU의 경우, 한 행씩 계산하는데, 다시 말하면, 첫번째 행에 대해 계산을 완성한 후에 다시 두번째 행에 대해 계산하고, 그 다음에 세번째 행에 대해 계산하는바, 이런 방식으로 모든 행에 대해 계산을 완성하며, 신경망에 있어서 무려 몇천행의 데이터가 있을 수 있기 때문에 계산 시간이 매우 길며, 또한 계산 시에 CPU가 장시간 작동상태에 있어 전력소모가 높다.
메인 유닛은 하나의 하드웨어 유닛에 속하기에 메인 처리 회로라 칭할 수 있고, 기본 유닛도 하나의 하드웨어 유닛에 속하기에 기본 처리 회로라 칭할 수 있으며, 이와 유사하게 브랜치 유닛도 브랜치 처리 회로라 칭할 수 있다.
도1b를 참조하면, 도1b는 칩 장치의 구조도이며, 도1b에서 도시한 바와 같이, 상기 칩 장치는 메인 처리 회로, 기본 처리 회로 및 브랜치 처리 회로를 포함한다. 상기 메인 처리 회로는 레지스터 및/또는 온칩 캐시 회로를 포함할 수 있고, 상기 메인 처리 회로는 또한 벡터 연산자 회로, ALU(arithmetic and logic unit, 산술 논리 유닛)회로, 누산기 회로, DMA(Direct Memory Access, 직접 메모리 액세스)회로를 포함할 수 있으며, 물론 실제 적용과정에서 상기 메인 처리 회로에 변환 회로(예를 들어, 전치 행렬 회로), 데이터 재배치 회로 또는 활성 회로 등 기타 회로를 추가할 수도 있다.
매개 기본 처리 회로는 기본 레지스터 및/또는 기본 온칩 캐시 회로를 포함할 수 있고; 매개 기본 처리 회로는 또한 내적 연산자 회로, 벡터 연산자 회로, 누산기 회로 등 중의 한가지 또는 임의의 조합을 포함할 수 있다. 상기 회로는 모두 집적 회로일 수 있다. 브랜치 처리 회로를 가지는 경우, 메인 처리 회로와 브랜치 처리 회로가 연결되고, 상기 브랜치 처리 회로와 기본 처리 회로가 연결되며, 상기 기본 처리 회로는 데이터 블록 사이의 내적 연산을 수행하고, 상기 메인 처리 회로는 외부 데이터를 송수신하고 또한 외부 데이터를 브랜치 처리 회로에 분배하며, 상기 브랜치 처리 회로는 메인 처리 회로 또는 기본 처리 회로의 데이터를 송수신한다. 도1b에서 도시한 구조는 복잡한 데이터의 계산에 적합한바, 왜냐하면, 메인 처리 회로에 연결되는 유닛의 수량이 제한되어 있기에 메인 처리 회로와 기본 처리 회로 사이에 브랜치 처리 회로를 추가하여 더욱 많은 기본 처리 회로의 접속을 달성하고, 이를 통해 복잡한 데이터 블록에 대한 계산을 실현할 수 있기 때문이다.
브랜치 처리 회로와 기본 처리 회로의 연결구조는 임의적일 수 있으며, 도1b의 H형 구조에 한정되는 것이 아니다. 대안적으로, 메인 처리 회로부터 기본 처리 회로까지는 브로드캐스트 또는 분배 구조이고, 기본 처리 회로부터 메인 처리 회로까지는 수집(gather) 구조이다. 브로드캐스트, 분배 및 수집의 정의는 다음과 같다.
상기 메인 처리 회로부터 기본 처리 회로까지의 데이터 전송 방식은,
메인 처리 회로가 복수의 브랜치 처리 회로와 각각 연결되고, 매개 브랜치 처리 회로가 다시 복수의 기본 처리 회로와 각각 연결되는 방식을 포함할 수 있다.
메인 처리 회로가 하나의 브랜치 처리 회로와 서로 연결되고, 상기 브랜치 처리 회로가 다시 하나의 브랜치 처리 회로와 연결되는데, 이러한 방식으로 복수의 브랜치 처리 회로가 직렬 연결되며, 그 다음에 매개 브랜치 처리 회로가 다시 복수의 기본 처리 회로와 각각 연결된다.
메인 처리 회로가 복수의 브랜치 처리 회로와 각각 연결되고, 매개 브랜치 처리 회로가 다시 복수의 기본 처리 회로와 직렬 연결된다.
메인 처리 회로가 하나의 브랜치 처리 회로와 서로 연결되고, 상기 브랜치 처리 회로가 다시 하나의 브랜치 처리 회로와 연결되는데, 이러한 방식으로 복수의 브랜치 처리 회로가 직렬 연결되며, 그 다음에 매개 브랜치 처리 회로가 다시 복수의 기본 처리 회로와 직렬 연결된다.
데이터 분배시에 메인 처리 회로가 일부분 또는 전부 기본 처리 회로에 데이터를 전송하며, 각 기본 처리 회로가 수신한 데이터가 서로 다를 수 있고;
데이터 브로드캐스트시에 메인 처리 회로가 일부분 또는 전부 기본 처리 회로에 데이터를 전송하며, 각 기본 처리 회로가 동일한 데이터를 수신한다.
데이터 수집시에 일부분 또는 전부의 기본 처리 회로가 메인 처리 회로에 데이터를 전송한다. 설명이 필요한 것은, 도1a 또는 도1b에서 도시한 바와 같은 칩 장치는 하나의 단일 물리적 칩일 수 있고, 실제의 적용과정에서 상기 칩 장치는 다른 칩 내부(예를 들어, CPU,GPU)에 통합될 수도 있으며, 본 출원의 구체적인 실시예에서는 상기 칩 장치의 물리적 구현방식에 대해 한정하지 않는다.
도1c를 참조하면, 도1c는 칩 장치의 데이터 분배 개략도이며, 도1c의 화살표를 참조하면, 상기 화살표는 데이터의 분배 방향이고, 도1c에서 도시한 바와 같이, 메인 처리 회로는 외부 데이터를 수신한 후, 외부 데이터를 분할하여 복수의 브랜치 처리 회로에 분배하고, 브랜치 처리 회로는 분할 데이터를 기본 처리 회로에 송신한다.
도1d를 참조하면, 도1d는 칩 장치의 데이터 반환 개략도이며, 도1d의 화살표를 참조하면, 상기 화살표는 데이터의 반환 방향이고, 도1d에서 도시한 바와 같이, 기본 처리 회로는 데이터(예를 들어, 내적 계산 결과)를 브랜치 처리 회로에 반환하고, 브랜치 처리 회로가 다시 메인 처리 회로에 반환한다.
도1a를 참조하면, 도1a는 다른 한가지 칩 장치의 구조도이며, 상기 칩 장치는 메인 처리 회로 및 기본 처리 회로를 포함하고, 상기 메인 처리 회로가 기본 처리 회로와 연결된다. 도1a의 구조는 기본 처리 회로와 메인 처리 회로가 직접 물리적으로 연결되기에 상기 구조에 연결되는 기본 처리 회로의 수량이 제한되므로 간단한 데이터의 계산에 적합하다.
도2를 참조하면, 도2는 상기 칩 장치를 사용한 신경망의 연산 방법을 제공하며, 상기 방법은 도1a 또는 도1b의 칩 장치를 사용하여 수행하며, 상기 방법은 도2에서 도시한 바와 같이 다음과 같은 단계를 포함한다.
단계 S201, 칩 장치의 메인 처리 회로가 연산될 데이터 블록 및 연산 명령을 취득한다.
상기 단계 S201의 연산될 데이터 블록은 구체적으로는 행렬, 벡터, 3차원 데이터, 4차원 데이터, 다차원 데이터 등 일 수 있고, 본 발명의 구체적인 실시방식에서는 상기 데이터 블록의 구체적인 구현방식에 대해 제한하지 않으며, 상기 연산 명령은 구체적으로는 곱셈 명령, 컨벌루션 명령, 가산 명령, 뺄셈 명령, 기본 선형 대수 서브루틴(Basic Linear Algebra Subprograms, BLAS)함수 또는 활성 함수 등 일 수 있다.
단계 S202, 메인 처리 회로가 상기 연산 명령에 따라 연산될 데이터 블록을 분배 데이터 블록 및 브로드캐스트 데이터 블록으로 구분한다.
상기 단계 S202의 구현방식은 구체적으로는 다음과 같다.
만일 상기 연산 명령이 곱셈 명령일 경우, 승수 데이터 블록을 브로드캐스트 데이터 블록으로 결정하고, 피승수 데이터 블록을 분배 데이터 블록으로 결정한다.
만일 상기 연산 명령이 컨벌루션 명령일 경우, 입력 데이터 블록을 브로드캐스트 데이터 블록으로 결정하고, 컨볼루션 커널을 분배 데이터 블록으로 결정한다.
단계 S2031, 메인 처리 회로가 상기 분배 데이터 블록에 대해 분할 처리하여 복수의 기본 데이터 블록을 얻고, 상기 복수의 기본 데이터 블록을 복수의 기본 처리 회로에 분배한다.
단계 S2032, 메인 처리 회로가 상기 브로드캐스트 데이터 블록을 복수의 기본 처리 회로에 브로드캐스트한다.
대안적으로, 상기 단계 S2031 및 단계 S2032는 루핑 수행의 방식을 이용할 수도 있는데, 데이터량이 비교적 큰 경우, 메인 처리 회로가 상기 분배 데이터 블록에 대해 분할처리하여 복수의 기본 데이터 블록을 얻고, 매개 기본 데이터 블록을 m개 기본 데이터 서브 블록으로 분할하고, 브로드캐스트 데이터 블록도 m개 브로드캐스트 데이터 서브 블록으로 분할하며, 메인 처리 회로가 매번마다 매개 기본 데이터 블록의 하나의 기본 데이터 서브 블록을 분배하고 또한 하나의 브로드캐스트 데이터 서브 블록을 브로드캐스트하며, 상기 기본 데이터 서브 블록과 브로드캐스트 데이터 서브 블록은 모두 병렬 신경망 계산을 수행할 수 있는 데이터 블록이다. 예를 들어, 1000*1000행렬A*1000*1000행렬B의 경우, 상기 기본 데이터 블록은 행렬A의 제z행의 데이터일 수 있고, 상기 기본 데이터 서브 블록은 행렬A의 제z행 데이터의 앞부분의 20열의 데이터일 수 있고, 상기 브로드캐스트 데이터 서브 블록은 행렬B의 제z열의 앞부분의 20행의 데이터일 수 있다.
상기 단계 S203의 기본 데이터 블록은 구체적으로는 내적 연산을 수행할 수 있는 최소 데이터 블록일 수 있는데, 행렬 곱셈의 경우, 상기 기본 데이터 블록은 행렬의 한행의 데이터일 수 있고, 컨볼루션의 경우, 상기 기본 데이터 블록은 하나의 컨볼루션 커널의 가중치일 수 있다.
상기 단계 S203의 분배 방식은 하기 실시예의 설명을 참조할 수 있고, 여기서는 더 이상 반복하여 설명하지 않으며, 상기 브로드캐스트 데이터 블록을 브로드캐스트하는 방법도 하기 실시예의 설명을 참조할 수 있고, 여기서는 더 이상 반속하여 설명하지 않는다.
단계 S2041, 칩 장치의 기본 처리 회로가 상기 기본 데이터 블록과 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과(중간 결과일 수 있음)를 얻는다.
단계 S2042, 만일 연산 결과가 중간 결과가 아니면 연산 결과를 메인 처리 회로로 반환한다.
상기 단계 S204의 반환 방식은 하기 실시예의 설명을 참조할 수 있으며, 여기서는 더 이상 반복하여 설명하지 않는다.
단계 S205, 메인 처리 회로가 상기 연산 결과에 대해 처리하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는다.
상기 단계 S205의 처리 방식은 누적, 정렬 등의 방식일 수 있고, 본 발명에서는 상기 처리 방식에 한정되는 것이 아니며, 상기 구체적인 방식은 부동한 연산 명령에 따라 설정하는데, 예를 들면, 비선형 변환 수행 등 방식을 포함할 수도 있다.
본 발명의 과제의 해결수단에 따르면, 연산 수행 시, 메인 처리 회로가 연산될 데이터 블록 및 연산 명령을 포함하는 외부 데이터를 수신하고, 연산될 데이터 블록 및 연산 명령을 얻은 후, 상기 연산 명령에 의해 상기 연산될 데이터 블록의 분배 데이터 블록 및 브로드캐스트 데이터 블록을 결정하고, 분배 데이터 블록을 복수의 기본 데이터 블록으로 분할하고, 브로드캐스트 데이터 블록을 복수의 기본 처리 회로에 브로드캐스트하고, 복수의 기본 데이터 블록을 복수의 기본 처리 회로에 분배하고, 복수의 기본 처리 회로가 상기 기본 데이터 블록 및 브로드캐스트 데이터 블록에 대해 각각 내적 연산을 수행하여 연산 결과를 얻고, 복수의 기본 처리 회로가 상기 연산 결과를 메인 처리 회로에 반환하며, 메인 처리 회로가 반환된 연산 결과에 의해 상기 연산 명령의 명령 결과를 얻는다. 해당 과제의 해결수단의 기술적 특징은, 신경망에 있어서 대량의 연산량은 주로 데이터 블록과 데이터 블록 사이의 내적 연산인데, 내적 연산은 부하가 크고 계산시간이 길기 때문에, 본 발명의 실시예에서는 상기 연산 명령 및 연산될 데이터를 통해 먼저 상기 연산될 데이터 블록 중의 분배 데이터 블록 및 브로드캐스트 데이터 블록을 구분하고, 브로드캐스트 데이터 블록은 내적 연산을 실현하기 위해 반드시 사용되는 데이터 블록이고 분배 데이터 블록은 내적 연산에서 분할 가능한 데이터 블록이며, 행렬 곱셈을 예를 들 경우, 연산될 데이터 블록이 행렬A와 행렬B이고 연산 명령은 곱셈 명령(A*B)이면, 행렬 곱셈의 규칙에 따라 행렬A를 분할 가능한 분배 데이터 블록으로 결정하고, 행렬B를 브로드캐스트의 데이터 블록으로 결정하며, 행렬 곱셈의 경우, 피승수 행렬A를 복수의 기본 데이터 블록으로 분할할 수 있기 때문에, 승수 행렬B는 브로드캐스트 데이터 블록일 수 있다. 행렬 곱셈의 정의에 따르면, 피승수 행렬A는 매개 행의 데이터가 각각 승수 행렬B와 내적 연산을 수행해야 하기 때문에, 본 출원의 과제의 해결수단은 행렬A를 M개 기본 데이터 블록으로 분할하고, M개 기본 데이터 블록의 매개 기본 데이터 블록은 행렬A의 한 행의 데이터일 수 있다. 따라서, 행렬 곱셈의 경우, 시간이 많이 소요되는 연산시간이 복수의 기본 처리 회로에 의해 각각 수행되기 때문에, 내적 연산에서 복수의 기본 처리 회로에 의해 신속히 병렬 연산을 수행하여 결과를 얻고 계산시간을 단축하며, 이에 따라 칩 장치의 동작시간을 감소하고 전력소모를 절감한다.
이하, 본 발명에 의해 제공되는 과제의 해결수단의 효과를 실제적인 예로서 설명한다. 도2a는 행렬A와 벡터B를 곱한 개략도이며, 도2a를 참조하면, 행렬A는 M행과 L열을 가지고, 벡터B는 L행을 가지며, 연산자가 행렬A의 한 행과 벡터B의 내적 연산에 소요되는 시간이 t1이라고 가정하면, CPU 또는 GPU를 사용하여 계산하는 경우, 한 행을 계산한 후에 다시 다음 한 행을 계산하기 때문에, GPU 또는 CPU계산 방법의 계산시간은 T0=M*t1이다. 그러나, 본 발명의 구체적인 실시예에서 제공하는 과제의 해결수단에 따르면, 기본 처리 회로를 M개 가진다고 가정할 경우, 행렬A가 M개 기본 데이터 블록으로 분할되고, 매개 기본 데이터 블록은 행렬A의 한 행의 데이터이고, M개 기본 처리 회로가 동시에 내적 연산을 수행하며, 그렇다면 계산시간을 t1이라 할 경우, 본 발명의 구체적인 실시예에서 제공하는 과제의 해결수단에 따른 소요되는 시간은 T1=t1+t2+t3이며, 상기 t2은 메인 처리 회로가 데이터를 분할하는데 소요되는 시간일 수 있고, t3은 내적 연산의 연산 결과를 처리하여 명령 결과를 얻는데 소요되는 시간일 수 있으며, 데이터 분할 및 연산 결과의 처리에 필요한 계산량이 매우 적어서 이에 소요되는 시간이 매우 짧기 때문에, T0>>T1이며, 따라서 본 발명의 구체적인 실시예에서 제공하는 과제의 해결수단에 따르면 계산시간이 매우 현저하게 단축되는 동시에, 연산될 데이터에 의해 발생하는 전력소모의 경우, T0>>T1이기 때문에, 본 발명에서 제공하는 칩 장치의 동작시간이 매우 짧고, 실험에 의해 입증한 바, 칩 장치의 동작시간이 매우 짧을 경우 전력소모가 동작시간이 긴 경우의 전력소모에 비해 현저하게 낮고, 전력소모가 감소되는 장점을 가진다.
상기 단계 S203에서 메인 처리 회로가 상기 브로드캐스트 데이터 블록을 복수의 기본 처리 회로에 브로드캐스트하는 구현방식에는 다양한 방식이 존재하는데, 구체적으로는 다음과 같은 방식일 수 있다.
방법A, 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 1회에 브로드캐스트하는 방식(상기 브로드캐스트는 "일대다(one-to-many)"의 데이터 전송을 가리키는데, 다시 말하면, 메인 처리 회로가 동시에 복수의 (전부 또는 일부분)기본 처리 회로에 동일한 데이터 블록을 송신하는 것)이다. 예를 들면, 행렬A*행렬B의 경우, 상기 행렬B가 브로드캐스트 데이터 블록이고, 행렬B를 상기 복수의 기본 처리 회로에 1회에 브로드캐스트하거나 또한 컨볼루션의 경우, 상기 입력 데이터가 브로드캐스트 데이터 블록이고, 상기 입력 데이터 블록을 상기 복수의 기본 처리 회로에 1회에 브로드캐스트하는 것이다. 이 방식은 메인 처리 회로와 기본 처리 회로의 데이터 전송량을 감소하는 장점을 가지는데, 다시 말하면, 한번 브로드캐스트하는 것을 통해 모든 브로드캐스트 데이터를 복수의 기본 처리 회로에 전송한다.
방식B, 브로드캐스트 데이터 블록을 복수의 부분 브로드캐스트 데이터 블록으로 분할하고, 복수의 부분 브로드캐스트 데이터 블록을 여러번 브로드캐스트하여 상기 복수의 기본 처리 회로에 브로드캐스트하는데, 예를 들면, 행렬B가 여러번의 브로드캐스트를 통해 상기 복수의 기본 처리 회로에 브로드캐스트되며, 구체적으로는 매번마다 행렬B의 N열의 데이터를 브로드캐스트한다. 이 방식은 기본 처리 회로의 사양을 줄일 수 있는 장점을 가지는데, 왜냐하면, 기본 처리 회로에 배치되는 레지스터의 저장공간이 제한되기에, 데이터량이 비교적 큰 행렬B의 경우, 행렬B를 1회에 기본 처리 회로에 발송하게 되면, 기본 처리 회로가 이러한 데이터를 저장하기에 비교적 큰 레지스터 공간이 필요하며, 게다가 기본 처리 회로의 수량이 매우 많기 때문에, 레지스터 공간을 증가하면 불가피하게 원가를 향상시키게 되며, 따라서, 이 경우에 상기 브로드캐스트 데이터 블록을 여러번 브로드캐스트하는 해결수단을 이용하면, 기본 처리 회로가 매번 브로드캐스트되는 브로드캐스트 데이터 블록의 일부분 데이터만 저장하면 되기 때문에 원가를 절감한다.
설명이 필요한 것은, 상기 단계 S203의 복수의 기본 데이터 블록을 복수의 기본 처리 회로에 분배하는 방식은 상기 방식A 또는 방식B를 이용할 수 있는데, 방식A 와 방식B는 전송방식이 유니캐스트방식이고 또한 전송하는 데이터가 기본 데이터 블록이라는 점에서 차이가 난다.
상기 단계 S204의 구현방식은 구체적으로는 다음과 같다.
방식A를 이용하여 상기 브로드캐스트 데이터 블록을 브로드캐스트하고, 또한 방식A의 방식으로 기본 데이터 블록(도3a 참조)을 분배할 경우, 기본 처리 회로가 상기 기본 데이터 블록과 브로드캐스트 데이터 블록에 대해 내적 처리를 수행하여 내적 처리 결과를 얻는데, 다시 말하면, 한번에 한 행의 내적 연산을 수행하고, 상기 내적 처리 결과(연산 결과의 한가지)를 메인 처리 회로에 송신하고, 메인 처리 회로가 내적 처리 결과를 누적하며, 물론 실제 적용과정에서, 상기 기본 처리 회로는 상기 내적 처리 결과를 누적 후, 누적 후의 결과(연산 결과의 다른 한가지)를 메인 처리 회로에 송신할 수도 있다. 상기 방식은 메인 처리 회로와 기본 처리 회로 사이의 데이터 전송량을 감소하여, 이에 따라 계산속도를 향상시킬 수 있다.
방식B를 이용하여 데이터 블록을 브로드캐스트할 경우, 대안적인 과제의 해결수단에서, 기본 처리 회로는 부분 브로드캐스트 데이터 블록을 수신할 때마다 기본 데이터 블록과 부분 브로드캐스트 데이터 블록의 부분 내적 연산을 1회 수행하여 부분 처리 결과를 얻고, 기본 처리 회로가 상기 처리결과를 메인 처리 회로에 송신하고, 메인 처리 회로가 처리결과를 누적한다. 다른 하나의 대안적인 과제의 해결수단에서, 기본 처리 회로가 수신한 기본 데이터 블록이 n개일 경우, 상기 브로드캐스트 데이터 블록을 다중화하여 상기 브로드캐스트 데이터 블록과 상기 n개 기본 데이터 블록에 대해 내적 연산을 수행하여 n개 부분 처리 결과를 얻고, 기본 처리 회로가 상기 n개 처리결과를 메인 처리 회로에 송신하고, 메인 처리 회로가 n개 처리결과를 각각 누적한다. 물론, 상기 누적은 기본 처리 회로에서 수행될 수도 있다.
상기한 바와 같은 경우, 브로드캐스트 데이터 블록의 데이터량이 매우 크고 분배 데이터 블록도 매우 큰데, 칩 장치가 하드웨어 사양에 속하기 때문에 상기 사양에 따른 기본 처리 회로가 비록 이론적으로 무한개이지만, 실제로 그 수량이 제한되는데, 일반적으로 기본 처리 회로가 몇십개이고, 상기 수량 또한 기술의 발전과 더불어 부단히 변화되는바, 예를 들어, 증가될 수 있다. 다만, 신경망의 행렬 곱셈 행렬의 연산에서 상기 행렬A의 행수가 수천행일 수 있고, 행렬B의 열수도 수천열일 수 있기 때문에, 데이터를 한번 브로드캐스트하는 것을 통해 행렬B를 기본 처리 회로에 송신한다는 것은 실현할 수 없는 것이므로, 다음과 같은 구현방식을 이용할 수 있다. 즉, 한번에 행렬B의 일부분 데이터를 브로드캐스트하는 방식인데, 예를 들어, 앞부분의 5열의 데이터를 브로드캐스트할 수 있으며, 행렬A의 경우에도 이와 유사한 방식을 이용할 수 있는데, 기본 처리 회로의 경우, 매번 일부분 내적 계산을 수행한 후에 일부분 내적 계산 결과를 레지스터에 저장하고, 상기 행의 모든 내적 연산을 수행한 다음에 상기 모든 부분의 내적 계산 결과를 누적하여 하나의 연산 결과를 얻고, 상기 연산 결과를 메인 처리 회로에 송신한다. 이 방식은 연산속도를 향상시키는 장점을 가진다.
도3을 참조하면, 도3은 신경망의 연산 방법을 제공하는바, 본 실시예에서의 계산은 행렬A*행렬B의 계산방식을 통해 설명하며, 상기 행렬A*행렬B는 도2a에서 도시한 행렬도일 수 있고, 설명의 편리를 위해, 도3에서 도시한 신경망의 계산방법을 도1b에서 도시한 칩 장치 내부에서 수행하며, 도1b에서 도시한 바와 같이, 상기 칩 장치는 16개의 기본 처리 회로를 가지며, 설명과 분배의 편리를 위해, 여기서 설정하는 도3a에서 도시한 바와 같은 M의 값은 32일 수 있고, 상기 N의 값은 15일 수 있고, L의 값은 20일 수 있다. 물론, 컴퓨팅 장치는 임의의 복수의 기본 처리 회로를 가질 수 있다는 것을 이해해야 한다. 도3에서 도시한 바와 같이, 상기 방법은 다음과 같은 단계를 포함한다.
단계 S301, 메인 처리 회로가 행렬A, 행렬B 및 곱셈 연산 명령A*B를 수신한다.
단계 S302, 메인 처리 회로가 곱셈 연산 명령A*B에 따라 행렬B를 브로드캐스트 데이터 블록으로 결정하고, 행렬A를 분배 데이터 블록으로 결정하며, 행렬A를 32개 기본 데이터 블록으로 분할하고, 매개 기본 데이터 블록은 행렬A의 한 행의 데이터이다.
단계 S303, 메인 처리 회로가 32개 기본 데이터 블록을 16개 기본 처리 회로에 균일하게 분배하는데, 다시 말하면, 매개 기본 처리 회로가 2개 기본 데이터 블록을 수신하며, 이 2개 데이터 블록의 분배방식은 임의의 중복되지 않는 순서에 따라 분배하는 방식일 수 있다.
상기 단계 S303의 분배방식은 일부 기타 분배방식을 이용할 수 있는데, 예를 들면, 데이터 블록의 수량이 매개 기본 처리 회로에 균일하게 분배할 수 없는 수량일 경우, 데이터 블록을 매개 기본 처리 회로에 균일하게 분배하지 않을 수 있고; 또한 일부 균일하게 분배할 수 없는 데이터 블록을 분할한 후에 균일하게 분배하는 방식을 이용할 수도 있는데, 본 발명의 구체적인 실시예에서는 상기 기본 데이터 블록을 복수의 기본 처리 회로에 분배하는 방식에 대해 한정하지 않는다.
단계 S304, 메인 처리 회로가 행렬B의 앞부분의 몇개 열(예를 들면, 앞부분의 5개 열일 수 있으며, 설명의 편리를 위해, 이하에서는 행렬B의 5개 열을 추출하는 경우를 예를 든다)의 일부분 데이터를 추출하며, 행렬B는 앞부분의 5개 열의 일부분 데이터를 16개 기본 처리 회로에 브로드캐스트한다.
단계 S305, 16개 기본 처리 회로가 상기 앞부분의 5개열의 부분 데이터와 2개 기본 데이터 블록에 대해 2차 다중화하여 내적 연산 및 누적 연산을 수행하여 32*5개 앞부분 처리 결과를 얻고, 32*5개 앞부분 처리 결과를 메인 처리 회로에 송신한다.
단계 S306, 메인 처리 회로가 행렬B의 가운데 부분의 5개 열의 부분 데이터를 추출하며, 행렬B는 가운데 부분의 5개 열의 일부분 데이터를 16개 기본 처리 회로에 브로드캐스트한다.
단계 S307, 16개 기본 처리 회로가 상기 가운데 부분의 5개 열의 부분 데이터와 2개 기본 데이터 블록에 대해 2차 다중화하여 내적 연산 및 누적 연산을 수행하여 32*5개 가운데 부분 처리결과를 얻고, 32*5개 가운데 부분 처리결과를 메인 처리 회로에 송신한다.
단계 S308, 메인 처리 회로가 행렬B의 뒷부분의 5개 열의 부분 데이터를 추출하며, 행렬B는 뒷부분의 5개 열의 부분 데이터를 16개 기본 처리 회로에 브로드캐스트한다.
단계 S309, 16개 기본 처리 회로가 상기 뒷부분의 5개 열의 부분 데이터와 2개 기본 데이터 블록에 대해 2차 다중화하여 내적 연산 및 누적 연산을 수행하여 32*5개 뒷부분 처리결과를 얻고, 32*5개 뒷부분 처리결과를 메인 처리 회로에 송신한다.
단계 S310, 메인 처리 회로가 32*5개 앞부분 처리 결과, 32*5개 가운데 부분 처리 결과 및 32*5개 뒷부분 처리 결과를 앞부분, 가운데 부분, 뒷부분에 따라 조합하여 32*15의 행렬C를 얻고, 상기 행렬C가 바로 행렬A*행렬B 명령의 명령 결과이다.
설명이 필요한 것은, 본 실시예에서는 예시적으로 행렬B의 15개 열을 앞부분의 5개 열, 가운데 부분의 5개 열 및 뒷부분의 5개 열로 구분한다. 기타 실시예에서도 구체적인 상황에 따라 행렬B에 대해 유연하게 구분할 수 있다.
도3의 과제의 해결수단에 따르면, 행렬A를 32개 기본 데이터 블록으로 분할한 후, 행렬B를 몇차례로 브로드캐스트하여 기본 처리 회로가 몇차례로 명령 결과를 얻게 하며, 상기 내적을 16개 기본 처리 회로로 분할하여 계산하기 때문에, 계산 시간을 현저히 단축시키며, 이에 따라, 계산 시간이 짧고 전력소모가 낮은 장점을 가진다.
도1a를 참조하면, 도1a는 본 발명의 칩 장치이며, 상기 칩 장치는 메인 처리 회로 및 기본 처리 회로를 포함하고, 상기 메인 처리 회로는 하드웨어 칩 유닛이고, 상기 기본 처리 회로도 하드웨어 칩 유닛이며;
상기 메인 처리 회로는 신경망 연산중의 각각의 연속적인 연산을 수행하고, 상기 기본 처리 회로와 데이터를 전송하며;
상기 기본 처리 회로는 상기 메인 처리 회로가 전송한 데이터에 의해 신경망중의 병렬 가속 연산을 수행하며, 연산 결과를 상기 메인 처리 회로에 전송한다.
상기 병렬 가속 연산은 데이터 블록과 데이터 블록 사이의 곱셈 연산, 컨볼루션 연산 등 대규모의 병렬 가능한 연산을 포함하지만, 이에 한정되는 것은 아니다.
상기 각각의 연속적인 연산은 누적 연산, 전치 행렬 연산, 데이터 정렬 연산 등 연속적인 연산을 포함하지만, 이에 한정되는 것은 아니다.
상기 칩 장치는 연산될 데이터 블록 및 연산 명령을 얻고, 상기 연산 명령에 의해 상기 연산될 데이터 블록을 분배 데이터 블록 및 브로드캐스트 데이터 블록을로 구분하고, 상기 분배 데이터 블록에 대해 분할 처리하여 복수의 기본 데이터 블록을 얻고, 상기 복수의 기본 데이터 블록을 상기 복수의 기본 처리 회로에 분배하고, 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 브로드캐스트하는 메인 처리 회로; 및, 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 연산을 수행하여 연산 결과를 얻고, 상기 연산 결과를 상기 메인 처리 회로에 송신하는 복수의 기본 처리 회로를 포함하며, 상기 메인 처리 회로는 상기 연산 결과에 대해 처리하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는다.
대안적으로, 상기 칩 장치는 메인 처리 회로와 기본 처리 회로 사이에 설치되며, 데이터를 전달하는 브랜치 처리 회로를 더 포함한다.
대안적으로, 상기 메인 처리 회로는 구체적으로는 상기 브로드캐스트 데이터 블록을 상기 복수의 기본 처리 회로에 1회에 브로드캐스트한다.
대안적으로, 상기 기본 처리 회로는 구체적으로는 상기 기본 데이터 블록과 상기 브로드캐스트 데이터 블록에 대해 내적 처리를 수행하여 내적 처리 결과를 얻고, 상기 내적 처리 결과를 누적하여 연산 결과를 얻으며, 상기 연산 결과를 상기 메인 처리 회로에 송신한다.
대안적으로, 상기 연산 결과가 내적 처리 결과 일 경우, 상기 메인 처리 회로는 상기 연산 결과에 대해 누적하여 누적 결과를 얻고, 상기 누적 결과를 배열하여 상기 연산될 데이터 블록 및 연산 명령의 명령 결과를 얻는다.
대안적으로, 상기 메인 처리 회로는 구체적으로는 상기 브로드캐스트 데이터 블록을 복수의 부분 브로드캐스트 데이터 블록으로 분할하고, 상기 복수의 부분 브로드캐스트 데이터 블록을 여러회에 거쳐 상기 복수의 기본 처리 회로에 브로드캐스트한다.
대안적으로, 상기 기본 처리 회로는 구체적으로는 상기 부분 브로드캐스트 데이터 블록과 상기 기본 데이터 블록에 대해 내적 처리를 1회 수행하여 내적 처리 결과를 얻고, 상기 내적 처리 결과를 누적하여 부분 연산 결과를 얻고, 상기 부분 연산 결과를 상기 메인 처리 회로에 송신한다.
대안적으로, 상기 기본 처리 회로는 구체적으로는 상기 부분 브로드캐스트 데이터 블록를 n번 다중화하여 상기 부분 브로드캐스트 데이터 블록과 상기 n개 기본 데이터 블록에 대해 내적 연산을 수행하여 n개 부분 처리 결과를 얻고, n개 부분 처리 결과를 각각 누적하여 n개 부분 연산 결과를 얻고, 상기 n개 부분 연산 결과를 메인 처리 회로에 송신하며, 상기 n은 2보다 크거나 같은 정수이다.
본 발명의 구체적인 실시방식에서는 또한 도1a에 도시한 바와 같은 칩 장치의 적용방법을 더 제공하는데, 상기 적용방법은 구체적으로는 행렬 곱셈 행렬 연산, 행렬 곱셈 벡터 연산, 컨볼루션 연산 또는 완전 연결 연산중의 한가지 또는 임의의 조합을 수행할 수 있다.
구체적으로, 상기 메인 처리 회로는 또한 예컨대 batch normalization,lrn등 신경망 연산 과정과 같은 풀링(pooling)연산, 정규화 연산을 수행할 수 있다.
본 출원의 구체적인 실시방식에서는 또한 도1a 또는 도1b에 도시한 칩 장치를 포함하는 칩을 제공한다.
본 출원의 구체적인 실시방식에서는 또한 상기 칩을 포함하는 스마트 장치를 제공하며, 상기 칩에는 도1a 또는 도1b에 도시한 바와 같은 칩 장치가 통합된다. 상기 스마트 장치는 스마트 폰, 태블릿, 개인용 정보 단말기, 스마트 시계, 스마트 카메라, 스마트 TV, 스마트 냉장고 등 스마트 장치를 포함하지만, 이에 한정되는 것이 아니고, 상기 장치는 단지 예시를 위한 것으로서 본 발명의 구체적인 실시방식은 상기 설비의 구체적인 구현방식에 의해 한정되는 것이 아니다.
상기 행렬 곱셈 행렬 연산은 도3의 실시예의 설명을 참조할 수 있고, 여기서는 더 이상 반복하여 설명하지 않는다.
칩 장치를 사용하여 완전 연결 연산을 수행할 수 있다.
완전연결층의 입력 데이터는 하나의 길이가 L인 벡터(예를 들면, "도3a에서 도시한 완전 연결 1-단일 샘플"중의 벡터B)(다시 말하면, 신경망의 입력이 단일 샘플인 경우)이고, 완전연결층의 출력은 하나의 길이가 M인 벡터이고, 완전연결층의 가중치는 하나의 M*L행렬(예를 들면, "도3b의 완전 연결 1-단일 샘플"중의 행렬A)이면, 완전연결층의 가중치 행렬을 행렬A(다시 말하면, 분할 데이터 블록)로, 입력 데이터를 벡터B(다시 말하면, 브로드캐스트 데이터 블록)로 상기 도2에서 도시한 방법1에 따라 연산을 수행한다. 구체적인 연산 방법은 다음과 같다.
만일 완전연결층의 입력 데이터가 하나의 행렬(다시 말하면, 신경망의 입력이 복수의 샘플을 batch로 일괄로 연산하는 경우)(완전연결층의 입력 데이터의 경우, 입력 샘플이 N개이고, 매개 샘플이 하나의 길이가 L인 벡터이면, 입력 데이터는 하나의 L*N행렬로 표시되는데, 예를 들어, "도3b의 완전 연결 1-복수 샘플"중의 행렬B로 표시됨)이고, 완전연결층이 매개 샘플에 대한 출력은 하나의 길이가 M인 벡터이면, 완전연결층의 출력 데이터는 하나의 M*N행렬인데, 예를 들면, "도3a의 완전 연결 1-복수 샘플"중의 결과의 행렬이고, 완전연결층의 가중치는 하나의 M*L행렬(예를 들면, "도3a의 완전 연결 1-복수 샘플"중의 행렬A)이며, 완전연결층의 가중치 행렬을 행렬A(다시 말하면, 분할 데이터 블록)로, 입력 데이터 행렬을 행렬B(다시 말하면, 브로드캐스트 데이터 블록)로 또는 완전연결층의 가중치 행렬을 행렬B(다시 말하면, 브로드캐스트 데이터 블록)로, 입력 벡터를 행렬A(다시 말하면, 분할 데이터 블록)로 상기 도2에서 도시한 방법1에 따라 연산을 수행한다.
칩 장치
상기 칩 장치를 사용하여 인공신경망 연산을 수행할 때, 신경망 중의 컨볼루션층, 풀링층, 정규화층(예를 들면, BN(Batch normalization) 또는 LRN(Local Response Normalization))등 입력 데이터는 "도3d의 컨볼루션 2-입력 데이터"(명확하게 표시하기 위해, 여기서는 매개 샘플을 표시하는 3차원 데이터 블록을 C=5, H=10, W=12를 예시로 사용하여 설명하며, 실제사용과정에서 N, C, H, W의 크기는 도3d에 도시한 값에 한정되는 것이 아니다)에서 도시한 바와 같이, 도3d의 매개 3차원 데이터 블록은 하나의 샘플이 이 층에 대응되는 입력 데이터를 표시하며, 매개 3차원 데이터 블록의 3개 차원은 각각 C, H 및 W이며, 모두 N개의 이러한 3차원 데이터 블록을 가진다.
상기와 같은 신경망층의 계산을 수행 시, 메인 처리 회로는 입력 데이터를 수신한 후, 매개 입력 데이터의 샘플에 대해 메인 처리 회로의 데이터 재배치 회로를 사용하여 입력 데이터를 일정한 순서에 따라 배치하며, 상기 순서는 임의의 순서일 수 있으며;
대안적으로, 상기 순서는 상기 개략도가 대표하는 C차원 좌표의 변화가 가장 빠른 방식에 따라 입력 데이터를 배치하는데, 예를 들면, NHWC 및 NWHC등이다. 상기 C는 데이터 블록의 가장 안쪽 층의 차원을 표시하고, 상기 N은 데이터 블록의 최외층의 차원을 표시하고, H 및 W는 가운데 층의 차원을 표시한다. 그 효과는 C의 데이터가 서로 묶여 있기 때문에 연산의 병렬 처리 수준을 향상시키기 용이하고, 복수의 특징 맵(Feature map)에 대해 더욱 용이하게 병렬 연산을 수행할 수 있다.
이하, 서로 다른 신경망 연산에서 C, H 및 W에 대해 어떻게 이해할지에 대해 설명하고자 한다. 컨볼루션 및 풀링의 경우, H 및 W는 컨볼루션 및 풀링 연산 시 관련 연산 창의 슬라이딩 차원(연산 창이 W차원에서 슬라이딩되는 예시도)이다. "도3e의 컨볼루션 3-슬라이딩a" 및 "도3f의 컨볼루션 3-슬라이딩b" 두 도면에서 도시한 바와 같이, 연산 창이 H차원에서 슬라이딩되는 예시도는 도3g과 같으며, 상기 연산 창의 크기는 M개 컨볼루션 커널 중 하나의 컨볼루션 커널의 크기와 일치하며, 도3c에서 도시한 M개 컨볼루션 커널의 경우, 매개 컨볼루션 커널은 5*3*3의 3차원 데이터 블록인데, 그렇다면 그 연산 창도 5*3*3의 3차원 데이터 블록이며, 도3c에서 도시한 M개 컨볼루션 커널 중의 KH 및 KW의 경우, KH가 표시하는 대응되는 차원은 입력 데이터의 H차원이고, 상기 KW가 표시하는 대응되는 차원은 입력 데이터의 W차원이다. 도3e, 도3f, 도3g중의 회색 부분의 블록은 매번마다 연산 창을 슬라이딩하여 연산을 수행할 때 사용하는 데이터이며, 그 슬라이딩방향은 H를 슬라이딩방향으로 한 후에 다시 W를 슬라이딩방향으로 하거나 또는 W를 슬라이딩방향으로 한 후에 다시 H를 슬라이딩방향으로 할 수 있다. 구체적으로, 컨볼루션의 경우, 매개 슬라이딩 창에서의 연산은 도면의 회색 부분의 블록이 표시하는 데이터 블록과 "도3c의 컨볼루션 1-컨볼루션 커널"에서 표시하는 M개 컨볼루션 커널 데이터 블록에 대해 각각 내적 연산을 수행하는 것이며, 컨볼루션은 매개 슬라이딩 창 위치에 대응되는 매개 컨볼루션 커널에 하나의 값을 출력하는데, 다시 말하면, 매개 슬라이딩 창이 M개 출력값을 가지며; 풀링의 경우, 매개 슬라이딩 창에서의 연산은 도면중의 회색 블록이 표시하는 데이터 블록이 H 및 W차원(도면을 예를 들면, 상기 회색 데이터 블록 중에서 동일한 평면에 위치한 9개 숫자)에서 최대값을 선택하거나 또는 평균값을 계산하여 연산을 수행하는 것이며, 풀링은 매개 슬라이딩 창의 위치에 C개 값을 출력한다. C는 단일 샘플의 3차원 데이터 블록 중에서 H 및 W를 제외한 다른 하나의 차원이며, N은 총N개 샘플이 동시에 해당 층의 연산을 수행한다는 것을 나타낸다. 정규화 연산에서 LRN의 경우, C차원의 정의는 다음과 같은바, 매번의 기본적인 LRN연산은 C차원을 따라 하나의 연속적인 데이터 블록(다시 말하면, Y*1*1의 데이터 블록)을 선택하며, 상기Y*1*1의 데이터 블록중에서 Y는 C차원에서의 값이고, Y의 값은 C차원의 최대값보다 작거나 같으며, 상기 첫번째 1은 H차원을 표시하고, 두번째 1은 W차원을 표시하며; 나머지 두개 차원은 H 및 W차원으로 정의되는데, 다시 말하면, 매개 샘플에 대한 3차원 데이터 블록 중에서 매번 LRN정규화 연산 수행 시에 동일한 W좌표와 동일한 H좌표 중의 서로 다른 C좌표 중의 연속적인 일부분 데이터에 대해 연산을 수행한다. 정규화 연산인 BN의 경우, N개 샘플의 3차원 데이터 블록 중의 모든 동일한 C차원의 좌표를 가지는 값의 평균값과 분산(또는 표준편차)을 구한다.
상기 "도3c-도3g"에서는 모두 하나의 블록으로 하나의 수치를 표시하는데, 하나의 가중치라고도 할 수 있으며; 개략도에서 사용되는 숫자는 단지 예시를 위한 것으로서 실제로 차원 데이터는 임의의 값(어떤 차원이 1인 경우도 포함하는데, 이런 경우, 상기 4차원 데이터 블록은 자동으로 3차원 데이터 블록으로 되며, 예를 들면, 동시에 계산하는 샘플수가 1인 경우, 입력 데이터는 하나의 3차원 데이터 블록이며; 또 다른 예를 들면, 컨볼루션 커널수가 1인 경우, 컨볼루션 및 데이터는 하나의 3차원 데이터 블록임)일 수 있다. 상기 칩 장치를 사용하여 입력 데이터B 및 컨볼루션 커널 A 사이의 컨볼루션 연산을 수행한다.
하나의 컨볼루션층의 경우, 그 가중치(모든 컨볼루션 커널)는 "도3c의 컨볼루션 1-컨볼루션 커널"에서 표시한 바와 같으며, 그 컨볼루션 커널의 수량은 M이고 매개 컨볼루션 커널은 C개 KH행KW열의 행렬로 구성되기 때문에, 컨볼루션층의 가중치는 하나의 4개 차원이 각각 M, C, KH, KW인 4차원 데이터 블록으로 표시될 수 있으며; 컨볼루션층의 입력 데이터는 4차원 데이터 블록으로서 N개 3차원 데이터 블록으로 구성되며, 매개 상기 3차원 데이터 블록은 C개 H행W열의 특정 행렬(다시 말하면, 4개 차원이 각각 N, C, H, W인 데이터 블록)로 구성되며; "도3d의 컨볼루션 2-입력 데이터"에서 도시한 바와 같다. M개 컨볼루션 커널 중의 매개 컨볼루션 커널의 가중치를 메인 처리 회로부터 K개 기본 처리 회로 중의 어느 하나에 분배하고, 기본 처리 회로의 온칩 캐시 및/또는 레지스터(이 경우, M개 컨볼루션 커널은 분배 데이터 블록이고, 매개 컨볼루션 커널은 하나의 기본 데이터 블록일 수 있으며, 물론 실제 적용과정에서 상기 기본 데이터 블록을 더욱 작은 차원으로 변경할 수 있는데, 예를 들면, 하나의 컨볼루션 커널의 한개 평면의 행렬로 변경할 수 있음)에 저장하며; 구체적인 분배방법은, 만일 컨볼루션 커널의 갯수가 M<=K이면, M개 기본 처리 회로에 각각 하나의 컨볼루션 커널의 가중치를 분배하고; 만일 컨볼루션 커널의 개수가 M>K이면, 매개 기본 처리 회로에 각각 한개 또는 복수의 컨볼루션 커널의 가중치를 분배한다(제i개 기본 처리 회로에까지 분배된 컨볼루션 커널 가중치의 집합은 Ai이며, 총Mi개 컨볼루션 커널을 가진다) 매개 기본 처리 회로에서, 예를 들면, 제i개 기본 처리 회로에서, 수신된 메인 처리 회로가 분배한 컨볼루션 커널 가중치Ai를 그 레지스터 및/또는 온칩 캐시에 저장하며; 입력 데이터 중의 각 부분(다시 말하면, 도3e, 도3f 또는 도3g에서 도시한 슬라이딩 창)을 브로드캐스트의 방식으로 각 기본 처리 회로(상기 브로드캐스트의 방식은 상기 방식A 또는 방식B를 사용할 수 있음)에 전송하고, 브로드캐스트시에는 여러번 브로드캐스트하는 방식을 통해 연산 창의 가중치를 모든 기본 처리 회로에 브로드캐스트할 수 있으며, 구체적으로는, 매번마다 일부분 연산 창의 가중치를 브로드캐스트할 수 있는데, 예를 들면, 매번마다 하나의 평면의 행렬을 브로드캐스트할 수 있는데, 도3e의 경우, 매번마다 하나의 C평면의 KH*KW행렬을 브로드캐스트할 수 있으며, 물론 실제 적용과정에서는 한번에 한개 C평면의 KH*HW행렬중의 앞부분의 n행 또는 앞부분의 n열의 데이터를 브로드캐스트할 수 있지만, 본 발명에서는 상기 일부분 데이터의 송신 방식 및 일부분 데이터의 배열 방식에 대해 한정하지 않으며; 입력 데이터의 배치 방식을 임의 차원의 순서의 배치 방식으로 변경한 후, 순서에 따라 차례로 각 부분 입력 데이터를 기본 처리 회로에 브로드캐스트한다. 대안적으로, 상기 데이터의 분배 방식, 다시 말하면 컨볼루션 커널의 송신방식은 입력 데이터의 연산 창과 유사한 방법으로 송신할 수 있으며, 여기서는 더 이상 반복하여 설명하지 않는다. 대안적으로, 입력 데이터의 배치 방식을 C가 가장 안쪽 계층인 루핑으로 변환할 수 있다. 그 효과는 C의 데이터가 서로 묶여 있기 때문에 연산의 병렬 처리 수준을 향상시키기 용이하고, 복수의 특징 맵(Feature map)에 대해 더욱 용이하게 병렬 연산을 수행할 수 있다. 대안적으로, 입력 데이터의 배치 방식을 차원 순서가 NHWC 또는 NWHC인 배치 방식으로 변경할 수 있으며, 매개 기본 처리 회로의 경우, 예를 들면, 제i개 기본 처리 회로의 경우, 가중치Ai중의 컨볼루션 커널과 수신된 브로드캐스트의 데이터에 대응되는 부분(다시 말하면, 연산 창)의 내적을 계산하며; 가중치Ai중의 대응되는 부분의 데이터는 직접 온칩 캐시로부터 판독하여 사용하거나 또는 다중화를 위해 먼저 레지스터에 읽어드릴 수 있다. 매개 기본 처리 회로의 내적 연산 결과를 누적하여 메인 처리 회로에 전송한다. 기본 처리 회로가 매번 내적 연산을 수행하여 얻은 부분을 메인 처리 회로에 전송하여 누적할 수 있고; 기본 처리 회로가 매번 내적 연산을 수행하여 얻은 부분을 기본 처리 회로의 레지스터 및/또는 온칩 캐시에 저장하여, 누적을 완성한 후에 메인 처리 회로에 전송할 수 있고; 기본 처리 회로가 매번 내적 연산을 수행하여 얻은 부분과, 일부 상황에서 기본 처리 회로의 레지스터 및/또는 온칩 캐시에 누적한 부분과, 일부 상황에서 메인 처리 회로에 전송한 부분을 누적하여, 누적을 완성한 후에 메인 처리 회로에 전송할 수도 있다.
칩 장치를 사용하여 기본 선형 대수 서브루틴(Basic Linear Algebra Subprograms, BLAS)함수를 실현하는 방법
GEMM, GEMM 계산은 BLAS라이브러리에서 행렬-행렬 곱셈의 연산을 가리킨다. 상기 연산의 일반적인 표시형식은 C = alpha*op( A )*op( B ) + beta*C이며, 상기 A 및 B는 입력된 두개의 행렬이고, C는 출력 행렬이고, alpha 및 beta는 스칼라이고, op는 행렬A 또는 행렬B에 대한 어떤 연산을 대표하며, 또한 일부 보조적인 정수를 매개 변수로 행렬의 A 및 B의 폭을 설명하며;
상기 장치를 사용하여 GEMM 계산을 실현하는 단계는 다음과 같다.
칩의 메인 처리 회로는 입력된 행렬A 및 행렬B에 대해 각각 상응한 op연산을 수행하며; 상기 op연산은 행렬의 전치 연산일 수 있고, 비선형 함수, 풀링 등 다른 연산일 수도 있다. 메인 처리 회로의 벡터 연산 기능을 이용하여 행렬op연산을 수행한다. 만일 어느 행렬의 op가 비어있으면, 메인 처리 회로는 상기 행렬에 대해 어떠한 연산도 수행하지 않는다.
도2에서 도시한 방법을 사용하여 op(A)와 op(B) 사이의 행렬 곱셈 계산을 완성한다.
메인 처리 회로의 벡터 연산 기능을 이용하여 op(A)*op(B)의 결과중의 매개 값에 대해 alpha를 곱하는 연산을 수행하며;
메인 처리 회로의 벡터 연산 기능을 이용하여 행렬alpha*op( A )*op( B ) 및 beta*C사이의 대응되는 위치를 추가하는 단계를 실현한다.
GEMV
GEMV 계산이란 BLAS 라이브러리에서 행렬-벡터 곱셈의 연산을 가리킨다. 상기 연산의 일반적인 표시형식은 C = alpha*op( A )*B+ beta*C이며, 상기 A는 입력 행렬이고, B는 입력된 벡터이고, C는 출력 벡터이고, alpha 및 beta는 스칼라이고, op는 행렬A에 대한 어떤 연산을 대표한다.
상기 장치를 사용하여 GEMV 계산을 실현하는 단계는 다음과 같다.
칩의 메인 처리 회로는 입력 행렬A에 대해 상응한 op 연산을 수행하며; 칩 장치는 도2에서 도시한 방법을 이용하여 행렬op(A)과 벡터B 사이의 행렬-벡터 곱셈 계산을 수행하며; 메인 처리 회로의 벡터 연산 기능을 이용하여 op(A)*B결과 중의 매개 값에 대해 alpha를 곱하는 연산을 수행하며; 메인 처리 회로의 벡터 연산 기능을 이용하여 행렬alpha*op( A )* B 및 beta*C 사이의 대응되는 위치를 더하는 단계를 실현한다.
칩 장치를 사용하여 활성 함수를 실현하는 방법
활성 함수는 일반적으로 하나의 데이터 블록(벡터 또는 다차원 행렬일 수 있음)중의 매개 수치에 대해 비선형 연산을 수행하는 것을 가리킨다. 예를 들면, 활성 함수는 y=max(m,x)일 수 있으며, 상기 x는 입력값이고, y는 출력값이고, m는 하나의 상수이며; 활성 함수는 또는 y=tanh(x)일 수 있으며, 상기 x는 입력값이고, y는 출력값이며; 활성 함수는 또한 y=sigmoid(x)일 수도 있으며, 상기 x는 입력값이고, y는 출력값이며; 활성 함수는 하나의 조각적 선형 함수일 수도 있고; 활성 함수는 임의로 하나의 숫자를 입력하고 하나의 숫자를 출력하는 함수일 수도 있다.
활성 함수 실현 시, 칩 장치는 메인 처리 회로의 벡터 계산 기능을 이용하여 하나의 벡터를 입력하여 상기 벡터의 활성 벡터를 계산하며; 메인 처리 회로가 벡터에 입력된 매개 값을 하나의 활성 함수(활성 함수의 입력이 하나의 수치이고, 출력도 하나의 수치임)를 통해 하나의 수치가 벡터에 출력되는 대응위치를 계산하며;
상기 입력 벡터의 출처는 칩 장치의 외부 데이터, 칩 장치의 브랜치 처리 회로가 전달한 기본 처리 회로의 계산 결과 데이터 등을 포함하지만, 이에 한정되는 것은 아니다.
상기 계산 결과 데이터는 구체적으로는 행렬 곱셈 벡터를 수행한 연산 결과일 수 있으며; 상기 계산 결과 데이터는 구체적으로는 행렬 곱셈 행렬을 수행한 연산 결과일 수도 있으며; 상기 입력 데이터는 메인 처리 회로가 바이어스 추가를 실현한 후의 계산결과일 수 있다.
칩 장치를 사용하여 바이어스 추가 실현
메인 처리 회로를 사용하여 두개 벡터 또는 두개 행렬을 추가하는 기능을 실현할 수 있고; 메인 처리 회로를 사용하여 하나의 벡터를 한개 행렬의 매개 행에 추가하거나 또는 매개 열에 추가하는 기능을 실현할 수 있다.
대안적으로, 상기 행렬은 상기 장치가 행렬 곱셈 행렬 연산을 수행한 결과에서 유래될 수 있고; 상기 행렬은 상기 장치가 행렬 곱셈 벡터 연산을 수행한 결과에서 유래될 수 있고; 상기 행렬은 상기 장치의 메인 처리 회로가 외부로부터 수신한 데이터에서 유래될 수 있다. 상기 벡터는 상기 장치의 메인 처리 회로가 외부로부터 수신한 데이터에서 유래될 수 있다.
상기 입력 데이터 및 계산결과 데이터는 단지 예시를 위한 것으로서 실제 적용과정에서는 기타 유형 또는 유래된 데이터일 수 있으며, 본 발명의 구체적인 실시방식에서는 상기 데이터의 유래 방식 및 구현방식에 대해 한정하지 않는다.
설명이 필요한 것은, 상술한 바와 같은 다양한 방법의 실시예는 설명의 간결성을 위해 일련의 동작의 조합으로 설명되지만, 본 발명의 기술분야의 통상의 지식을 가진 자라면 본 발명이 상기에서 설명한 동작 순서의 제한을 받지 않는다는 것을 이해할 수 있다. 왜냐하면, 본 발명에 따르면 어떤 단계는 다른 순서를 이용하거나 동시에 진행할 수 있기 때문이다. 또한, 본 발명의 기술분야의 통상의 지식을 가진 자라면 본 발명의 명세서에서 설명한 실시예는 모두 대안적인 실시예로서 관련 동작 및 모듈이 본 발명에 있어 필수적인 것이 아니라는 것을 이해해야 한다.
상기 실시예에서, 각 실시예에 대한 설명은 모두 각자의 중점이 있으며, 어떤 실시예에서 상세한 설명이 생략된 부분은 다른 실시예의 관련 설명을 참조할 수 있다.
본 명세서에 제공된 몇몇 실시예에서 개시된 장치는 다른 방식으로도 구현될 수 있다는 것을 이해해야 한다. 예를 들어, 전술한 장치의 실시예는 단지 예시적인 것이며, 예를 들어, 상기 유닛의 분할은 논리적인 기능적 구분일 뿐이며, 실제 구현에서는 다른 분할 방식이 있을 수 있으며, 예를 들어, 복수의 유닛 또는 구성 요소가 결합되거나, 다른 시스템에 통합하거나 일부 기능을 무시하거나 실행하지 않을 수 있다. 또한, 도시되거나 논의된 상호 결합 또는 직접 결합 또는 통신 연결은 일부 인터페이스, 장치 또는 유닛을 통한 간접 결합 또는 통신 접속일 수 있으며, 전기적 또는 다른 형식일 수 있다.
또한, 본 발명의 각 실시예에서 각 기능 유닛을 하나의 처리 유닛에 통합하거나, 또는 각각의 유닛이 물리적으로 분리되어 존재할 수도 있고, 또는 두개 이상의 유닛을 하나의 유닛에 통합할 수도 있다. 상기 통합 유닛/모듈은 하드웨어의 형태로 구현된다. 예를 들어, 상기 하드웨어는 디지털 회로, 아날로그 회로 등을 포함하는 회로일 수 있다. 하드웨어 구조의 물리적 구현은 트랜지스터, 멤 리스터 등을 포함하는 물리적 디바이스를 포함하지만 이에 한정되는 것은 아니다. 상기 컴퓨팅장치 내의 컴퓨팅 모듈은 CPU, GPU, FPGA, DSP, ASIC 등과 같은 임의의 적합한 하드웨어 프로세서일 수 있다. 상기 저장 유닛은 RRAM, DRAM, SRAM, EDRAM, HBM, HMC 등과 같은 임의의 적합한 자기 저장 매체 또는 광 자기 저장 매체 일 수 있다.
상기 설명된 유닛은 물리적으로 분리되어 있을 수 있거나 분리되지 않을 수 있는데, 다시 말하면, 한 위치에 배치되거나 복수의 네트워크 요소에 분산될 수 있다. 실제 필요에 따라, 유닛의 일부 또는 전부를 선택하여 본 실시예의 과제의 해결수단의 목적을 달성할 수 있다.
상기에서 본 발명의 실시예에 대해 상세히 설명하였고, 구체적인 실시예를 적용하여 본 발명의 원리 및 실시방식에 대해 상세히 설명하였지만, 상기 실시예에 대한 설명은 본 발명의 방법 및 핵심사상을 이해하는 것을 돕기 위한 것일 뿐이며, 본 발명의 기술분야의 통상의 지식을 가진 자라면 본 발명의 사상에 따라 구체적인 실시방식과 적용범위에 대해 변경할 수 있으며, 상술한 바와 같이, 본 명세서의 내용을 본 발명에 대해 한정하는 것으로 이해하여서는 안 된다.

Claims (26)

  1. 칩 장치에 적용되는 컨볼루션 연산 방법에 있어서,
    상기 칩 장치가 4개 차원이 각각 N, H, W, C인 4차원 데이터의 입력 데이터와 가중치를 수신하는 단계;
    상기 칩 장치가 입력 데이터의 배치 방식을 C가 가장 안쪽 계층인 루핑으로 변환하여 가장 안쪽 계층이 C인 입력 데이터를 얻는 단계; 및
    상기 칩 장치가 가장 안쪽 계층이 C인 입력 데이터와 가중치에 대해 컨볼루션 연산을 수행하여 컨볼루션의 계산 결과를 얻는 단계를 포함하며,
    상기 C차원이 상기 4차원 데이터의 높이 방향 차원인 것을 특징으로 하는
    컨볼루션 연산 방법.
  2. 제1항에 있어서,
    상기 입력 데이터의 배치 방식을 C가 가장 안쪽 계층인 루핑으로 변환하여 가장 안쪽 계층이 C인 입력 데이터를 얻는 단계는 구체적으로,
    입력 데이터의 배치 방식을 C가 가장 안쪽 계층인 루핑으로 변환하여 입력 데이터 NHWC 또는 입력 데이터 NWHC를 얻는 단계를 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  3. 제1항에 있어서,
    상기 칩 장치가 메인 회로 및 k개 서브 회로를 포함하며, 상기 칩 장치가 가장 안쪽 계층이 C인 입력 데이터와 가중치에 대해 컨볼루션 연산을 수행하여 컨볼루션의 계산 결과를 얻는 단계는 구체적으로,
    상기 메인 회로가 가중치를 복수의 기본 데이터 블록으로 분할하고, 상기 메인 회로가 복수의 기본 데이터 블록을 상기 k개 서브 회로에 분배하며, 상기 서브 회로가 분배 받은 기본 데이터 블록을 저장하는 단계;
    상기 메인 회로가 입력 데이터 NHWC 또는 입력 데이터 NWHC 중 각 부분의 데이터를 상기 k개 서브 회로에 브로드캐스트하며, 상기 k개 서브 회로가 각 부분의 데이터를 상기 분배받은 기본 데이터 블록과 각각 연산을 수행하여 연산 결과를 얻고, 연산 결과를 상기 메인 회로에 송신하는 단계; 및
    상기 메인 회로가 k개 서브 회로의 모든 연산 결과에 따라 컨볼루션 연산의 계산 결과를 얻는 단계를 포함하며,
    상기 k가 서브 회로의 수량이고, 그 값 범위가 2보다 크거나 같은 정수인 것을 특징으로 하는
    컨볼루션 연산 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 가중치가 4차원 데이터 블록이고, 상기 가중치의 4개 차원이 각각 M, C, KH, KW인 것을 특징으로 하는
    컨볼루션 연산 방법.
  5. 제4항에 있어서,
    상기 가중치의 M차원의 값이 m이면, 상기 가중치는 m개 컨볼루션 커널을 포함하며, 상기 메인 회로가 가중치를 복수의 기본 데이터 블록으로 분할하는 단계는 구체적으로,
    상기 메인 회로가 상기 m개 컨볼루션 커널을 m개 기본 데이터 블록으로 분할하는 단계를 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  6. 제4항에 있어서,
    상기 메인 회로가 가중치를 복수의 기본 데이터 블록으로 분할하는 단계는 구체적으로,
    상기 메인 회로가 m개 컨볼루션 커널을 m*c개 기본 데이터 블록으로 분할하는 단계를 포함하며,
    상기 c가 상기 가중치의 상기 C차원에서의 값이고, 그 값 범위가 1보다 크거나 같은 정수인 것을 특징으로 하는
    컨볼루션 연산 방법.
  7. 제5항에 있어서,
    상기 메인 회로가 가중치를 복수의 기본 데이터 블록으로 분할하는 단계는 구체적으로,
    m>k이면, 상기 메인 회로가 m개 컨볼루션 커널을 m개 기본 데이터 블록으로 분할하고, m개 기본 데이터 블록 중 하나 또는 복수의 기본 데이터 블록을 k개 서브 회로에 분배하는 단계;
    m
    Figure pat00009
    k이면, 상기 메인 회로가 m개 컨볼루션 커널을 m개 기본 데이터 블록으로 분할하고, m개 기본 데이터 블록 중 하나를 k개 서브 회로에 분배하는 단계를 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  8. 제5항 또는 제6항에 있어서,
    상기 메인 회로가 입력 데이터 NHWC 또는 입력 데이터 NWHC 중 각 부분의 데이터를 상기 k개 서브 회로에 브로드캐스트하는 단계는 구체적으로,
    상기 메인 회로가 입력 데이터 NHWC 또는 입력 데이터 NWHC에서 상기 기본 데이터 블록의 크기와 같은 하나의 입력 데이터 블록을 분할하여 각 부분의 데이터 중 일부분 데이터로 하고, 입력 데이터 블록을 기본 분할 유닛으로 하며 이동 스텝에 따라 입력 데이터를 분할하여 각 부분의 데이터를 얻고, 각 부분의 데이터 중 하나 또는 복수의 일부분 데이터를 상기 k개 서브 회로에 브로드캐스트하는 단계를 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  9. 제8항에 있어서,
    상기 k개 서브 회로가 각 부분의 데이터를 상기 분배받은 기본 데이터 블록과 연산을 수행하여 연산 결과를 얻고, 상기 메인 회로가 k개 서브 회로의 모든 연산 결과에 따라 컨볼루션 연산의 계산 결과를 얻는 단계는 구체적으로,
    상기 k개 서브 회로 중 각 서브 회로가 일부분 데이터의 원소 값과 분배받은 기본 데이터 블록의 대응 위치 원소 값에 대해 누적 연산을 수행하여 복수의 누적 결과를 얻고, 상기 복수의 누적 결과를 메인 회로에 송신하며, 메인 회로가 각 서브 회로가 송신한 상기 복수의 누적 결과를 누적하여 복수의 컨볼루션 결과를 얻고, 메인 회로가 복수의 컨볼루션 결과를 정렬하여 컨볼루션 연산의 계산 결과를 얻는 단계를 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  10. 제8항에 있어서,
    상기 k개 서브 회로가 각 부분의 데이터를 상기 분배받은 기본 데이터 블록과 연산을 수행하여 연산 결과를 얻고, 상기 메인 회로가 k개 서브 회로의 모든 연산 결과에 따라 컨볼루션 연산의 계산 결과를 얻는 단계는 구체적으로,
    상기 k개 서브 회로 중 각 서브 회로가 일부분 데이터의 원소 값과 분배받은 기본 데이터 블록의 대응 위치 원소 값에 대해 누적 연산을 수행하여 복수의 누적 결과를 얻고, 복수의 누적 결과를 누적하여 컨볼루션 결과를 얻으며, 컨볼루션 결과를 메인 회로에 송신하고, 메인 회로가 모든 컨볼루션 결과를 정렬하여 컨볼루션 연산의 계산 결과를 얻는 단계를 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  11. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 칩 장치가 상기 메인 회로와 복수의 서브 회로를 연결하는 브랜치 회로를 더 포함하며,
    상기 브랜치 회로가 상기 메인 회로와 복수의 서브 회로 사이의 데이터를 전송하는 단계를 더 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  12. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 메인 회로가 벡터 연산자 회로, 산술 논리 유닛 회로, 누산기 회로, 전치 행렬 회로, 직접 메모리 액세스 회로 또는 데이터 재배치 회로 중의 한가지 또는 임의의 조합을 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  13. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 서브 회로가 내적 연산자 회로 또는 누산기 회로 등 중의 한가지 또는 임의의 조합을 포함하는 것을 특징으로 하는
    컨볼루션 연산 방법.
  14. 4개 차원이 각각 N, H, W, C인 4차원 데이터의 입력 데이터와 가중치를 수신하며, 상기 C차원이 상기 4차원 데이터의 높이 방향 차원이고;
    입력 데이터의 배치 방식을 C가 가장 안쪽 계층인 루핑으로 변환하여 가장 안쪽 계층이 C인 입력 데이터를 얻으며;
    가장 안쪽 계층이 C인 입력 데이터와 가중치에 대해 컨볼루션 연산을 수행하여 컨볼루션의 계산 결과를 얻기 위한 것을 특징으로 하는
    칩 장치.
  15. 제14항에 있어서,
    입력 데이터의 배치 방식을 C가 가장 안쪽 계층인 루핑으로 변환하여 입력 데이터 NHWC 또는 입력 데이터 NWHC를 얻기 위한 것을 특징으로 하는
    칩 장치.
  16. 제15항에 있어서,
    상기 칩 장치가 메인 회로 및 k개 서브 회로를 더 포함하며,
    상기 메인 회로가 가중치를 복수의 기본 데이터 블록으로 분할하고, 복수의 기본 데이터 블록을 상기 k개 서브 회로에 분배하며, 입력 데이터 NHWC 또는 입력 데이터 NWHC 중 각 부분의 데이터를 상기 k개 서브 회로에 브로드캐스트하고,
    상기 서브 회로가 분배받은 기본 데이터 블록을 저장하며, 각 부분의 데이터를 상기 분배받은 기본 데이터 블록과 각각 연산을 수행하여 연산 결과를 얻고, 연산 결과를 상기 메인 회로에 송신하며,
    상기 메인 회로가 k개 서브 회로의 모든 연산 결과에 따라 컨볼루션 연산의 계산 결과를 얻고,
    상기 k가 서브 회로의 수량이고, 그 값 범위가 2보다 크거나 같은 정수인 것을 특징으로 하는
    칩 장치.
  17. 제15항에 있어서,
    상기 가중치가 4차원 데이터 블록이고, 상기 가중치의 4개 차원이 각각 M, C, KH, KW인 것을 특징으로 하는
    칩 장치.
  18. 제16항에 있어서,
    상기 가중치의 M차원의 값이 m이면, 상기 가중치는 m개 컨볼루션 커널을 포함하며, 상기 메인 회로는 구체적으로 상기 m개 컨볼루션 커널을 m개 기본 데이터 블록으로 분할하는 것을 특징으로 하는
    칩 장치.
  19. 제16항에 있어서,
    상기 메인 회로는 구체적으로 m개 컨볼루션 커널을 m*c개 기본 데이터 블록으로 분할하며,
    상기 c가 상기 C차원의 값이고, 그 값 범위가 1보다 크거나 같은 정수인 것을 특징으로 하는
    칩 장치.
  20. 제18항에 있어서,
    m>k이면, 상기 메인 회로가 구체적으로 m개 컨볼루션 커널을 m개 기본 데이터 블록으로 분할하고, m개 기본 데이터 블록 중 하나 또는 복수의 기본 데이터 블록을 k개 서브 회로에 분배하며;
    m
    Figure pat00010
    k이면, 상기 메인 회로가 m개 컨볼루션 커널을 m개 기본 데이터 블록으로 분할하고, m개 기본 데이터 블록 중 하나를 k개 서브 회로에 분배하는 것을 특징으로 하는
    칩 장치.
  21. 제18항 또는 제19항에 있어서,
    상기 메인 회로가 구체적으로 입력 데이터 NHWC 또는 입력 데이터 NWHC에서 상기 기본 데이터 블록의 크기와 같은 하나의 입력 데이터 블록을 분할하여 각 부분의 데이터 중 일부분 데이터로 하고, 입력 데이터 블록을 기본 분할 유닛으로 하며 이동 스텝에 따라 입력 데이터를 분할하여 각 부분의 데이터를 얻고, 각 부분의 데이터 중 하나 또는 복수의 일부분 데이터를 상기 k개 서브 회로에 브로드캐스트하는 것을 특징으로 하는
    칩 장치.
  22. 제21항에 있어서,
    상기 서브 회로가 구체적으로 일부분 데이터의 원소 값과 분배받은 기본 데이터 블록의 대응 위치 원소 값에 대해 누적 연산을 수행하여 복수의 누적 결과를 얻고, 상기 복수의 누적 결과를 메인 회로에 송신하며,
    상기 메인 회로가 구체적으로 각 서브 회로가 송신한 상기 복수의 누적 결과를 누적하여 복수의 컨볼루션 결과를 얻고, 메인 회로가 복수의 컨볼루션 결과를 정렬하여 컨볼루션 연산의 계산 결과를 얻는 것을 특징으로 하는
    칩 장치.
  23. 제21항에 있어서,
    상기 서브 회로가 구체적으로 일부분 데이터의 원소 값과 분배받은 기본 데이터 블록의 대응 위치 원소 값에 대해 누적 연산을 수행하여 복수의 누적 결과를 얻고, 복수의 누적 결과를 누적하여 컨볼루션 결과를 얻으며, 컨볼루션 결과를 메인 회로에 송신하고, 메인 회로가 모든 컨볼루션 결과를 정렬하여 컨볼루션 연산의 계산 결과를 얻는 것을 특징으로 하는
    칩 장치.
  24. 제15항 내지 제20항 중 어느 한 항에 있어서,
    상기 칩 장치가 상기 메인 회로와 복수의 서브 회로를 연결하는 브랜치 회로를 더 포함하며,
    상기 브랜치 회로가 상기 메인 회로와 복수의 서브 회로 사이의 데이터를 전송하는 것을 특징으로 하는
    칩 장치.
  25. 제15항 내지 제20항 중 어느 한 항에 있어서,
    상기 메인 회로가 벡터 연산자 회로, 산술 논리 유닛 회로, 누산기 회로, 전치 행렬 회로, 직접 메모리 액세스 회로 또는 데이터 재배치 회로 중의 한가지 또는 임의의 조합을 포함하는 것을 특징으로 하는
    칩 장치.
  26. 제15항 내지 제20항 중 어느 한 항에 있어서,
    상기 서브 회로가 내적 연산자 회로 또는 누산기 회로 등 중의 한가지 또는 임의의 조합을 포함하는 것을 특징으로 하는
    칩 장치.
KR1020197037895A 2017-08-31 2017-08-31 칩 장치 및 관련 제품 KR102481256B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020197029020A KR102467688B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품
PCT/CN2017/099991 WO2019041251A1 (zh) 2017-08-31 2017-08-31 芯片装置及相关产品

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197029020A Division KR102467688B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품

Publications (2)

Publication Number Publication Date
KR20200037748A true KR20200037748A (ko) 2020-04-09
KR102481256B1 KR102481256B1 (ko) 2022-12-23

Family

ID=65436282

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020197037903A KR102477404B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품
KR1020197029020A KR102467688B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품
KR1020197037895A KR102481256B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020197037903A KR102477404B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품
KR1020197029020A KR102467688B1 (ko) 2017-08-31 2017-08-31 칩 장치 및 관련 제품

Country Status (7)

Country Link
US (7) US11409535B2 (ko)
EP (6) EP3654209A1 (ko)
JP (1) JP7065877B2 (ko)
KR (3) KR102477404B1 (ko)
CN (8) CN110245751B (ko)
TW (1) TWI749249B (ko)
WO (1) WO2019041251A1 (ko)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111859273A (zh) * 2017-12-29 2020-10-30 华为技术有限公司 矩阵乘法器
CN116991225A (zh) * 2018-02-14 2023-11-03 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
CN110210610B (zh) * 2018-03-27 2023-06-20 腾讯科技(深圳)有限公司 卷积计算加速器、卷积计算方法及卷积计算设备
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
CN110162799B (zh) * 2018-11-28 2023-08-04 腾讯科技(深圳)有限公司 模型训练方法、机器翻译方法以及相关装置和设备
US11175946B2 (en) * 2018-12-06 2021-11-16 Advanced Micro Devices, Inc. Pipelined matrix multiplication at a graphics processing unit
US11657119B2 (en) * 2018-12-10 2023-05-23 Advanced Micro Devices, Inc. Hardware accelerated convolution
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
JPWO2021009901A1 (ja) * 2019-07-18 2021-09-13 技術研究組合光電子融合基盤技術研究所 並列計算方法およびシステム
US11481471B2 (en) * 2019-08-16 2022-10-25 Meta Platforms, Inc. Mapping convolution to a matrix processor unit
CN110516793B (zh) * 2019-08-27 2022-06-17 Oppo广东移动通信有限公司 一种池化处理方法及装置、存储介质
CN110826687B (zh) * 2019-08-30 2023-11-21 安谋科技(中国)有限公司 数据处理方法及其装置、介质和系统
US20210150313A1 (en) * 2019-11-15 2021-05-20 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
KR20210071471A (ko) * 2019-12-06 2021-06-16 삼성전자주식회사 뉴럴 네트워크의 행렬 곱셈 연산을 수행하는 장치 및 방법
CN111161705B (zh) * 2019-12-19 2022-11-18 寒武纪(西安)集成电路有限公司 语音转换方法及装置
CN111126582B (zh) * 2019-12-20 2024-04-05 上海寒武纪信息科技有限公司 数据处理方法和相关产品
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US10713493B1 (en) * 2020-02-06 2020-07-14 Shenzhen Malong Technologies Co., Ltd. 4D convolutional neural networks for video recognition
CN113743598B (zh) * 2020-05-27 2023-08-04 杭州海康威视数字技术股份有限公司 一种ai芯片的运行方式的确定方法和装置
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
CN114115995A (zh) * 2020-08-27 2022-03-01 华为技术有限公司 人工智能芯片及运算板卡、数据处理方法及电子设备
CN112491555B (zh) * 2020-11-20 2022-04-05 山西智杰软件工程有限公司 医疗电子签名的处理方法及电子设备
CN112416433B (zh) * 2020-11-24 2023-01-17 中科寒武纪科技股份有限公司 一种数据处理装置、数据处理方法及相关产品
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
CN112953701B (zh) * 2021-02-04 2023-10-31 沈阳建筑大学 一种四维混沌电路装置
CN112799598B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据处理方法、处理器及电子设备
CN113240570B (zh) * 2021-04-13 2023-01-06 华南理工大学 一种GEMM运算加速器及基于GoogLeNet的图像处理加速方法
CN112990370B (zh) * 2021-04-26 2021-09-10 腾讯科技(深圳)有限公司 图像数据的处理方法和装置、存储介质及电子设备
CN115481713A (zh) * 2021-06-15 2022-12-16 瑞昱半导体股份有限公司 改进卷积神经网络进行计算的方法
KR20230068572A (ko) * 2021-11-11 2023-05-18 삼성전자주식회사 메모리 어레이 내의 연결 회로
CN116150555A (zh) * 2021-11-19 2023-05-23 中科寒武纪科技股份有限公司 计算装置、利用计算装置实施卷积运算的方法及相关产品
CN114936633B (zh) * 2022-06-15 2023-06-30 北京爱芯科技有限公司 用于转置运算的数据处理单元及图像转置运算方法
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160140394A (ko) * 2015-05-29 2016-12-07 삼성전자주식회사 신경망을 실행하는 방법 및 장치

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5023833A (en) * 1987-12-08 1991-06-11 California Institute Of Technology Feed forward neural network for unary associative memory
US5956703A (en) * 1995-07-28 1999-09-21 Delco Electronics Corporation Configurable neural network integrated circuit
JPH117438A (ja) * 1997-06-18 1999-01-12 Fuji Xerox Co Ltd 積和演算処理方法、装置及び記録媒体
JP2001188767A (ja) * 1999-12-28 2001-07-10 Fuji Xerox Co Ltd ニューラルネットワーク演算装置及びニューラルネットワークの演算方法
US7672952B2 (en) * 2000-07-13 2010-03-02 Novell, Inc. System and method of semantic correlation of rich content
US6925479B2 (en) * 2001-04-30 2005-08-02 Industrial Technology Research Institute General finite-field multiplier and method of the same
US7065544B2 (en) * 2001-11-29 2006-06-20 Hewlett-Packard Development Company, L.P. System and method for detecting repetitions in a multimedia stream
US7737994B1 (en) * 2003-09-26 2010-06-15 Oracle America, Inc. Large-kernel convolution using multiple industry-standard graphics accelerators
US20050125477A1 (en) * 2003-12-04 2005-06-09 Genov Roman A. High-precision matrix-vector multiplication on a charge-mode array with embedded dynamic memory and stochastic method thereof
US7634137B2 (en) * 2005-10-14 2009-12-15 Microsoft Corporation Unfolded convolution for fast feature extraction
WO2007137047A2 (en) * 2006-05-16 2007-11-29 Greer Douglas S Modeling the neocortex
US8644643B2 (en) * 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
JP4942095B2 (ja) * 2007-01-25 2012-05-30 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチコア・プロセッサにより演算を行う技術
US20080288756A1 (en) * 2007-05-18 2008-11-20 Johnson Timothy J "or" bit matrix multiply vector instruction
US8190543B2 (en) * 2008-03-08 2012-05-29 Tokyo Electron Limited Autonomous biologically based learning tool
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
US20100122070A1 (en) * 2008-11-07 2010-05-13 Nokia Corporation Combined associative and distributed arithmetics for multiple inner products
US20110025816A1 (en) * 2009-07-31 2011-02-03 Microsoft Corporation Advertising as a real-time video call
US8577950B2 (en) * 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8583896B2 (en) * 2009-11-13 2013-11-12 Nec Laboratories America, Inc. Massively parallel processing core with plural chains of processing elements and respective smart memory storing select data received from each chain
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8577820B2 (en) * 2011-03-04 2013-11-05 Tokyo Electron Limited Accurate and fast neural network training for library-based critical dimension (CD) metrology
US10078620B2 (en) * 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
CN102214160B (zh) * 2011-07-08 2013-04-17 中国科学技术大学 一种基于龙芯3a的单精度矩阵乘法优化方法
CN103631761B (zh) * 2012-08-29 2018-02-27 睿励科学仪器(上海)有限公司 并行处理架构进行矩阵运算并用于严格波耦合分析的方法
DE102013104567A1 (de) * 2013-05-03 2014-11-06 Infineon Technologies Ag Chipanordnung, Chipkartenanordnung und Verfahren zum Herstellen einer Chipanordnung
CN103440121B (zh) * 2013-08-20 2016-06-29 中国人民解放军国防科学技术大学 一种面向向量处理器的三角矩阵乘法向量化方法
DE102013109200A1 (de) * 2013-08-26 2015-02-26 Infineon Technologies Austria Ag Chip, Chip-Anordnung und Verfahren zum Herstellen eines Chips
CN104425299B (zh) * 2013-08-27 2017-08-11 珠海艾派克微电子有限公司 芯片加工装置以及应用芯片加工装置进行芯片加工的方法
US20150324686A1 (en) * 2014-05-12 2015-11-12 Qualcomm Incorporated Distributed model learning
CN104036451B (zh) * 2014-06-20 2018-12-11 深圳市腾讯计算机系统有限公司 基于多图形处理器的模型并行处理方法及装置
CN104317352B (zh) * 2014-10-13 2017-10-24 中国科学院光电技术研究所 一种自适应光学控制系统快速去倾斜分量处理方法
CN104346318B (zh) * 2014-10-15 2017-03-15 中国人民解放军国防科学技术大学 面向通用多核dsp的矩阵乘加速方法
CN104463324A (zh) * 2014-11-21 2015-03-25 长沙马沙电子科技有限公司 一种基于大规模高性能集群的卷积神经网络并行处理方法
CN105701120B (zh) * 2014-11-28 2019-05-03 华为技术有限公司 确定语义匹配度的方法和装置
CN104992430B (zh) * 2015-04-14 2017-12-22 杭州奥视图像技术有限公司 基于卷积神经网络的全自动的三维肝脏分割方法
CN104866855A (zh) * 2015-05-07 2015-08-26 华为技术有限公司 一种图像特征提取方法及装置
US10489703B2 (en) 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
CN104866904B (zh) * 2015-06-16 2019-01-01 中电科软件信息服务有限公司 一种基于spark的遗传算法优化的BP神经网络并行化方法
CN106293893B (zh) * 2015-06-26 2019-12-06 阿里巴巴集团控股有限公司 作业调度方法、装置及分布式系统
CN105005911B (zh) * 2015-06-26 2017-09-19 深圳市腾讯计算机系统有限公司 深度神经网络的运算系统及运算方法
CN105608490B (zh) * 2015-07-29 2018-10-26 上海磁宇信息科技有限公司 细胞阵列计算系统以及其中的通信方法
US10970617B2 (en) * 2015-08-21 2021-04-06 Institute Of Automation Chinese Academy Of Sciences Deep convolutional neural network acceleration and compression method based on parameter quantification
CN105260776B (zh) * 2015-09-10 2018-03-27 华为技术有限公司 神经网络处理器和卷积神经网络处理器
CN106548124B (zh) * 2015-09-17 2021-09-07 松下知识产权经营株式会社 主题推定系统、主题推定方法
CN106485321B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有架构神经网络执行单元的处理器
EP3154001B1 (en) * 2015-10-08 2019-07-17 VIA Alliance Semiconductor Co., Ltd. Neural network unit with neural memory and array of neural processing units that collectively shift row of data received from neural memory
CN105373517A (zh) * 2015-11-09 2016-03-02 南京大学 基于Spark的分布式稠密矩阵求逆并行化运算方法
CN105608056A (zh) * 2015-11-09 2016-05-25 南京大学 一种基于Flink的大规模矩阵并行化的计算方法
CN105426344A (zh) * 2015-11-09 2016-03-23 南京大学 基于Spark的分布式大规模矩阵乘法的矩阵计算方法
CN105488565A (zh) * 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
WO2017106469A1 (en) * 2015-12-15 2017-06-22 The Regents Of The University Of California Systems and methods for analyzing perfusion-weighted medical imaging using deep neural networks
US10482380B2 (en) * 2015-12-30 2019-11-19 Amazon Technologies, Inc. Conditional parallel processing in fully-connected neural networks
CN109993285B (zh) * 2016-01-20 2020-02-07 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
CN107506828B (zh) * 2016-01-20 2020-11-03 中科寒武纪科技股份有限公司 用于稀疏连接的人工神经网络计算装置和方法
CN106991478B (zh) * 2016-01-20 2020-05-08 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN108510064B (zh) * 2016-04-18 2021-12-10 中国科学院计算技术研究所 包括多个核心处理模块的人工神经网络的处理系统及方法
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
CN105956659B (zh) * 2016-05-11 2019-11-22 北京比特大陆科技有限公司 数据处理装置和系统、服务器
US10796220B2 (en) * 2016-05-24 2020-10-06 Marvell Asia Pte, Ltd. Systems and methods for vectorized FFT for multi-dimensional convolution operations
JP6890615B2 (ja) * 2016-05-26 2021-06-18 タータン エーアイ リミテッド ディープニューラルネットワークについての加速器
CN106126481B (zh) * 2016-06-29 2019-04-12 华为技术有限公司 一种计算系统和电子设备
CN106203621B (zh) * 2016-07-11 2019-04-30 北京深鉴智能科技有限公司 用于卷积神经网络计算的处理器
CN106228240B (zh) * 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
US10891538B2 (en) * 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US20180046903A1 (en) * 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
CN106407561B (zh) * 2016-09-19 2020-07-03 复旦大学 一种并行gpdt算法在多核soc上的划分方法
CN106446546B (zh) * 2016-09-23 2019-02-22 西安电子科技大学 基于卷积自动编解码算法的气象数据填补方法
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
CN106504232B (zh) * 2016-10-14 2019-06-14 北京网医智捷科技有限公司 一种基于3d卷积神经网络的肺部结节自动检测系统
US9779786B1 (en) * 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
CN107239824A (zh) * 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
EP3552112A1 (en) * 2016-12-09 2019-10-16 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
CN106844294B (zh) * 2016-12-29 2019-05-03 华为机器有限公司 卷积运算芯片和通信设备
US10402527B2 (en) * 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect
IT201700008949A1 (it) * 2017-01-27 2018-07-27 St Microelectronics Srl Procedimento di funzionamento di reti neurali, rete, apparecchiatura e prodotto informatico corrispondenti
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核
CN106951395B (zh) * 2017-02-13 2018-08-17 上海客鹭信息技术有限公司 面向压缩卷积神经网络的并行卷积运算方法及装置
US11132599B2 (en) * 2017-02-28 2021-09-28 Microsoft Technology Licensing, Llc Multi-function unit for programmable hardware nodes for neural network processing
CN107066239A (zh) * 2017-03-01 2017-08-18 智擎信息系统(上海)有限公司 一种实现卷积神经网络前向计算的硬件结构
US10528147B2 (en) * 2017-03-06 2020-01-07 Microsoft Technology Licensing, Llc Ultrasonic based gesture recognition
EP4137941A1 (en) * 2017-03-20 2023-02-22 Intel Corporation Systems, methods, and apparatuses for matrix add, subtract, and multiply
CN106970896B (zh) * 2017-03-30 2020-05-12 中国人民解放军国防科学技术大学 面向向量处理器的二维矩阵卷积的向量化实现方法
US10186011B2 (en) * 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US10169298B1 (en) * 2017-05-11 2019-01-01 NovuMind Limited Native tensor processor, using outer product unit
US11263526B2 (en) * 2017-05-31 2022-03-01 Intel Corporation Gradient-based training engine for quaternion-based machine-learning systems
US10167800B1 (en) * 2017-08-18 2019-01-01 Microsoft Technology Licensing, Llc Hardware node having a matrix vector unit with block-floating point processing
US10963780B2 (en) * 2017-08-24 2021-03-30 Google Llc Yield improvements for three-dimensionally stacked neural network accelerators
US20190102671A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Inner product convolutional neural network accelerator
US11222256B2 (en) * 2017-10-17 2022-01-11 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160140394A (ko) * 2015-05-29 2016-12-07 삼성전자주식회사 신경망을 실행하는 방법 및 장치

Also Published As

Publication number Publication date
TW201913460A (zh) 2019-04-01
KR102467688B1 (ko) 2022-11-15
CN110222308A (zh) 2019-09-10
US20200057652A1 (en) 2020-02-20
CN110083390B (zh) 2020-08-25
TWI749249B (zh) 2021-12-11
CN109902804B (zh) 2020-12-18
CN110231958A (zh) 2019-09-13
EP3654210A1 (en) 2020-05-20
US20200057651A1 (en) 2020-02-20
US20200057648A1 (en) 2020-02-20
CN109902804A (zh) 2019-06-18
EP3605402A1 (en) 2020-02-05
CN110245751A (zh) 2019-09-17
JP7065877B2 (ja) 2022-05-12
CN109729734B (zh) 2020-10-27
EP3651031A1 (en) 2020-05-13
CN111860815A (zh) 2020-10-30
CN109729734A (zh) 2019-05-07
EP3605402B1 (en) 2022-08-31
EP3605402A4 (en) 2020-10-21
US20200057650A1 (en) 2020-02-20
CN110245751B (zh) 2020-10-09
US11409535B2 (en) 2022-08-09
KR20200008544A (ko) 2020-01-28
US11531553B2 (en) 2022-12-20
US11775311B2 (en) 2023-10-03
US11347516B2 (en) 2022-05-31
KR20200037749A (ko) 2020-04-09
EP3654208A1 (en) 2020-05-20
US11334363B2 (en) 2022-05-17
JP2020530916A (ja) 2020-10-29
KR102477404B1 (ko) 2022-12-13
CN110222308B (zh) 2020-12-29
WO2019041251A1 (zh) 2019-03-07
US20200057647A1 (en) 2020-02-20
US20200057649A1 (en) 2020-02-20
EP3654209A1 (en) 2020-05-20
CN110231958B (zh) 2020-10-27
CN109729734B8 (zh) 2020-11-24
CN110245752A (zh) 2019-09-17
US11561800B2 (en) 2023-01-24
EP3651030A1 (en) 2020-05-13
CN110245752B (zh) 2020-10-09
KR102481256B1 (ko) 2022-12-23
US20190065208A1 (en) 2019-02-28
US11354133B2 (en) 2022-06-07
CN110083390A (zh) 2019-08-02

Similar Documents

Publication Publication Date Title
KR102477404B1 (ko) 칩 장치 및 관련 제품
CN109615061B (zh) 一种卷积运算方法及装置
JP6888073B2 (ja) チップ装置および関連製品
JP2020177641A (ja) チップ装置および関連製品
CN109615062B (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
GRNT Written decision to grant