JP7770865B2 - コンパイル装置、生成方法、プログラム及びシステム - Google Patents
コンパイル装置、生成方法、プログラム及びシステムInfo
- Publication number
- JP7770865B2 JP7770865B2 JP2021174381A JP2021174381A JP7770865B2 JP 7770865 B2 JP7770865 B2 JP 7770865B2 JP 2021174381 A JP2021174381 A JP 2021174381A JP 2021174381 A JP2021174381 A JP 2021174381A JP 7770865 B2 JP7770865 B2 JP 7770865B2
- Authority
- JP
- Japan
- Prior art keywords
- chip
- tensor
- layer
- level
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
- G06N3/105—Shells for specifying net layout
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
Description
少なくとも第1階層と第2階層とを有するチップにおいて実行されるマシンコードを生成するコンパイル装置であって、
前記第2階層は前記第1階層よりも上位にあり、前記第1階層は、複数の第1ブロックを有し、
前記コンパイル装置は、
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
前記チップにおいて処理されるテンソルを取得し、
少なくとも、前記チップの前記第1階層における分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数の第1ブロックのうちのいずれか1つの第1ブロックに対応付ける処理を実行し、
前記対応付ける処理に基づいて、前記チップにおいて実行される前記マシンコードを生成し、
前記対応付ける処理において用いられる前記第1階層は、前記チップのハードウェア構成に対応する。
<データ処理システムのシステム構成及び各装置のハードウェア構成>
はじめに、第1の実施形態に係るサーバ装置を有するデータ処理システム全体のシステム構成、及び、データ処理システムを構成する各装置のハードウェア構成について説明する。
次に、データ処理システム100の各装置(ここでは、サーバ装置110、表示装置162)の機能構成について説明する。図2は、データ処理システムの各装置の機能構成の一例を示す第1の図である。
・ソースコード記述部211、
・生成部212、
・コンパイル部213、
として機能する。
次に、ボード140_1~140_4等に搭載されるアクセラレータチップ(例えば、チップ170_1~170_n)のハードウェア構成について説明する。図3は、アクセラレータチップのハードウェア構成の一例を示す図である。
次に、木構造のトポロジにより接続された複数のメモリの具体例について説明する。図4は、木構造のトポロジにより接続された複数のメモリの具体例を示す図である。
・符号401に示すLevelCの第1階層ブロックに含まれるメモリ411に書き込まれた値を、
・符号402に示すLevelCの第1階層ブロックに含まれるメモリ412に、
移動させる場合について考える。
・木構造の階層をLevelC→LevelB→LevelAまで遡り、
・LevelA内で異なるブロックを跨ぎ、
・木構造の階層をLevelA→LevelB→LevelCまで進む、
といった手順を踏む必要があり、通信コストがかかる。一方で、通信コストを低減させるためには、メモリ411に値を書き込む代わりに、メモリ412の近くのメモリに値を書き込むことが有効である。
・テンソルの各要素にメモリのアドレスを適切に割り当てることが可能な記述方法を用いて「レイアウトに関する記述」を行うソースコード記述部211と、
・当該記述方法に従って、テンソルの各要素にアドレスを割り当てるコンパイル部213と、
・割り当てられたアドレスに、テンソルの各要素の値(データ格納部214に格納されたデータ)を書き込む実行部220と、
を提供する。
次に、レイアウトに関する記述の記述方法について説明する。図5は、レイアウトに関する記述の記述方法を示す図である。
・表現力の高い記述方法が実現でき、複数のメモリが、木構造の複雑なトポロジにより接続されている場合であっても、複数のメモリに対するテンソルの各要素の配置を適切に表現することができる、
・これにより、テンソルの各要素に適切なアドレスを割り当てることが可能となり、チップ170_1はメモリ間の通信コストを低減させることができる、
・表現力の高い記述方法が実現でき、演算ごとに課せられる制約に対応することができる、
・複数のメモリに対するテンソルの各要素の配置を、ユーザが直感で理解することができるため、ユーザはテンソルの各要素の配置を考慮した演算の最適化や、SIMDの特性を考慮したテンソルの各要素の配置が可能になる、
・テンソル間で各要素の配置を揃えることができるため、SIMDアーキテクチャによる動作において有利となる、
等の利点がある。
(1)具体例1
次に、レイアウトに関する記述の具体例について説明する。図6は、レイアウトに関する記述の具体例を示す第1の図である。なお、図6の例では、説明の簡略化のため、階層数を"2"としている(1階層目=LevelA、2階層目=最下層=LevelB)。
((2_A:2,2_B:2,25_Addr:25),(2_A:1,2_B:1,25_Addr:1))
となる。
・LevelAにおいて、縦方向の100個の要素を2分割し、50個の要素のかたまりにすること、
・LevelAにおいて、ブロックを縦方向に1個進めると、ブロック名が2個進むこと("A0"→"A2"または"A1"→"A3")、
を表している。
・LevelBにおいて、縦方向の50個の要素を2分割し、25個の要素のかたまりにすること、
・LevelBにおいて、ブロックを縦方向に1個進めると、ブロック名が2個進むこと("B0"→"B2"または"B1"→"B3")、
を表している。
・LevelBのブロックに含まれるメモリにおいて、縦方向の25個の要素を25分割すること、
・LevelBのブロックに含まれるメモリにおいて、テンソルの要素を縦方向に1個進めると、アドレスが25個進むこと(例えば、アドレス"0"→"25"、"1"→"26"、・・・)、
を表している。
・LevelAにおいて、横方向の100個の要素を2分割し、50個の要素のかたまりにすること、
・LevelAにおいて、ブロックを横方向に1個進めると、ブロック名が1個進むこと("A0"→"A1"または"A2"→"A3")、
を表している。
・LevelBにおいて、横方向の50個の要素を2分割し、25個の要素のかたまりにすること、
・LevelBにおいて、ブロックを横方向に1個進めると、ブロック名が1個進むこと("B0"→"B1"または"B2"→"B3")、
を表している。
・LevelBのブロックに含まれるメモリにおいて、横方向の25個の要素を25分割すること、
・LevelBのブロックに含まれるメモリにおいて、テンソルの要素を横方向に1個進めると、アドレスが1個進むこと(例えば、アドレス"0"→"1"、"1"→"2"、・・・)、
を表している。
次に、レイアウトに関する記述の他の具体例について説明する。図7は、レイアウトに関する記述の具体例を示す第2の図である。なお、図7の例においても、説明の簡略化のため、階層数を"2"としている(1階層目=LevelA、2階層目=最下層=LevelB)。ただし、図7の例の場合、図6の例とは、ブロックの区切り方が異なっている(図7(a)参照)。
((4_A:1,25_Addr:25),(4_B:1,25_Addr:1))
となる。
・LevelAにおいて、縦方向の100個の要素を4分割し、25個の要素のかたまりにすること、
・LevelAにおいて、ブロックを縦方向に1個進めると、ブロック名が1個進むこと("A0"→"A1"、"A1"→"A2"、"A2"→"A3")、
を表している。
・LevelBのブロックに含まれるメモリにおいて、縦方向の25個の要素を25分割すること、
・LevelBのブロックに含まれるメモリにおいて、テンソルの要素を縦方向に1個進めると、アドレスが25個進むこと(例えば、アドレス"0"→"25"、"1"→"26"、・・・)、
を表している。
・LevelBにおいて、横方向の100個の要素を4分割し、25個の要素のかたまりにすること、
・LevelBにおいて、ブロックを横方向に1個進めると、ブロック名が1個進むこと("B0"→"B1"、"B1"→"B2"、"B2"→"B3")、
を表している。
・LevelBのブロックに含まれるメモリにおいて、横方向の25個の要素を25分割すること、
・LevelBのブロックに含まれるメモリにおいて、テンソルの要素を横方向に1個進めると、アドレスが1個進むこと(例えば、アドレス"0"→"1"、"1"→"2"、・・・)、
を表している。
(1)具体例1
次に、割り当て部241により割り当てられたアドレス(図6)に従って、テンソルXの各要素の値を、対応するメモリに書き込む処理の具体例について説明する。図8は、書き込み部による処理の具体例を示す第1の図である。
・アドレス"0"~"24"には、x1_1~x1_25が書き込まれ、
・アドレス"25"~"49"には、x2_1~x2_25が書き込まれ、
・・・
・アドレス"600"~"624"には、x25_1~x25_25が書き込まれる。
・アドレス"0"~"24"には、x1_26~x1_50が書き込まれ、
・アドレス"25"~"49"には、x2_26~x2_50が書き込まれ、
・・・
・アドレス"600"~"624"には、x25_26~x25_50が書き込まれる。
・アドレス"0"~"24"には、x26_1~x26_25が書き込まれ、
・アドレス"25"~"49"には、x27_1~x27_25が書き込まれ、
・・・
・アドレス"600"~"624"には、x50_1~x50_25が書き込まれる。
・アドレス"0"~"24"には、x26_26~x26_50が書き込まれ、
・アドレス"25"~"49"には、x27_26~x27_50が書き込まれ、
・・・
・アドレス"600"~"624"には、x50_26~x50_50が書き込まれる。
次に、割り当て部241により割り当てられたアドレス(図7)に従って、テンソルXの各要素の値を、対応するメモリに書き込む処理の具体例について説明する。図9は、書き込み部による処理の具体例を示す第2の図である。
・アドレス"0"~"24"には、x1_1~x1_25が書き込まれ、
・アドレス"25"~"49"には、x2_1~x2_25が書き込まれ、
・・・
・アドレス"600"~"624"には、x25_1~x25_25が書き込まれる。
・アドレス"0"~"24"には、x1_26~x1_50が書き込まれ、
・アドレス"25"~"49"には、x2_26~x2_50が書き込まれ、
・・・
・アドレス"600"~"624"には、x25_26~x25_50が書き込まれる。
・アドレス"0"~"24"には、x1_51~x1_75が書き込まれ、
・アドレス"25"~"49"には、x2_51~x2_75が書き込まれ、
・・・
・アドレス"600"~"624"には、x25_51~x25_75が書き込まれる。
・アドレス"0"~"24"には、x1_76~x1_100が書き込まれ、
・アドレス"25"~"49"には、x2_76~x2_100が書き込まれ、
・・・
・アドレス"600"~"624"には、x25_76~x25_100が書き込まれる。
次に、要素値読み出し部252による処理の具体例について説明する。上述したように、要素値読み出し部252は、ソースコード230に含まれるインデックスに関する記述に基づいて、メモリに書き込まれたテンソルの特定の要素の値を読み出す。
図10は、要素値読み出し部による処理の具体例を示す第1の図である。図10の例は、図8の符号800で示すテンソルXの各要素の値が、図6(b)の「レイアウトに関する記述」のもとで、チップ600に書き込まれた状態(符号600'参照)で、インデックス(91,36)の値を読み出す様子を示している。
・LevelAのブロックが、ブロック名="A2"であり、
・LevelBのブロックが、ブロック名="B3"であり、
・メモリのアドレスが、16行目×25+11列目="411番目のアドレス"(符号1000参照)、
であることを特定する。
・LevelAのブロックとして、1×ストライド(="2")+0×ストライド(="1")=2を、
・LevelBのブロックとして、1×ストライド(="2")+1×ストライド(="1")=3を、
・メモリのアドレスとして、16×ストライド(="25")+11×ストライド(="1")=411を、
算出することで、LevelAのブロックとして、ブロック名="A2"、LevelBのブロックとして、ブロック名="B3"、メモリのアドレスとして、"411番目のアドレス"を特定することができる。
図11は、要素値読み出し部による処理の具体例を示す第2の図である。図11の例は、図9の符号900で示すテンソルXの各要素の値が、図7(b)の「レイアウトに関する記述」のもとで、チップ700に書き込まれた状態(符号700'参照)で、インデックス(91,36)の値を読み出す様子を示している。
・LevelAのブロックが、ブロック名="A3"であり、
・LevelBのブロックが、ブロック名="B1"であり、
・メモリのアドレスが、16行目×25+11列目="411番目のアドレス"(符号1100参照)、
であることを特定する。
・LevelAのブロックとして、3×ストライド(="1")=3を、
・LevelBのブロックとして、1×ストライド(="1")=1を、
・メモリのアドレスとして、16×ストライド(="25")+11×ストライド(="1")=411を、
算出することで、LevelAのブロックとして、ブロック名="A3"、LevelBのブロックとして、ブロック名="B1"、メモリのアドレスとして、"411番目のアドレス"を特定することができる。
次に、データ処理システム100によるデータ処理の流れについて説明する。ここでは、ソースコード記述部211及び生成部212によるソースコード生成処理と、コンパイル部213によるマシンコード生成処理と、実行部220によるマシンコード実行処理とにわけて説明する。
はじめに、ソースコード記述部211及び生成部212によるソースコード生成処理の流れについて説明する。図12は、ソースコード生成処理の流れを示すフローチャートである。ユーザがソースコード記述部211を起動することで、図12に示すソースコード生成処理を開始する。
次に、コンパイル部213によるマシンコード生成処理の流れについて説明する。図13は、マシンコード生成処理の流れを示すフローチャートである。ユーザがコンパイル装置120のコンパイル部213を起動することで、コンパイル部213では、図13に示すマシンコード生成処理を開始する。
次に、実行部220によるマシンコード実行処理の流れについて説明する。図14は、マシンコード実行処理の流れを示すフローチャートである。ユーザがデータ格納部214に格納された処理対象のデータを指定して、サーバ装置110の実行部220に実行指示を入力することで、実行部220では、図14に示すマシンコード実行処理を開始する。
以上の説明から明らかなように、第1の実施形態に係るコンパイル装置120は、
・木構造のトポロジにより接続され、分散配置された複数のメモリを有するアクセラレータチップにおいて実行されるマシンコードを生成する。
・処理対象のテンソルに対する階層ごとの分割数及びストライド(縦方向または横方向)に基づいて、処理対象のテンソルの各要素に、アクセラレータチップが有する複数のメモリ内のアドレスを割り当てる。
上記第1の実施形態では、コンパイル装置120が、サーバ装置110内に配されるものとして説明したが、コンパイル装置120は、サーバ装置110とは別体に構成してもよい。また、上記第1の実施形態では、コンパイル部213をコンパイル装置120にて実現するものとして説明したが、コンパイル部213は、例えば、不図示の端末装置において実現されてもよい。あるいは、コンパイル部213は、端末以外の他の外部装置(例えば、他のサーバ装置)にて実現されてもよい。
・LevelAの階層:第3階層ブロック、
・LevelBの階層:第2階層ブロック、
・LevelCの階層:第1階層ブロック、
としたが、各階層の定義はこれに限定されず、例えば、
・LevelAの階層:チップ、
・LevelBの階層:第3階層ブロック、
・LevelCの階層:第2階層ブロック、
・LevelDの階層:第1階層ブロック、
としてもよいし、
・LevelAの階層:チップ及び第3階層ブロック、
・LevelBの階層:第2階層ブロック、
・LevelCの階層:第1階層ブロック、
としてもよい。
本明細書(請求項を含む)において、「a、b及びcの少なくとも1つ(一方)」又は「a、b又はcの少なくとも1つ(一方)」の表現(同様な表現を含む)が用いられる場合は、a、b、c、a-b、a-c、b-c、又はa-b-cのいずれかを含む。また、a-a、a-b-b、a-a-b-b-c-c等のように、いずれかの要素について複数のインスタンスを含んでもよい。さらに、a-b-c-dのようにdを有する等、列挙された要素(a、b及びc)以外の他の要素を加えることも含む。
Claims (22)
- 少なくとも第1階層と第2階層とを有するチップにおいて実行されるマシンコードを生成するコンパイル装置であって、
前記第2階層は前記第1階層よりも上位にあり、前記第1階層は、複数の第1ブロックを有し、
前記コンパイル装置は、
少なくとも1つのメモリと、
少なくとも1つのプロセッサと、を備え、
前記少なくとも1つのプロセッサは、
前記チップにおいて処理されるテンソルを取得し、
少なくとも、前記チップの前記第1階層における分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数の第1ブロックのうちのいずれか1つの第1ブロックに対応付ける処理を実行し、
前記対応付ける処理に基づいて、前記チップにおいて実行される前記マシンコードを生成し、
前記対応付ける処理において用いられる前記第1階層は、前記チップのハードウェア構成に対応する、
コンパイル装置。 - 前記少なくとも1つのプロセッサは、少なくとも前記第1階層における前記分割数と前記第1階層におけるストライドとに基づいて、前記対応付ける処理を実行する、
請求項1に記載のコンパイル装置。 - 前記複数の第1ブロックは、それぞれ、前記チップに含まれる複数のメモリのうちの少なくとも1つのメモリを備え、
前記対応付ける処理として、前記少なくとも1つのプロセッサは、少なくとも前記第1階層における前記分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数のメモリのアドレスに対応付ける処理を実行する、
請求項1又は請求項2に記載のコンパイル装置。 - 前記第1階層における前記分割数は、少なくとも、前記第1階層における縦方向の分割数と横方向の分割数とを含む、
請求項1乃至請求項3のいずれか1項に記載のコンパイル装置。 - 前記第1階層における前記ストライドは、少なくとも、前記第1階層における縦方向のストライドと、横方向のストライドとを含む、
請求項2に記載のコンパイル装置。 - 前記第2階層は、複数の第2ブロックを有し、前記複数の第2ブロックは、それぞれ、前記複数の第1ブロックを有し、
前記対応付ける処理は、
前記少なくとも1つのプロセッサが、少なくとも前記チップの前記第2階層における分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数の第2ブロックのうちのいずれか1つの第2ブロックに対応付ける他の処理を含み、
前記対応付ける他の処理において用いられる前記第2階層は、前記チップのハードウェア構成に対応する、
請求項1乃至請求項5のいずれか1項に記載のコンパイル装置。 - 前記少なくとも1つのプロセッサは、少なくとも前記第2階層における前記分割数と前記第2階層におけるストライドとに基づいて、前記対応付ける他の処理を実行する、
請求項6に記載のコンパイル装置。 - 前記第1階層における前記分割数及び前記第2階層における前記分割数とは、互いに異なる、
請求項6又は請求項7に記載のコンパイル装置。 - 前記少なくとも1つのプロセッサは、更に、前記チップにおいて処理される計算グラフを取得し、前記テンソルは、前記計算グラフにおいて用いられるテンソルである、
請求項1乃至請求項8のいずれか1項に記載のコンパイル装置。 - 前記少なくとも1つのプロセッサは、更に、ソースコードに基づいて前記計算グラフを生成する、
請求項9に記載のコンパイル装置。 - 前記第1階層における前記分割数は、前記ソースコードに記述される、
請求項10に記載のコンパイル装置。 - 請求項1乃至請求項11のいずれか1項に記載のコンパイル装置が備える前記少なくとも1つのプロセッサが、前記マシンコードを生成する、
生成方法。 - 請求項12に記載の生成方法を、コンパイル装置が備える少なくとも1つのプロセッサに実行させる、
プログラム。 - 少なくとも1つのメモリと少なくとも1つのプロセッサとを有するコンパイル装置と、
少なくとも第1階層と第2階層とを有するチップと、を有するシステムであって、
前記第2階層は、前記第1階層よりも上位にあり、前記第1階層は、複数の第1ブロックを有し、
前記少なくとも1つのプロセッサは、
前記チップにおいて処理されるテンソルを取得し、
少なくとも、前記チップの前記第1階層における分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数の第1ブロックのうちのいずれか1つの第1ブロックに対応付ける処理を実行し、
前記対応付ける処理に基づいて、前記チップにおいて実行されるマシンコードを生成し、
前記チップは、
前記コンパイル装置によって前記対応付ける処理が実行されることで生成された前記マシンコードを実行することで、前記テンソルの各要素の値を、前記テンソルの各要素に対応付けられた前記第1ブロックに書き込む処理、または、前記テンソルの各要素に対応付けられた前記第1ブロックから、前記テンソルの各要素の値を読み出す処理、の少なくともいずれかを実行し、
前記対応付ける処理において用いられる前記第1階層は、前記チップのハードウェア構成に対応する、
システム。 - 前記チップは、前記テンソルの各要素と対応付けられる前記第1ブロックに、前記テンソルの各要素の値を書き込む処理を実行する際、書き込み先のメモリに応じてサイズを調整するパディング処理を実行する、
請求項14に記載のシステム。 - 前記チップは、更に、配列の形状が合致しないテンソル同士の演算を行う際、ブロードキャスト処理を実行する、
請求項14又は請求項15に記載のシステム。 - 前記少なくとも1つのプロセッサは、少なくとも、前記第1階層における前記分割数と前記第1階層におけるストライドとに基づいて、前記対応付ける処理を実行する、
請求項14乃至請求項16のいずれか1項に記載のシステム。 - 前記チップは、更に、複数のメモリを備え、前記複数の第1ブロックは、それぞれ、前記複数のメモリのうちの少なくとも1つのメモリを含み、
前記対応付ける処理として、前記少なくとも1つのプロセッサは、少なくとも前記第1階層における前記分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数のメモリのアドレスに対応付ける処理を実行する、
請求項14乃至請求項17のいずれか1項に記載のシステム。 - 前記チップに含まれる前記複数のメモリは、木構造により接続されている、
請求項18に記載のシステム。 - 前記チップの前記第2階層は、複数の第2ブロックを有し、前記第2ブロックは、それぞれ、前記複数の第1ブロックを有し、
前記対応付ける処理は、
前記少なくとも1つのプロセッサが、少なくとも前記チップの前記第2階層における分割数に基づいて、前記テンソルの各要素を、前記チップに含まれる前記複数の第2ブロックのうちのいずれか1つの第2ブロックに対応付ける他の処理を含み、
前記対応付ける他の処理において用いられる前記第2階層は、前記チップのハードウェア構成に対応する、
請求項14乃至請求項19のいずれか1項に記載のシステム。 - 前記複数の第1ブロックは、それぞれ、少なくとも1つの演算器を備える、
請求項14乃至請求項20のいずれか1項に記載のシステム。 - 前記チップは、SIMDアーキテクチャにより動作する、
請求項14乃至請求項21のいずれか1項に記載のシステム。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2021174381A JP7770865B2 (ja) | 2021-10-26 | 2021-10-26 | コンパイル装置、生成方法、プログラム及びシステム |
| US18/048,934 US12367025B2 (en) | 2021-10-26 | 2022-10-24 | Compiler, generation method, chip, and execution method |
| US19/242,677 US20250315233A1 (en) | 2021-10-26 | 2025-06-18 | Compiler, system, generation method, and non-transitory computer-readable storage medium |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2021174381A JP7770865B2 (ja) | 2021-10-26 | 2021-10-26 | コンパイル装置、生成方法、プログラム及びシステム |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2023064233A JP2023064233A (ja) | 2023-05-11 |
| JP2023064233A5 JP2023064233A5 (ja) | 2025-06-24 |
| JP7770865B2 true JP7770865B2 (ja) | 2025-11-17 |
Family
ID=86057074
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2021174381A Active JP7770865B2 (ja) | 2021-10-26 | 2021-10-26 | コンパイル装置、生成方法、プログラム及びシステム |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US12367025B2 (ja) |
| JP (1) | JP7770865B2 (ja) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20190392296A1 (en) | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
| WO2020227015A1 (en) | 2019-05-03 | 2020-11-12 | Google Llc | Reshape and broadcast optimizations to avoid unnecessary data movement |
| WO2021162765A1 (en) | 2020-02-14 | 2021-08-19 | Google Llc | Direct memory access architecture with multi-level multi-striding |
| CN113469328A (zh) | 2021-06-24 | 2021-10-01 | 上海寒武纪信息科技有限公司 | 执行转数穿过的装置、板卡、方法及可读存储介质 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE69132495T2 (de) | 1990-03-16 | 2001-06-13 | Texas Instruments Inc., Dallas | Verteilter Verarbeitungsspeicher |
| JP3223530B2 (ja) * | 1991-08-20 | 2001-10-29 | 富士通株式会社 | データ転送命令生成処理方法 |
| US20070208760A1 (en) | 2006-03-06 | 2007-09-06 | Reuter James M | Data-state-describing data structures |
| US9779786B1 (en) * | 2016-10-26 | 2017-10-03 | Xilinx, Inc. | Tensor operations and acceleration |
| US10387298B2 (en) | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
| US11687341B2 (en) * | 2019-08-29 | 2023-06-27 | Intel Corporation | Multi-variate strided read operations for accessing matrix operands |
-
2021
- 2021-10-26 JP JP2021174381A patent/JP7770865B2/ja active Active
-
2022
- 2022-10-24 US US18/048,934 patent/US12367025B2/en active Active
-
2025
- 2025-06-18 US US19/242,677 patent/US20250315233A1/en active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2020227015A1 (en) | 2019-05-03 | 2020-11-12 | Google Llc | Reshape and broadcast optimizations to avoid unnecessary data movement |
| US20190392296A1 (en) | 2019-06-28 | 2019-12-26 | John Brady | Hardware agnostic deep neural network compiler |
| WO2021162765A1 (en) | 2020-02-14 | 2021-08-19 | Google Llc | Direct memory access architecture with multi-level multi-striding |
| CN113469328A (zh) | 2021-06-24 | 2021-10-01 | 上海寒武纪信息科技有限公司 | 执行转数穿过的装置、板卡、方法及可读存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2023064233A (ja) | 2023-05-11 |
| US20250315233A1 (en) | 2025-10-09 |
| US12367025B2 (en) | 2025-07-22 |
| US20230129676A1 (en) | 2023-04-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Gent et al. | MINION: A Fast, Scalable, Constraint Solver¹ | |
| US12093811B2 (en) | Fractal calculating device and method, integrated circuit and board card | |
| Tanase et al. | The STAPL parallel container framework | |
| CN112997156B (zh) | 用于电子设计自动化操作的计算资源的动态分配 | |
| US20220391320A1 (en) | Operation device of convolutional neural network, operation method of convolutional neural network and computer program stored in a recording medium to execute the method thereof | |
| Cook et al. | GPU based parallel Ising computing for combinatorial optimization problems in VLSI physical design | |
| US11841822B2 (en) | Fractal calculating device and method, integrated circuit and board card | |
| US10896373B1 (en) | Determining comprehensibility of a graphical model in a graphical modeling environment | |
| US20240411977A1 (en) | Dynamic standard cell external pin methodology for routability-driven standard cell design automation | |
| JP7770865B2 (ja) | コンパイル装置、生成方法、プログラム及びシステム | |
| KR102657104B1 (ko) | 합성곱 연산 장치, 합성곱 연산 방법 및 합성곱 연산 방법을 실행시키도록 기록매체에 저장된 컴퓨터 프로그램 | |
| JPH05101141A (ja) | 高位合成装置 | |
| JP7624056B2 (ja) | ニューラルネットワークアクセラレータ用の命令生成方法、装置および電子デバイス | |
| US12592023B2 (en) | Intersection testing for ray tracing | |
| US12547330B2 (en) | Storage usage | |
| US12436695B1 (en) | Re-accessing data | |
| US20260023684A1 (en) | Storage usage | |
| US20260023603A1 (en) | Storage allocation | |
| US20260104929A1 (en) | Operation-specific control data | |
| JP7794539B2 (ja) | 命令生成方法、演算処理装置、命令生成装置及びプログラム | |
| US20250181814A1 (en) | Differentiable global router | |
| US12499045B1 (en) | Efficient data processing | |
| US20260127024A1 (en) | Data handling | |
| US20260086782A1 (en) | Hardware code generation from multimedia specification documents | |
| WO2026018024A1 (en) | Storage usage |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20241015 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20241111 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20250613 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20250709 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20250902 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20250922 |
|
| 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: 20251007 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20251105 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7770865 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |