JP6867518B2 - データ前処理方法、装置、コンピュータ機器及び記憶媒体 - Google Patents

データ前処理方法、装置、コンピュータ機器及び記憶媒体 Download PDF

Info

Publication number
JP6867518B2
JP6867518B2 JP2019568721A JP2019568721A JP6867518B2 JP 6867518 B2 JP6867518 B2 JP 6867518B2 JP 2019568721 A JP2019568721 A JP 2019568721A JP 2019568721 A JP2019568721 A JP 2019568721A JP 6867518 B2 JP6867518 B2 JP 6867518B2
Authority
JP
Japan
Prior art keywords
target
memory
input data
data
calculation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019568721A
Other languages
English (en)
Other versions
JP2020533659A (ja
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
Priority claimed from CN201810987293.5A external-priority patent/CN110865950B/zh
Priority claimed from CN201810987343.XA external-priority patent/CN110865792B/zh
Application filed by カンブリコン テクノロジーズ コーポレイション リミティド, カンブリコン テクノロジーズ コーポレイション リミティド filed Critical カンブリコン テクノロジーズ コーポレイション リミティド
Publication of JP2020533659A publication Critical patent/JP2020533659A/ja
Application granted granted Critical
Publication of JP6867518B2 publication Critical patent/JP6867518B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural 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/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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/16Memory access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)
  • Feedback Control In General (AREA)
  • Color Image Communication Systems (AREA)
  • Facsimile Image Signal Circuits (AREA)

Description

関連出願
本出願は、2018年8月28日に出願された「データ前処理方法、装置、コンピュータ機器及び記憶媒体」という名称の中国特許出願第2018109872935号を優先権の基礎とし、その全体を参照することで本出願に組み込む。
本出願は、2018年8月28日に出願された「データ前処理方法、装置、コンピュータ機器及び記憶媒体」という名称の中国特許出願第201810987343X号を優先権の基礎とし、その全体を参照することで本出願に組み込む。
本発明は、コンピュータ技術の分野に関し、特に、データ前処理方法、装置、コンピュータ機器及び記憶媒体に関する。
データ量の爆発的な増加に伴い、機械学習などの人工知能アルゴリズムがますます応用されている。機械は大量のデータを分析することによって学習するため、機械学習などのビッグデータの演算は、メモリのアクセス量などに対する要求が急激に高まっている。
メモリのアクセス量などの要求を満たすために、現在、多値メモリアーキテクチャ、即ち、キャッシュメモリ、メインメモリ、及び外部メモリを用いるアーキテクチャが使用されている。キャッシュメモリ(Cache)、メインメモリ、及び外部メモリは、アクセス速度が順次遅くなり、記憶容量が順次大きくなる。しかしながら、コンピュータ機器のI/Oの帯域幅は、超大量データの要求を満たすことができないため、プロセッサが機械学習演算を実行する過程では、キャッシュメモリとメインメモリとの間に、及び/又はメインメモリと外部メモリとの間に、データの読み取り操作を頻繁に行う必要がある。例えば、プロセッサが演算を実行する過程では、プロセッサは、まず、外部メモリから入力データを読み取り、演算が終了した後、演算結果を外部メモリに記憶し、その後、また外部メモリから次の演算に必要とされる入力データを読み取り続ける必要がある。I/O帯域幅の制限のため、1つの演算過程では、少なくとも2回のI/O読み書き操作に関与し、頻繁なI/O読み書き操作は長い時間がかかり、その結果、プロセッサの処理効率が低くなる。
そこで、上記の技術的な問題点に対して、演算中のI/O読み書きの操作回数を減らし、プロセッサの処理効率を向上させることができるデータ前処理方法、装置、コンピュータ機器及び記憶媒体を提供する必要がある。
データ前処理方法であって、
第1のメモリの使用可能な記憶容量及び目標演算操作を取得するステップと、
目標演算操作及び第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データ、即ち、前記目標演算操作に対応する全入力データの一部又は全部である目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第1のメモリに記憶するステップと、を含むデータ前処理方法である。
データ前処理装置であって、
第1のメモリの使用可能な記憶容量及び目標演算操作を取得するように構成される取得モジュールと、
前記目標演算操作及び前記第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成される入力決定モジュールと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するように構成される出力決定モジュールと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第1のメモリに記憶するように構成される記憶割当モジュールと、を含むデータ前処理装置である。
コンピュータ機器であって、第1のメモリと、第2のメモリと、プロセッサと、を含み、前記第1のメモリは、前記プロセッサに近接して配置され、前記第1のメモリと前記第2のメモリは、データの読み書きを行うことができ、前記第2のメモリには、コンピュータプログラムが記憶されており、前記プロセッサは前記コンピュータプログラムを実行すると、上記の方法のステップが実現される、ことを特徴とするコンピュータ機器である。
プロセッサによって実行されると、上記の方法のステップが実現されるコンピュータプログラムが記憶されているコンピュータ可読記憶媒体である。
上記のデータ前処理方法、装置、コンピュータ機器及び記憶媒体によれば、目標演算操作の目標出力データがそれ以降の他の演算操作の入力データである場合、目標演算操作に対応する目標出力データをプロセッサに近接した第1のメモリに記憶することができるため、目標出力データの読み取りの回数を減らすことによって、演算中のI/O読み書き操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
データ前処理方法であって、
メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するステップと、
前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを前記メインメモリに対応して記憶するステップと、を含むデータ前処理方法である。
一実施例において、前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するステップは、更に、
前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第1のメモリの使用可能な記憶容量とすることと、
前記第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定することと、を含む。
一実施例において、前記目標演算操作は、1つ以上の演算操作を含み、各前記演算操作には、それぞれサブ目標入力データが対応され、前記目標演算操作及び第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するステップは、更に、
前記第1のメモリの使用可能な記憶容量及び処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得ることと、
前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを、前記目標演算操作とすることと、
前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを、前記目標演算操作に対応する目標入力データとすることと、を含む。
一実施例において、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層それぞれは、1つの前記演算操作を表し、前記方法は、更に、
前記ニューラルネットワーク演算の各演算層の間の接続関係に基づいて、各前記演算操作の融合属性を決定するステップを含む。
一実施例において、前記目標演算操作に対応する入力データは、複数の入力データブロックを含み、各前記目標入力データそれぞれは、1つ以上の前記入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、1つ以上である。
一実施例において、前記目標演算操作は、1つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ1つの前記目標入力データに対応し、前記方法は、更に、
各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、各前記サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定するステップと、
前記第1のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第1のメモリの残り記憶容量を決定するステップと、
前記第1のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するステップと、を含む。
一実施例において、前記目標入力データは、第1の目標入力データと、第2の目標入力データとを含み、前記方法は、更に、
予め設定された演算割当規則に基づいて、前記メインメモリに対応する第1の目標入力データ、及び各前記スレーブメモリに対応する第2の目標入力データを決定するステップを含む。
一実施例において、前記方法は、
前記メインメモリの使用可能な記憶容量及び前記第1の目標入力データのデータ容量に基づいて、前記第1の目標入力データの、前記メインメモリにおける記憶アドレスを決定するステップと、
各前記スレーブメモリの使用可能な記憶容量及び対応する前記第2の目標入力データのデータ容量に基づいて、各前記第2の目標入力データの、前記スレーブメモリにおける記憶アドレスをそれぞれ決定するステップと、を含む。
一実施例において、前記目標出力データは、第1の目標出力データ及び第2の目標出力データを含み、前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定する前記ステップは、更に、
前記目標演算操作及び前記第1の目標入力データに基づいて、前記第1の目標出力データ、及び前記第1の目標出力データの、前記メインメモリにおける記憶アドレスを決定することと、
前記目標演算操作及び各前記第2の目標入力データに基づいて、各前記第2の目標出力データ、及び各前記第2の目標出力データの、対応する前記スレーブメモリにおける記憶アドレスをそれぞれ決定することと、
各前記第2の目標出力データに基づいて、各前記第2の目標出力データの、前記メインメモリにおける記憶アドレスをそれぞれ決定するステップと、を含む。
一実施例において、前記方法は、更に、
前記スレーブ処理回路で実行された他の目標演算操作に前記第2の目標出力データを使用する必要がある場合、前記第2の目標出力データを前記スレーブ処理回路に対応するスレーブメモリに記憶するステップ、を含む。
一実施例において、前記方法は、更に、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを前記メインメモリ及び前記第2のメモリに対応して記憶するステップ、を含む。
データ前処理装置であって、
メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するように構成される取得モジュールと、
前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成される入力決定モジュールと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するように構成される出力決定モジュールと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを前記メインメモリに対応して記憶するように構成される記憶割当モジュールと、を含む。
一実施例において、前記データ前処理装置は、更に、前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第1のメモリの使用可能な記憶容量とするように構成される記憶容量決定モジュールを含む。
入力決定モジュールは、具体的には、前記第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定するように構成される。
一実施例において、前記目標演算操作は、1つ以上の演算操作を含み、各前記演算操作には、それぞれサブ目標入力データが対応され、前記入力決定モジュールは、更に、
前記第1のメモリの使用可能な記憶容量及び前記処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得るように構成される融合決定ユニットと、
前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを前記目標演算操作とし、前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを前記目標演算操作に対応する目標入力データとするように構成される入力決定ユニットと、を含む。
一実施例において、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層それぞれは、1つの前記演算操作を表し、前記融合決定ユニットは、更に、前記ニューラルネットワーク演算の各演算層の間の接続関係に基づいて、各前記演算操作の融合属性を決定するように構成される。
一実施例において、前記目標演算操作は、1つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ1つの前記目標入力データに対応し、前記目標演算操作に対応する全入力データは、複数の入力データブロックを含み、各前記目標入力データそれぞれは、1つ以上の前記入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、1つ以上であり、前記入力決定モジュールは、更に、
各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、各前記サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定するステップと、
前記第1のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第1のメモリの残り記憶容量を決定するステップと、
前記第1のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するステップと、を含む。
一実施例において、前記目標入力データは、第1の目標入力データと、第2の目標入力データとを含み、
前記入力決定モジュールは、更に、予め設定された演算割当規則に基づいて、前記メインメモリに対応する第1の目標入力データ及び各前記スレーブメモリに対応する第2の目標入力データを決定するように構成され、
前記記憶割当モジュールは、更に、前記メインメモリの使用可能な記憶容量及び前記第1の目標入力データのデータ容量に応じて、前記第1の目標入力データの前記メインメモリにおける記憶アドレスを決定し、それぞれ各前記スレーブメモリの使用可能な記憶容量及び対応する前記第2の目標入力データのデータ容量に基づいて、各前記第2の目標入力データの前記スレーブメモリにおける記憶アドレスを決定するステップと、を含む。
一実施例において、前記目標出力データは、第1の目標出力データと第2の目標出力データを含み、前記出力決定モジュールは、更に、
前記目標演算操作及び前記第1の目標入力データに基づいて、前記第1の目標出力データ及び前記第1の目標出力データの前記メインメモリにおける記憶アドレスを決定することと、
前記目標演算操作及び各前記第2の目標入力データに基づいて、各前記第2の目標出力データ及び各前記第2の目標出力データの対応する前記スレーブメモリにおける記憶アドレスをそれぞれ決定することと、
各前記第2の目標出力データに基づいて、各前記第2の目標出力データの前記メインメモリにおける記憶アドレスをそれぞれ決定するステップと、を含む。
一実施例において、前記記憶割当モジュールは、更に、前記スレーブ処理回路で実行された他の目標演算操作に前記第2の目標出力データを使用する必要がある場合、前記第2の目標出力データを、前記スレーブ処理回路に対応するスレーブメモリに記憶するように構成される。
コンピュータ機器であって、
コントローラユニットと演算ユニットを含み、前記コントローラユニットが演算ユニットに接続され、前記演算ユニットが1つのメイン処理回路及び複数のスレーブ処理回路を含むプロセッサと、
前記メインプロセッサに近接して配置されたメインメモリと、複数の前記スレーブ処理回路に対応して配置された複数のスレーブメモリと、を含み、各前記スレーブプロセッサは、対応する前記スレーブ処理回路にそれぞれ近接して配置される複数の第1のメモリと、
第2のメモリと、を含み、前記第1のメモリ及び前記第2のメモリは、データの読み書きを行うことができ、
前記第1のメモリ又は第2のメモリには、前記プロセッサによって実行される際に本発明の実施例における方法のステップを実現するコンピュータプログラムが記憶されている。
プロセッサによって実行される際に本発明の実施例における方法のステップを実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体である。
上記のデータ前処理方法、装置、コンピュータ機器及び記憶媒体によれば、当該目標演算操作の目標出力データがそれ以降の他の演算操作の入力データである場合には、目標演算操作に対応する目標出力データをメインメモリに記憶することができるため、メインメモリと第2のメモリとの間のデータのやり取りを減らすことで、目標出力データの読み取りの回数を減らし、それにより、演算中のI/O読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。また、当該データ前処理方法は、メインメモリとスレーブメモリとの間のデータのやり取りを減らし、演算中のI/O読み取り操作がかかる時間を更に減らし、プロセッサの速度及び効率を向上させることができる。
本稿の添付図面は、本明細書に組み込まれてその一部を構成し、本発明と一致する実施例を示して、本明細書と共に、本発明の原理を説明する。
一実施例に係るコンピュータ機器を模式的に示す構造図である。 一実施例に係るコンピュータ機器のプロセッサを模式的に示す構造図である。 一実施例に係るコンピュータ機器のプロセッサを模式的に示す構造図である。 一実施例に係るコンピュータ機器のプロセッサを模式的に示す構造図である。 一実施例に係るデータ前処理方法を模式的に示すフローチャートである。 一実施例に係る図5において目標入力データを決定するステップを模式的に示すフローチャートである。 一実施例に係る図5に示されるデータ前処理方法において目標演算操作の数を決定するステップを模式的に示すフローチャートである。 一実施例に係る処理されるべき演算を模式的に示す図である。 他の実施例に係る処理されるべき演算を模式的に示す図である。 他の実施例に係るデータ前処理方法を模式的に示すフローチャートである。 一実施例に係る図10において目標入力データを決定するステップを模式的に示すフローチャートである。 一実施例に係るデータ前処理装置の構造を示すブロック図である。 一実施例に係るデータ前処理装置の構造を示すブロック図である。 他の実施例に係るデータ前処理装置の構造を示すブロック図である。
本発明の目的、技術案及び利点をより明確にするために、以下、添付図面及び実施例を参照して本発明をより詳細に説明する。なお、本稿で説明される具体的な実施例は、本発明を説明するためのものであり、本発明を限定するものではない。
また、本発明の特許請求の範囲、明細書及び添付図面における用語「第1」、「第2」、「第3」、及び「第4」などは、異なる対象を区別するためのものであり、特定の順序を説明するものではない 。本発明の明細書及び特許請求の範囲で使用される用語「含む」及び「含み」は、説明される特徴、全体、ステップ、操作、要素及び/又は部品の存在を意味するが、1つ又は複数の他の特徴、全体、ステップ、操作、要素、部品及び/又はそれらの組み合わせの存在又は追加を排除しない。
なお、本発明の明細書で使用される用語は、特定の実施例を説明するためのものであり、本発明を限定することを意図しない 。本発明の明細書及び特許請求の範囲で使用されるように、本稿で他の状況が明記されない限り、単数形の「一」、「1つ」及び「当該」は、複数形を含むことを意図する。また、本発明の明細書及び特許請求の範囲で使用される用語「及び/又は」は、挙げられた関連項目のうちの1つ又は複数の任意な組み合わせ及びあらゆる可能な組み合わせを指し、且つ、それらの組み合わせを含む。
本明細書及び特許請求の範囲で使用されるように、用語「…場合」は、文脈に応じて、「…ときに」又は「一度…」又は「…に応じて決定したら」又は「…に応じて検出したら」と解釈されてもよい。同様に、「…決定した場合」又は「[上述した条件又はイベントた]を検出した場合」というフレーズは、文脈に応じて、「一度決定したら」又は「…に応じて決定したら」又は「一度[上述した条件又はイベントた]を検出したら」又は「…に応じて[上述した条件又はイベントた]を検出したら」と解釈されてもよい。
図1に示すように、本発明の一実施例に係るコンピュータ機器は、プロセッサ100と、第1のメモリ200と、第2のメモリ300とを含んでもよい。第1のメモリ200は、プロセッサ100の近くに配置されてもよい。プロセッサ100は、第1のメモリ200と直接データを交換することができ、即ち、プロセッサ100は、第1のメモリ200から入力データを直接読み取って、上記の入力データから得られた出力データを当該第1のメモリ200に書き込むことができる。当該第1のメモリ200は、当該第2のメモリ300と直接データを交換することができ、即ち、当該第1のメモリ200は、第2のメモリ300からデータを読み取ったり、当該第2のメモリにデータを書き込んだりすることができる。また、当該第1のメモリ200のアクセス速度は第2のメモリ300のアクセス速度より大きく、当該第1のメモリ200の記憶容量は第2のメモリ300の記憶容量より小さい。
好ましくは、当該コンピュータ機器は、スマートフォン又はタブレットPCなどのモバイル端末、或いは、デスクトップPC、ボード又はクラウドサーバなどの端末であってもよい。もちろん、当該コンピュータ機器は、クラウドサーバとスマートフォンやPCなどの端末とによって形成されるコンピュータシステムであってもよい。当該コンピュータ機器は、ロボット、プリンター、スキャナー、ドライブレコーダー、ナビゲーター、カメラ、ビデオカメラ、プロジェクター、時計、モバイルストレージ、ウェアラブル機器、乗り物、家電製品、及び/又は医療機器に適用することができる。乗り物は、飛行機、船及び/又は車両を含んでもよい。家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、レンジフードを含んでもよい。医療機器は、核磁気共鳴装置、超音波診断装置(Bモード)及び/又は心電計などを含んでもよい。
好ましくは、当該第1のメモリ200は、内蔵メモリであり、当該第2のメモリ300は、ハードディスクなどの外部メモリであってもよい。例えば、当該第1のメモリ200は、RAM(Random−Access Memory、ランダムアクセス第1のメモリ200)などであり、第2のメモリ300は、DDR(Double Data Rate、データ倍速同期動的ランダムアクセス第1のメモリ200)などであってもよい。好ましくは、当該第1のメモリ200は、当該プロセッサ100と統合されてもよく、即ち、当該第1のメモリ200は、例えば、キャッシュ(Cache)であるオンチップメモリであり、当該第2のメモリ300は、例えば、RAMなどの内蔵メモリであるオフチップメモリであってもよい。
好ましくは、第2のメモリ300は、特定の演算を実行するためにコンピュータ機器に必要とされるデータやコンピュータプログラムなどを記憶するように構成されてもよい。また、当該データは、例えば、ニューラルネットワークデータなどの機械学習データであってもよい。第1のメモリ200の記憶容量はより小さいので、プロセッサ100は、特定の演算を実行しようとする場合、第2のメモリ300に記憶された特定の演算を完成するのに必要なデータを第1のメモリ200に書き込んでもよい。それにより、プロセッサ100は、特定の演算に必要とされる入力データを第1のメモリ200から読み取って演算を行い、演算結果を第1のメモリ200に書き込むことができる。
一実施例において、図2に示すように、プロセッサ100は、コントローラユニット110と演算ユニット120とを含み、コントローラユニット110は演算ユニット120に接続され、当該演算ユニット120は、1つのメイン処理回路121及び複数のスレーブ処理回路122を含んでもよく、当該メイン処理回路121とスレーブ処理回路122とによって、メインスレーブ構造が形成される。これに対応して、第1のメモリ200の数は複数であってもよく、複数の第1のメモリ200によってメインスレーブ構造の記憶システムが形成できる。例えば、複数の第1のメモリ200は、1つのメインメモリと複数のスレーブメモリとを含み、当該メインメモリはメイン処理回路に近接して配置され、当該スレーブメモリはスレーブ処理回路に近接して配置されてもよい。好ましくは、当該メインメモリは、メイン処理回路のオンチップメモリであり、当該スレーブメモリは、スレーブ処理回路のオンチップメモリであってもよい。また、当該メインメモリの記憶容量は、各スレーブメモリの記憶容量より小さい。更に、各スレーブプロセッサには、1つ以上のスレーブメモリが対応して配置されてもよく、本明細書では特に限定されない。
好ましくは、上記のコントローラユニット110は、データ及び計算命令を取得するように構成される。当該データは、具体的には、機械学習データを含んでもよい。好ましくは、当該機械学習データは、ニューラルネットワークデータであってもよい。コントローラユニット110は、更に、取得された計算命令を解析して演算命令を得て、複数の演算命令及びデータをメイン処理回路に送信するように構成される。メイン処理回路121は、データ及びメイン処理回路121と複数のスレーブ処理回路122との間で伝送されたデータ及び演算命令に対して事前処理を実行するように構成される。複数のスレーブ処理回路122は、メイン処理回路121から伝送されたデータ及び演算命令に応じて中間演算を並列に実行して複数の中間結果を得て、複数の中間結果をメイン処理回路121に伝送するように構成される。メイン処理回路121は、更に、複数の中間結果に対して後続処理を実行して計算命令の計算結果を得るように構成される。当該メイン処理回路121及び各スレーブ処理回路122両方には、第1のメモリが統合されており、即ち、複数の第1のメモリはメイン処理回路及びスレーブ処理回路のオンチップメモリであり、第2のメモリはプロセッサのオフチップメモリであってもよい。
好ましくは、当該コントローラユニット110は、機械学習データに関連する計算命令を記憶するように構成される命令キャッシュユニット111と、計算命令を解析して複数の演算命令を得るように構成される命令処理ユニット112と、キューの順序で実行されるべき複数の演算命令又は計算命令を含む命令キューを記憶するように構成される記憶キューユニット114と、を含んでもよい。好ましくは、コントローラユニット110は、複数の演算命令がある場合には、第1の演算命令と第1の演算命令の前の第0の演算命令との間に関連関係があるかどうかを判定し、第1の演算命令と第0の演算命令との間に関連関係があれば、第1の演算命令を命令記憶ユニットにキャッシュし、第0の演算命令の実行が終了した後、第1の演算命令を命令記憶ユニットから抽出して演算ユニットに伝送するように構成される依存関係処理ユニット113を更に含んでもよい。具体的には、依存関係処理ユニット113は、第1の演算命令に応じて第1の演算命令に必要とされるデータ(例えば、行列)の第1の記憶アドレス区間を抽出し、第0の演算命令に応じて第0の演算命令に必要とされる行列の第0の記憶アドレス区間を抽出する場合に、第1の記憶アドレス区間と第0の記憶アドレス区間との間に重なる領域があれば、第1の演算命令と第0の演算命令との間に関連関係があると判定し、第1の記憶アドレス区間と第0の記憶アドレス区間との間に重なる領域がなければ、第1の演算命令と第0の演算命令との間に関連関係がないと判定する。
一実施例において、図3に示すように、演算ユニット120は、分岐処理回路123を更に含んでもよく、メイン処理回路121は分岐処理回路123に接続され、分岐処理回路123は複数のスレーブ処理回路122に接続され、分岐処理回路123は、メイン処理回路121とスレーブ処理回路122との間のデータ又は命令の転送を実行するように構成される。本実施例において、メイン処理回路121は、具体的には、1つの入力ニューロンを複数のデータブロックに割り当て、複数のデータブロックのうちの少なくとも1つのデータブロック、重み値、及び複数の演算命令のうちの少なくとも1つの演算命令を分岐処理回路に送信するように構成され、分岐処理回路123は、メイン処理回路121と複数のスレーブ処理回路122との間のデータブロック、重み値、及び演算命令を転送するように構成され、複数のスレーブ処理回路122は、受信されたデータブロック及び重み値に対して当該演算命令に応じて演算を実行して中間結果を得て、中間結果を分岐処理回路123に伝送するように構成され、メイン処理回路121は、更に、分岐処理回路によって送信された中間結果に対して後続処理を行って計算命令の結果を得て、当該計算命令の結果を前記コントローラユニットに送信するように構成される。好ましくは、各分岐処理回路123にも第1のメモリが統合されている。
他の実施例において、図4に示すように、演算ユニット120は、1つのメイン処理回路121と複数のスレーブ処理回路122を含んでもよい。複数のスレーブ処理回路はアレイ状に配列され、各スレーブ処理回路は、隣接する他のスレーブ処理回路に接続され、メイン処理回路は、複数のスレーブ処理回路のうちのk個のスレーブ処理回路に接続され、k個のスレーブ処理回路は、1行目にあるn個のスレーブ処理回路、m行目にあるn個のスレーブ処理回路、及び1列目にあるm個のスレーブ処理回路である。 なお、図1Cに示されるK個のスレーブ処理回路は、1行目にあるn個のスレーブ処理回路、m行目にあるn個のスレーブ処理回路、及び1列目にあるm個のスレーブ処理回路のみを含み、即ち、当該k個のスレーブ処理回路は、複数のスレーブ処理回路のうちの、メイン処理回路に直接接続されたスレーブ処理回路である。K個のスレーブ処理回路は、メイン処理回路と複数のスレーブ処理回路との間のデータ及び命令を転送するように構成される。
本発明によって提供されたプロセッサにより、演算ユニットは、シングルマスタ・マルチスレーブの構造と配置され、フォワード演算の計算命令に対しては、フォワード演算の計算命令に応じてデータが分割され、複数のスレーブ処理回路により計算量の多い部分に対して並列演算を行うことができるため、演算速度が向上し、演算時間が短縮され、消費電力が低減される。
好ましくは、上記の機械学習計算は、具体的には、人工ニューラルネットワーク演算を含み、上記の入力データは、具体的には、入力ニューロンデータ及び重み値データを含んでもよい。上記の計算結果は、具体的には、人工ニューラルネットワーク演算の結果、即ち、出力ニューロンデータであってもよい。
ニューラルネットワークにおける演算は、ニューラルネットワークにおける1層の演算であってもよく、多層ニューラルネットワークの実現プロセスは、次の通りである。順演算において、前の層の人工ニューラルネットワークの実行が完了した後、次の層の演算命令は、演算ユニットで算出された出力ニューロンを次の層の入力ニューロンとして演算し(或いは、当該出力ニューロンに対していくつかの操作を実行して、また次の層の入力ニューロンとし)、それとともに、重み値も次の層の重み値に置き換える。逆演算において、前の層の人工ニューラルネットワークの逆演算が完了した後、次の演算命令は、演算ユニットで算出された入力ニューロンの勾配を次の層の出力ニューロンの勾配として演算し(或いは、当該入力ニューロンの勾配に対していくつかの操作を実行して、また次の層の出力ニューロンの勾配とし)、それとともに、重み値を次の層の重み値に置き換える。
上記の機械学習計算は、サポートベクターマシン演算、k最近傍(k−nn)演算、k平均(k−means)演算、主成分分析演算などを更に含んでもよい。以下、説明の便宜上、人工ニューラルネットワーク演算を例として機械学習計算の具体的なスキームを説明する。
人工ニューラルネットワーク演算については、人工ニューラルネットワーク演算が多層演算を備える場合、多層演算の入力ニューロン及び出力ニューロンは、ニューラルネットワーク全体における入力層内のニューロン及び出力層内のニューロンを指すことではなく、ネットワークにおける任意の2つの隣接層に対して、ネットワークの順演算における下層にあるニューロンは入力ニューロンであり、ネットワークの順演算における上層にあるニューロンは出力ニューロンである。畳み込みニューラルネットワークを例として、畳み込みニューラルネットワークはL層を備え、K=1,2,...,L−1であるとすると、第K層及び第K+1層について、第K層を入力層と呼び、その中のニューロンは前記入力ニューロンであり、第K+1層を出力層と呼び、その中のニューロンは前記出力ニューロンである。つまり、最上層を除いて、各層は入力層とされることができ、次の層は対応する出力層である。
一実施例において、当該第2のメモリは、コンピュータプログラムを記憶するように構成され、当該プロセッサによって上記のコンピュータプログラムが実行されると、本発明の実施例に係るデータ前処理方法が実現され、それにより、処理されるべき演算の実行中の様々なデータの記憶域スペース割当規則が得られる。具体的には、上記のコンピュータ機器は、以下のデータ前処理方法を実行し、処理されるべき演算(例えば、ニューラルネットワーク演算など)に対して前処理を実行し、当該処理されるべき演算の入力データ、出力データ、及び中間計算結果などのデータの第1のメモリにおける記憶域スペース割当規則を得るように構成されてもよい。このように、プロセッサによって当該処理されるべき演算が実行されると、当該処理されるべき演算に係るデータ(入力データ、出力データ、中間計算結果など)は、上記の記憶域スペース割当規則に基づいて第1のメモリに記憶されることができる。このように、演算過程における記憶資源を事前に割り当てることで、第1のメモリの記憶域スペースを合理的に利用できるだけでなく、処理の演算速度及び精度を向上させることもできる。当該記憶域スペース割当規則は、処理されるべき演算の実行中の入力データの記憶アドレス、出力データの記憶アドレス、中間計算結果の記憶アドレス、および各記憶域スペースにデータを記憶するための更新規則を含んでもよい。具体的には、以下の説明を参照する。
本発明の実施例において、演算過程におけるデータの読み書き操作を減らす(即ち、I/O操作の回数を減らす)ために、上記のコンピュータ機器に適用できるデータ前処理方法が提供される。具体的には、図5に示すように、当該データ前処理方法は以下のステップを含んでもよい。
S100:第1のメモリの使用可能な記憶容量及び目標演算操作を取得する。
具体的には、プロセッサは、当該第1のメモリの構成情報(例えば、当該第1のメモリのモデルなどの情報)に応じて、当該第1のメモリの総記憶容量を取得してもよい。また、プロセッサは、当該第1のメモリの総記憶容量及び当該第1のメモリの占められた記憶容量に応じて、当該第1のメモリの使用可能な記憶容量を取得してもよい。
本発明の実施例において、プロセッサは、処理されるべき演算を取得して、当該処理されるべき演算及び第1のメモリの使用可能な記憶容量に応じて目標演算操作を決定してもよい。当該処理されるべき演算は、1つ又は複数の演算操作を含んでもよく、当該処理されるべき演算は、ニューラルネットワークなどの演算であってもよい。例えば、当該処理されるべき演算に含まれた演算操作は、加算、減算、乗算、除算、畳み込み、プーリング(Pooling)、及び活性化(例えば、Relu)などの演算であってもよい。当該目標演算操作は、処理されるべき演算のうちの1つ又は複数の演算操作の組み合わせであってもよい。
S200:目標演算操作及び第1のメモリの使用可能な記憶容量に応じて、目標演算操作に対応する目標入力データを決定し、目標入力データは、目標演算操作に対応する全入力データの一部又は全部である。
具体的には、プロセッサは、当該目標演算操作に基づいて、当該目標演算操作を完成させるのに必要な全入力データ及び当該全入力データのデータ容量(即ち、当該全入力データに必要とされる記憶域スペースの大きさ)を決定してもよい。更に、プロセッサは、第1のメモリの使用可能な記憶容量及び当該目標演算操作の全入力データのデータ容量に応じて、当該目標演算操作に対応する目標入力データ及びそのデータ容量を決定してもよく、当該目標入力データのデータ容量は、第1のメモリの記憶容量より大きくない。当該目標入力データは、当該目標演算操作に対応する全入力データの一部又は全部であり、即ち、当該目標入力データのデータ容量は、当該目標演算操作に対応する全入力データのデータ容量より大きくない。目標入力データのデータ容量が当該目標演算操作の全入力データのデータ容量より小さい場合、当該目標演算操作の全入力データの一部のみを第1のメモリ上にロードすることで、第1のメモリ上には、当該目標演算操作の目標出力データや中間計算結果などのデータを記憶するための一定の記憶域スペースを確保することができる。目標入力データのデータ容量が当該目標演算操作の全入力データのデータ容量と等しい場合、記憶域スペースの再利用により、当該目標演算操作の目標出力データや中間計算結果などのデータを記憶することが実現できる。
S300:目標演算操作と目標入力データに応じて、目標演算操作の目標出力データを決定する。
具体的には、処理されるべき演算の計算量は静的な解析が可能であるため、プロセッサは、当該目標演算操作の目標入力データ及び当該目標演算操作に基づいて、当該目標演算操作の目標出力データや当該目標出力データのデータ容量などの情報を取得することができ、即ち、プロセッサは、当該目標演算操作の目標出力データに必要とされる記憶域スペースを取得することができる。
S400:目標演算操作の目標出力データが当該目標演算操作以降の他の演算操作の入力データである場合、当該目標出力データの読み取りの回数を減らすように、目標出力データを第1のメモリに記憶する。
具体的には、当該目標演算操作の目標出力データが当該目標演算操作以降の他の演算操作の入力データである場合には、即ち、当該目標演算操作以降に当該目標出力データを使用し続ける必要がある場合には、当該目標出力データを前記第1のメモリ上に記憶することで、目標出力データの読み取りの回数を減らし、プロセッサの速度及び効率を向上させることができる。
従来技術では、プロセッサは、当該目標演算操作を実行して上記の目標出力データを取得した後、当該目標出力データを第1のメモリから第2のメモリに転送することで、第1のメモリの目標出力データによって占められた記憶域スペースを解放する。当該目標演算操作以降の演算操作は当該目標出力データを使用し続ける必要がある場合、プロセッサは、当該目標出力データを第2のメモリから第1のメモリに再度転送する必要がある。この方法において、目標出力データのI /O読み取り操作が複数回実行される必要があるため、演算時間が長く、プロセッサの効率及び速度が低い結果が生じやすい。従来技術と比較して、本発明の実施例に係るデータ前処理方法によれば、目標出力データの読み取りの回数を減らすことで、演算過程におけるI/O読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
例えば、図8に示すように、プロセッサは、目標演算操作OP1を取得してもよく、その目標演算操作OP1の全入力データは、入力データXであり、入力データXは、サブ入力データX11、X21、X12及びX22を含み、サブ入力データX11とX12によって入力データX1が構成され、サブ入力データX21とX22によって入力データX2が構成され、当該入力データX1とX2は、ベクター又は行列データなどであってもよい。プロセッサは、目標演算操作OP1及び第1のメモリの使用可能な記憶容量に基づいて、サブ入力データX11とX21を当該目標演算操作OP1の目標入力データとしてもよい。また、当該プロセッサは、目標演算操作OP1及び目標入力データX11とX21に基づいて、目標出力データY1及び目標出力データY1のデータ容量を決定してもよい。
更に、プロセッサは、予め設定された演算規則に基づいて、当該標出力データY1が目標演算操作OP1以降の他の演算操作によって使用される必要があるかどうかを判断し、当該目標出力データY1が目標演算操作OP1以降の他の演算操作によって使用される必要がある場合、例えば、当該目標出力データY1が目標演算操作OP1以降の演算操作OP2の入力データである場合、当該目標出力データY1を第1のメモリに一時的に記憶してもよい。このように、演算操作OP2が次の目標演算操作である場合には、プロセッサは、次の演算操作OP2を実行する前に、当該演算操作OP2に必要とされる入力データY3を予め設定された規則に基づいて第2のメモリから第1のメモリに移動すればよく、当該目標出力データY1の移動ステップを再度実行する必要がない。更に、当該目標出力データY1は、目標演算操作OP1以降の演算操作OP2の入力データであり、それと同時に、当該目標出力データY1は、演算操作OP3の入力データである。この場合、当該目標出力データY1を演算操作OP2、OP3が完了するまで第1のメモリに記憶し、その後、第1のメモリの目標出力データY1によって占められたた記憶域スペースを解放するように、当該目標出力データY1を第1のメモリから削除してもよい。
本発明の一実施例に係るデータ前処理方法によれば、演算操作OP1が終了した後に目標出力データY1を第1のメモリから第2のメモリに移動する過程、及び演算操作OP2を行う際に目標出力データY1を第2のメモリから第1のメモリに移動する過程を削減したので、目標出力データの読み取りの回数を減らすことで、演算過程におけるI/O読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
好ましくは、上記の処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、図8に示すように、上記の演算操作OP1とOP2は、ニューラルネットワーク演算の演算層であってもよい。上記の入力データXは、入力ニューロンデータや重み値データなどを含み、入力データX1とX2を含んでもよい。好ましくは、上記の入力データX1とX2は、それぞれ異なる演算層に属していてもよい。また、プロセッサは、当該目標演算層OP1及び第1のメモリの使用可能な記憶容量に基づいて、サブ入力データX11とX21を当該目標演算層OP1の目標入力データとしてもよい。更に、当該プロセッサは、目標演算層OP1及び目標入力データX11とX21に応じて、演算層OP1の出力データの一部である目標出力データY1及び当該目標出力データY1のデータ容量を決定し、当該出力データは、演算層OP1の出力ニューロンデータや重み値などを含んでもよい。
他の例として、図9に示すように、当該処理されるべき演算は、ニューラルネットワーク演算などの演算であり、畳み込み層、プーリング層、及び活性化層を含み、上記の各演算層の実行順序は、畳み込み演算操作−プーリング演算操作−活性化演算操作である。つまり、畳み込み演算操作の出力データは、プーリング演算操作の入力データであり、プーリング演算操作の出力データは、活性化演算操作の入力データである。各演算層の入力データは、演算層に対応する入力ニューロンデータや重み値などのデータを含んでもよい。
現在の目標演算操作がプーリング演算操作である場合、プロセッサは、第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、当該プーリング演算操作に対応する目標入力データを取得して、C1−C2区間内のデータとしてもよい(C1−C2区間内のデータは、畳み込み演算の出力データを表し、畳み込み演算操作に対応する出力ニューロンデータ及び重み値等を含んでもよい)。当該目標入力データC1−C2に対応する目標出力データは、B1−B2区間内のデータである(ここで、B1−B2区間内の目標出力データは、プーリング演算操作に対応する出力ニューロンデータ及び重み値等を含んでもよい)。また、当該プーリング演算操作の目標出力データB1−B2が活性化演算操作の入力データであるため、当該プーリング演算操作の目標出力データB1−B2を第1のメモリに記憶してもよい。このように、プーリング演算操作が完了した後、目標出力データB1−B2を第1のメモリから第2のメモリに移動して、第1のメモリ上の記憶域スペースを解放する必要がなくなる。そして、活性化演算操作を実行する前に、当該目標出力データB1−B2を第2のメモリから第1のメモリに再度移動する必要がなくなる。
従来技術では、プロセッサは、目標出力データB1−B2を取得した後、まず、当該目標出力データB1−B2を第1のメモリから第2のメモリに移動することで、第1のメモリの記憶域スペースを解放する。活性化演算操作の入力データはプーリング演算操作の出力データに依存するため、プロセッサは、活性化演算操作を実行しようとする前に、当該プーリング演算操作に対応する目標出力データB1−B2であるデータブロックを第2のメモリから第1のメモリに再度移動する。I/O帯域幅が限られた場合、このような頻繁なデータの読み取り操作はプロセッサの処理効率に影響を与える。このため、先行技術と比較して、本発明の実施例に係るデータ前処理方法は、目標出力データの読み取りの回数を減らす(即ち、目標出力データのロード及び記憶の操作を減らす)ことで、I/O読み取り操作がかかる時間を減少し、プロセッサの速度及び効率を向上させることができる。
一実施例において、前記方法は、更に、以下のステップを含む。
目標演算操作の目標出力データは目標演算操作以降の他の演算操作の入力データである(即ち、当該目標演算操作の出力データは当該処理されるべき演算の中間結果データである)場合には、当該目標演算操作の目標出力データを第1のメモリ又は第1のメモリと第2のメモリ両方に記憶する。具体的には、目標演算操作の目標出力データは目標演算操作以降の他の演算操作の入力データである場合には、当該目標出力データを第1のメモリに記憶することで、目標出力データの繰り返しロード操作を減らす(目標出力データのロード操作を減らす)ことができる。同時に、第1のメモリにおけるデータと第2のメモリにおけるデータとの間の一貫性を保証するように、当該目標出力データを第1のメモリから第2のメモリにコピーしてもよい。好ましくは、当該目標演算操作に対応する目標出力データを第2のメモリに同期に記憶する必要があるかどうかは、具体的な演算要求に応じて決定されてもよい。
当該目標出力データを第2のメモリに同期に記憶する必要がない場合、当該目標出力データを第1のメモリのみに記憶することで、目標出力データのロード及び記憶の操作を同時に減らすことができる。当該目標出力データを第2のメモリに同期に記憶する必要がある場合、目標出力データを第1のメモリと第2のメモリ両方に同期に記憶することで、当該目標出力データのロード操作を減らし、それにより、データの読み取り操作が過剰にI/O帯域幅を占めてプロセッサの処理速度に影響することを避けることができる。
図8に示すように、当該目標出力データY1が目標演算操作OP1以降の他の演算操作によって使用される必要がある場合、例えば、当該標出力データY1は目標演算操作OP1以降の演算操作OP2の入力データである場合、当該目標出力データY1を第1のメモリに一時的に記憶してもよい。このように、演算操作OP2が次の目標演算操作である場合には、プロセッサは、次の演算操作OP2を実行する前に、当該演算操作OP2に必要とされる入力データY3を予め設定された規則に基づいて第2のメモリから第1のメモリに移動すればよく、当該目標出力データY1の移動ステップを再度実行する必要がない。更に、プロセッサは、第1のメモリにおけるデータと第2のメモリにおけるデータとの間に一貫性があるように、目標出力データY1を第1のメモリから第2のメモリにコピーしてもよい。このように、本発明の一実施例に係るデータ前処理方法は、演算操作OP1の計算が終了した後に目標出力データY1を第1のメモリから第2のメモリに移動する過程を削減したので、目標出力データの読み取りの回数を減らすことで、演算過程におけるI/O読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
図9に示すように、当該プーリング演算操作の目標出力データB1−B2が活性化演算操作の入力データであるため、当該プーリング演算操作の目標出力データB1−B2を第1のメモリと第2のメモリ両方に同時に記憶してもよい。このように、活性化演算操作を実行する前に、当該目標出力データB1−B2を第2のメモリから第1のメモリに再度移動する必要がなくなる。それとともに、プーリング演算操作が完了した後、目標出力データB1−B2を第1のメモリから第2のメモリにコピーすることで、第1のメモリにおけるデータと第2のメモリにおけるデータとの間の一貫性を保証することができる。先行技術と比較して、本発明の実施例に係るデータ前処理方法は、目標出力データB1−B2を第2のメモリから第1のメモリに再度移動する過程を削減したので、目標出力データの読み取りの回数を減らすことによって、演算過程におけるI/O読み取り操作がかかる時間を減らし、プロセッサの速度及び効率を向上させることができる。
一実施例において、処理されるべき演算の各目標演算操作に必要とされる全入力データのデータ容量が大きいので、プロセッサは、各目標演算操作に係る全入力データを分割し、即ち、第1のメモリの使用可能な記憶容量に基づいて、各目標演算操作に係る全入力データ(入力ニューロンデータ及び重み値等を含み)を複数の入力データブロックに分割し、目標演算操作の計算結果を得るように各入力データブロックに対してそれぞれ目標演算操作を実行してもよい。最後に、各入力データブロックに対応する計算結果を融合することで、当該目標演算操作に対応する出力データを得ることができる。当該入力データブロックは、上記の目標入力データであり、各入力データブロックに対応する出力データは、上記の目標出力データである。好ましくは、上記のステップS200は、具体的には、
プロセッサは、第1のメモリの使用可能な記憶容量及び当該目標演算操作に必要とされる入力データのデータ容量に基づいて、当該目標演算操作に対応する入力データブロックを決定して、当該入力データブロックを当該目標演算操作に対応する目標入力データとすることを含む。具体的には、当該目標演算操作に必要とされる全入力データのデータ容量が第1のメモリの使用可能記憶容量より大きい場合、プロセッサは、第1のメモリの使用可能な記憶容量に基づいて、当該目標演算操作の全入力データの一部である、目標演算操作に対応する入力データブロックを決定してもよい。当該目標演算操作に必要とされる全入力データのデータ容量が第1のメモリの使用可能な記憶容量より大きくない場合、当該目標演算操作の全入力データを1つの入力データブロック、即ち、その目標入力データとしてもよい。
例えば、図8に示すように、プロセッサは、現在の目標演算操作OP1を取得してもよく、当該目標演算操作OP1の全入力データは、入力データX1およびX2を含む全入力データXである。プロセッサは、当該目標演算操作OP1及び第1のメモリの使用可能なメモリ容量に基づいて、サブ入力データX21及び入力データのサブ入力データX21を、当該目標演算操作OP1の目標入力データとしてもよく、当該サブ入力データX21のデータ容量とサブ入力データX11のデータ容量との和は、第1のメモリの使用可能な記憶容量より小さい。もちろん、他の実施例において、当該目標演算操作に対応する全入力データXのデータ容量が第1のメモリの使用可能な記憶容量より小さい場合、当該目標演算操作に対応する全入力データをすべて第1のメモリにロードしてもよい。
他の例として、図9に示すように、現在の目標演算操作がプーリング演算操作である場合、プロセッサは、第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、C1−C2区間内のデータ(C1−C2区間内のデータは、畳み込み演算の出力データを表し)を1つの入力データブロックとし、当該入力データブロックを当該プーリング演算操作に対応する目標入力データとしてもよい。現在の目標演算操作が活性化演算操作である場合、プロセッサは、第1のメモリの使用可能な記憶容量に基づいて、B1−B2区間内のデータを活性化演算操作の1つの入力データブロックとし、当該入力データブロックを当該活性化演算操作の目標入力データをとしてもよい。
一実施例において、各目標演算操作に係る全入力データが複数の入力データブロックに分割された場合、各入力データブロックのデータ容量は第1のメモリの記憶容量より小さいため、当該目標演算操作は、処理されるべき演算の複数の演算操作と融合することができ、それにより、第1のメモリの記憶域スペースを最大化させて演算の効率を向上させることができる。好ましくは、上記の目標演算操作は1つ以上の演算操作を含み、即ち、当該目標演算操作は、1つ以上の演算操作の組み合わせである。一般に、当該目標演算操作に含まれる各演算操作は、異なる演算を実現するための異なる演算操作である。この場合、プロセッサは、第1のメモリの使用可能な記憶容量に基づいて各演算操作に対応するサブ目標入力データを決定して、各演算操作に対応するサブ目標入力データに基づいて当該目標演算操作に対応する目標入力データを決定してもよい。具体的には、図6に示すように、上記のステップS200において目標演算操作に対応する入力データブロックを決定するステップは、更に、以下のステップを含む。
S210:第1のメモリの使用可能な記憶容量及び各演算操作の融合属性に応じて、融合可能な演算操作の数を決定し、融合数閾値を得る。各演算操作の融合属性は、各演算操作に係る入力データ及び/又は出力データの間のデータ依存関係などを含んでもよい。
なお、1つ又は複数の演算操作はプロセッサによって一緒に実行されることができる場合、当該1つ又は複数の演算操作は融合されることができ、即ち、融合度が高いと見なしてもよい。1つ又は複数の演算操作はプロセッサによって一緒に実行されることができない場合、当該1つ又は複数の演算操作は融合されることができなく、即ち、融合度が低いと見なしてもよい。各演算操作の間の融合度は、予め設定された演算規則によって決定されてもよく、本明細書では特に限定されない。
S220:融合数閾値より大きくない選択された数の融合可能な1つ以上の演算操作の組み合わせを、1つの目標演算操作とする。
例えば、選択された数は、融合数閾値に等しく、即ち、第1のメモリの記憶容量によって決定された融合可能な複数の演算操作を、1つの目標演算操作に相当する。
S230:選択された数の各演算操作に対応するサブ目標入力データを、当該目標演算操作に対応する目標入力データとする。
例えば、図8に示すように、処理されるべき演算は、2つの演算操作の融合属性に基づいてプロセッサによって一緒に実行されることができる演算操作OP1及びOP2を含んでもよく、第1のメモリの使用可能な記憶容量は 演算操作OP1の目標入力データと目標出力データ、及び演算OP2の目標入力データと目標出力データを収容できる場合、当該目標演算操作によって融合可能な演算操作の数は2つであると見なし、当該演算操作OP1とOP2を1つの目標演算操作としてもよい。それとともに、演算操作OP1とOP2とに対応するサブ目標入力データX11、X21、及びY3を当該目標演算操作の目標入力データとする。
演算操作OP1とOP2とがお互いに融合できるが、第1のメモリの使用可能な記憶容量は、演算操作OP1の目標入力データと目標出力データのみを収容でき、演算操作OP2の目標入力データと目標出力データを完全に収容できない場合、当該目標演算操作によって融合可能な演算操作の数は1つであると見なし、当該演算操作OP1を1つの目標演算操作としてもよい。それとともに、当該演算操作OP1に対応するサブ目標入力データX11、X21を当該目標演算操作の目標入力データとする。
当然、他の実施例において、当該目標演算操作に含まれる演算操作の数は、2つ以上であってもよい。例えば、当該処理されるべき演算の深さ方向には、演算操作OP2以降に他の融合可能な演算操作が存在し、且つ、上記の融合可能な演算操作に対応する目標入力データ及び目標出力データのデータ容量は、当該第1のメモリの使用可能な記憶容量を満たすことができる場合、当該目標演算操作に含まれる演算操作の数は、OP1、OP2、OPn(nは、2より大きい正の整数である)であってもよい。OP1、OP2、OPnに対応する目標入力データのデータ容量と目標出力データのデータ容量との和は、当該第1のメモリの使用可能な記憶容量より大きくない。
また、当該処理されるべき演算は、ニューラルネットワークなどの演算であり、当該ニューラルネットワーク演算は、複数の演算層を含み、各演算層は、1つの演算操作を表してもよい。例えば、プロセッサは、ニューラルネットワーク等に対して演算を行う必要がある場合、ニューラルネットワークの各演算層が1つの演算操作とされることができ、ニューラルネットワークの各演算層の接続関係に基づいて、各演算操作の融合属性を決定することができ、即ち、 ニューラルネットワークの各演算層の間の接続関係に基づいて、どの演算層が融合できるか及び融合可能な演算層の数を決定して、1つ以上の融合可能な演算層の組み合わせを1つの目標演算操作とすることができる。このように、ニューラルネットワークの深さ方向に複数の演算層を融合させて1つの目標演算操作とすることにより、演算の回数及びデータの読み取りの回数を減らし、プロセッサの処理効率を更に向上させることができる。
例えば、図9に示すように、当該ニューラルネットワークの各演算層の接続関係に基づいて、ニューラルネットワークの深さ方向に畳み込み演算操作、プーリング演算操作、及び活性化演算操作は、お互いに融合できると決定することができる。この場合、プロセッサは、第1のメモリの使用可能な記憶容量、及び各演算操作の目標入力データ容量等に基づいて、融合数閾値を決定することができる。具体的には、第1のメモリの使用可能な記憶容量は、プーリング演算操作の目標入力データC1−C2及び活性化演算操作の目標入力データB1−B2を収容できる場合、融合数閾値は2つであると決定し、プーリング演算操作と活性化演算操作を、1つの目標演算操作に相当させることができる。この場合、当該目標演算操作の目標入力データは、C1−C2区間内にあるデータであってもよい。他の実施例において、当該目標演算操作は、畳み込み演算操作、プーリング演算操作、及び活性化演算操作3つの融合であってもよい。
あるいは、当該活性化演算操作以降に他の演算操作を実行する必要がある場合、当該目標演算操作は、第1のメモリの使用可能な記憶容量に基づいて、より多くの演算操作を融合し続けてもよい。例えば、当該ニューラルネットワークは、N個の演算層を含み、プロセッサは、第1のメモリの使用可能な記憶容量に基づいて、融合閾値がn個(nは、1より小さくなくてNより大きくない)であると決定して、n個の演算層を1つの目標演算操作としてもよい。これは例として説明するためのものだけであり、限定するものではない。
更に、当該目標演算操作が複数の演算操作を含む場合には、当該目標演算操作の実行過程の中間計算結果を第1のメモリに記憶してもよい。具体的には、上記の方法は、以下のステップを更に含む。
当該目標演算操作において、現在の演算操作によって出力された中間演算結果をそれ以降の他の演算操作の入力データとし、或いは、現在の演算操作によって出力された中間演算結果を他の目標演算操作の入力データとする必要がある場合、プロセッサは、現在の演算操作によって出力された中間演算結果を第1のメモリに一時的に記憶してもよい。具体的には、プロセッサは、現在の演算操作によって出力された中間結果のデータ容量に基づいて、第1のメモリにおいて現在の演算操作によって出力された中間結果に記憶アドレスを割り当ててもよい。
現在の演算操作以降の他の演算操作又は他の目標演算操作は、当該現在の演算操作によって出力された中間計算結果を使用する必要がない場合、当該現在の演算操作によって出力された中間結果によって占められた記憶域スペースを割り当て直し、即ち、当該現在の演算操作の中間結果によって占められた記憶アドレスを他のデータに割り当ててもよい。
例えば、図8に示すように、現在の演算操作OP1によって出力された中間計算結果Y1が次の演算操作OP2の入力データである場合、プロセッサは、現在の演算操作によって出力された中間結果Y1を一時的に第1のメモリに記憶してもよい。これにより、中間計算結果Y1の読み取りの回数を減らし、プロセッサの処理効率及び処理速度を向上させることができる。当該演算操作OP2が当該中間計算結果を使用し続ける必要がなく、且つ、目標演算操作以降の他の目標演算操作が当該中間計算結果Y1を再利用する必要がない場合、第1のメモリ上の記憶域スペースの再利用を実現するように、当該中間計算結果Y1によって占められた記憶域スペースを解放して、当該中間計算結果Y1によって占められた記憶アドレスを他のデータに割り当て、例えば、現在の目標演算操作以降の他の目標演算操作の目標出力データを中間計算結果によって占められた記憶域スペースに記憶してもよい。
他の例として、図9に示すように、プーリング演算操作の目標入力データはC1−C2区間内にあるデータであり、当該目標入力データに対応する目標出力データはB1−B2区間内にあるデータである。そして、目標出力データB1−B2は活性化演算操作の目標入力データである場合、プロセッサは、当該中間計算結果B1−B2を第1のメモリに一時的に記憶してもよい。これにより、中間計算結果B1−B2の読み取りの回数を減らし、プロセッサの処理効率及び処理速度を向上させることができる。活性化演算操作は当該目標出力データB1−B2を使用する必要がない場合、第1のメモリ上の記憶域スペースの再利用を実現するように、目標出力データB1−B2によって占められた記憶域スペースを他のデータに割り当ててもよい。
一実施例において、目標演算操作の目標入力データは当該目標演算操作に対応する全入力データの一部のみである場合、当該目標演算操作の各目標入力データは、当該目標演算操作の一部の演算を完成するためにのみ使用される。当該目標演算操作の処理速度を向上させ、第1のメモリの記憶域スペースを十分に利用するために、当該目標演算操作に対応する目標入力データの数は1つ以上であり、各目標入力データは全入力データの一部であり、即ち、各目標入力データは、全入力データの1つ以上の入力データブロックを含んでもよい。つまり、1つ以上の目標入力データを同時に第1のメモリにロードしてもよい。更に、当該目標入力データの数に応じて、当該目標演算操作を複数のサブ目標演算操作に分割してもよい。好ましくは、各サブ目標演算操作は、同じ演算を実現することができる。具体的には、図7に示すように、上記の方法は、以下のステップを更に含む。
S500:各前記サブ目標演算操作に対応する目標入力データの容量及び目標出力データのデータ容量に応じて、等しくても等しくなくてもよい、各サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定する。
S510:第1のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、第1のメモリの残り記憶容量を決定する。
S520:第1のメモリの残り記憶容量及び各サブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定する。
好ましくは、当該第1のメモリの残り記憶容量及び現在のサブ目標演算操作以外の他のサブ目標演算操作の目標記憶容量に応じて、第1のメモリ上にいくつのサブ目標演算操作を収容できるかと決定してもよい。そして、現在のサブ目標演算操作及びそれ以外の他のサブ目標演算操作の数に基づいて、サブ目標演算操作の総数を決定してもよい。
具体的には、現在のサブ目標演算操作の目標入力データのデータ容量と目標出力データのデータ容量との和が第1のメモリの使用可能な記憶容量より小さい場合、第1のメモリの残り記憶容量に応じて、1つ以上のサブ目標演算操作を実行できるかどうかを判断してもよい。YESであれば、プロセッサは、1つ以上のサブ目標演算操作に対応する目標入力データを同時に処理することができる。このように、複数の目標入力データを同時に処理することで、プロセッサの処理速度及び効率を更に向上させることができる。
図8に示すように、目標演算操作(図の左側の演算操作)は、演算操作OP1、OP2を含み、プロセッサは、当該目標演算操作を決定するための現在のサブ目標演算操作の目標入力データX11、X21及びY3のデータ容量に基づいて、現在のサブ目標演算操作の目標出力データY1及びZ1のデータ容量を決定し、現在のサブ目標演算操作の目標入力データのデータ容量と目標出力データのデータ容量との和に基づいて、現在のサブ目標演算操作に必要とされる目標記憶容量を決定してもよい。現在のサブ目標演算操作の目標記憶容量が第1のメモリの使用可能な記憶容量より小さい場合、第1のメモリの残り記憶容量を計算してもよい。第1のメモリの残り記憶容量は、第1のメモリの使用可能な記憶容量から現在のサブ目標演算操作の目標記憶容量を引いたものに等しい。その後、プロセッサは、第1のメモリの残り記憶容量に応じてサブ目標演算操作の数を決定してもよい。
具体的には、第1のメモリの残り記憶容量は、他のサブ目標演算操作の目標入力データX12、X22、及びY4、演算操作OP1によって出力された中間計算結果Y2、及び演算操作OP2によって出力された目標出力データZ2を更に収容できる場合には、目標演算操作の数が2つであると決定して、サブ入力データX21、X22、及びY4をそのうちの1つの目標演算操作の目標入力データとしてもよい。このように、処理されるべき演算の横方向に同一の目標演算操作の複数の目標入力データを同時にロードすることで、プロセッサは、複数の目標入力データを並列に処理し、プロセッサの処理速度及び効率を更に向上させることができる。
また、第1のメモリの残り記憶容量は、他のサブ目標演算操作の目標入力データX12、X22、及びY4、演算操作OP1によって出力された中間計算結果Y2、及び演算操作OP2によって出力された目標出力データZ2だけでなく、演算操作OP3の出力データYを更に収容できる場合には、演算を1回実行することで計算結果Yを得るように、演算操作OP1、OP2、OP3を融合させてもよい。
他の例として、図9に示すように、当該処理されるべき演算は、ニューラルネットワークなどの演算であり、畳み込み層、プーリング層、及び活性化層を含み、上記の各演算層の実行順序は、畳み込み演算操作−プーリング演算操作−活性化演算操作である。目標演算操作が活性化演算操作である場合、プロセッサは、第1のメモリの記憶容量に基づいて現在のサブ目標演算操作の目標入力データを取得し、現在のサブ目標演算操作の目標入力データはプーリング層のB1−B2区間内の入力データであってもよい。現在のサブ目標演算操作の目標出力データは、A1である。現在のサブ目標演算操作の目標入力データのデータ容量B1−B2とそれに対応する目標出力データのデータ容量との和が第1のメモリの記憶容量より小さい場合、即ち、現在のサブ目標演算操作に必要とされる目標記憶容量が第1のメモリの記憶容量より小さい場合、プロセッサは、更に、第1のメモリの残り記憶容量に基づいて当該サブ目標演算操作の数を決定してもよい。例えば、プロセッサは、第1のメモリの残り記憶容量に基づいて、第1のメモリの残り記憶容量が活性化演算A1−A2の空間の演算量を満たすことができると決定した場合、サブ目標演算操作の数は2つであると決定して、目標入力データB2−B3区間内のデータを、活性化演算操作の1つの目標演算操作に対応する目標入力データとしてもよい。
また、1つ以上のサブ目標演算操作の目標入力データがお互いに交差する場合、現在のサブ目標演算操作の目標入力データと他のサブ目標演算操作の目標入力データとの間の交差部分を決定し、その交差部分を第1のメモリに一時的に記憶する。即ち、現在のサブ目標演算操作の目標入力データの一部又は全部を他の演算操作の目標入力データとする必要がある場合には、この一部のデータの複数回の読み取り操作を避けるように、当該交差部分を第1のメモリに一時的に記憶し、それにより、プロセッサの処理効率及び処理速度を向上させることができる。
例えば、図9に示すように、目標演算操作がプーリング演算操作であり、かつ、当該目標演算操作のサブ目標演算操作の数が2つである場合、それに対応して、プーリング演算操作に対応する目標入力データの数は、2つであり、1つはC1−C2であり、もう1つはC3−C4であってもよい。目標入力データC1−C2に対応する目標出力データはB1−B2であり、目標入力データC3−C4に対応する目標出力データはB2−B3である。添付図面から分かるように、入力データC3−C2区間のデータは、目標入力データC1−C2の一部であり、それと同時に、目標入力データC3−C4の一部でもあり、即ち、2つの目標入力データの間には、交差部分C3−C2がある。この場合、データの読み取りの回数を減らすために、目標入力データC1〜C2に対応するプーリング演算操作を終了した後でも、その一部のデータの複数回の読み取り操作を避けるよに、入力データC3−C2を第1のメモリに記憶してもよく、それにより、プロセッサの処理効率及び速度を向上させることができる。
一実施例において、前記方法は、更に、以下のステップを含む。
目標演算操作以降の演算操作と目標演算操作との間の演算間隔が予め設定された範囲内にある場合には、目標出力データの読み取りの回数を減らすように、当該目標出力データを第1のメモリに記憶する。
具体的には、目標演算操作以降の他の演算操作と当該目標演算操作との間の演算間隔が予め設定された範囲内にある場合、例えば、目標演算操作とそれ以降の他の演算操作との間の演算間隔が3〜5つの演算操作である場合には、目標出力データの読み取りの回数を減らすように、当該目標出力データを第1のメモリに記憶してもよい。目標演算操作以降の他の演算操作と目標演算操作との間の間隔が予め設定された範囲を超える場合、第1のメモリの記憶域スペースが目標演算操作の目標出力データによって長時間で占められることを避けるために、当該目標出力データを第1のメモリから第2のメモリに移動してもよい。
一実施例において、前記方法は、更に、以下のステップを含む。
プロセッサは、目標演算操作の目標入力データのデータ容量に応じて目標入力データの第1のメモリにおける記憶アドレスを決定し、目標演算操作の目標出力データのデータ容量に応じて目標出力データの第1のメモリにおける記憶アドレスを決定してもよい。
具体的には、プロセッサは、目標演算操作の目標入力データのデータ容量に応じて、第1のメモリにおいて目標入力データにそのデータ容量と一致する記憶域スペースを割り当て、その記憶域スペースの記憶アドレスを当該標入力データに割り当てる。このように、実際の演算過程では、目標入力データを第1のメモリ上の指定された記憶域スペースにロードすることができる。同様に、プロセッサは、目標演算操作の目標出力データのデータ容量に応じて、第1のメモリにおいて目標入力データにそのデータ容量と一致する記憶域スペースを割り当て、その記憶域スペースの記憶アドレスを当該標出力データに割り当てる。このように、実際の演算過程では、目標出力データを第1のメモリの指定された記憶域スペースに記憶することができる。
一実施例において、前記方法は、更に、以下のステップを含む。
目標演算操作の目標入力データを使用し続ける必要がない場合、プロセッサは、目標入力データの記憶アドレスの一部又は全部を目標演算操作の目標出力データに割り当ててもよい。このように、1つの記憶域スペースを複数回再利用することで、第1のメモリのスペースの使用率を向上させることができる。
好ましくは、プロセッサは、上記の各目標演算操作の目標入力データの記憶アドレス、目標出力データの記憶アドレス、中間計算結果の記憶アドレス、及び第1のメモリ上の各記憶域スペースの更新規則などを記録し、上記のデータに対応する記憶アドレスに基づいて、処理されるべき演算に対応する記憶割当規則を取得してもよい。プロセッサは、当該処理されるべき演算を実行する必要がある場合、当該処理されるべき演算に対応する記憶割当規則を取得し、当該記憶割当規則に基づいて、演算過程の様々なデータの読み書き操作や記憶場所などを決定してもよい。
一実施例において、上記のデータ前処理方法は、図2−図4に示されるコンピュータ機器にも適用することができる。この場合、予め設定された演算割当規則に基づいて、当該演算操作の一部がメイン処理回路によって実行され、当該演算操作の他の一部がスレーブ処理回路によって実行される必要がある。それに対応して、複数の第1のメモリは、メインメモリとスレーブメモリとを含み、当該メインメモリは、メイン処理回路に近接して配置され、更に、メイン処理回路のオンチップメモリであってもよい。当該スレーブメモリは、スレーブ処理回路に近接して配置され、更に、スレーブ処理回路のオンチップメモリであってもよい。この場合、当該目標演算操作に対応する目標入力データの一部は、メインメモリにロードされてメイン処理回路によって実行され、当該目標演算操作に対応する目標入力データの他の一部は、1つ以上のスレーブメモリにロードされて各スレーブメモリに対応するスレーブ処理回路によって実行される必要がある。
具体的には、図10に示すように、図2−図4に示されるコンピュータ機器は上記のデータ前処理方法を実行する場合、以下のステップを含む。
S600:メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得する。
具体的には、プロセッサは、当該メインメモリの構成情報(例えば、当該メインメモリのモデルなどの情報)に応じて、当該メインメモリの総記憶容量を取得してもよい。更に、プロセッサは、当該メインメモリの総記憶容量及び当該メインメモリの占められた記憶容量に基づいて、当該メインメモリの使用可能な記憶容量を取得してもよい。同様に、プロセッサは、当該スレーブメモリの構成情報に基づいて、スレーブメモリの総記憶容量を取得し、当該スレーブメモリの総記憶容量及びスレーブメモリの占められた記憶容量に基づいて、スレーブメモリの使用可能な記憶容量を取得してもよい。好ましくは、プロセッサのメイン処理回路は、メインメモリの使用可能な記憶容量を取得し、各スレーブ処理回路は、対応するスレーブメモリの使用可能な記憶容量を取得し、対応するスレーブメモリの使用可能な記憶容量をメイン処理回路に伝送してもよい。
それと同時に、プロセッサのコントローラユニットは、処理されるべき演算を取得して、当該処理されるべき演算の解析結果などのデータをメイン処理回路に送信してもよい。メイン処理回路は、処理されるべき演算、メインメモリの使用可能な記憶容量、及びスレーブメモリの使用可能な記憶容量に基づいて、目標演算操作を決定してもよい。好ましくは、当該処理されるべき演算に含まれた演算操作は、加算、減算、乗算、除算、畳み込み、プーリング(Pooling)、及び活性化(例えば、Relu)などの演算であってもよい。当該目標演算操作は、処理されるべき演算のうちの1つ又は複数の演算操作の組み合わせであってもよい。
S700:前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定し、前記目標入力データは、前記目標演算操作に対応する全入力データの一部又は全部である。
具体的には、プロセッサのメイン処理回路は、当該目標演算操作に基づいて、当該目標演算操作を完成させるのに必要な全入力データ及び当該全入力データのデータ容量(即ち、当該全入力データに占められる記憶域スペースの大きさ)を決定してもよい。また、メイン処理回路は、メインメモリの使用可能な記憶容量、各スレーブメモリの使用可能な記憶容量、及び当該目標演算操作の全入力データのデータ容量に基づいて、当該目標演算操作に対応する目標入力データ及びそのデータ容量を決定してもよい。
S800:前記目標演算操作と前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定する。
具体的には、処理されるべき演算の計算量は静的な解析が可能であるため、プロセッサのメイン処理回路は、当該目標演算操作の目標入力データ及び当該目標演算操作に基づいて、当該目標演算操作の目標出力データや当該目標出力データのデータ容量などの情報を取得することができ、即ち、プロセッサのメイン処理回路は、当該目標演算操作の目標出力データに占められる記憶域スペースを取得することができる。
S900:前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標出力データを対応して前記メインメモリに記憶する。
具体的には、メイン処理回路は、予め設定された演算割当規則に基づいて、当該メイン処理回路に対応する目標入力データをメインメモリ及びスレーブメモリに割り当ててもよく、それにより、メイン処理回路とスレーブ処理回路とは互いに協力して目標演算操作を実行することができる。当該目標演算操作の実行中、スレーブ処理回路は、そのスレーブメモリ上の目標入力データを処理して中間計算結果を得てもよい。スレーブ処理回路は、当該中間計算結果をメイン処理回路に伝送してもよい。メイン処理回路は、そのメインメモリ上の目標入力データを処理して、各スレーブ処理回路によって伝送された中間計算結果に基づいて、当該目標演算操作の目標出力データを得てもよい。当該目標演算操作に対応する目標出力データはそれ以降の他の演算操作の入力データである場合には、当該目標出力データをメインメモリに記憶してもよく、それにより、データの読み取りの回数を減らし、プロセッサの演算速度を向上させることができる。
一実施例において、図11に示すように、上記のステップS700は、更に、
前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第1のメモリの使用可能な記憶容量とするステップS710と、
当該第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定するステップS720と、を含んでよい。
具体的には、当該目標演算操作を実行するためには、マスタ処理回路とスレーブ処理回路とがお互いに協力する必要があるので、メインメモリとスレーブメモリとが目標演算操作の目標入力データに占められるスペースを同時に満たすことを確保しなければならない。即ち、当該目標入力データのデータ容量は、メインメモリの使用可能な記憶容量より小さく、且つ、当該目標入力データのデータ容量は、スレーブメモリの使用可能な記憶容量より小さい。したがって、メインメモリの使用可能な記憶容量と各スレーブメモリの使用可能な記憶容量とを比較して、メインメモリ及び各スレーブメモリの最も小さい使用可能な記憶容量をプロセッサの第1のメモリの使用可能な記憶容量としてもよい。次いて、メイン処理回路は、第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、当該目標演算操作に対応する目標入力データを決定する。
一実施例において、メイン処理回路は、予め設定された演算割当規則に基づいて目標入力データを分割し、当該目標入力データを複数のデータブロックに割り当て、各データブロックに対応する処理回路を決定してもよい。目標入力データのうちメイン処理回路によって処理されたデータブロックを第1の目標入力データとして記録してもよい。目標入力データのうちスレーブ処理回路で処理されたデータブロックを第2の目標入力データとして記録してもよい。更に、各スレーブ処理回路に対応する第2の目標入力データのデータ容量は等しくなくてもよく、具体的には、演算割当規則によって決定される。具体的には、前記方法は、以下のステップを更に含む。
予め設定された演算割当規則に基づいて、前記メインメモリに対応する第1の目標入力データ、及び各前記スレーブメモリに対応する第2の目標入力データを決定する。具体的には、メイン処理回路は、予め設定された演算割当規則に基づいて、目標演算操作のどの目標入力データがメイン処理回路によって処理されるか、目標演算操作のどの目標入力データが各スレーブ処理回路によって処理されるかを決定してもよい。
例えば、図9に示すように、現在の目標演算操作は、プーリング演算操作であり、プーリング層のB1−B2区間の演算を完了しようとする場合には、当該目標演算操作に必要とされる目標入力データはC1−C2である。メインプロセッサは、予め設定された演算割当規則に基づいて、入力データC1−C3を第2の目標入力データとして、当該第2の目標入力データC1−C3をスレーブメモリに記憶してもよい。入力データC3−C2を第1の目標入力データとして、当該第1の目標入力データC3−C2をメインメモリに記憶する。
更に、上記の方法は、以下のステップを更に含む。
プロセッサは、更に、メインメモリの使用可能な記憶容量及び前記第1の目標入力データのデータ容量に基づいて、第1の目標入力データのメインメモリにおける記憶アドレスを決定してもよい。具体的には、メイン処理回路は、メインメモリの使用可能な記憶容量及び第1の目標入力データのデータ容量に基づいて、当該第1の目標入力データのメインメモリにおける記憶アドレスを決定してもよい。また、メイン処理回路は、更に、第1の目標入力データのデータ容量及び目標演算操作に基づいて、第1の目標入力データに対応する第1の目標出力データ及びそのデータ容量を決定し、第1の目標出力データのメインメモリにおける記憶アドレスを決定してもよい。
プロセッサは、更に、スレーブメモリの使用可能な記憶容量及び前記第2の目標入力データのデータ容量に基づいて、第2の目標入力データのスレーブメモリにおける記憶アドレスを決定してもよい。具体的には、メイン処理回路は、各スレーブメモリの使用可能な記憶容量及びそれに対応する第2の目標入力データのデータ容量に基づいて、各第2の目標入力データのそれに対応するスレーブメモリにおける記憶アドレスを決定してもよい。また、メイン処理回路は、更に、各第2の目標入力データのデータ容量及び目標演算操作に基づいて、各第2の目標入力データに対応する第2の目標出力データ及びそのデータ容量を決定し、各第2の目標出力データのそれに対応するスレーブメモリにおける記憶アドレスを決定してもよい。
更に、各スレーブ処理回路は、計算で得られた第2の目標出力データをメイン処理回路に伝送し、メイン処理回路は、各第2の目標出力データのメインメモリにおける記憶アドレスを更に決定してもよい。
一実施例において、当該スレーブ処理回路で実行された他の目標演算操作はそれに対応する第2の目標出力データを使用し続ける必要がある場合には、当該第2の目標出力データを、スレーブ処理回路に対応するスレーブメモリに一時的に記憶してもよい。これにより、メインメモリとスレーブメモリとの間のデータの読み取り操作を減らし、プロセッサの演算速度を更に向上させることができる。
一実施例において、上記の目標演算操作は1つ以上の演算操作を含み、即ち、当該目標演算操作は、1つ以上の演算操作の組み合わせである。一般に、当該目標演算操作に含まれる各演算操作は、異なる演算を実現するための異なる演算操作である。この場合、プロセッサのメイン処理回路は、第1のメモリの使用可能な記憶容量に基づいて各演算操作に対応するサブ目標入力データを決定して、各演算操作に対応するサブ目標入力データに基づいて当該目標演算操作に対応する目標入力データを決定してもよい。具体的には、当該目標入力データを決定する過程は、上記の方法のステップS210〜S230と一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
また、当該目標演算操作は1つ以上の演算操作を含む場合、その1つ以上の演算操作は、第1の目標演算操作と第2の目標演算操作とに分けられてもよい。メイン処理回路は、予め設定された演算割当規則に基づいて、目標演算操作の第1の目標演算操作をメイン処理回路に割り当て、目標演算操作の第2の目標演算操作をスレーブ処理回路に割り当ててもよい。これに対応して、メイン処理回路は、第1の目標演算操作に必要とされる入力データをメインメモリに記憶し、第2の目標演算操作に必要とされる入力データを対応するスレーブメモリに記憶してもよい。
例えば、図9に示すように、第1のメモリの使用可能な記憶容量はプーリング演算操作の目標入力データC1−C2及び活性化演算操作の目標入力データB1−B2を収容できる場合、当該プーリング演算操作と活性化演算操作を、1つの目標演算操作に相当させてもよい。この場合、当該目標演算操作の目標入力データは、C1−C2区間内にあるデータであってもよい。この場合、メイン処理回路は、予め設定された演算規則に基づいて、活性化演算操作を第1の目標演算操作としてメイン処理回路自体に割り当て、プーリング演算操作を第2の目標演算操作としてスレーブ処理回路に割り当ててもよい。これに対応して、プーリング演算操作に必要とされる入力データC1−C2をスレーブメモリにロードし、活性化演算操作に必要とされる入力データB1−B2をメインメモリにロードしてもよい。プーリング演算操作と活性化演算操作との間には依存関係があるため、プーリング演算操作を完成させた後、活性化演算操作に必要とされる入力データB1−B2をメインメモリにロードしてもよい。
一実施例において、目標演算操作の目標入力データは当該目標演算操作に対応する全入力データの一部のみである場合、当該目標演算操作の各目標入力データは、当該目標演算操作の一部の演算を完成させるためにのみ使用される。当該目標演算操作の処理速度を向上させ、第1のメモリの記憶域スペースを十分に利用するために、当該目標演算操作に対応する目標入力データの数は1つ以上であり、各目標入力データは全入力データの一部であり、即ち、各目標入力データは、全入力データの1つ以上の入力データブロックを含んでもよい。つまり、1つ以上の目標入力データを同時に第1のメモリにロードしてもよい。更に、当該目標入力データの数に応じて、当該目標演算操作を複数のサブ目標演算操作に分割してもよい。好ましくは、各サブ目標演算操作は、同じ演算を実現することができる。
メイン処理回路は、第1のメモリの使用可能な記憶容量及び各目標演算操作に必要とされる目標記憶容量の大きさに基づいて、目標演算操作の数を決定してもよく、それにより、1つ以上の目標演算操作の目標入力データを第1のメモリに同時にロードすることができる。具体的には、目標演算操作の数を決定する過程は、上記の方法のステップS500〜S520と一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
当業者であれば分かるように、図5−図7のフローチャート及び図10−図11の各ステップは矢印のように順番に示されるが、必ずしも矢印のように順番に実行される必要はない。本明細書で特に説明しない限り、上記ステップの実行順番は厳密には限定されず、他の順番で実行されてもよい。更に、図5−図7及び図10−図11のステップの少なくとも一部は、複数のサブステップ又は複数の段階を含んでもよい。当該サブステップ又は段階は、必ずしも同じタイミングで実行される必要はなく、異なるタイミングで実行されてもよい。更に、当該サブステップ又は段階の実行も、必ずしも順次行われる必要はなく、他のステップ又は他のステップにおけるサブステップ又は段階の少なくとも一部と順番に又は交互に実行されてもよい。
当業者であれば分かるように、図5−図7のフローチャート及び図10−図11の各ステップは矢印のように順番に示されるが、必ずしも矢印のように順番に実行される必要はない。本明細書で特に説明しない限り、上記ステップの実行順番は厳密には限定されず、他の順番で実行されてもよい。更に、図5−図7及び図10−図11のステップの少なくとも一部は、複数のサブステップ又は複数の段階を含んでもよい。当該サブステップ又は段階は、必ずしも同じタイミングで実行される必要はなく、異なるタイミングで実行されてもよい。更に、当該サブステップ又は段階の実行も、必ずしも順次行われる必要はなく、他のステップ又は他のステップにおけるサブステップ又は段階の少なくとも一部と順番に又は交互に実行されてもよい。
当業者であれば分かるように、上記の実施例に係る方法のフローの全部又は一部は、コンピュータプログラムにより関連するハードウェアを指示することで実現されてもよい。前記コンピュータプログラムは、不揮発性コンピュータ可読記憶媒体に記憶されてもよく、当該コンピュータプログラムが実行されると、上記の方法の実施例のフローを実現することができる。本明細書で提供される各実施例で用いられるメモリ、記憶装置、データベース、又は他の媒体への任意の言及は、不揮発性及び/又は揮発性メモリを含んでもよい。不揮発性メモリとして、読み出し専用メモリ(Read Only Memory、ROM)、プログラマブルROM(Programmable Read Only Memory、PROM)、電気的にプログラマブルROM(Electrically Programmable Read Only Memory、EPROM)、電気的に消去可能なプログラマブルROM(Electrically Erasable Programmable Read Only Memory、EEPROM)、又はフラッシュメモリが挙げられる。揮発性メモリは、ランダムアクセスメモリ(RAM)又は外部キャッシュメモリであってもよい。限定ではなく説明するためのRAMとして、スタティックRAM(Static RAM、SRAM)、ダイナミックRAM(Dynamic RAM、DRAM)、シンクロナスDRAM(Synchronous DRAM、SDRAM)、ダブルデータレートSDRAM(Double−Data−Rate SDRAM、DDRSDRAM)、エンハンストSDRAM(Enhanced SDRAM、ESDRAM)、シンクリンクDRAM(Synchlink DRAM、SLDRAM)、ラムバスダイレクトRAM(Rambus Direct RAM、RDRAM)、ダイレクトラムバスダイナミックRAM(Direct Rambus Dynamic RAM、DRDRAM)、及びラムバスダイナミックRAM(Rambus Dynamic RAM、RDRAM)等が挙げられる。
一実施例において、図12に示すように、本発明の実施例により、取得モジュール410、入力決定モジュール420、出力決定モジュール430、及び記憶割当モジュール440を含むデータ前処理装置が提供される。取得モジュール410は、第1のメモリの使用可能な記憶容量及び目標演算操作を取得するように構成され、入力決定モジュール420は、前記目標演算操作及び前記第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成され、出力決定モジュール430は、前記目標演算操作と前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するように構成され、記憶割当モジュール440は、前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第1のメモリに記憶するように構成される。
好ましくは、前記目標演算操作は、1つ以上の演算操作を含み、各前記演算操作は、それぞれサブ目標入力データに対応する。図13に示すように、前記入力決定モジュール420は、融合決定ユニット421と入力決定ユニット422とを更に含む。融合決定ユニット421は、前記第1のメモリの使用可能な記憶容量及び前記処理されるべき演算のうちの各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得るように構成される。入力決定ユニット422は、前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを前記目標演算操作とし、前記選択された数の融合可能な演算操作に対応するサブ目標入力データを前記目標演算操作に対応する目標入力データとするように構成される。
好ましくは、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層は、1つの前記演算操作を表し、前記融合決定ユニット421は、更に、前記ニューラルネットワーク演算の各演算層の間の接続関係に応じて、各前記演算操作の融合属性を決定するように構成される。
好ましくは、記憶割当モジュール440は、更に、前記目標演算操作のうちの現在の演算操作によって出力された中間計算結果が前記目標演算操作のうちの他の演算操作の入力データとされる必要がある場合、或いは、前記現在の演算操作によって出力された中間計算結果が他の演算操作の入力データとされる必要がある場合、前記現在の演算操作によって出力された中間計算結果を第1のメモリに記憶し、或いは、前記現在の演算操作によって出力された中間計算結果を第1のメモリと第2のメモリとに記憶するように構成される。
好ましくは、前記目標演算操作は、1つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ1つの前記目標入力データに対応し、前記目標演算操作に対応する全入力データは、複数の入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、1つ以上であり、各前記目標入力データは、それぞれ1つ以上の前記入力データブロックを含む。入力決定モジュール420は、各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、それぞれ各前記サブ目標演算操作に必要とされる目標記憶容量を決定し、前記第1のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第1のメモリの残り記憶容量を決定し、前記第1のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するように構成される。
好ましくは、前記記憶割当モジュール440は、更に、1つ以上の前記サブ目標演算操作の目標入力データの間に交差部分がある場合、前記1つ以上のサブ目標演算操作の目標入力データの間の交差部分を前記第1のメモリに記憶するように構成される。
好ましくは、前記記憶割当モジュール440は、更に、前記目標演算操作の目標入力データのデータ容量に応じて、前記目標入力データの前記第1のメモリにおける記憶アドレスを決定し、前記目標演算操作の目標出力データのデータ容量に応じて、前記目標出力データの前記第1のメモリにおける記憶アドレスを決定し、前記目標演算操作以降の他の演算操作が前記目標演算操作の目標入力データを使用する必要がない場合、前記目標演算操作を完了させた後、前記目標演算操作に対応する目標入力データの記憶アドレスの一部又は全部を、前記目標演算操作の目標出力データに割り当てるように構成される。
他の実施例において、図12に示すように、取得モジュール410は、メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するように構成され、入力決定モジュール420は、前記メインメモリの使用可能な記憶容量、前記スレーブメモリの使用可能な記憶容量、及び前記目標演算操作に基づいて、前記目標演算操作に対応する目標入力データを決定するように構成され、出力決定モジュール430は、前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するように構成され、記憶割当モジュール440は、前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標出力データを対応して前記メインメモリに記憶するように構成される。
好ましくは、図14に示すように、前記データ前処理装置は、前記メインメモリの使用可能な記憶容量と各前記スレーブメモリの使用可能な記憶容量とを比較し、最も小さい使用可能な記憶容量を第1のメモリの使用可能な記憶容量とするように構成される記憶容量決定モジュール450を更に含む。入力決定モジュール420は、具体的には、前記第1のメモリの使用可能な記憶容量及び目標演算操作に基づいて、目標演算操作に対応する目標入力データを決定するように構成される。
好ましくは、前記目標演算操作は、1つ以上の演算操作を含み、各前記演算操作は、それぞれサブ目標入力データに対応し、前記入力決定モジュール420は、融合決定ユニット421と入力決定ユニット422を更に含む。融合決定ユニット421は、前記第1のメモリの使用可能な記憶容量及び前記処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得るように構成される。入力決定ユニット422は、前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを前記目標演算操作とし、前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを、前記目標演算操作に対応する目標入力データとするように構成される。
好ましくは、前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層は、1つの前記演算操作を表し、前記融合決定ユニット421は、更に、前記ニューラルネットワーク演算の各演算層の間の接続関係に応じて、各前記演算操作の融合属性を決定するように構成される。
好ましくは、前記目標演算操作は、1つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ1つの前記目標入力データに対応し、前記目標演算操作に対応する全入力データは複数の入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は1つ以上であり、各前記目標入力データは、それぞれ1つ以上の前記入力データブロックを含む。前記入力決定モジュールは、更に、各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、それぞれ各前記サブ目標演算操作に必要とされる目標記憶容量を決定し、前記第1のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第1のメモリの残り記憶容量を決定し、前記第1のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するように構成される。
好ましくは、前記目標入力データは、第1の目標入力データと、第2の目標入力データとを含み、前記入力決定モジュール420は、更に、予め設定された演算割当規則に基づいて、前記メインメモリに対応する第1の目標入力データ及び各前記スレーブメモリに対応する第2の目標入力データを決定するように構成され、前記記憶割当モジュール440は、更に、前記メインメモリの使用可能な記憶容量及び前記第1の目標入力データのデータ容量に応じて、前記第1の目標入力データの前記メインメモリにおける記憶アドレスを決定し、各前記スレーブメモリの利用可能な記憶容量および対応する前記第2の目標入力データのデータ容量に応じて、それぞれ各前記第2の目標入力データの前記スレーブメモリにおける記憶アドレスを決定するように構成される。
好ましくは、前記目標出力データは、第1の目標出力データと、第2の目標出力データとを含み、前記出力決定モジュール430は、更に、前記目標演算操作及び前記第1の目標入力データに基づいて、前記第1の目標出力データ及び前記第1の目標出力データの前記メインメモリにおける記憶アドレスを決定し、前記目標演算操作及び各前記第2の目標入力データに基づいて、各前記第2の目標出力データ及び各前記第2の目標出力データの対応する前記スレーブメモリにおける記憶アドレスをそれぞれ決定し、各前記第2の目標出力データに基づいて、各前記第2の目標出力データの前記メインメモリにおける記憶アドレスをそれぞれ決定するように構成される。
好ましくは、前記記憶割当モジュール440は、更に、前記スレーブ処理回路で実行された他の目標演算操作は前記第2の目標出力データを使用する必要がある場合には、前記第2の目標出力データを、前記スレーブ処理回路に対応するスレーブメモリに記憶するように構成される。また、前記記憶割当モジュール440は、更に、前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合には、前記目標出力データを対応して前記メインメモリと前記第2のメモリに記憶するように構成される。
当業者であれば分かるように、当該装置の動作原理は上記の方法の各ステップの実行過程と一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
一実施例において、本発明は、プロセッサによって実行されると、上記の実施例何れか一項に記載の方法のステップを実現するコンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供する。具体的には、当該コンピュータープログラムがプロセッサによって実行される際に、
第1のメモリの使用可能な記憶容量及び目標演算操作を取得するステップと、
目標演算操作及び第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データ、即ち、前記目標演算操作に対応する全入力データの一部又は全部である目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第1のメモリに記憶するステップと、を実現する。
また、プロセッサは、メイン処理回路とスレーブ処理回路を含むマスタスレーブ構造であってもよく、この場合、プロセッサは上記のコンピュータプログラムを実行すると、具体的には、
メインメモリの使用可能な記憶容量、スレーブメモリの使用可能な記憶容量、及び目標演算操作を取得するステップと、
目標演算操作及び第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データ、即ち、前記目標演算操作に対応する全部の入力データの一部又は全部である目標入力データを決定するステップと、
前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作に対応する目標出力データを決定するステップと、
前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標出力データを対応して前記メインメモリに記憶するステップと、を実現する。
当業者であれば分かるように、プロセッサによってコンピュータプログラムを実行するプロセスは、上記の方法の各ステップの実行プロセスと一致し、詳細については、上記の説明を参照し、ここでは再度説明しない。
前記実施例の各技術特徴は任意に組み合わせることができ、説明の便宜上、前記実施例の各技術特徴の全ての組合せを説明していないが、これらの技術特徴の組合せは矛盾しなければ、本明細書に記載範囲に含まれると理解されるのが当然である。
以上、前記実施例により本発明のいくつかの実施形態を具体的に説明したが、本発明はこれらに限定されていない。当業者にとっては、本発明の精神を逸脱しないかぎり、様々の変形や改良も本発明の保護範囲に含まれる。よって、本発明の保護範囲は特許請求の範囲によるものである。

Claims (10)

  1. データ前処理方法であって、
    第1のメモリの使用可能な記憶容量及び目標演算操作を取得するステップと、
    前記目標演算操作及び前記第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するステップと、
    前記目標演算操作及び前記目標入力データに基づいて、前記目標演算操作の目標出力データを決定するステップと、
    前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データをプロセッサに近接して配置された前記第1のメモリに記憶するステップと、を含むことを特徴とするデータ前処理方法。
  2. 前記目標演算操作の目標出力データが前記目標演算操作以降の他の演算操作の入力データである場合、前記目標演算操作の目標出力データを前記第1のメモリと第2のメモリに記憶するステップを含み、
    前記第2のメモリは、前記プロセッサから離れて配置され、前記第1のメモリの記憶容量は、前記第2のメモリの記憶容量より小さいことを特徴とする請求項1に記載のデータ前処理方法。
  3. 前記目標演算操作は、1つ以上の演算操作を含み、各前記演算操作には、それぞれサブ目標入力データが対応され、前記目標演算操作及び第1のメモリの使用可能な記憶容量に基づいて、前記目標演算操作に対応する目標入力データを決定するステップは、更に、
    前記第1のメモリの使用可能な記憶容量及び処理されるべき演算の各演算操作の融合属性に基づいて、融合可能な演算操作の数を決定し、融合数閾値を得ることと、
    前記融合数閾値より大きくない選択された数の前記融合可能な演算操作の組み合わせを、前記目標演算操作とすることと、
    前記選択された数の各融合可能な演算操作に対応するサブ目標入力データを、前記目標演算操作に対応する目標入力データとすることと、を含むことを特徴とする請求項1に記載のデータ前処理方法。
  4. 前記処理されるべき演算は、複数の演算層を含むニューラルネットワーク演算であり、各前記演算層それぞれは、1つの前記演算操作を表し、前記データ前処理方法は、更に、
    前記ニューラルネットワーク演算の各演算層の間の接続関係に基づいて、各前記演算操作の融合属性を決定するステップを含むことを特徴とする請求項3に記載のデータ前処理方法。
  5. 前記目標演算操作の現在の演算操作によって出力された中間計算結果が前記目標演算操作の他の演算操作の入力データとされる必要がある場合、或いは、前記現在の演算操作によって出力された中間計算結果が他の目標演算操作の入力データとされる必要がある場合、前記現在の演算操作によって出力された中間計算結果を第1のメモリに記憶し、或いは、前記現在の演算操作によって出力された中間計算結果を第1のメモリと第2のメモリとに記憶するステップを更に含むことを特徴とする請求項3に記載のデータ前処理方法。
  6. 前記目標演算操作に対応する入力データは、複数の入力データブロックを含み、各前記目標入力データそれぞれは、1つ以上の前記入力データブロックを含み、前記目標演算操作に対応する目標入力データの数は、1つ以上であることを特徴とする請求項1乃至5の何れか1項に記載のデータ前処理方法。
  7. 前記目標演算操作は、1つ以上のサブ目標演算操作を含み、各前記サブ目標演算操作は、それぞれ1つの前記目標入力データに対応し、前記データ前処理方法は、更に、
    各前記サブ目標演算操作の目標入力データのデータ容量及び目標出力データのデータ容量に応じて、各前記サブ目標演算操作に必要とされる目標記憶容量をそれぞれ決定するステップと、
    前記第1のメモリの使用可能な記憶容量及び現在のサブ目標演算操作に必要とされる目標記憶容量に基づいて、前記第1のメモリの残り記憶容量を決定するステップと、
    前記第1のメモリの残り記憶容量及び前記現在のサブ目標演算操作以外の他のサブ目標演算操作に必要とされる目標記憶容量に応じて、前記サブ目標演算操作の数を決定するステップと、を含むことを特徴とする請求項6に記載のデータ前処理方法。
  8. 前記目標演算操作以降の他の全ての演算操作に前記目標演算操作の目標入力データを使用する必要がない場合、前記目標演算操作を完了させた後、前記目標演算操作に対応する目標入力データの記憶アドレスの一部又は全部を、前記目標演算操作の目標出力データに割り当てるステップを更に含むことを特徴とする請求項1乃至5の何れか1項に記載のデータ前処理方法。
  9. コンピュータ機器であって、第1のメモリと、第2のメモリと、プロセッサと、を含み、前記第1のメモリは、前記プロセッサに近接して配置され、前記第1のメモリと前記第2のメモリは、データの読み書きを行うことができ、前記第1のメモリ又は第2のメモリには、コンピュータプログラムが記憶されており、前記プロセッサは前記コンピュータプログラムを実行すると、請求項1乃至の何れか1項に記載の方法のステップを実現することを特徴とするコンピュータ機器。
  10. コンピュータ可読記憶媒体であって、プロセッサによって実行されると、請求項1乃至の何れか1項に記載の方法のステップを実現するコンピュータプログラムが記憶されていることを特徴とするコンピュータ可読記憶媒体。
JP2019568721A 2018-08-28 2019-06-27 データ前処理方法、装置、コンピュータ機器及び記憶媒体 Active JP6867518B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CN201810987293.5A CN110865950B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质
CN201810987343.XA CN110865792B (zh) 2018-08-28 2018-08-28 数据预处理方法、装置、计算机设备和存储介质
CN201810987343.X 2018-08-28
CN201810987293.5 2018-08-28
PCT/CN2019/093144 WO2020042739A1 (zh) 2018-08-28 2019-06-27 数据预处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
JP2020533659A JP2020533659A (ja) 2020-11-19
JP6867518B2 true JP6867518B2 (ja) 2021-04-28

Family

ID=69643410

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019568721A Active JP6867518B2 (ja) 2018-08-28 2019-06-27 データ前処理方法、装置、コンピュータ機器及び記憶媒体

Country Status (5)

Country Link
US (2) US11966583B2 (ja)
EP (2) EP3640810A4 (ja)
JP (1) JP6867518B2 (ja)
KR (1) KR102519467B1 (ja)
WO (1) WO2020042739A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
EP3651073B1 (en) 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
EP3825841A1 (en) 2018-06-27 2021-05-26 Shanghai Cambricon Information Technology Co., Ltd Method and device for parallel computation of a network model
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN111385462A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
WO2020248424A1 (zh) 2019-06-12 2020-12-17 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
EP4020321A4 (en) 2019-08-23 2024-01-17 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM

Family Cites Families (194)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0375860A (ja) 1989-08-18 1991-03-29 Hitachi Ltd パーソナライズド端末
JPH045774A (ja) * 1990-04-24 1992-01-09 Seiko Epson Corp 神経網計算機
US5052043A (en) 1990-05-07 1991-09-24 Eastman Kodak Company Neural network with back propagation controlled through an output confidence measure
US6144977A (en) 1995-07-10 2000-11-07 Motorola, Inc. Circuit and method of converting a floating point number to a programmable fixed point number
GB9602701D0 (en) 1996-02-09 1996-04-10 Canon Kk Image manipulation
US7242414B1 (en) 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
JP2000293371A (ja) 1999-04-09 2000-10-20 Hitachi Ltd マイクロプログラム制御方法及び装置
US6671796B1 (en) 2000-02-25 2003-12-30 Sun Microsystems, Inc. Converting an arbitrary fixed point value to a floating point value
US6931639B1 (en) 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
WO2002020874A2 (en) 2000-09-07 2002-03-14 Nippon Steel Corporation Hexavalent chromium-free surface-treating agent for sn- or al-based coated steel sheet, and surface treated steel sheet
US20020138714A1 (en) 2001-03-22 2002-09-26 Sun Microsystems, Inc. Scoreboard for scheduling of instructions in a microprocessor that provides out of order execution
EP1251460A1 (en) * 2001-04-19 2002-10-23 TELEFONAKTIEBOLAGET L M ERICSSON (publ) Adaptive method for allocation of random access memory
WO2002086817A1 (en) * 2001-04-19 2002-10-31 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive memory allocation
US20030167460A1 (en) 2002-02-26 2003-09-04 Desai Vipul Anil Processor instruction set simulation power estimation method
US7236995B2 (en) 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations
DE10316381A1 (de) 2003-04-10 2004-10-28 Bayer Technology Services Gmbh Verfahren zum Training von neuronalen Netzen
JP4202244B2 (ja) 2003-12-22 2008-12-24 Necエレクトロニクス株式会社 Vliw型dsp,及びその動作方法
US20060161375A1 (en) 2004-12-30 2006-07-20 Allen Duberstein Optimizing processing speed based on measured temperatures
US7721128B2 (en) 2005-11-29 2010-05-18 International Business Machines Corporation Implementation of thermal throttling logic
US7617164B2 (en) * 2006-03-17 2009-11-10 Microsoft Corporation Efficiency of training for ranking systems based on pairwise training with aggregated gradients
CN1851668A (zh) 2006-06-01 2006-10-25 北京天碁科技有限公司 片上***芯片、片上***芯片的跟踪调试***及方法
DE102006059156B4 (de) 2006-12-14 2008-11-06 Advanced Micro Devices, Inc., Sunnyvale Verfahren zum Testen eines integrierten Schaltkreischips mit zumindest zwei Schaltungskernen sowie integrierter Schaltkreischip und Testsystem
US20110060587A1 (en) 2007-03-07 2011-03-10 Phillips Michael S Command and control utilizing ancillary information in a mobile voice-to-speech application
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
US8051118B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Composition of decimal floating point data
US8051117B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data
US8190664B2 (en) 2007-04-26 2012-05-29 International Business Machines Corporation Employing a mask field of an instruction to encode a sign of a result of the instruction
JP5184824B2 (ja) 2007-06-15 2013-04-17 キヤノン株式会社 演算処理装置及び方法
JP2009110353A (ja) 2007-10-31 2009-05-21 Hitachi Ltd マイクロコントローラ及び制御システム
US7904287B2 (en) 2007-11-13 2011-03-08 International Business Machines Corporation Method and system for real-time prediction of power usage for a change to another performance state
JP4998794B2 (ja) 2007-11-29 2012-08-15 Nkワークス株式会社 画像補正方法と画像補正装置
US20100073068A1 (en) 2008-09-22 2010-03-25 Hanwoo Cho Functional block level thermal control
CN101572829B (zh) 2009-06-10 2011-02-02 中国联合网络通信集团有限公司 Iptv视频质量监测方法、装置和***
EP2336882A1 (en) 2009-12-18 2011-06-22 Telefonaktiebolaget L M Ericsson (PUBL) Technique for run-time provision of executable code using off-device services
CN102985673B (zh) 2010-04-21 2015-06-17 丰田自动车株式会社 内燃机的控制装置
JP2011253374A (ja) 2010-06-02 2011-12-15 Sony Corp 情報処理装置、および情報処理方法、並びにプログラム
US8452463B2 (en) 2010-06-04 2013-05-28 Apple Inc. Adjusting the thermal behavior of a computing system using indirect information about ambient temperature
US8694572B2 (en) 2010-07-06 2014-04-08 Silminds, Llc, Egypt Decimal floating-point fused multiply-add unit
JP5516744B2 (ja) * 2010-08-27 2014-06-11 富士通株式会社 スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US8924455B1 (en) 2011-02-25 2014-12-30 Xilinx, Inc. Multiplication of matrices using systolic arrays
CN102761509B (zh) 2011-04-27 2016-01-06 联芯科技有限公司 Ofdm***的接收***及降低接收***内存的方法
KR20140002034A (ko) 2011-05-12 2014-01-07 애플 인크. 존재 감지
CN102789413B (zh) 2011-05-23 2016-02-17 同济大学 一种并行程序的调试***及方法
US8594982B2 (en) 2011-06-09 2013-11-26 Pulsar Informatics, Inc. Systems and methods for distributed calculation of fatigue-risk prediction and optimization
CN102404673B (zh) 2011-11-24 2013-12-18 苏州上声电子有限公司 数字化扬声器***通道均衡与声场控制方法和装置
CN103152673B (zh) 2011-12-07 2015-07-08 中国科学院声学研究所 基于四元码动态失配整形的数字扬声器驱动方法和装置
CN102684701B (zh) 2012-04-27 2014-07-09 苏州上声电子有限公司 基于编码转换的数字扬声器驱动方法和装置
DE102012009502A1 (de) 2012-05-14 2013-11-14 Kisters Ag Verfahren zum Trainieren eines künstlichen neuronalen Netzes
US9417891B2 (en) 2012-06-11 2016-08-16 Vmware, Inc. Unified storage/VDI provisioning methodology
US9063731B2 (en) 2012-08-27 2015-06-23 Samsung Electronics Co., Ltd. Ultra low power apparatus and method to wake up a main processor
CN102903089B (zh) 2012-09-07 2014-12-17 山东大学 一种Linux环境下生成遥感图像快视图的方法
US9412366B2 (en) 2012-09-18 2016-08-09 Adobe Systems Incorporated Natural language image spatial and tonal localization
CN102981854A (zh) 2012-11-16 2013-03-20 天津市天祥世联网络科技有限公司 基于浮点数运算内联函数库的神经网络优化方法
KR20150115724A (ko) 2012-11-22 2015-10-14 각고호우징 게이오기주크 아크릴계 공중합체, 광학 필름, 편광판 및 액정 표시 장치
US9851977B2 (en) 2012-12-06 2017-12-26 Kalray Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization
US9720732B1 (en) 2013-02-11 2017-08-01 Amazon Technologies, Inc. Parameter selection for optimization of task execution based on execution history for prior tasks
JP2014170295A (ja) 2013-03-01 2014-09-18 Honda Motor Co Ltd 物体認識システム及び物体認識方法
JP5963957B2 (ja) 2013-06-12 2016-08-03 三菱電機株式会社 開発環境システム、開発環境装置、開発環境提供方法及びプログラム
JP6184891B2 (ja) 2014-03-12 2017-08-23 東芝メモリ株式会社 情報処理装置、半導体チップ、情報処理方法およびプログラム
US9507405B2 (en) 2014-06-18 2016-11-29 Oracle International Corporation System and method for managing power in a chip multiprocessor using a proportional feedback mechanism
US9575537B2 (en) 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US10282100B2 (en) 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
GB2524126B (en) 2014-08-28 2016-07-27 Imagination Tech Ltd Combining paths
US9916130B2 (en) 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
FR3030077B1 (fr) 2014-12-10 2016-12-02 Arnault Ioualalen Procede d'ajustement de la precision d'un programme d'ordinateur manipulant au moins un nombre a virgule.
EP3035204B1 (en) 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US10438117B1 (en) * 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
CN104899641B (zh) 2015-05-25 2018-07-13 杭州朗和科技有限公司 深度神经网络学习方法、处理器和深度神经网络学习***
CN115082282A (zh) 2015-06-10 2022-09-20 无比视视觉技术有限公司 用于处理图像的图像处理器和方法
CN104978303B (zh) 2015-06-19 2019-06-04 上海兆芯集成电路有限公司 单芯片整合的传感器集线器和多传感器管理方法
CN106469291A (zh) 2015-08-19 2017-03-01 中兴通讯股份有限公司 图像处理方法及终端
US10031765B2 (en) 2015-09-24 2018-07-24 Intel Corporation Instruction and logic for programmable fabric hierarchy and cache
US10812831B2 (en) 2015-09-30 2020-10-20 Piksel, Inc. Video stream delivery via adaptive quality enhancement using error correction models
US11061672B2 (en) 2015-10-02 2021-07-13 Via Alliance Semiconductor Co., Ltd. Chained split execution of fused compound arithmetic operations
CN106570559A (zh) 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
US10474951B2 (en) * 2015-10-23 2019-11-12 Nec Corporation Memory efficient scalable deep learning with model parallelization
WO2017087568A1 (en) 2015-11-17 2017-05-26 Eman Bayani A digital image capturing device system and method
US10409560B1 (en) * 2015-11-18 2019-09-10 Amazon Technologies, Inc. Acceleration techniques for graph analysis programs
CN106814639A (zh) 2015-11-27 2017-06-09 富泰华工业(深圳)有限公司 语音控制***及方法
CN105893419A (zh) 2015-11-30 2016-08-24 乐视致新电子科技(天津)有限公司 一种多媒体照片生成方法、装置、设备及手机
US10699186B2 (en) * 2015-12-02 2020-06-30 Google Llc Determining orders of execution of a neural network
US11176483B1 (en) * 2016-01-06 2021-11-16 Datarobot Inc. Systems and methods for storing and retrieving data sets based on temporal information
CN111353588B (zh) * 2016-01-20 2024-03-05 中科寒武纪科技股份有限公司 用于执行人工神经网络反向训练的装置和方法
CN105512723B (zh) 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106997236B (zh) * 2016-01-25 2018-07-13 亮风台(上海)信息科技有限公司 基于多模态输入进行交互的方法和设备
US10671938B2 (en) 2016-01-27 2020-06-02 Bonsai AI, Inc. Artificial intelligence engine configured to work with a pedagogical programming language to train one or more trained artificial intelligence models
US10497089B2 (en) * 2016-01-29 2019-12-03 Fotonation Limited Convolutional neural network
US10942711B2 (en) 2016-02-12 2021-03-09 Sony Corporation Information processing method and information processing apparatus
US10103714B2 (en) 2016-03-01 2018-10-16 Qualcomm Incorporated Adjust voltage for thermal mitigation
JP2017156511A (ja) 2016-03-01 2017-09-07 ソニー株式会社 情報処理装置、情報処理方法、およびプログラム
US10019779B2 (en) 2016-03-08 2018-07-10 Amazon Technologies, Inc. Browsing interface for item counterparts having different scales and lengths
CN109934331B (zh) 2016-04-29 2020-06-19 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
US10552119B2 (en) 2016-04-29 2020-02-04 Intel Corporation Dynamic management of numerical representation in a distributed matrix processor architecture
US10187568B1 (en) 2016-05-02 2019-01-22 Bao Tran Video smart phone
US11055063B2 (en) 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
CN105978611B (zh) 2016-05-12 2019-09-17 京信通信***(中国)有限公司 一种频域信号压缩方法及装置
US10796220B2 (en) * 2016-05-24 2020-10-06 Marvell Asia Pte, Ltd. Systems and methods for vectorized FFT for multi-dimensional convolution operations
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
EP3252949B1 (en) 2016-06-01 2020-03-18 Intel IP Corporation Methods and devices for predistortion of signals
US20170357910A1 (en) 2016-06-10 2017-12-14 Apple Inc. System for iteratively training an artificial intelligence using cloud-based metrics
CN107545889B (zh) 2016-06-23 2020-10-23 华为终端有限公司 适用于模式识别的模型的优化方法、装置及终端设备
CN106156310A (zh) 2016-06-30 2016-11-23 努比亚技术有限公司 一种图片处理装置和方法
US10372588B2 (en) 2016-07-08 2019-08-06 International Business Machines Corporation Providing debug information on production containers using debug containers
DE102016214786A1 (de) 2016-08-09 2018-02-15 Fujitsu Limited Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
US20180046903A1 (en) 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
CN107688855B (zh) 2016-08-12 2021-04-13 赛灵思公司 针对于复杂神经网络的分层量化方法与装置
CN106354568A (zh) 2016-08-23 2017-01-25 京信通信技术(广州)有限公司 一种不同进程间的通信方法及通信装置
US20180060719A1 (en) * 2016-08-29 2018-03-01 International Business Machines Corporation Scale-space label fusion using two-stage deep neural net
CN107797913A (zh) 2016-09-07 2018-03-13 大陆汽车电子(连云港)有限公司 一种实时***的软件分析***与方法
US11907760B2 (en) * 2016-09-23 2024-02-20 Apple Inc. Systems and methods of memory allocation for neural networks
CN106650922B (zh) 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作***
US20180096243A1 (en) 2016-09-30 2018-04-05 General Electric Company Deep learning for data driven feature representation and anomaly detection
US10726330B2 (en) * 2016-10-11 2020-07-28 The Research Foundation For The State University Of New York System, method, and accelerator to process convolutional neural network layers
CN106485316B (zh) 2016-10-31 2019-04-02 北京百度网讯科技有限公司 神经网络模型压缩方法以及装置
US10949736B2 (en) * 2016-11-03 2021-03-16 Intel Corporation Flexible neural network accelerator and methods therefor
CN106502626A (zh) 2016-11-03 2017-03-15 北京百度网讯科技有限公司 数据处理方法和装置
US10762163B2 (en) * 2016-12-05 2020-09-01 Microsoft Technology Licensing, Llc Probabilistic matrix factorization for automated machine learning
US10216479B2 (en) 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
WO2018103736A1 (en) * 2016-12-09 2018-06-14 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
CN106874219B (zh) 2016-12-23 2018-11-02 深圳云天励飞技术有限公司 一种卷积神经网络的数据调度方法、***及计算机设备
US10997492B2 (en) 2017-01-20 2021-05-04 Nvidia Corporation Automated methods for conversions to a lower precision data format
CN106951587A (zh) 2017-02-15 2017-07-14 芯启源(南京)半导体科技有限公司 Fpga调试***及方法
CN106951962B (zh) 2017-03-22 2020-09-01 南京地平线机器人技术有限公司 用于神经网络的复合运算单元、方法和电子设备
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10402932B2 (en) 2017-04-17 2019-09-03 Intel Corporation Power-based and target-based graphics quality adjustment
US10332302B2 (en) 2017-04-17 2019-06-25 Intel Corporation Scatter gather engine
US20180314945A1 (en) * 2017-04-27 2018-11-01 Advanced Micro Devices, Inc. Graph matching for optimized deep network processing
CN107025629B (zh) 2017-04-27 2021-03-26 维沃移动通信有限公司 一种图像处理方法及移动终端
US11842280B2 (en) 2017-05-05 2023-12-12 Nvidia Corporation Loss-scaling for deep neural network training with reduced precision
US10019668B1 (en) * 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
US10956535B2 (en) * 2017-05-22 2021-03-23 Microsoft Technology Licensing, Llc Operating a neural network defined by user code
CN109034381B (zh) * 2017-06-09 2022-01-28 宏达国际电子股份有限公司 训练任务优化***、方法及其非暂态电脑可读媒体
US10944902B2 (en) 2017-06-20 2021-03-09 Adobe Inc. Digital image generation using capture support data
US20200097799A1 (en) 2017-06-30 2020-03-26 Intel Corporation Heterogeneous multiplier
CN107451654B (zh) * 2017-07-05 2021-05-18 深圳市自行科技有限公司 卷积神经网络的加速运算方法、服务器及存储介质
US10427306B1 (en) 2017-07-06 2019-10-01 X Development Llc Multimodal object identification
CN109284130B (zh) * 2017-07-20 2021-03-23 上海寒武纪信息科技有限公司 神经网络运算装置及方法
CN107451658B (zh) 2017-07-24 2020-12-15 杭州菲数科技有限公司 浮点运算定点化方法及***
CN107688849B (zh) 2017-07-28 2021-04-13 赛灵思电子科技(北京)有限公司 一种动态策略定点化训练方法及装置
US11481218B2 (en) 2017-08-02 2022-10-25 Intel Corporation System and method enabling one-hot neural networks on a machine learning compute platform
WO2019031858A1 (en) * 2017-08-08 2019-02-14 Samsung Electronics Co., Ltd. METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK
US20190050710A1 (en) 2017-08-14 2019-02-14 Midea Group Co., Ltd. Adaptive bit-width reduction for neural networks
CN107644254A (zh) 2017-09-09 2018-01-30 复旦大学 一种卷积神经网络权重参数量化训练方法及***
US10224954B1 (en) 2017-09-29 2019-03-05 Intel Corporation Floating point to fixed point conversion
KR102317958B1 (ko) 2017-09-29 2021-10-27 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 화상처리장치 및 방법
US11437032B2 (en) 2017-09-29 2022-09-06 Shanghai Cambricon Information Technology Co., Ltd Image processing apparatus and method
US10223114B1 (en) 2017-09-29 2019-03-05 Intel Corporation Fixed point to floating point conversion
US11450319B2 (en) 2017-09-29 2022-09-20 Cambricon (Xi'an) Semiconductor Co., Ltd. Image processing apparatus and method
JP6540770B2 (ja) 2017-10-17 2019-07-10 富士通株式会社 演算処理回路、演算処理回路を含む演算処理装置、演算処理装置を含む情報処理装置、および方法
US10410121B2 (en) 2017-10-25 2019-09-10 SparkCognition, Inc. Adjusting automated neural network generation based on evaluation of candidate neural networks
US20210061028A1 (en) 2017-10-26 2021-03-04 Applied Mechatronic Products Apparatus and method for vehicular monitoring, analysis, and control
JP6839641B2 (ja) * 2017-11-17 2021-03-10 株式会社東芝 演算処理装置
US10783634B2 (en) 2017-11-22 2020-09-22 General Electric Company Systems and methods to deliver point of care alerts for radiological findings
US10803379B2 (en) * 2017-12-12 2020-10-13 Amazon Technologies, Inc. Multi-memory on-chip computational network
CN108053028B (zh) 2017-12-21 2021-09-14 深圳励飞科技有限公司 数据定点化处理方法、装置、电子设备及计算机存储介质
US11636327B2 (en) 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US11373088B2 (en) 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11119915B2 (en) * 2018-02-08 2021-09-14 Samsung Electronics Co., Ltd. Dynamic memory mapping for neural networks
US20190251429A1 (en) 2018-02-12 2019-08-15 Kneron, Inc. Convolution operation device and method of scaling convolution input for convolution neural network
US11709672B2 (en) 2018-02-13 2023-07-25 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
US11106598B2 (en) 2018-02-13 2021-08-31 Shanghai Cambricon Information Technology Co., Ltd. Computing device and method
US11630666B2 (en) 2018-02-13 2023-04-18 Shanghai Cambricon Information Technology Co., Ltd Computing device and method
CN110162162B (zh) 2018-02-14 2023-08-18 上海寒武纪信息科技有限公司 处理器的控制装置、方法及设备
JP7056225B2 (ja) 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US10628275B2 (en) 2018-03-07 2020-04-21 Nxp B.V. Runtime software-based self-test with mutual inter-core checking
US11475306B2 (en) * 2018-03-22 2022-10-18 Amazon Technologies, Inc. Processing for multiple input data sets
CN108510067B (zh) 2018-04-11 2021-11-09 西安电子科技大学 基于工程化实现的卷积神经网络量化方法
US11562213B2 (en) * 2018-04-17 2023-01-24 Intel Corporation Methods and arrangements to manage memory in cascaded neural networks
US10691413B2 (en) 2018-05-04 2020-06-23 Microsoft Technology Licensing, Llc Block floating point computations using reduced bit-width vectors
EP3624020A4 (en) 2018-05-18 2021-05-05 Shanghai Cambricon Information Technology Co., Ltd CALCULATION PROCEDURES AND RELATED PRODUCTS
CN108717570A (zh) 2018-05-23 2018-10-30 电子科技大学 一种脉冲神经网络参数量化方法
US10360304B1 (en) 2018-06-04 2019-07-23 Imageous, Inc. Natural language processing interface-enabled building conditions control system
CN109062540B (zh) 2018-06-06 2022-11-25 北京理工大学 一种基于cordic算法的可重构浮点运算装置
CN109063820A (zh) 2018-06-07 2018-12-21 中国科学技术大学 利用时频联合长时循环神经网络的数据处理方法
CN110728364A (zh) 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
EP3825841A1 (en) 2018-06-27 2021-05-26 Shanghai Cambricon Information Technology Co., Ltd Method and device for parallel computation of a network model
US11966583B2 (en) 2018-08-28 2024-04-23 Cambricon Technologies Corporation Limited Data pre-processing method and device, and related computer device and storage medium
US11703939B2 (en) 2018-09-28 2023-07-18 Shanghai Cambricon Information Technology Co., Ltd Signal processing device and related products
CN109685202B (zh) 2018-12-17 2023-03-21 腾讯科技(深圳)有限公司 数据处理方法及装置、存储介质和电子装置
CN111385462A (zh) 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN109902745A (zh) 2019-03-01 2019-06-18 成都康乔电子有限责任公司 一种基于cnn的低精度训练与8位整型量化推理方法
CN110059733A (zh) 2019-04-01 2019-07-26 苏州科达科技股份有限公司 卷积神经网络的优化及快速目标检测方法、装置
CN109993296B (zh) 2019-04-01 2020-12-29 安徽寒武纪信息科技有限公司 量化实现方法及相关产品
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
US11847554B2 (en) 2019-04-18 2023-12-19 Cambricon Technologies Corporation Limited Data processing method and related products
US11676028B2 (en) 2019-06-12 2023-06-13 Shanghai Cambricon Information Technology Co., Ltd Neural network quantization parameter determination method and related products
EP4020321A4 (en) 2019-08-23 2024-01-17 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD, APPARATUS, COMPUTER APPARATUS AND STORAGE MEDIUM
EP4020329A4 (en) 2019-08-23 2023-07-05 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD AND APPARATUS, COMPUTER EQUIPMENT, AND STORAGE MEDIA
EP4020328A4 (en) 2019-08-23 2023-07-05 Anhui Cambricon Information Technology Co., Ltd. DATA PROCESSING METHOD AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
CN110780845B (zh) 2019-10-17 2021-11-30 浙江大学 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法

Also Published As

Publication number Publication date
JP2020533659A (ja) 2020-11-19
KR20210044669A (ko) 2021-04-23
EP3640810A4 (en) 2021-05-05
EP3757896A1 (en) 2020-12-30
EP3757896B1 (en) 2023-01-11
US20200125508A1 (en) 2020-04-23
US11966583B2 (en) 2024-04-23
EP3640810A1 (en) 2020-04-22
EP3757896A8 (en) 2022-09-14
US11243895B2 (en) 2022-02-08
KR102519467B1 (ko) 2023-04-06
US20210334007A1 (en) 2021-10-28
WO2020042739A1 (zh) 2020-03-05

Similar Documents

Publication Publication Date Title
JP6867518B2 (ja) データ前処理方法、装置、コンピュータ機器及び記憶媒体
TWI798618B (zh) 記憶體分配方法、裝置、及電子設備
US20200272892A1 (en) Super-tiling in neural network processing to enabling analytics at lower memory speed
US20220147795A1 (en) Neural network tiling method, prediction method, and related apparatus
US11561833B1 (en) Allocation and placement of resources for network computation
CN110750351B (zh) 多核任务调度器、多核任务调度方法、装置及相关产品
CN110119807B (zh) 运算方法、装置、计算机设备和存储介质
CN114580606A (zh) 数据处理方法、装置、计算机设备和存储介质
CN110865950B (zh) 数据预处理方法、装置、计算机设备和存储介质
CN113469336A (zh) 优化神经网络模型的编译方法、执行方法及相关产品
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
CN112948291B (zh) 数据传输方法、电子设备和可读存储介质
CN110865792B (zh) 数据预处理方法、装置、计算机设备和存储介质
CN112948001A (zh) 设定张量硬件配置的方法、可读存储介质及装置
CN109558565B (zh) 运算方法、装置及相关产品
CN109543835B (zh) 运算方法、装置及相关产品
CN116185377A (zh) 计算图的优化方法、计算装置及相关产品
KR20200142536A (ko) 데이터 처리 장치 및 관련 제품
US20240211177A1 (en) Method and apparatus with unified virtual memory managment
CN110826704B (zh) 一种用于防止神经网络过拟合的处理装置及***
EP3985507A1 (en) Electronic device and method with scheduling
CN109543836B (zh) 运算方法、装置及相关产品
CN114281405A (zh) 数据处理方法、装置和存储介质
CN114282679A (zh) 数据处理方法、装置和存储介质
CN115545180A (zh) 对运行于人工智能芯片上的神经网络模型进行优化的编译方法及其相关产品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191225

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210408

R150 Certificate of patent or registration of utility model

Ref document number: 6867518

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250