JP7042870B2 - コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体 - Google Patents

コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体 Download PDF

Info

Publication number
JP7042870B2
JP7042870B2 JP2020108978A JP2020108978A JP7042870B2 JP 7042870 B2 JP7042870 B2 JP 7042870B2 JP 2020108978 A JP2020108978 A JP 2020108978A JP 2020108978 A JP2020108978 A JP 2020108978A JP 7042870 B2 JP7042870 B2 JP 7042870B2
Authority
JP
Japan
Prior art keywords
vector
vector operation
configurable
computing device
parameter
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
JP2020108978A
Other languages
English (en)
Other versions
JP2021022370A (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.)
Kunlunxin Technology Beijing Co Ltd
Original Assignee
Kunlunxin Technology Beijing Co Ltd
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 Kunlunxin Technology Beijing Co Ltd filed Critical Kunlunxin Technology Beijing Co Ltd
Publication of JP2021022370A publication Critical patent/JP2021022370A/ja
Application granted granted Critical
Publication of JP7042870B2 publication Critical patent/JP7042870B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • 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
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本開示の実施例は、主にコンピュータ分野に関し、より具体的には、コンピューティングデバイスによって実行されるベクトル演算を構成する方法及びコンピューティングデバイスによって実行されるベクトル演算のための方法、装置、機器及びコンピュータ読み取り可能な記憶媒体に関する。
人工知能技術(ArtIfIcIal IntellIgence、AI)の発展に伴い、ディープラーニングの分野は、現在の研究のホットスポットになる。ディープラーニングのプロセスでは、大量のベクトル演算が用いられる。現在、グラフィックスプロセッサ(GPU)又はいくつかの特定用途向けカスタム集積回路(ASIC)など、いくつかのディープラーニングに対するハードウェアが既に開発されているが、これらのハードウェアは、ベクトル演算をサポートしているが、サポートされているベクトル演算は、実行性能及びベクトル演算の柔軟性の点ですべてさらに向上させる必要がある。したがって、ベクトル演算を実現する実行性能と柔軟性をどのように向上させて、ディープラーニング技術のニーズを満たすことは、現在解決する必要がある一つの重要な問題である。
本開示の例示的な実施例によれば、コンピューティングデバイスによって実行されるベクトル演算を構成する技術案及びコンピューティングデバイスによって実行されるベクトル演算の技術案を提供する。
本開示の第1の態様では、コンピューティングデバイスによって実行されるベクトル演算を構成する方法を提供する。当該方法は、少なくとも一つの構成可能なベクトル演算パラメータを示す情報を取得するステップであって、少なくとも一つの構成可能なベクトル演算パラメータの情報は、構成可能なベクトル演算パラメータのタイプ及び値を示すステップと、構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニットを構成して、複数のベクトル演算ユニット内の各ベクトル演算ユニットが、構成可能なベクトル演算パラメータのタイプ及び値によって定義される、二つ以上の基本ベクトル演算で構成されるターゲットベクトル演算を実行可能にするステップと、を含む。
本開示の第2の態様では、コンピューティングデバイスによって実行されるベクトル演算の方法を提供し、コンピューティングデバイスは、複数のベクトル演算ユニットを含む。当該方法は、演算対象のベクトルデータを取得するステップと、取得されたベクトルデータに対して、ベクトル演算結果を出力するために、複数のベクトル演算ユニットによってベクトル演算を実行するステップと、を含み、ベクトル演算は、本開示の第1の態様の方法によって構成される。
本開示の第3の態様では、コンピューティングデバイスによって実行されるベクトル演算を構成する装置を提供する。当該装置は、少なくとも一つの構成可能なベクトル演算パラメータを示す情報を取得するように構成されるコントローラであって、少なくとも一つの構成可能なベクトル演算パラメータの情報は、構成可能なベクトル演算パラメータのタイプ及び値を示すコントローラと、構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニットを構成して、複数のベクトル演算ユニット内の各ベクトル演算ユニットが、構成可能なベクトル演算パラメータのタイプ及び値によって定義される、二つ以上の基本ベクトル演算で構成されるターゲットベクトル演算を実行可能にするように構成される計算ユニットと、を含む。
本開示の第4の態様では、コンピューティングデバイスによって実行されるベクトル演算の装置を提供する。当該装置は、複数のベクトル演算ユニット計算ユニットを含み、前記計算ユニットは、演算対象のベクトルデータを取得し、取得されたベクトルデータに対して、前記複数のベクトル演算ユニットを操作してベクトル演算を実行することによりベクトル演算結果を出力するように構成され、前記ベクトル演算は、本発明の第1の態様の方法によって構成される。
本開示の第5の態様では、電子機器を提供し、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置と、を含み、一つ又は複数のプログラムが一つ又は複数のプロセッサにより実行される場合に、一つ又は複数のプロセッサが、本開示の第1の態様の方法を実現する。
本開示の第6の態様では、コンピューティングデバイスプログラムが記憶されているコンピューティングデバイス読み取り可能な記憶媒体を提供し、当該プログラムがプロセッサにより実行される場合に、本開示の第1の態様の方法が実現される。
本開示の第7の態様では、電子機器を提供し、一つ又は複数のプロセッサと、一つ又は複数のプログラムを記憶するための記憶装置と、を含み、一つ又は複数のプログラムが一つ又は複数のプロセッサにより実行される場合に、一つ又は複数のプロセッサが、本開示の第2の態様の方法を実現する。
本開示の第8の態様では、コンピューティングデバイスプログラムが記憶されているコンピューティングデバイス読み取り可能な記憶媒体を提供し、当該プログラムがプロセッサにより実行される場合に、本開示の第2の態様の方法が実現される。
なお、発明の概要に説明された内容は、本開示の実施例の肝心又は重要な特徴を限定することを意図しておらず、本開示の範囲を限定することも意図していない。本開示の他の特徴は、以下の説明により理解されやすくなる。
本開示の各実施例の上記及び他の特徴、利点及び態様は、図面を参照した以下の詳細な説明により、より明らかになる。図面では、同一又は類似の符号は、同一又は類似の要素を表す。
本開示の複数の実施例に係るコンピューティングデバイスによって実行される技術案の例示的な環境の概略図を示す。 本開示のいくつかの例示的な実施例に係るコンピューティングデバイスによって実行されるベクトル演算を構成する方法のフローチャートを示す。 本開示のいくつかの例示的な実施例に係るコンピューティングデバイスの構造の概略ブロック図を示す。 本開示のいくつかの例示的な実施例に係るコンピューティングデバイスによって実行されるベクトル演算の方法のフローチャートを示す。 本開示の実施例に係るコンピューティングデバイスによって実行されるベクトル演算を構成する技術案の装置の概略ブロック図を示す。 本開示の実施例に係るコンピューティングデバイスによって実行されるベクトル演算の装置の概略ブロック図を示す。 本開示の複数の実施例を実施することができるコンピューティングデバイスのブロック図を示す。
本開示の実施例を図面を参照して以下により詳細に説明する。図面に本開示のいくつかの実施例が示されているが、本発明は様々な形態で実現することができ、本明細書に記載の実施例に限定されると解釈されるべきではないことを理解されたい。逆に、これらの実施例を提供する目的は、本開示がより明確かつ完全で理解されることである。なお、本開示の図面及び実施例は例示するものに過ぎず、本開示の保護範囲を限定するものではないと理解されたい。
本開示の実施例の説明において、「含む」という用語及びその類似の用語が、開放的な含む、すなわち「含むがこれに限定されない」と理解されるべきである。「に基づく」という用語は、「少なくとも部分的に基づく」ことを意味すると理解されるべきである。「一実施例」または「当該実施例」という用語は、「少なくとも一実施例」を意味すると理解されるべきである。「第1」、「第2」などの用語は、異なる対象または同一対象を指すことができる。他の明示的及び暗黙的な定義も以下に含まれ得る。
本明細書で使用されるように、用語「基本ベクトル演算」とはベクトル演算の基本演算単位を指し、例えば、二つのベクトル間の四則演算(すなわち、加算、減算、乗算、除算)、単一のベクトルとスカラとの間の演算(スカラとベクトルとの間の乗算演算など)である。限定的ではなく、単なる例示的な例であり、二つの長さがnである入力ベクトルa=[a1、a2、a3、…、an]とb=[b1、b2、b3、…、bn]に対して、aとbとの間のベクトル加算は、[a1+b1、a2+b2、a3+b3、…、an+bn]と定義され、aとbとの間のベクトル減算は、a-b=[al-bl、a2-b2、…、an-bn]と定義され、aとbとの間のベクトル乗算は、[al*bl、a2*b2、…、an*bn]と定義され、aとbとの間のベクトル除算は、[al/bl、a2/b2、…、an/bn]と定義される。限定的ではなく、単なる例示的な例であり、二つの長さがnである入力ベクトルa=[a1、a2、a3、…、an]に対して、ベクトルとスカラパラメータAとの間の乗算演算は、[A*al、A*a2、…、A*an]と定義される。一つ又は複数の基本ベクトル演算の組み合わせは、複合的ベクトル演算を構成することができる。本明細書では、特に説明されていない場合、用語「ベクトル演算」は、「複合ベクトル演算」を意味する。
本明細書で説明されるように、本明細書で使用される用語「ベクトル演算ユニット」は、コンピューティングデバイスでベクトル演算を実現する計算ユニットを指し、ハードウェア(例えば、複数の電気素子)によって実現されてもよく、ソフトウェアの方式によって実現されてもよい。いくつかの応用シーンでは、チップ(例えば、CPU、GPU、ASICなど)に統合されてもよい。
上記のように、ベクトル演算を実現する性能と柔軟性をどのように向上させるかは、現在解決する必要がある一つの重要な問題である。従来のコンピューティングデバイスによって実行されるベクトル演算の技術案は、制御処理部(CPU)によってベクトル演算を実現する。当該技術案では、CPUは通常スカラ計算を実行するように設計されているため、ベクトルの演算を複数のスカラ計算に分割する必要があり、入力されたベクトル演算命令の長さが長く、ベクトル演算の実行中に、さらに、多くの分岐及びジャンプなどの制御命令でループ判定を制御する必要があり、ベクトル演算の全体的な実行性能が低くなる。
コンピューティングデバイスによって実行されるベクトル演算のもう一つの従来の技術案は、GPU又はシングルインストラクション・マルチプルデータ技術(SIMD)機能を持っているCPUを採用して実現し、この技術では、ベクトル演算の性能が、ある程度向上された。しかし、発明者は、当該技術案には、多くの欠陥があることを気付いており、主に、以下の内容を含む。
オンチップキャッシュスペースは限られており、ベクトル演算を実行するプロセスでは、頻繁にチップ外メモリからデータを搬送する必要があり、特に、規模が大きいベクトル演算に対して、チップ外のストレージデバイスとの帯域幅は、ベクトル演算の実行性能を低下させる。
基本ベクトル演算のみをサポートでき、複数の基本ベクトル演算を含む複雑なベクトル演算に対しては、複数の基本のベクトル演算命令をさらに分割する必要があるため、ベクトル演算命令が長くなる。
近年、ディープラーニングの分野に対するASICも登場しているが、依然に基本ベクトル演算のサポートに限られており、いくつかの少し複雑なベクトル演算フォーマットに対しては、複数の基本ベクトル演算に分割して実現する必要があり、例えば、y=A*a+bというベクトル演算フォーマットに対して、その中、aとbは入力されたベクトルデータであり、yはベクトル結果であり、Aはスカラタイプパラメータであり、上記のフォーマットは、二つの基本ベクトル演算、すなわち、ベクトルとスカラの乗算及びベクトル加算の演算に分割する必要がある。
したがって、従来のコンピューティングデバイスによって実行されるベクトル演算の技術案は、複雑なベクトル演算をサポートせず、ベクトル演算の実行性能は高くないため、人工知能の分野でのディープラーニングのニーズを満たすことができない。
本開示の実施例によれば、コンピューティングデバイスによって実行されるベクトル演算を構成する方法が提供される。コンピューティングデバイスは、二つ以上の基本ベクトル演算で構成されるターゲットベクトル演算をサポートすることができ、ベクトル演算のパラメータは、構成可能である。さらに、本開示の実施例によれば、コンピューティングデバイスによって実行されるベクトル演算の方法を提供する。コンピューティングデバイスは、本開示のベクトル演算構成方法を適用して構成されたベクトル演算によって、ベクトルデータを読み出してベクトル演算を実行することができる。この方式のように、複雑ベクトル演算のサポートを実現するとともに、ベクトル演算フォーマットの柔軟性も実現する。
さらに、ベクトル演算をより柔軟に構成することを実現するために、本開示のいくつかの例示的な実施例によれば、構成可能なベクトル演算パラメータのタイプは、スカラタイプ又はベクトルタイプであってもよい。また、構成可能なベクトル演算パラメータのタイプに応じて、構成可能なベクトル演算パラメータを異なるストレージデバイスに記憶し、例えば、スカラタイプの構成可能なベクトル演算パラメータは、スカラメモリ(例えば、レジスタ)に記憶することができ、ベクトルタイプの構成可能なベクトル演算パラメータは、ベクトルメモリ(例えば、記憶ユニット)に記憶することができる。この方式のように、異なるタイプの構成可能なベクトル演算パラメータは、異なるストレージデバイスに記憶して、構成可能なベクトル演算パラメータのメンテナンスと管理は、より合理的且つ効率的になる。
さらに、本開示のいくつかの例示的な実施例によれば、スカラストレージデバイス及び/又はベクトルストレージデバイスをコンピューティングデバイス内に設置することができ、例えば、スカラストレージデバイス及び/又はベクトルストレージデバイスとコンピューティングデバイスは、単一のチップに統合されることができる。この方式のように、ベクトル演算ユニットを構成し、ベクトル演算を実行する操作中に、コンピューティングデバイスは、チップ外から構成パラメータ及び/又はベクトルデータを読み出す必要がなくため、コンピューティングデバイスの実行性能を向上させ、コンピューティングデバイスと外部ストレージデバイスとの間の帯域幅によって引き起こされるパフォーマンスのボトルネックを回避する。
図1は、本開示の複数の実施例で実現することができる例示的な環境100の概略図を示す。当該例示的な環境100において、コンピューティングデバイス130は、構成可能なベクトル演算パラメータの情報110-1、110-2~110-Iを取得することができる。説明の便宜のために、複数の構成可能なベクトル演算パラメータの情報110-1、110-2~110-Iは、構成可能なベクトル演算パラメータの情報110と総称することができる。本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータの情報110は、構成可能なベクトル演算パラメータの情報を示すことができ、より具体的には、構成可能なベクトル演算パラメータの情報110は、構成可能なベクトル演算パラメータのタイプ及び値を示すことができる。本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータの情報110は、有線通信又は無線通信の方式によってコンピューティングデバイス130に伝送されることができる。本開示のいくつかの例示的な実施例では、コンピューティングデバイス130は、コンピューティングデバイス130に結合された入力デバイス(例えば、マウス、キーボード、タッチペン、タッチスクリーンなどを含むが、これらに限定されない)によってユーザが入力した構成可能なベクトル演算パラメータの情報110を受信することもできる。本開示の別のいくつかの例示的な実施例では、コンピューティングデバイス130は、スクリプト/構成ファイル/コマンドファイルを読み出す方式によって構成可能なベクトル演算パラメータの情報110を取得することもできる。
コンピューティングデバイス130は、計算能力を有する任意の機器であってもよい。本開示のいくつかの例示的な実施例では、コンピューティングデバイス130は、CPU、GPU、ACISなどを含むがこれらに限定されない計算能力を有するチップであってもよい。
コンピューティングデバイス130は複数のベクトル演算ユニット150-1、150-2~150-Lを含む。説明の便宜のために、複数のベクトル演算ユニット150-1、150-2~150-Lは、ベクトル演算ユニット150と総称することができる。ベクトル演算ユニット150は、複合ベクトル演算をサポートするように設計され、例えば、ベクトルa及びベクトルbに対するベクトル演算は、構成可能なベクトル演算パラメータを含む複合ベクトル演算y=A*a+B*b+Cを定義することができ、その中、A、B、及びCは、構成可能なベクトル演算パラメータであり、構成可能なベクトル演算パラメータA、B、及びCのタイプ(スカラタイプ又はベクトルタイプであってもよい)及び値は、構成可能である。本開示のいくつかの例示的な実施例では、複合ベクトル演算は、2つ又はより多い(3つ以上)基本ベクトル演算を含み、含まれている基本ベクトル演算は、任意の形式で組み合わせることができる。上記の複合ベクトル演算は、一例にすぎず、他のいくつかの実施例では、複合ベクトル演算は、任意の必要な形式で定義されることができることを理解されたい。本開示のいくつかの例示的な実施例では、ベクトル演算ユニット150は、例えば、統合された電気素子(例えば、NANDゲート、増幅器など)を介して実現し、または構成可能なベクトル演算パラメータを有する複合ベクトル演算を構成することができる。
コンピューティングデバイス130は、複数のベクトル演算ユニット内の各ベクトル演算ユニットが構成可能なベクトル演算パラメータのタイプ及び値によって定義されるベクトル演算を実行することができるように、受信された構成可能なベクトル演算パラメータの情報110に基づいて複数のベクトル演算ユニット150を構成することができる。例えば、上記の構成可能なベクトル演算パラメータA、B、及びCは、Aがスカラタイプであり、値が1であり、Bが、スカラタイプであり、値が2であり、Cがベクトルタイプであり、値が[0、…、0]であるように構成されることができ、その中、構成可能なベクトル演算パラメータCの次元は、コンピューティングデバイス130の内部に配置されたベクトル演算ユニット150の数によって决定されることができ、これは図3の説明で詳細に説明する。上記の構成によれば、ベクトル演算ユニット150によってサポートされている、構成可能なベクトル演算パラメータを含む複合ベクトル演算y=A*a+B*b+Cは、具体的なベクトル演算(本明細書では、説明の便宜のために、「ターゲットベクトル演算」と呼ぶ)、すなわちy=a+2bとして決定される。
コンピューティングデバイス130は、ターゲットベクトル演算を実行することができる。具体的には、ベクトル演算を実行する必要がある場合、コンピューティングデバイス130は、演算対象のベクトルデータ120-1、120-2~120-Nを取得する。説明の便宜のために、複数のベクトルデータ120-1、120-2~120-Nは、ベクトルデータ120と総称することができる。本開示のいくつかの例示的な実施例では、コンピューティングデバイス130は、コンピューティングデバイス130の内に位置し、ベクトルデータ120を記憶するためのデータベース/メモリからベクトルデータ120を取得し、又はコンピューティングデバイス130の外に位置し、ベクトルデータ120を記憶するためのデータベース/メモリからベクトルデータ120を取得することができる。本開示のいくつかの例示的な実施例では、ベクトルデータ120を記憶するためのデータベース/メモリは、独立又は統合された記憶ユニットなどの専用のベクトルストレージデバイスであってもよい。
コンピューティングデバイス130は、構成可能なベクトル演算パラメータの情報110に基づいて少なくとも一つの構成可能なベクトル演算パラメータを示す情報を取得することにより、実行しようとするターゲットベクトル演算を決定する。ターゲットベクトル演算が決定された後、コンピューティングデバイス130は、ベクトルデータ120を読み出してベクトル演算を実行し、ベクトル演算結果140-1、140-2~140-Mを出力する。説明の便宜のために、複数のベクトル演算結果140-1、140-2~140-Mは、ベクトル演算結果140と総称することができる。
本開示のいくつかの例示的な実施例では、ベクトル演算結果は、コンピューティングデバイス130によってコンピューティングデバイス130の内に位置し、ベクトル演算結果140を記憶するためのデータベース/メモリに記憶され、又はコンピューティングデバイス130の外に位置し、ベクトル演算結果140を記憶するためのデータベース/メモリに記憶されることができる。本開示のいくつかの例示的な実施例では、ベクトル演算結果140は、ベクトルデータ120と同じストレージデバイスに記憶されることができる。
ここで示す構成可能なベクトル演算パラメータ、ベクトルデータ、ベクトル演算ユニット、及びベクトル演算結果の数は、単なる例として提供されており、実際の状況に応じて、構成可能なベクトル演算パラメータ、ベクトルデータ、ベクトル演算ユニット、及びベクトル演算結果の数は変化可能であることを理解されたい。本開示の範囲はこの点で制限されていない。また、ここで示す複合ベクトル演算とターゲットベクトル演算の形式、及び構成可能なベクトル演算パラメータの値及びタイプは、単なる例として提供されており、実際の状況に応じて、複合ベクトル演算とターゲットベクトル演算の形式、及び構成可能なベクトル演算パラメータの値及びタイプは変化可能である。本開示の範囲はこの点で制限されていない。
以下、図2~図3を参照してコンピューティングデバイス130によって実行されるベクトル演算を構成するプロセスをより詳細に説明する。図2は、本開示のいくつかの例示的な実施例に係るコンピューティングデバイス130によって実行されるベクトル演算を構成するプロセス200のフローチャートを示す。図3は、本開示のいくつかの例示的な実施例に係るコンピューティングデバイス130の構造の概略ブロック図を示す。プロセス200は、図1のコンピューティングデバイス130によって実現されることができる。説明の便宜のために、図1と図3を組み合わせてプロセス200を説明する。
プロセス200をより明確に説明するために、まず、図3を参照して、本開示のいくつかの例示的な実施例のコンピューティングデバイス130の内部構造について簡単に説明する。図3では、コンピューティングデバイス130は、コントローラ360、スカラストレージデバイス350、ベクトルストレージデバイス340、及び計算ユニット370を含む。コントローラ360は、コア制御モジュールとして、コンピューティングデバイス130のインターフェースとしてユーザとインタラクションして、構成可能なベクトル演算パラメータの情報110及び他のユーザ命令を取得することができる。コントローラ360は、スカラストレージデバイス350、ベクトルストレージデバイス340、及び計算ユニット370に同時に接続され、スカラストレージデバイス350、ベクトルストレージデバイス340及び計算ユニット370を制御する。スカラストレージデバイス350は、スカラタイプの構成可能なベクトル演算パラメータを記憶し、また、スカラストレージデバイス350は、ベクトル長さ、入出力ベクトルの記憶ユニットにおけるアドレスなどのようなベクトル演算プロセスにおける他の制御パラメータを記憶することもできる。本開示のいくつかの例示的な実施例では、スカラストレージデバイス350は、レジスタであってもよい。ベクトルストレージデバイス340は、ベクトルタイプの構成可能なベクトル演算パラメータ、及びベクトルデータ120を記憶する。計算ユニット370は、二つの並列するベクトル演算ユニット150-1及び150-2(ベクトル演算ユニット150と総称することができる)、ベクトル演算ユニット150-1及び150-2にそれぞれに対応するセレクタ310-1及び310-2(セレクタ310と総称することができる)、及びスカラ/ベクトルパラメータ構成モジュール320-1及び320-2(スカラ/ベクトルパラメータ構成モジュール320と総称することができる)を含む。セレクタ310及びスカラ/ベクトルパラメータ構成モジュール320は、構成可能なベクトル演算パラメータのタイプに応じて、構成可能なベクトル演算パラメータの値を取得してベクトル演算ユニット150の構成を実現する。
当業者は、図3に示すコンピューティングデバイス130は説明のみに使用され、限定するものではなく、図の部品は、実際のニーズに応じて増加又は減少することができ、各部品間で任意に組み合わせを行うこともでき、各部品の数も必要に応じて増加又は減少することができ、本開示の範囲はこの点で制限されていないことを理解されたい。
以下図2を参照して、本開示のコンピューティングデバイス130によって実行されるベクトル演算を構成するプロセス200を詳細に説明する。
ステップ210において、コンピューティングデバイス130は、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110を取得し、少なくとも一つの構成可能なベクトル演算パラメータの情報110は、ベクトル演算ユニット150によってサポートされている複合ベクトル演算に関連付けられる。依然として、ベクトル演算ユニット150が複合ベクトル演算y=A*a+B*b+Cをサポートすることを例として説明すると、少なくとも一つの構成可能なベクトル演算パラメータの情報110は、構成可能なベクトル演算パラメータA、B、及びCを示すことができる。ベクトル計算ユニット150によってサポートされている複合ベクトル演算の違いに応じて、構成可能なベクトル演算パラメータの情報110は、一つであってもよいし、複数であってもよいことを理解されたい。また、構成可能なベクトル演算パラメータの情報110は、任意の方式によって取得されることができ、ユーザが入力する方式又はスクリプト/構成ファイル/コマンドファイルを読み出す方式を含むが、これらに限定されない。また、構成可能なベクトル演算パラメータの情報110を取得する操作は、一つ又は複数のステップで完了することができる。
本開示のいくつかの例示的な実施例では、コンピューティングデバイス130の内又はコンピューティングデバイス130の外に位置するコントローラ360(図3に示すように)によって少なくとも一つの構成可能なベクトル演算パラメータを示す情報110を取得するの操作を実行することができ、例えば、コントローラ360によってユーザ命令を受信するか、又はスクリプト/構成ファイル/命令を読み出し、解析操作によって構成可能なベクトル演算パラメータの情報110を取得する。
このような方式によって、コンピューティングデバイス130は、複雑なベクトル演算をサポートすることができる。また、コンピューティングデバイス130のベクトル演算ユニット150は、少なくとも一つの構成可能なベクトル演算パラメータをサポートするため、個別の物理エンティティで複数のターゲットベクトル演算を実現し、コンピューティングデバイス130の汎用性を向上させることができる。また、当該方式によって、ユーザは、簡単の操作のみで、複雑なベクトル演算命令を作成する必要がなく、複雑なベクトル演算を実現し、ベクトル演算の複雑さを低減することができる。
本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータのタイプは、スカラタイプ又はベクトルタイプであってもよい。例えば、上記の構成可能なベクトル演算パラメータA及びBは、スカラタイプとして構成されることができ、構成可能なベクトル演算パラメータCは、ベクトルタイプとして構成されることができる。以下、スカラタイプ及びベクトルタイプパラメータの取得に対してそれぞれ説明する。
スカラタイプ
本開示のいくつかの例示的な実施例では、スカラタイプの構成可能なベクトル演算パラメータに対して、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110は、構成可能なベクトル演算パラメータの数値を含む。例えば、構成可能なベクトル演算パラメータA及びBに対して、構成可能なベクトル演算パラメータの情報110は、A=1、B=2を示すことができる。
追加又は代替として、本開示のいくつかの例示的な実施例では、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110は、構成可能なベクトル演算パラメータのタイプがスカラタイプであることを示す第1の指示を含むこともできる。本開示のいくつかの例示的な実施例では、当該第1の指示は、明示的であってもよく、例えば、1ビットの情報によって示され、当該ビットが「0」である場合、当該構成可能なベクトル演算パラメータのタイプがスカラタイプであることを示す。別のいくつかの実施例では、当該第1の指示は、暗黙的であってもよく、例えば、構成可能なベクトル演算パラメータのデフォルトタイプがスカラタイプであり、又は構成可能なベクトル演算パラメータの値の範囲によって当該構成可能なベクトル演算パラメータのタイプを取得する。上記の例は、限定的な例ではなく、単なる例示的な例であり、第1の指示の実現形式は、これらに限定されなく、本開示の範囲はこの点で制限されていないことを理解されたい。
本開示のいくつかの例示的な実施例では、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110を取得した後、取得された構成可能なベクトル演算パラメータのベクトル値をスカラストレージデバイス350に記憶する(図3に示すように)。例えば、本開示の例示的な例では、コントローラ360は、構成可能なベクトル演算パラメータA=1及びB=2を示す情報を取得した後、構成可能なベクトル演算パラメータA及びBの数値「1」及び「2」をスカラストレージデバイス350に記憶する。
ベクトルタイプ
ベクトルタイプの構成可能なベクトル演算パラメータの取得を具体的に説明する前に、まず、ベクトルタイプパラメータの基本概念を簡単に説明する。ディープラーニングにおけるベクトル演算に対して、バイアスの追加は、一つの常に必要な操作であり、この時、コンピューティングデバイス130が、複数の並列に実行されるベクトル演算ユニット150をサポートする必要があり、例えば、図1のベクトル演算ユニット150-1、150-2~150-L、図3のベクトル演算ユニット150-1及び150-2である。本開示のいくつかの例示的な実施例では、ベクトルタイプの構成可能なベクトル演算パラメータの次元は、ベクトル演算ユニット150の数に対応する(等しい)。例えば、コンピューティングデバイスが二つのベクトル演算ユニット150-1及び150-1を含む場合、構成可能なベクトル演算パラメータCは[C1、C2]であってもよく、その中、C1はベクトル演算ユニット150-1に適用され、C2はベクトル演算ユニット150-2に適用される。バイアスの追加は、例示的な応用シーンに過ぎず、ベクトルタイプの構成可能なベクトル演算パラメータの応用シーンはこれに限定されないことを理解されたい。
本開示のいくつかの例示的な実施例では、ベクトルタイプの構成可能なベクトル演算パラメータは、予め構成され、ベクトルストレージデバイス340に記憶されることができる(図3に示すように)。本開示のいくつかの例示的な実施例では、コンピューティングデバイス130は、構成可能なベクトル演算パラメータのベクトル値を取得し、それをベクトルストレージデバイス340に記憶し、その後、構成可能なベクトル演算パラメータのベクトル値に関連付けられるストレージ情報(例えば、ストレージアドレス)を生成する。コンピューティングデバイス130は、様々な方式によって構成可能なベクトル演算パラメータのベクトル値を取得することができ、例えば、ベクトルストレージデバイス340は、自身の入出力インターフェースを介して外部機器から構成可能なベクトル演算パラメータのベクトル値を読み出すことができ、コントローラ360によってユーザ入力命令を受信し、又はスクリプト/構成ファイル/コマンドファイルを読み出す方式によって構成可能なベクトル演算パラメータのベクトル値を取得し、コントローラ360によってベクトル値をベクトルストレージデバイス340に記憶することができるが、本開示の範囲はこの点で制限されていないことを理解されたい。
本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータがベクトルタイプである場合、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110は、ストレージ情報を含む。例えば、構成可能なベクトル演算パラメータCに対して、構成可能なベクトル演算パラメータの情報110は、ストレージアドレス&Cなどの構成可能なベクトル演算パラメータCのベクトルストレージデバイス340におけるストレージ情報を示すことができる。
追加又は代替として、本開示のいくつかの例示的な実施例では、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110には、構成可能なベクトル演算パラメータを含むストレージ情報(例えば、&C)に加えて、構成可能なベクトル演算パラメータのタイプがベクトルタイプであることを示す第2の指示をさらに含む。
本開示のいくつかの例示的な実施例では、当該第2の指示は、明示的であってもよく、例えば、1ビットの情報によって示され、当該ビットが「1」である場合、当該構成可能なベクトル演算パラメータのタイプがベクトルタイプであることを示す。別のいくつかの実施例では、当該第2の指示は、暗黙的であってもよく、例えば、構成可能なベクトル演算パラメータのデフォルトタイプがベクトルタイプであり、又は構成可能なベクトル演算パラメータの値(例えば、値が一つのアドレスタイプであると判断される)によって当該構成可能なベクトル演算パラメータのタイプを取得する。上記の例は、限定的な例ではなく、単なる例示的な例であり、第2の指示の実現形式は、これらに限定されなく、本開示の範囲はこの点で制限されていないことを理解されたい。
コンピューティングデバイス130は、構成可能なベクトル演算パラメータを含む情報110内の構成可能なベクトル演算パラメータのストレージ情報に基づいてベクトル値を取得することができ、例えば、コントローラ360は、構成可能なベクトル演算パラメータのストレージ情報(例えば、&C)に基づいてベクトルストレージデバイス340から構成可能なベクトル演算パラメータのベクトル値(例えば、[C1、C2])を読み出す。
図2を参照すると、ステップ220において、コンピューティングデバイス130は、ステップ210で取得された構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニット150を構成する。本開示のいくつかの例示的な実施例では、ベクトル演算ユニット150を構成する場合、セレクタ310(図3に示すように)は、構成可能なベクトル演算パラメータのタイプに応じてスカラストレージデバイス350又はベクトルストレージデバイス340から構成可能なベクトル演算パラメータをそれぞれ取得する。具体的には、構成可能なベクトル演算パラメータがスカラタイプである場合、セレクタ310は、スカラストレージデバイス350から構成可能なベクトル演算パラメータの数値を取得し、例えば、スカラストレージデバイス350からA=1、B=2を読み出し、構成可能なベクトル演算パラメータがベクトルタイプである場合、セレクタ310は、ベクトルストレージデバイス340から構成可能なベクトル演算パラメータのベクトル値を取得し、例えば、ベクトルストレージデバイス340からC=[C1、C2]を読み出す。本開示のいくつかの例示的な実施例では、セレクタ310-1及び310-2は、複数のパラメータセレクタをそれぞれ含むことができ、パラメータセレクタの数は、ベクトル演算ユニット150がサポートする複合ベクトル演算の構成可能なベクトル演算パラメータの数に対応する(等しい)。例えば、複合ベクトル演算y=A*a+B*b+Cに対して、セレクタ310-1及び310-2は、3つのパラメータセレクタをそれぞれ有することができ、3つのパラメータセレクタは、構成可能なベクトル演算パラメータA、B、及びCにそれぞれ対応されて、構成可能なベクトル演算パラメータA、B、及びCの値の取得を実現する。
本開示のいくつかの例示的な実施例では、取得されたベクトル演算パラメータA、B、及びCの値は、スカラ/ベクトルパラメータ構成モジュール320によってベクトル演算ユニットに適用されることができる。
本開示のいくつかの例示的な実施例では、スカラタイプの構成可能なベクトル演算パラメータは、複数のベクトル演算ユニット150内の各ベクトル演算ユニットに適用され、ベクトルタイプの構成可能なベクトル演算パラメータの異なる次元の値は、複数のベクトル演算ユニット150内の各ベクトル演算ユニットにそれぞれ適用される。
依然として、複合ベクトル演算がy=A*a+B*b+Cである例示的な実施例を参照すると、構成可能なベクトル演算パラメータAはスカラタイプであり、値は「1」であり、構成可能なベクトル演算パラメータBはスカラタイプであり、値は「2」であり、構成可能なベクトル演算パラメータCはベクトルタイプであり、値は「[C1,C2]」であり、C1、C2はベクトル定数である場合、ベクトル演算ユニット150-1に対応されるターゲットベクトル演算は、y=a+2b+C1であり、ベクトル演算ユニット150-2に対応されるターゲットベクトル演算は、y=a+2b+C2である。
上記の方式で、コンピューティングデバイス130は、複雑なベクトル演算を実現することができ、ユーザは、簡単な構成によって、単一のハードウェア機器で複数のベクトル演算フォーマットを柔軟に実現することができる。
以下、図4を参照して、コンピューティングデバイス130によって実行されるベクトル演算のプロセスをより詳細に説明する。図4は、本開示のいくつかの例示的な実施例に係るコンピューティングデバイス130によって実行されるベクトル演算のプロセス400のフローチャートを示す。プロセス400は、図1のコンピューティングデバイス130によって実現されることができる。説明の便宜のために、図1と図3を組み合わせてプロセス400を説明する。
ステップ410において、コンピューティングデバイス130は、演算対象のベクトルデータ120を取得する。いくつかの例示的な実施方式では、演算対象のベクトルデータ120は、ベクトルストレージデバイス340に予めキャッシュされることができる。当該操作によって、コンピューティングデバイス130がベクトル演算を実行する場合、外部ストレージデバイスとインタラクションする必要がなく、コンピューティングデバイス130と外部機器との間の帯域幅によって引き起こされる実行性能のボトルネックを回避し、ベクトル演算の実行性能を向上させる。
ステップ420において、コンピューティングデバイス130は、取得されたベクトルデータ120に対して、ベクトル演算を実行してベクトル演算結果140を出力する。例えば、図3を参照すると、ベクトル演算ユニット150は、ベクトルストレージデバイス340からベクトルデータ120を読み出してベクトル演算を実行し、ベクトル演算ユニット150によって実行されるベクトル演算は、本開示の任意のコンピューティングデバイスによって実行されるベクトル演算を構成する方法に基づいて構成される。
当業者は、ベクトル演算を実行する操作は、ベクトル演算を構成する操作とそれぞれトリガ又は一緒にトリガされることを理解されたい。例えば、本開示のいくつかの例示的な実施例では、ベクトル演算を実行する操作及びベクトル演算を構成する操作は、異なるユーザ命令に基づいてトリガされることができる。別のいくつかの実施例では、ベクトル演算を実行する操作と、ベクトル演算を構成する操作のユーザ命令は、一つの命令によってトリガされてもよいし、又はベクトル演算を構成する操作後にベクトル演算を実行することが自動にトリガされてもよいが、本開示の範囲はこの点で制限されていない。
上記の方式で、ベクトル演算を柔軟に構成するとともに、ベクトル演算の実行性能を向上させることができる。図5は、本開示の実施例に係るコンピューティングデバイスによって実行されるベクトル演算を構成する装置の概略ブロック図を示す。装置500は、図1のコンピューティングデバイス130に含まれてもよいし、又はコンピューティングデバイス130として実現されてもよい。図5に示すように、装置500は、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110を取得するように構成されるコントローラ360であって、少なくとも一つの構成可能なベクトル演算パラメータの情報110は、構成可能なベクトル演算パラメータのタイプ及び値を示すコントローラ360と、構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニットを構成して、複数のベクトル演算ユニット内の各ベクトル演算ユニットが、構成可能なベクトル演算パラメータのタイプ及び値によって定義される、二つ以上の基本ベクトル演算で構成されるターゲットベクトル演算を実行可能にするように構成される複数のベクトル演算ユニット150を含む計算ユニット370と、を含む、
本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータのタイプは、スカラタイプ及びベクトルタイプを含む。
本開示のいくつかの例示的な実施例では、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110は、構成可能なベクトル演算パラメータのタイプがスカラタイプであることを明示的に又は暗黙的に示す第1の指示と、構成可能なベクトル演算パラメータの数値と、を含む。
本開示のいくつかの例示的な実施例では、装置500は、構成可能なベクトル演算パラメータの数値を記憶するように構成されるスカラストレージデバイスをさらに含み、コントローラは、構成可能なベクトル演算パラメータの数値を取得し、取得された構成可能なベクトル演算パラメータの数値をスカラストレージデバイス350に記憶するように構成される。
本開示のいくつかの例示的な実施例では、計算ユニット520は、構成可能なベクトル演算パラメータの数値を取得するように構成されるセレクタ310と、セレクタ310によって取得された構成可能なベクトル演算パラメータの数値を複数のベクトル演算ユニット内の各ベクトル演算ユニットに適用するように構成されるスカラパラメータ構成モジュール320と、を含む。
本開示のいくつかの例示的な実施例では、装置500は、構成可能なベクトル演算パラメータのベクトル値を記憶するように構成されるベクトルストレージデバイス340と、構成可能なベクトル演算パラメータのベクトル値を取得し、構成可能なベクトル演算パラメータのベクトル値をベクトルストレージデバイス340に記憶し、構成可能なベクトル演算パラメータのベクトル値のストレージ情報を生成するように構成されるベクトルパラメータ取得モジュールと、をさらに含み、少なくとも一つの構成可能なベクトル演算パラメータを示す情報110には、ストレージ情報を含む。
本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータのベクトル値の次元は、複数のベクトル演算ユニットの数に対応する。
本開示のいくつかの例示的な実施例では、構成可能なベクトル演算パラメータを示す情報110は、構成可能なベクトル演算パラメータのタイプがベクトルタイプであることを明示的に又は暗黙的に示す第2の指示をさらに含む。
本開示のいくつかの例示的な実施例では、コントローラは、さらに、構成可能なベクトル演算パラメータのストレージ情報を取得するように構成され、演算ユニットは、構成可能なベクトル演算パラメータのストレージ情報に基づいて構成可能なベクトル演算パラメータのベクトル値を取得するように構成されるセレクタ310と、セレクタ310によって取得された構成可能なベクトル演算パラメータのベクトル値の異なる次元の値を、複数のベクトル演算ユニット内の各ベクトル演算ユニットにそれぞれ適用するように構成されるベクトルパラメータ構成モジュール320と、を含む。
図6は、本開示の実施例に係るコンピューティングデバイスによって実行されるベクトル演算の装置の概略ブロック図を示す。装置600は、図1のコンピューティングデバイス130に含まれてもよいし、又はコンピューティングデバイス130として実現されてもよい。図6に示すように、装置600は、計算ユニット370を含み、計算ユニット370は、複数のベクトル演算ユニットを含み、計算ユニットは、演算対象のベクトルデータを取得し、取得されたベクトルデータに対して、複数のベクトル演算ユニットを操作してベクトル演算を実行することによってベクトル演算結果を出力するように構成され、ベクトル演算は、本開示の第1の態様の方法によって構成される。
本開示のいくつかの例示的な実施例では、装置600は、演算対象のベクトルデータを記憶するように構成されるベクトルストレージデバイス340と、ベクトルストレージデバイス340にベクトルデータをキャッシュするように構成されるベクトルデータ取得モジュールと、をさらに含む。
図7は、本開示の実施例を実現できる例示的な機器700示す概略ブロック図である。機器700は、図1のコンピューティングデバイス130を実現することができる。図に示すように、機器700は、リードオンリーメモリ(ROM)702に記憶されたコンピュータプログラム命令、又は記憶ユニット708からランダムアクセスメモリ(RAM)703にローディングされたコンピュータプログラム命令に基づいて、各種の適切な動作と処理を実行できる計算ユニット701を含む。RAM703には、機器700の動作に必要な各種のプログラム及びデータをさらに記憶することができる。計算ユニット701と、ROM702と、RAM703とは、バス704を介して互いに接続されている。入力/出力(I/O)インタフェース705もバス704に接続されている。
機器700における複数のコンポーネントはI/Oインタフェース705に接続されており、キーボードやマウスなどの入力ユニット706と、種々なディスプレイやスピーカなどの出力ユニット707と、磁気ディスクや光学ディスクなどの記憶ユニット708と、ネットワークカード、モデム、無線通信トランシーバーなどの通信ユニット709と、を含む。通信ユニット709は、機器700がインターネットのようなコンピュータネット及び/又は種々なキャリアネットワークを介してその他の機器と情報/データを交換することを許可する。
計算ユニット701は、様々な処理及び計算能力を有する汎用及び/又は専用処理コンポーネントであってもよい。計算ユニット701のいくつかの例は、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、様々な専用の人工知能(AI)計算チップ、様々な機械学習モデルアルゴリズムを実行する計算ユニット、デジタル信号プロセッサ(DSP)、及び任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット701は、プロセス200などの上記で説明される各方法及び処理を実行する。例えば、本開示のいくつかの例示的な実施例では、プロセス200は、記憶ユニット708のような機械読み取り可能な媒体に有形的に含まれるコンピュータソフトウエアプログラムとして実現することができる。本開示のいくつかの例示的な実施例では、コンピュータプログラムの一部又は全ては、ROM702及び/又は通信ユニット709を介して、機器700にロード及び/又はインストールすることができる。コンピュータプログラムがRAM703にロードされて計算ユニット701によって実行される場合に、前述した方法200の一つ又は複数のステップを実行することができる。追加的に、他の実施例では、計算ユニット701は、他の任意の適当な方式(例えば、ファームウェアを借りる)によりプロセス200を実行するように構成される。
本明細書の説明された機能は、一つ又は複数のハードウェアロジックコンポーネントによって実現することができる。限定ではなく、例として、使用可能なハードウェアロジックコンポーネントとしては、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準品(ASSP)、システムオンチップ(SOC)、コンプレックスプログラマブルロジックデバイス(CPLD)などが挙げられる。
本開示の方法を実施するためのプログラムコードは、一つ又は複数のプログラミング言語の任意の組み合わせにより作成することができる。これらのプログラムコードは、汎用コンピュータ、専門コンピュータ又はその他のプログラミングデータ処理装置のプロセッサ又はコントローラに提供されることにより、プログラムコードがプロセッサ又はコントローラによって実行される場合に、フローチャート及び/又はブロック図に規定された機能/動作を実行することができる。プログラムコードは、完全にマシンで実行されてもよく、部分的にマシンで実行されてもよく、独立したソフトパッケージとして部分的にマシンで実行されるとともに、部分的にリモートマシンで実行されてもよく、又は完全にリモートマシン又はサーバで実行されてもよい。
本開示の説明において、機械読み取り可能な媒体は、有形な媒体であってもよく、命令実行システム、装置又は機器によって、又は命令実行システム、装置又は機器と合わせて使用されるプログラムを含み、又は記憶する。機械読み取り可能な媒体は、機械読み取り可能な信号媒体又は機械読み取り可能な記憶媒体であってもよい。機械読み取り可能な媒体は、電子、磁気、光学、電磁、赤外線、又は半導体システム、装置、又はデバイス、又は前述した内容の任意の適切な組み合わせを含むことができるがこれらに限定されない。機械読み取り可能な記憶媒体のさらなる具体例として、1つ又は複数の配線による電気的接続、ポータブルコンピュータディスクカートリッジ、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能なプログラマブルリードオンリーメモリ(EPROM又はフラッシュメモリ)、光ファイバー、ポータブルコンパクトディスクリードオンリーメモリ(CD-ROM)、光学記憶装置、磁気記憶装置、又は前述した内容の任意の組み合わせを含む。
また、特定の順番で各動作を説明したが、このような動作を、示される特定の順番又は順次実行することが求められ、又は図示した動作の全てを実行して所望の結果を取得することが求められることを理解されたい。一定の環境において、複数のタスク及び並列処理が有利である可能性がある。同様に、以上の説明には、若干の具体的な実現の詳細が含まれたが、それが本開示の範囲を限定するものと理解されてはならない。個別の実施例に説明された一部の特徴は、一つの実施形態で組み合わせて実現することができる。逆に、一つの実施形態に説明された種々な特徴は、個別又は任意の適切なサブ組み合わせの方式で複数の実施形態で実現することができる。
構成の特徴及び/又は方法の論理動作に特有の言語で本テーマを説明したが、特許請求の範囲で限定される本題は、上記の特定の特徴又は動作に限定されない。逆に、上記の特定の特徴と動作は、特許請求の範囲を実現する例に過ぎない。

Claims (28)

  1. コンピューティングデバイスによって実行されるベクトル演算を構成する方法であって、
    少なくとも一つの構成可能なベクトル演算パラメータを示す情報を取得するステップであって、前記少なくとも一つの構成可能なベクトル演算パラメータの情報は、前記構成可能なベクトル演算パラメータのタイプ及び値を示すステップと、
    前記構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニットを構成して、前記複数のベクトル演算ユニット内の各ベクトル演算ユニットが、前記構成可能なベクトル演算パラメータのタイプ及び値によって定義される、二つ以上の基本ベクトル演算で構成されるターゲットベクトル演算を実行可能にするステップと、を含む、
    ことを特徴とするコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  2. 前記構成可能なベクトル演算パラメータのタイプは、スカラタイプ及びベクトルタイプを含む、
    ことを特徴とする請求項1に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  3. 前記少なくとも一つの構成可能なベクトル演算パラメータを示す前記情報は、
    前記構成可能なベクトル演算パラメータのタイプがスカラタイプであることを明示的に又は暗黙的に示す第1の指示と、
    前記構成可能なベクトル演算パラメータの数値と、を含む、
    ことを特徴とする請求項2に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  4. 少なくとも一つの構成可能なベクトル演算パラメータを示す情報を取得するステップは、
    前記構成可能なベクトル演算パラメータの前記数値を取得するステップと、
    取得された前記構成可能なベクトル演算パラメータの数値をスカラストレージデバイスに記憶するステップと、を含む、
    ことを特徴とする請求項3に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  5. 前記構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニットを構成するステップは、
    セレクタを介して前記構成可能なベクトル演算パラメータの前記数値を取得し、前記構成可能なベクトル演算パラメータの前記数値を前記複数のベクトル演算ユニット内の各ベクトル演算ユニットに適用するステップを含む、
    ことを特徴とする請求項3又は4に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  6. 前記方法は、
    前記構成可能なベクトル演算パラメータのベクトル値を取得するステップと、
    前記構成可能なベクトル演算パラメータのベクトル値をベクトルストレージデバイスに記憶するステップと、
    前記構成可能なベクトル演算パラメータのベクトル値のストレージ情報を生成するステップであって、前記少なくとも一つの構成可能なベクトル演算パラメータを示す前記情報は、前記ストレージ情報を含むステップと、をさらに含む、
    ことを特徴とする請求項2に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  7. 前記構成可能なベクトル演算パラメータのベクトル値の次元は、前記複数のベクトル演算ユニットの数に対応する、
    ことを特徴とする請求項6に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  8. 前記構成可能なベクトル演算パラメータを示す前記情報は、
    前記構成可能なベクトル演算パラメータのタイプがベクトルタイプであることを明示的に又は暗黙的に示す第2の指示をさらに含む、
    ことを特徴とする請求項6に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  9. 前記構成可能なベクトル演算パラメータのタイプ及び値に基づいて、複数のベクトル演算ユニットを構成するステップは、
    前記構成可能なベクトル演算パラメータの前記ストレージ情報を取得するステップと、
    前記構成可能なベクトル演算パラメータの前記ストレージ情報に基づいて、セレクタを介して前記構成可能なベクトル演算パラメータの前記ベクトル値を取得し、前記構成可能なベクトル演算パラメータの前記ベクトル値の異なる次元の値を、前記複数のベクトル演算ユニット内の各ベクトル演算ユニットにそれぞれ適用するステップと、を含む、
    ことを特徴とする請求項6に記載のコンピューティングデバイスによって実行されるベクトル演算を構成する方法。
  10. 複数のベクトル演算ユニットを含むコンピューティングデバイスによって実行されるベクトル演算の方法であって、
    前記方法は、
    演算対象のベクトルデータを取得するステップと、
    取得されたベクトルデータに対して、ベクトル演算結果を出力するために、前記複数のベクトル演算ユニットによってベクトル演算を実行するステップと、を含み、
    前記ベクトル演算は、請求項1~9のいずれかに記載の方法によって構成される、
    ことを特徴とするコンピューティングデバイスによって実行されるベクトル演算の方法。
  11. 前記方法は、
    ベクトルストレージデバイスにベクトルデータをキャッシュするステップをさらに含む、
    ことを特徴とする請求項10に記載のコンピューティングデバイスによって実行されるベクトル演算の方法。
  12. コンピューティングデバイスであって、
    少なくとも一つの構成可能なベクトル演算パラメータを示す情報を取得するように構成されるコントローラであって、前記少なくとも一つの構成可能なベクトル演算パラメータの情報は、前記構成可能なベクトル演算パラメータのタイプ及び値を示すコントローラと、
    複数のベクトル演算ユニットを含む計算ユニットであって、前記構成可能なベクトル演算パラメータのタイプ及び値に基づいて、前記複数のベクトル演算ユニットを構成して、前記複数のベクトル演算ユニット内の各ベクトル演算ユニットが、前記構成可能なベクトル演算パラメータのタイプ及び値によって定義される、二つ以上の基本ベクトル演算で構成されるターゲットベクトル演算を実行可能にするように構成される計算ユニットと、を含む、
    ことを特徴とするコンピューティングデバイス。
  13. 前記構成可能なベクトル演算パラメータのタイプは、スカラタイプ及びベクトルタイプを含む、
    ことを特徴とする請求項12に記載のコンピューティングデバイス。
  14. 前記少なくとも一つの構成可能なベクトル演算パラメータを示す前記情報は、
    前記構成可能なベクトル演算パラメータのタイプがスカラタイプであることを明示的に又は暗黙的に示す第1の指示と、
    前記構成可能なベクトル演算パラメータの数値と、を含む、
    ことを特徴とする請求項13に記載のコンピューティングデバイス。
  15. 前記コンピューティングデバイスは、
    前記構成可能なベクトル演算パラメータの前記数値を記憶するように構成されるスカラストレージデバイスをさらに含み、
    コントローラは、
    前記構成可能なベクトル演算パラメータの前記数値を取得し、
    取得された前記構成可能なベクトル演算パラメータの前記数値を前記スカラストレージデバイスに記憶するように構成される、
    ことを特徴とする請求項14に記載のコンピューティングデバイス。
  16. 前記計算ユニットは、
    前記構成可能なベクトル演算パラメータの数値を取得するように構成されるセレクタと、
    前記セレクタによって取得された前記構成可能なベクトル演算パラメータの数値を前記複数のベクトル演算ユニット内の各ベクトル演算ユニットに適用するように構成されるスカラパラメータ構成モジュールと、をさらに含む、
    ことを特徴とする請求項14又は15に記載のコンピューティングデバイス。
  17. 前記コンピューティングデバイスは、
    前記構成可能なベクトル演算パラメータのベクトル値を記憶するように構成されるベクトルストレージデバイスと、
    前記構成可能なベクトル演算パラメータの前記ベクトル値を取得し、前記構成可能なベクトル演算パラメータの前記ベクトル値を前記ベクトルストレージデバイスに記憶し、前記構成可能なベクトル演算パラメータのベクトル値のストレージ情報を生成するように構成されるベクトルパラメータ取得モジュールと、をさらに含み、
    前記少なくとも一つの構成可能なベクトル演算パラメータを示す前記情報には、前記ストレージ情報を含む、
    ことを特徴とする請求項13に記載のコンピューティングデバイス。
  18. 前記構成可能なベクトル演算パラメータのベクトル値の次元は、前記複数のベクトル演算ユニットの数に対応する、
    ことを特徴とする請求項17に記載のコンピューティングデバイス。
  19. 前記構成可能なベクトル演算パラメータを示す前記情報は、
    前記構成可能なベクトル演算パラメータのタイプがベクトルタイプであることを明示的に又は暗黙的に示す第2の指示をさらに含む、
    ことを特徴とする請求項17に記載のコンピューティングデバイス。
  20. 前記コントローラは、さらに、前記構成可能なベクトル演算パラメータのストレージ情報を取得するように構成され、
    前記演算ユニットは、
    前記構成可能なベクトル演算パラメータのストレージ情報に基づいて前記構成可能なベクトル演算パラメータのベクトル値を取得するように構成されるセレクタと、
    前記セレクタによって取得された前記構成可能なベクトル演算パラメータの前記ベクトル値の異なる次元の値を、前記複数のベクトル演算ユニット内の各ベクトル演算ユニットにそれぞれ適用するように構成されるベクトルパラメータ構成モジュールと、を含む、
    ことを特徴とする請求項17に記載のコンピューティングデバイス。
  21. コンピューティングデバイスであって、
    演算対象のベクトルデータを取得し、取得されたベクトルデータに対して、ベクトル演算結果を出力するために、前記複数のベクトル演算ユニットを操作してベクトル演算を実行するように構成される複数のベクトル演算ユニットを含む計算ユニットを含み、
    前記ベクトル演算は、請求項1~9のいずれかに記載の方法によって構成される、
    ことを特徴とするコンピューティングデバイス。
  22. 前記コンピューティングデバイスは、
    前記演算対象のベクトルデータを記憶するように構成されるベクトルストレージデバイスと、
    ベクトルストレージデバイスにベクトルデータをキャッシュするように構成されるベクトルデータ取得モジュールと、をさらに含む、
    ことを特徴とする請求項21に記載のコンピューティングデバイス。
  23. 電子機器であって、
    一つ又は複数のプロセッサと、
    一つ又は複数のプログラムを記憶するための記憶装置と、を含み、
    前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサにより実行される場合に、前記一つ又は複数のプロセッサが、請求項1~9のいずれかに記載の方法を実現する、
    ことを特徴とする電子機器。
  24. コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
    前記プログラムがプロセッサにより実行される場合に、請求項1~9のいずれかに記載の方法が実現される、
    ことを特徴とするコンピュータ読み取り可能な記憶媒体。
  25. コンピュータ読み取り可能な記憶媒体に記憶されているコンピュータプログラムであって、
    前記コンピュータプログラムにおける命令が実行される場合に、請求項1~9のいずれかに記載の方法が実現される、
    ことを特徴とするコンピュータプログラム。
  26. 電子機器であって、
    一つ又は複数のプロセッサと、
    一つ又は複数のプログラムを記憶するための記憶装置と、を含み、
    前記一つ又は複数のプログラムが前記一つ又は複数のプロセッサにより実行される場合に、前記一つ又は複数のプロセッサが、請求項10または11に記載の方法を実現する、
    ことを特徴とする電子機器。
  27. コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、
    前記プログラムがプロセッサにより実行される場合に、請求項10または11に記載の方法が実現される、
    ことを特徴とするコンピュータ読み取り可能な記憶媒体。
  28. コンピュータ読み取り可能な記憶媒体に記憶されているコンピュータプログラムであって、
    前記コンピュータプログラムにおける命令が実行される場合に、請求項10または11に記載の方法が実現される、
    ことを特徴とするコンピュータプログラム。
JP2020108978A 2019-07-25 2020-06-24 コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体 Active JP7042870B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910677739.9 2019-07-25
CN201910677739.9A CN112286578A (zh) 2019-07-25 2019-07-25 由计算设备执行的方法、装置、设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
JP2021022370A JP2021022370A (ja) 2021-02-18
JP7042870B2 true JP7042870B2 (ja) 2022-03-28

Family

ID=70008361

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020108978A Active JP7042870B2 (ja) 2019-07-25 2020-06-24 コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体

Country Status (5)

Country Link
US (1) US11221851B2 (ja)
EP (1) EP3770756B1 (ja)
JP (1) JP7042870B2 (ja)
KR (1) KR102471553B1 (ja)
CN (1) CN112286578A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489506B (zh) * 2022-01-21 2024-02-27 杭州海康存储科技有限公司 存储访问控制装置、方法及存储设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59114677A (ja) * 1982-12-22 1984-07-02 Hitachi Ltd ベクトル処理装置
JPH02176971A (ja) * 1988-12-28 1990-07-10 Koufu Nippon Denki Kk ベクトル演算装置
JPH04181373A (ja) * 1990-11-15 1992-06-29 Koufu Nippon Denki Kk ベクトル処理装置
JP2970512B2 (ja) * 1995-12-28 1999-11-02 日本電気株式会社 ベクトルプロセッサ
US20020133688A1 (en) * 2001-01-29 2002-09-19 Ming-Hau Lee SIMD/MIMD processing on a reconfigurable array
US20040193837A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
EP1758030B1 (en) * 2005-08-22 2009-05-27 Panasonic Corporation Dynamically reconfigurable shared baseband engine
KR101259133B1 (ko) * 2009-11-11 2013-04-30 삼성중공업 주식회사 동작 중 재구성이 가능한 제어 시스템 및 그 방법
KR101699910B1 (ko) * 2010-03-04 2017-01-26 삼성전자주식회사 재구성 가능 프로세서 및 그 제어 방법
GB2489914B (en) * 2011-04-04 2019-12-18 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector operations
US10762164B2 (en) * 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
GB2553783B (en) * 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US10402527B2 (en) * 2017-01-04 2019-09-03 Stmicroelectronics S.R.L. Reconfigurable interconnect
US11586907B2 (en) * 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
US10628162B2 (en) * 2018-06-19 2020-04-21 Qualcomm Incorporated Enabling parallel memory accesses by providing explicit affine instructions in vector-processor-based devices

Also Published As

Publication number Publication date
EP3770756A1 (en) 2021-01-27
CN112286578A (zh) 2021-01-29
KR102471553B1 (ko) 2022-11-28
EP3770756B1 (en) 2024-05-01
US20210026630A1 (en) 2021-01-28
KR20210012886A (ko) 2021-02-03
US11221851B2 (en) 2022-01-11
JP2021022370A (ja) 2021-02-18

Similar Documents

Publication Publication Date Title
KR102175044B1 (ko) 인공 신경망 역방향 트레이닝 실행용 장치와 방법
US9910714B2 (en) Scriptable dynamic load balancing in computer systems
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
KR102333845B1 (ko) 칩 기반의 컴퓨팅 기능 생성 방법, 장치, 기기 및 저장 매체
JP2013512511A (ja) 複数メモリ特定用途向けデジタル信号プロセッサ
CN112463159A (zh) 编译方法、装置、电子设备和存储介质
JP7042870B2 (ja) コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体
US10255399B2 (en) Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect
CN110704193B (zh) 一种适合向量处理的多核软件架构的实现方法及装置
US10310823B2 (en) Program development support system and program development support software
CN112465116B (zh) 编译方法、运算方法、电子设备和存储介质
CN116185378A (zh) 计算图的优化方法、数据处理方法及相关产品
CN116185377A (zh) 计算图的优化方法、计算装置及相关产品
CN111966399B (zh) 指令处理方法、装置及相关产品
JP6305644B2 (ja) アーキテクチャ生成装置およびアーキテクチャ生成プログラム
US20240126617A1 (en) Deep fusion of kernel execution
JP6266183B2 (ja) 回路設計支援装置および回路設計支援プログラム
JP2023064860A (ja) 命令生成方法、演算処理装置及び命令生成装置
CN117075902A (zh) 基于张量的编译方法、设备及其计算机可读存储介质
CN118051261A (zh) 指令融合方法、设备及存储介质
TW202416185A (zh) 核心執行的深度融合
KR20240095625A (ko) 인공지능 가속기의 벡터 프로세싱 기능 업데이트를 위한 방법 및 장치
CN115280272A (zh) 数据存取电路和方法
CN112395001A (zh) 运算方法、装置、计算机设备和存储介质
CN117827419A (zh) 一种基于多裸片的计算方法及相关设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200624

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211005

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20211018

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20220204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220315

R150 Certificate of patent or registration of utility model

Ref document number: 7042870

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150