JP2021511576A - ディープラーニングアクセラレータシステム及びその方法 - Google Patents
ディープラーニングアクセラレータシステム及びその方法 Download PDFInfo
- Publication number
- JP2021511576A JP2021511576A JP2020538896A JP2020538896A JP2021511576A JP 2021511576 A JP2021511576 A JP 2021511576A JP 2020538896 A JP2020538896 A JP 2020538896A JP 2020538896 A JP2020538896 A JP 2020538896A JP 2021511576 A JP2021511576 A JP 2021511576A
- Authority
- JP
- Japan
- Prior art keywords
- data
- switch
- array
- processing element
- machine learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
- H04L12/40013—Details regarding a bus controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Neurology (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
Abstract
本開示は、機械学習アクセラレータシステム、及び機械学習アクセラレータシステムを用いてデータを移送する方法に関する。機械学習アクセラレータシステムは、スイッチノードのアレイと処理要素のアレイとを含むスイッチネットワークを含んでもよい。処理要素のアレイの各処理要素は、スイッチノードのアレイのスイッチノードに接続されており、スイッチノードを介して移送可能なデータを生成するように構成されている。方法は、スイッチノードを用いてデータソースから入力データを受信することと、スイッチノードに接続される処理要素を用いて入力データに基づいて出力データを生成することとを含んでもよい。方法は、スイッチノードを用いて宛先処理要素に生成出力データを移送することを含んでもよい。
Description
関連出願の相互参照
[001] この出願は、「Deep Learning Accelerator Method Using a Light Weighted Mesh Network with 2D Processing Unit Array」と称する2018年1月24日に出願の米国仮特許出願第62/621,368号への優先権に基づいており、この優先権を主張しており、その内容全体を参照により本明細書に引用する。
[001] この出願は、「Deep Learning Accelerator Method Using a Light Weighted Mesh Network with 2D Processing Unit Array」と称する2018年1月24日に出願の米国仮特許出願第62/621,368号への優先権に基づいており、この優先権を主張しており、その内容全体を参照により本明細書に引用する。
背景
[002] 事業単位にわたるニューラルネットワークベースのディープラーニングアプリケーションの急激な増加に伴って、商品の中央処理装置(CPU)/図形処理ユニット(GPU)ベースのプラットフォームは、性能、電力効率、及び経済的スケーラビリティの点で、増え続ける計算要求を支援する適切な計算基板ではない。ニューラルネットワークベースのディープラーニングアプリケーションを高速化するニューラルネットワークプロセッサの開発は、既存の集積チップ(IC)製造業者、スタートアップ企業、及び大きいインターネット企業を含む多くの事業部門にわたって、大幅に進展している。
[002] 事業単位にわたるニューラルネットワークベースのディープラーニングアプリケーションの急激な増加に伴って、商品の中央処理装置(CPU)/図形処理ユニット(GPU)ベースのプラットフォームは、性能、電力効率、及び経済的スケーラビリティの点で、増え続ける計算要求を支援する適切な計算基板ではない。ニューラルネットワークベースのディープラーニングアプリケーションを高速化するニューラルネットワークプロセッサの開発は、既存の集積チップ(IC)製造業者、スタートアップ企業、及び大きいインターネット企業を含む多くの事業部門にわたって、大幅に進展している。
[003] 既存のニューラルネットワーク処理ユニット(NPU)又はテンソル処理ユニット(TPU)は、プログラマブル決定性実行パイプラインを特徴とする。このパイプラインの重要な部分は、256×256の8ビット乗算器−累算器ユニット(MAC)と24メビバイト(MiB)メモリバッファとを有する行列ユニットを含んでもよい。しかし、半導体技術が7nmノードの方へ進むにつれて、トランジスタ密度は、10Xを超えて増加する見込みである。このような構成において、効率的なデータ転送を可能にするには、より大きい課題を潜在的に引き起こす、この行列ユニットのサイズ及びバッファサイズの増大を必要とすることがある。
概要
[004] 本開示は、機械学習アクセラレータシステム、及び機械学習アクセラレータシステムでデータを交換する方法に関する。機械学習アクセラレータシステムは、スイッチノードのアレイと処理要素のアレイとを含むスイッチネットワークを含んでもよい。処理要素のアレイの各処理要素は、スイッチノードのアレイのうちの1つのスイッチノードに接続されてもよく、スイッチノードを介して移送可能なデータを生成するように構成されてもよい。生成データは、宛先処理要素の位置、宛先処理要素内の記憶位置、及び生成されたデータに関する情報を含む1つ又は複数のデータパケットで移送されてもよい。
[004] 本開示は、機械学習アクセラレータシステム、及び機械学習アクセラレータシステムでデータを交換する方法に関する。機械学習アクセラレータシステムは、スイッチノードのアレイと処理要素のアレイとを含むスイッチネットワークを含んでもよい。処理要素のアレイの各処理要素は、スイッチノードのアレイのうちの1つのスイッチノードに接続されてもよく、スイッチノードを介して移送可能なデータを生成するように構成されてもよい。生成データは、宛先処理要素の位置、宛先処理要素内の記憶位置、及び生成されたデータに関する情報を含む1つ又は複数のデータパケットで移送されてもよい。
[005] 本開示は、機械学習アクセラレータシステムでデータを移送する方法を提供する。方法は、スイッチネットワークにおけるスイッチノードのアレイのうちの1つのスイッチノードを用いて、データソースから入力データを受信することを含んでもよい。方法は、当該スイッチノードに接続され、処理要素のアレイの一部である処理要素を用いて、入力データに基づいて出力データを生成することと、当該スイッチノードを用いて、スイッチネットワークを介して処理要素のアレイのうちの1つの宛先処理要素に、生成された出力データを移送することとを含んでもよい。
[006] 幾つかの開示の実施形態と一致して、上述の方法を実行する少なくとも1つのプロセッサによって実行可能な命令のセットを含むコンピュータ可読記憶媒体が提供される。
[007] 他の開示の実施形態と一致して、非一時的コンピュータ可読記憶媒体は、少なくとも1つの処理デバイスによって実行されかつ上述の方法を実行するプログラム命令を記憶してもよい。
図面の簡単な説明
[008] 本開示の実施形態及び様々な態様を、下記の詳細な説明及び添付図面で例示する。図面に示す様々な特徴は、原寸に比例して描かれていない。
[008] 本開示の実施形態及び様々な態様を、下記の詳細な説明及び添付図面で例示する。図面に示す様々な特徴は、原寸に比例して描かれていない。
詳細な説明
[018] 例示的な実施形態について詳細に説明し、その例は添付図面で例示される。下記の説明は、特に指示がない限り、異なる図面における同じ番号が同じ又は同様の要素を表す添付図面を参照する。例示的な実施形態の下記の説明に記載の実装形態は全て、本発明と一致する実装形態を表すとは限らない。代わりに、実装形態は、添付の特許請求の範囲に記載のような本発明に関する態様と一致する装置及び方法の例に過ぎない。
[018] 例示的な実施形態について詳細に説明し、その例は添付図面で例示される。下記の説明は、特に指示がない限り、異なる図面における同じ番号が同じ又は同様の要素を表す添付図面を参照する。例示的な実施形態の下記の説明に記載の実装形態は全て、本発明と一致する実装形態を表すとは限らない。代わりに、実装形態は、添付の特許請求の範囲に記載のような本発明に関する態様と一致する装置及び方法の例に過ぎない。
[019] 上述のように、従来のアクセラレータは、幾つかの欠点を有する。例えば、従来の図形処理ユニット(GPU)は、全命令セットを有する数千のシェーダコア、作業の動的スケジューラ、及び複雑なメモリ階層を特徴とすることがあり、大量の消費電力、及びディープラーニング作業負荷に対する余分な作業を引き起こすことがある。
[020] 従来のデータ処理ユニット(DPU)は、データフローベースの粗粒度再構成可能アーキテクチャ(CGRA)を特徴とすることがある。このCGRAを、32×32クラスタのメッシュとして構成してもよく、各クラスタを、16個のデータフロー処理要素(PE)として構成してもよい。データを隣に直接渡すPEによって、このメッシュを介してデータを渡してもよい。これは、データフローを非効率的にして、計算に集中する代わりに、データを渡すのに数サイクルを費やすようにPEに要求することがある。
[021] 本発明の実施形態は、従来のアクセラレータのこれらの問題を克服する。例えば、実施形態は、軽量のスイッチネットワークを提供し、これによって、PEが計算に集中することができる。更に、計算及び記憶資源を、多くのPEにわたって分配する。二次元メッシュ接続を用いて、PEの間でデータを伝達してもよい。ソフトウェアは、ニューラルネットワークの作業負荷及びデータをPEのアレイに柔軟に分割して、それに応じてデータフローをプログラム化することができる。同様な理由で、より多くの作業及びデータをまとめることの難しさを増すことなく、追加資源を追加するのが容易である。
[022] 図1は、開示の実施形態による例示的なディープラーニングアクセラレータシステムアーキテクチャ100を例示する。この開示のコンテキストにおいて、ディープラーニングアクセラレータシステムを、機械学習アクセラレータと呼んでもよい。ここで、機械学習及びディープラーニングを交換可能に使用してもよい。図1に示すように、アクセラレータシステムアーキテクチャ100は、オンチップ通信システム102、ホストメモリ104、メモリ制御器106、直接メモリアクセス(DMA)ユニット108、ジョイントテストアクショングループ(JTAG)/テストアクセスエンド(TAP)制御器110、周辺インターフェース112、バス114、グローバルメモリ116などを含んでもよい。オンチップ通信システム102は、通信データに基づいてアルゴリズム演算を実行することができることが分かる。更に、アクセラレータシステムアーキテクチャ100は、メインメモリとしての機能を果たすためにオンチップメモリブロック(例えば、8GBの第二世代高帯域幅メモリの4ブロック(HBM2))を有するグローバルメモリ116を含んでもよい。
[023] オンチップ通信システム102は、グローバルマネージャ122、及び複数の処理要素124を含んでもよい。グローバルマネージャ122は、1つ又は複数の処理要素124と連係するように構成されている1つ又は複数のタスクマネージャ126を含んでもよい。各タスクマネージャ126を、ニューラルネットワークにシナプス/ニューロン回路を与える処理要素124のアレイと関連付けてもよい。例えば、図1の処理要素の最上層は、ニューラルネットワークに対する入力層を表す回路を提供する一方、処理要素の第2層は、ニューラルネットワークの1つ又は複数の隠れ層を表す回路を提供してもよい。図1に示すように、グローバルマネージャ122は、処理要素124の2つのアレイと連係するように構成されている2つのタスクマネージャ126を含んでもよい。幾つかの実施形態において、アクセラレータシステムアーキテクチャ100を、ニューラルネットワーク処理ユニット(NPU)アーキテクチャ100と呼んでもよい。
[024] 処理要素124は、1つ又は複数の処理要素を含んでもよく、各処理要素は、グローバルマネージャ122の制御下で通信データに関する1つ又は複数の演算(例えば、乗算、加算、乗累算など)を実行するように構成されている1つ又は複数の処理ユニットを含む単一命令多重データ(SIMD)アーキテクチャを含む。通信データパケットに対して操作を実行するために、処理要素124は、コア及びメモリバッファを含んでもよい。各処理要素は、任意の数の処理ユニットを含んでもよい。幾つかの実施形態において、処理要素124を、タイルなどと考えてもよい。
[025] ホストメモリ104は、ホストCPUのメモリなどのオフチップメモリであってもよい。例えば、ホストメモリ104は、ダブルデータレートの同期ダイナミックランダムアクセスメモリ(DDR−SDRAM)のメモリなどであってもよい。より高いレベルのキャッシュとしての機能を果たす、1つ又は複数のプロセッサ内に集積されたオンチップメモリと比較して、より低いアクセス速度を有する大量のデータを記憶するようにホストメモリ104を構成してもよい。
[026] メモリ制御器106は、グローバルメモリ116内でメモリブロック(例えば、HBM2)へのデータの読み書きを管理してもよい。例えば、メモリ制御器106は、外部チップ通信システムから(例えば、DMAユニット108、又は別のNPUに対応するDMAユニットから)、又はオンチップ通信システム102から(例えば、グローバルマネージャ122のタスクマネージャ126によって制御される二次元メッシュを介して処理要素124におけるローカルメモリから)来る読み書きデータを管理してもよい。更に、1つのメモリ制御器を図1に示すが、2つ以上のメモリ制御器をNPUアーキテクチャ100に設けることができることが分かる。例えば、グローバルメモリ116内で各メモリブロック(例えば、HBM2)に対して1つのメモリ制御器があってもよい。
[027] メモリ制御器106は、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始してもよい。メモリ制御器106は、1つ又は複数のプロセッサによって読み書き可能な数個のハードウェアレジスタを含んでもよい。レジスタは、メモリアドレスレジスタ、バイト数レジスタ、1つ又は複数の制御レジスタ、及び他のタイプのレジスタを含んでもよい。これらのレジスタは、ソース、宛先、転送方向(入出力(I/O)デバイスからの読み取り、又はI/Oデバイスへの書き込み)、転送単位のサイズ、1バーストで転送すべきバイト数、及び/又はメモリ制御器の他の典型的な特徴について、ある組み合わせを指定してもよい。
[028] DMAユニット108は、ホストメモリ104とグローバルメモリ116との間のデータの転送を支援してもよい。更に、DMAユニット108は、複数のアクセラレータ間のデータの転送を支援してもよい。DMAユニット108により、オフチップデバイスは、CPU割込みを引き起こすことなく、オンチップ及びオフチップメモリの両方にアクセスすることができる。従って、DMAユニット108は、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始してもよい。DMAユニット108は、メモリアドレスレジスタ、バイト数レジスタ、1つ又は複数の制御レジスタ、及び他のタイプのレジスタを含む、1つ又は複数のプロセッサによって読み書き可能な数個のハードウェアレジスタを含んでもよい。これらのレジスタは、ソース、宛先、転送方向(入出力(I/O)デバイスからの読み取り、又はI/Oデバイスへの書き込み)、転送単位のサイズ、及び/又は1バーストで転送すべきバイト数について、ある組み合わせを指定してもよい。アクセラレータアーキテクチャ100は第2のDMAユニットを含んでいてもよく、第2のDMAユニットは、複数のアクセラレータアーキテクチャがホストCPUを必要とすることなく直接通信できるように、他のアクセラレータアーキテクチャとの間でデータを転送するために使用できることが分かる。
[029] JTAG/TAP制御器110は、システムアドレス及びデータバスへの直接外部アクセスを必要とすることなくアクセラレータへの低オーバヘッドアクセス用のシリアル通信インターフェース(例えば、JTAGインターフェース)を実施する専用デバッグポートを指定してもよい。JTAG/TAP制御器110は、様々な部品のチップ論理レベル及びデバイス性能を示すテストレジスタのセットにアクセスするプロトコルを実施するように構成されているオンチップテストアクセスインターフェース(例えば、TAPインターフェース)を有してもよい。
[030] 周辺インターフェース112(例えば、PCIeインターフェース)は、存在するならば、アクセラレータと他のデバイスとの間の通信を行う(典型的な)チップ間バスとしての機能を果たしてもよい。
[031] バス114は、チップ内バス及びチップ間バスの両方を含む。チップ内バスは、システムアーキテクチャによって必要とされるように、全ての内部構成要素を互いに接続する。全ての構成要素をあらゆる他の構成要素に接続するとは限らない一方で、全ての構成要素は、通信する必要がある他の構成要素と接続されている。チップ間バスは、オフチップメモリ又は周辺機器などの他のデバイスにアクセラレータを接続する。典型的には、周辺インターフェース112(例えば、チップ間バス)がある場合、バス114はチップ内バスにのみ関係するが、幾つかの実装形態では、バス114は専用バス間通信にも関係し得る。
[032] 図1のアクセラレータアーキテクチャ100は、NPUアーキテクチャ(更に後述する)を概ね目的としているが、開示の実施形態は、ディープラーニングなどの幾つかのアプリケーションを高速化する任意のタイプのアクセラレータに適用できることが分かる。このようなチップは、例えば、GPU、ベクトル/行列処理能力を有するCPU、又はディープラーニング用のニューラルネットワークアクセラレータであってもよい。SIMD又はベクトルアーキテクチャは、図形処理及びディープラーニングなどのデータ並列処理を用いた計算デバイスを支援するためによく使用される。
[033] 図2について説明する。図2は、開示の実施形態による例示的なディープラーニングアクセラレータシステム200のブロック図を例示する。ディープラーニングアクセラレータシステム200は、ニューラルネットワーク処理ユニット(NPU)202、NPUメモリ204、ホストCPU208、ホストCPU208と関連付けられたホストメモリ210、及びディスク212を含んでもよい。
[034] 図2に例示するように、NPU202を、周辺インターフェース(例えば、図1の周辺インターフェース112)を介してホストCPU208に接続してもよい。ここで記載のように、ニューラルネットワーク処理ユニット(例えば、NPU202)は、ニューラルネットワーク計算タスクを高速化する計算デバイスであってもよい。幾つかの実施形態において、NPU202を、ホストCPU208のコプロセッサとして使用されるように構成してもよい。
[035] 幾つかの実施形態において、NPU202は、コンパイラ(図示せず)を含んでもよい。このコンパイラは、プログラム、又は1つのプログラミング言語で書かれたコンピュータコードをNPU命令に変換して実行可能プログラムを生成するコンピュータソフトウェアであってもよい。マシニングの応用では、コンパイラは、様々な演算、例えば、前処理、字句解析、構文解析、意味解析、入力プログラムの中間表現への変換、コード最適化、コード生成、又はこれらの組み合わせを実行してもよい。
[036] 幾つかの実施形態において、コンパイラは、1つ又は複数のコマンドをNPU202にプッシュするように構成されているホストユニット(例えば、図2のホストCPU208又はホストメモリ210)上にあってもよい。これらのコマンドに基づいて、タスクマネージャ(例えば、図1のタスクマネージャ126)は、任意の数のタスクを1つ又は複数の処理要素(例えば、図1の処理要素124)に割り当ててもよい。一部のコマンドは、ホストメモリ(例えば、図1のホストメモリ104)からグローバルメモリに命令及びデータをロードするようにDMAユニット(例えば、図1のDMAユニット108)に指示してもよい。次に、ロードされた命令を、対応するタスクに割り当てられた各処理要素124に分散させてもよく、1つ又は複数の処理要素124は、これらの命令を処理してもよい。
[037] 処理要素によって受信された最初の数個の命令は、グローバルメモリから処理要素の1つ又は複数のローカルメモリ(例えば、処理要素のメモリ、又は各能動処理要素に対するローカルメモリ)にデータをロード/記憶するように処理要素に指示することができることが分かる。次に、各処理要素は、命令パイプラインを開始してもよく、命令パイプラインは、ローカルメモリから(例えば、フェッチユニットを介して)命令をフェッチすること、(例えば、命令復号器を介して)命令を復号して(例えば、オペランドに対応する)ローカルメモリアドレスを生成すること、ソースデータを読み取ること、演算を実行する又はロード/記憶すること、及び結果を書き戻すことを含む。
[038] ホストCPU208を、ホストメモリ210及びディスク212と関連付けてもよい。幾つかの実施形態において、ホストメモリ210は、ホストCPU208と関連付けられた統合メモリ又は外部メモリであってもよい。ホストメモリ210は、ローカル又はグローバルメモリであってもよい。幾つかの実施形態において、ディスク212は、ホストCPU208に追加メモリを設けるように構成されている外部メモリを含んでもよい。
[039] 図3Aについて説明する。図3Aは、開示の実施形態による例示的なディープラーニングアクセラレータシステム300を例示する。ディープラーニングアクセラレータシステム300は、スイッチングノード304のアレイと処理要素306のアレイとを含むスイッチネットワーク302、DMAユニット308、制御ユニット314によって制御されるホストCPU310、周辺インターフェース312、高帯域幅メモリ316、及び高帯域幅メモリインターフェース318を含んでもよい。ディープラーニングアクセラレータシステム300は、ここに例示されない他の構成要素を含むことができることが分かる。
[040] 幾つかの実施形態において、スイッチネットワーク302は、スイッチノード304のアレイを含んでもよい。スイッチノード304を、スイッチノード304の二次元(2D)アレイを形成するように配置してもよい。幾つかの実施形態において、図3Aに例示のように、スイッチネットワーク302は、スイッチネットワークにおける各スイッチノード304を、直接隣接するスイッチノード304に接続することができるように、スイッチノードの二次元メッシュ接続を含むスイッチネットワークを含んでもよい。スイッチノード304を、スイッチネットワーク302から及びスイッチネットワーク302へデータを経路指定するように、又はスイッチネットワーク302内でデータを経路指定するように構成してもよい。データを、スイッチネットワーク302の別のスイッチノード304から内部的に、又はDMAユニット308から外部的に受信してもよい。経路指定データは、他の関連構成要素(例えば、ディープラーニングアクセラレータシステム300の別のスイッチノード304又は処理要素306)への受信及び転送データを含んでもよい。幾つかの実施形態において、スイッチノード304は、DMA308、スイッチネットワーク302の処理要素306、及び1つ又は複数の隣接スイッチノード304からデータを受信してもよい。
[041] 図3Aに例示のように、各スイッチノード304を、対応する処理要素306と関連付けてもよい。処理要素306は、図1の処理要素124と同様であってもよい。ディープラーニングアクセラレータシステム300は、スイッチネットワーク302の対応するスイッチノード304に各々が接続する処理要素306の二次元アレイを含んでもよい。データパケット(後述)の形でデータを生成するように、処理要素306を構成してもよい。幾つかの実施形態において、コンピュータ実行可能プログラム、ソフトウェア、ファームウェア、又は事前定義構成に基づいてデータを生成するように、処理要素306を構成してもよい。更に、スイッチノード304にデータを送信するように、処理要素306を構成してもよい。
[042] 幾つかの実施形態において、スイッチノード304の動作状態に基づいて処理要素306に応答するように、スイッチノード304を構成してもよい。例えば、データパケットを経路指定するのにスイッチノード304が使用中である場合、スイッチノード304は、処理要素306からのデータパケットを拒否又は一時的に先送りしてもよい。幾つかの実施形態において、スイッチノード304は、データパケットを再経路指定してもよく、例えば、スイッチノード304は、動作状態又は全システム状態に基づいて、水平パスから垂直パスに、又は垂直パスから水平パスに、データパケットの流れ方向を変更してもよい。
[043] 幾つかの実施形態において、スイッチネットワーク302は、対応する個々の処理要素306に各々が接続するスイッチノード304の二次元アレイを含んでもよい。スイッチノード304は、ある位置から別の位置にデータを転送するように構成してもよい一方、処理要素306は、入力データを計算して出力データを生成するように構成してもよい。計算及び転送資源のこのような分配により、スイッチネットワーク302は、軽量で効率的であることができる。軽量な二次元スイッチネットワークは、とりわけ以下に記載の利点の一部又は全部を有することができる。
(i)単純なスイッチベースの設計。提案された二次元スイッチネットワークは、ネットワーク内のデータフローを制御する単純なスイッチを含む。スイッチノードの使用により、処理要素の二次元アレイの間の2地点間通信を行うことができる。
(ii)高い計算効率。ネットワークのスイッチノード間のデータの交換及び転送を含むデータフロー管理を、ソフトウェア又はファームウェアなどの実行可能プログラムによって実行する。ソフトウェアは、データフローパターン、作業負荷特性、データ通信量などに基づいて、データフローをスケジュールすることができ、効率的なディープラーニングアクセラレータシステムが得られる。
(iii)高性能及び低消費電力。提案された軽量なスイッチネットワークは、全システムのより高い性能を可能にする分散資源割り当てに依拠する。例えば、中央コア又は処理要素ハブの代わりに、計算資源及びデータ記憶資源を処理要素のアレイの間で分配する。単純なメッシュベースの接続により、処理要素間の通信を行うことができる。
(iv)設計の柔軟性及びスケーラビリティ。ソフトウェアは、ニューラルネットワークの作業負荷及びデータを処理要素のアレイに柔軟に分割して、それに応じてデータフローをプログラム化することができる。これにより、計算効率及び全システム効率を維持しながら、追加資源は、より大量のデータを計算することができる。
(v)データ経路指定戦略の柔軟性。提案された二次元スイッチネットワークは、デッドロック検出、輻輳回避、又はデータ衝突管理のための複雑なフロー制御機構を不要とすることができる。メッシュネットワーク及び接続性のために、単純且つ効率的な経路指定戦略を使用することができる。
(vi)ソフトウェア互換性。ソフトウェア又はファームウェアは、実行時の前に、作業負荷、データフローパターン及びデータ記憶の静的解析に基づいて輻輳及びデッドロックを回避するデータパケットを生成するために、処理要素用のタスクをスケジュールすることができる。
(i)単純なスイッチベースの設計。提案された二次元スイッチネットワークは、ネットワーク内のデータフローを制御する単純なスイッチを含む。スイッチノードの使用により、処理要素の二次元アレイの間の2地点間通信を行うことができる。
(ii)高い計算効率。ネットワークのスイッチノード間のデータの交換及び転送を含むデータフロー管理を、ソフトウェア又はファームウェアなどの実行可能プログラムによって実行する。ソフトウェアは、データフローパターン、作業負荷特性、データ通信量などに基づいて、データフローをスケジュールすることができ、効率的なディープラーニングアクセラレータシステムが得られる。
(iii)高性能及び低消費電力。提案された軽量なスイッチネットワークは、全システムのより高い性能を可能にする分散資源割り当てに依拠する。例えば、中央コア又は処理要素ハブの代わりに、計算資源及びデータ記憶資源を処理要素のアレイの間で分配する。単純なメッシュベースの接続により、処理要素間の通信を行うことができる。
(iv)設計の柔軟性及びスケーラビリティ。ソフトウェアは、ニューラルネットワークの作業負荷及びデータを処理要素のアレイに柔軟に分割して、それに応じてデータフローをプログラム化することができる。これにより、計算効率及び全システム効率を維持しながら、追加資源は、より大量のデータを計算することができる。
(v)データ経路指定戦略の柔軟性。提案された二次元スイッチネットワークは、デッドロック検出、輻輳回避、又はデータ衝突管理のための複雑なフロー制御機構を不要とすることができる。メッシュネットワーク及び接続性のために、単純且つ効率的な経路指定戦略を使用することができる。
(vi)ソフトウェア互換性。ソフトウェア又はファームウェアは、実行時の前に、作業負荷、データフローパターン及びデータ記憶の静的解析に基づいて輻輳及びデッドロックを回避するデータパケットを生成するために、処理要素用のタスクをスケジュールすることができる。
[044] 幾つかの実施形態において、DMAユニット308は、図1のDMAユニット108と同様であってもよい。DMAユニット308は、バックボーンを含んでもよく、ディープラーニングアクセラレータシステムは、2つの別々のバスシステムを含んでもよい(例えば、図1のバス114)。一方のバスシステムは、スイッチネットワークのスイッチノード304間の通信を行うことができ、他方のバスシステムは、DMAユニット308とバックボーンとの間の通信を行うことができる。スイッチネットワーク302に出入りするデータのフローを制御及び編成するように、DMAユニット308を構成してもよい。
[045] ディープラーニングアクセラレータシステム300は、ホストCPU310を含んでもよい。幾つかの実施形態において、ホストCPU310を、制御ユニット314と電気的に接続してもよい。更に、ホストCPU310を、周辺インターフェース312及び高帯域幅インターフェース318に接続してもよい。DMAユニット308は、高帯域幅メモリインターフェース318を介してホストCPU310又は高帯域幅メモリ316と通信してもよい。幾つかの実施形態において、高帯域幅メモリ316は、図1に示すディープラーニングアクセラレータシステム100のグローバルメモリ116と同様であってもよい。
[046] 図3Bについて説明する。図3Bは、この開示の実施形態による例示的な処理要素のブロック図を例示する。処理要素306は、他の構成要素として、処理コア320及びメモリバッファ322を含んでもよい。DMAユニット308から、又はスイッチネットワーク302の別の処理要素306から受信される入力データを処理するように、処理コア320を構成してもよい。幾つかの実施形態において、入力データを処理し、データパケットの形で出力データを生成し、生成された出力データパケットを隣接処理要素306に渡すように、処理コア320を構成してもよい。メモリバッファ322は、必要に応じて、ローカルメモリ、グローバル共用メモリ、又はこれらの組み合わせを含んでもよい。入力データ又は出力データを記憶するように、メモリバッファ322を構成してもよい。
[047] 図4について説明する。図4は、本開示の実施形態による例示的なデータパケットを例示する。データパケット400を、宛先位置及びデータ自体に関する情報を含むようにフォーマットしてもよい。幾つかの実施形態において、データパケット400は、宛先位置、及びこの宛先位置に転送されるべきデータ410に関する情報を含んでもよい。宛先位置に関する情報は、スイッチネットワークにおける宛先処理要素306の(X、Y)座標、及びデータオフセットを含んでもよい。幾つかの実施形態において、PEXは、宛先処理要素306のX座標404を含んでもよく、PEYは、宛先処理要素306のY座標406を含んでもよく、PEオフセットは、処理要素306のメモリバッファ322内の位置に関する情報を含んでもよい。例えば、メモリバッファ322が256ビットメモリであり、メモリにおける各行が32ビットである場合、メモリは8行を有する。このような構成において、PEオフセット情報は、データ410が属するメモリ内の宛先行番号を示してもよい。データ通信量、データ転送効率、共用データのタイプなどに基づく1つ又は複数の経路指定戦略を用いて、スイッチネットワーク内のスイッチノード304によって、データパケット400を経路指定してもよい。データの経路指定戦略の幾つかの例について、ここで説明する。必要に応じて他の経路指定戦略を使用することができることが分かる。
[048] 図5は、開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパス500を例示する。転送パス500に沿ってデータを転送することは、図5に例示のように、水平方向にデータパケット502、504、506及び508を転送することを含んでもよい。データパケット502、504、506及び508を、図4に例示のデータパケット400と同じような方法でフォーマットしてもよい。4つのデータパケットだけを例示しているが、ディープラーニングアクセラレータシステムは、データ計算に必要な任意の数のデータパケットを含んでもよい。ディープラーニングアクセラレータシステムの計算作業負荷を、分割して処理要素306に割り当ててもよい。
[049] 幾つかの実施形態において、図5に例示のような水平パイプラインデータ転送は、スイッチネットワークにおいて(X、Y)座標を有するスイッチノード304から(X+i、Y)座標(但し、「i」は正の整数である)を有するスイッチノード304への、データ、又はデータ(例えば、図4のデータ410)を含むデータパケットの転送を意味する。幾つかの実施形態において、宛先スイッチノード304は、(X−i、Y)座標を有してもよい。データパケットの移動は、宛先スイッチノードに応じて、左から右への移動、又は右から左への移動であってもよい。
[050] 一例として、図5は、4つのデータパケット(例えば、異なる線フォーマットを用いて図面中に示されたデータパケット502、50、506及び508)に対するデータ転送経路を例示する。各データパケットに対する宛先位置は、(X+4、Y)である。これを、サイクル0、サイクル1、サイクル2及びサイクル3と呼ばれる4つのサイクルで達成することができる。各サイクルにおいて、1つのスイッチノード304は1つのデータパケットを移動させるだけである。幾つかの実施形態において、宛先スイッチノードにデータパケットを移動させるのに必要なサイクルの数は、特定の方向にデータパケットを移送するのに必要なスイッチノードの数と等しい。幾つかの実施形態において、X方向に沿った行、又はY方向に沿った列におけるスイッチノード304を、ディープラーニングアクセラレータシステムの層と呼んでもよい。
[051] 幾つかの実施形態において、データパケット(例えば、図4のデータパケット400又は図5のデータパケット502)を受信し、処理要素306のメモリバッファ322にデータを記憶するように、スイッチノード304と関連付けられた処理要素306を構成してもよい。データを、受信データパケットのPEオフセットに基づいてメモリバッファ322内に記憶してもよい。
[052] 図6について説明する。図6は、開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパス600を例示する。転送パス600に沿ってデータを転送することは、図6に例示のように、垂直方向にデータパケット602、604及び606を転送することを含んでもよい。データパケット602、604及び606は、図4に例示のデータパケット400と同様であってもよい。
[053] 幾つかの実施形態において、図6に例示のような垂直パイプラインデータ転送は、スイッチネットワークにおいて(X、Y)座標を有するスイッチノード304から(X、Y+i)座標(但し、「i」は正の整数である)を有するスイッチノード304への、データ、又はデータ(例えば、図4のデータ410)を含むデータパケットの転送を意味する。幾つかの実施形態において、宛先スイッチノード304は、(X、Y−i)座標を有してもよい。データパケットの移動は、宛先スイッチノードに応じて、下から上への移動、又は上から下への移動であってもよい。
[054] 図7について説明する。図7は、開示の実施形態によるディープラーニングアクセラレータシステムにおけるデータ転送用の例示的なパス700を例示する。幾つかの実施形態において、処理要素のアレイの処理要素306は、DMAユニット(例えば、図3AのDMAユニット308)又は他のデータソースから外部でデータを受信してもよい。受信データに基づいて、処理要素306は、計算データ、及び計算データに対する宛先位置情報を含むデータパケットを生成してもよい。図7は、水平方向及び垂直方向の両方に転送されるデータパケット702、704、706及び708を示す。このような構成において、2段階の工程を使用してもよい。第1の段階では、宛先スイッチノード304に到達するまで、データパケット702、704、706及び708を、Y座標に沿って垂直方向に転送してもよい。宛先Y座標に到達時に、第2の段階では、宛先スイッチノード304に到達するまで、データパケット702、704、706及び708を、X座標に沿って水平方向に転送してもよい。
[055] 幾つかの実施形態において、実行される前に、又はランタイムの前に、データフローの方向を、ソフトウェアによって判定してもよい。例えば、処理要素306が、計算結果を含む出力データを生成する場合、ソフトウェアは、パイプライン方法で水平データフローを判定してもよく、処理要素306が、入力データを隣接処理要素と共用する場合、ソフトウェアは、パイプライン方法で垂直データフローを判定してもよい。
[056] 図8について説明する。図8は、開示の実施形態によるディープラーニングアクセラレータシステム(例えば、図1のディープラーニングアクセラレータシステム100)でデータを移送する例示的な方法の処理フローチャート800を例示する。この方法は、スイッチノードを用いて内部又は外部データソースからデータを受信することと、処理要素を用いて、受信された入力データに基づいて出力データを生成することと、宛先処理要素に出力データを移送することとを含んでもよい。
[057] ステップ810において、データソースからデータを受信するように、スイッチノード(例えば、図3Aのスイッチノード304)を構成してもよい。データソースは、内部データソース、例えば、スイッチノードのアレイの別のスイッチノード、又は処理要素(例えば、図3Aの処理要素306)であってもよい。幾つかの実施形態において、データソースは、外部データソース、例えば、DMAユニット(例えば、図3AのDMAユニット308)であってもよい。ホストCPU(例えば、図3AのホストCPU310)と二次元スイッチネットワーク(例えば、図3Aのスイッチネットワーク302)との間のデータフローを制御するように、DMAユニットを構成してもよい。幾つかの実施形態において、DMAユニットは、スイッチネットワークの1つ又は複数のスイッチノード304とデータを伝達及び交換してもよい。
[058] DMAユニットは、ホストメモリ(例えば、ホストCPUのローカルメモリ)と高帯域幅メモリ(例えば、図3Aの高帯域幅メモリ316)との間のデータの転送を支援してもよい。更に、複数の処理ユニット間のデータを転送するように、DMAユニットを構成してもよい。幾つかの実施形態において、DMAユニットにより、オフチップデバイスは、CPU割込みを引き起こすことなく、オンチップ及びオフチップメモリの両方にアクセスすることができる。従って、DMAユニットは、メモリアドレスを生成し、メモリ読み取り又は書き込みサイクルを開始してもよい。DMAユニットは、メモリアドレスレジスタ、バイト数レジスタ、1つ又は複数の制御レジスタ、及び他のタイプのレジスタを含む、1つ又は複数のプロセッサによって読み書き可能な数個のハードウェアレジスタを含んでもよい。
[059] 入力データを受信し、受信された入力データ又は出力データを処理要素からスイッチネットワーク内の宛先位置に移送するように、スイッチノードを構成してもよい。メッシュスイッチネットワークにより、二次元アレイにおける処理要素間のポイントツゥーポイント通信を行うことができる。
[060] ステップ820において、処理要素(例えば、図3Aの処理要素306)は、内部で又は外部で受信される入力データに基づいて出力データを生成してもよい。メッシュスイッチネットワークは、処理要素の二次元アレイを含んでもよい。メッシュスイッチネットワークの処理要素の各々を、少なくとも1つのスイッチノードと関連付けてもよい。幾つかの実施形態において、システム設計及び性能要件に基づいて、複数の処理要素を1つのスイッチノードと関連付けてもよい。
[061] 処理要素は、プロセッサコア(例えば、図3Bのプロセッサコア320)及びメモリ(例えば、図3Bのメモリバッファ322)を含んでもよい。出力データを計算して生成するように、プロセッサコアを構成してもよい一方、生成された出力データを記憶するように、メモリバッファを構成してもよい。幾つかの実施形態において、メモリバッファは、出力データを計算するのに必要なデータ及び命令を記憶してもよい。出力データを、データパケット(例えば、図4のデータパケット400)の形で生成して移送してもよい。宛先処理要素の(X、Y)座標、出力データ、及びデータを記憶する必要がある宛先処理要素のメモリバッファ内の位置を含むように、データパケットをフォーマットしてもよい。例えば、データパケットは、PEX、PEY、PEオフセット、及びデータを含んでもよい。ここで、PEXは、宛先処理要素のX座標を示してもよく、PEYは、宛先処理要素のY座標を示してもよく、PEオフセットは、メモリバッファにおけるメモリ空間のビット行アドレスを示してもよい。
[062] 処理要素は、ローカルメモリ又はグローバル共用メモリを含んでもよい。処理要素のプロセッサコア320によって、処理要素のローカルメモリにアクセスしてもよい一方、メッシュスイッチネットワークにおける任意の処理要素の任意のプロセッサコアによって、グローバル共用メモリにアクセスしてもよい。
[063] ステップ830において、処理要素のメモリバッファに記憶される宛先情報に基づいて、生成された出力データ又はデータパケットを宛先処理要素に移送してもよい。1つ又は複数の経路を介して、データを宛先処理要素に移送してもよい。データ移送経路は、メッシュスイッチネットワークにおけるスイッチノードのアレイ又は処理要素のアレイのうち少なくとも1つの事前定義構成に基づいてもよい。ソフトウェア又はファームウェア又はコンピュータ実行可能プログラムは、ランタイムの前に、経路を判定してもよい。
[064] 幾つかの実施形態において、少なくとも、データフローパターン、又はデータフロー通信量、又はデータ量などを静的に解析することによって判定される経路に沿って、データ又はデータパケットを移送してもよい。ソフトウェア(例えば、ホストCPUにおけるコンパイラなど)は、処理要素用のタスクをスケジュールし、処理要素をプログラム化して、輻輳及びデッドロックを回避するデータパケットを生成してもよい。判定経路は、図5に示すような水平パス、又は図6に示すような垂直パス、又は図7に示すような水平パス及び垂直パスの組み合わせであってもよい。必要に応じて、他の経路指定戦略を使用してもよい。
[065] 本実施形態の様々な例は、方法ステップ又は工程の一般的なコンテキストで説明され、それらは、ネットワーク環境でコンピュータによって実行されるコンピュータ実行可能命令(例えば、プログラムコード)を含むコンピュータ可読媒体で具体化されるコンピュータプログラム製品によって1つの態様で実施することができる。コンピュータ可読媒体は、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)など(但し、これらに限定されない)を含む、取り外し可能及び取り外し不可能記憶デバイスを含んでもよい。一般的に、プログラムモジュールは、特定のタスクを実行する、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含んでもよい。コンピュータ実行可能命令、関連データ構造、及びプログラムモジュールは、ここに開示の方法のステップを実行するプログラムコードの例を示す。このような実行可能命令又は関連データ構造の特定の順序は、このようなステップ又は工程に記載の機能を実施するための対応する動作の例を示す。
[066] 上述の明細書において、実装形態によって異なることがある多くの特定の詳細を参照して実施形態が説明されている。記載の実施形態の特定の変更及び修正を行うことができる。他の実施形態は、ここに開示の本発明の明細書及び実行の考察から当業者に明白である。明細書及び例は単に例示的であると考えられ、本発明の真の範囲及び精神は下記の特許請求の範囲によって示されると意図されている。更に、図面に示すステップの順序は、単に例示を目的としていると意図されており、ステップの任意の特定の順序に限定されるように意図されていない。そのようなものとして、当業者は、同じ方法を実施しながら、これらのステップを異なる順序で実行することができることが分かる。
[067] 図面及び明細書において、例示的な実施形態が開示されている。しかし、多くの変更及び修正を、これらの実施形態に行うことができる。従って、特定の用語を使用しているけれども、これらの用語は、限定の目的でなく、単に一般的及び記述的な意味で使用され、実施形態の範囲は、下記の特許請求の範囲によって規定される。
Claims (20)
- スイッチノードのアレイと、
処理要素のアレイと
を含むスイッチネットワークを含む機械学習アクセラレータシステムであって、前記処理要素のアレイの各処理要素は、前記スイッチノードのアレイのうちの1つのスイッチノードに接続されており、前記スイッチノードを介して移送可能なデータを生成するように構成される、
機械学習アクセラレータシステム。 - 前記スイッチノードのアレイのうちの宛先スイッチノードと、前記宛先スイッチノードに接続されている宛先処理要素とを更に含む、請求項1に記載の機械学習アクセラレータシステム。
- 前記生成されたデータは、前記宛先処理要素の位置、前記宛先処理要素内の記憶位置、及び前記生成されたデータに関する情報を含む1つ又は複数のデータパケットで移送される、請求項2に記載の機械学習アクセラレータシステム。
- 前記宛先処理要素の前記位置に関する前記情報は、前記処理要素のアレイ内の前記宛先処理要素の(x、y)座標を含む、請求項3に記載の機械学習アクセラレータシステム。
- 前記スイッチノードのアレイのうちの1つのスイッチノードは、前記スイッチノードのアレイ又は前記処理要素のアレイのうち少なくとも1つの事前定義構成に基づいて、前記スイッチネットワークにおける経路に沿って前記データパケットを移送するように構成される、請求項3又は4に記載の機械学習アクセラレータシステム。
- 前記データパケットは、前記スイッチネットワークにおけるデータフローパターンの解析に基づく経路に沿って移送される、請求項3又は4に記載の機械学習アクセラレータシステム。
- 前記経路は、水平パス、垂直パス、又はこれらのパスの組み合わせを含む、請求項5又は6に記載の機械学習アクセラレータシステム。
- 前記スイッチノードのアレイのうちの1つのスイッチノードは、前記スイッチノードの動作状態に基づいて前記データパケットを受信することを拒否するように構成される、請求項3〜7のいずれか一項に記載の機械学習アクセラレータシステム。
- 前記スイッチノードのアレイのうちの1つのスイッチノードは、前記スイッチノードの動作状態に基づいて前記データパケットの前記経路を変更するように構成される、請求項4〜7のいずれか一項に記載の機械学習アクセラレータシステム。
- 前記処理要素は、
前記データを生成するように構成されるプロセッサコアと、
前記生成されたデータを記憶するように構成されるメモリバッファと
を含む、請求項1〜9のいずれか一項に記載の機械学習アクセラレータシステム。 - 機械学習アクセラレータシステムでデータを移送する方法であって、
スイッチネットワークにおけるスイッチノードのアレイのうちの1つのスイッチノードを用いて、データソースから入力データを受信することと、
前記スイッチノードに接続され、処理要素のアレイの一部である1つの処理要素を用いて、前記入力データに基づいて出力データを生成することと、
前記スイッチノードを用いて、前記スイッチネットワークを介して前記処理要素のアレイのうちの1つの宛先処理要素に前記生成された出力データを移送することと
を含む方法。 - 前記処理要素のアレイ内の1つの宛先処理要素の位置、前記宛先処理要素内の記憶位置、及び前記生成された出力データに関する情報を含む1つ又は複数のデータパケットを形成することを更に含む、請求項11に記載の方法。
- 前記処理要素のアレイ内の前記宛先処理要素のメモリバッファに前記生成された出力データを記憶することを更に含む、請求項12に記載の方法。
- 前記スイッチノードのアレイ又は前記処理要素のアレイの事前定義構成に基づいて、前記スイッチネットワークにおける経路に沿って前記1つ又は複数のデータパケットを移送することを含む、請求項12又は13に記載の方法。
- 前記データパケットを、前記スイッチネットワークにおけるデータフローパターンの解析に基づく前記スイッチネットワークにおける経路に沿って移送する、請求項12又は13に記載の方法。
- 前記経路は、水平パス、垂直パス、又はこれらのパスの組み合わせを含む、請求項14又は15に記載の方法。
- 前記スイッチノードのアレイのうちの1つのスイッチノードは、前記スイッチノードのアレイのうちの前記スイッチノードの動作状態に基づいて前記1つ又は複数のデータパケットの前記経路を変更するように構成される、請求項14〜16のいずれか一項に記載の方法。
- 前記スイッチノードのアレイのうちの1つのスイッチノードは、前記スイッチノードの動作状態に基づいて前記データパケットを受信することを拒否するように構成される、請求項14〜16のいずれか一項に記載の方法。
- 実行可能な命令のセットを記憶する非一時的コンピュータ可読媒体であって、前記命令のセットは、機械学習アクセラレータシステムにデータを移送する方法を実行させるように、前記機械学習アクセラレータシステムの1つ又は複数のプロセッサによって実行可能であり、前記方法は、
処理要素のアレイのうちの1つの処理要素によって受信される入力データに基づいて当該処理要素によって生成される出力データを、スイッチネットワークを介して、前記処理要素のアレイのうちの1つの宛先処理要素に移送する経路指定命令を生成することを含み、前記処理要素のアレイの各処理要素は、前記スイッチネットワークにおけるスイッチノードのアレイのうちの1つのスイッチノードに接続される、
非一時的コンピュータ可読媒体。 - 前記機械学習アクセラレータシステムの1つ又は複数のプロセッサによって実行可能な前記命令のセットは、前記機械学習アクセラレータシステムに、
前記処理要素のアレイ内の1つの宛先処理要素の位置、前記宛先処理要素内の記憶位置、及び前記生成された出力データに関する情報を含む1つ又は複数のデータパケットを形成することと、
前記スイッチノードのアレイ又は前記処理要素のアレイのうち少なくとも1つの事前定義構成に基づいて、前記スイッチネットワークにおける経路に沿って前記1つ又は複数のデータパケットを移送することと
を更に実行させる、請求項19に記載の非一時的コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862621368P | 2018-01-24 | 2018-01-24 | |
US62/621,368 | 2018-01-24 | ||
PCT/US2019/014801 WO2019147708A1 (en) | 2018-01-24 | 2019-01-23 | A deep learning accelerator system and methods thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021511576A true JP2021511576A (ja) | 2021-05-06 |
Family
ID=67299333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020538896A Pending JP2021511576A (ja) | 2018-01-24 | 2019-01-23 | ディープラーニングアクセラレータシステム及びその方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20190228308A1 (ja) |
EP (1) | EP3735638A4 (ja) |
JP (1) | JP2021511576A (ja) |
CN (1) | CN111630505B (ja) |
WO (1) | WO2019147708A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020186518A1 (en) * | 2019-03-21 | 2020-09-24 | Hangzhou Fabu Technology Co. Ltd | Method and apparatus for debugging, and system on chip |
US11640537B2 (en) * | 2019-04-08 | 2023-05-02 | Intel Corporation | Mechanism to perform non-linear functions in a machine learning accelerator |
CN115422284B (zh) * | 2019-08-22 | 2023-11-10 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
CN113424198B (zh) * | 2019-11-15 | 2023-08-29 | 昆仑芯(北京)科技有限公司 | 基于柔性电缆连接的分布式ai训练拓扑 |
US20220114135A1 (en) * | 2020-09-21 | 2022-04-14 | Mostafizur Rahman | Computer architecture for artificial intelligence and reconfigurable hardware |
CN112269751B (zh) * | 2020-11-12 | 2022-08-23 | 浙江大学 | 一种面向亿级神经元类脑计算机的芯片扩展方法 |
CN116974778A (zh) * | 2022-04-22 | 2023-10-31 | 戴尔产品有限公司 | 用于数据共享的方法、电子设备和计算机程序产品 |
US20240028545A1 (en) * | 2022-07-21 | 2024-01-25 | Dell Products L.P. | Application acceleration port interface module embodiments |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5230079A (en) * | 1986-09-18 | 1993-07-20 | Digital Equipment Corporation | Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register |
US6023753A (en) * | 1997-06-30 | 2000-02-08 | Billion Of Operations Per Second, Inc. | Manifold array processor |
US8058899B2 (en) * | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
GB2417105B (en) * | 2004-08-13 | 2008-04-09 | Clearspeed Technology Plc | Processor memory system |
CN101311917B (zh) * | 2007-05-24 | 2011-04-06 | 中国科学院过程工程研究所 | 一种面向粒子模型的多层直连集群并行计算系统 |
US8014387B2 (en) | 2007-08-27 | 2011-09-06 | International Business Machines Corporation | Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture |
WO2010096122A1 (en) * | 2008-10-29 | 2010-08-26 | Adapteva Incorporated | Mesh network |
CN102063408B (zh) * | 2010-12-13 | 2012-05-30 | 北京时代民芯科技有限公司 | 一种多核处理器片内数据总线 |
US8953436B2 (en) * | 2012-09-20 | 2015-02-10 | Broadcom Corporation | Automotive neural network |
US9792252B2 (en) * | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US10833954B2 (en) * | 2014-11-19 | 2020-11-10 | Battelle Memorial Institute | Extracting dependencies between network assets using deep learning |
US10083395B2 (en) * | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
US10148570B2 (en) * | 2015-12-29 | 2018-12-04 | Amazon Technologies, Inc. | Connectionless reliable transport |
US11170294B2 (en) * | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US10332592B2 (en) * | 2016-03-11 | 2019-06-25 | Hewlett Packard Enterprise Development Lp | Hardware accelerators for calculating node values of neural networks |
-
2019
- 2019-01-23 EP EP19744206.4A patent/EP3735638A4/en active Pending
- 2019-01-23 US US16/255,744 patent/US20190228308A1/en active Pending
- 2019-01-23 JP JP2020538896A patent/JP2021511576A/ja active Pending
- 2019-01-23 WO PCT/US2019/014801 patent/WO2019147708A1/en unknown
- 2019-01-23 CN CN201980009631.0A patent/CN111630505B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20190228308A1 (en) | 2019-07-25 |
CN111630505A (zh) | 2020-09-04 |
EP3735638A4 (en) | 2021-03-17 |
WO2019147708A1 (en) | 2019-08-01 |
EP3735638A1 (en) | 2020-11-11 |
CN111630505B (zh) | 2024-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021511576A (ja) | ディープラーニングアクセラレータシステム及びその方法 | |
US11270197B2 (en) | Efficient neural network accelerator dataflows | |
US11436143B2 (en) | Unified memory organization for neural network processors | |
US9606808B2 (en) | Method and system for resolving thread divergences | |
US20210224185A1 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
JP7264897B2 (ja) | メモリ装置及びそれを制御するための方法 | |
US9317296B2 (en) | High level software execution mask override | |
KR101900436B1 (ko) | 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고 | |
US11556756B2 (en) | Computation graph mapping in heterogeneous computer system | |
CN100489830C (zh) | 面向科学计算的64位流处理器芯片 | |
TW202248853A (zh) | 可重組態處理器的資源分配 | |
US20240289132A1 (en) | Programmatically controlled data multicasting across multiple compute engines | |
Nukada | Performance optimization of allreduce operation for multi-gpu systems | |
US11409839B2 (en) | Programmable and hierarchical control of execution of GEMM operation on accelerator | |
US11625279B2 (en) | Read-write page replication for multiple compute units | |
US11544189B2 (en) | System and method for memory management | |
US20230289398A1 (en) | Efficient Matrix Multiply and Add with a Group of Warps | |
CN112906877A (zh) | 用于执行神经网络模型的存储器架构中的数据布局有意识处理 | |
US20200264781A1 (en) | Location aware memory with variable latency for accelerating serialized algorithm | |
US20230237011A1 (en) | Mapping logical and physical processors and logical and physical memory | |
US20240037063A1 (en) | Routing Method Based On A Sorted Operation Unit Graph For An Iterative Placement And Routing On A Reconfigurable Processor | |
US20230126594A1 (en) | Instruction generating method, arithmetic processing device, and instruction generating device | |
US12073317B2 (en) | Method and system for processing a neural network | |
US20240069959A1 (en) | Finite state machine for context switching in a reconfigurable data processor | |
US20230244462A1 (en) | Handling Interrupts from a Virtual Function in a System with a Reconfigurable Processor |