JP6676126B2 - コンピュータシステム、プログラミング方法及び非一時的なコンピュータ読取可能な媒体 - Google Patents

コンピュータシステム、プログラミング方法及び非一時的なコンピュータ読取可能な媒体 Download PDF

Info

Publication number
JP6676126B2
JP6676126B2 JP2018200292A JP2018200292A JP6676126B2 JP 6676126 B2 JP6676126 B2 JP 6676126B2 JP 2018200292 A JP2018200292 A JP 2018200292A JP 2018200292 A JP2018200292 A JP 2018200292A JP 6676126 B2 JP6676126 B2 JP 6676126B2
Authority
JP
Japan
Prior art keywords
gate array
field programmable
programmable gate
array device
logic block
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
JP2018200292A
Other languages
English (en)
Other versions
JP2019139742A (ja
Inventor
▲黄▼冠傑
彭憶亭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quanta Computer Inc
Original Assignee
Quanta Computer Inc
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 Quanta Computer Inc filed Critical Quanta Computer Inc
Publication of JP2019139742A publication Critical patent/JP2019139742A/ja
Application granted granted Critical
Publication of JP6676126B2 publication Critical patent/JP6676126B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)

Description

本発明は、フィールドプログラマブルゲートアレイ装置に関し、特に、深層学習、人工ニューラルネットワーク及び機械学習アプリケーションのフィールドプログラマブルゲートアレイ装置をプログラミングするための装置及び方法に関する。
深層学習アプリケーションの実行には、一般的に、レイヤード・ソフトウェア・スタックが必要であり、使用や管理が比較的に複雑である。深層学習アプリケーションには、ドライバーレスアプリケーション、オブジェクトの検出や認識、及びコンピュータ支援診断システム等があるが、それらに限定されない。従って、ユーザーは、訓練されたモデルに基づく深層学習アプリケーションを開発する場合にも、多種のアプリケーションを支援するために、アーキテクチャ、ライブラリ及びインタフェースのような多くの関連ソフトウェア素子をインストールして呼び出す必要がある。更に、訓練されたモデル又はスタックの如何なる一部を変更する必要がある場合、通常、関連する依頼関係を再構築する必要がある。また、深層学習アプリケーションに組み合わせたソフトウェアスタックがより複雑になるにつれて、追加のコンピューティング負荷が上記のアプリケーションのパフォーマンスに実際に影響する可能性がある。
開発の観点から見れば、複雑なソフトウェアスタックが開発者に負担をかける。例として、現在の開発者は、様々な状況依存型アプリケーション用のための異なるソフトウェアスタックに精通しなければならない。従って、異なる状況を解決できるスタックを開発することは、時間がかかり且つ困難である。パフォーマンスの観点から見れば、余計な計算負荷の原因で、様々な状況依存型アプリケーションに対しては、複雑なソフトウェアは次善であるだけでなく、余計な計算負荷が特定なアプリケーションをより厳しく要求するソフトウェアのスタックにより増加することがある(例えば、多数のレイヤーを含み、レイヤーの各々でより多くの機能を支援する)。
深層学習アプリケーションの実行を最適化するため、従来の解決法として、特殊アプリケーション集積回路(application−specific integrated circuit;ASIC)を利用するものがある。一般的に、特殊アプリケーション集積回路は、特定なタスクを実行するように最適化され、これにより、前記タスクの性能が向上する。しかしながら、上記のように、深層学習モデルのスタック要求には、大きく異なる可能性がある。特殊アプリケーション集積回路は、一般的に、あまり具体的に特定されるので、適用性が制限される。従って、特殊アプリケーション集積回路でも、依然として広範囲のアプリケーションのニーズを解決することができない。
深層学習アプリケーションの実行を最適化するための別の従来の方法としては、フィールドプログラマブルゲートアレイ(field programmable gate array;FPGA)装置を利用するものがある。フィールドプログラマブルゲートアレイ装置は、再プログラムされることができ、様々な訓練されたモデル及びアプリケーションに柔軟に適用されることができるので、開発者により注目される。しかしながら、フィールドプログラマブルゲートアレイ装置の深層学習アプリケーションに対するプログラムは、簡単ではない。従って、深層学習アプリケーションを処理するための開発案は、一般的に限られている。1つの解決策としては、既知のソフトウェアスタックに基づいて深層学習のソフトウェア開発キットを提供するものがある。しかしながら、これにより、上記の議論と実質的に同様であるスタック管理及び計算負担という問題が出る。もう1つの解決策としては、ユーザーが特定な深層学習アプリケーションを支援するためのツールセットを提供する「ターンキー」(turn−key)のアプローチを使用する。しかしながら、このようなアプリケーションに対する限られた支援により、特殊アプリケーション集成回路と同じ問題が発生する。
上記に基づいて、フィールドプログラマブルゲートアレイ装置の利点を十分に利用するために、深層学習アプリケーションのためのフィールドプログラマブルゲートアレイ装置に用いられるプログラミングを単純化するシステム及び方法は、当該技術分野において必要とされている。
本発明の実施例は、プログラミングフィールドプログラマブルゲートアレイ装置に用いられるコンピュータシステム、プログラミング方法及びコンピュータプログラムに関する。例示的なプログラミング方法は、深層学習プログラムに用いられる訓練されたモデルを取る工程と、訓練されたモデルをデザイン抽象コードに転換する工程と、を含む。その後、システムにおけるフィールドプログラマブルゲートアレイ装置は、デザイン抽象コードに基づいてプログラミングされてよい。デザイン抽象コードは、複数の論理ブロック回路を定義するように配置され、複数の論理ブロック回路の各々が複数のモジュールのうちの1つのモジュールを示す。これらのモジュールの各々は、深層学習プログラムの異なるレイヤ間に介在する処理工程を示す。ある実際の操作において、デザイン抽象コードは、フィールドプログラマブルゲートアレイ装置をプログラミングするためのレジスタ転送レベルコードである。
ある実施例において、転換工程は、複数の論理ブロック回路を通るデータフローの指定を含んでよい。次に、デザイン抽象コードは、前記データフローを提供するように、フィールドプログラマブルゲートアレイ装置における複数の論理ブロック回路との互いの接続を指定する。
転換工程は、訓練されたモデルの処理工程を識別し及び各処理工程を前記モジュールのうちの1つと関連させることを含んでもよい。その後、処理工程と関連するモジュールに対応するように論理ブロック回路はコーディングされてよい。
ある実施例において、方法は、プログラミングの前に、付加工程を含んでよい。例として、フィールドプログラマブルゲートアレイ装置の空間がデザイン抽象コードに必要な複数の論理ブロック回路を支持することに不十分であると判断してよい。上記判断があると、プログラミング工程期間内に、代替プログラミングモードでフィールドプログラマブルゲートアレイ装置に用いられてよい。
代替プログラミングモードは、重複の論理ブロック回路を取るように重複操作を実行する論理ブロック回路に対応するデザイン抽象コードを識別することを含む。次に、重複領域のうちの1つ以外の重複領域を削除してよい。次に、前記重複の論理ブロック回路における保留される1つによって重複操作を実行するように、デザイン抽象コードを更新してフィールドプログラマブルゲートアレイ装置を配置してよい。
別の代替プログラミングモードは、システムにおける別の素子によって操作を実行するモジュールを代表する論理ブロック回路に対応するデザイン抽象コードを識別して、再び重複の論理ブロック回路を取ることを含む。次に、デザイン抽象コードからの全ての重複の論理ブロック回路を削除してよい。デザイン抽象コードは、フィールドプログラマブルゲートアレイ装置を配置するように更新されて、他の素子によって重複操作を実行してよい。
他の実施例は、プロセッサ、フィールドプログラマブルゲートアレイ装置及びプロセッサを上記方法に実行させるメモリを含むコンピュータシステムに関する。また、他の実施例は、コンピュータ装置を上記方法に実行させるための非一時的なコンピュータ読取可能な媒体を含む。
実施例による例示的方法を示す工程フロー図である。 実施例によるフィールドプログラマブルゲートアレイのコンバータシステムを模式的に示す。 実施例による対応モデルの直列モジュール及びパラメーターを模式的に示す。 実施例による「完全」のモードでプログラミングされるフィールドプログラマブルゲートアレイ装置を模式的に示す。 図4のフィールドプログラマブルゲートアレイ装置によるシステム模式図である。 実施例による「節約」のモードでプログラミングされるフィールドプログラマブルゲートアレイ装置を模式的に示す。 図6のフィールドプログラマブルゲートアレイ装置によるシステム模式図である。 実施例によるフィールドプログラマブルゲートアレイ装置及び他のプロセッサを例示的に示し、前記フィールドプログラマブルゲートアレイ装置が「混合」のモードでプログラミングされる。 図8のフィールドプログラマブルゲートアレイ装置及び他のプロセッサによるシステム模式図である。 コンピュータシステム実例を示し、前記コンピュータシステムの素子が互いにバスによって電気的に通信する。 チップセット構造を有するコンピュータシステム実例を示し、前記システムが異なる実施例のシステム及び方法の実行に用いられてよい。
添付図面を参照しながら本発明を説明するが、全ての図面において、類似又は同等の素子を明示するために、同じ参照番号を使用する。添付図面は、実際のサイズで描かれたものではなく、単に本発明を説明するためのものである。以下、説明するための実例を参照して、本発明の複数の態様を記述する。理解すべきなのは、挙げられた数多くの特定な細部、関係及び方法は、本発明を全体的に理解させるためのものである。しかしながら、当業者であれば、本発明を1つ又は複数の特定な細部や他の方法で実施できないことを容易に理解することができる。他の例では、本発明を不明瞭にしないように、周知の構造や動作は詳しく示されていない。本発明は、示された行為又はイベントの順序に限定されず、幾つかの行為が異なる順序で及び/又は他の行為又はイベントと併せて行われてもよい。なお、本発明に記載の1つ又は複数の態様又は実施例を実行する場合、示された工程の全てが必要とされるわけではない。
上記のように、フィールドプログラマブルゲートアレイ装置によって深層学習アプリケーションを実行する従来の解決策は、限られており複雑である。上記制限に鑑みて、各実施例は、フィールドプログラマブルゲートアレイ装置において訓練されたモデルを実行可能な新方法に関し、これにより、深層学習に用いられるために一般に従来のフィールドプログラマブルゲートアレイ装置によってプログラミングする解決策に会う複雑さ及び計算上のオーバーヘッド(overhead)という問題の発生が低下する。特に、各実施例は、深層学習アプリケーションに用いられる新たなフィールドプログラマブルゲートアレイコンバータのシステム及び方法に関し、且つそれらを実行する。ここで検討されるシステム及び方法は、訓練されたモデルをレジスタ転送レベル(register−transfer level;RTL)コード又は他のデザイン抽象コードに転換するように配置される。他の抽象設計コードは、Verilog又はOpenCLコードを含んでもよいが、これらに限定されない。デザイン抽象コードは、直接にフィールドプログラマブルゲートアレイ装置の配置に用いられてよい。上記配置によれば、各実施例における新たなフィールドプログラマブルゲートアレイコンバータは、複雑な開発過程を減少し、更に開発者の体験を改善できるだけでなく、使用しようとする対象のフィールドプログラマブルゲートアレイ装置を調整するように、より簡潔なモデルも提供することができる。
図1は、各実施例の方法全体を示す。図1は、訓練されたモデルをフィールドプログラマブルゲートアレイ装置に伝送する例示的な方法100を示す工程フロー図である。方法は、工程102から始まる。工程102において、フィールドプログラマブルゲートアレイ装置に用いられる訓練されたモデルを取得することができる。訓練されたモデルは、如何なるタイプの機械学習モデルであってもよい。以下、幾つかの例として、デシジョンツリーに基づくモデル(decision tree based models)、線形回帰に基づくモデル(linear regression based models)、ニューラルネットワークに基づくモデル(neural network based models)、ベイジアンネットワークに基づくモデル(Bayesian network based models)、支援ベクターマシンに基づくモデル(support vector machine based models)及び最近傍に基づくモデル(nearest neighbor based models)を含むが、これらに限定されない。提供される機械学習モデルは、異なるタイプのモデルの組合せであってよい。また、前記モデルは、如何なるタイプで提供されてもよい。例として、ニューラルネットワークモデルは、AlexNet、GoogleNet、ResNet、DenseNet又は他のニューラルネットワーク形態のタイプのような従来のモデルにより提供されてよい。しかしながら、異なる実施例において、モデルのタイプ及び形態は、上記の説明に限定されない。モデルがある実施例で前処理や訓練が行われてよいが、他の実施例において、訓練されたモデルは普通モデルに必要な全部ファイルを含むので、前処理を必要としない。例として、これらのファイルは、レイヤー数、各レイヤーのタイプ、コア数、コアサイズ等のようなパラメーターのカスタマイズ化されたアーキテクチャを提供するファイル、及び訓練重み等のパラメーターを提供するファイルを含んでよい。
工程102で訓練されたモデルを取った後で、モデルは、工程104でデザイン抽象コードに転換されてよい。工程104は、工程102で取られるモデルをフィールドプログラマブルゲートアレイコンバータシステムに提供して処理することを含む。このフィールドプログラマブルゲートアレイコンバータシステムは、深層学習アプリケーションを実行するシステムの一部、又は1つの完全に独立したシステムであってよい。更に、フィールドプログラマブルゲートアレイコンバータシステムは、ソフトウェア素子、ハードウェア素子、又はソフト・ハードウェア素子の組合せとして実行されてよい。
最後、工程106において、工程104で取られるデザイン抽象コードは、フィールドプログラマブルゲートアレイ装置のプログラミングに用いられてよい。このようなプログラミングは、如何なる既知のフィールドプログラマブルゲートアレイ装置のプログラミング技術により実施されてよい。更に、このようなプログラミングは、深層学習アプリケーションを実行するシステムで実施され、又は1つの完全に独立したシステムで実施されてよい。しかしながら、後の配置が優勢を与えるので、フィールドプログラマブルゲートアレイ装置は、異なるアプリケーションを支援するために、必要に応じて改めてプログラミングすることができる。
図2は、異なる実施例によるフィールドプログラマブルゲートアレイ装置コンバータシステムの1つの例示的な実行を示す。図2に示すように、フィールドプログラマブルゲートアレイコンバータシステム200は、コンパイラ202、デバッガ204及びアナライザ206のような異なる素子を含んでよい。コンパイラ202は、訓練されたモデルをデザイン抽象コードにコンパイル(つまり、転換)するように配置されてよい。デバッガ204は、コンパイラ202の操作に生じるエラーメッセージを開発者にレビューし検索させて、後でフィールドプログラマブルゲートアレイ装置のデザイン抽象コードに対して如何なる必要なデバッグ又は更新を行うことができる。アナライザ206は、診断ツールとして、転換中のモデルのコンパイル時間及び実行時間表現を開発者に分析させることができる。
操作において、コンパイラ202は、フィールドプログラマブルゲートアレイコンバータシステム200のモジュールデータベース208からモジュールを選択するように配置され、モジュールの各々が深層学習操作の特定レイヤーの間に介在する操作工程と関連する。これらのモジュールの各々は、対象のフィールドプログラマブルゲートアレイ装置における操作工程の効率を最適化するように配置される。ある実際の操作において、使用中のモデルのタイプに対してモジュールを最適化してよい。モジュールを下記のように選択する。モデルをフィールドプログラマブルゲートアレイコンバータシステム200に提供する場合、コンパイラ202は、まず、モジュールを直列の操作に分解するように、モデルの組成に対して分析を実施する。次に、コンパイラ202は、モジュールデータベース208の対応する直列の操作から直列のモジュールを識別する。最後、訓練されたモデルに対応する操作を実行できるように、適切なパラメーターをモジュールの各々に接続する。
異なる実行において、モジュールは、畳み込みフィルタを画像に適用する畳み込みモジュール(C)、開始関数を畳み込みモジュールの出力に適用するリニア整流関数モジュール(R)、画像データを異なる範囲にスケールする正規化モジュール(N)、畳み込みモジュールの得られた画像データをダウンサンプリングするプーリングモジュール(P)、畳み込みモジュールの得られた及びプーリングモジュールがダウンサンプリングして得られた特徴に対して分類を実施する完全接続モジュール(F)、訓練を中止しようとするノードを選択するドロップアウトモジュール(dropout module)(D)、入力の値の範囲に基づいて正規化された指数関数Softmaxモジュール(S)により出力を生じる工程と、を含んでよいが、これらのモジュールに限定されない。しかしながら、異なる実施例はこの点で制限されなく、且つ異なる実施例のフィールドプログラマブルゲートアレイコンバータシステムによって上記よりも多く又は少ないモジュールタイプを支援するように配置されてよい。
上記から分かるように、異なるモジュールは、異なる操作を実行する。あるモジュールは、ソフトウェア(アルゴリズム)により最適化され又はハードウェア資源の制限を満たしてよい。例として、畳み込み操作は、数多くのベクトル操作に分解されてよく、各操作の何れも独立して動作することができる。このため、操作を展開して、異なる操作を平行して実行してよい(つまり同じ時間で)。別の実例において、精密度を減少することも、表現効率を改善する好適な方法である。また、重みプルーニング、グループ圧縮及び行列分解は、訓練されたモデルを圧縮して推論を加速するための重要なアルゴリズムレベルの方法である。ある実施例において、ハードウェアにより最適化されてよい。例として、ルックアップテーブルは、計算を実施する代わりに、結果をマップすることができる。
そのため、コンパイル過程は、フィールドプログラマブルゲートアレイ装置によって実行するモジュールのコレクションを直列にする。例として、図3は、例示的な直列モジュール300を示す。説明しやすいために、図3におけるモジュールは、上記に検討されるモジュールに限定される。しかしながら、上記のように、異なる実施例では、上記よりも多く又は少ないモジュールタイプを支援するように配置されてよい。更に、図3に示すように、直列モジュール300におけるモジュールの各々は、1組のパラメーター302における1つのパラメーターと関連してよい。しかしながら、ある実際の操作において、直列モジュール300における一部又は全部のモジュールは、如何なるパラメーターを必要としないことがある。
上記のように、図1に対応して、デザイン抽象コードが生じると、フィールドプログラマブルゲートアレイ装置又は回路ボードに対してプログラミングし、その後でワークロード又はアプリケーションに対する深層学習に用いられてよい。図4は、1つの例示的なプログラミングされたフィールドプログラマブルゲートアレイ装置を示す。図4に示すように、フィールドプログラマブルゲートアレイ装置400は、直列された互いに接続論理ブロックを定義するためのプログラミングされたゲートアレイ402を含む。特に、図4に示すように、ゲートアレイ402における論理ブロックが図3の直列モジュール300に対応する。図3のパラメーター302は、図4の1つ又は複数のレジスタ404にプログラミングされ、必要に応じてゲートアレイ402における論理ブロックと互いに接続してよい。
次に、図5に示すように、プログラミングのフィールドプログラマブルゲートアレイ装置400を使用してよい。図5は、深層学習ワークロードを実行するシステム500のデータフローを模式的に示す。図5に示すように、システムは、中央処理装置502及びフィールドプログラマブルゲートアレイ装置400を含む。操作において、中央処理装置502が深層学習タスクに会う場合、前記タスクがフィールドプログラマブルゲートアレイ装置400に伝送される。次に、フィールドプログラマブルゲートアレイ装置400は、その中のプログラミングされたモデルに基づいて前記タスクを実行する。その後、フィールドプログラマブルゲートアレイ装置400は、結果を中央処理装置502に提供する。
ある実際の操作において、パラメーターは、プログラミングされているフィールドプログラマブルゲートアレイ装置に記憶される必要がない。深層学習タスクを実行する必要がある場合、これらのパラメーターは、フィールドプログラマブルゲートアレイ装置に伝送されてよい。一方、独立したメモリ装置は、フィールドプログラマブルゲートアレイ装置に用いられるパラメーターを記憶するようにフィールドプログラマブルゲートアレイ装置に結合されてよい。
図5は、フィールドプログラマブルゲートアレイ装置400の配置及び過程を示し、両者ともフィールドプログラマブルゲートアレイ装置に基づいて「完全」のモードで操作する仮定である。つまり、モデルは、完全にフィールドプログラマブルゲートアレイ装置で実行されることができる。しかしながら、ある状況で、ハードウェアの制約や制限により、前記配置を達成させることはできない。例として、フィールドプログラマブルゲートアレイ装置のゲートアレイには、フィールドプログラマブルゲートアレイ装置でモデルを実行するための各モジュール及び各モジュールの実例を定義する十分なゲート数がない場合がある。ある例において、タスクを実行するために幾つかのフィールドプログラマブルゲートアレイ装置を直列することは可能である。このような配置において、フィールドプログラマブルゲートアレイ装置の各々は、直列する一部を含み、最後の1つのフィールドプログラマブルゲートアレイ装置は最終の結果を中央処理装置にフィードバックする。しかしながら、他の実例において、ただ複数のフィールドプログラマブルゲートアレイ装置のシステム内に十分な実体空間がない可能性がある。このため、異なる実施例において、これらの障害を克服するために、代わりのプログラミングモデルを提供する。
ある実施例において、可能であれば、フィールドプログラマブルゲートアレイ装置は、「節約」のモードで操作するようにプログラミングされてよい。つまり、モデルを実行するための直列モジュールが重複操作を含むことが必要であれば、重複操作に関するモジュールは、フィールドプログラマブルゲートアレイ装置で改めて使用されてよい。このように配置されるフィールドプログラマブルゲートアレイ装置600を、図6に模式的に示す。
図6に示すように、フィールドプログラマブルゲートアレイ装置600は、直列された互いに接続論理ブロックを定義するためのプログラミングされたゲートアレイ602を含む。特に、図6に示すように、ゲートアレイ602における論理ブロックは、第1組602a及び第2組602bを含む。第1組602a及び第2組602bは、モデルにおける重複の操作に対応する。パラメーターは、1つ又は複数のレジスタ604にプログラミングされて、必要に応じてゲートアレイ602における論理ブロックと互いに接続してよい。フィールドプログラマブルゲートアレイ装置600において、第1組602a及び第2組602bは、必要に応じてそれらの各々の操作を何度も実施するように配置されてよい(図6に示されるループのように)。
次に、図7に示すように、プログラミングのフィールドプログラマブルゲートアレイ装置600を使用してよい。図7は、深層学習ワークロードを実施するシステム700のデータフローを模式的に示す。図7に示すように、システムは、中央処理装置702及びフィールドプログラマブルゲートアレイ装置600を含む。操作において、中央処理装置が深層学習タスクに会う場合、前記タスクは、フィールドプログラマブルゲートアレイ装置600に伝送される。次に、フィールドプログラマブルゲートアレイ装置600は、その中にプログラミングされたモデルに基づいて前記タスクを実行し、必要に応じてタスクを重複する(ループに示されるように)。その後、フィールドプログラマブルゲートアレイ装置600は、結果を中央処理装置702に提供する。
ある実施例において、フィールドプログラマブルゲートアレイ装置の重複操作は異なる形態によって管理されてよいと考えられる。例として、ある実施例において、フィールドプログラマブルゲートアレイ装置は、データがフィールドプログラマブルゲートアレイ装置における適切なモジュールへ流れることを確保するように、ハードワイヤードデータフローを有してよく、これにより、重複操作の正確数を確保することができる。他の実施例において、フィールドプログラマブルゲートアレイ装置の一部のゲートアレイは、データフローの制御や管理用のロジックを定義するように配置されてよい。他の実施例において、前記過程は、中央処理装置によって制御されてよい。つまり、第1回の伝送結果が中央処理装置に提供されて、中央処理装置は、重複操作の数を実行するまで、結果をフィールドプログラマブルゲートアレイ装置に伝送して更なる処理をしてよい。また、上記技術の組合せは、異なる実施例に用いられてよい。
ある実施例において、フィールドプログラマブルゲートアレイ装置は、モジュールをスキップ(skip)又はバイパス(bypass)するように配置されてよい。例として、図6は、フィールドプログラマブルゲートアレイ装置が1回又は複数回のモジュールシーケンス「CRNP」を使用し、次に1回又は複数回のモジュールシーケンス「FRDS」を使用するように配置されることを示す。図4のフィールドプログラマブルゲートアレイ装置は、「バイパス」によって同じ効果が達成される。つまり、図4に示すように、2回のシーケンス「CRNP」を使用した。その後、「FRDS」シーケンスを達成させるために、フィールドプログラマブルゲートアレイ装置400は、前へ「F」、「R」、「D」及び「S」の次の実例にスキップするように配置されてよい。このような配置において、フィールドプログラマブルゲートアレイ装置400は、それらのモジュールがバイパスされる追加パラメーターを制御するように配置されてよい。ある実施例において、重複及びバイパス機能は、同じフィールドプログラマブルゲートアレイ装置で共に実行されてよい。このため、また図4を参照されたい。「CRNP」よりも多い2つの実例を必要とすれば、フィールドプログラマブルゲートアレイ装置400は、必要な機能を提供するために、1つ又は複数の使用可能な実例を重複して配置されてよい。
上記のように、ある実施例において、モデルは、直列された中央処理装置からの入力信号を処理するフィールドプログラマブルゲートアレイ直列装置に記憶されてよく、最後の1つのフィールドプログラマブルゲートアレイ装置は最後の結果を中央処理装置に伝送する。しかしながら、ある実施例において、「混合」のモードが提供される。つまり、必要なフィールドプログラマブルゲートアレイ装置に用いられるモジュールの数及び論理回路ブロックを減少してよく、このようなモジュールがシステムの他の箇所で実行される。例として、システムにおける他のフィールドプログラマブルゲートアレイ装置又はアクセラレータは、このようなモジュールを実行する論理回路ブロックを含むように配置される可能性がある。この場合、フィールドプログラマブルゲートアレイ装置は、他の深層学習タスク装置と互いに組み合わせて使用するように配置されてよい。これを図8及び図9に模式的に示す。
図8は、他のプロセッサ850と組み合わせて使用されるプログラミングされたフィールドプログラマブルゲートアレイ装置800を示す。フィールドプログラマブルゲートアレイ装置800は、直列された互いに接続論理ブロックを定義するためのプログラミングされたゲートアレイ802を含む。パラメーターは、1つ又は複数のレジスタ804に入るようにプログラミングされ、必要に応じてゲートアレイ802における論理ブロックと互いに接続してよい。他のプロセッサ850は、フィールドプログラマブルゲートアレイ装置、アクセラレータ又は他のプロセッサであってもよい。他のプロセッサ850は、ゲートアレイ802の中で論理ブロックの実施できない操作を実行するための論理ブロック852を含んでよい。ある実際の操作において、フィールドプログラマブルゲートアレイ装置800又は他のプロセッサ850における何れの使用不可能な追加の操作を実施するように、追加のフィールドプログラマブルゲートアレイ装置、アクセラレータ又は他のプロセッサを加えてよい。
プログラミングされたフィールドプログラマブルゲートアレイ装置800及び他のプロセッサ850(及び他の如何なる装置)は、図9に示すように使用されてよい。図9は、深層学習ワークロードを実施するシステム900のデータフローを模式的に示す。図9に示すように、システムは、中央処理装置902及び混合処理システム904を含む。操作において、中央処理装置902が深層学習タスクに会う場合、前記タスクは、混合処理システム904に伝送される。タスクが完成すると、混合処理システム904は、結果を中央処理装置902へ提供する。
システム900において、混合処理システム904は、少なくともフィールドプログラマブルゲートアレイ装置800及び他のプロセッサ850(この場合、アクセラレータとして配置される)からなる。しかしながら、上記のように図8に対応して、フィールドプログラマブルゲートアレイ装置800及び他のプロセッサ850は、他の異なる装置と組み合わせて使用するように配置されてよい。このため、図9に示すように、混合処理システム904は、1つ又は複数の追加の装置を含んでよい。
混合処理システム904は、下記のように操作される。中央処理装置902からタスクを受けた後で、タスクが混合処理システム904における1つの素子に伝送される。前記素子は、次に、ある操作を実施して、タスクを混合処理システム904における他の素子に伝送する。タスクが完成するまで、この過程を重複する。次に、タスクの最後操作を完成した素子は、最後結果を中央処理装置902へ伝送してよい。
例として、フィールドプログラマブルゲートアレイ装置800はタスクの第1回の操作を実施してよく、他のプロセッサ850はタスクの追加の操作を実施してよい。タスクが完成した後で、他のプロセッサ850は、次に、タスクを中央処理装置に伝送してよい。タスクが完成していない(つまり、より多くの操作を必要とする)場合、タスクは、タスクを完成する必要に応じて、フィールドプログラマブルゲートアレイ装置800又は混合処理システム904における他の素子に伝送されてよい。
ある実施例において、中央処理装置は、混合処理システムの一部であってよい。つまり、中央処理装置は、ある操作を効率的に実行するロジックを含んでよい。このため、ある例において、データは、全ての操作を完成するように、中央処理装置、フィールドプログラマブルゲートアレイ及び他の素子の間で伝送されてよい。
異なる実施例において、混合処理システムに用いられる異なる素子のパラメーターは、異なる形態で記憶されてよい。ある例において、素子の各々のパラメーターは、各素子と共に記憶されてよい。ある例において、操作を実施する必要がある場合、これらのパラメーターを素子に伝送してよい。これらのパラメーターは、混合オペレーティングシステム内部ソース又は外部ソースから伝送されてよい。例として、パラメーターは、中央処理装置により提供されてよく、一方、独立したメモリ装置は、これらのパラメーターを記憶するように混合処理システムに結合されてよい。
ある実施例において、「混合」及び「節約」のモードを組み合わせて使用してよい。つまり、必要に応じて異なる素子により提供される操作を重複してよい。例として、また図9を参照されたい。フィールドプログラマブルゲートアレイ装置800、他のプロセッサ850又は混合処理システム904における他の如何なる素子実施の操作は、必要に応じて操作を重複してタスクを完成するように配置されてよい。
上記のように、異なる形態によって、重複の操作を管理してよい。例として、混合処理システムを使用するある実施例において、混合オペレーティングシステムの素子は、データが適切な素子に流れ、及び重複操作を実施する正確数を確保するように、素子の間のハードワイヤードデータフローを有してよい。他の実施例において、混合処理システムの1つ又は複数の素子は、制御を定義し及び素子の間のデータフローのロジックを管理するように配置されてよい。他の実施例において、過程は、中央処理装置により制御されてよい。つまり、第1回の伝送結果は、中央処理装置により提供されてよく、且つ中央処理装置は重複操作を実施する数に達するまで結果を混合処理システムに伝送して更なる処理を行う。また、上記技術の組合せは、異なる実施例に用いられてよい。
異なる実施例において、モード選択を自動的に選択することが期待される。つまり、コンパイラは、使用しようとするフィールドプログラマブルゲートアレイ装置を検査し、実行可能なモードを判断して、ユーザによる入力を必要としない適切なモードを選択してよい。例として、コンパイラは、フィールドプログラマブルゲートアレイ装置がモデル全体を収納できない(つまり、「完全」のモードが不可能である)と判断すると、「節約」及び「混合」の1つ又は2つのモードを実行できるかを判断する。2つのモードの何れも可能であれば、コンパイラは、次に、何れのモードが必要な操作に最適な表現を提供するように予期されるかを弁別するために、フィールドプログラマブルゲートアレイ装置及び/又は他の素子を検査するように配置されてよい。一方、コンパイラは、モードを優先的に選択することができる。
ある実施例において、ユーザは、所望又は好みのモードを指定してよい。例として、「完全」のモードが可能であれば、ユーザは、コンパイラがこのモードでフィールドプログラマブルゲートアレイ装置を自動的に使用するように配置されるように指示してよい。他の実例において、ユーザは、ある操作を効果的に実行するためにある素子が既にシステムに存在と意識すれば、混合のモードを要求してもよい。ある例において、ユーザは、利用しようとする既存素子を識別してよい。しかしながら、他の例において、コンパイラは、システムにおける素子を自動的に検出するように配置されてよい。このように、ユーザは、システムの既存機能を利用するように選択してよい。他の実例において、ユーザは、「節約」と「混合」との間に介在する好みのモードを指定してよい。
モード選択の実例は、以下の通りである。コンパイラは、訓練されたモデル、検出された素子(中央処理装置、フィールドプログラマブルゲートアレイ又は図形プロセッサ)、必要なリソース(メモリ及びレジスタ)及びモジュールの各々を実行する一番効率的な方法を分析する。例として、一般的に、畳み込み操作をより効率的に実施するように、図形プロセッサを使用する。このため、コンパイラは、コンピュータシステムの図形プロセッサが使用可能であると検出すると、図形プロセッサによって畳み込み操作を実施するように、混合のモードを選択してよい。他の実例において、コンパイラは、フィールドプログラマブルゲートアレイが実行モデルに必要な1つ又は複数のモジュールの要求に達することができないと判断すると、これらのタスクを実行するように、フィールドプログラマブルゲートアレイを中央処理装置、図形プロセッサ又は他の使用可能なフィールドプログラマブルゲートアレイに組み合わせてよい。
システムに関する上記の限定された細部は、例示的な実施例を説明するが、それらは実施され又は他の形態で使用されてもよく、これは説明のためのものだけである。むしろ、異なる実施例は、上記のより多くの要素を含むシステムに実施されてもよいし、他の形態で使用されてもよい。例示的なシステムは、図10及び図11に対応して示される。しかしながら、異なる実施例は、この例示的なシステムに限定されない。
図10は、コンピュータシステム1000の実例を示し、コンピュータシステムの素子がバス1002によって互いに電気的に通信する。システム(コンピュータシステム)1000は、処理ユニット1030(中央処理装置又はプロセッサ)及びバス(システムバス)1002を含む。バス1002は、メモリ(システムメモリ)1004(例えば、読み出し専用メモリ1006及びランダムアクセスメモリ1008)のような異なるシステム素子をプロセッサ1030に結合する。システム1000は、プロセッサ1030に直接接続、緊密隣接又は一体化される高速バッファメモリ(キャッシュメモリ1028)を含んでよい。システム1000は、メモリ1004及び/又は記憶装置1012からのデータをキャッシュメモリ1028にコピーして、プロセッサ1030により高速にアクセスすることができる。このように、データを待つと共に、キャッシュメモリ1028は、プロセッサ1030の性能を向上させることができる。これら及び他のモジュールは、異なる動作を実施するためにプロセッサ1030を制御するように制御又は配置されてよい。他のシステムメモリ1004も、使用に用いられてよい。メモリ1004は、複数の異なるタイプ且つ異なる性能特徴のメモリを含んでよい。プロセッサ1030は、例えば、記憶装置1012に埋め込まれる第1のモジュール1014、第2のモジュール1016及び第3のモジュール1018のような、如何なる汎用のプロセッサ及びハードウェアモジュール又はソフトウェアモジュールを含んでよい。ハードウェアモジュール又はソフトウェアモジュールは、プロセッサ1030及びソフトウェアの指令が実際プロセッサ設計に結合される専用プロセッサを制御するように配置される。プロセッサ1030は、実際に自己完結型コンピュータシステムであってもよく、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュメモリ等を含む。マルチコアプロセッサは、対称又は非対称であってよい。
プロセッサ1030に加え、他のプロセッサは、システム1000に整合されてよい。例として、図10に示すように、フィールドプログラマブルゲートアレイ1031又は他のプロセッサを提供してよい。図10に示すように、フィールドプログラマブルゲートアレイ1031は、システム1000における他の素子と通信及び対話するように、バス1002に結合されてよい。しかしながら、ある実施例において、フィールドプログラマブルゲートアレイ1031は、システム1000における他の素子に結合されてよい。
ユーザがコンピュータ装置1000と対話できるように、入力構造として入力装置1020を提供する。入力装置1020は、音声用のマイクロホン、ジェスチャー又は画像入力用のタッチスクリーン、キーボード、マウス、モーション入力等を含んでよい。ある実例において、マルチモードシステムにより、ユーザは、システム1000と通信するように、マルチタイプの入力を提供することができる。このような実例において、同様に出力装置1022を提供してよい。通信インターフェース1024は、ユーザによる入力及びシステム出力を監視し管理することができる。例として、ディスプレイ1025によってシステムを出力してよい。
記憶装置1012は、コンピュータがアクセス可能なデータを記憶するための不揮発性メモリであってよい。記憶装置1012は、磁気カセット、フラッシュメモリカード、ソリッドステートメモリ装置、デジタル多用途ディスク、カセット、ランダムアクセスメモリ1008、読み出し専用メモリ1006及びそれらの組み合わせであってよい。
コントローラ1010は、例えばベースボード管理コントローラのような、システム1000における専用のマイクロコントローラ又はプロセッサであってよい。ある例において、コントローラ1010は、スマート管理プラットフォームインターフェースの一部であってよい。また、ある例において、コントローラ1010は、システム1000のマザーボード又はメイン回路ボードに埋め込まれてよい。コントローラ1010は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインターフェースを管理してよい。下記のように、コントローラ1010は、例えばコントローラ又は周辺素子のような異なるシステム装置及び素子(内部及び/又は外部)と通信してよい。
コントローラ1010は、通知、アラート、及び/又はイベントに対する特定な応答を生成し、自動ハードウェア応答プログラム等の指示又はコマンドを生成するように、リモート装置又は素子(例えば、電子メールメッセージ、ウェブメッセージ等)と通信してよい。管理者は、更に、特定なハードウェア応答プログラム又は操作を開始又は実施するように、コントローラ1010のリモートエンドと通信してよい。その操作を更に下記のように説明する。
コントローラ1010は、コントローラ1010の受信するイベント、アラート及び通知を管理及びメンテナンスするように、システムイベント記録コントローラ及び/又は記憶装置を含んでもよい。例として、コントローラ1010又はシステムイベント記録コントローラは、1つ又は複数の装置や素子からのアラート及び通知を受信し、システムイベント記憶素子におけるアラート及び通知をメンテナンスする。
フラッシュメモリ1032は、システム1000に使用され且つ記憶及び/又はデータ伝送に用いられる電子不揮発性コンピュータ記憶媒体又はチップであってよい。フラッシュメモリ1032は、電気的に消去及び/又は改めてプログラミングされることができる。フラッシュメモリ1032は、例として、消去可能プログラマブル読み出し専用メモリ(erasable programmable read−only memory;EPROM)、電子消去可能プログラマブル読み出し専用メモリ(electrically erasable programmable read−only memory;EEPROM)、読み出し専用メモリ、不揮発性ランダムアクセスメモリ又は相補型MOS電界効果トランジスタを含んでよい。システム1000及びファームウェア1034に用いられると指定される1組の配置が初回で電源が入れられる場合、フラッシュメモリ1032は、システム1000の実行するファームウェア1034を記憶してよい。フラッシュメモリ1032は、ファームウェア1034の使用する配置を記憶してもよい。
ファームウェア1034は、例えば拡張可能ファームウェアインターフェース又は統一拡張可能ファームウェアインターフェースのような基本入出力システム又はそれと同等の設備を含んでよい。システム1000が起動するたびに、ファームウェア1034は、逐次プログラムとしてロード又は実行されてよい。ファームウェア1034は、前記組の配置に基づいてシステム1000にあるハードウェアに対して識別、初期化及びテストをしてよい。ファームウェア1034は、システム1000でパワーオンセルフテスト(Power−on−Self−Test;POST)のようなセルフテストを実施してよい。前記セルフテストは、例えばハードディスク、光学読み取り装置、冷却装置、メモリモジュール、拡張カード等の異なるハードウェア素子の機能をテストしてよい。ファームウェア1034は、オペレーティングシステムを記憶するように、メモリ1004、読み出し専用メモリ1006、ランダムアクセスメモリ1008、及び/又は記憶装置1012における領域を処理及び分配してよい。ファームウェア1034は、ブートローダ及び/又はオペレーティングシステムをロードして、システム1000の制御権限をオペレーティングシステムに与えてよい。
システム1000のファームウェア1034は、ファームウェア1034が如何にシステム1000における異なるハードウェア素子を制御するかを定義するファームウェア配置を含んでよい。ファームウェア配置は、システム1000における異なるハードウェア素子の起動順序を決めることができる。ファームウェア1034は、統一拡張可能ファームウェアインターフェースのようなインターフェースを提供してよく、これにより、ファームウェアのデフォルト配置におけるパラメーターと異なる多種類の異なるパラメーターを設置することができる。例として、ユーザ(例えば管理者)は、タイミング及びバスの速度を指定し、システム1000に接続される周辺設備を定義し、ヘルスモニタリング(例えばファン速度及び中央処理装置温度の制限)を設置し及び/又は他の多種類の全体表現及びシステム1000の電気量使用に影響を与える他のパラメーターを提供するために、ファームウェア1034を使用してよい。ファームウェア1034がフラッシュメモリ1032に記憶されるように示すが、当業者であれば、ファームウェア1034が例えばメモリ1004又は読み出し専用メモリ1006のような他のメモリ素子に記憶されることを容易に識別することができる。
システム1000は、1つ又は複数のセンサー1026を含んでよい。1つ又は複数のセンサー1026は、例として、1つ又は複数の温度センサー、ヒートセンサー、酸素センサー、化学センサー、ノイズセンサー、電流センサー、電圧検出器、エアフローセンサー、流量センサー、赤外線温度計、熱流センサー、温度計、高温カウント等を含んでよい。例として、1つ又は複数のセンサー1026は、バス1002及びプロセッサ1030、キャッシュメモリ1028、フラッシュメモリ1032、通信インターフェース1024、ディスプレイ1025、メモリ1004、読み出し専用メモリ1006、ランダムアクセスメモリ1008、コントローラ1010及び記憶装置1012によって通信してよい。1つ又は複数のセンサー1026は、例えば内部集積回路、汎用出力等のような1つ又は複数の異なる方法によりシステムにおける他の素子によって通信されてよい。システム1000における異なるタイプのセンサー(例えば、センサー1026)も、例えば冷却ファン速度、電源状態、オペレーティングシステム状態、ハードウェア状態等のパラメーターをコントローラに知らせてよい。
図11は、上記方法又は操作を実行し、及びグラフィカルユーザインタフェースを生成して表示するためのチップセットアーキテクチャを有するコンピュータシステムの実例を示す。システム(コンピュータシステム)1100は、開示技術を実行するためのコンピュータハードウェア、ソフトウェア及びファームウェアを含んでよい。システム1100は、識別計算を実施するように配置されるソフトウェア、ファームウェア又はハードウェアの多種類の物理及び/又はロジックが異なるリソースを処理することができるプロセッサ1110を含んでよい。プロセッサ1110は、プロセッサ1110の入出力を制御するチップセット1102と通信してよい。このような実例において、チップセット1102は、情報をディスプレイのような出力装置1114に出力し、且つメッセージを記憶装置1116に読み取り書き込むことができる。システム1100は、フィールドプログラマブルゲートアレイ1111のような追加のプロセッサを含んでもよい。フィールドプログラマブルゲートアレイ1111は、フィールドプログラマブルゲートアレイ1111の入出力を制御するように、チップセット1102と通信してよい。しかしながら、他の実施例において、フィールドプログラマブルゲートアレイは、システム1100における他の素子に連結されてよい。
例として、記憶装置1116は、磁気媒体及び固体媒体を含んでよい。チップセット1102は、ランダムアクセスメモリ1118からのデータを読み取って、ランダムアクセスメモリ1118に書き込んでよい。チップセット1102を接合するように、多種類のユーザインターフェース素子1106を接合するためのブリッジ1104を提供してよい。ユーザインターフェース素子1106は、キーボード、マイク、タッチ検出、処理回路及びマウスのようなポインティングデバイスを含んでよい。
チップセット1102は、異なる物理インターフェースを有する1つ又は複数の通信インターフェース1108と接合してよい。このような通信インターフェースは、有線及び無線地域ネットワーク、広帯域無線ネットワーク及びパーソナルエリアネットワークに用いられるインターフェースを含んでよい。更に、機器は、ユーザインターフェース素子1106によるユーザからの入力を受信して、ブラウズ機能のような適切な機能を実行するためにプロセッサ1110によって解釈してよい。
また、チップセット1102がファームウェア1112と通信することができ、電気が入れられる時にファームウェア1112がコンピュータシステム1100により実行されてよい。ファームウェア1112は、1組のファームウェア配置に基づいてシステム1100にあるハードウェアに対して識別、初期化及びテストをしてよい。ファームウェア1112は、システム1100でパワーオンセルフテストのようなセルフテストを実施してよい。前記セルフテストは、異なるハードウェア素子1102−1108の機能をテストしてよい。ファームウェア1112は、オペレーティングシステムを記憶するように、ランダムアクセスメモリ1118における領域を処理及び分配してよい。ファームウェア1112は、ブートローダ及び/又はオペレーティングシステムをロードして、システム1100の制御権限をオペレーティングシステムに与えてよい。ある例において、ファームウェア1112は、ハードウェア素子1102−1110及び1114−1118と通信してよい。ここで、ファームウェア1112は、チップセット1102及び/又は1つ又は複数の他の素子によってハードウェア素子1102−1110及び1114−1118と通信してよい。ある例において、ファームウェア1112は、ハードウェア素子1102−1110及び1114−1118と直接通信してよい。
理解すべきなのは、より優れた処理能力を提供するように、例示したシステム1000及び1100に1つよりも多くのプロセッサ、又はネットワークによって互いに接続されたコンピュータ装置のグループ又はクラスタの一部を有してよい。
明確に説明するために、ある実施例において、本開示は、個別の機能ブロックを含み、機能ブロック、装置及び/又は装置素子を含み、ソフトウェア又はソフトハードウェア組合せの工程又はルーチンとして提示されることがある。
ある実施例において、コンピュータ読取可能な記憶装置、媒体及びメモリは、ビットストリーム等の有線又は無線信号を含んでよい。しかしながら、言及すると、非一時的なコンピュータ読取可能な記憶媒体は、エネルギー、搬送波信号、電磁波、及び信号自体等の媒体を明示的に排除する。
上記実施例の方法によれば、コンピュータ読取可能な媒体記憶又は他の形態によるコンピュータ実行可能命令により実行されてよい。これらの指令は、例として、ある機能又は1組の機能を実施するように、汎用コンピュータ、専用コンピュータ又は専用処理装置を生じ又は他の形態で配置される指令又はデータを含んでよい。一部の使用されるコンピュータリソースは、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例として、アセンブリ言語、ファームウェア又はソースコードのようなバイナリ及び中間フォーマット命令であってよい。
これらの開示による装置実行方法は、ハードウェア、ファームウェア及び/又はソフトウェアを含んでよく、且つ各種類のフォームファクタを採用してよい。これらのフォームファクタの典型例としては、ノートブックコンピュータ、スマート携帯電話、スモールフォームファクタパーソナルコンピュータ、携帯情報端末、ラック装置、スタンドアローン装置等を含んでよい。本文に述べられる機能は、周辺設備又は付加カードに埋め込まれてよい。更なる実例によると、このような機能は、異なるチップにおける回路ボードで実行され、又は個別の装置で異なる過程を実行してよい。
異なる実施例は、広く異なる操作環境で更に実施されてよい。ある例において、1つ又は複数のサーバーコンピュータ、ユーザコンピュータ又は如何なる複数のアプリケーションを操作するためのコンピュータ装置を含んでよい。ユーザ又はクライアント装置は、標準オペレーティングシステムを実行するデスクトップコンピュータ又はノートブックコンピュータ、及びモバイルソフトウェアを実行するハニカム、無線又はハンドヘルド装置のような多種類の汎用コンピュータの如何なる1つを含んでよく、且つ多種類のネットワーク及び情報プロトコルを支援することができる。このようなシステムは、多種類の如何なる多種類の市販使用可能なオペレーティングシステムを実行する多くのワークステーション、及び開発とデータベース管理のような他の既知用途を含むアプリケーションを含んでよい。これらの装置は、仮想端末、シンコンピュータ、ゲームシステム及び他のネットワークによって通信可能な他の装置のような他の電子装置を含んでよい。
実例又はその一部について、ハードウェアで実行される。本開示は、データ信号でロジック機能を実行するように論理ゲートを有するディスクリート論理回路、適切な組合せの論理ゲートを有する特定アプリケーション集成回路、プログラマブルロジックゲートアレイ、フィールドプログラマブルゲートアレイ等のようなプログラマブルハードウェアである技術の1つの又は複数の組合せで実行されてよい。
数多くの実例では、当業者に熟知の少なくとも1つのネットワークを使用し、伝送制御プロトコル/インターネットプロトコル、オープンシステムリンク、ファイル転送プロトコル、ユニバーサルプラグアンドプレイアグリーメント、ネットワークファイルシステム、ネットワークファイル共有システム、AppleTalk等のような多種類の商用利用可能なプロトコルによって通信を支援する。例として、ネットワークは、地域ネットワーク、広域ネットワーク、仮想私設ネットワーク、インターネット、エンタープライズ内部ネットワーク、エンタープライズ外部ネットワーク、公衆交換電話網、赤外線ネットワーク、無線ネットワーク及びそれらの如何なる組合せであってよい。
これらの技術による装置実行方法は、ハードウェア、ファームウェア及び/又はファームウェアを含んでよく、且つ各種類のフォームファクタを採用してよい。これらのフォームファクタの典型例としては、サーバーコンピュータ、ノートブックコンピュータ、スマート携帯電話、スモールフォームファクタパーソナルコンピュータ、パーソナルデジタルアシスタント等を含んでよい。本文に述べられる機能は、周辺設備又は付加カードに埋め込まれてよい。更なる実例によれば、このような機能は、異なるチップにおける回路ボードで実行され、又は個別の装置で異なる過程を実行してよい。
ウェブサーバーを使用する実例において、ウェブサーバーは、ハイパーファイル転送プロトコルサーバー、ファイル転送プロトコルサーバー、共通ゲートウェイインターフェイスサーバー、データサーバー、Java(登録商標)サーバー、及びビジネスアプリケーションサーバーを含む多種類のサーバー又は中間アプリケーションを実行することができる。ユーザ装置の要求に応するように、ウェブサーバは、プログラム又はスクリプトを実行することもできる。例として、ウェブサーバーは、1つ又は複数のネットワークアプリケーションを実行してよい。これらのネットワークアプリケーションは、Java(登録商標)、C、C#又はC++のような何れの1つ又は複数のプログラミング言語、或いはPerl、Python又はTCLのような如何なるコード言語、及びそれらの組合せのコード又はプログラムで実行されてよい。ウェブサーバーは、データベースサーバーを含んでよく、オープンマーケットで市販されるデータベースサーバも含んでよい。
上記のように、サーバーシステムは、多種類のデータ記憶及び他のメモリと記憶媒体を含んでよい。それらは、例えば、1つ又は複数のコンピュータ領域(及び/又は滞在)の記憶媒体、又はネットワークから離れたコンピュータのような複数の位置に滞在してよい。1組の特別な実例において、情報は、当業者に熟知の記憶領域ネットワークに滞在してよい。類似的に、コンピュータ、サーバー又は他のネットワーク装置に属する機能を実施するための如何なる必要のファイルも、状況に応じて領域及び/又はリモートに保存されてよい。システムがコンピュータ化装置を含む場合、このような装置の各々は、バスにより電気的に接続され、且つユニットにより少なくとも1つの中央処理装置、少なくとも1つの入力装置(例えばマウス、キーボード、コントローラ、タッチディスプレイユニット又は押しボタン)、及び少なくとも1つの出力装置(例えばディスプレイデバイス、プリンタ、又はスピーカー)からなるハードウェアユニットを含んでよい。このようなシステムは、ディスクドライブ、光記憶装置、ソリッドステート記憶装置(例えばランダムアクセスメモリ又は読み出し専用メモリ)、モバイルメディアデバイス、メモリカード及びフラッシュメモリカード等のような1つ又は複数の記憶装置を含んでよい。
コード又はコードの一部を含むための記憶媒体及びコンピュータ読取可能な媒体は、記憶媒体及びコンピュータ媒体を含む如何なる当該技術分野に既知又は使用された適切な媒体を含んでよい。記憶媒体及びコンピュータ媒体は、データ又は情報を記憶及び/又は伝送するための移動及び非移動媒体を含んでよいが、これらの媒体を限定する意図がない。移動及び非移動媒体は、ランダムアクセスメモリ、読み出し専用メモリ、消去可能プログラマブル読み出し専用メモリ、電子消去可能プログラマブル読み出し専用メモリ、フラッシュメモリ又は他のメモリ技術、ディスク読み出し専用メモリ、デジタル多機能ディスク又は他の光学記憶、磁気カセット、テープ、ディスク記憶装置又は他のディスク記憶装置を含む。移動又は非移動媒体は、システム装置のアクセス可能な所望の情報を記憶することに用いられてよい。データ及び情報は、コンピュータ読取可能な指令、データ構造、プログラムモジュール又は他のデータを含んでよい。本明細書で提供される技術及び教示に基づいて、当業者は、本開示の様々な態様が他の方法及び/又は方法で実施されてよいことを理解することができる。
従って、明細書及び図面は、限定ではなく、説明するためのものべきである。しかしながら、特許請求の範囲に記載の本発明のより広い精神及び範囲から逸脱せずに、様々な修正や変更を行うことができる。
100 方法
102、104、106 工程
200 フィールドプログラマブルゲートアレイコンバータシステム
202 コンパイラ
204 デバッガ
206 アナライザ
208 モジュールデータベース
300 直列モジュール
302 パラメーター
400、600、800 フィールドプログラマブルゲートアレイ装置
402 ゲートアレイ
404 レジスタ
500、700、900、1000、1100 システム
502、702、902 中央処理装置
602 ゲートアレイ
602a 第1組
602b 第2組
604 レジスタ
802 ゲートアレイ
804 レジスタ
850 他のプロセッサ
852 論理ブロック
904 混合処理システム
1002 バス
1004 メモリ
1006 読み出し専用メモリ
1008、1118 ランダムアクセスメモリ
1010 コントローラ
1012、1116 記憶装置
1014、1016、1018 モジュール
1020 入力装置
1022、1114 出力装置
1024、1108 通信インターフェース
1025 ディスプレイ
1026 センサー
1028 キャッシュメモリ
1030、1110 プロセッサ
1031、1111 フィールドプログラマブルゲートアレイ
1032 フラッシュメモリ
1034、1112 ファームウェア
1102 チップセット
1104 ブリッジ
1106 ユーザインターフェース素子

Claims (10)

  1. プロセッサにより深層学習プログラム用の訓練されたモデルを取る工程と、
    前記プロセッサにより前記訓練されたモデルをデザイン抽象コードに転換する工程と、
    前記プロセッサにより前記デザイン抽象コードに基づいて、システムでフィールドプログラマブルゲートアレイ装置をプログラミングする工程と、
    を含み、
    前記デザイン抽象コードは、前記フィールドプログラマブルゲートアレイ装置に含まれて複数の論理ブロック回路のコードをプログラミングすることに用いられ、前記論理ブロック回路の各々は複数のモジュールのうちの1つを示し、前記モジュールは前記深層学習プログラムの異なるレイヤー間の処理工程を実行することに用いられることを特徴とするプログラミング方法。
  2. 前記転換の操作は、前記論理ブロック回路を通するデータフローの指定を含み、且つ前記デザイン抽象コードは前記データフローを提供するように、前記フィールドプログラマブルゲートアレイ装置における前記論理ブロック回路の互いの接続を指定することを特徴とする請求項1に記載のプログラミング方法。
  3. 前記プログラミングの前に、前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると前記プロセッサにより判断する工程と、
    前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると前記プロセッサにより判断することに対応して、プログラミング期間内に、前記フィールドプログラマブルゲートアレイ装置に用いられる代替プログラミングモードを前記プロセッサにより実行する工程と、
    を更に含むことを特徴とする請求項1に記載のプログラミング方法。
  4. プロセッサと、
    前記プロセッサに通信的に結合されるフィールドプログラマブルゲートアレイ装置と、
    前記プロセッサに複数の工程を実行させる複数のコマンドを記憶するためのメモリと、
    を備え、
    前記工程は、深層学習プログラム用の訓練されたモデルを取る工程と、前記訓練されたモデルをデザイン抽象コードに転換する工程と、前記デザイン抽象コードに基づいて、前記フィールドプログラマブルゲートアレイ装置をプログラミングする工程と、を含み、前記デザイン抽象コードは前記フィールドプログラマブルゲートアレイ装置に含まれて複数の論理ブロック回路のコードをプログラミングすることに用いられ、前記論理ブロック回路の各々は複数のモジュールのうちの1つを示し、前記モジュールは前記深層学習プログラムの異なるレイヤー間の処理工程を実行することに用いられるものであることを特徴とするコンピュータシステム。
  5. 前記デザイン抽象コードは、レジスタ転送レベルコードを含むものであることを特徴とする請求項4に記載のコンピュータシステム。
  6. 前記転換の操作は、前記論理ブロック回路を通するデータフローの指定を含み、且つ前記デザイン抽象コードは前記データフローを提供するように、前記フィールドプログラマブルゲートアレイ装置における前記論理ブロック回路の互いの接続を指定するものであることを特徴とする請求項4に記載のコンピュータシステム。
  7. 前記プログラミングの前に、前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断する工程と、
    前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断することに対応して、プログラミング期間内に、前記フィールドプログラマブルゲートアレイ装置に用いられる代替プログラミングモードを実行する工程と、
    を更に含むものであることを特徴とする請求項4に記載のコンピュータシステム。
  8. コンピュータ装置に複数の工程を実行させるための複数のコードセグメントを含み且つ前記コンピュータ装置により実行されるコンピュータプログラムを記憶する非一時的なコンピュータ読取可能な媒体において、
    前記工程は、
    深層学習プログラム用の訓練されたモデルを取る工程と、
    前記訓練されたモデルをデザイン抽象コードに転換する工程と、
    前記デザイン抽象コードに基づいて、フィールドプログラマブルゲートアレイ装置をプログラミングする工程と、
    を含み、
    前記デザイン抽象コードが前記フィールドプログラマブルゲートアレイ装置に含まれて複数の論理ブロック回路のコードをプログラミングすることに用いられ、前記論理ブロック回路の各々が複数のモジュールのうちの1つを示し、前記モジュールが前記深層学習プログラムの異なるレイヤー間の処理工程を実行することに用いられるものであることを特徴とする非一時的なコンピュータ読取可能な媒体。
  9. 前記転換の操作は、前記論理ブロック回路を通するデータフローの指定を含み、且つ前記デザイン抽象コードは前記データフローを提供するように、前記フィールドプログラマブルゲートアレイ装置における前記論理ブロック回路の互いの接続を指定するものであることを特徴とする請求項8に記載の非一時的なコンピュータ読取可能な媒体。
  10. 前記プログラミングの前に、前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断する工程と、
    前記フィールドプログラマブルゲートアレイ装置が前記デザイン抽象コードに必要な前記論理ブロック回路に用いられることに不十分であると判断することに対応して、プログラミング期間内に、前記フィールドプログラマブルゲートアレイ装置に用いられる代替プログラミングモードを実行する工程と、
    を更に含むものであることを特徴とする請求項8に記載の非一時的なコンピュータ読取可能な媒体。
JP2018200292A 2018-02-08 2018-10-24 コンピュータシステム、プログラミング方法及び非一時的なコンピュータ読取可能な媒体 Active JP6676126B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/891,762 US11568232B2 (en) 2018-02-08 2018-02-08 Deep learning FPGA converter
US15/891,762 2018-02-08

Publications (2)

Publication Number Publication Date
JP2019139742A JP2019139742A (ja) 2019-08-22
JP6676126B2 true JP6676126B2 (ja) 2020-04-08

Family

ID=64184014

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018200292A Active JP6676126B2 (ja) 2018-02-08 2018-10-24 コンピュータシステム、プログラミング方法及び非一時的なコンピュータ読取可能な媒体

Country Status (5)

Country Link
US (1) US11568232B2 (ja)
EP (1) EP3525119B1 (ja)
JP (1) JP6676126B2 (ja)
CN (1) CN110134379B (ja)
TW (1) TWI709088B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3051429A1 (en) * 2018-08-08 2020-02-08 Applied Brain Research Inc. Digital circuits for evaluating neural engineering framework style neural networks
US11954573B2 (en) * 2018-09-06 2024-04-09 Black Sesame Technologies Inc. Convolutional neural network using adaptive 3D array
KR20210053020A (ko) 2019-11-01 2021-05-11 삼성전자주식회사 전자 장치 및 그 동작 방법
TWI755112B (zh) * 2020-10-23 2022-02-11 財團法人工業技術研究院 電腦程式碼之優化方法、優化系統及應用其之電子裝置
KR102268813B1 (ko) * 2020-12-14 2021-06-25 주식회사 모빌린트 딥러닝 알고리즘을 위한 fpga 설계 방법 및 시스템
JP2023020264A (ja) * 2021-07-30 2023-02-09 株式会社Screenホールディングス スケジュール作成方法、スケジュール作成装置、基板処理装置、基板処理システム、記録媒体、及びスケジュール作成プログラム
CN115426265B (zh) * 2022-11-02 2023-04-18 之江实验室 一种多模态网络下交换资源分配优化方法及装置、介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131659B2 (en) 2008-09-25 2012-03-06 Microsoft Corporation Field-programmable gate array based accelerator system
CN104680236B (zh) 2015-02-13 2017-08-01 西安交通大学 核函数极限学习机分类器的fpga实现方法
CN104915195B (zh) * 2015-05-20 2017-11-28 清华大学 一种基于现场可编程门阵列实现神经网络计算的方法
CN105488565A (zh) 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
CN106228238B (zh) * 2016-07-27 2019-03-22 中国科学技术大学苏州研究院 现场可编程门阵列平台上加速深度学习算法的方法和系统
CN106228240B (zh) 2016-07-30 2020-09-01 复旦大学 基于fpga的深度卷积神经网络实现方法
US10621486B2 (en) 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)
US10163197B2 (en) * 2016-12-02 2018-12-25 Tata Consultancy Services Limited System and method for layer-wise training of deep neural networks
US11676004B2 (en) * 2017-08-15 2023-06-13 Xilinx, Inc. Architecture optimized training of neural networks

Also Published As

Publication number Publication date
TW201935264A (zh) 2019-09-01
EP3525119A1 (en) 2019-08-14
US11568232B2 (en) 2023-01-31
CN110134379A (zh) 2019-08-16
CN110134379B (zh) 2022-11-22
JP2019139742A (ja) 2019-08-22
TWI709088B (zh) 2020-11-01
US20190244095A1 (en) 2019-08-08
EP3525119B1 (en) 2021-09-29

Similar Documents

Publication Publication Date Title
JP6676126B2 (ja) コンピュータシステム、プログラミング方法及び非一時的なコンピュータ読取可能な媒体
CN109034394B (zh) 一种机器学习模型的更新方法和装置
CN112668988A (zh) 使用人工智能(ai)的媒体到工作流生成
US20210232630A1 (en) Methods and systems for creating networks
Fursin et al. Collective knowledge: Towards R&D sustainability
JP6701398B2 (ja) リモートユーティリティによるファームウェアの更新
US10387584B1 (en) Streaming on hardware-software platforms in model based designs
WO2021031137A1 (zh) 人工智能应用开发系统、计算机设备及存储介质
CN102346456A (zh) 可编程智能终端装置及可编程智能终端运行方法
CN114048415A (zh) 表单生成方法及装置、电子设备和计算机可读存储介质
CN116261718A (zh) 用于调谐大规模深度学习工作负载的超参数的资源分配
US11954569B2 (en) Techniques for parallel model training
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
US20230305734A1 (en) Platform for non-volatile memory storage devices simulation
US11003346B2 (en) Prototype storing method
CN108960433B (zh) 用于运行机器学习建模过程的方法及系统
Gandini et al. A framework for automated detection of power-related software errors in industrial verification processes
Chakravarthi et al. System on Chip (SOC) Architecture: A Practical Approach
CN110046024A (zh) 用于数据中心存储评估框架仿真的方法
US20220043697A1 (en) Systems and methods for enabling internal accelerator subsystem for data analytics via management controller telemetry data
US20230350392A1 (en) Method and system for seamless transition of runtime system from controller device to digitalization platform
WO2022199261A1 (zh) 一种模型推荐的方法、装置和计算机设备
Bell et al. How IOT data is stored
KR20230105460A (ko) 마이크로서비스 기반의 지능형 지식 공유 방법 및 시스템
Wu et al. Architecture Design and Internal Implementation of a Universal Coupling Between Controllers and Physics in a Tokamak Flight Simulator

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181024

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200311

R150 Certificate of patent or registration of utility model

Ref document number: 6676126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250