JP7225314B2 - N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 - Google Patents
N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 Download PDFInfo
- Publication number
- JP7225314B2 JP7225314B2 JP2021096509A JP2021096509A JP7225314B2 JP 7225314 B2 JP7225314 B2 JP 7225314B2 JP 2021096509 A JP2021096509 A JP 2021096509A JP 2021096509 A JP2021096509 A JP 2021096509A JP 7225314 B2 JP7225314 B2 JP 7225314B2
- Authority
- JP
- Japan
- Prior art keywords
- tensor
- value
- inner loop
- loop
- index
- 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
Links
- 238000000034 method Methods 0.000 title claims description 21
- 230000015654 memory Effects 0.000 claims description 83
- 230000004044 response Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
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)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
背景
本明細書は、一般に、メモリアドレス値を計算するためのレジスタの使用に関する。レジスタは、分岐条件の処理に使用され得る。
本明細書に記載されている主題の1つの革新的な側面によれば、レジスタは、入れ子ループ構造を反復し、対応するメモリアドレスを計算し、プログラマがループ境界条件を処理することを可能にすることに使用できる。一般に、レジスタは、ループ境界値、各ループにおける現在のループインデックス変数、メモリアドレス値を計算するための次元乗数、および分岐ループ境界を処理するためのプログラムカウンタ値を含むアーキテクチャステータスのいくつかのセットを維持するように配置され得る。当該配置は、1つ以上の多次元データ構造の処理にとって有効であり得る。これらのアーキテクチャステータスセットにより、プロセッサは、インデックス変数を新たな位置に移動させ、メモリアドレス値を検索し、新たな分岐先にジャンプするための命令を実行し得る。
有し得る。上記命令は、第1のループと上記第1のループの外側ループである第2のループとを含む入れ子ループを処理するための命令を表わし得て、上記第1のループは、第1のインデックス変数を用いて反復され、上記第2のループは、第2のインデックス変数を用いて反復される。
れ得る。上記第2のインデックス変数は、上記第2のループが完了するたびに第2のインクリメント値だけインクリメントされ得る。上記第2のテンソルインデックス要素に記憶された上記値を更新するために、上記第2のテンソルインデックス要素に記憶された上記値は、上記第2のインクリメント値だけインクリメントされ得る。
詳細な説明
一般に、ソフトウェアアルゴリズムがN次元テンソルを処理する際には、入れ子ループが使用され得て、各ループは、N次元テンソルの各次元をトラバースする役割を果たしている。多次元テンソルは、マトリクスまたは多次元マトリクスであってもよい。N次元テンソルの各次元は、1つ以上の要素を含み得て、各要素は、それぞれのデータ値を記憶し得る。例えば、テンソルは、プログラムにおける変数であってもよく、当該変数は、3つの次元を有し得る。第1の次元は、300個の要素の長さを有し得て、第2の次元は、1000個の要素の長さを有し得て、第3の次元は、20個の要素の長さを有し得る。入れ子ループにおいてテンソルをトラバースするには、要素の対応するデータ値をロードまたは記憶するために当該要素のメモリアドレス値の計算を必要とする。例えば、forループは入れ子ループであり、3つのループインデックス変数によって追跡される3つのループは、三次元テンソルをトラバースするように入れ子にされることができる。場合によっては、プロセッサは、外側ループインデックス変数により内側ループのループ境界を設定するなどのループ境界条件を実行する必要があるかもしれない。例えば、入れ子ループの最も内側のループを出るか否かを判断する際に、プログラムは、入れ子ループの最も内側のループのループインデックス変数の現在の値と、入れ子ループの最も外側のループのループインデックス変数の現在の値とを比較し得る。
ソルをトラバースする際にプロセッサが処理しなければならない次元の数を減少させることによってプロセッサの計算帯域幅を増加させ得る。
に構成される。処理ユニット102は、1つ以上のプロセッサを含み得る。記憶媒体104は、計算システム100内の情報を記憶する。いくつかの実現例では、記憶媒体104は、揮発性メモリユニットである。いくつかの他の実現例では、記憶媒体104は、不揮発性メモリユニットである。また、記憶媒体104は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含むデバイスの配列などの、別の形態のコンピュータ読取可能な媒体であってもよい。命令は、処理ユニット102によって実行されたときに、処理ユニット102に1つ以上のタスクを実行させる。
例えば、演算論理ユニット124は、加算、減算、乗算、除算、論理積、論理和、またはその他の好適な演算および論理オペレーションを実行するように構成されたデジタル回路を含んでもよい。
は、テンソル境界要素204の各行は、テンソルのためのテンソル境界情報を表わし得る。例えば、プログラムが2つの配列変数V1およびV2を規定する場合、テンソルトラバースユニットは、配列変数V1およびV2のためのテンソル境界情報をそれぞれ追跡するために行204aおよび204bを割り当ててもよい。いくつかの実現例では、テンソル境界要素204の各列は、テンソルに関連付けられる入れ子ループインデックス変数値のためのテンソル境界情報を表わし得る。例えば、プログラムが変数V1にアクセスするための3つのループを有する入れ子ループを規定し、入れ子ループの各ループが入れ子ループインデックス変数i、jおよびkによって指標付けされる場合、テンソルトラバースユニットは、入れ子ループインデックス変数i、jおよびkにそれぞれ関連付けられるテンソル境界情報を追跡するためにテンソル境界要素Y1,1、Y1,2およびY1,3を割り当ててもよい。テンソル境界情報については、以下の図2Cを参照して以下でより詳細に説明する。
1,1)は2に設定される。
と要素Z1,2に記憶された値とを乗算し、要素X1,1に記憶された値と要素Z1,1に記憶された値とを乗算する。次いで、演算論理ユニットは、全ての乗算結果を合計して、アクセスされている要素に対応するメモリアドレスを決定する。テンソルインデックス要素202における全ての値がゼロであるので、ボックス230によって示されるようにメモリアドレスオフセットはゼロである。次いで、プロセッサは、ベースメモリアドレス(すなわちP)をメモリアドレスオフセット(すなわち0)に加算してメモリアドレスを決定し、決定されたメモリアドレスに基づいて記憶媒体に記憶されたデータにアクセスすることによって、要素V[0][0]にアクセスすることができる。
ユニットは、最低のインデックスを有するテンソルインデックス要素を予め定められた値だけインクリメントすることによってテンソルインデックス要素202を更新する。例えば、図2Fを参照して、テンソルトラバースユニットは、テンソルインデックス要素228(すなわちX1,1)を1だけインクリメントしてもよい。いくつかの他の実現例では
、テンソルトラバースユニットは、最低のインデックスを有するテンソルインデックス要素を予め定められた値だけデクリメントすることによってテンソルインデックス要素202を更新してもよい。
ットは、テンソルインデックス要素228(すなわちX1,1)を1だけインクリメントしてもよい。テンソルトラバースユニットは、テンソルインデックス要素228における更新された値(すなわち2)とテンソル境界要素216における値(すなわち2)とを比較し、テンソルインデックス要素228における更新された値がテンソル境界要素216における値よりも小さくないと判断し得る。いくつかの実現例では、閾値が満たされていないと判断したことに応答して、テンソルトラバースユニットは、更新された値を次のテンソルインデックス要素に繰り越して、現在のテンソルインデックス要素をリセットし得る。例えば、テンソルインデックス要素228における更新された値がテンソル境界要素216における値よりも小さくないので、テンソルトラバースユニットは、テンソルインデックス要素226を1だけインクリメントし、テンソルインデックス要素228をゼロにリセットしてもよい。
V[3][1]に対応するメモリアドレスの位置を突き止めるための命令「LocateTensor」を実行することによって要素V[3][1]にアクセスすることができる。図2Hを参照して、テンソルインデックス要素226および228以外のテンソルインデックス要素202における全ての値は、ゼロである。テンソルインデックス要素226は3という値を有し、テンソルインデックス要素228は1という値を有する。演算論理ユニットは、ボックス236によって示されるようにメモリアドレスオフセットが7であると判断し得る。次いで、プロセッサは、ベースメモリアドレス(すなわちP)をメモリアドレスオフセット(すなわち7)に加算してメモリアドレスを決定し、決定されたメモリアドレスに基づいて記憶媒体に記憶されたデータにアクセスすることによって、要素V[3][1]にアクセスすることができる。
素228(すなわちX1,1)を1だけインクリメントしてもよい。テンソルトラバースユニットは、テンソルインデックス要素228における更新された値(すなわち2)とテンソル境界要素216における値(すなわち2)とを比較し、テンソルインデックス要素228における更新された値がテンソル境界要素216における値よりも小さくないと判断し得る。テンソルインデックス要素228における更新された値がテンソル境界要素216における値よりも小さくないので、テンソルトラバースユニットは、テンソルインデックス要素226を1だけインクリメントし、テンソルインデックス要素228をゼロにリセットし得る。テンソルトラバースユニットは、テンソルインデックス要素226における更新された値(すなわち3+1=4)とテンソル境界要素214における値(すなわち4)とを比較し、テンソルインデックス要素226における更新された値がテンソル境界要素214における値よりも小さくないと判断し得る。テンソルインデックス要素228における更新された値がテンソル境界要素214における値よりも小さくないので、テンソルトラバースユニットは、次のテンソルインデックス要素(すなわちX1,3)を1だけインクリメントし、テンソルインデックス要素226をゼロにリセットし得る。しかし、対応するテンソル境界要素(すなわちY1,3)がゼロであるので、閾値は満たされない。テンソルトラバースユニットは、第1の行における全てのテンソルインデックス要素がゼロにリセットされるまでテンソルインデックス要素202の第1の行をリセットし続けるであろう。
岐先情報を表わし得る。いくつかの実現例では、分岐先要素308の各列は、テンソルに関連付けられる入れ子ループインデックス変数値のための分岐先情報を表わし得る。いくつかの実現例では、テンソルインデックス要素302、テンソル境界要素304および次元乗数要素306のためにN個の列が存在するN次元テンソルでは、対応する分岐先308のN+1個の列が存在し得る。なぜなら、境界閾値を満たすためのN+1個の場合があるからである。
1の次元をトラバースし、入れ子ループインデックス変数jによって追跡される内側ループにおけるVの第2の次元をトラバースする。
2に記憶された値と要素Z1,2に記憶された値とを乗算し、要素X1,1に記憶された値と要素Z1,1に記憶された値とを乗算する。次いで、演算論理ユニットは、全ての乗算された積を合計して、アクセスされている要素に対応するメモリアドレスを決定する。
ックス要素に記憶された値を更新するための命令を受取った後、当該システムは、第1のテンソルインデックス要素に記憶された値と第1のテンソル境界要素に記憶された値との間の差が閾値を満たすと判断し得る。第1のテンソルインデックス要素に記憶された値と第1のテンソル境界要素に記憶された値との間の差が閾値を満たすと判断したことに応答して、当該システムは、第1のテンソルインデックス要素に記憶された値を更新し得る。例えば、図2Fを参照して、テンソルトラバースユニットは、テンソルインデックス要素228(すなわちX1,1)を1だけインクリメントしてもよい。テンソルインデックス要素228における更新された値は、テンソル境界要素216における値よりも小さく、テンソルインデックス要素228における更新された値は、1のままである。
ックス要素に記憶された値を更新するための命令を受取った後、当該システムは、第1のテンソルインデックス要素に記憶された値と第1のテンソル境界要素に記憶された値との間の差が閾値を満たさないと判断し得る。第1のテンソルインデックス要素に記憶された値と第1のテンソル境界要素に記憶された値との間の差が閾値を満たさないと判断したことに応答して、当該システムは、第1のテンソルインデックス要素に記憶された値をリセットし、第2のテンソルインデックス要素に記憶された値を更新し得る。例えば、テンソルトラバースユニットは、テンソルインデックス要素228(すなわちX1,1)を1だけインクリメントしてもよい。テンソルトラバースユニットは、テンソルインデックス要素228における更新された値(すなわち2)とテンソル境界要素216における値(すなわち2)とを比較し、テンソルインデックス要素228における更新された値がテンソル境界要素216における値よりも小さくないと判断し得る。テンソルインデックス要素228における更新された値がテンソル境界要素216における値よりも小さくないので、テンソルトラバースユニットは、テンソルインデックス要素226を1だけインクリメントし、テンソルインデックス要素228をゼロにリセットし得る。
する1つ以上のプログラム可能なコンピュータによって実行されてもよい。また、当該プロセスおよび論理フローは、特殊用途論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)またはGPGPU(汎用グラフィックス処理ユニット)によって実行されてもよく、そのようなものとして装置が実現されてもよい。
digital assistant:PDA)、携帯型オーディオもしくはビデオプレーヤ、ゲーム機、グローバルポジショニングシステム(Global Positioning System:GPS)受信機、ま
たは携帯記憶装置、例えばユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブに組み込まれてもよい。
たは1つ以上のこのようなバックエンド、ミドルウェアまたはフロントエンドコンポーネントの任意の組み合わせを含む計算システムで実現されてもよい。システムのコンポーネントは、デジタルデータ通信、例えば通信ネットワークの任意の形態または媒体によって相互接続されてもよい。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、例えばインターネットが挙げられる。
Claims (20)
- 多次元テンソル入力を処理するための装置であって、
N次元テンソルをトラバースするために使用される複数の入れ子ループの各々のためのテンソルインデックス要素を含む複数のテンソルインデックス要素を備え、各テンソルインデックス要素は、前記N次元テンソルのそれぞれの次元をトラバースするために使用されるそれぞれの入れ子ループのためのインデックス値を格納するように構成されたそれぞれの第1のハードウェアレジスタにより実装され、前記N次元テンソルは、N個の次元の各々にわたって配置されたデータ要素を含み、Nは、1以上の整数であり、各インデックス値は、前記インデックス値の前記それぞれの入れ子ループの反復が実行されるたびに更新される値であり、前記装置はさらに、
複数の次元乗数要素を備え、各次元乗数要素は、前記N次元テンソルのそれぞれの次元の乗数値を格納するように構成されたそれぞれの第2のハードウェアレジスタにより実装され、各乗数値は、前記乗数値についての前記N次元テンソルの前記それぞれの次元について一定の値であって、前記それぞれの次元をトラバースするために使用される前記それぞれの入れ子ループの各反復の間は一定のままであり、前記装置はさらに、
1つまたは複数のハードウェアプロセッサを備え、前記1つまたは複数のハードウェアプロセッサは、前記1つまたは複数のハードウェアプロセッサによって実行可能な命令セットの1つまたは複数の命令を実行するように構成され、前記1つまたは複数の命令の実行は、前記1つまたは複数のハードウェアプロセッサに動作を実行させ、前記動作は、
前記N次元テンソルの一連のデータ要素のデータ値を格納するためのメモリ内の位置のメモリアドレスを決定することを備え、前記メモリアドレスを決定することは、
前記入れ子ループの内側ループの各反復の間に、
前記N次元テンソルの各次元について、(i)前記次元をトラバースするために使用される前記入れ子ループのための前記テンソルインデックス要素に格納された前記インデックス値と、(ii)前記次元の前記乗数値との積を求めることと、
前記N次元テンソルの各次元についての前記積の合計に基づいて、前記内側ループの前記反復に対応するデータ要素のメモリアドレスを決定することとによってなされ、
前記動作はさらに、
前記N次元テンソルの前記一連のデータ要素における各データ要素の前記決定されたメモリアドレスを示すデータを出力することを備える、装置。 - 前記N次元テンソルの各次元についての前記積の合計に基づいて、前記内側ループの前記反復に対応するデータ要素の前記メモリアドレスを決定することは、(i)前記N次元テンソルの各次元についての前記積の前記合計と、(ii)ベースメモリアドレスとの合計を求めることを備える、請求項1に記載の装置。
- 各データ要素の前記決定されたメモリアドレスを示すデータを出力することは、前記メモリアドレスが決定されるときに順番に、各データ要素の前記決定されたメモリアドレスを示すデータをシーケンシャルに出力することを備える、請求項1または2に記載の装置。
- 前記1つまたは複数のハードウェアプロセッサはさらに、
前記内側ループの前記インデックス値を、前記内側ループが完了するたびに第1のインクリメント値だけインクリメントするように構成され、
前記内側ループが入れ子にされる第2のループのインデックス値を、前記第2のループが完了するたびに第2のインクリメント値だけインクリメントするように構成される、請求項1~3のいずれか1項に記載の装置。 - 前記1つまたは複数のハードウェアプロセッサはさらに、
前記内側ループの前記インデックス値を更新するための命令を受取るように構成され、
前記内側ループの前記インデックス値を更新するための前記命令を受取った後、前記内側ループの前記インデックス値と前記内側ループのテンソル境界要素に格納されたテンソル境界値との間の差が閾値を満たすことを判断するように構成され、
前記差が前記閾値を満たすと判断したことに応答して、前記内側ループの前記インデックス値を第1のインクリメント値だけインクリメントするように構成される、請求項1~4のいずれか1項に記載の装置。 - 前記1つまたは複数のハードウェアプロセッサはさらに、
前記内側ループの前記インデックス値を更新するための命令を受取るように構成され、
前記内側ループの前記インデックス値を更新するための前記命令を受取った後、前記内側ループの前記インデックス値と前記内側ループのテンソル境界要素に格納されたテンソル境界値との間の差が閾値を満たさないことを判断するように構成され、
前記差が前記閾値を満たさないと判断したことに応答して、前記内側ループの前記インデックス値を前記内側ループの初期値にリセットするように構成され、
前記差が前記閾値を満たさないと判断したことに応答して、前記内側ループが入れ子にされる第2のループのインデックス値を第2のインクリメント値だけインクリメントするように構成される、請求項1~5のいずれか1項に記載の装置。 - 前記1つまたは複数のハードウェアプロセッサは、1つまたは複数の演算論理ユニットを含む、請求項1~6のいずれか1項に記載の装置。
- システムであって、
N次元テンソル上で線形演算を実行するように構成された1つまたは複数のハードウェアプロセッサを備え、前記N次元テンソルは、N個の次元の各々にわたって配置されたデータ要素を有し、Nは、1以上の整数であり、前記システムはさらに、
前記N次元テンソルをトラバースするために使用される複数の入れ子ループの各々のためのテンソルインデックス要素を含む複数のテンソルインデックス要素を備え、各テンソルインデックス要素は、前記N次元テンソルのそれぞれの次元をトラバースするために使用されるそれぞれの入れ子ループのためのインデックス値を格納するように構成されたそれぞれの第1のハードウェアレジスタにより実装され、各インデックス値は、前記インデックス値の前記それぞれの入れ子ループの反復が実行されるたびに更新される値であり、前記システムはさらに、
複数の次元乗数要素を備え、各次元乗数要素は、前記N次元テンソルのそれぞれの次元の乗数値を格納するように構成されたそれぞれの第2のハードウェアレジスタにより実装され、各乗数値は、前記乗数値についての前記N次元テンソルの前記それぞれの次元について一定の値であって、前記それぞれの次元をトラバースするために使用される前記それぞれの入れ子ループの各反復の間は一定のままであり、前記システムはさらに、
ハードウェア回路を備え、前記ハードウェア回路は、
前記N次元テンソルの一連のデータ要素のメモリアドレスを決定するように構成され、前記メモリアドレスを決定することは、
前記入れ子ループの内側ループの各反復の間に、
前記N次元テンソルの各次元について、(i)前記次元をトラバースするために使用される前記入れ子ループのための前記テンソルインデックス要素に格納された前記インデックス値と、(ii)前記次元の前記乗数値との積を求めることと、
前記N次元テンソルの各次元についての前記積の合計に基づいて、前記内側ループの前記反復に対応するデータ要素のメモリアドレスを決定することとによってなされ、
前記ハードウェア回路はさらに、
前記N次元テンソルの前記一連のデータ要素における各データ要素の前記決定されたメモリアドレスを示すデータを出力するように構成される、システム。 - 前記N次元テンソルの各次元についての前記積の合計に基づいて、前記内側ループの前記反復に対応するデータ要素の前記メモリアドレスを決定することは、(i)前記N次元テンソルの各次元についての前記積の前記合計と、(ii)ベースメモリアドレスとの合計を求めることを備える、請求項8に記載のシステム。
- 各データ要素の前記決定されたメモリアドレスを示すデータを出力することは、前記メモリアドレスが決定されるときに順番に、各データ要素の前記決定されたメモリアドレスを示すデータをシーケンシャルに出力することを備える、請求項8または9に記載のシステム。
- 前記ハードウェア回路はさらに、
前記内側ループの前記インデックス値を、前記内側ループが完了するたびに第1のインクリメント値だけインクリメントするように構成され、
前記内側ループが入れ子にされる第2のループのインデックス値を、前記第2のループが完了するたびに第2のインクリメント値だけインクリメントするように構成される、請求項8~10のいずれか1項に記載のシステム。 - 前記ハードウェア回路はさらに、
前記内側ループの前記インデックス値を更新するための命令を受取るように構成され、
前記内側ループの前記インデックス値を更新するための前記命令を受取った後、前記内側ループの前記インデックス値と前記内側ループのテンソル境界要素に格納されたテンソル境界値との間の差が閾値を満たすことを判断するように構成され、
前記差が前記閾値を満たすと判断したことに応答して、前記内側ループの前記インデックス値を第1のインクリメント値だけインクリメントするように構成される、請求項8~11のいずれか1項に記載のシステム。 - 前記ハードウェア回路はさらに、
前記内側ループの前記インデックス値を更新するための命令を受取るように構成され、
前記内側ループの前記インデックス値を更新するための前記命令を受取った後、前記内側ループの前記インデックス値と前記内側ループのテンソル境界要素に格納されたテンソル境界値との間の差が閾値を満たさないことを判断するように構成され、
前記差が前記閾値を満たさないと判断したことに応答して、前記内側ループの前記インデックス値を前記内側ループの初期値にリセットするように構成され、
前記差が前記閾値を満たさないと判断したことに応答して、前記内側ループが入れ子にされる第2のループのインデックス値を第2のインクリメント値だけインクリメントするように構成される、請求項8~12のいずれか1項に記載のシステム。 - 前記1つまたは複数のハードウェアプロセッサは、1つまたは複数の演算論理ユニットを含む、請求項8~13のいずれか1項に記載のシステム。
- 1つまたは複数のハードウェアプロセッサを備えるデータ処理装置によって実行される方法であって、前記1つまたは複数のハードウェアプロセッサは、前記1つまたは複数のハードウェアプロセッサによって実行可能な命令セットの1つまたは複数の命令を実行し、前記方法は、
前記1つまたは複数のハードウェアプロセッサが、N次元テンソルの一連のデータ要素のメモリアドレスを決定するステップを備え、前記N次元テンソルは、N個の次元の各々にわたって配置されたデータ要素を含み、Nは、1以上の整数であり、前記決定するステップは、
前記N次元テンソルをトラバースするために使用される複数の入れ子ループの内側ループの各反復の間に、前記1つまたは複数のハードウェアプロセッサが、前記N次元テンソルの各次元について、(i)前記次元をトラバースするために使用される前記入れ子ループのためのテンソルインデックス要素に格納されたインデックス値と、(ii)前記次元の次元乗数要素に格納された前記次元の乗数値との積を求めるステップを備え、
各入れ子ループは、対応するテンソルインデックス要素に格納された対応するインデックス値を有し、各テンソルインデックス要素は、それぞれの第1のハードウェアレジスタにより実装され、各インデックス値は、前記インデックス値に対応する前記入れ子ループの反復が実行されるたびに更新される値であり、
各入れ子ループは、対応する次元乗数要素に格納された対応する乗数値を有し、各次元乗数要素は、それぞれの第2のハードウェアレジスタにより実装され、各乗数値は、前記乗数値に対応する前記入れ子ループの各反復の間は一定のままである前記乗数値の前記次元について一定の値であって、
前記決定するステップはさらに、
前記N次元テンソルをトラバースするために使用される複数の入れ子ループの内側ループの各反復の間に、前記1つまたは複数のハードウェアプロセッサが、前記N次元テンソルの各次元についての前記積の合計に基づいて、前記内側ループの前記反復に対応するデータ要素のメモリアドレスを決定するステップを備え、
前記方法はさらに、
前記1つまたは複数のハードウェアプロセッサが、前記N次元テンソルの前記一連のデータ要素における各データ要素の前記決定されたメモリアドレスを示すデータを出力するステップを備える、方法。 - 前記N次元テンソルの各次元についての前記積の合計に基づいて、前記内側ループの前記反復に対応するデータ要素の前記メモリアドレスを決定するステップは、(i)前記N次元テンソルの各次元についての前記積の前記合計と、(ii)ベースメモリアドレスとの合計を求めるステップを備える、請求項15に記載の方法。
- 各データ要素の前記決定されたメモリアドレスを示すデータを出力するステップは、前記メモリアドレスが決定されるときに順番に、各データ要素の前記決定されたメモリアドレスを示すデータをシーケンシャルに出力するステップを備える、請求項15または16に記載の方法。
- 前記内側ループの前記インデックス値を、前記内側ループが完了するたびに第1のインクリメント値だけインクリメントするステップと、
前記内側ループが入れ子にされる第2のループのインデックス値を、前記第2のループが完了するたびに第2のインクリメント値だけインクリメントするステップとをさらに備える、請求項15~17のいずれか1項に記載の方法。 - 前記内側ループの前記インデックス値を更新するための命令を受取るステップと、
前記内側ループの前記インデックス値を更新するための前記命令を受取った後、前記内側ループの前記インデックス値と前記内側ループのテンソル境界要素に格納されたテンソル境界値との間の差が閾値を満たすことを判断するステップと、
前記差が前記閾値を満たすと判断したことに応答して、前記内側ループの前記インデックス値を第1のインクリメント値だけインクリメントするステップとをさらに備える、請求項15~18のいずれか1項に記載の方法。 - 前記内側ループの前記インデックス値を更新するための命令を受取るステップと、
前記内側ループの前記インデックス値を更新するための前記命令を受取った後、前記内側ループの前記インデックス値と前記内側ループのテンソル境界要素に格納されたテンソル境界値との間の差が閾値を満たさないことを判断するステップと、
前記差が前記閾値を満たさないと判断したことに応答して、前記内側ループの前記インデックス値を前記内側ループの初期値にリセットするステップと、
前記差が前記閾値を満たさないと判断したことに応答して、前記内側ループが入れ子にされる第2のループのインデックス値を第2のインクリメント値だけインクリメントするステップとをさらに備える、請求項15~19のいずれか1項に記載の方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023017754A JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/014,265 | 2016-02-03 | ||
US15/014,265 US9875104B2 (en) | 2016-02-03 | 2016-02-03 | Accessing data in multi-dimensional tensors |
JP2016250976A JP6896415B2 (ja) | 2016-02-03 | 2016-12-26 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016250976A Division JP6896415B2 (ja) | 2016-02-03 | 2016-12-26 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023017754A Division JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021128801A JP2021128801A (ja) | 2021-09-02 |
JP7225314B2 true JP7225314B2 (ja) | 2023-02-20 |
Family
ID=57860636
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016250976A Active JP6896415B2 (ja) | 2016-02-03 | 2016-12-26 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
JP2021096509A Active JP7225314B2 (ja) | 2016-02-03 | 2021-06-09 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
JP2023017754A Active JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016250976A Active JP6896415B2 (ja) | 2016-02-03 | 2016-12-26 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023017754A Active JP7507271B2 (ja) | 2016-02-03 | 2023-02-08 | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 |
Country Status (7)
Country | Link |
---|---|
US (4) | US9875104B2 (ja) |
EP (1) | EP3226121A3 (ja) |
JP (3) | JP6896415B2 (ja) |
KR (4) | KR101924500B1 (ja) |
CN (2) | CN107038018B (ja) |
SG (2) | SG10201610917TA (ja) |
TW (4) | TWI635390B (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256480B2 (en) * | 2012-07-25 | 2016-02-09 | Mobileye Vision Technologies Ltd. | Computer architecture with a hardware accumulator reset |
US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
US10360163B2 (en) | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US9959498B1 (en) | 2016-10-27 | 2018-05-01 | Google Llc | Neural network instruction set architecture |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10896367B2 (en) * | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
EP4137941A1 (en) | 2017-03-20 | 2023-02-22 | Intel Corporation | Systems, methods, and apparatuses for matrix add, subtract, and multiply |
US10684955B2 (en) | 2017-04-21 | 2020-06-16 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access with memory maps based on memory operations |
US10248908B2 (en) | 2017-06-19 | 2019-04-02 | Google Llc | Alternative loop limits for accessing data in multi-dimensional tensors |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
US10175912B1 (en) | 2017-07-05 | 2019-01-08 | Google Llc | Hardware double buffering using a special purpose computational unit |
GB2567038B (en) * | 2017-07-31 | 2019-09-25 | Google Llc | Accessing prologue and epilogue data |
US10108538B1 (en) | 2017-07-31 | 2018-10-23 | Google Llc | Accessing prologue and epilogue data |
GB2568776B (en) | 2017-08-11 | 2020-10-28 | Google Llc | Neural network accelerator with parameters resident on chip |
US11620490B2 (en) * | 2017-10-17 | 2023-04-04 | Xilinx, Inc. | Multi-layer neural network processing by a neural network accelerator using host communicated merged weights and a package of per-layer instructions |
KR102027034B1 (ko) * | 2017-11-24 | 2019-09-30 | 서울대학교산학협력단 | 병렬 처리를 통한 다차원 데이터 분석을 지원하는 장치 및 그 방법 |
WO2019113007A1 (en) * | 2017-12-05 | 2019-06-13 | Wave Computing, Inc. | Pipelined tensor manipulation within a reconfigurable fabric |
US10956315B2 (en) | 2018-07-24 | 2021-03-23 | Micron Technology, Inc. | Memory devices and methods which may facilitate tensor memory access |
CN109255438B (zh) * | 2018-09-17 | 2020-07-17 | 地平线(上海)人工智能技术有限公司 | 调整张量数据的方法和装置 |
CN117785441A (zh) * | 2018-12-06 | 2024-03-29 | 华为技术有限公司 | 处理数据的方法和数据处理装置 |
CN111324294B (zh) * | 2018-12-17 | 2023-11-07 | 地平线(上海)人工智能技术有限公司 | 存取张量数据的方法和装置 |
CN109857744B (zh) * | 2019-02-13 | 2020-03-20 | 上海燧原智能科技有限公司 | 稀疏张量计算方法、装置、设备及存储介质 |
CN111723917B (zh) * | 2019-03-21 | 2022-11-01 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN112257857B (zh) * | 2019-07-22 | 2024-06-04 | 中科寒武纪科技股份有限公司 | 张量处理方法及相关产品 |
CN110209503B (zh) * | 2019-08-01 | 2019-10-25 | 上海燧原智能科技有限公司 | 多维张量的规约计算方法、装置、设备及介质 |
US11687336B2 (en) * | 2020-05-08 | 2023-06-27 | Black Sesame Technologies Inc. | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks |
CN116261736A (zh) * | 2020-06-12 | 2023-06-13 | 墨芯国际有限公司 | 用于双稀疏卷积处理和并行化的方法和系统 |
CN111767508B (zh) * | 2020-07-09 | 2024-02-23 | 地平线(上海)人工智能技术有限公司 | 计算机实现张量数据计算的方法、装置、介质和设备 |
CN111737007B (zh) * | 2020-07-24 | 2021-06-18 | 北京一流科技有限公司 | 数据对象的分频处理系统及其方法 |
US11954580B2 (en) * | 2020-09-16 | 2024-04-09 | Meta Platforms, Inc. | Spatial tiling of compute arrays with shared control |
CN113836049B (zh) * | 2021-09-17 | 2023-08-08 | 海飞科(南京)信息技术有限公司 | 存储器访问方法和电子装置 |
CN114489798B (zh) * | 2022-01-25 | 2024-04-05 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
US11868329B2 (en) | 2022-05-20 | 2024-01-09 | International Business Machines Corporation | Multidimensional cube multivariate regression |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140188961A1 (en) | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58114245A (ja) * | 1981-12-28 | 1983-07-07 | Fujitsu Ltd | インデツクス・インクリメントのベクトル化方式 |
JP3102027B2 (ja) | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
GB2359641B (en) | 2000-02-25 | 2002-02-13 | Siroyan Ltd | Mapping circuitry and method |
WO2001067238A1 (en) * | 2000-03-08 | 2001-09-13 | Sun Microsystems, Inc. | Processing architecture having an array bounds check capability |
WO2001090888A1 (en) * | 2000-05-23 | 2001-11-29 | Theis Jean Paul | A data processing system having an address generation unit with hardwired multidimensional memory indexing support |
US6647484B1 (en) * | 2000-09-19 | 2003-11-11 | 3 Dsp Corporation | Transpose address mode in general purpose DSP processor |
JP2003244190A (ja) * | 2002-02-19 | 2003-08-29 | Matsushita Electric Ind Co Ltd | データフロー制御スイッチ用プロセッサ及びデータフロー制御スイッチ |
US6952821B2 (en) * | 2002-08-19 | 2005-10-04 | Hewlett-Packard Development Company, L.P. | Method and system for memory management optimization |
US7107199B2 (en) * | 2002-10-31 | 2006-09-12 | Hewlett-Packard Development Company, L.P. | Method and system for the design of pipelines of processors |
US7047480B2 (en) * | 2002-11-12 | 2006-05-16 | Microsoft Corporation | Matrix multiplication in a Galois field for forward error correction |
US7225439B2 (en) * | 2003-03-21 | 2007-05-29 | Sun Microsystems, Inc. | Combining write-barriers within an inner loop with fixed step |
CN1259617C (zh) * | 2003-09-09 | 2006-06-14 | 大唐微电子技术有限公司 | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 |
CN100520714C (zh) | 2005-01-25 | 2009-07-29 | Nxp股份有限公司 | 多线程处理器 |
US8806183B1 (en) | 2006-02-01 | 2014-08-12 | Ixys Ch Gmbh | Blank bit and processor instructions employing the blank bit |
US8904155B2 (en) | 2006-03-17 | 2014-12-02 | Qualcomm Incorporated | Representing loop branches in a branch history register with multiple bits |
US8438365B2 (en) * | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
ATE463788T1 (de) * | 2007-06-26 | 2010-04-15 | Ericsson Telefon Ab L M | Datenverarbeitungseinheit für anweisungen in geschachtelten schleifen |
US20100122066A1 (en) | 2008-11-12 | 2010-05-13 | Freescale Semiconductor, Inc. | Instruction method for facilitating efficient coding and instruction fetch of loop construct |
US20100274972A1 (en) | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
CA2684226A1 (en) | 2009-10-30 | 2011-04-30 | Ibm Canada Limited - Ibm Canada Limitee | Eleminating redundant operations for common properties using shared real registers |
US20130185540A1 (en) * | 2011-07-14 | 2013-07-18 | Texas Instruments Incorporated | Processor with multi-level looping vector coprocessor |
WO2013095601A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
US20140181171A1 (en) | 2012-12-24 | 2014-06-26 | Pavel Dourbal | Method and system for fast tensor-vector multiplication |
CN103440513B (zh) * | 2013-09-17 | 2017-01-18 | 西安电子科技大学 | 基于稀疏非负张量分解的大脑特定视觉认知状态判定方法 |
US9087394B1 (en) | 2014-02-13 | 2015-07-21 | Raycast Systems, Inc. | Computer hardware architecture and data structures for packet binning to support incoherent ray traversal |
CN105260322B (zh) * | 2014-06-30 | 2020-09-01 | 中兴通讯股份有限公司 | 一种对循环缓冲区消除循环移位的方法和装置 |
US11170294B2 (en) | 2016-01-07 | 2021-11-09 | Intel Corporation | Hardware accelerated machine learning |
US9875104B2 (en) * | 2016-02-03 | 2018-01-23 | Google Llc | Accessing data in multi-dimensional tensors |
JP6890615B2 (ja) | 2016-05-26 | 2021-06-18 | タータン エーアイ リミテッド | ディープニューラルネットワークについての加速器 |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
-
2016
- 2016-02-03 US US15/014,265 patent/US9875104B2/en active Active
- 2016-12-26 JP JP2016250976A patent/JP6896415B2/ja active Active
- 2016-12-28 SG SG10201610917TA patent/SG10201610917TA/en unknown
- 2016-12-28 SG SG10202104454YA patent/SG10202104454YA/en unknown
- 2016-12-29 KR KR1020160182981A patent/KR101924500B1/ko active IP Right Grant
- 2016-12-30 TW TW105144084A patent/TWI635390B/zh active
- 2016-12-30 TW TW109123874A patent/TWI772842B/zh active
- 2016-12-30 TW TW108144554A patent/TWI700587B/zh active
- 2016-12-30 EP EP16207511.3A patent/EP3226121A3/en active Pending
- 2016-12-30 TW TW107126366A patent/TWI681291B/zh active
-
2017
- 2017-01-13 CN CN201710025689.7A patent/CN107038018B/zh active Active
- 2017-01-13 CN CN201910630145.2A patent/CN110457069B/zh active Active
- 2017-03-13 US US15/456,812 patent/US9875100B2/en active Active
- 2017-12-15 US US15/844,192 patent/US10228947B2/en active Active
-
2018
- 2018-11-20 KR KR1020180143824A patent/KR102472424B1/ko active IP Right Grant
-
2019
- 2019-03-11 US US16/298,535 patent/US10838724B2/en active Active
-
2021
- 2021-06-09 JP JP2021096509A patent/JP7225314B2/ja active Active
-
2022
- 2022-11-24 KR KR1020220159111A patent/KR102596365B1/ko active IP Right Grant
-
2023
- 2023-02-08 JP JP2023017754A patent/JP7507271B2/ja active Active
- 2023-10-26 KR KR1020230144479A patent/KR20230153972A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140188961A1 (en) | 2012-12-27 | 2014-07-03 | Mikhail Plotnikov | Vectorization Of Collapsed Multi-Nested Loops |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7225314B2 (ja) | N次元テンソルにアクセスするための命令を処理するための装置、システム、およびコンピュータによって実現される方法 | |
US10534607B2 (en) | Accessing data in multi-dimensional tensors using adders | |
EP3602280B1 (en) | Accessing prologue and epilogue data | |
US9946539B1 (en) | Accessing data in multi-dimensional tensors using adders | |
GB2567038B (en) | Accessing prologue and epilogue data | |
BR102016030825B1 (pt) | Equipamento e método implementado em computador para processar uma instrução para acessar um tensor n-dimensional | |
BR122023003223B1 (pt) | Equipamento para processar uma instrução para processar um laço encaixado e método implementado em computador |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210621 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210621 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220531 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220628 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220927 |
|
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: 20230110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230208 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7225314 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |