JP6771018B2 - 二次元配列プロセッサの性能向上 - Google Patents

二次元配列プロセッサの性能向上 Download PDF

Info

Publication number
JP6771018B2
JP6771018B2 JP2018503485A JP2018503485A JP6771018B2 JP 6771018 B2 JP6771018 B2 JP 6771018B2 JP 2018503485 A JP2018503485 A JP 2018503485A JP 2018503485 A JP2018503485 A JP 2018503485A JP 6771018 B2 JP6771018 B2 JP 6771018B2
Authority
JP
Japan
Prior art keywords
data
processor
adjacent
pixels
processing system
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.)
Expired - Fee Related
Application number
JP2018503485A
Other languages
English (en)
Other versions
JP2018523870A (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
Application filed by マイヤプリカ テクノロジー エルエルシー, マイヤプリカ テクノロジー エルエルシー filed Critical マイヤプリカ テクノロジー エルエルシー
Publication of JP2018523870A publication Critical patent/JP2018523870A/ja
Application granted granted Critical
Publication of JP6771018B2 publication Critical patent/JP6771018B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • G06F18/2111Selection of the most significant subset of features by using evolutionary computational techniques, e.g. genetic algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Biomedical Technology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Human Computer Interaction (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Neurology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Algebra (AREA)
  • Physiology (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Description

(関連出願の相互参照)
本願は、2015年7月23日に出願された「Mireplica Visual Processing Architecture:Convolutional Neural Networks」と題する米国仮特許出願第62/195,921号の利益を主張するものであり、あたかも完全且つ十分に本明細書に記載されているかのように、参照によってその全体が全ての目的のために本明細書に組み込まれる。
多くのアプリケーションでは、二次元データセットが使用されている。視覚処理アプリケーションが一例として挙げられる。本明細書で使用される「視覚処理」という用語は、画像及びビデオ画素(ピクセル)及び関連するデータの一般的な処理クラスを指す。これには、画像の改善及びピクセル形式の変換、モーション検出及びトラッキング、並びに、静止画フレーム又はビデオフレームの特徴やオブジェクトの識別等のアプリケーションが含まれる。二次元セットで表現できるデータを含む他のアプリケーションには、力や電磁場等の物理量のモデリングが含まれる。場合によっては、三次元データセットを、二次元平面への投影若しくは変換によって、又は、複数の隣接する二次元データセット等のように二次元データセットで表すことができる。
畳み込みニューラルネットワークは、多種多様な検出及び分類アルゴリズムを包含する。近年、二次元(2D)畳み込みニューラルネットワーク(CNN)は、多数の画像オブジェクトを検出して分類する能力のために広く注目されている。CNNには多くの異なる構成があるが、最先端の実装では典型的に90%を超える高レベルの検出信頼性を達成するためにネットワークパラメータ及び相互接続トポロジを調整することによって、ネットワークを「トレーニング」してオブジェクトを認識させるのを可能にする基本要素で構成されている。
CNNは、一般に4つ以上の層を有することが多い「深い」ニューラルネットワークとして分類される。CNNの「畳み込み」層は、一般に、入力よりも多くの出力値を有し、出力は次の畳み込みレイヤの入力となる。以下でさらに説明するように、動作の結果として生じる数は非常に多く、1つの入力画像フレームに対して検出処理を実行するのに必要なクロックサイクル数は、容易に10億のオーダーとなり得る。リアルタイム画像認識は、自動運転車の標識読取やセキュリティ状況での顔認識等の多くのアプリケーションで望まれている。したがって、検出速度を向上させることにより、かかる画像認識アプリケーションの性能及び能力を大きく向上させることができる。
添付図面を参照して、開示される様々な実施形態の詳細な説明を以下に行う。
例示的な畳み込みニューラルネットワークの特定の態様を示す簡略ブロック図である。 畳み込みニューラルネットワークにおける畳み込み演算を示す図である。 単一画素に関連する検出出力が依存する画像、信号、重み及びバイアス要素の数を示す図である。 タイルプロセッサのデータフローの実施の特定の態様を示す簡略ブロック図である。 例示的なCNN検出プロセスの動作中に実行されるデータ要求の待ち時間を示すヒストグラムである。 本明細書で説明されるタイルプロセッサを有するいくつかの実施形態で使用される命令生成ユニットの一実施形態の特定の態様を示す簡略ブロック図である。 畳み込みニューラルネットワークにおける例示的なサブサンプリング動作を示す図である。 例示的な畳み込みニューラルネットワークにおけるサブサンプリング動作から生じるデータベクトル幅を示す図である。 サブサンプリングを有する例示的な畳み込みニューラルネットワークの実行中のタイルプロセッサデータメモリ記憶を示す図である。 例示的な畳み込みニューラルネットワークの改良された並列性及びより速い実行を提供するデータ再編成スキームを示す図である。 サブサンプリング及びベクトル連結を有する例示的な畳み込みニューラルネットワークの実行中のタイルプロセッサデータメモリ記憶装置を示す図である。 データ再編成スキームがない場合の例示的な畳み込み演算に対する行及び列入力を示す図である。 データ再編成スキームを使用する例示的な畳み込み演算に対する行及び列入力を示す図である。 データ再編成スキームの一部としてのデータの入力シャッフルを示す図である。 データ再編成スキームの一部としてのデータの入力シャッフルを示す図である。 データ再編成を使用する例示的なCNN検出プロセスの動作中に実行されるデータ要求の待ち時間を示すヒストグラムである。 例示的な畳み込みニューラルネットワークのインターリーブされたデータ再編成スキームを示す図である。 データ再編成スキームの一部としてのデータの入力シャッフルを示す図である。 インターリーブされたデータ再構成スキームを使用する例示的なCNN検出プロセスの動作中に実施されるデータ要求の待ち時間を示すヒストグラムである。
(概要)
二次元配列のデータに対する処理速度を向上させ、画像内の特徴を検出する方法及びシステムを開示する。二次元画像内の特徴を検出するプロセッサ実行方法の実施形態は、第1画像の画素を表す第1画像データを、並列処理システム内のデータメモリのセットに記憶することを含む。並列処理システムは、命令パイプラインによって接続された実質的に同一な複数のデータプロセッサの行を含み、命令パイプラインは、複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々へ命令を順次搬送するように構成されている。データプロセッサの各々は、第1画像データが記憶されているデータメモリのセットの各々のデータメモリを備えている。また、データメモリの各々は、実質的に同一の記憶容量の複数のメモリ領域を含むように分割されており、第1画像データを記憶することは、第1画像の連続する垂直スライスを表すデータを、並列処理システムのデータメモリの各隣接メモリ領域に記憶することを含む。
本方法の実施形態は、並列処理システムに接続されたホストプロセッサのメモリに、重み行列のセットを表す重みデータを含む特徴カーネルデータを記憶することを続ける。さらに、本方法は、第1画像内の複数の選択された画素の各々について、選択された画素を含む二次元画素領域に亘って畳み込みのセットを実行し、選択された画素に対応する特徴マップ画素を生成するために、各畳み込みの結果に非線形関数を適用することを含む。畳み込みのセットの各畳み込みは、重み行列のセットの各行列を使用して実行され、特徴マップ画素は、重み行列の各々に対して生成される。本方法は、重み行列の各々について、特徴マップ画素の全てを含む特徴マップを記憶することを続け、特徴マップを記憶することは、特徴マップの個別の画素を表すデータを、並列処理システムのデータメモリの各々のメモリ領域に記憶することを含む。特徴マップの各画素について、全ての重み行列を用いて生成された特徴マップの各々からの対応する画素を表すデータは、同じメモリ領域に記憶される。本方法の実施形態は、特徴マップを処理して、特定の特徴又は特徴のクラスが第1画像内で検出されたか否かを決定することをさらに含む。
上記方法のさらなる実施形態では、特徴カーネルデータは、重み行列のセットの各重み行列に関連するバイアス値を表すバイアスデータをさらに含み、畳み込みのセットの各畳み込みは、重み行列のセットの各重み行列に関連するバイアス値を用いて実行される。一実施形態では、複数の選択された画素の各々について畳み込みのセットを実行することは、並列処理システムの隣接するデータプロセッサにおいて畳み込みのセットを実行するための命令を順次実行することを含む。さらに、並列処理システムの隣接するデータプロセッサにおいて命令を順次実行する単一の反復は、第1画像の1つの水平行内の全ての選択された画素に対して畳み込みのセットを実行することを含む。
この方法のさらなる実施形態では、複数の選択された画素は、整数サブサンプリング係数nによって定義された画素数だけ、第1画像内の水平方向及び垂直方向に離間した画素から構成されている。さらに別の実施形態では、並列処理システムの隣接するデータプロセッサにおいて命令を順次実行する単一の反復は、第1画像のn個の水平行内の全ての選択された画素に対して畳み込みのセットを実行することを含み、n個の水平行は、n画素離れた一連の水平行内で隣接する行である。
さらなる実施形態において、特徴マップを記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、第1画像のn個の水平行のうち最上位にある選択された画素に対応する特徴マップ画素を、並列処理システム内のデータプロセッサの隣接メモリ領域の第1グループに記憶することをさらに含む。ここで、隣接メモリ領域の第1グループは、並列処理システムの命令パイプラインの先頭に最も近い位置にあるデータプロセッサ内に存在する。この実施形態では、特徴マップを記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、第1画像のn個の水平行の次の下位行で選択された画素に対応する特徴マップ画素を、隣接メモリ領域の第1グループに隣接する、隣接メモリ領域の次のグループに記憶することさらに含む。ここで、隣接メモリ領域の次のグループは、並列処理システムの命令パイプラインに沿って配置されたデータプロセッサ内に存在する。この実施形態は、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の追加の下位行で選択された画素に対応する特徴マップ画素を、並列処理システムの命令パイプラインに沿って配置されたデータプロセッサ内の隣接メモリ領域の連続グループに記憶することをさらに含む。
別の実施形態において、特徴マップを記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の各々における第1の選択された画素に対応する第1の一連のn個の特徴マップ画素の各々を、n個の水平行の最上位から最下位まで順に、並列処理システム内のデータプロセッサの各々の隣接メモリ領域に記憶することを含む。これらの特徴マップ画素は、並列処理システムの命令パイプラインの先頭の最も近い位置にあるデータプロセッサの第1メモリ領域から始まるメモリ領域に記憶される。この実施形態では、特徴マップを記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の各々における第2の選択された画素に対応する第2の一連のn個の特徴マップ画素の各々を、n個の水平行の最上位から最下位まで順に、並列処理システム内のデータプロセッサの各々の隣接メモリ領域に記憶することをさらに含む。また、特徴マップを記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の各々における追加の選択された画素に対応する追加の一連のn個の特徴マップ画素の各々を、n個の水平行の最上位から最下位まで順に、直前の一連の特徴マップ画素内の最後の特徴マップ画素を記憶するメモリ領域の直後のメモリ領域から始まる、並列処理システム内のデータプロセッサの各々の隣接メモリ領域に記憶することを含む。
二次元画像内の特徴を検出する方法の一実施形態では、特徴マップを処理して、決定することは、第1画像内の同じ水平位置を有する選択された画素に対応する特徴マップ画素を表すデータが、並列処理システム内のデータプロセッサの同じメモリ領域内に全て記憶されるように、特徴マップ画素を表す記憶されたデータを再配置することを含む。この実施形態では、特徴マップを処理することは、各特徴マップ内の複数の選択された特徴マップ画素の各々について、選択された特徴マップ画素を含む二次元特徴マップ画素領域に亘って追加の畳み込みのセットを続けて実行することをさらに含む。ここで、追加の畳み込みのセットの各畳み込みは、ホストプロセッサのメモリに記憶された追加の重み行列のセットの各重み行列を用いて実行される。別の実施形態では、第1画像は、より大きな画像の水平スライスを構成し、この方法は、第1画像の最上行を表す第1画像データに対する畳み込みのセットの完了に続いて、第1画像の最上行を表す第1画像データを、前に第1画像に含まれたより大きい画像の最下行の直下のより大きな画像の行を表すデータで上書きすることをさらに含む。
二次元画像内の特徴を検出するデータ処理システムの一実施形態は、実質的に同一のデータプロセッサの行を含み、データプロセッサは、複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々に命令を順次搬送するように構成された命令パイプラインによって接続されており、データプロセッサの各々は、実質的に同一の記憶容量の複数のメモリ領域を含むように分割されたデータメモリを含む。データ処理システムのこの実施形態は、データプロセッサの行に接続されたホストプロセッサをさらに含み、ホストプロセッサは、重み行列のセットを表す重みデータと、重み行列のセットの各重み行列のバイアス値を表すバイアスデータとを含む特徴カーネルデータを記憶するように構成されたデータメモリを含む。ホストプロセッサは、複数のデータプロセッサによって実行される命令と、命令パイプラインに提供され、データプロセッサの行によって実行される場合に、二次元画像の特徴を検出する上述した方法の特定のステップを実行するように動作可能な記憶されたプログラム命令と、をフェッチして命令パイプラインに提供するように構成された制御モジュールをさらに含む。
データ処理システムのさらなる実施形態において、制御モジュールは、ホストプロセッサ及びデータプロセッサの行に接続された命令生成ユニットを含む。命令生成ユニットは、ホストプロセッサとデータプロセッサの行との間のインタフェースを提供し、ホストプロセッサから受け取ったカスタムコンパイラ命令をデータプロセッサの行内のデータプロセッサによって実行可能な命令に変換するように構成されている。
二次元配列のデータに対する処理動作の速度を向上させるプロセッサ実行方法の一実施形態は、第1配列の要素を表す第1配列データを、並列処理システム内のデータメモリのセットに記憶することを含む。並列処理システムは、複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々に命令を順次搬送するように構成された命令パイプラインによって接続された、複数の実質的に同一のデータプロセッサの行を含む。データプロセッサの各々は、データメモリのセットの各々のメモリを含み、データメモリの各々は、実質的に同一の記憶容量の複数のメモリ領域を含むように分割されている。本方法のこの実施形態において、第1配列データを記憶することは、第1配列の連続する列を表すデータを、並列処理システムのデータメモリの各々の隣接メモリ領域に記憶することを含む。
処理動作の速度を向上させる方法は、第1配列内の複数の選択された要素の各々について、選択された要素に対応する出力要素を生成するために、選択された要素に対して処理動作を実行することをさらに含む。この実施形態では、複数の選択された要素は、整数サブサンプリング係数nによって定義された要素数だけ、第1配列内で水平方向及び垂直方向に離間した要素から構成されている。複数の選択された要素の各々について処理動作を実行することは、並列処理システムの隣接するデータ処理プロセッサにおいて、処理動作を実行するための命令を順次実行することを含み、並列処理システムの隣接するデータプロセッサにおいて命令を順次実行する単一の反復は、第1配列のn個の水平行内の全ての選択された要素に対して処理動作を実行することを含む。ここで、n個の水平行は、n個の要素を隔てた一連の水平行内の隣接する行である。本方法は、出力要素の全てを含む出力配列を記憶することをさらに含み、出力配列を記憶することは、並列処理システムのデータメモリの各々のメモリ領域に出力配列の個別の要素を表すデータを記憶することを含む。
処理動作の速度を向上させる方法のさらなる実施形態では、処理動作を実行することは、選択された要素を含む二次元要素領域に亘って1回以上の畳み込みを実行することを含み、1回以上の畳み込みの各々は、並列処理システムに接続されたホストプロセッサのデータメモリに記憶された係数行列を用いて実行される。
処理動作の速度を向上させる方法の別の実施形態では、出力配列を記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、第1配列のn個の水平行のうち最上位にある選択された要素に対応する出力要素を、並列処理システム内のデータプロセッサの隣接メモリ領域の第1グループに記憶することをさらに含む。隣接メモリ領域の第1グループは、並列処理システムの命令パイプラインの先頭に最も近い位置にあるデータプロセッサ内に存在する。この実施形態では、出力配列を記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、第1配列のn個の水平行の次の下位行で選択された要素に対応する出力要素を、隣接メモリ領域の第1グループに隣接する、隣接メモリ領域の次のグループに記憶することをさらに含む。隣接メモリ領域の次のグループは、並列処理システムの命令パイプラインに沿ってさらに配置されたデータプロセッサ内に存在する。また、出力配列を記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の追加の下位行で選択された要素に対応する出力要素を、並列処理システムの命令パイプラインに沿ってさらに配置されたデータプロセッサ内の隣接メモリ領域の連続グループに記憶することを含む。
本方法の別の実施形態では、出力配列を記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の各々における第1の選択された要素に対応する第1の一連のn個の出力要素の各々を、n個の水平行の最上位から最下位まで順に、並列処理システム内のデータプロセッサの各々の隣接メモリ領域に記憶することをさらに含む。出力要素は、並列処理システムの命令パイプラインの先頭に最も近い位置にあるデータプロセッサの第1メモリ領域から始まるメモリ領域に記憶される。この実施形態では、出力配列を記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の各々における第2の選択された要素に対応する第2の一連のn個の出力要素の各々を、n個の水平行の最上位から最下位まで順に、並列処理システム内のデータプロセッサの各々の隣接メモリ領域に記憶することをさらに含む。これらの出力要素は、第1の一連の出力要素内の最後の出力要素を記憶するメモリ領域の直後のメモリ領域から始まるメモリ領域に記憶される。また、出力配列を記憶することは、隣接するデータプロセッサにおいて命令を順次実行する単一の反復の間に、n個の水平行の各々における追加の選択された要素に対応する追加の一連のn個の出力要素の各々を、n個の水平行の最上位から最下位まで順に、並列処理システム内のデータプロセッサの各々の隣接メモリ領域に記憶することを含む。これらの出力要素は、直前の一連の出力要素内の最後の出力要素を記憶するメモリ領域の直後のメモリ領域から始まるメモリ領域に記憶される。
別の実施形態では、処理動作の速度を向上させる方法は、出力配列の同じ列からの出力要素を表すデータが、並列処理システム内のデータプロセッサの同じメモリ領域内に全て記憶されるように、出力要素を表す記憶されたデータを再配置することと、出力配列内の複数の選択された出力要素の各々について、選択された出力要素に対して追加の処理動作を続けて実行することと、をさらに含む。
二次元配列のデータに対する処理動作の速度を向上させるデータ処理システムの一実施形態は、実質的に同一のデータプロセッサの行を含み、データプロセッサは、複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々に命令を順次搬送するように構成された命令パイプラインによって接続されている。各データプロセッサは、実質的に同一の記憶容量の複数のメモリ領域を含むように分割されたデータメモリを含む。本システムは、データプロセッサの行に接続されたホストプロセッサをさらに含み、ホストプロセッサは、データプロセッサの行のデータメモリに記憶された配列データに対する処理動作で使用するための固定データを記憶するように構成されたデータメモリを含む。ホストプロセッサは、複数のデータプロセッサによって実行される命令と、命令パイプラインに提供され、複数のデータプロセッサによって実行される場合に、処理速度を向上させるために上述した方法の特定のステップを実行するように動作可能な記憶されたプログラム命令と、をフェッチして命令パイプラインに提供するように構成された制御モジュールをさらに含む。
データ処理システムのさらなる実施形態では、制御モジュールは、ホストプロセッサ及びデータプロセッサの行に接続された命令生成ユニットを備え、命令生成ユニットは、ホストプロセッサとデータプロセッサの行との間のインタフェースを提供し、ホストプロセッサから受け取ったカスタムコンパイラ命令をデータプロセッサによって実行可能な命令に変換するように構成されている。本システムの別の実施形態では、処理動作を実行することは、選択された要素を含む二次元要素領域に亘って1回以上の畳み込みを実行することを含み、1回以上の畳み込みの各々は、ホストプロセッサのデータメモリに記憶された係数行列を用いて実行される。
本明細書に記載された方法及びシステムは、2D CNN実行の速度及びサブサンプリングを含む二次元配列の他の動作の実質的な改善をもたらす。本明細書に記載された新規のタイルプロセッサアーキテクチャの特定の態様は、共有する米国特許出願第13/602,958号、現在の米国特許第9,183,614号及び米国特許出願第15/054,118号にさらに説明されており、これら全体が本明細書に援用される。他のアプローチとは異なり、タイルプロセッサアーキテクチャは、画像フレームの全幅にわたる同時処理を可能にし、実質的に通信オーバーヘッドのない非常に多数のネットワークパラメータの分散を含む、ニューラルネットワーク全体の低遅延通信をサポートする。さらに、本アーキテクチャは、既存のソリューションで可能な範囲を超える並列処理(少なくとも4倍以上の並列処理)を可能にするデータ再編成の機会を提供する。一実施形態では、CNNは、シングルスレッドC++ソースプログラムによって直接実行される。
(CNNの概要)
CNNは、計算量及び通信量が非常に多く、並列処理要素間で分割するのが非常に困難な状況下で動作する。図1は、Eindhoven University of Technologyの組み込みプロセッサアーキテクチャコース(https://sites.google.com/site/5kk73gpu2013/assignment/cnn)に提供された参照コードに基づくCNNの例の一般的なコンポーネントを示している(この特定の例では、交通標識を検出して分類している)。ニューラルネットワーク100は、レイヤ1〜レイヤ4と名付けられた4つのレイヤから構成されている。各レイヤは、いくつかの特徴マップを用いて、入力画像内の画素及び各特徴マップについて、画素によって定義される領域(この場合、左上隅の画素を有する領域)がどの程度特徴マップとマッチするかを決定する。これは、各位置でこの決定を行うニューロンとおおまかに似ており、したがって、「ニューラルネットワーク」という用語になっている。図1には、可能な特徴マップのセット示されている。レイヤ1では、24個の特徴マップのうち102個のセットを使用することができ、レイヤ2では、40個の特徴マップのうち104個のセットを使用することができ、レイヤ3では、24個の特徴マップのうちの106個のセットを使用することができる。図1の実施形態では、連続するレイヤで使用される特徴マップは、次第に複雑な特徴を表現している。これは、畳み込みニューラルネットワークの場合に多い。図1に示すように、特徴マップのセット102,104,106は、顔の認識のために使用される。他のオブジェクトの認識に適した他の例示的な特徴マップのセットが図1に示されている。図1には示されていないが、交通標識の認識に適した同様の特徴マップのセットは、交通標識である入力画像108の認識のために使用される。図1に示される特徴マップは、固定データであり、「特徴検出器」等の他の用語を用いて参照することもできる。「特徴マップ」という用語は、入力画像と特徴マップとの比較から生じる出力「画像」を記述するのに使用することができる。
この画像部分と、オブジェクト検出に使用される基本概念である特徴マップと、の比較によって、図1に示すように、ネットワークの実現には多数の基本的な動作が存在する。
・サブサンプリング(図では「SAMP」)。画像オブジェクトは、ビューポート(すなわち表示位置)から様々な距離にあり得るので、パターンマッチングのためには、マッチングする特徴における距離の範囲を考慮する必要がある。これは、画像情報を(許容可能な損失を伴って)より濃密な表現(より小さい幅及び高さ)に配置する様々なレイヤで画像をサブサンプリングすることによって、達成される。最後のレイヤであるレイヤ4は、オブジェクトが所定の位置で検出されたか否かを示すために、全てのレイヤの要約を比較し、必要に応じてオブジェクト(例えば、標識に示された速度)を分類することもできる。
・2D畳み込み(図では「CONV」)。これは、画像の領域を特徴マップに一致させるための基本的な動作である。これらの領域の寸法は、任意の所定のネットワークに対して固定されているが、1つのレイヤから次のレイヤへ、及び、1つのネットワークから次のネットワークへ変化する可能性がある。これはネットワーク設計の一部である。
・非線形活性化機能(図では「ACTV」)。この機能は、領域が特徴と一致する度合いを決定し、(領域を定義する単一の画素(この場合、左上の画素)の出力を破棄することによって)一定の閾値を上回る一致をしない領域を破棄する。必要に応じて、これらの位置を強調するために、閾値をさらに上回る出力に対して比較的大きな値を割り当てることができる。
・レイヤ1からの異なる特徴マップからの出力の部分的な相互接続(図では「PCNT」)。この動作では、前のレイヤの特徴マップ比較の様々な組み合わせが考慮され、前のレイヤで一致した特徴に関する豊富な情報セットが形成される。
・レイヤ2からの異なる特徴マップからの出力の完全な相互接続(図では「FCNT」)。これは、より豊富な情報セットを形成するが、より多くの組み合わせをもたらすので、ここではレイヤ3でのみ行われる。
・最終的な閾値計算(図では「THRESH」)。これは、ネットワークが所定の位置で行った「決定」をまとめたもので、特徴が当該所定の位置で検出されたか否かを示している。これは、最後の畳み込みの後に、ゼロよりも大きいある値で示される。これが真であれば、他の畳み込みを用いて、検出されたオブジェクトの特定のクラスに検出をソートすることができ、この畳み込みの大きさは、分類の信頼水準を示す。
図1のような畳み込みニューラルネットワークにおいて最も時間のかかる動作は、図2に示す画像データの2D畳み込みである。この演算は、所定の垂直位置y及び水平位置xでの信号出力Sy,xを計算する。この図は、6×6畳み込みを示しており、例えば、入力画像108内の領域202を使用して出力を計算することを意味し、領域202は高さ6画素、幅6画素であり、x及びyは左上隅で定義される。比較される様々な特徴は、バイアスB及び重み行列Wm,nからなるカーネルによって定義される。図2の実施形態では、重み行列204は、特徴マップセット208内の特徴マップ206の強度変化を表す36個の要素Wy,xを有する。
畳み込み演算は、以下の式で定義される。
畳み込みは、画像データの積と、重み行列の対応する要素とを合計し、信号を生成するために、バイアスを加算して単一の値となる。したがって、畳み込みは、入力強度値INy,xを有する画素の空間的位置に対応する出力信号値Sy,xを生じる。非公式には、この演算は、画素値と重み値との間の対応度が高い領域に対してより大きい信号値を生成する。例えば、重みがより高い(より明るい)値を有する同じ位置で画像がより明るい場合、2つの積は、比較的大きい値を有する(そして、負の重みを使用して正のバイアスを適用すると、一致するより暗い領域の値が比較的大きくなる)。畳み込み量が大きいほど、一致度が高くなる。ACTV機能は、比較的弱い値を有する畳み込み出力を破棄するので、さらなる畳み込み層に関与しない。
畳み込みは、画像全体(本明細書に記載されたテスト実装では、幅1280画素、高さ720画素の画像)に亘って実行されるので、計算上激しい。しかし、これは演算の複雑さを左右する。図3は、例示的なネットワークの単一の出力が有する、ネットワークを介して戻る出力(1検出)からの追跡、及び、全ての畳み込みカーネルと相互接続動作との考慮の依存関係を示す図である(入力セットの組み合わせは、組み合わせの数に応じて、入力セットより多くの出力セットをもたらす)。
単一の出力分類は、38,280個の信号要素(「s」、入力画像を含む)、及び、272,588個のカーネル要素(バイアス「b」及び重み「w」の両方をカウントする)に依存する。レイヤ2は、レイヤ3への5×5信号入力を形成するために25回繰り返す必要があり、レイヤ1は、レイヤ2への6×6信号入力を形成するために36回繰り返す必要がある。すなわち、レイヤ3への5×5入力を形成するために、合計で36×25=900回繰り返す必要があることに留意されたい。出力検出は、各出力位置に形成され、各々は異なるデータ依存のセットを有する。隣接する出力は、隣接するコンテキストセットを有するが、各々が一意であるため、これらの依存関係には重複がある。
図1の例示的なネットワーク(nVidia GeForce GTX 460を使用)の従来の実装では、入力画像のフレームに対して約1,400,000,000サイクルの実行が必要である。一方、タイル型アーキテクチャへのマッピングの一実施形態は、同じネットワークに対して約32,000,000サイクルを要し、ほぼ44倍の速さである。この実施形態は、レイヤ1及びレイヤ2における2倍のサブサンプリングと、4つのレイヤ全てにおける2D畳み込みと、を含む。処理要素の基本的な数及び演算は、従来の実装とタイルプロセッサの実装とで似ているが、データフローがどのように実行されるか、つまり、図3のデータ依存性がどのように満たされるか、において非常に大きな違いがある。
従来のプロセッサソリューションは、信号及びカーネルデータを処理要素に伝達しなければならないようにデータフローを実装する。これは、共有メモリから処理要素(汎用グラフィックスプロセッサ)にデータを移動することによって、又は、処理要素間(「ビジョンプロセッサ」内)で明示的にデータを移動することによって実現することができる。この移動は、転送を行う時間を必要とするだけでなく、転送がプログラム内の意味のあるポイントで起きるように処理要素が同期することを要する。このことは、通常、適切なポイントに達するまで、データの送信元又は送信先が停止することを要する。
対照的に、本明細書に記載されたシステム及び方法では、タイルプロセッサ配列は、データの移動又は同期のためのオーバーヘッドがほとんど又は全くなく、全ての処理要素間で共有される方法で、全てのコンテキスト(例えば、周辺画素の画像データ)を適切な場所(すなわち、ローカルメモリ)に残す。図4は、本明細書に記載された方法及びシステムに使用されるタイルプロセッサ配列の重要な態様を示す図である。4つの相互接続されたタイルプロセッサ401のグループが示されている。「タイル」という用語は、幅が4、8又は16画素、高さが256画素までのフレーム内の画素の直線領域又は二次元配列を指す。各処理要素又はタイルプロセッサは、隣接するタイルを隣接するタイルプロセッサにマッピングして、ピクセル固有のタイル上で動作する。本明細書では、タイル処理は主に画像処理アプリケーションについて記載されているが、開示された実施形態は、二次元データセット、特に二次元相互関連データセットのデータ処理を含む任意のアプリケーションに適していると考えられると理解されたい。
タイルプロセッサ401は、従来のプロセッサと共通する多くのコンポーネントを有しており、命令メモリを持たず、命令フェッチロジックを持たないという顕著な例外がある。図4の描写は、タイルプロセッサ401の従来にないコンポーネントを示し、複数のタイルプロセッサ401のグルーピングを示すことを意図している。タイルプロセッサ401のコンポーネントの配置は、コンポーネント間の全ての相互接続を反映していなくてもよい。本明細書で別段の記載がある場合を除いて、タイルプロセッサ401は、当該技術分野で知られている従来のプロセッサの方法で相互接続された従来のプロセッサのコンポーネント(例えば、電源を含む)を含む。従来の命令メモリ及び命令フェッチロジックを用いる代わりに、タイルプロセッサ401は、制御モジュールによってフェッチされ、全てのタイルプロセッサを同じ命令シーケンスに接続する直列命令バッファ、Iバッファ又はレジスタ400から構成された命令パイプラインを用いて分散される命令を使用する。
Iバッファ400で受け取られた命令は、デコード論理402によってデコードされ、オペランドをフェッチし、結果を区分データメモリ(DMEM)410に書き込むためのロード及びストアを用いて、バンク付きレジスタファイル408内のレジスタの内容に対して機能ユニット406による演算が実行される。タイルプロセッサの特に新規な特徴は、領域状態論理404と、レジスタファイルバンキングメカニズム408と、データメモリ分割化メカニズム410と、リモートアクセス論理412と、タイル相互接続ネットワーク414と、これらの組み合わせとを含む。ネットワーク414は、全てのタイルプロセッサを他の全てのタイルプロセッサのDMEMに接続する、完全に接続されたネットワークを表しているので、別個のハードウェアブロックとして示されていない。各タイルプロセッサのリモートアクセス論理412は、4つのタイルプロセッサの何れかからの要求を単一サイクルで他のタイルプロセッサの何れかにルーティングする、ローカルアクセス相互接続416に接続している。リモートアクセス論理418は、何れかの要求がローカルグループ内のプロセッサに向けられていないか否かを同時に判別し、このローカルでない要求を最終的な宛先に接続する非ローカルタイル相互接続420にそのような要求を提示する。ローカルアクセス相互接続416と、リモートアクセス論理418と、非ローカルタイル相互接続420とは、相互接続ネットワーク414の特定のレベルである。
各データパス(タイルパス)は、別のタイルパス(又は同じタイルパス内の異なるメモリ領域)内のメモリをターゲットとするロード命令を実行することによって、共有コンテキストにアクセスすることができる。このロードは、通常、命令にサイクルを追加することなく、ターゲットデータが確実に計算されるように実行される。
図5は、第1のタイルプロセッサの実装の実施形態におけるタイルパス間の信号トラフィックのデータフローレイテンシのヒストグラムを示す図である。ラウンドトリップレイテンシが水平軸に示され(ロード要求からデータ応答までのサイクル)、所定のレイテンシを伴うアクセスの回数が垂直軸上にある。(ヒストグラムには2つのピークがある。これは、サブサンプリング動作が広範囲のデータに亘って行われ、比較的遠隔の通信を必要とするためである。)ほぼ全ての要求は、同期を含む12サイクル以内に満たされる。タイルパスは、複数の位置(この場合、4つの位置)でマルチタスクを行い、同じ命令シーケンスを4回実行する。したがって、例えば、3つの他の位置にある4つの命令のシーケンスは、次の命令シーケンスによって要求される前に応答を受信するのに十分な時間を提供する。
データの低オーバーヘッド移動に加えて、タイル配列は、従来のソリューションと比較して、データフロー実装において2つのさらなる重要な利点を有する。第1に、ネットワークの各レベルのデータは、共有メモリ内の所定の位置に残り、あるレイヤから次のレイヤに伝達される必要がない。従来のソリューションでは、図3に示す依存関係を拡張することで分かるように、コンピューティング要素への35,000,000,000回の信号データのデータ転送が必要である。一方、本実施形態では、タイル配列は約38,000,000回(図5の分布の合計)の転送を必要とする。入力データは1回転送され、全てのネットワークレイヤがこの入力で実行され、検出がテーブルに出力される。必要とされる唯一のデータ転送は、サブサンプリングのためであり、畳み込みのための信号領域にアクセスするためのものである。レイヤの相互接続又はネットワークレイヤ間のデータ転送には、他の転送が必要ない。
第2に、所定の場所に残るデータに対して動作するこの機能は、タイル配列がカーネルデータを通信するためのオーバーヘッドを必要としないという事実による。より一般的なソリューションでは、このカーネルデータは信号データに付随しなければならず、カーネルデータ又は画像データを計算要素のローカルメモリにスワップする必要がある。カーネルデータは信号データよりもはるかに多く、合計290,000,000,000回の転送である。これは、計算要素ごとの合計ストレージが全てのカーネルデータに対して311,000のメモリ位置であり、非効率的なメモリ使用無しに複数の計算要素内に残るには大きすぎるために、必要である。
タイル配列では、カーネルデータがホストメモリ内の1つのメモリ位置に存在し、タイルパスにオーバーヘッドなしで通信される。ホストプロセッサとタイルプロセッサとの間をインタフェース接続する命令生成ユニット(IGU)の実施形態を示すブロック図を図6に示す。ホストプロセッサとタイルプロセッサとの間をインタフェース接続するのに関連するタスクは、実行されるプログラム命令の性質に依存する。プログラムがタイルプロセッサによる実行に特に適合している場合でも、命令をフェッチし、それらを適切なシーケンスでタイルプロセッサの命令パイプラインに提供する制御モジュールが必要である。また、図6のIGUは、従来のコンパイラからタイルプロセッサによる実行に適した命令へのカスタム命令の変換を実行する。このようにして、タイルプロセッサを用いて従来のプロセッサ用に書かれたプログラムを実行することができる。
IGUは、ホストのデータパス内の機能ユニットとして実装される。この機能ユニットは、2つの入力オペランド(すなわち、ホストデータA及びホストデータB)を有し、単一の結果であるホスト結果を返すという典型的な構成を有する。IGUの実装は、図の上部、中部、下部に対応する3つのパイプラインステージ(すなわち、属性ステージ602、デコードステージ604、Iバッファステージ606)に亘って分散されている。属性ステージは、ホストプロセッサへのメインインタフェースを実装し、ホストオペコードと、データAオペランドと、データBオペランドとを受け取り、タイルプロセッサの動作によって生成された多値ベクトルを識別するオブジェクトトラッカ結果を返す。このステージでは、ホストからのカスタム命令をタイルパス命令に変換するために、デコードステージで必要な情報もアセンブルする。IGUのデコードステージは、属性ステージから命令及び属性情報を受け取り、レジスタ割り当てフラグ及びレジスタ割り当てキューを用いて、レジスタの割り当て及び割り当て解除を処理する。また、デコードステージは、専用プロセッサの命令を形成し、その命令を命令バッファステージに渡す。
IGUのIバッファステージは、スカラーレジスタと、専用プロセッサからスカラーデータを受け取り、スカラーデータをホストプロセッサによって提供される他のスカラーオペランドと演算し、スカラー結果を記憶するためのスカラー機能ユニットと、を含む。IGUは、スカラー機能ユニット608を介してホストデータメモリに接続されている。また、Iバッファステージは、専用プロセッサによる命令の実行を管理するための最適化キューと、命令再生バッファと、を含む。タイル配列を専用プロセッサとして含む実施形態では、Iバッファステージは、米国特許第9,183,614号に記載された「マスタプロセッサ」の命令フェッチ及びシーケンシング動作を実行する。さらに、タイルプロセッサのための命令生成ユニットは、2016年2月25日に出願された「Hardware Instruction Generation Unit for Specialized Processors」と題する米国特許出願第15/054,118号に記載されている。この出願は、参照によりその全体が本明細書に援用される。
CNNの実装のために、カーネルデータは、検出されるオブジェクトのクラスに応じて変化するが、所定の検出セットに対して変化しない定数値のみから構成される。その結果、カーネルデータは、ホストプログラムの一部であり、ホストメモリに定数として記憶され、(即時データ用の)「ホストデータB」入力ポートに直接提供される。このデータは、命令パイプライン(ベクトルIパイプ)を介して直接流れ、通信又は同期オーバーヘッド無に全てのコンテキストに亘って適用される。
(CNN最適化−データ再編成)
タイル配列のデータフロー機能により、パフォーマンスの大幅な向上のためにある程度のデータフローオーバーヘッドが追加されるユニークな最適化が可能になる。これまで説明したベースラインの実装と、上述した図5に示すレイテンシの結果を有することは、上述した参照コードからタイルベースのプログラミングモデルへの例示的なアルゴリズムの直接マッピングに基づいている。これには、図7に示すように、レイヤ1とレイヤ2への入力を直接サブサンプリングすることが含まれる。サブサンプリングには様々な形式があるが、この形式は、他の全ての入力信号によって定義された領域と、他の全ての走査ラインとに畳み込みを単に実行して、畳み込みの入力を形成する。図7は、より一般的には、任意の二次元データ配列であり得るソース画像700を含む。畳み込みウィンドウ702は、畳み込みを実行するために選択された画素(又は配列要素)で畳み込みを実行するために使用される。ウィンドウ702では、選択された画素は、位置0,0の画素704である。図7の実施形態では、行インデックスy及び列インデックスxの両方が偶数である各画素が、畳み込みのために選択された画素である。ソース画像700に対するこれらの選択された画素のセットが、配列706に示されている。
畳み込み自体は、畳み込みウィンドウ702内の入力画像の網掛け領域によって示されるように、隣接する信号値を使用するが、畳み込み領域の位置は、レイヤ1及びレイヤ2の両方において2倍にサブサンプリングされるので、これらのレイヤの各々の出力におけるベクトル幅は、図8に示すように2倍に低減される。図8は、各ステージで処理するために利用可能な要素の行の幅の観点から、例示的なCNNのレイヤ1及びレイヤ2における畳み込みの動作を示す図である。レイヤ1内では、行スタック802は、プロセッサに記憶されている(この場合、タイルプロセッサのデータメモリ内にある)入力画像データを表す。例示的なCNNにおける畳み込みは6×6畳み込みであるため、第1レイヤの畳み込みを実行するにはyからy+5までの6個の入力行が必要である。一実施形態では、CNN処理は、ソース画像の水平スライス上で連続的に行われ、畳み込みを実行するのに必要な数の行を一度に記憶する。このような実施形態では、記憶された画像データの上位行がもはや必要でない場合、それらは画像データの新しい行によって上書きされてもよい。同様に、畳み込みから生じる信号データは、畳み込みの次のレイヤを実行するのに必要な数の行を有する水平スライスとして保持することもできる。
図8の行スタック804は、ベクトル幅の観点から、レイヤ1の畳み込みのために選択された画素である画像データ画素の割合を示す。レイヤ1の畳み込みが、レイヤ1の行y内の選択された画素上で得られると、得られた信号値はレイヤ2の入力行(ラインy)806になる。レイヤ2の次の入力行のためのスペースは、行806の下に示されている。これらの行は、追加の行から開始して畳み込みを実行するのに十分な入力データがレイヤ1で受け取られたときに生成される。図8の実施形態では、レイヤ2も2倍にサブサンプリングされるため、レイヤ2の畳み込みのために選択された画素である入力ラインyの画素の割合を表す行808は、行806の半分の幅である。
上述したようなサブサンプリングを用いて畳み込みを実行するときのタイルプロセッサデータメモリ内のデータストレージを図9に示す。図9における列は、4つのデータメモリ902,904,906,908を表している。これらは、図4のタイルプロセッサ配列のデータメモリ410と同様であるが、周囲のタイルプロセッサ及びこれらの間の相互接続は、図9に示されていない。図9の実施形態において、データプロセッサを接続する命令パイプラインは左から右へ移動するので、データメモリ902は、命令パイプラインの先頭に最も近いデータプロセッサに存在する。データメモリの各々は、データメモリ902の4つのメモリ領域(例えば、910,912,914,916)に分割される。図9の各メモリ領域の左側に沿って、上部に「IN」と示され、ソース画像内のy、x位置で参照される画像データの列が存在する。画像データ又は他の二次元配列データがタイルプロセッサに記憶される方法は、画像の水平方向に移動しながら、各水平位置の画素又は要素を連続するメモリ領域にマッピングすることによって行われる。したがって、領域910の画素(すなわち、第1プロセッサ902の第1領域)は0のxインデックスを有し、次の領域912の画素は1のxインデックスを有する等のように、データメモリのグループ全体に亘って、1つのメモリの最下部の領域から次のメモリの最上部の領域に移動する。図9の実施形態では、ソース画像は16画素幅であり、したがってxは0〜15の範囲である。他のプロセッサ配列は、より多くのデータプロセッサを有することができ、データメモリも、より多くの領域に分割され得るが、領域の数は2の累乗でなければならない。
図9の各データメモリは、ソース画像データに加えて、実行された畳み込みによって生じた信号データを記憶する。これらの出力要素は、本明細書では特徴マップ画素と呼んでもよく、より一般化された配列処理動作のための出力要素として表すことができる。本開示で説明されるCNN実施例では、6つのレイヤ1特徴マップが存在し、その結果、選択された画素当たり6つのレイヤ1の畳み込みと、結果として得られる6つの信号値とが得られる。図9の実施形態では、表記S11はレイヤ1、特徴マップ1から出力される信号を指し、S22はレイヤ1、特徴マップ2からの信号出力を指す。図9に示すように、レイヤ2畳み込みからの信号出力もデータメモリに記憶される。示された画像画素データがソース画像から受け取った第1データである実施形態では、レイヤ2畳み込み出力を生成するのに十分な画像行が受け取られていない。
図9に示すように、6つの行の画像データが各メモリ領域に記憶され、記憶された水平画像スライスの最上行の選択された画素に対してレイヤ1の畳み込みが実行されているが、この実施形態では、タイルプロセッサに対する命令は、第1プロセッサ902に対して、yインデックスが0、xインデックスが0,2,4,6の第1の4つの選択された画素で開始する畳み込みを実行させる。これらの畳み込みからの信号データは、タイルプロセッサ902の4つの領域に順次に記憶される。この動作は、プロセッサがx=10で選択された画素から「ランアウト」するまで、タイルプロセッサに亘って継続する。畳み込みは、各方向に6つの画素のウィンドウを必要とするので、10番目の水平画素は、この画像に対して畳み込みを実行することができる最後の画素であり、11番目から15番目の領域は、それらが「エプロン(apron)」に存在し、サブサンプリングがない場合でも信号データを有しないことに留意するために「apr」という名称を有する。畳み込みは、サブサンプリングされた位置の右に5つの画素を必要とするので、タイルプロセッサ906,908は畳み込みに関与していない。より多くのタイルプロセッサを使用するより広いソース画像を有するより現実的なシナリオでは、画像のエッジにおけるエプロン効果は軽微である。しかし、2倍のサブサンプリングからのタイルプロセッサアクティビティの損失は、このようなシナリオでは、利用可能なプロセッサのほぼ半分になる。
タイルプロセッサのデータプロセッサは、並列に動作するように設計されており、隣接する各プロセッサ間で1クロックサイクルのオフセットで同じ命令を実行する。畳み込み演算は、ベクトル全体に亘って並列に実行されるので、図8及び図9に示すベクトル長の減少は、レイヤ2で2倍、レイヤ3及びレイヤ4で2倍の利用可能な並列性を直接減少させる。これは、レイヤ1の6回、レイヤ2の60回の畳み込みとは対照的に、レイヤ3及びレイヤ4がより多くの合計演算(レイヤ3ではベクトル当たり合計640回、レイヤ4では(オブジェクトが検出されたか否かに応じて)ベクトル当たり80回又は640回の合計畳み込み)を実行するので、パフォーマンスにおいて2倍を超える影響を与える。
畳み込み演算は、各位置で同じであり、タイル化された実装では、データメモリに固定されたデータに対して実行される。レイヤ間で信号データを相互接続又は通信するために必要なデータ通信はない。この理由から、複数のラインからのサブサンプリングされたベクトルを、サブサンプリングされたラインよりも広い単一のベクトル内に現れるように再編成することが有利である。これにより、データの再編成にいくらかのオーバーヘッドが追加されるが、各再編成演算に対してレイヤ2〜レイヤ4の多数の畳み込みを実行することができる。
図10の実施形態では、レイヤ1内のデータが再編成され、垂直方向のベクトル編成により、6つのラインy〜y+5及びラインy+2〜y+7上で並行して垂直畳み込みが行われる。これにより、同じ出力ベクトル内に2つの隣接する出力ラインが現れる。レイヤ2内で同様の動作が実行され、同じ出力ベクトル内に4つの隣接するラインが現れるレイヤ2出力が得られる。図10の行スタック1002は、6つの代わりに8つの画像ラインを含むことを除いて、図8のスタック802と同様である。単一のタイルプロセッサ反復中に2つの行(すなわち、ラインy及びラインy+2)の畳み込みを行うために、畳み込みは、ラインy+2の畳み込みを実行するのに十分なデータが存在するように、2つのラインがさらに受け取られるまで遅延される。行スタック1004は、ラインy及びラインy+2の両方からの選択された画素を表す。これらは、単一のタイルプロセッサ配列反復で実行されるので、反復中に並列に2倍の畳み込みが実行される。レベル1でこの再構成を行うために、画像データは、実際には1つのタイルプロセッサ領域から別のタイルプロセッサ領域に移動されないことに留意されたい。代わりに、タイルプロセッサ配列は、配列の一方の側のプロセッサが行yの選択された画素に畳み込みを実行し、他方のプロセッサが行y+2の選択された画素に畳み込みを実行するようにプログラムされる。ラインy及びy+2に沿った選択された画素の畳み込みが実行される反復の後、次の反復は、行結合ラインy+4及びy+6において、4ライン下で開始することができる。
図11は、図10に示すレイヤ1の再構成を実行する場合のタイルプロセッサメモリ内のデータストレージの例を示す図である。図11は、図9に示すタイルプロセッサデータメモリの同じ配列を示しているが、図11の実施形態では、タイルプロセッサは、領域1102〜1112に記憶された結果に対してラインyに沿って選択された画素を用いてレイヤ1の畳み込みを実行し、領域1114〜1124に記憶された結果についてラインy+2に沿って選択された画素を用いてレイヤ1の畳み込みを実行するようにプログラミングされている。各メモリ領域は6つのラインではなく8つのラインの画像データを含み、メモリ領域の第1グループはソース画像のy=0行に対応する信号データを有し、メモリ領域の第2グループはy=2行に対応する信号データを有する。メモリ領域の左側には、(ソース画像内の)レイヤ1への入力行を指定するためのインデックスyが示されており、メモリ領域の右側には、(レイヤ1の出力特徴マップの各々における)レイヤ2への入力行を指定するためのインデックスyが示されている。2倍のサブサンプリングのために、レイヤ1のy+2行は、レイヤ2のy+1行になる。
この再編成がどのように行われるかを理解するには、再編成を行わずに、ベースラインの実装のためにデータをサブサンプルする方法を最初に理解することが有効である。これを図12に示す。水平畳み込みは、6つの画素の範囲1202に亘って実行される(列毎の反復)。ベクトルに対する並列演算の場合、サブサンプルされた位置からの0〜5のオフセットでサブサンプリングすることによって入力から画素を抽出する。この図は、水平畳み込みの最初の2回の反復で3番目のサブサンプリングされた位置に対して選択された画素を強調表示(x)する。垂直畳み込みは、y+0〜y+5の6つのラインの各々に亘って水平反復を繰り返すことによって達成される。複数の畳み込み(この例では6回)は、複数のカーネルを用いて、同じサブサンプルデータに適用されることに留意されたい。
サブサンプリングされたベクトルのサイズを2倍にするには、図13に示すように、同様の演算がy及びy+2の2つの水平ラインに対して実行され、第2のサブサンプリングされたラインが第1のサブサンプリングされたラインのベクトルの最後に連結される。クラスライブラリによって、割り当ての範囲マスクを用いて単一のステートメントでこれを行うことができる。これにより、水平畳み込みを同時に2つの水平ライン上で実行することができる(2つのラインが同じカーネルを使用する)。これは、連結を行うためのセットアップ時間を犠牲にして、パフォーマンスを約2倍にする。単一のベクトル再編成のために複数のカーネルが畳み込まれるため、潜在的なパフォーマンス上の利点のほとんどが実現される。
図10に示すように、レイヤ1で再編成されたデータに対して畳み込みを実行すると、レイヤ2の入力において単一ベクトル内に現れる2つの隣接する出力ラインが得られる。例えば、図10の行1006は、レイヤ2のラインyとレイヤ2のラインy+1とを連結する。この編成は、レイヤ2内での使用には便利ではない。なぜなら、隣接するラインは、同じ位置で垂直に現れるのが望ましいのに、この編成では、垂直方向に1つおきに隣接するからである。しかしながら、サブサンプリング後に入力データをシャッフルして、レイヤ2の畳み込みへの入力を形成することにより、より良い編成を形成することができる。
このシャッフリング動作を図14に示す。図10の上部のレイヤ1の再編成とは異なり、図14のシャッフリングは、1つのタイルプロセッサメモリ領域から別のメモリ領域へのレイヤ1の信号データの実際の移動である。このアイデアは、互いに隣接するように意図された画素が同じメモリ領域に記憶されるように、配置された次の畳み込みのための画像データを得ることである。サブサンプリングにより、4つの水平畳み込みラインをほぼ同じベクトル幅に配置することができる(畳み込みを右境界で行うことができず、出力にはいくつかの位置が表示されないため、多少小さくなる)。これを達成するために、4つの垂直ラインがサブサンプルされ、偶数ラインの場合にはベクトルの左側から、同じベクトル内で連結され、奇数ラインの場合には右側から、同じベクトル内で連結される。この動作は、全ての水平畳み込み(x+0〜x+5)と、全ての垂直畳み込み(y+0〜y+5)とに適用されることを理解されたい。しかしながら、この再編成は、レイヤ2内の16回の畳み込みに適用されるため、再編成のオーバーヘッドにもかかわらず、純利益が再び発生する。
同様の再編成がレイヤ3で実行され、畳み込み操作(この場合は5×5)に適するように、入力を配置する。しかしながら、レイヤ3は、このニューラルネットワーク例ではサブサンプリングを使用しないため、図15に示すように、連続する水平ラインが垂直方向に隣接するように、入力ベクトルを単に回転する。他のレイヤと同様に、この結果、出力の4つの隣接するサブベクトルにおいて、1つのベクトル内に連続したラインが出力される。この再編成は、更なる再編成を必要とせずに、検出及び分類のために参照CNNコードのレイヤ4に直接使用することができる。
上述したデータ再編成及びシャッフルを用いる最適化されたCNN実装のこの実施形態は、上述したベースラインタイルプロセッサの実行(32,000,000サイクル)の約3.1倍の性能、前述した従来技術の実行(1,400,000,000サイクル)の約137倍の性能を10,200,000サイクルで実行する。図16は、この実装のレイテンシヒストグラムを示す図である。データ再編成は、ベースライン実装に約21,000,000回の転送が追加されたが、タイル配列のデータフロー実装は、レイテンシプロファイルにほとんど影響を与えずにこれらの転送をサポートする。これは、この最適化を可能にするデータ再編成を使用可能にする重要な利点である。
(CNNの最適化−データフロー最適化)
これまでに提示されたタイル型CNN実装のバージョンは全て、サブサンプリング又はベクトルをより大きなものに連結するために、比較的大きなデータ移動範囲を必要とする。これは、図17に示すように、大きなベクトルを作成する別のスタイルでは避けることができる。ベクトルを連結する代わりに、異なるラインからのベクトルの要素がインターリーブされるので、異なるラインからの要素が、畳み込みへの入力の位置で交互になる。畳み込みの出力も交互の位置にある。図11に示すレイヤ1の再編成の場合と同様に、レイヤ1でのこのインターリーブは、タイルプロセッサが畳み込みのためのデータをフェッチする方法によって達成される。
このインターリーブ技術は、データ要素の小さな動きだけを必要とするという利点を有する。なぜなら、これらの要素は、ベクトル幅の約半分ではなく、近くの位置に移動するからである。また、ベクトルを連結するためにデータを大きく動かす必要も無い。図14及び図1に示す入力シャッフルと同様の入力シャッフルを必要とするが、これは単に入力インデックスの形式が異なるだけである。図18は、レイヤ2に対するシャッフルを示している。他のレイヤも同様のスタイルを使用する。これは、レイヤ4でオブジェクトが以前のケースとは異なる順序で検出されることを意味するが、正確性には影響しない。
テストされたCNN画像認識例のインターリーブされた実施形態は、7,170,000サイクル(すなわち、ベースラインの場合の約4.5倍、及び、従来技術のパフォーマンスの195倍)で完了する。データメモリ要件もより小さくなり、以前の最適化されたバージョンでは、256個のレジスタと205個のメモリ位置(スペルレジスタの場合には89個の位置を含む)を使用し、データフローが最適化されたバージョンでは、208個の(流出なし)レジスタと、100個の(共有データのみに対する)メモリ位置が使用される。
図19は、データフロー最適化の利点を示す図である。レイテンシの分布ははるかに厳しく、7サイクルを超えるアクセスは非常に少なく、ベクトルのより広い範囲へのアクセスに起因する第2のピークも無い。アクセスの総数は、これまでに示された全ての中でも最小である。転送の総数は、前の最適化の場合の55,100,000に比べて34,300,000である。画像フレームを処理する反復回数が少なくなるため、ベースラインの場合に必要な37,600,000回の転送よりも少なくなる。
本明細書で提供された説明は、本発明の原理及び実施形態を例示することを意味する。上記の開示が完全に理解されると、当業者には数多くの変形及び修正が明らかになるであろう。何れの請求項も、そのような変形及び修正の全てを包含するように解釈されることが意図されている。

Claims (22)

  1. 二次元画像の特徴を検出するプロセッサ実行方法であって、
    第1画像の画素を表す第1画像データを、並列処理システム内のデータメモリのセットに記憶することであって、前記並列処理システムは、命令パイプラインによって接続された同一の複数のデータプロセッサの行を備え、前記命令パイプラインは、前記複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々へ命令を順次搬送するように構成されており、前記データプロセッサの各々は、前記データメモリのセットの各々のデータメモリを備え前記データメモリの各々は、同一の記憶容量の複数のメモリ領域を含むように分割されており、前記第1画像の連続する垂直スライスを表すデータを、前記並列処理システムの前記データメモリの各隣接メモリ領域に記憶することを含む、ことと、
    前記並列処理システムに接続されたホストプロセッサのメモリに、重み行列のセットを表す重みデータを含む特徴カーネルデータを記憶することと、
    前記第1画像内の複数の選択された画素の各々について、前記選択された画素を含む二次元画素領域に亘って畳み込みのセットを実行することであって、前記畳み込みのセットの各畳み込みは、前記重み行列のセットの各行列を用いて実行される、ことと、前記重み行列の各々について、前記選択された画素に対応する特徴マップ画素を生成するために、各畳み込みの結果に非線形関数を適用することと、
    前記重み行列の各々について、前記特徴マップ画素の全てを含む特徴マップを記憶することであって、前記特徴マップの個別の画素を表すデータを、前記並列処理システムの前記データメモリの各々のメモリ領域に記憶することを含み、特徴マップの各画素について、全ての前記重み行列を用いて生成された前記特徴マップの各々からの前記対応する画素を表すデータが同じメモリ領域に記憶され、前記特徴マップを処理して、特定の特徴又は特徴のクラスが前記第1画像内で検出されたか否かを決定する、ことと、を含む、
    方法。
  2. 前記特徴カーネルデータは、前記重み行列セットの各重み行列に関連するバイアス値を表すバイアスデータをさらに含み、
    前記畳み込みセットの各畳み込みは、前記重み行列セットの各重み行列に関連するバイアス値を用いて実行される、請求項1に記載の方法。
  3. 前記複数の選択された画素の各々について畳み込みのセットを実行することは、前記並列処理システムの隣接するデータプロセッサにおいて前記畳み込みのセットを実行するための命令を順次実行することを含み、
    前記並列処理システムの隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復は、前記第1画像の1つの水平行内の全ての選択された画素に対して前記畳み込みのセットを実行することを含む、請求項1に記載の方法。
  4. 前記複数の選択された画素は、整数サブサンプリング係数nによって定義された画素数だけ、前記第1画像内の水平方向及び垂直方向に離間した画素から構成されている、請求項3に記載の方法。
  5. 前記並列処理システムの隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復は、前記第1画像のn個の水平行内の全ての選択された画素に対して前記畳み込みのセットを実行することを含み、
    前記n個の水平行は、n画素離れた一連の水平行内で隣接する行である、請求項4に記載の方法。
  6. 前記特徴マップを記憶することは、隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復の間に、
    前記第1画像の前記n個の水平行のうち最上位にある選択された画素に対応する特徴マップ画素を、前記並列処理システム内のデータプロセッサの隣接メモリ領域の第1グループに記憶することであって、前記隣接メモリ領域の第1グループは、前記並列処理システムの前記命令パイプラインの先頭に最も近い位置にあるデータプロセッサ内に存在する、ことと、
    前記第1画像の前記n個の水平行の次の下位行で選択された画素に対応する特徴マップ画素を、前記隣接メモリ領域の第1グループに隣接する、隣接メモリ領域の次のグループに記憶することであって、前記隣接メモリ領域の次のグループは、前記並列処理システムの前記命令パイプラインに沿って配置されたデータプロセッサ内に存在する、ことと、
    前記n個の水平行の追加の下位行で選択された画素に対応する特徴マップ画素を、前記並列処理システムの前記命令パイプラインに沿って配置されたデータプロセッサ内の隣接メモリ領域の連続グループに記憶することと、を含む、請求項5に記載の方法。
  7. 前記特徴マップを記憶することは、隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復の間に、
    前記n個の水平行の各々における第1の選択された画素に対応する第1の一連のn個の特徴マップ画素の各々を、前記n個の水平行の最上位から最下位まで順に、前記並列処理システムの前記命令パイプラインの先頭に最も近い位置にある前記データプロセッサの第1メモリ領域から始まる、前記並列処理システム内の前記データプロセッサの各々の隣接メモリ領域に記憶することと、
    前記n個の水平行の各々における第2の選択された画素に対応する第2の一連のn個の特徴マップ画素の各々を、前記n個の水平行の最上位から最下位まで順に、前記第1の一連の特徴マップ画素内の最後の特徴マップ画素を記憶するメモリ領域の直後の前記メモリ領域から始まる、前記並列処理システム内の前記データプロセッサの各々の隣接メモリ領域に記憶することと、
    前記n個の水平行の各々における追加の選択された画素に対応する追加の一連のn個の特徴マップ画素の各々を、前記n個の水平行の最上位から最下位まで順に、直前の一連の特徴マップ画素内の最後の特徴マップ画素を記憶するメモリ領域の直後の前記メモリ領域から始まる、前記並列処理システム内の前記データプロセッサの各々の隣接メモリ領域に記憶することと、を含む、請求項5に記載の方法。
  8. 前記特徴マップを処理して、決定することは、
    前記第1画像内の同じ水平位置を有する選択された画素に対応する特徴マップ画素を表すデータが、前記並列処理システム内の前記データプロセッサの同じメモリ領域内に全て記憶されるように、前記特徴マップ画素を表す前記記憶されたデータを再配置することと、
    各特徴マップ内の複数の選択された特徴マップ画素の各々について、前記選択された特徴マップ画素を含む二次元特徴マップ画素領域に亘って追加の畳み込みのセットを続けて実行することと、を含み、
    前記追加の畳み込みのセットの各畳み込みは、前記ホストプロセッサの前記メモリに記憶された追加の重み行列のセットの各重み行列を用いて実行される、請求項5に記載の方法。
  9. 前記第1画像は、より大きな画像の水平スライスを構成し、
    前記方法は、前記第1画像の最上行を表す第1画像データに対する前記畳み込みのセットの完了に続いて、前記第1画像の前記最上行を表す前記第1画像データを、前に前記第1画像に含まれた前記より大きい画像の最下行の直下の前記より大きな画像の行を表すデータで上書きすることをさらに含む、請求項1に記載の方法。
  10. 二次元画像の特徴を検出するデータ処理システムであって、
    一のデータプロセッサの行であって、前記データプロセッサは、前記複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々に命令を順次搬送するように構成された命令パイプラインによって接続されており、前記データプロセッサの各々は、同一の記憶容量の複数のメモリ領域を含むように分割されたデータメモリを備える、データプロセッサの行と、
    前記データプロセッサの行に接続されたホストプロセッサであって、重み行列のセットを表す重みデータと、前記重み行列のセットの各重み行列のバイアス値を表すバイアスデータとを含む特徴カーネルデータを記憶するように構成されたデータメモリを備え、前記複数のデータプロセッサによって実行される命令と、記憶されたプログラム命令と、をフェッチして前記命令パイプラインに提供するように構成された制御モジュールを含む、ホストプロセッサと、を備え、
    前記プログラム命令は、前記データプロセッサの行によって実行される場合に、
    第1画像を表す第1画像データを、前記複数のデータプロセッサの前記データメモリに記憶するステップであって、前記第1画像の連続する垂直スライスを表すデータを、前記データメモリの各隣接メモリ領域に記憶することを含む、ステップと、
    前記第1画像内の複数の選択された画素の各々について、前記選択された画素を含む二次元画素領域に亘って畳み込みのセットを実行するステップであって、前記畳み込みのセットの各畳み込みは、前記重み行列のセットの各重み行列と、各重み行列に対応するバイアス値と、を用いて実行される、ステップと、
    前記重み行列の各々について、各選択された画素に対応する特徴マップ画素を生成するために、各畳み込みの結果に非線形関数を適用するステップと、
    前記重み行列の各々について、前記特徴マップ画素の全てを含む特徴マップを記憶するステップであって、前記特徴マップの個別の画素を表すデータを、前記データメモリの各々のメモリ領域に記憶することを含み、特徴マップの各画素について、全ての前記重み行列を用いて生成された前記特徴マップの各々からの前記対応する画素を表すデータが同じメモリ領域に記憶される、ステップと、
    前記特徴マップを処理して、特定の特徴又は特徴のクラスが前記第1画像内で検出されたか否かを決定するステップと、を実行するように動作可能である、
    データ処理システム。
  11. 前記制御モジュールは、前記ホストプロセッサ及び前記データプロセッサの行に接続された命令生成ユニットを備え、
    前記命令生成ユニットは、
    前記ホストプロセッサと前記データプロセッサの行との間のインタフェースを提供し、
    前記ホストプロセッサから受け取ったカスタムコンパイラ命令を前記データプロセッサによって実行可能な命令に変換するように構成されている、請求項10に記載のシステム。
  12. 前記複数の選択された画素の各々について前記畳み込みのセットを実行するステップは、前記データプロセッサの行に沿っって隣接するデータプロセッサにおいて前記畳み込みのセットを実行するための命令を順次実行するステップを含み、
    隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復は、前記第1画像の1つの水平行内の全ての選択された画素に対して前記畳み込みのセットを実行するステップを含む、請求項10に記載のシステム。
  13. 前記複数の選択された画素は、整数サブサンプリング係数nによって定義された画素数だけ、前記第1画像内の水平方向及び垂直方向に離間した画素から構成されている、請求項12に記載のシステム。
  14. 前記データプロセッサの行に沿って隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復は、前記第1画像のn個の水平行内の全ての選択された画素に対して前記畳み込みのセットを実行するステップを含み、
    前記n個の水平行は、n画素離れた一連の水平行内で隣接する行である、請求項13に記載のシステム。
  15. 二次元配列のデータに対する処理動作の速度を向上させるプロセッサ実行方法であって、
    第1配列の要素を表す第1配列データを、並列処理システム内のデータメモリのセットにすることであって、前記並列処理システムは、前記複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々に命令を順次搬送するように構成された命令パイプラインによって接続された、複数の同一のデータプロセッサの行を備え、前記データプロセッサの各々は、前記データメモリのセットの各々のメモリを備え、前記データメモリの各々は、同一の記憶容量の複数のメモリ領域を含むように分割されており、前記第1配列の連続する列を表すデータを、前記並列処理システムの前記データメモリの各々の隣接メモリ領域に記憶することを含む、ことと、
    前記第1配列内の複数の選択された要素の各々について、前記選択された要素に対応する出力要素を生成するために、前記選択された要素に対して処理動作を実行することであって、前記複数の選択された要素は、整数サブサンプリング係数nによって定義された要素数だけ、前記第1配列内で水平方向及び垂直方向に離間した要素から構成されており、前記並列処理システムの隣接するデータプロセッサにおいて、前記処理動作を実行するための命令を順次実行することを含み、前記並列処理システムの隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復は、前記第1配列のn個の水平行内の全ての選択された要素に対して前記処理動作を実行することを含み、前記n個の水平行は、n個の要素を隔てた一連の水平行内の隣接する行である、ことと、
    前記出力要素の全てを含む出力配列を記憶することであって、前記並列処理システムの前記データメモリの各々のメモリ領域に前記出力配列の個別の要素を表すデータを記憶することを含む、ことと、を含む、
    方法。
  16. 前記処理動作を実行することは、前記選択された要素を含む二次元要素領域に亘って1回以上の畳み込みを実行することを含み、
    前記1回以上の畳み込みの各々は、前記並列処理システムに接続されたホストプロセッサのデータメモリに記憶された係数行列を用いて実行される、請求項15に記載の方法。
  17. 前記出力配列を記憶することは、隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復の間に、
    前記第1配列の前記n個の水平行のうち最上位にある選択された要素に対応する出力要素を、前記並列処理システム内のデータプロセッサの隣接メモリ領域の第1グループに記憶することであって、隣接メモリ領域の前記第1グループは、前記並列処理システムの前記命令パイプラインの先頭に最も近い位置に存在することと、
    前記第1配列の前記n個の水平行の次の下位行で選択された要素に対応する出力要素を、隣接メモリ領域の前記第1グループに隣接する、隣接メモリ領域の次のグループに記憶することであって、隣接メモリ領域の前記次のグループは、前記並列処理システムの前記命令パイプラインに沿ってさらに配置されたデータプロセッサ内に存在することと、
    前記n個の水平行の追加の下位行で選択された要素に対応する出力要素を、前記並列処理システムの前記命令パイプラインに沿ってさらに配置されたデータプロセッサ内の隣接メモリ領域の連続グループに記憶することと、をさらに含む、請求項15に記載の方法。
  18. 前記出力配列を記憶することは、隣接するデータプロセッサにおいて前記命令を順次実行する単一の反復の間に、
    前記n個の水平行の各々における前記第1の選択された要素に対応する第1の一連のn個の出力要素の各々を、前記n個の水平行の最上位から最下位まで順に、前記並列処理システムの前記命令パイプラインの先頭に最も近い位置にある前記データプロセッサの前記第1メモリ領域から始まる、前記並列処理システム内の前記データプロセッサの各々の隣接メモリ領域に記憶することと、
    前記n個の水平行の各々における前記第2の選択された要素に対応する第2の一連のn個の出力要素の各々を、前記n個の水平行の最上位から最下位まで順に、前記第1の一連の出力要素内の最後の出力要素を記憶する前記メモリ領域の直後の前記メモリ領域から始まる、前記並列処理システム内の前記データプロセッサの各々の隣接メモリ領域に記憶することと、
    前記n個の水平行の各々における追加の選択された要素に対応する追加の一連のn個の出力要素の各々を、前記n個の水平行の最上位から最下位まで順に、直前の一連の出力要素内の最後の出力要素を記憶する前記メモリ領域の直後の前記メモリ領域から始まる、前記並列処理システム内の前記データプロセッサの各々の隣接メモリ領域に記憶することと、をさらに含む、請求項15に記載の方法。
  19. 前記出力配列を記憶した後に、
    前記出力配列の同じ列からの出力要素を表すデータが、前記並列処理システム内の前記データプロセッサの同じメモリ領域内に全て記憶されるように、前記出力要素を表す前記記憶されたデータを再配置することと、
    前記出力配列内の複数の選択された出力要素の各々について、前記選択された出力要素に対して追加の処理動作を続けて実行することと、をさらに含む、請求項15に記載の方法。
  20. 二次元配列のデータに対する処理動作の速度を向上させるデータ処理システムであって、
    一のデータプロセッサの行であって、前記データプロセッサは、前記複数のデータプロセッサのうち第1プロセッサから隣接するデータプロセッサの各々に命令を順次搬送するように構成された命令パイプラインによって接続されており、前記データプロセッサの各々は、同一の記憶容量の複数のメモリ領域を含むように分割されたデータメモリを備える、データプロセッサの行と、
    前記データプロセッサの行に接続されたホストプロセッサであって、前記データプロセッサの行の前記データメモリに記憶された配列データに対する処理動作で使用するための固定データを記憶するように適合されたデータメモリを備え、前記複数のデータプロセッサによって実行される命令と、記憶されたプログラム命令と、をフェッチして前記命令パイプラインに提供するように構成された制御モジュールを含む、ホストプロセッサと、を備え、
    前記プログラム命令は、前記複数のデータプロセッサによって実行される場合に、
    第1配列の要素を表す第1配列データを、前記複数のデータプロセッサの前記データメモリに記憶するステップであって、前記第1配列の連続する列を表すデータを、前記データメモリの各々の隣接メモリ領域に記憶するステップを含む、ステップと、
    前記第1配列内の複数の選択された要素の各々について、前記選択された要素に対応する出力要素を生成するために、前記選択された要素に対して処理動作を実行するステップであって、前記複数の選択された要素は、整数サブサンプリング係数nによって定義された要素数だけ、前記第1配列内の水平方向及び垂直方向に離間した要素から構成されており、前記データプロセッサの行に沿って隣接するデータプロセッサにおいて、前記処理動作を実行するための命令を順次実行するステップを含み、前記データプロセッサの行に沿って隣接するデータプロセッサ内の前記命令を順次実行する単一の反復は、前記第1配列のn個の水平行内の全ての選択された要素に対して前記処理動作を実行するステップを含み、前記n個の水平行は、n個の要素を隔てた一連の水平行内の隣接する行である、ステップと、
    前記出力要素の全てを含む出力配列を記憶するステップであって、前記データプロセッサの行の前記データメモリの各々のメモリ領域に前記出力配列の個別の要素を表すデータを記憶するステップと、を実行するように動作可能である、
    システム。
  21. 前記制御モジュールは、前記ホストプロセッサ及び前記データプロセッサの行に接続された命令生成ユニットを備え、
    前記命令生成ユニットは、
    前記ホストプロセッサと前記データプロセッサの行との間のインタフェースを提供し、
    前記ホストプロセッサから受け取ったカスタムコンパイラ命令を前記データプロセッサによって実行可能な命令に変換するように構成されている、請求項20に記載のシステム。
  22. 前記処理動作を実行するステップは、前記選択された要素を含む二次元要素領域に亘って1回以上の畳み込みを実行するステップを含み、
    前記1回以上の畳み込みの各々は、前記ホストプロセッサの前記データメモリに記憶された係数行列を用いて実行される、請求項20に記載のシステム。
JP2018503485A 2015-07-23 2016-07-23 二次元配列プロセッサの性能向上 Expired - Fee Related JP6771018B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562195921P 2015-07-23 2015-07-23
US62/195,921 2015-07-23
PCT/US2016/043781 WO2017015649A1 (en) 2015-07-23 2016-07-23 Performance enhancement for two-dimensional array processor

Publications (2)

Publication Number Publication Date
JP2018523870A JP2018523870A (ja) 2018-08-23
JP6771018B2 true JP6771018B2 (ja) 2020-10-21

Family

ID=56738200

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018503485A Expired - Fee Related JP6771018B2 (ja) 2015-07-23 2016-07-23 二次元配列プロセッサの性能向上

Country Status (6)

Country Link
US (1) US10303976B2 (ja)
EP (1) EP3326115A1 (ja)
JP (1) JP6771018B2 (ja)
KR (1) KR20180034557A (ja)
CN (1) CN107851214A (ja)
WO (1) WO2017015649A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017214970A1 (en) * 2016-06-17 2017-12-21 Nokia Technologies Oy Building convolutional neural network
US20180005059A1 (en) * 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
EP3526765B1 (en) 2017-02-24 2024-04-17 DeepMind Technologies Limited Iterative multiscale image generation using neural networks
EP3388981B1 (en) * 2017-04-13 2021-09-01 Nxp B.V. Convolutional processing system
US10261903B2 (en) 2017-04-17 2019-04-16 Intel Corporation Extend GPU/CPU coherency to multi-GPU cores
US10331445B2 (en) * 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
CN118194921A (zh) * 2017-10-27 2024-06-14 谷歌有限责任公司 基于关注的图像生成神经网络
US11756083B2 (en) 2018-02-01 2023-09-12 Givewith LLC Social platform promotion system and method
CN110276836A (zh) * 2018-03-13 2019-09-24 幻视互动(北京)科技有限公司 一种可加速特征点检测的方法及mr混合现实智能眼镜
CN108647773B (zh) * 2018-04-20 2021-07-23 复旦大学 一种可重构卷积神经网络的硬件互连系统
EP3769266A4 (en) * 2018-05-08 2021-12-15 Tartan Ai Ltd. PROCESSING ELEMENT FOR NEURAL NETWORK
JP7240657B2 (ja) * 2018-05-15 2023-03-16 Tokyo Artisan Intelligence株式会社 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays
CN109117940B (zh) * 2018-06-19 2020-12-15 腾讯科技(深圳)有限公司 基于卷积神经网络的目标检测方法、装置、终端及存储介质
WO2020003345A1 (ja) * 2018-06-25 2020-01-02 オリンパス株式会社 演算処理装置
US10678548B2 (en) * 2018-08-24 2020-06-09 Apple Inc. Pipelined allocation for operand cache
US11868875B1 (en) * 2018-09-10 2024-01-09 Amazon Technologies, Inc. Data selection circuit
US11562229B2 (en) * 2018-11-30 2023-01-24 Macronix International Co., Ltd. Convolution accelerator using in-memory computation
US11551069B2 (en) * 2018-12-31 2023-01-10 SK Hynix Inc. Processing system
US10445611B1 (en) * 2019-01-25 2019-10-15 StradVision, Inc. Method for detecting pseudo-3D bounding box to be used for military purpose, smart phone or virtual driving based-on CNN capable of converting modes according to conditions of objects and device using the same
US12014505B2 (en) 2019-01-31 2024-06-18 Samsung Electronics Co., Ltd. Method and apparatus with convolution neural network processing using shared operand
TWI765336B (zh) * 2019-10-08 2022-05-21 國立清華大學 適用於卷積神經網路之記憶體優化實現之區塊式推論方法及其系統
CN112684977B (zh) * 2019-10-18 2024-05-28 旺宏电子股份有限公司 存储器装置及其存储器内计算方法
CN111680446B (zh) * 2020-01-11 2022-11-15 哈尔滨理工大学 一种基于改进多粒度级联森林的滚动轴承剩余寿命预测方法
US20210232902A1 (en) * 2020-01-23 2021-07-29 Spero Devices, Inc. Data Flow Architecture for Processing with Memory Computation Modules
CN113313228B (zh) * 2020-02-26 2022-10-14 杭州知存智能科技有限公司 数据缓存电路和方法
CN112001872B (zh) 2020-08-26 2021-09-14 北京字节跳动网络技术有限公司 信息显示方法、设备及存储介质
JP7451453B2 (ja) * 2021-03-15 2024-03-18 株式会社東芝 畳み込み演算処理装置および畳み込み演算処理システム
CN115601223B (zh) * 2022-09-08 2023-08-04 重庆位图信息技术有限公司 一种图像预处理装置、方法和芯片

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129092A (en) 1987-06-01 1992-07-07 Applied Intelligent Systems,Inc. Linear chain of parallel processors and method of using same
US6948050B1 (en) 1989-11-17 2005-09-20 Texas Instruments Incorporated Single integrated circuit embodying a dual heterogenous processors with separate instruction handling hardware
JPH0769955B2 (ja) * 1993-03-26 1995-07-31 株式会社日立製作所 画像処理プロセッサ
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5682208A (en) * 1994-10-31 1997-10-28 Intel Corporation Motion estimation with efficient block matching
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
US20050257026A1 (en) 2004-05-03 2005-11-17 Meeker Woodrow L Bit serial processing element for a SIMD array processor
US20080235490A1 (en) 2004-06-18 2008-09-25 Anthony Mark Jones System for configuring a processor array
US7471844B2 (en) * 2004-12-27 2008-12-30 Intel Corporation Method, apparatus and system for multi-feature programmable tap filter image processing
US8024549B2 (en) 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements
US8878860B2 (en) 2006-12-28 2014-11-04 Intel Corporation Accessing memory using multi-tiling
JP5101128B2 (ja) 2007-02-21 2012-12-19 株式会社東芝 メモリ管理システム
JP5522893B2 (ja) * 2007-10-02 2014-06-18 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
JP5121506B2 (ja) * 2008-02-29 2013-01-16 キヤノン株式会社 画像処理装置、画像処理方法、プログラム及び記憶媒体
CN102132554A (zh) * 2008-06-20 2011-07-20 惠普开发有限公司 用于高效视频处理的方法和系统
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
JP5358315B2 (ja) * 2009-06-24 2013-12-04 本田技研工業株式会社 並列計算装置
US10078620B2 (en) * 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9183614B2 (en) * 2011-09-03 2015-11-10 Mireplica Technology, Llc Processor, system, and method for efficient, high-throughput processing of two-dimensional, interrelated data sets
CN103019656B (zh) * 2012-12-04 2016-04-27 中国科学院半导体研究所 可动态重构的多级并行单指令多数据阵列处理系统
WO2015078018A1 (en) * 2013-11-30 2015-06-04 Xiaoou Tang Method and system for face image recognition
CN104143102B (zh) * 2014-08-05 2017-08-11 南京邮电大学 在线图像数据处理方法

Also Published As

Publication number Publication date
KR20180034557A (ko) 2018-04-04
WO2017015649A1 (en) 2017-01-26
US20170024632A1 (en) 2017-01-26
US10303976B2 (en) 2019-05-28
CN107851214A (zh) 2018-03-27
EP3326115A1 (en) 2018-05-30
JP2018523870A (ja) 2018-08-23

Similar Documents

Publication Publication Date Title
JP6771018B2 (ja) 二次元配列プロセッサの性能向上
US11631239B2 (en) Iterative spatio-temporal action detection in video
US11775836B2 (en) Hand pose estimation
US11475542B2 (en) Neural network system with temporal feedback for adaptive sampling and denoising of rendered sequences
US11557022B2 (en) Neural network system with temporal feedback for denoising of rendered sequences
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
Mittal A survey of accelerator architectures for 3D convolution neural networks
US11328173B2 (en) Switchable propagation neural network
KR101298393B1 (ko) 그래픽 처리 유닛 상에서 콘볼루션 신경망을 트레이닝하는방법
US10762425B2 (en) Learning affinity via a spatial propagation neural network
CN112102329A (zh) 使用一个或更多个神经网络进行细胞图像合成
Nasse et al. Face detection using gpu-based convolutional neural networks
CN102509071B (zh) 光流计算系统和方法
Zhang et al. Efficient scan-window based object detection using GPGPU
CN115803754A (zh) 用于在神经网络中处理数据的硬件架构
CN110766127B (zh) 神经网络计算专用电路及其相关计算平台与实现方法
US11568323B2 (en) Electronic device and control method thereof
Cui et al. Real-time stereo vision implementation on Nvidia Jetson TX2
Gurcan et al. Heterogeneous CPU–GPU tracking–learning–detection (H-TLD) for real-time object tracking
US20200409717A1 (en) Neural network operation reordering for parallel execution
US11861811B2 (en) Neural network system with temporal feedback for denoising of rendered sequences
CN105160349B (zh) 一种基于GPU平台的Haar检测目标方法
Vemulapati et al. ORB-based SLAM accelerator on SoC FPGA
Jang et al. Resource-efficient and high-throughput vlsi design of global optical flow method for mobile systems
CN114612513A (zh) 一种基于fpga的图像金字塔光流值计算方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190328

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200424

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200817

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: 20200901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200928

R150 Certificate of patent or registration of utility model

Ref document number: 6771018

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees