以下、図面を参照して、本発明の様々な例示的な実施例、特徴、および、態様を詳細に説明する。図面中の同じ記号は、機能が同じまたは類似の要素を示す。図面に実施例の様々な態様が示されているが、特に明記しない限り、図面は必ずしも比例して描かれているわけではない。
ここでの「例示的」という専門の単語は、「例、実施例、または、説明性として役立つ」ことを意味する。ここで「例示的」として説明されているいかなる実施例は、他の実施例よりも優れているまたはより優れていると解釈される必要はない。
また、本発明をよりよく説明するために、以下の具体的な実施形態では、多くの具体的な細かいところが与えられている。当業者は、いくつかの具体的な細かいところがないでも、本発明を同様に実施できることを理解すべきである。いくつかの実例では、当業者にとって周知の方法、手段、要素、および、回路は、本発明の要旨を強調するために詳細には説明されていない。
本発明の実施例によると、データ処理装置が提供される。
図1aは、本発明の一実施例に係るデータ処理装置を示すブロック図である。図1aに示されたように、当該データ処理装置は、制御ユニット11aと実行ユニット12aとを備え、前記制御ユニット11aが、テンソル制御モジュール111aを備え、ここで、前記制御ユニット11aが、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子に対応する記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記実行ユニットが前記記述子の内容に基づいて前記第1の処理命令を実行するように、前記記述子の内容および前記第1の処理命令を前記実行ユニットに送信する。
本発明の実施例のデータ処理装置によると、テンソル形状を示す記述子を導入して、制御ユニットの中にテンソル制御モジュールを設置することで、復号化された処理命令のオペランドの中に記述子識別子が含まれる場合、テンソル制御モジュールを使用して対応する記述子記憶空間を確定し、実行ユニットが記述子内容に基づいて命令を実行するように、当該空間から記述子内容を取得して当該内容および処理命令を実行ユニットに送信することにより、データアクセスの複雑度を低下させ、データアクセスの効率を向上させる。
例を挙げると、当該データ処理装置は、例えば、プロセッサであってもよく、ここで、プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。
可能な一実現形態において、データ処理装置は、制御ユニット11aと実行ユニット12aとを備えてもよく、制御ユニット11aが、装置を制御するために使用され、例えば、メモリまたは外部から導入される命令を読み取って、命令を復号化(デコード)し、該当する部品にマイクロ操作制御信号などを送信し、実行ユニット12aが、具体的な命令を実行するために使用され、例えば、算術論理ユニット(arithmetic and logic unit、ALU)、メモリアクセスユニット(memory access unit、MAU)、人工知能演算ユニット(neural functional unit、NFU)などであってもよい。本発明は、実行ユニット12aの具体的なハードウェアタイプに対して限定しない。
可能な一実現形態において、データ処理装置によって処理されるデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよく、データ処理装置のメモリの中にテンソルデータを記憶する場合、そのデータアドレス(または記憶領域)によってはテンソルデータの形状、データ間またはデータ次元間の相互関係などの関連情報を確定できず、プロセッサのテンソルデータのアクセス効率が低くなる。
この場合、記述子(テンソル記述子)を導入して、テンソル(N次元のテンソルデータ)の形状を示すことができる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元データであり、記述子は、当該3次元のテンソルデータの、三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設置でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。
記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状、位置、データ間またはデータ次元間の相互関係などの関連情報を表現でき、テンソルデータに対するアクセス効率を向上させる。
可能な一実現形態において、制御ユニット11aの中にテンソル制御モジュール111aが設置されていてもよく、例えば、記述子の登録、変更、および、取り消し、記述子内容の書き込みなどの、記述子に関連した操作を実現することができる。テンソル制御モジュール111aは、例えば、テンソルインターフェースユニット(Tensor interface Unit、TIU)であり、本発明は、テンソル制御モジュールの具体的なハードウェアタイプに対して限定しない。このような方式によって、専用のハードウェアによって記述子に関連した操作を実現することによって、テンソルデータのアクセス効率をさらに向上させることができる。
可能な一実現形態において、データ処理装置は、処理命令が受信されると、まず、制御ユニット11aを使用して処理命令に対して復号化(デコード)を実行できる。ここで、前記制御ユニット11aが、さらに、受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得、
ここで、復号化後の第1の処理命令が、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードが、前記第1の処理命令に対応する処理タイプを示すために使用される。
この場合、第1の処理命令は、制御ユニット11aによって復号化された後、復号化後の第1の処理命令(マイクロ命令)が得られる。ここで、第1の処理命令は、データアクセス命令、演算命令、記述子管理命令、同期命令などを含んでもよい。本発明は、第1の処理命令の具体的なタイプ、および、復号化の具体的な方式に対して限定しない。
当該復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含んでもよく、オペレーションコードが、第1の処理命令に対応する処理タイプを示すために使用され、オペランドが、処理待ちのデータを示すために使用される。例えば、当該命令は、Add;A;Bのように表されることができ、Addがオペレーションコードであり、AとBがオペランドであり、当該命令はAとBの加算に使用される。本発明は、復号化後の命令のオペランドの数および命令の表示形式に対して限定しないことを命令する。
可能な一実現形態において、制御ユニット11aの復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、テンソル制御モジュールによって記述子に対応する記述子記憶空間を確定でき、記述子記憶空間を確定した後、記述子記憶空間から記述子の内容(形状、アドレスなどの情報)を取得できる。その後、実行ユニットが記述子の内容に基づいて第1の処理命令を実行するように、制御ユニット11aは、記述子の内容および第1の処理命令を実行ユニットに送信することができる。
可能な一実現形態において、前記実行ユニットは、
受信された記述子の内容および第1の処理命令に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行する。
つまり、実行ユニット12aは、記述子の内容および第1の処理命令を受信した場合、記述子の内容に基づいて、第1の処理命令中の記述子識別子を含むオペランドに対応するデータのデータ記憶空間におけるデータアドレスを計算し、さらに、当該データアドレスに基づいて対応する処理を実行することができる。
例えば、命令Add;A;Bの場合、オペランドAとBにそれぞれ記述子の識別子TR1とTR2が含まれていると、制御ユニットは、テンソル制御モジュールを使用してTR1とTR2に対応する記述子記憶空間を確定し、記述子記憶空間における内容(例えば、形状パラメータとアドレスパラメータ)を読み取って実行ユニットに送信することができる。実行ユニットは、記述子の内容を受信した後、データAとBのデータアドレスを計算することができる。例えば、Aのメモリにおけるアドレス1はADDR64~ADDR127であり、Bのメモリにおけるアドレス2はADDR1023~ADDR1087である。その後、実行ユニットは、アドレス1とアドレス2からそれぞれデータを読み取って、加算(Add)演算を実行して、演算結果(A+B)を得ることができる。
このような方式によって、記述子記憶空間から記述子内容を取得し、さらにデータアドレスを取得できて、アクセスするたびに命令によってアドレスを導入する必要がなく、プロセッサのデータアクセス効率を向上させた。
可能な一実現形態において、記述子の識別子と内容が、記述子記憶空間に記憶でき、当該記述子記憶空間は、制御ユニットの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)の中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、前記制御ユニットの内部メモリ(例えば、オンチップキャッシュ)、または、前記制御ユニットと接続された外部メモリ(オフチップメモリ)の中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容および記述子が指すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタの中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が指すテンソルデータを記憶する。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子の中のデータは、即時値にすることも、専用レジスタの中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタの中の記述子が有効であると、記述子が指すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータの記憶に使用してもよい。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶でき、記述子が指すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が指すテンソルデータを記憶するの方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、実行ユニットは、記述子の内容に基づいて、オペランドに対応するデータのデータアドレスを確定し、その後、第1の処理命令を実行できる。
可能な一実現形態において、記述子の識別子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記データ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスはデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスは当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのN個の次元方向の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が指すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含んでもよい。ここで、データ記述位置は記述子が指すテンソルデータの中の点または領域のマッピング位置、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
図2は、本発明の一実施例に係るデータ処理装置を示すデータ記憶空間の模式図である。図2に示されたように、データ記憶空間21は、行優先の方式を使用して一つの2次元データを記憶し、(x、y)によって(ここで、X軸は水平方向に右向きであり、Y軸は垂直方向に下向きである)表すことができ、X軸方向におけるサイズ(各行のサイズ)がori_x(図示せず)であり、Y軸方向上のサイズ(全行数)がori_y(図示せず)であり、データ記憶空間21の開始アドレスPA_start(基準アドレス)が1番目のデータブロック22の物理アドレスである。データブロック23は、データ記憶空間21の中の一部のデータであり、X軸方向におけるオフセット量25がoffset_xで表し、Y軸方向におけるオフセット量24がoffset_yで表し、X軸方向におけるサイズがsize_xで表し、Y軸方向におけるサイズがsize_yで表す。
可能な一実現形態において、記述子を使用してデータブロック23を定義する場合、記述子のデータ基準点はデータ記憶空間21の1番目のデータブロックを使用でき、記述子の基準アドレスがデータ記憶空間21の開始アドレスPA_startであり、その後、データ記憶空間21のX軸におけるサイズori_x、Y軸におけるサイズori_y、および、データブロック23のY軸方向におけるオフセット量offset_y、X軸方向におけるオフセット量offset_x、X軸方向におけるサイズsize_xおよびY軸方向上のサイズsize_yと組み合わせて、データブロック23の記述子の内容を確定できる。
上記の例では記述子が記述したのは2次元空間であるが、当業者は実際の状況に従って記述子の内容が表す次元を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置に基づいて、前記テンソルデータの記述子の内容を確定できる。
例を挙げると、記述子のデータ基準点のデータ記憶空間における基準アドレスPA_base、および、対角位置の二つの頂点のデータ基準点に対する位置を使用して、図2の中のデータブロック23の記述子の内容を確定できる。まず、記述子のデータ基準点およびそのデータ記憶空間における基準アドレスPA_baseを確定し、例えば、データ記憶空間21の中で一つのデータ(例えば、位置が(2、2)であるデータである)をデータ基準点として選択し、当該データのデータ記憶空間における物理アドレスを基準アドレスPA_baseとし、その後、データブロック23の対角位置の少なくとも二つの頂点のデータ基準点に対する位置を確定できる。例えば、左上から右下への方向の対角位置頂点のデータ基準点に対する位置を使用し、ここで、左上の頂点の相対位置は(x_min、y_min)であり、右下の頂点の相対位置は(x_max、y_max)であり、その後、基準アドレスPA_base、左上の頂点の相対位置(x_min、y_min)、および、右下の頂点の相対位置(x_max、y_max)に基づいて、データブロック23の記述子の内容を確定できる。
可能な一実現形態において、以下の式(2)を使用して記述子の内容を表すことができる。
上記の例では左上と右下の二つの頂点を使用して記述子の内容を確定したが、当業者は実際の必要に従って少なくとも二つの頂点の具体的な頂点を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、前記記述子のデータ基準点の前記データ記憶空間における基準アドレス、および、前記記述子が指すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係に基づいて、前記テンソルデータの記述子の内容を確定できる。ここで、データ記述位置とデータアドレスとの間のマッピング関係は、実際の必要に従って設定でき、例えば、記述子が指すテンソルデータが3次元空間データである場合、関数f(x、y、z)を使用してデータ記述位置とデータアドレスとの間のマッピング関係を定義できる。
可能な一実現形態において、以下の式(3)を使用して記述子の内容を表すことができる。
当業者は、実際の状況に従ってデータ記述位置とデータアドレスとの間のマッピング関係を設定でき、本発明はこれに対して限定しないことを理解すべきである。
式(1)を使用して記述子の内容を表す場合、テンソルデータの中の任意の一つのデータ点に対して、そのデータ記述位置を
に設定すると、当該データ点のデータ記憶空間におけるデータアドレス
は、以下の式(4)を使用して確定できる。
このような方式によって、実行ユニットは、記述子の内容に基づいて記述子が指すテンソルデータのデータ記憶空間におけるデータアドレスを計算し、さらに当該アドレスに基づいて処理命令に対応する処理を実行できる。
可能な一実現形態において、記述子の管理命令に基づいて記述子の登録、変更、および、取り消しなどの管理を実現し、且つ、これら管理命令に対して該当するオペレーションコードを設定できる。例えば、記述子登録命令(TRCreat)に基づいて記述子を登録(作成)し、記述子変更命令に基づいて記述子の各パラメータ(形状、アドレスなど)を変更し、記述子取り消し命令(TRRelease)に基づいて記述子を取り消し(削除)できる。本発明は、記述子の管理命令の種類およびオペレーションコードの具体的な設定に対して限定しない。
可能な一実現形態において、前記制御ユニットは、さらに、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令の中の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを取得し、
前記記述子の登録パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定し、
前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築し、
前記記述子の内容を前記第1の記憶領域に記憶する。
例を挙げると、記述子登録命令は、記述子を登録するために使用でき、当該命令には記述子の登録パラメータを含んでもよい。当該登録パラメータは、記述子の識別子(ID)、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。例えば、当該登録パラメータは、識別子TR0、および、テンソル形状(次元数、各次元のサイズ、オフセット量、開始データアドレスなど)を含んでもよい。本発明は、登録パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子登録命令であると確定する場合、第1の処理命令中の登録パラメータに基づいて、制御ユニットは、前記テンソル制御モジュールを使用して該当する記述子を作成できる。
可能な一実現形態において、まず記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定できる。
例を挙げると、記憶領域の中の少なくとも一つを既に予め設定したとすると、第1の記憶領域及び/又は第2の記憶領域を直接確定できる。例えば、記述子内容とテンソルデータ内容とを同一の記憶空間に記憶すると予め設定し、記述子の識別子TR0に対応する記述子の内容の記憶アドレスがADDR32~ADDR63であり、テンソルデータの内容の記憶アドレスがADDR64~ADDR1023であると、この二つのアドレスは第1の記憶領域および第2の記憶領域であると直接確定できる。
可能な一実現形態において、記憶領域を予め設定しないと、テンソル制御モジュールを使用して記述子内容に対して記述子記憶空間中で第1の記憶領域を割り当て、且つ、テンソルデータ内容に対してデータ記憶空間中で第2の記憶領域を割り当てることができる。本発明はこれに対して限定しない。
可能な一実現形態において、登録パラメータ中のテンソル形状および前記第2の記憶領域のデータアドレスに基づいて、テンソル形状とアドレスとの間の対応関係を構築し、さらに記述子内容を確定することによって、データ処理の際に記述子内容に基づいて対応するデータアドレスを確定することができる。記述子内容を確定した後、それを第1の記憶領域中に記憶して、記述子の登録過程を完成できる。
例えば、図2に示されたテンソルデータ23について、登録パラメータは、データ記憶空間21の開始アドレスPA_start(基準アドレス)、X軸方向におけるオフセット量25(offset_xで表す)、Y軸方向におけるオフセット量24(offset_yで表す)、X軸方向におけるサイズ(size_xで表す)、および、Y軸方向におけるサイズ(size_yで表す)を含んでもよい。これらのパラメータに基づいて、記述子の内容を式(1)で表すことができ、それを第1の記憶領域中に記憶することによって、記述子の登録過程を完成できる。
このような方式によって、記述子登録命令に基づいて記述子を自動的に作成して、記述子が示すテンソルとデータアドレスとの間の対応を実現することによって、データ処理の際に記述子内容に基づいてデータアドレスを取得できて、プロセッサのデータアクセス効率を向上させる。
可能な一実現形態において、前記制御ユニットは、さらに、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令の中の記述子の識別子を取得し、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放する。
例を挙げると、記述子によって占用された空間を解放するために、記述子取り消し命令は記述子を取り消し(削除)するために使用できる。当該命令は、記述子の識別子を少なくとも含んでもよい。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子取り消し命令であると確定する場合、第1の処理命令の中の記述子識別子に基づいて、制御ユニットは、テンソル制御モジュールを使用して該当する記述子を取り消すことができる。
可能な一実現形態において、記述子の識別子に基づいて、テンソル制御モジュールは当該記述子の記述子記憶空間における記憶領域、および、記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域を解放することによって、当該記述子の各記憶領域に対する占用を解除できる。
このような方式によって、記述子の使用が終了した後に記述子によって占用された空間を解放して、限られた記憶リソースを繰り返して利用できて、リソースの利用効率を向上させた。
可能な一実現形態において、前記制御ユニットは、さらに、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令の中の記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得し、
前記記述子の変更パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の更新待ち内容を確定し、
更新待ち内容に基づいて、前記テンソル制御モジュールを使用して前記記述子記憶空間における前記記述子の内容を更新する。
例を挙げると、記述子変更命令は、記述子の例えば識別子、テンソル形状などの様々なパラメータを変更するために使用できる。当該命令は、変更パラメータを含んでもよく、当該変更パラメータは、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。本発明は、変更パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子変更命令であると確定する場合、第1の処理命令の中の変更パラメータに基づいて、制御ユニットは、テンソル制御モジュールを使用して記述子の更新待ち内容を確定でき、例えば、テンソルの次元を3次元から2次元へ変更し、テンソルの一つまたは複数の次元方向におけるサイズを変更する。
可能な一実現形態において、更新待ち内容を確定した後、テンソル制御モジュールは記述子記憶空間における記述子内容を更新することによって、更新後の記述子内容が変更後のテンソルデータの形状を表すようにすることができる。本発明は、更新待ち内容の範囲および具体的な更新方式に対して限定しない。
このような方式によって、記述子が示すテンソルデータに変更が発生された場合、記述子を直接変更することによって、記述子とテンソルデータとの間の対応が維持できて、リソースの利用効率が向上される。
可能な一実現形態において、前記制御ユニットは、依存関係判断モジュールをさらに備え、ここで、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、依存関係判断モジュールを使用して、依存関係を有する第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランド中に前記記述子の識別子を有する処理命令を含む第2の処理命令が存在するか否かを確定し、
依存関係を有する第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュする。
例を挙げると、記述子を設定した後、記述子に基づいて命令間の依存関係の判断するために、制御ユニットの中に依存関係判断モジュールを設置できる。復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、制御ユニットは、依存関係判断モジュールを使用して当該第1の処理命令のプリアンブル命令の中に依存関係を有する命令が存在するか否かを確定する。
この場合、依存関係判断モジュールは、命令キュー中の第1の処理命令の前の命令(プリアンブル命令)に対して、オペランド中に前記記述子の識別子を有する第2の処理命令を検索し、第2の処理命令が第1の処理命令と依存関係を有するか否かを判断する。
例えば、第1の処理命令が記述子TR0に対する演算命令であり、第2の処理命令が記述子TR0に対する書き込み命令であると、当該第2の処理命令の実行期間に、第1の処理命令を実行することができない、第2の処理命令と第1の処理命令との間に依存関係が有する。第2の処理命令が第1の処理命令に対する同期命令(sync)を含むと、当該第2の処理命令の実行が完成された後に、第1の処理命令を実行する必要がある、第2の処理命令と第1の処理命令との間に依存関係が有する。
可能な一実現形態において、依存関係を有する第2の処理命令が存在すると、第1の処理命令をブロックし、すなわち、第2の処理命令の実行が完成されるまでに、第1の処理命令およびその後の他の命令の実行を一時停止してから、第2の処理命令の実行が完成された後に、第1の処理命令およびその後の他の命令を実行できる。
可能な一実現形態において、依存関係を有する第2の処理命令が存在すると、第1の処理命令をキャッシュすることができ、すなわち、第1の処理命令を予め設定したキャッシュ空間に記憶して、他の命令の実行に影響を及ぼさないようにする。第2の処理命令の実行が完成された後に、キャッシュ空間中の第1の処理命令を実行する。本発明は、依存関係が存在する場合の第1の処理命令に対する処理方式に対して限定しない。
このような方式によって、依存関係判断モジュールを導入して、命令間のタイプによって発生された依存関係、および、同期命令によって発生された依存関係を確定することによって、命令の実行順序を保証し、データ処理の正確性を確保できる。
可能な一実現形態において、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定し、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュする。
例を挙げると、テンソル制御モジュールに記述子の状態の対応表を記憶することによって、記述子の状態は操作可能状態または操作不可状態を含む、記述子の現在の状態を、表すことができる。
可能な一実現形態において、第1の処理命令のプリアンブル命令が現在記述子に対して操作を実行している(例えば、書き込みまたは読み取り)場合、テンソル制御モジュールは記述子の現在状態を操作不可状態に設定できる。当該状態において、第1の処理命令を実行することができなく、第1の処理命令をブロックまたはキャッシュできる。逆に、プリアンブル命令が現在記述子に対して操作していない場合、テンソル制御モジュールは記述子の現在状態を操作可能状態に設定できる。当該状態において、第1の処理命令を実行できる。
可能な一実現形態において、記述子内容がレジスタTR(テンソルレジスタ、Tensor Register)に記憶されている場合、テンソル制御モジュールの記述子の状態対応表にTRの使用状況をさらに記憶することによって、TRが占用されているか解放されているかを確定し、限られたレジスタリソースの管理を実現できる。
このような方式によって、記述子の状態に基づいて命令間の依存関係を判断することによって、命令の実行順序を保証し、データ処理の正確性を確保できる。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記ソースデータおよび前記目的データの中の少なくとも一つが記述子の識別子を含む場合、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記記述子の内容および前記第1の処理命令を前記実行ユニットに送信し、
ここで、前記実行ユニットは、
受信された前記記述子の内容および前記第1の処理命令に基づいて、前記ソースデータの第1のデータアドレス、及び/又は、前記目的データの第2のデータアドレスをそれぞれ確定し、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込む。
例を挙げると、データアクセス命令のオペランドは、ソースデータと目的データを含み、ソースデータのデータアドレスからデータを読み取って目的データのデータアドレスに書込むために使用される。第1の処理命令がデータアクセス命令である場合、記述子に基づいてテンソルデータのアクセスを実現できる。データアクセス命令のソースデータと目的データの中の少なくとも一つが記述子の識別子を含む場合、テンソル制御モジュールを使用して記述子の記述子記憶空間を確定できる。
可能な一実現形態において、ソースデータが第1の記述子の識別子を含み、且つ、目的データが第2の記述子の識別子を含むと、制御ユニットは、テンソル制御モジュールを使用して第1の記述子の第1の記述子記憶空間および第2の記述子の第2の記述子記憶空間をそれぞれ確定し、その後、第1の記述子記憶空間および第2の記述子記憶空間から第1の記述子の内容および第2の記述子の内容をそれぞれ読み取り、且つ、第1の記述子および第2の記述子の内容を実行ユニットに送信する。実行ユニットは、第1の記述子および第2の記述子の内容を受信した後、ソースデータの第1のデータアドレスおよび目的データの第2のデータアドレスをそれぞれ計算でき、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
例えば、ソースデータは、オフチップの読み取り待ちデータであり、その第1の記述子の識別子は1であり、目的データはオンチップの一つの記憶空間であり、その第2の記述子の識別子は2であってもよい。制御ユニット11aはソースデータ中の第1の記述子の識別子1および目的データ中第2の記述子の識別子2に基づいて、記述子記憶空間から第1の記述子の内容D1および第2の記述子の内容D2をそれぞれ取得でき、并将第1の記述子の内容D1、第2の記述子の内容D2および第1の処理命令を実行ユニット12aに送信する。ここで、第1の記述子の内容D1および第2の記述子の内容は、それぞれ以下のように表すことができる。
実行ユニット12aは、受信された第1の記述子の内容D1および第1の記述子の内容D2に基づいて、ソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4をそれぞれ取得して、それぞれ以下のように表すことができる。
実行ユニット12aは、ソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4、および、第1の記述子の内容D1および第2の記述子の内容D2に基づいて、第1のデータアドレスおよび第2のデータアドレスをそれぞれ確定し、且つ、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって(IOチャンネルを介することができる)、D1が指すテンソルデータをD2が指す記憶空間にロードすることを完成させる。
可能な一実現形態において、ソースデータのみが第1の記述子の識別子を含むと、制御ユニットは、テンソル制御モジュールを使用して第1の記述子の第1の記述子記憶空間を確定し、その後、第1の記述子記憶空間から第1の記述子の内容を読み取り、且つ、当該記述子の内容を実行ユニットに送信する。実行ユニットは、第1の記述子の内容を受信した後、ソースデータの第1のデータアドレスを計算でき、命令のオペランド中の目的データの第2のデータアドレスに基づいて、実行ユニットは第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
可能な一実現形態において、目的データのみが第2の記述子の識別子を含むと、制御ユニットは、テンソル制御モジュールを使用して第2の記述子の第2の記述子記憶空間を確定し、その後、第2の記述子記憶空間から第2の記述子の内容を読み取って、当該第2の記述子の内容を実行ユニットに送信する。実行ユニットは、第2の記述子の内容を受信した後、目的データの第2のデータアドレスを計算でき、命令のオペランド中のソースデータの第1のデータアドレスに基づいて、実行ユニットは第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
このような方式によって、記述子を使用してデータのアクセスを完成できて、アクセスするたびに命令によってデータアドレスを導入する必要がなく、データアクセス効率を向上させた。
可能な一実現形態において、前記第1の処理命令は、演算命令を含み、ここで、前記実行ユニットは、
受信された記述子の内容および第1の処理命令に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行する。
例を挙げると、第1の処理命令が演算命令である場合、記述子に基づいてテンソルデータの演算を実現できる。演算命令のオペランド中に記述子の識別子が含まれている場合、テンソル制御モジュールを使用して記述子の記述子記憶空間を確定できる、その後、記述子記憶空間から記述子の内容を読み取り、当該記述子の内容を実行ユニットに送信する。実行ユニットは、記述子の内容を受信した後、オペランドに対応するデータのアドレスを計算でき、さらにデータアドレスからデータを読み取って演算を実行することによって、演算過程全体を完成できる。このような方式によって、演算の際に記述子を使用してデータの読み取りを完成できて、命令によってデータアドレスを導入する必要がなく、データ演算効率を向上させた。
本発明の実施例に係るデータ処理装置によると、テンソル形状を示すことができる記述子を導入することによって、データ処理命令の運行過程で記述子に基づいてデータのアドレスを確定できるようになって、ハードウェアの観点から命令生成方式が簡略化され、データアクセスの複雑度を低下させ、且つ、プロセッサアクセスデータの効率を向上させた。
可能な一実現形態において、人工知能チップをさらに開示し、当該人工知能チップは上記のデータ処理装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは上記の人工知能チップを備える。
図4は、本発明の実施例に係るボードカードの構成を示すブロック図であり、図4を参照すると、上記のボードカードは、上記の人工知能チップ389に加えて、他のサポート部品を備えてもよく、当該サポート部品は、記憶デバイス390と、インターフェース装置391と、制御デバイス392と、を含むが、これらに限定されなく、
前記記憶デバイス390は、前記人工知能チップとバスを介して接続され、データを記憶するために使用される。前記記憶デバイスは、複数グループの記憶ユニット393を含んでもよい。各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続される。各グループの前記記憶ユニットは、DDR SDRAM(英語:Double Data Rate SDRAM、ダブルレート同期ダイナミックランダムアクセスメモリ)であってもよいことを理解できる。
DDRは、クロック周波数を上げずにSDRAMの速度を2倍にすることができる。DDRは、クロックパルスの上がりエンジと下がりエンジでデータを読み取ることができる。DDRの速度は、標準SDRAMの2倍である。一つの実施例において、前記記憶装置は、4グループの前記記憶ユニットを備えてもよい。各グループの前記記憶ユニットは、複数のDDR4粒子(チップ)を備えてもよい。一つの実施例において、前記人工知能チップの内部は、4個の72ビットのDDR4コントローラを備えてもよく、上記の72ビットのDDR4コントローラ中の64bitが、データ伝送に使用され、8bitが、ECC検証に使用される。各グループの前記記憶ユニットでDDR4-3200粒子を使用する場合、データ伝送する理論上の帯域幅が25600MB/sに達することを理解できる。
一つの実施例において、各グループの前記記憶ユニットは、複数の並列に配置されたダブルレート同期ダイナミックランダムアクセスメモリを備える。DDRは、一つのクロックサイクルでデータを2回伝送することができる。在前記人工知能チップにおいて、DDRを制御するコントローラを設置し、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用する。
前記インターフェース装置は、前記人工知能チップと電気的に接続される。前記インターフェース装置は、前記人工知能チップと外部デバイス(例えば、サーバまたはコンピュータ)との間のデータ伝送を実現するために使用される。例えば、一つの実施例において、前記インターフェース装置は、標準PCIEインターフェースであってもよい。例えば、処理待ちのデータが、サーバによって標準PCIEインターフェースを介して前記人工知能チップに伝送され、データ移送を実現する。好もしくは、PCIE 3.0 X 16インターフェースを使用して伝送する場合、理論上の帯域幅が16000MB/sに達することができる。もう一つの実施例において、前記インターフェース装置は、さらに、他のインターフェースであってもよく、前記インターフェースユニットが中継接続機能を実現できる限り、本願は上記の他のインターフェースの具体的な表現形式に対して限定しない。また、前記人工知能チップの計算結果は、依然として、前記インターフェース装置によって外部デバイス(例えば、サーバ)に伝送し返す。
前記制御デバイスは、前記人工知能チップと電気的に接続される。前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。具体的に、前記人工知能チップは、前記制御デバイスとSPIインターフェース介して電気的に接続できる。前記制御デバイスは、シングルチップマイクロコンピュータ(Micro Controller Unit、MCU)を含んでもよい。前記人工知能チップは、複数の処理チップ、複数の処理コア、または、複数の処理回路を含んでもよく、複数の負荷を駆動できる。したがって、前記人工知能チップは、複数の負荷や軽負荷などの異なる作業状態にいることができる。前記制御装置によって前記人工知能チップの中の複数の処理チップ、複数の処理、または、複数の処理回路の作業状態に対する調整制御を実現できる。
いくつかの実施例において、電子デバイスを申し込み、当該電子デバイスは、上記の人工知能チップを備える。
電子デバイスは、データ処理装置、ロボット、コンピュータ、プリンター、スキャナー、タブレットコンピュータ、スマート端末、携帯電話、ドライビングレコーダー、ナビゲーター、センサ、Webカメラ、サーバ、クラウドサーバ、カメラ、ビデオカメラ、プロジェクター、腕時計、ヘッドセット、モバイルストレージ、ウェアラブルデバイス、交通ツール、家電製品、及び/又は、医療機器を含む。
前記交通ツールは、飛行機、船、及び/又は、車両を含み、前記家電製品は、テレビ、エアコン、電子レンジ、冷蔵庫、炊飯器、加湿器、洗濯機、電灯、ガスストーブ、および、レンジフードを含み、前記医療機器は、核磁気共鳴装置、B超音波装置、及び/又は、心電計を含む。
A1、データ処理装置であって、前記装置は、制御ユニットと実行ユニットとを備え、前記制御ユニットが、テンソル制御モジュールを備え、ここで、前記制御ユニットが、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子に対応する記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記実行ユニットが前記記述子の内容に基づいて前記第1の処理命令を実行するように、前記記述子の内容および前記第1の処理命令を前記実行ユニットに送信する。
A2、請求項A1に記載の装置であって、前記実行ユニットは、
受信された記述子の内容および第1の処理命令に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記第1の処理命令に対応するデータ処理を実行する。
A3、請求項A2に記載の装置であって、前記制御ユニットは、さらに、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令中の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得し、
前記記述子の登録パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定し、
前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築し、
前記記述子の内容を前記第1の記憶領域に記憶する。
A4、請求項A1乃至A3の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令中の記述子の識別子を取得し、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放する。
A5、請求項A1乃至A4の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令中の記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得し、
前記記述子の変更パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の更新待ち内容を確定し、
更新待ち内容に基づいて、前記テンソル制御モジュールを使用して前記記述子記憶空間における前記記述子の内容を更新する。
A6、請求項A1乃至A5の中のいずれか1項に記載の装置であって、前記制御ユニットは、依存関係判断モジュールをさらに備え、ここで、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、依存関係判断モジュールを使用して、依存関係を有する第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランド中に前記記述子の識別子を有する処理命令を含む第2の処理命令が、が存在するか否かを確定し、
依存関係を有する第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュする。
A7、請求項A1乃至A5の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定し、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュする。
A8、請求項A2に記載の装置であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記ソースデータおよび前記目的データの中の少なくとも一つが記述子の識別子を含む場合、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記記述子の内容および前記第1の処理命令を前記実行ユニットに送信し、
ここで、前記実行ユニットは、
受信された前記記述子の内容および前記第1の処理命令に基づいて、前記ソースデータの第1のデータアドレス、及び/又は、前記目的データの第2のデータアドレスをそれぞれ確定し、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込む。
A9、請求項2に記載の装置であって、前記第1の処理命令は、演算命令を含み、ここで、前記実行ユニットは、
受信された記述子の内容および第1の処理命令に基づいて、前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行する。
A10、請求項A1乃至A9の中のいずれか1項に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A11、請求項A10に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A12、請求項A11に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記データ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が指すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A13、請求項A1乃至A12の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードが、前記第1の処理命令に対応する処理タイプを示すために使用される。
A14、請求項A2乃至A13の中のいずれか1項に記載の装置であって、前記記述子記憶空間は、前記制御ユニットの内部メモリ中の記憶空間であり、前記データ記憶空間は、前記制御ユニットの内部メモリまたは前記制御ユニットと接続された外部メモリ中の記憶空間である。
A15、人工知能チップであって、前記チップは、請求項A1乃至A14の中のいずれか1項に記載のデータ処理装置を備える。
A16、電子デバイスであって、前記電子デバイスは、請求項A15に記載の人工知能チップを備える。
A17、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A15に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A18、請求項A17に記載のボードカードであって、
前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用され、
前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加している。関連技術において、プロセッサは、一般的に、命令のパラメータを取得してデータアドレスを確定し、次に、データアドレスに基づいてデータの読み取りと使用を完成する。これにより、技術者は、パラメータを設定するときに、データアクセスの関連パラメータ(例えば、データ間またはデータ次元間の相互関係など)を設定することによって、命令を生成してプロセッサに伝送してデータのアクセスを完成する必要があり、当該方式はプロセッサの処理効率を低下させた。
本発明の実施例によると、データ処理装置が提供される。図1bは、本発明の一実施例に係るデータ処理装置を示すブロック図である。図1bに示されたように、当該データ処理装置は、制御ユニット11bと実行ユニット12bとを備え、前記制御ユニット11bが、テンソル制御モジュール111bを備え、ここで、前記制御ユニット11bが、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子に対応する記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記記述子の内容に基づいて、前記テンソル制御モジュールを使用して前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記テンソル制御モジュールを使用して前記第1の処理命令に対応するデータ処理を実行する。
本発明の実施例のデータ処理装置によると、テンソル形状を示す記述子を導入して、制御ユニットの中にテンソル制御モジュールを設置することで、復号化された処理命令のオペランドの中に記述子識別子が含まれる場合、テンソル制御モジュールを使用して記述子内容を取得し、テンソル制御モジュールを使用してデータアドレスを確定し、さらに処理命令を実行することによって、データアクセスの複雑度を低下させ、データアクセスの効率を向上させる。
例を挙げると、当該データ処理装置は、例えば、プロセッサであってもよく、ここで、プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。
可能な一実現形態において、データ処理装置は、制御ユニット11bと実行ユニット12bとを備えてもよく、制御ユニット11bが、装置を制御するために使用され、例えば、メモリまたは外部から導入される命令を読み取って、命令を復号化(デコード)し、該当する部品にマイクロ操作制御信号などを送信する。実行ユニット12bは、具体的な演算命令を実行するために使用され、例えば、算術論理ユニット(arithmetic and logic unit、ALU)、メモリアクセスユニット(memory access unit、MAU)、人工知能演算ユニット(neural functional unit、NFU)などであってもよい。本発明は、実行ユニット12bの具体的なハードウェアタイプに対して限定しない。
可能な一実現形態において、データ処理装置に処理されたデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよい。この場合、記述子(テンソル記述子)を導入して、テンソル(N次元のテンソルデータ)の形状を示すことができる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元のテンソルデータであり、記述子は当該テンソルデータの三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設置でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。
記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状を表現でき、さらに、複数のテンソルデータ間の相互関係などの関連情報も確定できるので、テンソルデータに対するアクセス効率を向上させる。
可能な一実現形態において、制御ユニット11bの中にテンソル制御モジュール111bが設置されていることによって、記述子に関連する操作および命令の実行を実現でき、例えば、記述子の登録、変更、および、取り消し、記述子内容の書き込み、データアドレスの計算、および、データアクセス命令の実行などの実行を実現できる。テンソル制御モジュール111bは、例えば、テンソルインターフェースユニット(Tensor interface Unit、TIU)であり、本発明は、テンソル制御モジュールの具体的なハードウェアタイプに対して限定しない。このような方式によって、専用のハードウェアによって記述子に関連する操作を実現することによって、テンソルデータのアクセス効率をさらに向上させることができる。
可能な一実現形態において、データ処理装置は、処理命令が受信されると、まず、通過制御ユニット11bを使用して処理命令に対して復号化(デコード)を実行できる。ここで、前記制御ユニット11bは、さらに、受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードが、前記第1の処理命令に対応する処理タイプを示すために使用される。
この場合、第1の処理命令は、制御ユニット11bによって復号化された後、復号化後の第1の処理命令(マイクロ命令)が得られる。ここで、第1の処理命令は、データアクセス命令、演算命令、記述子管理命令、同期命令などを含んでもよい。本発明は、第1の処理命令の具体的なタイプ、および、復号化の具体的な方式に対して限定しない。
当該復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含んでもよく、オペレーションコードが、第1の処理命令に対応する処理タイプを示すために使用され、オペランドが、処理待ちのデータを示すために使用される。例えば、当該命令は、Add;A;Bのように表されることができ、Addがオペレーションコードであり、AとBがオペランドであり、当該命令はAとBの加算に使用される。本発明は、復号化後の命令のオペランドの数および命令の表示形式に対して限定しないことを命令する。
可能な一実現形態において、制御ユニット11bによって復号化された後の第1の処理命令のオペランドが記述子の識別子を含むと、テンソル制御モジュールによって記述子に対応する記述子記憶空間を確定でき、記述子記憶空間を確定した後、記述子記憶空間から記述子の内容(テンソルデータを表す形状、アドレスなどの情報を含む)を取得できる。その後、記述子の内容に基づいて、テンソル制御モジュールを使用してオペランドに対応するデータ記憶空間におけるデータアドレス確定し、データアドレスに基づいて、テンソル制御モジュールを使用して第1の処理命令に対応するデータ処理を実行できる。
つまり、テンソル制御モジュールは、第1の処理命令のオペランド中の記述子の識別子を含む場合、記述子の識別子に基づいて記述子記憶空間から記述子の内容を取得し、記述子の内容に基づいて、第1の処理命令中の記述子識別子を含むオペランドに対応するデータのデータ記憶空間におけるデータアドレスを計算し、さらに、当該データアドレスに基づいて対応する処理を実行することができる。
このような方式によって、記述子記憶空間から記述子内容を取得し、さらにデータアドレスを取得できて、アクセスするたびに命令によってアドレスを導入する必要がなく、プロセッサのデータアクセス効率を向上させた。
可能な一実現形態において、記述子の識別子と内容が、記述子記憶空間に記憶でき、当該記述子記憶空間は、制御ユニットの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)の中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、前記制御ユニットの内部メモリ(例えば、オンチップキャッシュ)、または、前記制御ユニットと接続された外部メモリ(オフチップメモリ)の中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタの中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子の中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタの中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、制御ユニットは、記述子の内容に基づいて、テンソル制御モジュールを使用してオペランドに対応するデータのデータアドレスを確定し、その後、第1の処理命令を実行する。
可能な一実現形態において、記述子の識別子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスはデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスは当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータの中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の管理命令に基づいて記述子の登録、変更、および、取り消しなどの管理を実現し、且つ、これら管理命令に対して該当するオペレーションコードを設定できる。例えば、記述子登録命令(TRCreat)に基づいて記述子を登録(作成)し、記述子変更命令に基づいて記述子の各パラメータ(形状、アドレスなど)を変更し、記述子取り消し命令(TRRelease)に基づいて記述子を取り消し(削除)できる。本発明は、記述子の管理命令の種類およびオペレーションコードの具体的な設定に対して限定しない。
可能な一実現形態において、前記制御ユニットは、さらに、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令中の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得し、
前記記述子の登録パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定し、
前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築し、
前記記述子の内容を前記第1の記憶領域に記憶する。
例を挙げると、記述子登録命令は、記述子を登録するために使用でき、当該命令には記述子の登録パラメータを含んでもよい。当該登録パラメータは、記述子の識別子(ID)、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。例えば、当該登録パラメータは、識別子TR0、および、テンソル形状(次元数、各次元のサイズ、オフセット量、開始データアドレスなど)を含んでもよい。本発明は、登録パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子登録命令であると確定する場合、第1の処理命令中の登録パラメータに基づいて、制御ユニットは、前記テンソル制御モジュールを使用して該当する記述子を作成できる。
可能な一実現形態において、まず記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定できる。
例を挙げると、記憶領域の中の少なくとも一つを既に予め設定したとすると、第1の記憶領域及び/又は第2の記憶領域を直接確定できる。例えば、記述子内容とテンソルデータ内容とを同一の記憶空間に記憶すると予め設定し、記述子の識別子TR0に対応する記述子の内容の記憶アドレスがADDR32~ADDR63であり、テンソルデータの内容の記憶アドレスがADDR64~ADDR1023であると、この二つのアドレスは第1の記憶領域および第2の記憶領域であると直接確定できる。
可能な一実現形態において、記憶領域を予め設定しないと、テンソル制御モジュールを使用して記述子内容に対して記述子記憶空間中で第1の記憶領域を割り当て、テンソルデータ内容に対してデータ記憶空間中で第2の記憶領域を割り当てることができる。本発明はこれに対して限定しない。
可能な一実現形態において、登録パラメータ中のテンソル形状および前記第2の記憶領域のデータアドレスに基づいて、テンソル形状とアドレスとの間の対応関係を構築し、さらに記述子内容を確定することによって、データ処理の際に記述子内容に基づいて対応するデータアドレスを確定することができる。記述子内容を確定した後、それを第1の記憶領域中に記憶して、記述子の登録過程を完成できる。
例えば、図2に示されたテンソルデータ23について、登録パラメータは、データ記憶空間21の開始アドレスPA_start(基準アドレス)、X軸方向におけるオフセット量25(offset_xで表す)、Y軸方向におけるオフセット量24(offset_yで表す)、X軸方向におけるサイズ(size_xで表す)、および、Y軸方向におけるサイズ(size_yで表す)を含んでもよい。これらのパラメータに基づいて、記述子の内容を式(1)で表すことができ、それを第1の記憶領域中に記憶することによって、記述子の登録過程を完成できる。
このような方式によって、記述子登録命令に基づいて記述子を自動的に作成して、記述子が示すテンソルとデータアドレスとの間の対応を実現することによって、データ処理の際に記述子内容に基づいてデータアドレスを取得できて、プロセッサのデータアクセス効率を向上させる。
可能な一実現形態において、前記制御ユニットは、さらに、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令中の記述子の識別子を取得し、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放する。
例を挙げると、記述子によって占用された空間を解放するために、記述子取り消し命令は記述子を取り消し(削除)するために使用できる。当該命令は、記述子の識別子を少なくとも含んでもよい。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子取り消し命令であると確定する場合、第1の処理命令中の記述子識別子に基づいて、制御ユニットは、テンソル制御モジュールを使用して該当する記述子を取り消すことができる。
可能な一実現形態において、記述子の識別子に基づいて、テンソル制御モジュールは当該記述子の記述子記憶空間における記憶領域、および、記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域を解放することによって、当該記述子の各記憶領域に対する占用を解除できる。
このような方式によって、記述子の使用が終了した後に記述子によって占用された空間を解放して、限られた記憶リソースを繰り返して利用できて、リソースの利用効率を向上させた。
可能な一実現形態において、前記制御ユニットは、さらに、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令中の記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得し、
前記記述子の変更パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の更新待ち内容を確定し、
更新待ち内容に基づいて、前記テンソル制御モジュールを使用して前記記述子記憶空間における前記記述子の内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新する。
例を挙げると、記述子変更命令は、記述子の例えば識別子、テンソル形状などの様々なパラメータを変更するために使用できる。当該命令は、変更パラメータを含んでもよく、当該変更パラメータが、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。本発明は、変更パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、復号化後の第1の処理命令のオペレーションコードに基づいて当該命令が記述子変更命令であると確定する場合、第1の処理命令の中の変更パラメータに基づいて、制御ユニットは、テンソル制御モジュールを使用して記述子の更新待ち内容を確定でき、例えば、テンソルの次元を3次元から2次元へ変更し、テンソルの一つまたは複数の次元方向におけるサイズを変更する。
可能な一実現形態において、更新待ち内容を確定した後、テンソルデータを変更して更新後の記述子内容が変更後のテンソルデータの形状を示すようにするために、テンソル制御モジュールは、記述子記憶空間における記述子内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新できる。本発明は、更新待ち内容の範囲および具体的な更新方式に対して限定しない。
このような方式によって、記述子が示すテンソルデータに変更が発生された場合、記述子を直接変更することによって、記述子とテンソルデータとの間の対応が維持できて、リソースの利用効率が向上される。
可能な一実現形態において、前記制御ユニットは、依存関係判断モジュールをさらに備え、ここで、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、依存関係判断モジュールを使用して、依存関係を有する第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランド中に前記記述子の識別子を有する処理命令を含む第2の処理命令が、が存在するか否かを確定し、
依存関係を有し且つ処理未完成の第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュする。
例を挙げると、記述子を設定した後、記述子に基づいて命令間の依存関係の判断するために、制御ユニットの中に依存関係判断モジュールを設置できる。復号化後の第1の処理命令のオペランドが記述子の識別子を含むと、制御ユニットは、依存関係判断モジュールを使用して当該第1の処理命令のプリアンブル命令の中に依存関係を有する命令が存在するか否かを確定する。
この場合、依存関係判断モジュールは、命令キュー中の第1の処理命令の前の命令(プリアンブル命令)に対して、オペランド中に前記記述子の識別子を有する第2の処理命令を検索し、検索された第2の処理命令を第1の処理命令と依存関係を有する処理命令とする。第1の処理命令のオペランド中に複数の記述子の識別子が有する場合、各々の記述子に対応する依存関係をそれぞれ判断でき、つまり、オペランド中に有する複数の記述子の中の少なくとも一つの記述子の識別子のプリアンブル命令を、依存関係を有する第2の処理命令とする。
例えば、第1の処理命令が記述子TR0に対する演算命令であり、第2の処理命令が記述子TR0に対する書き込み命令であると、第2の処理命令と第1の処理命令との間に依存関係を有し、当該第2の処理命令の実行期間に、第1の処理命令を実行することができない。第2の処理命令が第1の処理命令に対する同期命令(sync)を含むと、第2の処理命令と第1の処理命令との間に依存関係を有し、当該第2の処理命令の実行が完成された後に、第1の処理命令を実行する必要がある。
可能な一実現形態において、依存関係を有し、且つ、処理未完成の第2の処理命令が存在すると、第1の処理命令をブロックし、すなわち、第2の処理命令の実行が完成されるまでに、第1の処理命令およびその後の他の命令の実行を一時停止してから、第2の処理命令の実行が完成された後に、第1の処理命令およびその後の他の命令を実行できる。
可能な一実現形態において、依存関係を有し、且つ、処理未完成の第2の処理命令が存在すると、第1の処理命令をキャッシュすることができ、すなわち、第1の処理命令を予め設定したキャッシュ空間に記憶して、他の命令の実行に影響を及ぼさないようにする。第2の処理命令の実行が完成された後に、キャッシュ空間中の第1の処理命令を実行する。本発明は、当該場合の第1の処理命令の処理方式に対して限定しない。
このような方式によって、依存関係判断モジュールを導入して、命令間のタイプによって発生された依存関係、および、同期命令によって発生された依存関係を確定することによって、命令の実行順序を保証し、データ処理の正確性を確保できる。
可能な一実現形態において、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定し、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュする。
例を挙げると、テンソル制御モジュールに記述子の状態の対応表を記憶することによって、記述子の状態は操作可能状態または操作不可状態を含む、記述子の現在の状態を、表すことができる。
可能な一実現形態において、第1の処理命令のプリアンブル命令が当前記述子に対して操作を実行している(例えば、書き込みまたは読み取り)場合、テンソル制御モジュールは記述子の現在状態を操作不可状態に設定できる。当該状態において、第1の処理命令を実行することができなく、第1の処理命令をブロックまたはキャッシュできる。逆に、当前記述子に対して操作を実行するプリアンブル命令がない場合、テンソル制御モジュールは記述子の現在状態を操作可能状態に設定できる。当該状態において、第1の処理命令を実行できる。
可能な一実現形態において、記述子内容がレジスタTR(テンソルレジスタ、Tensor Register)に記憶されている場合、テンソル制御モジュールの記述子の状態対応表にTRの使用状況をさらに記憶することによって、TRが占用されているか解放されているかを確定し、限られたレジスタリソースの管理を実現できる。
このような方式によって、記述子の状態に基づいて命令間の依存関係を判断することによって、命令の実行順序を保証し、データ処理の正確性を確保できる。
可能な一実現形態において、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記ソースデータおよび前記目的データの中の少なくとも一つが記述子の識別子を含む場合、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記記述子の内容に基づいて、前記テンソル制御モジュールを使用して前記ソースデータの第1のデータアドレス及び/又は前記目的データの第2のデータアドレスを確定し、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込む。
例を挙げると、データアクセス命令のオペランドは、ソースデータと目的データを含み、ソースデータのデータアドレスからデータを読み取って目的データのデータアドレスに書込むために使用される。第1の処理命令がデータアクセス命令である場合、記述子に基づいてテンソルデータのアクセスを実現できる。データアクセス命令のソースデータと目的データの中の少なくとも一つが記述子の識別子を含む場合、テンソル制御モジュールを使用して記述子の記述子記憶空間を確定できる。
可能な一実現形態において、ソースデータが第1の記述子の識別子を含み、且つ、目的データが第2の記述子の識別子を含むと、制御ユニットは、テンソル制御モジュールを使用して第1の記述子の第1の記述子記憶空間および第2の記述子の第2の記述子記憶空間をそれぞれ確定し、その後、第1の記述子記憶空間および第2の記述子記憶空間から第1の記述子の内容および第2の記述子の内容をそれぞれ読み取り、且つ、第1の記述子および第2の記述子の内容に基づいて、テンソル制御モジュールを使用してソースデータの第1のデータアドレスおよび目的データの第2のデータアドレスをそれぞれ計算し、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
例えば、ソースデータは、オフチップの読み取り待ちデータであり、その第1の記述子の識別子がTR1であり、目的データはオンチップの一つの記憶空間であり、その第2の記述子の識別子がTR2である。制御ユニット11bは、ソースデータ中の第1の記述子の識別子TR1および目的データ中第2の記述子の識別子TR2に基づいて、記述子記憶空間から第1の記述子の内容D1および第2の記述子の内容D2をそれぞれ取得できる。ここで、第1の記述子の内容D1および第2の記述子の内容D2をそれぞれ以下のように表すことができる。
制御ユニット11bは、得られた第1の記述子の内容D1および第2の記述子の内容D2に基づいて、テンソル制御モジュールを使用してソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4をそれぞれ取得でき、それぞれ以下のように表すことができる。
制御ユニット11bは、ソースデータの開始物理アドレスPA3および目的データの開始物理アドレスPA4、および、第1の記述子の内容D1および第2の記述子の内容D2に基づいて、テンソル制御モジュールを使用して第1のデータアドレスおよび第2のデータアドレスをそれぞれ確定し、且つ、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって(IOチャンネルを介することができる)、D1が示すテンソルデータをD2が示す記憶空間にロードすることを完成できる。
可能な一実現形態において、ソースデータのみが第1の記述子の識別子を含むと、制御ユニットは、テンソル制御モジュールを使用して第1の記述子の第1の記述子記憶空間を確定し、その後、第1の記述子記憶空間から第1の記述子の内容を読み取り、且つ、第1の記述子の内容に基づいて、テンソル制御モジュールを使用してソースデータの第1のデータアドレスを計算してから命令のオペランド中の目的データの第2のデータアドレスに基づいて、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
可能な一実現形態において、目的データのみが第2の記述子の識別子を含むと、制御ユニットは、テンソル制御モジュールを使用して第2の記述子の第2の記述子記憶空間を確定し、その後、第2の記述子記憶空間から第2の記述子の内容を読み取り、且つ、第2の記述子の内容に基づいて、テンソル制御ユニットを使用して目的データの第2のデータアドレスを計算してから命令のオペランド中のソースデータの第1のデータアドレスに基づいて、第1のデータアドレスからデータを読み取って第2のデータアドレスに書込むことによって、アクセス過程全体を完成できる。
このような方式によって、記述子を使用してデータのアクセスを完成できて、アクセスするたびに命令によってデータアドレスを導入する必要がなく、データアクセス効率を向上させた。
可能な一実現形態において、前記第1の処理命令は、演算命令を含み、ここで、前記制御ユニット11は、
前記第1の処理命令が演算命令である場合、前記データアドレスおよび前記第1の処理命令を前記実行ユニットに送信し、
ここで、前記実行ユニットは、
受信された前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行する。
例を挙げると、第1の処理命令が演算命令である場合、記述子に基づいてテンソルデータの演算を実現できる。演算命令のオペランドに記述子の識別子が含まれている場合、制御ユニットは、テンソル制御モジュールを使用して記述子の記述子記憶空間を確定し、その後、記述子記憶空間から記述子の内容を読み取り、記述子の内容に基づいて、テンソル制御モジュールを使用してオペランドに対応するデータのアドレスを計算してからデータをアドレスおよび第1の処理命令を実行ユニットに送信し、実行ユニットは、受信されたデータアドレスに基づいて、データアドレスからデータを読み取って演算を実行することによって、演算過程全体を完成できる。
例えば、演算命令Add;A;Bについて、オペランドAとBに記述子の識別子TR3およびTR4がそれぞれ含まれていると、制御ユニットは、テンソル制御モジュールを使用してTR3およびTR4に対応する記述子記憶空間を確定し、記述子記憶空間における内容(例えば、形状パラメータとアドレスパラメータ)を読み取って記述子の内容に基づいて、テンソル制御モジュールを使用してデータAとBのデータアドレスを計算し、例えば、データAのメモリにおけるデータアドレス1がADDR64~ADDR127であり、データBのメモリにおけるデータアドレス2がADDR1023~ADDR1087であり、その後、データアドレス1、データアドレス2、および、Add命令を実行ユニットに送信し、実行ユニットは、データアドレス1とデータアドレス2からそれぞれデータを読み取り、加算(Add)演算を実行して、演算結果(A+B)を得ることができる。
このような方式によって、演算の際に記述子を使用してデータの読み取りを完成できて、命令によってデータアドレスを導入する必要がなく、データ演算効率を向上させた。
本発明の実施例に係るデータ処理装置によると、テンソル形状を示すことができる記述子を導入することによって、データ処理命令の運行過程で記述子に基づいてデータのアドレスを確定できるようになって、ハードウェアの観点から命令生成方式が簡略化され、データアクセスの複雑度を低下させ、プロセッサアクセスデータの効率を向上させた。
可能な一実現形態において、人工知能チップをさらに開示し、当該人工知能チップは上記のデータ処理装置を備える。
A1、データ処理装置であって、前記装置は、制御ユニットと実行ユニットとを備え、前記制御ユニットが、テンソル制御モジュールを備え、ここで、前記制御ユニットが、
復号化後の第1の処理命令のオペランドが、テンソルの形状を示すための記述子の識別子を含む場合、前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子に対応する記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記記述子の内容に基づいて、前記テンソル制御モジュールを使用して前記第1の処理命令のオペランドに対応するデータのデータ記憶空間におけるデータアドレスを確定し、
前記データアドレスに基づいて、前記テンソル制御モジュールを使用して前記第1の処理命令に対応するデータ処理を実行する。
A2、請求項A1に記載の装置であって、前記制御ユニットは、さらに、
前記第1の処理命令が記述子登録命令である場合、前記第1の処理命令中の記述子の登録パラメータであって、前記記述子の識別子、テンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む登録パラメータを、取得し、
前記記述子の登録パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定し、
前記記述子の登録パラメータおよび前記第2の記憶領域に基づいて、前記記述子の内容を確定することによって、前記記述子と前記第2の記憶領域との間の対応関係を構築し、
前記記述子の内容を前記第1の記憶領域に記憶する。
A3、請求項A1またはA2に記載の装置であって、前記制御ユニットは、さらに、
前記第1の処理命令が記述子取り消し命令である場合、前記第1の処理命令中の記述子の識別子を取得し、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放する。
A4、請求項A1乃至A3の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
前記第1の処理命令が記述子変更命令である場合、前記第1の処理命令中の記述子の、前記記述子の識別子、変更待ちのテンソル形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含む変更パラメータを取得し、
前記記述子の変更パラメータに基づいて、前記テンソル制御モジュールを使用して前記記述子の更新待ち内容を確定し、
更新待ち内容に基づいて、前記テンソル制御モジュールを使用して前記記述子記憶空間における前記記述子の内容、及び/又は、データ記憶空間におけるテンソルデータの内容を更新する。
A5、請求項A1乃至A4の中のいずれか1項に記載の装置であって、前記制御ユニットは、依存関係判断モジュールをさらに備え、ここで、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、依存関係判断モジュールを使用して、依存関係を有する第2の処理命令であって、命令キュー中で前記第1の処理命令の前に位置し、且つ、オペランド中に前記記述子の識別子を有する処理命令を含む第2の処理命令が、が存在するか否かを確定し、
依存関係を有し且つ処理未完成の第2の処理命令が存在する場合、前記第1の処理命令をブロックまたはキャッシュする。
A6、請求項A1乃至A5の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
前記記述子の識別子に基づいて、前記テンソル制御モジュールを使用して操作可能状態または操作不可状態を含む、前記記述子の現在の状態を、確定し、
前記記述子が現在操作不可状態にある場合、前記第1の処理命令をブロックまたはキャッシュする。
A7、請求項A1乃至A6の中のいずれか1項に記載の装置であって、前記第1の処理命令はデータアクセス命令を含み、前記オペランドはソースデータと目的データとを含み、
ここで、前記制御ユニットは、
前記ソースデータおよび前記目的データの中の少なくとも一つが記述子の識別子を含む場合、前記テンソル制御モジュールを使用して前記記述子の記述子記憶空間を確定し、
前記記述子記憶空間から前記記述子の内容を取得し、
前記記述子の内容に基づいて、前記テンソル制御モジュールを使用して前記ソースデータの第1のデータアドレス及び/又は前記目的データの第2のデータアドレスを確定し、
前記第1のデータアドレスからデータを読み取って前記第2のデータアドレスに書込む。
A8、請求項A1乃至A7の中のいずれか1項に記載の装置であって、前記第1の処理命令は、演算命令を含み、
ここで、前記制御ユニットは、さらに、
前記第1の処理命令が演算命令である場合、前記データアドレスおよび前記第1の処理命令を前記実行ユニットに送信し、
ここで、前記実行ユニットは、
受信された前記データアドレスに基づいて、前記第1の処理命令に対応する演算を実行する。
A9、請求項A1乃至A8の中のいずれか1項に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A10、請求項A9に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A11、請求項A10に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含み、
ここで、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A12、請求項A1乃至A11の中のいずれか1項に記載の装置であって、前記制御ユニットは、さらに、
受信された第1の処理命令に対して復号化処理を行って、復号化後の第1の処理命令を得ることをさらに含み、
ここで、復号化後の第1の処理命令は、オペレーションコードと一つまたは複数のオペランドとを含み、前記オペレーションコードが、前記第1の処理命令に対応する処理タイプを示すために使用される。
A13、請求項A1乃至A12の中のいずれか1項に記載の装置であって、前記記述子記憶空間は、前記制御ユニットの内部メモリ中の記憶空間であり、前記データ記憶空間は、前記制御ユニットの内部メモリまたは前記制御ユニットに接続された外部メモリ中の記憶空間である。
A14、人工知能チップであって、前記チップは、請求項A1乃至A13の中のいずれか1項に記載のデータ処理装置を備える。
A15、電子デバイスであって、前記電子デバイスは、請求項A14に記載の人工知能チップを備える。
A16、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A14に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A17、請求項A16に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加している。関連技術において、プロセッサは、一般的に、命令のパラメータを取得してデータアドレスを確定し、次に、データアドレスに基づいてデータの読み取りと使用を完成することによって、当該方式はプロセッサの処理効率を低下させた。
本発明の実施例によると、データ処理方法が提供される。図1cは、本発明の一実施例に係るデータ処理方法を示すフローチャートである。当該データ処理方法は、プロセッサに適用でき、当該プロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。本発明は、プロセッサのタイプに対して限定しない。図1cに示されたように、当該データ処理方法は、以下のステップを含む。
ステップS11cにおいて、既に復号化された処理命令が記述子管理命令である場合、前記処理命令中の、テンソルの形状を示すための記述子の管理パラメータを取得する。
ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。例を挙げると、以下のテンソルの場合、
当該テンソルの形状は、記述子によって(2、4)として記述されてもよく、すなわち、二つのパラメータによって当該テンソルが2次元テンソルであることを示し、且つ、当該テンソルの第1の次元(列)のサイズは2であり、第2の次元(行)のサイズは4である。本発明は、記述子がテンソル形状を示す方式に対して限定しないことを説明する必要がある。メモリにテンソルデータを記憶する場合、そのデータアドレス(または記憶領域)によってはテンソルデータの形状を確定できず、さらに複数のテンソルデータ間の相互関係などの関連情報も確定できないので、プロセッサのテンソルデータのアクセス効率が低くなる。この場合、記述子を導入してテンソルの形状を示すことができる。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を記述するために使用でき、記述子の内容は、テンソルデータの形状を示す形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)含んでもよく、テンソルデータのアドレスを表すアドレスパラメータ(例えば、データ基準点の基準アドレス)をさらに含んでもよい。本発明は、記述子の内容の具体的なパラメータに対して限定しない。
可能な一実現形態において、記述子管理命令に基づいて記述子の登録、変更、および、取り消しなどの管理を実現し、これら管理命令に対して該当するオペレーションコードを設定できる。例えば、記述子登録命令(TRCreat)に基づいて記述子を登録(作成)し、記述子変更命令に基づいて記述子の各パラメータ(形状、アドレスなど)を変更し、記述子取り消し命令(TRRelease)に基づいて記述子を取り消し(削除)できる。本発明は、記述子管理命令の種類およびオペレーションコードの具体的な設定に対して限定しない。
可能な一実現形態において、既に復号化された処理命令は、オペレーションコードと一つまたは複数のオペランドとを含んでもよく、オペレーションコードが、処理命令に対応する処理タイプを示すために使用され、オペランドが、処理待ちのデータを示すために使用される。既に復号化された処理命令に対して、そのオペレーションコードに基づいて処理命令の処理タイプを確定できる。既に復号化された処理命令が記述子管理命令である場合、処理命令中の記述子の管理パラメータを取得できる。ここで、管理パラメータは、記述子管理命令の操作パラメータを示すことができる。例えば、記述子登録命令の管理パラメータは、記述子の識別子、記述子が示すテンソルデータの内容などを含んでもよい。本発明は、管理パラメータの具体的な内容に対して限定しない。
ステップS12cにおいて、前記管理パラメータに基づいて、前記処理命令を実行する。
つまり、取得した管理パラメータに基づいて、処理命令を実行できる。例えば、処理命令が記述子登録命令である場合、記述子登録命令の管理パラメータを取得した後、管理パラメータに基づいて記述子登録命令を実行して、該当する記述子を作成できる。
本発明の実施例によると、既に復号化された処理命令が記述子管理命令である場合、命令中の管理パラメータを取得し、管理パラメータに基づいて、処理命令を実行できることによって、記述子管理命令に基づいて記述子を管理して、プロセッサの記述子に対する処理効率を向上させることができる。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用でき、Nは、ゼロ以上の整数であり、ここで、前記記述子の内容が、テンソルデータの形状を示す少なくとも一つの形状パラメータを含んでもよい。
可能な一実現形態において、記述子は、N次元のテンソルデータの形状を示すために使用できる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、テンソルデータは3次元データであり、Nの値は3(次元数に基づいて確定する)であってもよいし、記述子は当該テンソルデータの三つの次元方向上の形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設置でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向上のサイズなど)を含んでもよい。本発明は、記述子の内容に含まれる具体的な形状パラメータに対して限定しない。
本実施例において、記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状を表現でき、さらに、複数のテンソルデータ間の相互関係などの関連情報も確定できるので、テンソルデータに対するアクセス効率を向上させる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、制御ユニットの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)の中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、前記制御ユニットの内部メモリ(例えば、オンチップキャッシュ)、または、前記制御ユニットと接続された外部メモリ(オフチップメモリ)の中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタ中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタ中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子の識別子に対応する記憶領域のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに対して単独の記憶空間を区分けすることができ、各テンソルデータの記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、記述子の識別子および対応関係に基づいて、記述子が示すテンソルデータのデータアドレスを直接確定できる。
当業者は、実際の必要に従って記述子の識別子、内容、および、記述子が示すテンソルデータの記憶方式を設定でき、本発明はこれに対して限定しないことを理解すべきである。
実施例において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、別々に記憶することもでき、また、内部メモリ及び/又は外部メモリに記憶でき、記述子とテンソルデータの記憶が便利で柔軟にして、処理効率を向上させることができる。
可能な一実現形態において、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。
可能な一実現形態において、記述子の識別子に対応する記憶領域のデータアドレスが可変アドレスである場合、記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、記述子の内容が、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例を挙げると、テンソルデータは3次元データであり、記述子を使用して当該テンソルデータのアドレスを示すことができ、記述子の内容が、当該テンソルデータのアドレスを表す一つのアドレスパラメータ(例えば、テンソルデータの開始アドレス)を含んでもよいし、当該テンソルデータのアドレスの複数のアドレスパラメータ(例えば、テンソルデータの開始アドレス+アドレスオフセット量、または、テンソルデータの各次元に基づくアドレスパラメータである)を含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
本実施例において、記述子を使用してテンソルデータのアドレスを示し、記述子が示すテンソルデータのアドレスに基づいて、複数のテンソルデータ間の相互関係を確定できて、プロセッサのアクセス効率を向上させることができる。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
本実施例において、テンソルデータのアドレスパラメータは、記述子のデータ基準点に対応する基準アドレスを含んでもよく、操作及び/又は使用の必要性に従って異なるデータ基準点を確定し、記述子の内容中で対応する基準アドレスを使用することによって、記述子の内容が操作及び/又は使用の必要性にさらに合致するようにして、データ処理効率を向上させることができる。
可能な一実現形態において、テンソルデータの形状パラメータは、前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングする。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
本実施例において、テンソルデータの形状パラメータは、サイズ、オフセット量、位置、マッピング関係の中の少なくとも一つを含んでもよく、操作及び/又は使用の必要性に従って記述子の内容中で異なる形状パラメータを使用することによって、記述子の内容が操作及び/又は使用の必要性にさらに合致するようにして、データ処理効率を向上させることができる。
可能な一実現形態において、前記記述子管理命令は、記述子登録命令を含み、前記管理パラメータは、記述子の識別子、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
ステップS12cにおいて、前記処理命令が記述子登録命令である場合、前記記述子の識別子に基づいて、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つ記述子を登録することを含んでもよい。
可能な一実現形態において、記述子登録命令は、記述子を登録するために使用でき、記述子登録命令の管理パラメータは、記述子の識別子(ID)、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。例えば、記述子登録命令の管理パラメータは、記述子識別子TR0、記述子が示すテンソルデータの形状(次元数、各次元のサイズ、オフセット量、開始データアドレスなど)である。本発明は、管理パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、記述子の識別子に基づいて、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つ記述子を登録できる。
例を挙げると、記述子登録命令の管理パラメータが記述子の識別子TR0を含む場合、TR0に基づいて、記述登録命令を実行して、記述子TR0を登録し、記述子TR0をTR0に対応する記述子記憶空間(例えば、レジスタ)に記憶できる。
可能な一実現形態において、記述子登録命令の管理パラメータが記述子が示すテンソルデータの形状を含む場合、記述子が示すテンソルデータの形状に基づいて、当該記述子の内容を確定し、且つ、当該記述子の内容を記述子記憶空間に記憶して、記述子の登録を完成できる。記述子登録命令の管理パラメータが記述子の識別子をさらに含む場合、記述子の内容を確定した後、記述子の内容を記述子の識別子に対応する記述子記憶空間に記憶して、記述子の登録を完成できる。記述子の識別子が対応する記述子記憶空間を有さないと、当該記述子の内容を記述子記憶空間に記憶し、当該記述子の識別子と記述子記憶空間との対応関係を構築して、記述子の登録を完成できる。
可能な一実現形態において、記述子登録命令の管理パラメータが記述子が示すテンソルデータの内容を含む場合、記述子が示すテンソルデータの内容に基づいて、当該記述子の内容を確定し、テンソルデータの内容と記述子の内容との対応関係を構築し、且つ、当該記述子の内容を記述子記憶空間に記憶して、当該記述子の登録を完成できる。管理パラメータが記述子の識別子をさらに含む場合、記述子の内容を確定した後、記述子の内容を記述子の識別子に対応する記述子記憶空間に記憶して、記述子の登録を完成できる。記述子の識別子が対応する固定記述子記憶空間を有さないと、当該記述子の内容を記述子記憶空間に記憶し、当該記述子の識別子と記述子記憶空間との対応関係を構築し、記述子の登録を完成できる。
可能な一実現形態において、さらに、記述子が示すテンソルデータの形状および記述子が示すテンソルデータの内容に基づいて記述子を登録するか、または、記述子の識別子に基づいて、記述子が示すテンソルデータの形状および記述子が示すテンソルデータの内容に基づいて記述子を登録できる。本発明は、記述子登録命令中の管理パラメータの組み合わせ方式および具体的な値に対して限定しない。
可能な一実現形態において、記述子登録命令は、複数の記述子の管理パラメータを含むことができ、例えば、命令が記述子の識別子TR0、TR1、および、TR2を含むと、管理パラメータ(記述子の識別子、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つ)に基づいて記述子TR0、TR1、および、TR2をそれぞれ登録できる。各々のTRの登録過程は、上記の登録過程と同一または類似である。このように、一つの命令に基づいて複数の記述子を一括登録でき、記述子の登録効率をさらに向上させることができる。
本実施例において、記述子の識別子に基づいて、記述子が示すテンソルデータの形状および記述子が示すテンソルデータの内容の中の少なくとも一つの記述子を登録できて、記述子の登録が様々な操作及び/又は使用の必要性を満たすようにすることによって、記述子の処理効率を向上させることができる。
可能な一実現形態において、前記記述子の識別子に基づいて、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つの記述子を登録することは、前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定することと、前記記述子の識別子、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つに基づいて、前記記述子の内容を確定し、前記記述子と前記第2の記憶領域との間の対応関係を構築することと、前記記述子の内容を前記第1の記憶領域に記憶することと、をさらに含む。
可能な一実現形態において、記述子を登録する場合、まず、記述子の内容の記述子記憶空間における第1の記憶領域、および、記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定できる。
例を挙げると、記憶領域の中の少なくとも一つを既に予め設定したとすると、第1の記憶領域及び/又は第2の記憶領域を直接確定できる。例えば、記述子の内容とテンソルデータの内容とを同一の記憶空間に記憶すると予め設定したとすると、記述子の識別子TR0に対応する記述子の内容の記憶アドレスがADDR32~ADDR63であり、テンソルデータの内容の記憶アドレスがADDR64~ADDR1023であると、この二つのアドレスは第1の記憶領域および第2の記憶領域であると直接確定できる。
可能な一実現形態において、記憶領域を予め設定しないと、記述子内容に対して記述子記憶空間中で第1の記憶領域を割り当て、テンソルデータ内容に対してデータ記憶空間中で第2の記憶領域を割り当てることができる。ここで、制御ユニットまたはテンソル制御モジュールによって記憶領域を割り当てることができ、本発明はこれに対して限定しない。
可能な一実現形態において、第1の記憶領域と第2の記憶領域とを確定した後、前記記述子の識別子、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つに基づいて、前記記述子の内容を確定し、前記記述子と前記第2の記憶領域との間の対応関係を構築し、その後、記述子の内容を第1の記憶領域に記憶して、記述子の登録過程を完成できる。
例えば、図2に示されたテンソルデータ23について、登録パラメータは、データ記憶空間21の開始アドレスPA_start(基準アドレス)、X軸方向におけるオフセット量25(offset_xで表す)、Y軸方向におけるオフセット量24(offset_yで表す)、X軸方向におけるサイズ(size_xで表す)、および、Y軸方向におけるサイズ(size_yで表す)を含んでもよい。これらのパラメータに基づいて、記述子の内容を式(1)で表すことができ、それを第1の記憶領域中に記憶することによって、記述子の登録過程を完成できる。
このような方式によって、記述子登録命令に基づいて記述子を自動的に作成して、記述子が示すテンソルとデータアドレスとの間の対応を実現することによって、データ処理の際に記述子内容に基づいてデータアドレスを取得できて、プロセッサのデータアクセス効率を向上させる。
可能な一実現形態において、前記記述子が示すテンソルデータの内容は、即時値、および、レジスタ中のデータの中の少なくとも一つを含む。
可能な一実現形態において、記述子が示すテンソルデータの内容は、即時値を含んでもよい。ここで、即時値は、データ処理過程で変更が発生されないテンソルデータであってもよい。記述子と即時値との対応関係を構築した後、データ処理過程で、即時値の代わりに記述子を使用できる。記述子が示すテンソルデータの内容は、レジスタ中のデータをさらに含んでもよく、記述子とレジスタ中のデータとの対応関係を構築した後、レジスタの番号を記述子の識別子としてもよい。
本実施例において、記述子に基づいて即時値とレジスタ中のデータとを示すことによって、即時値とレジスタ中のデータとを使用する複雑度低下させて、データ処理の効率を向上させることができる。
可能な一実現形態において、前記記述子管理命令は、第1の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、ここで、ステップS12cは、前記処理命令が第1の記述子取り消し命令である場合、前記記述子の識別子に基づいて前記識別子に対応する記述子を取り消しすることを含む。
ここで、第1の記述子取り消し命令は、記述子を取り消し(削除)するために使用できて、当該第1の記述子取り消し命令の管理パラメータは、記述子の識別子を含むことができ、ここで、記述子の識別子が、取り消し待ちの記述子を示すために使用される。
可能な一実現形態において、第1の記述子取り消し命令の管理パラメータは、少なくとも一つの記述子の識別子を含んでもよく、つまり、第1の記述子取り消し命令は、一つの記述子を取り消しすることもできし、複数の記述子を同時に取り消しすることもできる。
可能な一実現形態において、第1の記述子取り消し命令は、一部の記述子の識別子を含んでもよく、すなわち、当前記述子中の一部の記述子を取り消しすることもでき、すべての記述子の識別子を含んでもよく、すなわち、現在のすべての記述子を取り消しすることもできる。
可能な一実現形態において、前記処理命令が第1の記述子取り消し命令である場合、記述子の識別子に基づいて当該識別子に対応する記述子を取り消しすることができる。例えば、第1の記述子取り消し命令の管理パラメータがTR2およびTR3である場合、第1の記述子取り消し命令は、TR2およびTR3に基づいて、TR2およびTR3に対応する記述子を取り消しすることもできる。
本実施例において、記述子の識別子に基づいて記述子を取り消しすることができ、さらに、使用の必要性に従って一部またはすべての記述子、および、一つまたは複数の記述子を同時に取り消しこともできて、記述子の取り消し方式が様々な処理要件を満たすようにして、記述子の取り消し効率を向上させることができる。
可能な一実現形態において、前記記述子の識別子に基づいて前記識別子に対応する記述子を取り消しすることは、前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放することと、をさらに含む。
つまり、記述子の識別子に基づいて当該識別子に対応する記述子を取り消しする場合、記述子によって占用された記憶領域を同時に解放でき、すなわち、記述子の記述子記憶空間における記憶領域および記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放できる。このような方式によって、記述子の使用が終了した後に記述子によって占用された空間を解放して、限られた記憶リソースを繰り返して利用できて、リソースの利用効率を向上させた。
可能な一実現形態において、前記記述子管理命令は、第2の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、ここで、ステップS12cは、前記処理命令が第2の記述子取り消し命令である場合、前記記述子の識別子に基づいて、記述子記憶空間に記憶した前記記述子の内容を指定記憶空間に記憶することと、前記識別子に対応する記述子を取り消しすることを含んでもよい。
ここで、第2の記述子取り消し命令は、記述子を取り消し(削除)するために使用され、当該第2の記述子取り消し命令の管理パラメータは、記述子の識別子を含んでもよく、ここで、記述子の識別子が、取り消し待ちの記述子を示すために使用される。
可能な一実現形態において、処理命令が第2の記述子取り消し命令である場合、記述子の識別子に基づいて、まず、記述子記憶空間に記憶した記述子の内容を指定記憶空間に記憶し、その後、当該記述子の識別子に対応する記述子を取り消しすることができる。つまり、第2の記述子取り消し命令は、取り消し待ちの記述子の内容を再度保存した後に、取り消し操作を実行できる。まず記述子の内容を保存してから記述子に対して取り消しを実行する方式、後続に使用する必要がある記述子の内容を保存する同時に、当前記述子によって占用されたリソース(例えば、記述子の識別子、記憶空間などリソース)も解放して、リソース使用効率を向上させることができる。
可能な一実現形態において、前記記述子管理命令は、記述子変更命令を含み、前記管理パラメータは、前記記述子の識別子、変更待ちの記述子の内容、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、ここで、ステップS12cは、前記処理命令が記述子変更命令である場合、前記記述子の管理パラメータに基づいて、前記記述子の更新待ち内容を確定することと、更新待ち内容に基づいて、前記記述子の識別子、記述子記憶空間における前記記述子の内容、および、データ記憶空間におけるテンソルデータの内容の中の少なくとも一つを更新することを含んでもよい。
例を挙げると、記述子変更命令は、例えば、記述子の識別子、テンソル形状などの、記述子の様々なパラメータを変更するために使用できる。記述子変更命令の管理パラメータは、記述子の識別子、変更待ちの記述子の内容、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含んでもよい。本発明は、記述子変更命令の管理パラメータの具体的な内容に対して限定しない。
可能な一実現形態において、処理命令が記述子変更命令である場合、記述子の管理パラメータに基づいて、記述子の更新待ち内容を確定でき、例えば、テンソルの次元を3次元から2次元へ変更し、テンソルの一つまたは複数の次元方向におけるサイズを変更できる。
可能な一実現形態において、更新待ち内容を確定した後、テンソルデータを変更して更新後の記述子が変更後のテンソルデータを示すように、記述子記憶空間における記述子の識別子、記述子記憶空間における前記記述子の内容、および、データ記憶空間におけるテンソルデータの内容の中の少なくとも一つを更新できる。本発明は、更新待ち内容の範囲および具体的な更新方式に対して限定しない。
このような方式によって、記述子が示すテンソルデータに変更が発生された場合、記述子を直接変更することによって、記述子とテンソルデータとの間の対応が維持できて、リソースの利用効率が向上される。
上記の実施例を例としてデータ処理方法を上記のようにに説明したが、当業者は本発明がこれに限定されないことを理解できることを説明する必要がある。実際に、ユーザは、本発明の技術案に合致する限り、完全に、個人の好み及び/又は実際の適用シナリオに従って各ステップを柔軟に設定できる。
図3aは、本発明の実施例に係るデータ処理方法を示すブロック図である。図3aに示されたように、前記データ処理装置は、
既に復号化された処理命令が記述子管理命令である場合、前記処理命令中の、テンソルの形状を示すための記述子の管理パラメータを取得するためのパラメータ取得モジュール31aと、
前記管理パラメータに基づいて、前記処理命令を実行するための命令実行モジュール32aと、を備える。
可能な一実現形態において、前記記述子管理命令は、記述子登録命令を含み、前記管理パラメータは、記述子の識別子、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
前記命令実行モジュール32aは、
前記処理命令が記述子登録命令である場合、前記記述子の識別子に基づいて、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つの記述子を登録するための登録サブモジュールを備える。
可能な一実現形態において、前記登録サブモジュールは、さらに、
前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定し、
前記記述子の識別子、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つに基づいて、前記記述子の内容を確定し、前記記述子と前記第2の記憶領域との間の対応関係を構築し、
前記記述子の内容を前記第1の記憶領域に記憶する。
可能な一実現形態において、前記記述子が示すテンソルデータの内容は、即時値、および、レジスタ中のデータの中の少なくとも一つを含む。
可能な一実現形態において、前記記述子管理命令は、第1の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、
ここで、前記命令実行モジュール32aは、
前記処理命令が第1の記述子取り消し命令である場合、前記記述子の識別子に基づいて前記識別子に対応する記述子を取り消しするための第1の取り消しサブモジュールを備える。
可能な一実現形態において、第1の取り消しサブモジュールは、さらに、
前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放する。
可能な一実現形態において、前記記述子管理命令は、第2の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、
ここで、前記命令実行モジュール32aは、
前記処理命令が第2の記述子取り消し命令である場合、前記記述子の識別子に基づいて、記述子記憶空間に記憶した前記記述子の内容を指定記憶空間に記憶するための記憶空間確定サブモジュールと、
前記識別子に対応する記述子を取り消しするための第2の取り消しサブモジュールと、を備える。
可能な一実現形態において、前記記述子管理命令は、記述子変更命令を含み、前記管理パラメータは、前記記述子の識別子、変更待ちの記述子の内容、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
ここで、前記命令実行モジュール32aは、
前記処理命令が記述子変更命令である場合、前記記述子の管理パラメータに基づいて、前記記述子の更新待ち内容を確定するための更新内容確定サブモジュールと、
更新待ち内容に基づいて、前記記述子の識別子、記述子記憶空間における前記記述子の内容、および、データ記憶空間におけるテンソルデータの内容の中の少なくとも一つを更新するための変更サブモジュールと、を備える。
可能な一実現形態において、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
可能な一実現形態において、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。
可能な一実現形態において、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
可能な一実現形態において、人工知能チップをさらに開示し、当該人工知能チップは上記のデータ処理装置を含む。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
可能な一実現形態において、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
A1、データ処理方法であって、前記方法は、
既に復号化された処理命令が記述子管理命令である場合、前記処理命令中の、テンソルの形状を示すための記述子の管理パラメータを取得することと、
前記管理パラメータに基づいて、前記処理命令を実行することと、を含む。
A2、請求項A1に記載の方法であって、前記記述子管理命令は、記述子登録命令を含み、前記管理パラメータは、記述子の識別子、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
前記管理パラメータに基づいて、前記処理命令を実行することは、
前記処理命令が記述子登録命令である場合、前記記述子の識別子に基づいて、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つの記述子を登録することを含む。
A3、請求項A2に記載の方法であって、前記記述子の識別子に基づいて、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つの記述子を登録することは、
前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定することと、
前記記述子の識別子、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つに基づいて、前記記述子の内容を確定し、前記記述子と前記第2の記憶領域との間の対応関係を構築することと、
前記記述子の内容を前記第1の記憶領域に記憶することと、をさらに含む。
A4、請求項A2またはA3に記載の方法であって、前記記述子が示すテンソルデータの内容は、即時値、および、レジスタ中のデータの中の少なくとも一つを含む。
A5、請求項A1に記載の方法であって、前記記述子管理命令は、第1の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、
ここで、前記管理パラメータに基づいて、前記処理命令を実行することは、
前記処理命令が第1の記述子取り消し命令である場合、前記記述子の識別子に基づいて前記識別子に対応する記述子を取り消しすることを含む。
A6、請求項A5に記載の方法であって、前記記述子の識別子に基づいて前記識別子に対応する記述子を取り消しすることは、
前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放することを含む。
A7、請求項A1に記載の方法であって、前記記述子管理命令は、第2の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、
ここで、前記管理パラメータに基づいて、前記処理命令を実行することは、
前記処理命令が第2の記述子取り消し命令である場合、前記記述子の識別子に基づいて、記述子記憶空間に記憶した前記記述子の内容を指定記憶空間に記憶することと、
前記識別子に対応する記述子を取り消しすることと、を含む。
A8、請求項A1に記載の方法であって、前記記述子管理命令は、記述子変更命令を含み、前記管理パラメータは、前記記述子の識別子、変更待ちの記述子の内容、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
ここで、前記管理パラメータに基づいて、前記処理命令を実行することは、
前記処理命令が記述子変更命令である場合、前記記述子の管理パラメータに基づいて、前記記述子の更新待ち内容を確定することと、
更新待ち内容に基づいて、前記記述子の識別子、記述子記憶空間における前記記述子の内容、および、データ記憶空間におけるテンソルデータの内容の中の少なくとも一つを更新することを含む。
A9、請求項A1乃至A8の中のいずれか1項に記載の方法であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A10、請求項A9に記載の方法であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A11、請求項A10に記載の方法であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。
A12、請求項A11に記載の方法であって、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A13、データ処理装置であって、前記装置は、
既に復号化された処理命令が記述子管理命令である場合、前記処理命令中の、テンソルの形状を示すための記述子の管理パラメータを取得するパラメータ取得モジュールと、
前記管理パラメータに基づいて、前記処理命令を実行するための命令実行モジュールと、を備える。
A14、請求項A13に記載の装置であって、前記記述子管理命令は、記述子登録命令を含み、前記管理パラメータは、記述子の識別子、記述子が示すテンソルデータの形状、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
前記命令実行モジュールは、
前記処理命令が記述子登録命令である場合、前記記述子の識別子に基づいて、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つ記述子を登録するための登録サブモジュールを備える。
A15、請求項A14に記載の装置であって、前記登録サブモジュールは、さらに、
前記記述子の内容の記述子記憶空間における第1の記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における第2の記憶領域を確定し、
前記記述子の識別子、前記記述子が示すテンソルデータの形状、および、前記記述子が示すテンソルデータの内容の中の少なくとも一つに基づいて、前記記述子の内容を確定し、前記記述子と前記第2の記憶領域との間の対応関係を構築し、
前記記述子の内容を前記第1の記憶領域に記憶する。
A16、請求項A14またはA15に記載の装置であって、前記記述子が示すテンソルデータの内容は、即時値、および、レジスタ中のデータの中の少なくとも一つを含む。
A17、請求項A13に記載の装置であって、前記記述子管理命令は、第1の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、
ここで、前記命令実行モジュールは、
前記処理命令が第1の記述子取り消し命令である場合、前記記述子の識別子に基づいて前記識別子に対応する記述子を取り消しするための第1の取り消しサブモジュールを備える。
A18、請求項A17に記載の装置であって、第1の取り消しサブモジュールは、さらに、
前記記述子の記述子記憶空間における記憶領域、および、前記記述子が示すテンソルデータの内容のデータ記憶空間における記憶領域をそれぞれ解放することと、をさらに含む。
A19、請求項A13に記載の装置であって、前記記述子管理命令は、第2の記述子取り消し命令を含み、前記管理パラメータは、記述子の識別子を含み、
ここで、前記命令実行モジュールは、
前記処理命令が第2の記述子取り消し命令である場合、前記記述子の識別子に基づいて、記述子記憶空間に記憶した前記記述子の内容を指定記憶空間に記憶するための記憶空間確定サブモジュールと、
前記識別子に対応する記述子を取り消しするための第2の取り消しサブモジュールと、を備える。
A20、請求項A13に記載の装置であって、前記記述子管理命令は、記述子変更命令を含み、前記管理パラメータは、前記記述子の識別子、変更待ちの記述子の内容、および、記述子が示すテンソルデータの内容の中の少なくとも一つを含み、
ここで、前記命令実行モジュールは、
前記処理命令が記述子変更命令である場合、前記記述子の管理パラメータに基づいて、前記記述子の更新待ち内容を確定するための更新内容確定サブモジュールと、
更新待ち内容に基づいて、前記記述子の識別子、記述子記憶空間における前記記述子の内容、および、データ記憶空間におけるテンソルデータの内容の中の少なくとも一つを更新するための変更サブモジュールと、を備える。
A21、請求項A13乃至A20の中のいずれか1項に記載の装置であって、前記記述子は、N次元のテンソルデータの形状を示すために使用され、Nは、ゼロ以上の整数であり、
ここで、前記記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータを含む。
A22、請求項A21に記載の装置であって、前記記述子は、さらに、N次元のテンソルデータのアドレスを示すために使用され、ここで、前記記述子の内容は、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含む。
A23、請求項A22に記載の装置であって、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。
A24、請求項A23に記載の方法であって、前記テンソルデータの形状パラメータは、
前記データ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記テンソルデータの記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。
A25、人工知能チップであって、前記チップは、請求項A13乃至A24の中のいずれか1項に記載のデータ処理装置を備えることを特徴とする。
A26、電子デバイスであって、前記電子デバイスは、請求項25に記載の人工知能チップを備えることを特徴とする。
A27ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A25に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用されることを特徴とする。
A28、請求項A27に記載のボードカードであって、
前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースであることを特徴とする。
人工知能技術の継続的な発展に伴って、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理などの分野で十分に適用されている。ただし、人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期方法が提供される。
本発明の実施例に係るデータ同期方法は、複数のプロセッサ(マルチコア)を備える処理システム(例えば、人工知能チップ)の任意の一つのプロセッサに適用される。当該プロセッサは、汎用プロセッサ、例えば、CPU(Central Processing Unit、中央処理装置)であってもよいし、人工知能演算を実行する人工知能プロセッサ(IPU)であってもよい。人工知能演算は、機械学習演算、脳に類似な演算などを含んでもよい。ここで、機械学習演算は、ニューラルネットワーク演算、K-Means演算、サポートベクトル机演算などを含む。当該人工知能プロセッサは、例えば、GPU(Graphics Processing Unit、図形処理ユニット)、NPU(Neural-NetworK Processing Unit、ニューラルネットワーク処理ユニット)、DSP(Digital Signal Process、デジタル信号処理ユニット)、フィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)チップの中の一つまたは組み合わせを含んでもよい。本発明は、プロセッサの具体的なタイプに対して限定しない。なお、処理システム中の複数のプロセッサのタイプは、同一であるかまたは異なってもよく、本発明はこれに対して限定しない。
可能な一実現形態において、本発明に言及されるプロセッサは、複数の処理ユニットを備えてもよく、各々の処理ユニットは、割り当てられた、例えば畳み込み演算タスク、プーリングタスク、または、全部接続タスクなどの、様々なタスクを独立的に運行できる。本発明は、処理ユニットおよび処理ユニットによって運行されるタスクに対して限定しない。
図1d1は、本発明の実施例に係るデータ同期方法の処理システムを示す模式図である。図1d1に示されたように、処理システム100dは、複数のプロセッサ101およびメモリ102を備え、複数のプロセッサ101は、命令シーケンスを実行するために使用され、メモリ102は、データを記憶するために使用され、ランダムアクセスメモリ(RAM、Random Access Memory)およびレジスタファイルを含んでもよい。処理システム100d中の複数のプロセッサ101は、一部の記憶空間を共有してもよいし、例えば、一部のRAM記憶空間およびレジスタファイルを共有してもよいし、各々の記憶空間を同時に有してもよい。
図1d2は、本発明の一実施例に係るデータ同期方法を示すフローチャートである。図1d2に示されたように、当該方法は、第1のプロセッサ(処理システム中の任意の一つのプロセッサ)に適用でき、当該方法は、以下のステップを含む。
ステップS11dにおいて:同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータの同期情報を確定し、
ステップS12dにおいて、前記テンソルデータの同期情報に基づいて、同期命令を生成し、
ステップS13dにおいて、前記第2のプロセッサが前記同期命令に基づいて前記同期待ちのテンソルデータを取得するための前記同期命令を、前記第2のプロセッサに送信する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよく、ここで、テンソルは、様々な形式のデータ構成方式を含んでもよい。テンソルは、異なる次元のものであってもよく、例えば、スカラーは0次元のテンソル、ベクトルは1次元のテンソル、行列は2次元または2次元以上のテンソルと見なしてもよい。テンソルの形状は、テンソルの次元やテンソルの各次元のサイズなどの情報を含む。
この場合、記述子(テンソル記述子)を設定してテンソルデータ(N次元のテンソルデータ)の形状を示すことができる。ここで、Nの値は、テンソルデータの次元数(回数)に基づいて確定してもよいし、テンソルデータの使用の必要性に基づいて設定してもよい。例えば、Nの値が3である場合、テンソルデータは3次元のテンソルデータであり、記述子は、当該3次元のテンソルデータの、三つの次元方向における形状(例えば、オフセット量、サイズなど)を示すために使用できる。当業者は、実際の必要によってNの値を設定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子は、識別子や内容などを含んでもよい。記述子の識別子は、記述子を区別するために使用でき、例えば、記述子の識別子は番号である。記述子の内容は、テンソルデータの形状を示す少なくとも一つの形状パラメータ(例えば、テンソルの各次元方向におけるサイズなど)を含んでもよく、さらに、テンソルデータのアドレスを表す少なくとも一つのアドレスパラメータ(例えば、データ基準点の基準アドレス)を含んでもよい。本発明は、記述子の内容に含まれる具体的なパラメータに対して限定しない。
記述子を使用してテンソルデータを示す方式によって、テンソルデータの形状を表現でき、さらに、複数のテンソルデータ間の相互関係などの関連情報も確定できるので、テンソルデータに対するアクセス効率を向上させることで、データ同期の際の複雑度を低下させる。
可能な一実現形態において、データ処理過程で、複数のプロセッサ(例えば、人工知能チップの複数のコア)間のデータ同期を実行する必要がある可能があり、例えば、プロセッサA1の演算結果をもう一つの演算の入力データとしてプロセッサA2に同期させる。この場合、記述子に基づくデータ同期メカニズムを使用してデータ同期を実現できる。
可能な一実現形態において、第1のプロセッサはデータ同期の送信側であり、第2のプロセッサはデータ同期の受信側である。同期待ちのテンソルデータが存在する場合、第1のプロセッサは、ステップS11dにおいて、当該テンソルデータの記述子に基づいて、テンソルデータの同期情報(例えば、テンソルデータの識別子、形状、ソース、記憶アドレスなどの情報)を確定し、ステップS12dにおいて、同期情報に基づいて同期命令を生成し、ステップS13dにおいて、同期待ちの第2のプロセッサに当該同期命令を送信する。ここで、第2のプロセッサは、汎用プロセッサ(例えば、中央処理装置CPU、グラフィック処理ユニットGPU)と、専用プロセッサ(例えば、人工知能プロセッサ、科学計算プロセッサ、または、デジタル信号プロセッサなど)を含んでもよい。第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は第2のプロセッサに対するタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、第2のプロセッサに対するデータ同期を能動的に開始させることができ、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、当該演算結果を使用する必要がある第2のプロセッサに対するデータ同期を能動的に開始させる。もう一つの例において、第1のプロセッサは、第2のプロセッサの同期要求に応答して、第2のプロセッサに対するデータ同期を開始させてもよく、例えば、第2のプロセッサの同期要求命令を受信した場合、第2のプロセッサに対するデータ同期を開始させてもよい。本発明は、データ同期の開始タイミングに対して限定しない。
可能な一実現形態において、第1のプロセッサは、同期待ちのテンソルデータが存在すると確定した場合、当該テンソルデータの記述子を取得できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、当該テンソルデータの記述子に基づいて、当該テンソルデータの同期情報を確定できる。当該同期情報は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。当該テンソルデータの同期情報に基づいて、同期命令を生成できる。第2のプロセッサが当該テンソルデータの識別子に基づいてテンソルデータの同期を実現するように、第2のプロセッサ中に当該テンソルデータの情報(例えば、当該同期待ちのテンソルデータを示す記述子が既に登録されている)を既に有すると、同期命令は、例えば、テンソルデータの識別子のような、一部の同期情報のみを含んでもよい。第2のプロセッサが対応する情報に基づいてテンソルデータの同期を実現するように、第2のプロセッサ中に当該テンソルデータの情報を有さないと、同期命令は、例えば、テンソルデータの識別子および記憶アドレスなどの、さらに多くの同期情報を含んでもよい。本発明は、同期命令が含む具体的な内容に対して限定しない。
可能な一実現形態において、同期命令を生成した後、第2のプロセッサが前記同期命令に基づいて前記同期待ちのテンソルデータを取得するように、第2のプロセッサに当該同期命令を送信することができる。同期命令がテンソルデータの識別子を含むと、第2のプロセッサは、当該識別子に基づいて同期待ちのテンソルデータを確定し、且つ、当該同期待ちのテンソルデータを示す記述子を登録するかまたは取得し、さらに記述子の内容に基づいて記述子が示すテンソルデータを取得することによって、テンソルデータの同期を実現できる。同期命令がより多くの同期情報(識別子および記憶アドレスなど)を含むと、第2のプロセッサは、命令中の同期情報に基づいて当該同期待ちのテンソルデータを示す記述子を登録し、且つ、記述子の内容に基づいて記述子が示すテンソルデータを直接取得することによって、テンソルデータの同期を実現できる。
本発明の実施例に係るデータ同期方法によると、第2のプロセッサが同期命令に基づいて同期待ちのテンソルデータを取得するように、テンソルデータの形状を示す記述子を設定し、記述子に基づいてテンソルデータの同期情報を確定し、同期情報に基づいて同期命令を生成して同期命令を第2のプロセッサに送信することによって、同期命令の構成を変更せずに、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、同期情報は、同期待ちのテンソルデータの記憶アドレスを含んでもよい。前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、ステップS12dは、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記同期待ちのテンソルデータの記憶アドレスに基づいて、同期命令を生成することを含む。
例を挙げると、複数のプロセッサ(複数のコア)は、例えば、第1のプロセッサと第2のプロセッサがいずれもアクセスできるオフチップメモリなどの、共有記憶空間を有することができる。当該共有記憶空間は、複数のコア(複数のプロセッサ)がいずれもデータをアクセスできるの記憶空間であってもよいし、一部のコア(一部のプロセッサ)がデータをアクセスできる記憶空間であってもよい。コア間の共有記憶空間を予め設定でき、本発明は、共有記憶空間の設定方式に対して限定しない。
可能な一実現形態において、同期待ちのテンソルデータの記述子の内容に基づいて、当該テンソルデータの記憶アドレスを確定できる。同期待ちのテンソルデータの記憶アドレスが共有記憶空間に位置すると、第2のプロセッサも共有記憶空間からデータをアクセスできるので、第2のプロセッサは、テンソルデータの記憶アドレスに基づいてテンソルデータを直接読み取って同期を実現できる。この場合、同期命令は、同期待ちのテンソルデータの記憶アドレスを含んでもよく、すなわち、同期待ちのテンソルデータの記憶アドレスに基づいて、同期命令を生成できる。第2のプロセッサは、同期命令を受信した後、命令を解析してテンソルデータの記憶アドレスを得、テンソルデータの記憶アドレスに基づいて、第2のプロセッサは同期待ちのテンソルデータの記述子を登録(作成)することで、記述子の内容が当該テンソルデータのデータアドレスに対応されるようにし、且つ、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、不要なデータ伝送を回避し、テンソルデータアクセス回数を削減できて、同期の処理効率を向上させた。
可能な一実現形態において、同期情報は、同期待ちのテンソルデータの記憶アドレスを含む。ステップS12dは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶することと、前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、同期命令を生成することと、を含んでもよい。
例を挙げると、第1のプロセッサは、非共有記憶空間を有してもよく、第1のプロセッサは当該非共有記憶空間中のデータをアクセスでき、第2のプロセッサは、第1のプロセッサの非共有記憶空間をアクセスできなく、当該非共有記憶空間中のデータをアクセスできない。同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にあると、第2のプロセッサは当該テンソルデータを直接取得できない。この場合、第2のプロセッサが当該テンソルデータをアクセスできるように、第1のプロセッサは、同期待ちのテンソルデータを共有記憶空間に転送記憶することができる。転送記憶を完成した後、第1のプロセッサに、当該同期待ちのテンソルデータを示す記述子が登録されていないか、または、非共有記憶空間中の当該テンソルデータを示す記述子が既に登録されており且つ当該記述子が変更不可である(例えば、操作されている)と、第1のプロセッサは前記同期待ちのテンソルデータの記述子を生成でき、すなわち、新たな記述子を登録することによって、共有記憶空間中の当該テンソルデータを示すことができる。
可能な一実現形態において、第1のプロセッサは、同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて同期命令を生成できる。第2のプロセッサは、同期命令を受信した後、命令を解析して同期待ちのテンソルデータの記憶アドレスを得、テンソルデータの記憶アドレスに基づいて、第2のプロセッサは同期待ちのテンソルデータの記述子を登録(作成)することで、記述子の内容が当該テンソルデータのデータアドレスに対応されるようにし、共有記憶空間から前記同期待ちのテンソルデータを取得することにより、同期過程全体を実現できる。
このような方式によって、第2のプロセッサが同期待ちのテンソルデータを取得できるように、非共有記憶空間中の同期待ちのテンソルデータを能動的に共有記憶空間に転送記憶することによって、同期の際のプロセッサ間のデータ伝送を削減して、同期の処理効率を向上させることができる。
可能な一実現形態において、前記方法は、第2のプロセッサからの同期要求命令に基づいて、前記同期待ちのテンソルデータの記述子を確定することをさらに含む。
例を挙げると、第1のプロセッサは、第2のプロセッサの同期要求に応答して、第2のプロセッサに対するデータ同期を開始させてもよい。ここで、第2のプロセッサからの同期要求命令は、同期待ちのテンソルデータの情報を含んでもよく、例えば、当該同期待ちのテンソルデータのデータ特徴を含んでもよい。ここで、テンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよく、本発明は、同期要求命令の具体的な内容に対して限定しない。同期要求命令中の情報に基づいて、第1のプロセッサは、同期待ちのテンソルデータの記述子を確定し、記述子に基づいてテンソルデータの同期情報を確定し、さらに同期命令を生成できる。
このような方式によって、同期命令を生成するように、第2のプロセッサの同期要求に従って同期待ちのテンソルデータの記述子を確定できることによって、不要なデータ同期を回避して、データ同期の効率を向上させた。
可能な一実現形態において、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、前記第2のプロセッサからの同期要求命令に基づいて、前記同期待ちのテンソルデータの記述子を確定するステップは、
前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることと、
同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、第1のプロセッサと第2のプロセッサとがいずれも同期待ちのテンソルデータの情報(データ特徴)を有し、且つ、情報が同一であるかまたは対応関係を有すると、同期要求命令は、例えば、テンソルデータの識別子のような、データ特徴を含むことができる。第1のプロセッサは、第2のプロセッサからの同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることができる。
可能な一実現形態において、同期待ちのテンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、当該データ特徴に基づいて、同期待ちのテンソルデータを検索して、当該同期待ちのテンソルデータの記述子を確定でき、例えば、対応する記述子を直接取得するかまたは新たに登録する。第2のプロセッサが当該テンソルデータの同期を実現するように、当該同期待ちのテンソルデータの記述子に基づいて、当該テンソルデータの同期情報を確定することによって、同期命令を生成して送信することができる。
このような方式によって、テンソルデータの同期を実現するように、要求命令中のデータ特徴に基づいて同期待ちのテンソルデータの記述子を確定できることによって、同期の際にテンソルデータ自身を伝送する必要がなく、伝送するデータ量および同期オーバーヘッドを軽減して、処理効率を向上させた。
図3b1は、本発明の実施例に係るデータ同期方法を示すフローチャートである。当該データ同期方法は、第2のプロセッサに適用できる。図3b1に示されたように、当該データ同期方法は、以下のステップを含む。
ステップS21bにおいて、第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得、
ステップS22bにおいて、前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定し、
ステップS23bにおいて、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得する。
例を挙げると、第1のプロセッサ(送信側)は、第2のプロセッサ(受信側)に対するデータ同期を能動的に開始させることができ、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、当該演算結果を使用する必要がある第2のプロセッサに対するデータ同期を能動的に開始させる。
可能な一実現形態において、第2のプロセッサは、第1のプロセッサからの同期命令を受信した場合、当該同期命令を解析して、同期待ちのテンソルデータの同期情報を(例えば、テンソルデータの識別子、形状、記憶アドレスなど)を得ることができる。
可能な一実現形態において、当該同期命令がテンソルデータの識別子のみを含むと、第2のプロセッサは、当該テンソルデータの識別子に対応するテンソルデータ及び/又はテンソルデータに対応する記述子を内部検索し、さらに記述子内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該同期命令がテンソルデータの形状および記憶アドレスを含むと、第2のプロセッサは、テンソルデータの形状および記憶アドレスに基づいて、当該同期待ちのテンソルデータを示す記述子を登録し、記述子の内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、同期命令中の同期待ちのテンソルデータの同期情報に基づいて、当該テンソルデータの記述子を確定し、さらに当該テンソルデータを取得して、テンソルデータの同期を実現できて、同期オーバーヘッドを軽減し、データ同期の複雑度を低下させて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、
ステップS22bは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定することを含み、
ステップS23bは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
例を挙げると、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にあると、第2のプロセッサは共有記憶空間からデータをアクセスできる。この場合、同期命令は、同期待ちのテンソルデータの記憶アドレスを含んでもよい。第2のプロセッサは、同期命令を受信した後、命令を解析して同期待ちのテンソルデータの記憶アドレスを得、当該テンソルデータの記憶アドレスに基づいて、当該テンソルデータに対応する記述子を作成または変更できる。当該記述子の内容に基づいて、第2のプロセッサは、共有記憶空間から同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
このような方式によって、不要なデータ伝送を回避し、テンソルデータアクセス回数を削減できて、同期の処理効率を向上させ、命令伝送および処理過程での命令互換性を実現できる。
図3b2は、本発明の実施例に係るデータ同期方法を示すフローチャートである。当該データ同期方法は、第2のプロセッサに適用できる。図3b2に示されたように、当該データ同期方法は、以下のステップを含む。
ステップS31bにおいて、同期待ちのテンソルデータが存在する場合、第1のプロセッサが前記同期要求命令に基づいて、同期待ちのテンソルデータの、同期待ちのテンソルデータの形状を示すための記述子を、確定するように、同期要求命令を生成し、
ステップS32bにおいて、前記同期要求命令を前記第1のプロセッサに送信する。
例を挙げると、第2のプロセッサに同期待ちのテンソルデータが存在する場合、当該同期待ちのテンソルデータを取得するように、第1のプロセッサに同期要求命令を能動的に送信できる。第2のプロセッサは、例えば、当該同期待ちのテンソルデータのデータ特徴のような、同期待ちのテンソルデータの情報に基づいて、同期要求命令を生成できる。本発明は、同期要求命令の具体的な内容に対して限定しない。同期要求命令中の情報に基づいて、第1のプロセッサは、同期待ちのテンソルデータの記述子を確定し、さらに同期命令を生成できる。
このような方式によって、同期する必要があるときに同期要求を能動的に開始させて、データ同期の効率を向上させることができる。
可能な一実現形態において、第1のプロセッサが同期待ちのテンソルデータを確定できるように、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含む。ここで、テンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記方法は、
第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得ることと、
前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することと、をさらに含む。
例を挙げると、第2のプロセッサは、第1のプロセッサからの同期命令を受信した場合、当該同期命令を解析して、同期待ちのテンソルデータの同期情報を(例えば、テンソルデータの識別子、形状、記憶アドレスなど)を得ることができる。
可能な一実現形態において、当該同期命令がテンソルデータの識別子のみを含むと、第2のプロセッサは、当該テンソルデータの識別子に対応するテンソルデータ及び/又はテンソルデータに対応する記述子を内部検索し、さらに記述子内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
可能な一実現形態において、当該同期命令がテンソルデータの形状および記憶アドレスなどを含むと、第2のプロセッサは、テンソルデータの形状および記憶アドレスに基づいて、当該同期待ちのテンソルデータを示す記述子を作成して、記述子の内容に基づいて同期待ちのテンソルデータを取得することによって、テンソルデータの同期を実現できる。
このような方式によって、データ同期の複雑度を低下させて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、
前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定するステップは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定することを含み、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するステップは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
例を挙げると、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にあると、第2のプロセッサは共有記憶空間からデータをアクセスできる。この場合、同期命令は、同期待ちのテンソルデータの記憶アドレスを含んでもよい。第2のプロセッサは、同期命令を受信した後、命令を解析して同期待ちのテンソルデータの記憶アドレスを得、当該テンソルデータの記憶アドレスに基づいて、当該テンソルデータに対応する記述子を作成または変更できる。当該記述子の内容に基づいて、第2のプロセッサは、共有記憶空間から同期待ちのテンソルデータを取得することによって、同期過程全体を実現できる。
このような方式によって、不要なデータ伝送を回避し、テンソルデータアクセス回数を削減できて、同期の処理効率を向上させ、命令伝送および処理過程での命令互換性を実現できる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサと接続された外部メモリ(オフチップメモリ)中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタ中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタ中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスはデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスは当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
説明する必要があるのは、前述の各方法の実施例について、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明が説明された動作の順序に限定されないし、なぜなら、本発明によるといくつかのステップを他の順序で実行するかまたは同時に実行できるからことを了解すべきである。次に、当業者は、明細書に説明された実施例は、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
さらに説明する必要があるのは、フローチャートでの各ステップは矢印に従って順に示したが、これらのステップは必ずとして矢印が示す順序に従って順に実行する必要がない。本明細書に明確な説明がない限り、これらのステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に従って実行してもよい。さらに、フローチャートでの少なくとも一部ステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
図3b3は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第1のプロセッサに適用され、図3b3に示されたように、当該データ同期装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータの同期情報を確定するための第1の情報確定モジュール51bと、
前記テンソルデータの同期情報に基づいて、同期命令を生成するための第1の命令生成モジュール52bと、
第2のプロセッサを指示して前記第2のプロセッサが前記同期命令に基づいて前記同期待ちのテンソルデータを取得するように、前記同期命令を、前記第2のプロセッサに送信するための第1の命令送信モジュール53bと、を備える。
可能な一実現形態において、前記同期情報は、同期待ちのテンソルデータの記憶アドレスを含む。前記第1の命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記第2のプロセッサを指示して前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、前記同期待ちのテンソルデータの記憶アドレスに基づいて、同期命令を生成するための第1の生成サブモジュールを備える。
可能な一実現形態において、前記同期情報は、同期待ちのテンソルデータの記憶アドレスを含み、前記第1の命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶するための転送記憶サブモジュールと、前記第2のプロセッサを指示して前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、同期命令を生成するための第2の生成サブモジュールと、を備える。
可能な一実現形態において、前記装置は、第2のプロセッサからの同期要求命令に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定モジュールをさらに備える。
可能な一実現形態において、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、前記第1の記述子確定モジュールは、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得るための命令解析サブモジュールと、同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定サブモジュールと、を備える。
図3b4は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3b4に示されたように、当該データ同期装置は、
第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得るための第2の情報確定モジュール61bと、
前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための第2の記述子確定モジュール62bと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第1のデータ取得モジュール63bと、を備える。
可能な一実現形態において、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、前記第2の記述子確定モジュールは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定するための第1の確定サブモジュールを備え、
前記第1のデータ取得モジュールは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第1のデータ取得サブモジュールを備える。
図3b5は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3b5に示されたように、当該データ同期装置は、
同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して、前記第1のプロセッサが前記同期要求命令に基づいて、同期待ちのテンソルデータの前記同期待ちのテンソルデータの形状を示すための記述子を、確定するように、同期要求命令を生成するための第2の命令生成モジュール71bと、
前記同期要求命令を前記第1のプロセッサに送信するための第2の命令送信モジュール72bと、を備える。
可能な一実現形態において、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含む。
可能な一実現形態において、前記装置は、第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得るための第3の情報確定モジュールと、前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第3の記述子確定モジュールと、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第2のデータ取得モジュールと、をさらに備える。
可能な一実現形態において、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、前記第3の記述子確定モジュールは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定するための第2の確定サブモジュールを備え、
前記第2のデータ取得モジュールは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第2のデータ取得サブモジュールと、を備える。
上記の装置の実施例は、ただ模式的なもののであり、本発明の装置はさらに他の方式によって実現されてもよいことを理解すべきである。例えば、上記の実施例中の前記ユニット/モジュールの区分けは、ただ論理機能に基づく区分けだけであり、実際に実現するときに他の区分け方式があってもよい。例えば、複数のユニット、モジュール、または、コンポーネントを、組み合わせたり、もう一つのシステムに統合したり、いくつかの特徴を省略するか実行しないことができる。
また、特に説明しない限り、本発明の各実施例中の各機能ユニット/モジュールを一つのユニット/モジュールに統合してもよいし、各ユニット/モジュールが単独に物理的に存在してもよいし、二つまたは二つの以上ユニット/モジュールを一つに統合してもよい。上記の統合のユニット/モジュールを、ハードウェアの形式で実現してもよいし、ソフトウェアプログラムモジュールの形式で実現してもよい。
前記統合されたユニット/モジュールをハードウェアの形式で実現する場合、当該ハードウェアは、デジタル回路、アナログ回路などであってもよい。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えば、CPU、GPU、FPGA、DSP、ASICなどの、いかなる適当なハードウェアプロセッサであってもよい。特に説明しない限り、前記記憶ユニットは、例えば、抵抗性ランダムアクセスメモリ(RRAM、Resistive RandoM Access MeMory)、動的ランダムアクセスメモリ(DRAM、DynaMic RandoM Access MeMory)、静的ランダムアクセスメモリ(SRAM、Static RandoM乃至Access MeMory)、拡張動的ランダムアクセスメモリ(EDRAM、Enhanced DynaMic RandoM Access MeMory)、高帯域幅メモリ(HBM、High-Bandwidth MeMory)、ハイブリッドストレージキューブ(HMC、Hybrid MeMory Cube)などの、いかなる適当な磁気記憶媒体または光磁気記憶媒体であってもよい。
前記統合のユニット/モジュールがソフトウェアプログラムモジュールの形式で実現され、また独立した製品として販売または使用される場合、一つのコンピュータ読み取り可能なメモリに記憶できる。このような理解に基づいて、本発明の技術案は、本質的に、または、先行技術に寄与する一部または当該技術案の全部または一部は、ソフトウェア製品の形式で具体化されることができる。当該コンピュータソフトウェア製品は、一つのメモリに記憶され、一つのコンピュータデバイス(パーソナルコンピュータ、サーバ、または、ネットワークデバイスなどであってもよい)に本発明の各実施例に記載の方法の全部または一部のステップを実行させるためのいくつかの命令を含む前述のメモリは、Uディスク、読み取り専用メモリ(ROM、Read-Only MeMory)、ランダムアクセスメモリ(RAM、RandoM Access MeMory)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードを記憶できる様々な媒体を含む。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
上記の実施例において、各実施例に対する説明にはそれぞれ焦点が当てられているが、特定の実施例で詳細に説明されていない部分については、他の実施例の関連した説明を参照することができる。上記の実施例の各技術的特徴は、任意の組み合わせることができ、説明を簡潔にするため、上記の実施例中の各技術的特徴のすべての可能の組み合わせに対して説明されていない。ただし、これらの技術的特徴の組み合わせに矛盾がない限り、すべて本明細書に記載の範囲と見なされるべきである。
前述の内容は、次の条項に従ってよりよく理解できる。
条項A1、データ同期方法であって、前記方法は、第1のプロセッサに適用され、前記方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータの同期情報を確定することと、
前記テンソルデータの同期情報に基づいて、同期命令を生成することと、
第2のプロセッサを指示して前記第2のプロセッサが前記同期命令に基づいて前記同期待ちのテンソルデータを取得するように、前記同期命令を、前記第2のプロセッサに送信することと、を含む。
条項A2、条項A1に記載の方法であって、前記同期情報は、同期待ちのテンソルデータの記憶アドレスを含み、
前記テンソルデータの同期情報に基づいて、同期命令を生成することは、
前記第2のプロセッサを指示して前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記同期待ちのテンソルデータの記憶アドレスに基づいて、同期命令を生成することを含む。
条項A3、条項A1または条項A2に記載の方法であって、前記同期情報は、同期待ちのテンソルデータの記憶アドレスを含み、前記テンソルデータの同期情報に基づいて、同期命令を生成することは、
同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、同期命令を生成することと、を含む。
条項A4、条項A1- 条項A3の中のいずれか1項に記載の方法であって、前記方法は、
第2のプロセッサからの同期要求命令に基づいて、前記同期待ちのテンソルデータの記述子を確定することをさらに含む。
条項A5、条項A4に記載の方法であって、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、前記第2のプロセッサからの同期要求命令に基づいて、前記同期待ちのテンソルデータの記述子を確定することは、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることと、
同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含む。
条項A6、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、
第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得ることと、
前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することと、を含む。
条項A7、条項A6に記載の方法であって、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定することは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定することを含み、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
条項A8、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、
同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して前記第1のプロセッサが前記同期要求命令に基づいて、同期待ちのテンソルデータの前記同期待ちのテンソルデータの形状を示すための記述子を、確定するようにするための、同期要求命令を生成し、前記同期要求命令を前記第1のプロセッサに送信することを含む。
条項A9、条項A8に記載の方法であって、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み。
条項A10、条項A8または条項A9に記載の方法であって、前記方法は、
第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得ることと、
前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することと、をさらに含む。
条項A11、条項A10に記載の方法であって、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、前記前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定することは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定することを含み、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得することは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得することを含む。
条項A12、データ同期装置であって、前記装置は、第1のプロセッサに適用され、前記装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータの同期情報を確定するための第1の情報確定モジュールと、
前記テンソルデータの同期情報に基づいて、同期命令を生成するための第1の命令生成モジュールはと、
第2のプロセッサを指示して前記第2のプロセッサが前記同期命令に基づいて前記同期待ちのテンソルデータを取得するようにするための前記同期命令を、前記第2のプロセッサに送信するための第1の命令送信モジュールと、を備える。
条項A13、条項A12に記載の装置であって、前記同期情報は、同期待ちのテンソルデータの記憶アドレスを含み、前記第1の命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが共有記憶空間にある場合、前記第2のプロセッサを指示して前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、前記同期待ちのテンソルデータの記憶アドレスに基づいて、同期命令を生成するための第1の生成サブモジュールを備える。
条項A14、条項A12または条項A13に記載の装置であって、前記同期情報は、同期待ちのテンソルデータの記憶アドレスを含み、前記第1の命令生成モジュールは、同期待ちのテンソルデータの記憶アドレスが非共有記憶空間にある場合、前記同期待ちのテンソルデータを共有記憶空間に記憶するための転送記憶サブモジュールと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記共有記憶空間から前記同期待ちのテンソルデータを取得するように、前記同期待ちのテンソルデータの共有記憶空間におけるアドレスに基づいて、同期命令を生成するための第2の生成サブモジュールと、を備える。
条項A15、条項A12乃至条項A14の中のいずれか1項に記載の装置であって、前記装置は、第2のプロセッサからの同期要求命令に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定モジュールをさらに備える。
条項A16、条項A15に記載の装置であって、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、前記第1の記述子確定モジュールは、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴を得るための命令解析サブモジュールと、同期待ちのテンソルデータのデータ特徴に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定サブモジュールと、を備える。
条項A17、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、
第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得るための第2の情報確定モジュールと、
前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定ための第2の記述子確定モジュールと、
前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第1のデータ取得モジュールと、を備える。
条項A18、条項A17に記載の装置であって、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、前記第2の記述子確定モジュールは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定するための第1の確定サブモジュールを備え、
前記第1のデータ取得モジュールは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第1のデータ取得サブモジュールを備える。
条項A19、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、
同期待ちのテンソルデータが存在する場合、第1のプロセッサを指示して前記第1のプロセッサが前記同期要求命令に基づいて同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を確定する同期要求命令を生成するための第2の命令生成モジュールと、
前記同期要求命令を前記第1のプロセッサに送信するための第2の命令送信モジュールと、を備える。
条項A20、条項A19に記載の装置であって、前記同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含む。
条項A21、条項A19または条項A20に記載の装置であって、前記装置は、第1のプロセッサからの同期命令を解析して、同期待ちのテンソルデータの同期情報を得るための第3の情報確定モジュールと、前記同期待ちのテンソルデータの同期情報に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第3の記述子確定モジュールと、前記同期待ちのテンソルデータの記述子に基づいて、前記同期待ちのテンソルデータを取得するための第2のデータ取得モジュールと、をさらに備える。
条項A22、条項A21に記載の装置であって、前記同期情報は、前記同期待ちのテンソルデータの記憶アドレスを含み、前記第3の記述子確定モジュールは、前記同期待ちのテンソルデータの記憶アドレスに基づいて、前記同期待ちのテンソルデータの記述子の識別子及び/又は前記記述子の内容を確定するための第2の確定サブモジュールを備え、
前記第2のデータ取得モジュールは、前記同期待ちのテンソルデータの記述子の内容に基づいて、共有記憶空間から前記同期待ちのテンソルデータを取得するための第2のデータ取得サブモジュールと、を備える。
条項A23、人工知能チップであって、前記チップは、条項A12乃至条項A22の中のいずれか1項に記載のデータ同期装置を備える。
条項A24、電子デバイスであって、前記電子デバイスは、条項A23に記載の人工知能チップを備える。
条項A25、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、条項A23に記載の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
条項A26、条項A25に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理などの分野で十分に適用されている。ただし、人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期処理方法が提供される。図1eは、本発明の実施例に係るデータ同期方法を示すフローチャートである。図1eに示されたように、当該方法は、第1のプロセッサ(処理システム中の任意の一つのプロセッサ)に適用され、当該方法は、以下のステップを含む。
ステップS11eにおいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定して同期状態命令を生成するための状態照会命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む状態照会命令を、生成し、
ステップS12eにおいて、前記状態照会命令を第2のプロセッサに送信する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよい。
データ処理過程で、複数のプロセッサ(例えば、人工知能チップの複数のコア)間のデータ同期を実行する必要があるかもしれなく、例えば、プロセッサA1の演算結果をもう一つの演算の入力データとしてプロセッサA2に同期させる。この場合、記述子に基づくデータ同期メカニズムを使用してデータ同期を実現できる。
可能な一実現形態において、各プロセッサの非共有記憶空間での、同期待ちのテンソルデータに割り当てることができる空間が制限されて、テンソルデータの全体的な同期が実現されない。この場合、テンソルデータの一部の同期を実行し、複数回の一部の同期によって全体的なテンソルデータの同期過程を実現できる。
可能な一実現形態において、複数のプロセッサの中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、データ同期の送信側に同期待ちのテンソルデータがあり、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、テンソルデータの一部の同期を実行するように、送信側により、受信側の状態を照会して、データ同期の受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量を確定できる。複数のプロセッサの中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、ステップS11において、同期待ちのテンソルデータの記述子に基づいて、状態照会命令を生成する。第2のプロセッサを指示して前記第2のプロセッサが自身の状態(すなわち、テンソルデータに対する同期可能データ量)を確定して返信するように、当該状態照会命令は、同期待ちのテンソルデータの記述子の識別子及び/又は記述子の内容を含んでもよい。
可能な一実現形態において、第1のプロセッサは、ステップS12eにおいて、状態照会命令を第2のプロセッサに送信する。第2のプロセッサは、当該状態照会命令を受信した後、当該命令を解析することによって、記述子の識別子及び/又は記述子の内容を確定できる。記述子の識別子及び/又は記述子の内容に基づいて、第2のプロセッサは、同期待ちのテンソルデータを確定し、さらに当該テンソルデータに割り当てることができる空間を確定して、当該テンソルデータに対する同期可能データ量を確定できる。第1のプロセッサが同期待ちのテンソルデータの記述子および今回同期する同期可能データ量を確定できるように、当該テンソルデータに対する同期可能データ量および記述子に基づいて、第2のプロセッサは、同期状態命令を生成して送信する。
このような方式によって、送信側と受信側との間の一部のデータ同期を実現するように、データ同期の送信側により受信側の状態を能動的に照会できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信することと、をさらに含む。
例を挙げると、第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、当該命令を解析して当該命令の内容(例えば、記述子の識別子、同期可能データ量など)を得る。記述子の識別子に基づいて、同期待ちのテンソルデータの記述子を確定することによって、同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータの中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータの中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)の中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期状態命令には、例えば、当該一部のサブデータの記述子内容または記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。第1のプロセッサは、当該一部のデータの範囲に基づいて同期待ちの第1のサブデータを直接確定できる。
可能な一実現形態において、第1のプロセッサは、第1のサブデータに基づいて記述子同期命令を生成して記述子同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータの記述子の識別子および第1のサブデータが含まれてもよい。第2のプロセッサは、記述子同期命令を受信した後、当該命令を解析して同期待ちのテンソルデータの記述子およびテンソルデータの第1のサブデータを確定し、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、同期状態命令中の記述子に基づいてテンソルデータを確定し、受信側が今回同期するサブデータを取得するように、受信側の同期可能データ量に基づいて今回同期するサブデータを確定し、当該サブデータに基づいて記述子同期命令を生成して送信することにより、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、同期状態命令は、記述子の識別子を含む。前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定するステップは、
前記同期状態命令を解析して、前記記述子の識別子および同期可能データ量を得ることと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、同期状態命令中には、記述子の識別子(例えば、識別子がTR1である)および同期可能データ量が含まれてもよい。第1のプロセッサは、同期状態命令を解析して記述子の識別子および同期可能データ量を得、さらに記述子の識別子に基づいて、同期待ちのテンソルデータの記述子を確定できる。
このような方式によって、同期の際に伝送するデータ量を削減して、処理効率を向上させることができる。
可能な一実現形態において、前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定するステップは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期状態命令中の同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、当第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定し、第2のサブデータおよび同期状態命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて記述子同期命令を生成して送信することで、第2のプロセッサにテンソルデータの第1のサブデータの同期を実現させた後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回に第2のプロセッサの状態を照会して第2のプロセッサの同期状態命令を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
図3c1は、本発明の実施例に係るデータ同期方法を示すフローチャートである。図3c1に示されたように、当該方法は、第2のプロセッサに適用され、当該方法は、以下のステップを含む。
ステップS31cにおいて、第1のプロセッサからの状態照会命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定し、
ステップS32cにおいて、前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定し、
ステップS33cにおいて、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを確定するための同期状態命令を生成し、
ステップS34lにおいて、前記同期状態命令を前記第1のプロセッサに送信する。
例を挙げると、データ同期の送信側に同期待ちのテンソルデータがある場合、送信側により受信側の状態を照会してもよい。第1のプロセッサ(送信側)は、状態照会命令を生成して送信し、第2のプロセッサは、ステップS31cにおいて、当該状態照会命令を受信した場合、当該命令を解析して、同期待ちのテンソルデータの記述子を既に確定した。
可能な一実現形態において、ステップS32cにおいて、第2のプロセッサは、テンソルデータの一部の同期を実行するように、当該記述子に基づいて同期待ちのテンソルデータを確定し、且つ、自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量すなわち同期可能データ量を確定できる。
可能な一実現形態において、ステップS33cにおいて、第1のプロセッサを指示して前記第1のプロセッサが同期待ちのテンソルデータの記述子および今回同期する同期可能データ量を確定するように、第2のプロセッサは、確定された同期可能データ量および当該テンソルデータの記述子に基づいて、同期状態命令を生成して第1のプロセッサに送信することすることができる。第1のプロセッサは、今回同期できる一部のデータ(すなわち、第1のサブデータ)を確定した後、記述子同期命令を生成し、且つ、ステップS34lにおいて、記述子同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータの記述子の識別子および第1のサブデータが含まれてもよい。
このような方式によって、送信側により受信側の状態を照会し、受信側は、状態照会命令を受信した後に自身の状態(すなわち、同期可能データ量である)を確定して返信し、対話を通じてテンソルデータの一部の同期を実現して、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定することと、前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第2のプロセッサは、記述子同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータの記述子および今回同期する当該テンソルデータの第1のサブデータを確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、記述子同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期の受信側により、テンソルデータの一部に対する同期要求を開始させることができ、すなわち、受信側が記述子同期要求命令を発し、当該命令中には、同期待ちのテンソルデータを示す記述子、および、当該テンソルデータに対する同期可能データ量、すなわち受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量が含まれてもよい。
可能な一実現形態において、データ同期方法をさらに提供し、第1のプロセッサに適用され、当該方法は、前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量を確定することと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信することと、をさらに含む。
可能な一実現形態において、第1のプロセッサは、第2のプロセッサからの記述子同期要求命令を受信した場合、当該命令を解析して当該命令の内容(例えば、同期待ちのテンソルデータの記述子の識別子、同期待ちのテンソルデータのデータ特徴、同期可能データ量など)を得ることによって、同期待ちのテンソルデータの記述子および同期可能データ量を確定できる。
可能な一実現形態において、第1のプロセッサは、記述子に基づいて同期待ちのテンソルデータを確定し、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、第1のプロセッサは、第1のサブデータに基づいて記述子同期命令を生成して前記記述子同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータの記述子の識別子および第1のサブデータが含まれてもよい。第2のプロセッサは、記述子同期命令を受信した後、当該命令を解析して同期待ちのテンソルデータの記述子およびテンソルデータの第1のサブデータを確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、記述子同期要求命令の中の記述子に基づいてテンソルデータを確定し、受信側が今回同期するサブデータを取得するように、受信側の同期可能データ量に基づいて今回同期するサブデータを確定し、当該サブデータに基づいて記述子同期命令を生成して送信することにより、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、記述子同期要求命令は、記述子の識別子を含んでもよく、前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータに対する同期可能データ量を確定することは、前記記述子同期要求命令を解析して、前記記述子の識別子および同期可能データ量を得ることと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んむ。
例を挙げると、第1のプロセッサと第2のプロセッサ中にいずれも当該同期待ちのテンソルデータを示す記述子が既に登録されていると、記述子同期命令は記述子の識別子(例えば、記述子の識別子がTR1である場合、記述子同期命令をSend TR1で表す)および同期可能データ量のみを含んでもよい。第1のプロセッサは、記述子同期要求命令を解析して記述子の識別子および同期可能データ量を得、さらに記述子の識別子に基づいて、同期待ちのテンソルデータの記述子を確定できる。
このような方式によって、同期の際に伝送するデータ量を削減して、処理効率を向上させることができる。
可能な一実現形態において、記述子同期要求命令は、同期待ちのテンソルデータのデータ特徴を含み、前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータに対する同期可能データ量を確定することは、
前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることと、
前記テンソルデータのデータ特徴に基づいて、前記テンソルデータの記述子を確定することと、を含む。
例を挙げると、第1のプロセッサに当該同期待ちのテンソルデータを示す記述子が登録されていないか、または、記述子の識別子が対応されないと、記述子同期命令は、同期待ちのテンソルデータのデータ特徴を含んでもよい。当該データ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)などである。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、当該データ特徴に基づいて、同期待ちのテンソルデータを検索して、当該同期待ちのテンソルデータの記述子を確定でき、例えば、対応する記述子を直接取得するかまたは新たに登録する。当該同期待ちのテンソルデータの記述子に基づいて、当該テンソルデータを確定し、さらに同期可能データ量に基づいて今回同期するサブデータを確定できる。
このような方式によって、テンソルデータの一部の同期を実現するように、記述子同期要求命令中のデータ特徴に基づいて同期待ちのテンソルデータの記述子を確定できることによって、同期の際にテンソルデータ自身を伝送する必要がなく、伝送するデータ量および同期オーバーヘッドを軽減して、処理効率を向上させた。
可能な一実現形態において、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含む。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、第1のプロセッサは、第2のプロセッサからの記述子同期要求命令を受信した場合、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定でき、第2のサブデータおよび記述子同期要求命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて記述子同期命令を生成して送信することで、第2のプロセッサにテンソルデータの第1のサブデータの同期を実現させた後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回の第2のプロセッサの同期要求を受信した場合、同期待ち状態にいる一部のデータ中から次回の同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期方法をさらに提供し、第2のプロセッサに適用され、当該方法は、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記記述子同期要求命令に従って同期待ちのテンソルデータの記述子、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するようにするための記述子同期要求命令を生成することと、前記記述子同期要求命令を前記第1のプロセッサに送信することと、を含む。
例を挙げると、複数のプロセッサ中の第2のプロセッサがデータ同期の受信側であり、第2のプロセッサによりテンソルデータの一部に対する同期要求を開始すると設定できる。ステップS31cにおいて、第2のプロセッサ中に同期待ちのテンソルデータが存在する場合、テンソルデータの記述子、および、第2のプロセッサ自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。当該テンソルデータの記述子および同期可能データ量に基づいて、第2のプロセッサは、記述子同期要求命令を生成してステップS32lにおいて当該命令を送信できる。当該記述子同期要求命令は、記述子の識別子を含んでもよく、記述子の内容およびテンソルデータのデータ特徴の中の少なくとも一つは、第1のプロセッサを指示して前記第1のプロセッサが当該命令に基づいて同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定するようにするために使用される。
可能な一実現形態において、第1のプロセッサは、記述子同期要求命令を受信した場合、当該命令を解析して、同期待ちのテンソルデータの記述子および同期可能データ量を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、記述子同期要求命令中には、例えば、当該一部のサブデータの記述子内容または記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。
このような方式によって、受信側によりテンソルデータの一部の同期要求を開始して、送信側が今回同期するサブデータを確定することができて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの記述子および第1のサブデータに基づいて記述子同期命令を生成して送信できる。第2のプロセッサは、当該記述子同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータの記述子および今回同期する当該テンソルデータの第1のサブデータを確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、記述子同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサに接続された外部メモリ(オフチップメモリ)の中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタ中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタ中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
本発明の実施例に係るデータ同期方法によると、データ同期の受信側空間が不足である場合、テンソルデータの一部の同期を実現し、複数回の一部の同期によって全体的なテンソルデータの同期を実現できることによって、空間が不足である場合にテンソルデータ全体的な同期に失敗するかまたは同期が遅延されるなどの問題を回避して、データ同期の効率を向上させることができ、且つ、テンソルデータの形状を示す記述子が設定されており、データ同期過程で記述子に基づいてテンソルデータを確定することによって、同期オーバーヘッドを削減して、データアクセスの複雑度を低下させた。
説明する必要があるのは、前述の各方法の実施例について、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明が説明された動作の順序に限定されないし、なぜなら、本発明によると、いくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきである。次に、当業者は、明細書に説明された実施例が、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
さらに説明する必要があるのは、フローチャートでの各ステップは矢印に従って順に示したが、これらのステップは必ずとして矢印が示す順序に従って順に実行する必要がない。本明細書に明確な説明がない限り、これらのステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に従って実行してもよい。さらに、フローチャートでの少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
図3c2は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第1のプロセッサに適用され、図3c2に示されたように、当該データ同期装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定して同期状態命令を生成するための状態照会命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む状態照会命令を生成するための照会命令生成モジュール51cと、
前記状態照会命令を第2のプロセッサに送信する照会命令送信モジュール52cと、を備える。
可能な一実現形態において、前記装置は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するサブデータ確定モジュールと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュールと、をさらに備える。
可能な一実現形態において、前記同期状態命令は記述子の識別子を含み、ここで、前記サブデータ確定モジュールは、
前記同期状態命令を解析して、前記記述子の識別子および同期可能データ量を得るための解析サブモジュールと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定するための記述子確定サブモジュールと、を備える。
可能な一実現形態において、前記サブデータ確定モジュールは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期状態命令中の同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
図3c3は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3c3に示されたように、当該データ同期装置は、
第1のプロセッサからの状態照会命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための照会命令受信モジュール61cと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定するためのデータ量確定モジュール62cと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するように、同期状態命令を生成するための状態命令生成モジュール63cと、
前記同期状態命令を前記第1のプロセッサに送信するための状態命令送信モジュール64cと、を備える。
可能な一実現形態において、前記装置は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定するための同期命令受信モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
上記の装置の実施例は、ただ模式的なもののであり、本発明の装置はさらに他の方式によって実現されてもよいことを理解すべきである。例えば、上記の実施例中の前記ユニット/モジュールの区分けは、ただ論理機能に基づく区分けであり、実際に実現するときに他の区分け方式があってもよい。例えば、複数のユニット、モジュール、または、コンポーネントを、組み合わせたり、もう一つのシステムに統合したり、いくつかの特徴を省略するか実行しないことができる。
また、特に説明しない限り、本発明の各実施例中の各機能ユニット/モジュールを一つのユニット/モジュールに統合してもよいし、各ユニット/モジュールが単独に物理的に存在してもよいし、二つまたは二つの以上のユニット/モジュールを一つに統合してもよい。上記の統合のユニット/モジュールを、ハードウェアの形式で実現してもよいし、ソフトウェアプログラムモジュールの形式で実現してもよい。
前記統合されたユニット/モジュールをハードウェアの形式で実現する場合、当該ハードウェアは、デジタル回路、アナログ回路などであってもよい。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えば、CPU、GPU、FPGA、DSP、ASICなどの、いかなる適当なハードウェアプロセッサであってもよい。特に説明しない限り、前記記憶ユニットは、例えば、抵抗性ランダムアクセスメモリRRAM(Resistive Random Access Memory)、動的ランダムアクセスメモリDRAM(Dynamic Random Access Memory)、静的ランダムアクセスメモリSRAM(Static Random乃至Access Memory)、拡張動的ランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM(High-Bandwidth Memory)、ハイブリッドストレージキューブHMC(Hybrid Memory Cube)などの、いかなる適当な磁気記憶媒体または光磁気記憶媒体であってもよい。
前記統合のユニット/モジュールがソフトウェアプログラムモジュールの形式で実現され、また独立した製品として販売または使用される場合、一つのコンピュータ読み取り可能なメモリに記憶できる。このような理解に基づいて、本発明の技術案は、本質的に、または、先行技術に寄与する一部または当該技術案の全部または一部は、ソフトウェア製品の形式で具体化されることができる。当該コンピュータソフトウェア製品は、一つのメモリに記憶され、一つのコンピュータデバイス(パーソナルコンピュータ、サーバ、または、ネットワークデバイスなどであってもよい)に本発明の各実施例に記載の方法の全部または一部のステップを実行させるためのいくつかの命令を含む。前述のメモリは、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードを記憶できる様々な媒体を含む。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
上記の実施例において、各実施例に対する説明にはそれぞれ焦点が当てられているが、特定の実施例で詳細に説明されていない部分については、他の実施例の関連する説明を参照することができる。上記の実施例の各技術的特徴は、任意の組み合わせることができ、説明を簡潔にするため、上記の実施例中の各技術的特徴のすべての可能の組み合わせに対して説明されていない。ただし、これらの技術的特徴の組み合わせに矛盾がない限り、すべて本明細書に記載の範囲と見なされるべきである。
前述の内容は、次の条項に従ってよりよく理解できる。
A1、データ同期方法であって、前記方法は、第1のプロセッサに適用され、前記方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む状態照会命令を、生成することと、
前記状態照会命令を第2のプロセッサに送信することと、を含む。
A2、請求項1に記載の方法であって、前記方法は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信することと、をさらに含む。
A3、請求項A2に記載の方法であって、前記同期状態命令は記述子の識別子を含み、
ここで、前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記同期状態命令を解析して、前記記述子の識別子および同期可能データ量を得ることと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含む。
A4、請求項A2またはA3に記載の方法であって、前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期状態命令中の同期可能データ量に基づいて、第1のサブデータを確定することと、を含む。
A5、請求項A2乃至A4の中のいずれか1項に記載の方法であって、前記方法は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
A6、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、
第1のプロセッサからの状態照会命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定することと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための、同期状態命令を生成することと、
前記同期状態命令を前記第1のプロセッサに送信することと、を含む。
A7、請求項A6に記載の方法であって、前記方法は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
A8、データ同期装置であって、前記装置は、第1のプロセッサに適用され、前記装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む状態照会命令を、生成するための照会命令生成モジュールと、
前記状態照会命令を第2のプロセッサに送信するための照会命令送信モジュールと、を備える。
A9、請求項A8に記載の装置であって、前記装置は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するサブデータ確定モジュールと、
前記第1のサブデータに基づいて、前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュールと、をさらに備える。
A10、請求項A9に記載の装置であって、前記同期状態命令は記述子の識別子を含み、ここで、前記サブデータ確定モジュールは、
前記同期状態命令を解析して、前記記述子の識別子および同期可能データ量を得るための解析サブモジュールと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定するための記述子確定サブモジュールと、を備える。
A11、請求項A9またはA10に記載の装置であって、前記サブデータ確定モジュールは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期状態命令中の同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
A12、請求項A9乃至A11の中のいずれか1項に記載の装置であって、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
A13、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、
第1のプロセッサからの状態照会命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための照会命令受信モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定するためのデータ量確定モジュールと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための、同期状態命令を生成するための状態命令生成モジュールと、
前記同期状態命令を前記第1のプロセッサに送信するための状態命令送信モジュールと、を備える。
A14、請求項A13に記載の装置であって、前記装置は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定するための同期命令受信モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
A15、人工知能チップであって、前記チップは、請求項A8乃至A14の中のいずれか1項に記載のデータ同期装置を備える。
A16、電子デバイスであって、前記電子デバイスは、請求項A15に記載の人工知能チップを備える。
A17、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A15に記載の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A18、請求項A17に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理などの分野で十分に適用されている。ただし、人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期方法が提供される。図1fは、本発明の実施例に係るデータ同期方法を示すフローチャートである。図1fに示されたように、当該方法は、第1のプロセッサ(処理システム中の任意の一つのプロセッサ)に適用され、当該方法は、以下のステップを含む。
ステップS11fにおいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴を確定し、
ステップS12fにおいて、前記テンソルデータのデータ特徴に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令を生成して、前記状態照会命令を第2のプロセッサに送信する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよい。
可能な一実現形態において、データ処理過程で、複数のプロセッサ(例えば、人工知能チップの複数のコア)間のデータ同期を実行する必要があるかもしれなく、例えば、プロセッサA1の演算結果をもう一つの演算の入力データとしてプロセッサA2に同期させる。この場合、記述子に基づくデータ同期メカニズムを使用してデータ同期を実現できる。
可能な一実現形態において、各プロセッサの非共有記憶空間での、同期待ちのテンソルデータに割り当てることができる空間が制限されて、テンソルデータの全体的な同期が実現されない可能性がある。この場合、テンソルデータの一部の同期を実行し、複数回の一部の同期によって全体的なテンソルデータの同期過程を実現できる。
可能な一実現形態において、データ同期の送信側に同期待ちのテンソルデータがあり、例えば、一つの演算を完成して演算結果(すなわち、テンソルデータである)得た場合、テンソルデータの一部の同期を実行するように、送信側により、受信側の状態を照会して、データ同期の受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量を確定できる。
可能な一実現形態において、複数のプロセッサ中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、同期待ちのテンソルデータが存在すると確定した場合、当該テンソルデータの記述子を取得できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、ステップS11fにおいて、当該テンソルデータの記述子に基づいて、第1のプロセッサは、当該テンソルデータのデータ特徴を確定できる。当該データ特徴は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。
可能な一実現形態において、同期待ちのテンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、ステップS12fにおいて、当該テンソルデータのデータ特徴に基づいて、第1のプロセッサは、状態照会命令を生成して当該状態照会命令を同期待ちの第2のプロセッサに送信できる。第2のプロセッサ中に当該テンソルデータの情報(例えば、当該同期待ちのテンソルデータを示す記述子が既に登録されている)を既に有すると、状態照会命令は、例えば、テンソルデータの識別子のような一部のデータ特徴のみを含んでもよく、第2のプロセッサを指示して当該第2のプロセッサが当該テンソルデータの識別子に基づいて同期待ちのテンソルデータの記述子を確定するようにすることができ、第2のプロセッサ中に当該テンソルデータの情報を有さないと、同期命令は、例えば、テンソルデータの識別子および記憶アドレスなどの、より多くのデータ特徴を含んでもよく、第2のプロセッサを指示して当該第2のプロセッサが同期待ちのテンソルデータの記述子を確定するようにすることができる。本発明は、状態照会命令が含む具体的な内容に対して限定しない。
可能な一実現形態において、状態照会命令がテンソルデータの識別子を含むと、第2のプロセッサは、当該識別子に基づいて同期待ちのテンソルデータを確定し、当該同期待ちのテンソルデータを示す記述子を登録するかまたは取得できる。状態照会命令がより多くのデータ特徴(識別子および記憶アドレスなど)を含むと、第2のプロセッサは、命令中のデータ特徴に基づいて当該テンソルデータを示す記述子を登録できる。
可能な一実現形態において、同期待ちのテンソルデータの記述子を確定した後、第2のプロセッサは、記述子に対応するテンソルデータに割り当てすることができる空間を確定し、当該テンソルデータに対する同期可能データ量を確定できる。同期可能データ量およびデータ特徴に基づいて、第2のプロセッサは、同期状態命令を生成して送信することによって、第1のプロセッサが同期待ちのテンソルデータおよび今回同期する同期可能データ量を確定できるようにする。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、送信側は、記述子に基づいてテンソルデータのデータ特徴を確定し、受信側を指示して前記受信側が状態照会命令に基づいて自身状態(すなわち、同期できるデータ量である)をフィードバックするように、データ特徴に基づいて状態照会命令を生成して送信することで、テンソルデータの一部の同期を実現し、命令構成を変更しない場合、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定することと、
前記データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定することと、
前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を第2のプロセッサに送信ことと、をさらに含む。
例を挙げると、第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、当該命令を解析して当該命令の内容、すなわち同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることができる。当該データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定することによって、同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期状態命令には、例えば、当該一部のサブデータの記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。第1のプロセッサは、当該一部のデータの範囲に基づいて同期待ちの第1のサブデータを直接確定できる。
可能な一実現形態において、第1のプロセッサは、第1のサブデータに基づいて同期命令を生成して前記同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータのデータ特徴および第1のサブデータを含まれてもよい。第2のプロセッサは、同期命令を受信した後、当該命令を解析して同期待ちのテンソルデータのデータ特徴およびテンソルデータの第1のサブデータを確定し、データ特徴確定記述子に基づいて、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、送信側からの同期状態命令に基づいてテンソルデータの記述子および同期可能データ量を確定し、同期可能データ量に基づいて今回同期するサブデータを確定し、当該サブデータに基づいて同期命令を生成して送信することで、受信側が今回同期するサブデータを取得するようにすることができて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定するステップは、
前記記述子に基づいて、同期待ちのテンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、当第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定し、第2のサブデータおよび同期状態命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて同期命令生成して送信することによって、第2のプロセッサがテンソルデータの第1のサブデータの同期を実現するようにした後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回に第2のプロセッサの状態を照会して第2のプロセッサの同期状態命令を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
図3d1は、本発明の一実施例に係るデータ同期方法を示すフローチャートである。図3d1に示されたように、当該方法は、第2のプロセッサに適用され、当該方法は、以下のステップを含む。
ステップS31dにおいて、第1のプロセッサからの状態照会命令を受信した場合、前記状態照会命令を解析して、同期待ちのテンソルデータのデータ特徴を得、
ステップS32dにおいて、前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定し、
ステップS33dにおいて、前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定し、
ステップS34dにおいて、前記テンソルデータのデータ特徴および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して、前記第1のプロセッサが、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための同期状態命令を生成して、前記同期状態命令を前記第1のプロセッサに送信する。
例を挙げると、データ同期の送信側に同期待ちのテンソルデータがある場合、送信側は、受信側の状態を照会できる。第1のプロセッサ(送信側)は、状態照会命令を生成して送信し、第2のプロセッサは、ステップS31dにおいて当該状態照会命令を受信した場合、当該命令を解析して、既に同期待ちのテンソルデータのデータ特徴を確定できる。当該データ特徴は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。
可能な一実現形態において、ステップS32dにおいて、第2のプロセッサは、データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、ステップS33dにおいて、第2のプロセッサは、テンソルデータの一部の同期を実行するように、当該記述子に基づいて同期待ちのテンソルデータを確定し、且つ、自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。
可能な一実現形態において、ステップS34dにおいて、第2のプロセッサは、確定された同期可能データ量および当該テンソルデータのデータ特徴に基づいて、同期状態命令を生成して第1のプロセッサに送信することによって、第1のプロセッサを指示して、前記第1のプロセッサが、今回同期する同期可能データ量を確定するようにすることができる。第1のプロセッサは、今回同期できる一部のデータ(すなわち、第1のサブデータ)を確定した後、同期命令を生成して前記同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータのデータ特徴および第1のサブデータを含まれてもよい。
このような方式によって、送信側により受信側の状態を照会し、受信側は、状態照会命令を受信した後に自身の状態(すなわち、同期可能データ量である)を確定して返信し、対話を通じてテンソルデータの一部の同期を実現して、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得ることと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第2のプロセッサは、同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータのデータ特徴および今回同期する当該テンソルデータの第1のサブデータを確定し、当該データ特徴に基づいて同期待ちのテンソルデータの記述子を検索し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期の受信側により、テンソルデータの一部に対する同期要求を開始してもよく、すなわち、受信側が記述子同期要求命令を発し、当該命令中には、同期待ちのテンソルデータを示す記述子、および、当該テンソルデータに対する同期可能データ量、すなわち受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量が含まれてもよい。
可能な一実現形態において、データ同期方法をさらに提供し、第1のプロセッサに適用され、当該方法は、
前記第2のプロセッサからの同期要求命令を受信した場合、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を得ることと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信ことと、を含む。
例を挙げると、データ同期の受信側により、テンソルデータの一部に対する同期要求を開始させることができ、すなわち、受信側が同期要求命令を発し、当該命令中には、同期待ちのテンソルデータを示すデータ特徴、および、当該テンソルデータに対する同期可能データ量、すなわち受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量が含まれてもよい。
可能な一実現形態において、複数のプロセッサ中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、第2のプロセッサからの同期要求命令を受信した場合、当該命令を解析して当該命令の内容、すなわち同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることができる。当該データ特徴は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。
可能な一実現形態において、同期待ちのテンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、データ特徴に基づいて同期待ちのテンソルデータの記述子を確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期要求命令中には、例えば、当該一部のサブデータなど記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。第1のプロセッサは、当該一部のデータの範囲に基づいて同期待ちの第1のサブデータを直接確定できる。
可能な一実現形態において、第1のプロセッサは、第1のサブデータに基づいて同期命令を生成して前記同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータのデータ特徴および第1のサブデータを含まれてもよい。第2のプロセッサは、同期命令を受信した後、当該命令を解析して当該データ特徴および第1のサブデータを確定することによって、当該データ特徴に基づいて記述子を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、同期要求命令を発して同期一部のデータを能動的に要求することができ、送信側は、受信側の同期可能データ量に基づいて今回同期するサブデータを確定し、受信側が今回同期するサブデータを取得するように、当該サブデータに基づいて同期命令を生成して送信することができて、命令の構成を変更せずに同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、第1のプロセッサは、第2のプロセッサからの同期要求命令を受信した場合、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定し、第2のサブデータおよび同期要求命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて同期命令生成して送信することによって、第2のプロセッサがテンソルデータの第1のサブデータの同期を実現するようにした後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回に第2のプロセッサの同期要求命令を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期方法をさらに提供し、第2のプロセッサに適用され、当該方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を確定することと、
前記データ特徴および前記同期可能データ量に基づいて、第1のプロセッサを指示して、前記第1のプロセッサが、前記同期要求命令に基づいて同期待ちのテンソルデータ、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための同期要求命令を生成して、前記同期要求命令を第1のプロセッサに送信することと、を含む。
例を挙げると、データ同期の受信側(すなわち、第2のプロセッサ)により、テンソルデータの一部に対する同期要求を開始することができる。第2のプロセッサ中に同期待ちのテンソルデータが存在する場合、テンソルデータの記述子を確定できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、第2のプロセッサは、当該記述子に基づいて、例えば、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つのような、テンソルデータのデータ特徴を確定できる。また、第2のプロセッサは、自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。
可能な一実現形態において、当該テンソルデータのデータ特徴および同期可能データ量に基づいて、第2のプロセッサは、同期要求命令を生成して当該命令を送信できる。当該同期要求命令は、第1のプロセッサを指示して、前記第1のプロセッサが、当該命令に基づいて同期待ちのテンソルデータを確定して前記テンソルデータの第1のサブデータを確定するようにするために使用できる。
可能な一実現形態において、データ同期の受信側(すなわち、第1のプロセッサ)は、同期要求命令を受信した場合、当該命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定し、データ特徴に基づいて同期待ちのテンソルデータの記述子を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期要求命令中には、例えば、当該一部のサブデータの記述子内容または記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。
このような方式によって、受信側によりテンソルデータの一部の同期要求を開始して、送信側が今回同期するサブデータを確定することができて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得ることと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータのデータ特徴および第1のサブデータに基づいて同期命令を生成して送信できる。第2のプロセッサは、当該同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータのデータ特徴および今回同期する当該テンソルデータの第1のサブデータを確定し、データ特徴に基づいて記述子確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させ、且つ、、命令伝送および処理過程での命令互換性を実現できる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサと接続された外部メモリ(オフチップメモリ)中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタ中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタ中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
本発明の実施例に係るデータ同期方法によると、データ同期の受信側空間が不足である場合、テンソルデータの一部の同期を実現し、複数回の一部の同期によって全体的なテンソルデータの同期を実現できることによって、空間が不足である場合、テンソルデータ全体的な同期に失敗するかまたは同期が遅延されるなどの問題を回避して、データ同期の効率を向上させることができ、テンソルデータの形状を示す記述子が設定されており、データ同期過程で記述子に基づいてテンソルデータを確定することによって、同期オーバーヘッドを削減して、データアクセスの複雑度を低下させて、命令伝送および処理過程での命令互換性を実現できる。
説明する必要があるのは、前述の各方法の実施例について、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明が説明された動作の順序に限定されないし、なぜなら、本発明によると、いくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきである。次に、当業者は、明細書に説明された実施例は、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
さらに説明する必要があるのは、フローチャートでの各ステップは矢印に従って順に示したが、これらのステップは必ずとして矢印が示す順序に従って順に実行する必要がない。本明細書に明確な説明がない限り、これらのステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に従って実行してもよい。さらに、フローチャートでの少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
図3d2は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第1のプロセッサに適用され、図3d2に示されたように、当該データ同期装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴を確定するための特徴確定モジュール51dと、
前記テンソルデータのデータ特徴に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令を生成して、前記状態照会命令を第2のプロセッサに送信するための照会命令生成および送信モジュール52dと、を備える。
可能な一実現形態において、前記装置は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定するための状態命令解析モジュールと、
前記データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定するための第1の記述子確定モジュールと、
前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するためのデータ確定モジュールと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュールと、をさらに備える。
可能な一実現形態において、前記データ確定モジュールは、
前記記述子に基づいて、同期待ちのテンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
図3d3は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3d3に示されたように、当該データ同期装置は、
第1のプロセッサからの状態照会命令を受信した場合、前記状態照会命令を解析して、同期待ちのテンソルデータのデータ特徴を得るための照会命令解析モジュール61dと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための第2の記述子確定モジュール62dと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定するためのデータ量確定モジュール63dと、
前記テンソルデータのデータ特徴および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための同期状態命令を生成して、前記同期状態命令を前記第1のプロセッサに送信するための状態命令生成および送信モジュール64dと、を備える。
可能な一実現形態において、前記装置は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得るための同期命令解析モジュールと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定するための第3の記述子確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
上記の装置の実施例は、ただ模式的なもののであり、本発明の装置はさらに他の方式によって実現されてもよいことを理解すべきである。例えば、上記の実施例中の前記ユニット/モジュールの区分けは、ただ論理機能に基づく区分けであり、実際に実現するときに他の区分け方式があってもよい。例えば、複数のユニット、モジュール、または、コンポーネントを、組み合わせたり、もう一つのシステムに統合したり、いくつかの特徴を省略するか実行しないことができる。
また、特に説明しない限り、本発明の各実施例中の各機能ユニット/モジュールを一つのユニット/モジュールに統合してもよいし、各ユニット/モジュールが単独に物理的に存在してもよいし、二つまたは二つの以上のユニット/モジュールを一つに統合してもよい。上記の統合のユニット/モジュールを、ハードウェアの形式で実現してもよいし、ソフトウェアプログラムモジュールの形式で実現してもよい。
前記統合されたユニット/モジュールをハードウェアの形式で実現する場合、当該ハードウェアは、デジタル回路、アナログ回路などであってもよい。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えば、CPU、GPU、FPGA、DSP、ASICなどの、いかなる適当なハードウェアプロセッサであってもよい。特に説明しない限り、前記記憶ユニットは、例えば、抵抗性ランダムアクセスメモリRRAM(Resistive Random Access Memory)、動的ランダムアクセスメモリDRAM(DynaMic Random Access Memory)、静的ランダムアクセスメモリSRAM(Static Random乃至Access Memory)、拡張動的ランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM(High-Bandwidth Memory)、ハイブリッドストレージキューブHMC(Hybrid Memory Cube)などの、いかなる適当な磁気記憶媒体または光磁気記憶媒体であってもよい。
前記統合のユニット/モジュールがソフトウェアプログラムモジュールの形式で実現され、また独立した製品として販売または使用される場合、一つのコンピュータ読み取り可能なメモリに記憶できる。このような理解に基づいて、本発明の技術案は、本質的に、または、先行技術に寄与する一部または当該技術案の全部または一部は、ソフトウェア製品の形式で具体化されることができる。当該コンピュータソフトウェア製品は、一つのメモリに記憶され、一つのコンピュータデバイス(パーソナルコンピュータ、サーバ、または、ネットワークデバイスなどであってもよい)に本発明の各実施例に記載の方法の全部または一部のステップを実行させるためのいくつかの命令を含む。前述のメモリは、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードを記憶できる様々な媒体を含む。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
上記の実施例において、各実施例に対する説明にはそれぞれ焦点が当てられているが、特定の実施例で詳細に説明されていない部分については、他の実施例の関連する説明を参照することができる。上記の実施例の各技術的特徴は、任意の組み合わせることができ、説明を簡潔にするため、上記の実施例中の各技術的特徴のすべての可能の組み合わせに対して説明されていない。ただし、これらの技術的特徴の組み合わせに矛盾がない限り、すべて本明細書に記載の範囲と見なされるべきである。
前述の内容は、次の条項に従ってよりよく理解できる。
A1、データ同期方法であって、前記方法は、第1のプロセッサに適用され、前記方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴を確定することと、
前記テンソルデータのデータ特徴に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令を生成して、前記状態照会命令を第2のプロセッサに送信することと、含む。
A2、請求項A1に記載の方法であって、前記方法は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定することと、
前記データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定することと、
前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信することと、を含む。
A3、請求項A2に記載の方法であって、前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記記述子に基づいて、同期待ちのテンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含む。
A4、請求項A2またはA3に記載の方法であって、前記方法は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
A5、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、
第1のプロセッサからの状態照会命令を受信した場合、前記状態照会命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定することと、
前記テンソルデータのデータ特徴および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための同期状態命令を生成して、前記同期状態命令を前記第1のプロセッサに送信することと、を含む。
A6、請求項A5に記載の方法であって、前記方法は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得ることと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
A7、データ同期装置であって、前記装置は、第1のプロセッサに適用され、前記装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴を確定するための特徴確定モジュールと、
前記テンソルデータのデータ特徴に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令を生成して、前記状態照会命令を第2のプロセッサに送信するための照会命令生成および送信モジュールと、を備える。
A8、請求項A7に記載の装置であって、前記装置は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定するための状態命令解析モジュールと、
前記データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定するための第1の記述子確定モジュールと、
前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するためのデータ確定モジュールと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュールと、をさらに備える。
A9、請求項A8に記載の装置であって、前記データ確定モジュールは、
前記記述子に基づいて、同期待ちのテンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
A10、請求項A8またはA9に記載の装置であって、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
A11、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、
第1のプロセッサからの状態照会命令を受信した場合、前記状態照会命令を解析して、同期待ちのテンソルデータのデータ特徴を得るための照会命令解析モジュールと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための第2の記述子確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定するためのデータ量確定モジュールと、
前記テンソルデータのデータ特徴および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための同期状態命令を生成して、前記同期状態命令を前記第1のプロセッサに送信するための状態命令生成および送信モジュールと、を備える。
A12、請求項A11に記載の装置であって、前記装置は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得るための同期命令解析モジュールと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定するための第3の記述子確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
A13、人工知能チップであって、前記チップは、請求項A7乃至A12の中のいずれか1項に記載のデータ同期装置を備える。
A14、電子デバイスであって、前記電子デバイスは、請求項A13に記載の人工知能チップを備える。
A15、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A13に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A16、請求項A15に記載のボードカードであって、
前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理などの分野で十分に適用されている。ただし、人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期方法が提供される。図1gは、本発明の実施例に係るデータ同期方法を示すフローチャートである。図1gに示されたように、当該方法は、第1のプロセッサ(処理システム中の任意の一つのプロセッサ)に適用され、当該方法は、以下のステップを含む。
ステップS11gにおいて、前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量を確定し、
ステップS12gにおいて、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定し、
ステップS13gにおいて、前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよい。
可能な一実現形態において、データ処理過程で、複数のプロセッサ(例えば、人工知能チップの複数のコア)間のデータ同期を実行する必要があるかもしれなく、例えば、プロセッサA1の演算結果をもう一つの演算の入力データとしてプロセッサA2に同期させる。この場合、記述子に基づくデータ同期メカニズムを使用してデータ同期を実現できる。
可能な一実現形態において、各プロセッサの非共有記憶空間での、同期待ちのテンソルデータに割り当てることができる空間が制限されて、テンソルデータの全体的な同期が実現されない可能性がある。この場合、テンソルデータの一部の同期を実行し、複数回の一部の同期によって全体的なテンソルデータの同期過程を実現できる。
可能な一実現形態において、データ同期の受信側により、テンソルデータの一部に対する同期要求を開始させることができ、すなわち、受信側が記述子同期要求命令を発し、当該命令中には、同期待ちのテンソルデータを示す記述子、および、当該テンソルデータに対する同期可能データ量、すなわち受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量が含まれてもよい。
可能な一実現形態において、複数のプロセッサ中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、ステップS11gにおいて、第2のプロセッサからの記述子同期要求命令を受信した場合、当該命令を解析して当該命令の内容(例えば、同期待ちのテンソルデータの記述子の識別子、同期待ちのテンソルデータのデータ特徴、同期可能データ量など)を得ることによって、同期待ちのテンソルデータの記述子および同期可能データ量を確定できる。
可能な一実現形態において、ステップS12gにおいて、第1のプロセッサは、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、ステップS13gにおいて、第1のプロセッサは、第1のサブデータに基づいて記述子同期命令を生成して前記記述子同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータの記述子の識別子および第1のサブデータが含まれてもよい。第2のプロセッサは、記述子同期命令を受信した後、当該命令を解析して同期待ちのテンソルデータの記述子およびテンソルデータの第1のサブデータを確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、記述子同期要求命令中の記述子に基づいてテンソルデータを確定し、受信側の同期可能データ量に基づいて今回同期するサブデータを確定し、受信側が今回同期するサブデータを取得するように、当該サブデータ記述子に基づいて同期命令を生成して送信することにより、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、記述子同期要求命令は、記述子の識別子を含んでもよく、ステップS11gは、
前記記述子同期要求命令を解析して、前記記述子の識別子および同期可能データ量を得ることと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、第1のプロセッサと第2のプロセッサ中にいずれも当該同期待ちのテンソルデータを示す記述子が既に登録されていると、記述子同期命令は記述子の識別子(例えば、記述子の識別子がTR1である場合、記述子同期命令をSend TR1で表す)および同期可能データ量のみを含んでもよい。第1のプロセッサは、記述子同期要求命令を解析して記述子の識別子および同期可能データ量を得、さらに記述子の識別子に基づいて、同期待ちのテンソルデータの記述子を確定できる。
このような方式によって、同期の際に伝送するデータ量を削減して、処理効率を向上させることができる。
可能な一実現形態において、記述子同期要求命令は、同期待ちのテンソルデータのデータ特徴を含み、ステップS11gは、
前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることと、
前記テンソルデータのデータ特徴に基づいて、前記テンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、第1のプロセッサに当該同期待ちのテンソルデータを示す記述子が登録されていないか、または、記述子の識別子が対応されないと、記述子同期命令は、同期待ちのテンソルデータのデータ特徴を含んでもよい。当該データ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、当該データ特徴に基づいて、同期待ちのテンソルデータを検索して、且つ、当該同期待ちのテンソルデータの記述子を確定でき、例えば、対応する記述子を直接取得するかまたは新たに登録する。当該同期待ちのテンソルデータの記述子に基づいて、当該テンソルデータを確定し、さらに同期可能データ量に基づいて今回同期するサブデータを確定できる。
このような方式によって、テンソルデータの一部の同期を実現するように、記述子同期要求命令中のデータ特徴に基づいて同期待ちのテンソルデータの記述子を確定できることによって、同期の際にテンソルデータ自身を伝送する必要がなく、伝送するデータ量および同期オーバーヘッドを軽減して、処理効率を向上させた。
可能な一実現形態において、ステップS12gは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、第1のプロセッサは、第2のプロセッサからの記述子同期要求命令を受信した場合、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定でき、第2のサブデータおよび記述子同期要求命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するために、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて記述子同期命令を生成して送信することで、第2のプロセッサがテンソルデータの第1のサブデータの同期を実現するようにした後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回第2のプロセッサの同期要求を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
図3e1は、本発明の実施例に係るデータ同期方法を示すフローチャートである。図3e1に示されたように、当該方法は、第2のプロセッサに適用され、当該方法は、以下のステップを含む。
ステップS31eにおいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記記述子同期要求命令に従って同期待ちのテンソルデータの記述子、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための記述子同期要求命令を生成し、
ステップS32eにおいて、前記記述子同期要求命令を前記第1のプロセッサに送信する。
例を挙げると、複数のプロセッサ中の第2のプロセッサがデータ同期の受信側であり、第2のプロセッサによりテンソルデータの一部に対する同期要求を開始すると設定できる。ステップS31eにおいて、第2のプロセッサ中に同期待ちのテンソルデータが存在する場合、テンソルデータの記述子、および、第2のプロセッサ自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。当該テンソルデータの記述子および同期可能データ量に基づいて、第2のプロセッサは、記述子同期要求命令を生成してステップS32eにおいて当該命令を送信できる。当該記述子同期要求命令は、記述子の識別子を含んでもよく、記述子の内容およびテンソルデータのデータ特徴の中の少なくとも一つは、第1のプロセッサを指示して前記第1のプロセッサが当該命令に基づいて同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定するようにするために使用される。
可能な一実現形態において、第1のプロセッサは、記述子同期要求命令を受信した場合、当該命令を解析して、同期待ちのテンソルデータの記述子および同期可能データ量を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、記述子同期要求命令中には、例えば、当該一部のサブデータの記述子内容または記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。
このような方式によって、受信側によりテンソルデータの一部の同期要求を開始して、送信側が今回同期するサブデータを確定することができて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの記述子および第1のサブデータ記述子に基づいて同期命令を生成して送信できる。第2のプロセッサは、当該記述子同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータの記述子および今回同期する当該テンソルデータの第1のサブデータを確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、記述子同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期の送信側に同期待ちのテンソルデータがあり、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、テンソルデータの一部の同期を実行するように、送信側により、受信側の状態を照会して、データ同期の受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量を確定できる。
可能な一実現形態において、データ同期方法をさらに提供し、第1のプロセッサに適用され、当該方法は、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令であって、前記記述子の識別子及び/又は前記記述子の内容を含む状態照会命令を、生成することと、前記状態照会命令を第2のプロセッサに送信することと、を含む。
例を挙げると、データ同期の送信側に同期待ちのテンソルデータがある場合、例えば、第1のプロセッサが一つの演算を完成して演算結果(テンソルデータ)を得た場合、テンソルデータの一部の同期を実行するように、送信側により、受信側の状態を照会して、データ同期の受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量を確定できる。複数のプロセッサ中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、第2のプロセッサを指示して前記第2のプロセッサが自身の状態(すなわち、テンソルデータに対する同期可能データ量)を確定して返信するように、第1のプロセッサは、同期待ちのテンソルデータの記述子に基づいて、状態照会命令を生成できる。当該状態照会命令は、同期待ちのテンソルデータの記述子の識別子及び/又は記述子の内容を含んでもよい。
可能な一実現形態において、第1のプロセッサは、状態照会命令を第2のプロセッサに送信できる。第2のプロセッサは、当該状態照会命令を受信した後、当該命令を解析することによって、記述子の識別子及び/又は記述子の内容を確定できる。記述子の識別子及び/又は記述子の内容に基づいて、第2のプロセッサは、同期待ちのテンソルデータを確定し、さらに当該テンソルデータに割り当てることができる空間を確定して、当該テンソルデータに対する同期可能データ量を確定できる。当該テンソルデータに対する同期可能データ量および記述子に基づいて、第1のプロセッサが同期待ちのテンソルデータの記述子および今回同期する同期可能データ量を確定できるように、第2のプロセッサは、同期状態命令を生成して送信する。
このような方式によって、送信側と受信側との間の一部のデータ同期を実現するように、データ同期の送信側により受信側の状態を能動的に照会できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信することと、をさらに含む。
例を挙げると、第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、当該命令を解析して当該命令の内容(例えば、記述子の識別子、同期可能データ量など)を得る。記述子の識別子に基づいて、同期待ちのテンソルデータの記述子を確定することによって、同期待ちのテンソルデータを確定し、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期状態命令には、例えば、当該一部のサブデータの記述子内容または記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。第1のプロセッサは、当該一部のデータの範囲に基づいて同期待ちの第1のサブデータを直接確定できる。
可能な一実現形態において、第1のプロセッサは、第1のサブデータに基づいて記述子同期命令を生成して前記記述子同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータの記述子の識別子および第1のサブデータが含まれてもよい。第2のプロセッサは、記述子同期命令を受信した後、当該命令を解析して同期待ちのテンソルデータの記述子およびテンソルデータの第1のサブデータを確定し、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、同期状態命令中の記述子に基づいてテンソルデータを確定し、受信側の同期可能データ量に基づいて今回同期するサブデータを確定し、、受信側が今回同期するサブデータを取得するように、当該サブデータ記述子に基づいて同期命令を生成して送信することにより、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、同期状態命令は、記述子の識別子を含む。前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定するステップは、
前記同期状態命令を解析して、前記記述子の識別子および同期可能データ量を得ることと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含んでもよい。
例を挙げると、同期状態命令中には、記述子の識別子(例えば、識別子がTR1である)および同期可能データ量が含まれてもよい。第1のプロセッサは、同期状態命令を解析して記述子の識別子および同期可能データ量を得、さらに記述子の識別子に基づいて、同期待ちのテンソルデータの記述子を確定できる。
このような方式によって、同期の際に伝送するデータ量を削減して、処理効率を向上させることができる。
可能な一実現形態において、前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令中のテンソルデータの記述子および同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定するステップは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期状態命令中の同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、当第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定し、第2のサブデータおよび同期状態命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて記述子同期命令を生成して送信することで、第2のプロセッサがテンソルデータの第1のサブデータの同期を実現するようにした後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回に第2のプロセッサの状態を照会して第2のプロセッサの同期状態命令を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期方法をさらに提供し、第1のプロセッサに適用され、当該方法は、
第1のプロセッサからの状態照会命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定することと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための、同期状態命令を生成することと、
前記同期状態命令を前記第1のプロセッサに送信することと、を含む。
例を挙げると、データ同期の送信側に同期待ちのテンソルデータがある場合、送信側により受信側の状態を照会してもよい。第1のプロセッサ(送信側)は、状態照会命令を生成して送信し、第2のプロセッサは当該状態照会命令を受信した場合、当該命令を解析して、既に同期待ちのテンソルデータの記述子を確定した。
可能な一実現形態において、第2のプロセッサは、テンソルデータの一部の同期を実行するように、当該記述子に基づいて同期待ちのテンソルデータを確定し、自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。
可能な一実現形態において、第1のプロセッサを指示して前記第1のプロセッサが同期待ちのテンソルデータの記述子および今回同期する同期可能データ量を確定するように、第2のプロセッサは、確定された同期可能データ量および当該テンソルデータの記述子に基づいて、同期状態命令を生成して第1のプロセッサに送信するすることができる。第1のプロセッサは、今回同期できる一部のデータ(すなわち、第1のサブデータ)を確定した後、記述子同期命令を生成し、前記記述子同期命令を第2のプロセッサに送信する。当該命令中には、同期待ちのテンソルデータの記述子の識別子および第1のサブデータが含まれてもよい。
このような方式によって、送信側により受信側の状態を照会し、受信側は、状態照会命令を受信した後に自身の状態(すなわち、同期可能データ量である)を確定して返信し、対話を通じてテンソルデータの一部の同期を実現して、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第2のプロセッサは、記述子同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータの記述子および今回同期する当該テンソルデータの第1のサブデータを確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、記述子同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサと接続された外部メモリ(オフチップメモリ)中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタ中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタ中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
本発明の実施例に係るデータ同期方法によると、データ同期の受信側空間が不足である場合、テンソルデータの一部の同期を実現し、複数回の一部の同期によって全体的なテンソルデータの同期を実現できることによって、空間が不足である場合テンソルデータ全体的な同期に失敗するかまたは同期が遅延されるなどの問題を回避して、データ同期の効率を向上させることができ、テンソルデータの形状を示す記述子が設定されており、データ同期過程で記述子に基づいてテンソルデータを確定することによって、同期オーバーヘッドを削減して、データアクセスの複雑度を低下させた。
説明する必要があるのは、前述の各方法の実施例において、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明は説明された動作の順序に限定されないし、なぜなら、本発明によると、いくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきである。次に、当業者は、明細書に説明された実施例は、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
さらに説明する必要があるのは、フローチャートでの各ステップは矢印に従って順に示したが、これらのステップは必ずとして矢印が示す順序に従って順に実行する必要がない。本明細書に明確な説明がない限り、これらのステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に従って実行してもよい。さらに、フローチャートでの少なくとも一部ステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
図3e2は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第1のプロセッサに適用され、図3e2に示されたように、当該データ同期装置は、
前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量を確定するための記述子およびデータ量確定モジュール51eと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するためのサブデータ確定モジュール52eと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュール53eと、を備える。
可能な一実現形態において、前記サブデータ確定モジュールは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
可能な一実現形態において、前記記述子同期要求命令は、記述子の識別子を含み、ここで、前記記述子およびデータ量確定モジュールは、
前記記述子同期要求命令を解析して、前記記述子の識別子および同期可能データ量を得るための第1の解析サブモジュールと、
第1の前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定するための第1の記述子確定サブモジュールと、を備える。
可能な一実現形態において、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、ここで、前記記述子およびデータ量確定モジュールは、
前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を得るための第2の解析サブモジュールと、
前記テンソルデータのデータ特徴に基づいて、前記テンソルデータの記述子を確定するための第2の記述子確定サブモジュールと、を備える。
図3e3は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3e3に示されたように、当該データ同期装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが記述子同期要求命令に従って同期待ちのテンソルデータの記述子、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための記述子同期要求命令を生成するための要求命令生成モジュール61eと、
前記記述子同期要求命令を前記第1のプロセッサに送信するための要求命令送信モジュール62eと、を備える。
可能な一実現形態において、前記装置は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定するための記述子およびサブデータ確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
上記の装置の実施例は、ただ模式的なもののであり、本発明の装置はさらに他の方式によって実現されてもよいことを理解すべきである。例えば、上記の実施例中の前記ユニット/モジュールの区分けは、ただ論理機能に基づく区分けであり、実際に実現するときに他の区分け方式があってもよい。例えば、複数のユニット、モジュール、または、コンポーネントを、組み合わせたり、もう一つのシステムに統合したり、いくつかの特徴を省略するか実行しないことができる。
また、特に説明しない限り、本発明の各実施例中の各機能ユニット/モジュールを一つのユニット/モジュールに統合してもよいし、各ユニット/モジュールが単独に物理的に存在してもよいし、二つまたは二つの以上ユニット/モジュールを一つに統合してもよい。上記の統合のユニット/モジュールを、ハードウェアの形式で実現してもよいし、ソフトウェアプログラムモジュールの形式で実現してもよい。
前記統合されたユニット/モジュールをハードウェアの形式で実現する場合、当該ハードウェアは、デジタル回路、アナログ回路などであってもよい。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは例えば、CPU、GPU、FPGA、DSP、ASICなどの、いかなる適当なハードウェアプロセッサであってもよい。特に説明しない限り、前記記憶ユニットは、例えば、抵抗性ランダムアクセスメモリRRAM(Resistive Random Access Memory)、動的ランダムアクセスメモリDRAM(DynaMic Random Access Memory)、静的ランダムアクセスメモリSRAM(Static Random乃至Access Memory)、拡張動的ランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM(High-Bandwidth Memory)、ハイブリッドストレージキューブHMC(Hybrid Memory Cube)などの、いかなる適当な磁気記憶媒体または光磁気記憶媒体であってもよい。
前記統合のユニット/モジュールがソフトウェアプログラムモジュールの形式で実現され、また独立した製品として販売または使用される場合、一つのコンピュータ読み取り可能なメモリに記憶できる。このような理解に基づいて、本発明の技術案は、本質的に、または、先行技術に寄与する一部または当該技術案の全部または一部は、ソフトウェア製品の形式で具体化されることができる。当該コンピュータソフトウェア製品は、一つのメモリに記憶され、一つのコンピュータデバイス(パーソナルコンピュータ、サーバ、または、ネットワークデバイスなどであってもよい)に本発明の各実施例に記載の方法の全部または一部のステップを実行させるためのいくつかの命令を含む。前述のメモリは、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードを記憶できる様々な媒体を含む。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
上記の実施例において、各実施例に対する説明にはそれぞれ焦点が当てられているが、特定の実施例で詳細に説明されていない部分については、他の実施例の関連する説明を参照することができる。上記の実施例の各技術的特徴は、任意の組み合わせることができ、説明を簡潔にするため、上記の実施例中の各技術的特徴のすべての可能の組み合わせに対して説明されていない。ただし、これら技術的特徴の組み合わせに矛盾がない限り、すべて本明細書に記載の範囲と見なされるべきである。
前述の内容は、次の条項に従ってよりよく理解できる。
A1、データ同期方法であって、前記方法は、第1のプロセッサに適用され、前記方法は、
第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量を確定することと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように,前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信することと、を含む。
A2、請求項A1に記載の方法であって、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含む。
A3、請求項A1またはA2に記載の方法であって、前記方法は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
A4、請求項A1乃至A3の中のいずれか1項に記載の方法であって、前記記述子同期要求命令は、記述子の識別子を含み、
ここで、前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータに対する同期可能データ量を確定することは、
前記記述子同期要求命令を解析して、前記記述子の識別子および同期可能データ量を得ることと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定することと、を含む。
A5、請求項A1乃至A3の中のいずれか1項に記載の方法であって、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、
ここで、前記第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータに対する同期可能データ量を確定することは、
前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることと、
前記テンソルデータのデータ特徴に基づいて、前記テンソルデータの記述子を確定することと、を含む。
A6、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記記述子同期要求命令に従って同期待ちのテンソルデータの記述子、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための記述子同期要求命令を生成することと、
前記記述子同期要求命令を前記第1のプロセッサに送信することと、を含む。
A7、請求項A6に記載の方法であって、前記方法は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
A8、データ同期装置であって、前記装置は、第1のプロセッサに適用され、前記装置は、
第2のプロセッサからの記述子同期要求命令を受信した場合、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量を確定するための記述子およびデータ量確定モジュールと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するためのサブデータ確定モジュールと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように,前記第1のサブデータに基づいて、記述子同期命令を生成して前記記述子同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュールと、を備える。
A9、請求項A8に記載の装置であって、前記サブデータ確定モジュールは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
A10、請求項A8またはA9に記載の装置であって、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
A11、請求項A8乃至A10の中のいずれか1項に記載の装置であって、前記記述子同期要求命令は、記述子の識別子を含み、ここで、前記記述子およびデータ量確定モジュールは、
前記記述子同期要求命令を解析して、前記記述子の識別子および同期可能データ量を得るための第1の解析サブモジュールと、
前記記述子の識別子に基づいて、前記同期待ちのテンソルデータの記述子を確定するための記述子確定サブモジュールと、を備える。
A12、請求項A8乃至A10の中のいずれか1項に記載の装置であって、前記記述子同期要求命令は、前記同期待ちのテンソルデータのデータ特徴を含み、ここで、前記記述子およびデータ量確定モジュールは、
前記記述子同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を得るための第2の解析サブモジュールと、
前記テンソルデータのデータ特徴に基づいて、前記テンソルデータの記述子を確定するための第2の記述子確定サブモジュールと、を備える。
A13、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子、および、前記テンソルデータに対する同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記記述子同期要求命令に従って同期待ちのテンソルデータの記述子、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための記述子同期要求命令を生成するための要求命令生成モジュールと、
前記記述子同期要求命令を前記第1のプロセッサに送信するための要求命令送信モジュールと、を備える。
A14、請求項A13に記載の装置であって、前記装置は、
前記第1のプロセッサからの記述子同期命令を受信した場合、同期待ちのテンソルデータの記述子および前記テンソルデータの第1のサブデータを確定するための記述子およびサブデータ確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
A15、人工知能チップであって、前記チップは、請求項A8乃至A14の中のいずれか1項に記載のデータ同期装置を備える。
A16、電子デバイスであって、前記電子デバイスは、請求項A15に記載の人工知能チップを備える。
A17、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A15に記載の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A18、請求項A17に記載のボードカードであって、前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、前記インターフェース装置は、標準PCIEインターフェースである。
人工知能技術の継続的な発展に伴って、その応用分野はますます広範になり、画像認識、音声認識、自然言語処理などの分野で十分に適用されている。ただし、人工知能アルゴリズムの複雑度の増大に伴って、処理する必要のあるデータ量とデータ次元とがいずれも継続的に増加しており、通常、マルチコア及び/又はマルチチップのデータ処理が必要である。コア間またはチップ間のデータ同期を実行する場合、関連技術を使用する同期方式は同期オーバーヘッドがより大きく、処理効率がより低い。
本発明の実施例によると、データ同期方法が提供される。図1hは、本発明の実施例に係るデータ同期方法を示すフローチャートである。図1hに示されたように、当該方法は、第1のプロセッサ(処理システム中の任意の一つのプロセッサ)に適用され、当該方法は、以下のステップを含む。
ステップS11hにおいて、第2のプロセッサからの同期要求命令を受信した場合、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を得、
ステップS12hにおいて、前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定し、
ステップS13hにおいて、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定し、
ステップS14hにおいて、前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信する。
例を挙げると、同期待ちのデータは、N次元のテンソルデータ(Nは、ゼロ以上の整数であり、例えば、N=1、2、または、3である)を含んでもよい。
可能な一実現形態において、データ処理過程で、複数のプロセッサ(例えば、人工知能チップの複数のコア)間のデータ同期を実行する必要があるかもしれなく、例えば、プロセッサA1の演算結果をもう一つの演算の入力データとしてプロセッサA2に同期させる。この場合、記述子に基づくデータ同期メカニズムを使用してデータ同期を実現できる。
可能な一実現形態において、各プロセッサの非共有記憶空間での、同期待ちのテンソルデータに割り当てることができる空間が制限されて、テンソルデータの全体的な同期が実現されない。この場合、テンソルデータの一部の同期を実行し、複数回の一部の同期によって全体的なテンソルデータの同期過程を実現できる。
可能な一実現形態において、データ同期の受信側により、テンソルデータの一部に対する同期要求を開始させることができ、すなわち、受信側が同期要求命令を発し、当該命令中には、同期待ちのテンソルデータを示すデータ特徴、および、当該テンソルデータに対する同期可能データ量、すなわち受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量が含まれてもよい。
可能な一実現形態において、複数のプロセッサ中の第1のプロセッサがデータ同期の送信側であり、第2のプロセッサがデータ同期の受信側であると設定できる。第1のプロセッサと第2のプロセッサは、いずれも複数のプロセッサの中の任意のプロセッサであり、第2のプロセッサは、第1のプロセッサのタイプと同一であるかまたは異なってもよく、本発明は、第1のプロセッサと第2のプロセッサのタイプに対して限定しない。
可能な一実現形態において、第1のプロセッサは、ステップS11hにおいて第2のプロセッサからの同期要求命令を受信した場合、当該命令を解析して当該命令の内容、すなわち同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることができる。当該データ特徴は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。
可能な一実現形態において、同期待ちのテンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、第1のプロセッサは、ステップS12hにおいてデータ特徴に基づいて同期待ちのテンソルデータの記述子を確定し、さらにステップS13h中において記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期要求命令中には、例えば、当該一部のサブデータなど記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。第1のプロセッサは、当該一部のデータの範囲に基づいて同期待ちの第1のサブデータを直接確定できる。
可能な一実現形態において、ステップS14hにおいて、第1のプロセッサは、第1のサブデータに基づいて同期命令を生成して前記同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータのデータ特徴および第1のサブデータを含まれてもよい。第2のプロセッサは、同期命令を受信した後、当該命令を解析して当該データ特徴および第1のサブデータを確定することによって、当該データ特徴に基づいて記述子を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、同期要求命令を発して同期一部のデータを能動的に要求することができ、送信側は、受信側の同期可能データ量に基づいて今回同期するサブデータを確定し、受信側が今回同期するサブデータを取得するように、当該サブデータに基づいて同期命令を生成して送信することができて、命令の構成を変更せずに同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、ステップS13hは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、第1のプロセッサは、第2のプロセッサからの同期要求命令を受信した場合、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定でき、第2のサブデータおよび同期要求命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて同期命令生成して送信することによって、第2のプロセッサがテンソルデータの第1のサブデータの同期を実現するようにした後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回に第2のプロセッサの同期要求命令を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
図3f1は、本発明の一実施例に係るデータ同期方法を示すフローチャートである。図3f1に示されたように、当該方法は、第2のプロセッサに適用され、当該方法は、以下のステップを含む。
ステップS31fにおいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を確定し、
ステップS32fにおいて、前記データ特徴および前記同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記同期要求命令に基づいて同期待ちのテンソルデータ、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するようにするための同期要求命令を生成して、前記同期要求命令を第1のプロセッサに送信する。
例を挙げると、データ同期の受信側(すなわち、第2のプロセッサ)により、テンソルデータの一部に対する同期要求を開始することができる。第2のプロセッサ中に同期待ちのテンソルデータが存在する場合、テンソルデータの記述子を確定できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、ステップS31fにおいて、第2のプロセッサは、当該記述子に基づいて、例えば、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つのような、テンソルデータのデータ特徴を確定できる。また、第2のプロセッサは、自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。
可能な一実現形態において、ステップS32fにおいて、当該テンソルデータのデータ特徴および同期可能データ量に基づいて、第2のプロセッサは、同期要求命令を生成して当該命令を送信できる。当該同期要求命令は、第1のプロセッサを指示して前記第1のプロセッサが当該命令に基づいて同期待ちのテンソルデータを確定して前記テンソルデータの第1のサブデータを確定するようにするために使用できる。
可能な一実現形態において、データ同期の受信側(すなわち、第1のプロセッサ)は、同期要求命令を受信した場合、当該命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定し、データ特徴に基づいて同期待ちのテンソルデータの記述子を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、前記同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期待ちの一部のデータを指定して取得するように、同期要求命令中には、例えば、当該一部のサブデータの記述子内容または記憶アドレス範囲などの、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよい。
このような方式によって、受信側によりテンソルデータの一部の同期要求を開始して、送信側が今回同期するサブデータを確定することができて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得ることと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータのデータ特徴および第1のサブデータに基づいて同期命令を生成して送信できる。第2のプロセッサは、当該同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータのデータ特徴および今回同期する当該テンソルデータの第1のサブデータを確定し、データ特徴に基づいて記述子を確定し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上し、命令伝送および処理過程での命令互換性を実現できる。
可能な一実現形態において、データ同期の送信側に同期待ちのテンソルデータがあり、例えば、一つの演算を完成して演算結果(テンソルデータ)を得た場合、送信側により受信側の状態を照会して、データ同期の受信側の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量を確定することによって、テンソルデータの一部の同期を実行する。
可能な一実現形態において、データ同期方法をさらに提供し、第1のプロセッサに適用され、当該方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴を確定することと、
前記テンソルデータのデータ特徴に基づいて、第2のプロセッサを指示して前記第2のプロセッサが前記テンソルデータに対する同期可能データ量を確定し同期状態命令を生成するための状態照会命令を生成して、前記状態照会命令を第2のプロセッサに送信することと、を含む。
例を挙げると、第1のプロセッサは、同期待ちのテンソルデータが存在すると確定した場合、当該テンソルデータの記述子を取得できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、当該テンソルデータの記述子に基づいて、第1のプロセッサは、当該テンソルデータのデータ特徴を確定できる。当該データ特徴は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。
可能な一実現形態において、同期待ちのテンソルデータのデータ特徴は、テンソルデータの識別子、形状、ソース、アドレスなどの情報を含んでもよい。例えば、当該テンソルデータのデータソースはK番目の送信側(K番目のプロセッサ)であり、当該テンソルデータのデータソースは番号200の畳み込み操作の演算結果であり、当該テンソルデータのアドレスは特定のアドレス領域(例えば、アドレスADDR0~ADDR127)であり、当該テンソルデータの形状は指定された形状(例えば、20*10の2次元テンソル)である。当業者は、実際の状況に従って同期待ちのテンソルデータのデータ特徴を設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、当該テンソルデータのデータ特徴に基づいて、第1のプロセッサは、状態照会命令を生成して当該状態照会命令を同期待ちの第2のプロセッサに送信できる。第2のプロセッサ中に当該テンソルデータの情報(例えば、当該同期待ちのテンソルデータを示す記述子が既に登録されている)を既に有すると、第2のプロセッサを指示して当該第2のプロセッサが当該テンソルデータの識別子に基づいて同期待ちのテンソルデータの記述子を確定するように、状態照会命令は、例えば、テンソルデータの識別子のような一部のデータ特徴のみを含んでもよい、第2のプロセッサ中に当該テンソルデータの情報を有さないと、同期命令は、例えば、テンソルデータの識別子および記憶アドレスなどの、より多くのデータ特徴を含んでもよく、第2のプロセッサを指示して当該第2のプロセッサが同期待ちのテンソルデータの記述子を確定するようにすることができる。本発明は、状態照会命令が含む具体的な内容に対して限定しない。
可能な一実現形態において、状態照会命令がテンソルデータの識別子を含むと、第2のプロセッサは、当該識別子に基づいて同期待ちのテンソルデータを確定し、当該同期待ちのテンソルデータを示す記述子を登録するかまたは取得できる。状態照会命令がより多くのデータ特徴(識別子および記憶アドレスなど)を含むと、第2のプロセッサは、命令中のデータ特徴に基づいて当該テンソルデータを示す記述子を登録できる。
可能な一実現形態において、同期待ちのテンソルデータの記述子を確定した後、第2のプロセッサは、記述子に対応するテンソルデータに割り当てすることができる空間を確定し、当該テンソルデータに対する同期可能データ量を確定できる。同期可能データ量およびデータ特徴に基づいて、第2のプロセッサは、同期状態命令を生成して送信することによって、第1のプロセッサが同期待ちのテンソルデータおよび今回同期する同期可能データ量を確定できるようにする。
本発明の実施例に係るデータ同期方法によると、テンソルデータの形状を示す記述子を設定することによって、送信側は、記述子に基づいてテンソルデータのデータ特徴を確定し、データ特徴に基づいて状態照会命令を生成して送信することで、受信側を指示して前記受信側が状態照会命令に基づいて自身状態(すなわち、同期できるデータ量である)をフィードバックするようにすることができて、テンソルデータの一部の同期を実現し、更命令構成を変更しない場合、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第2のプロセッサからの同期状態命令を受信した場合、前記同期状態命令を解析して、同期待ちのテンソルデータのデータ特徴および同期可能データ量を確定することと、
前記データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定することと、
前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信することと、を含む。
例を挙げると、第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、当該命令を解析して当該命令の内容、すなわち同期待ちのテンソルデータのデータ特徴および同期可能データ量を得ることができる。当該データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定することによって、同期待ちのテンソルデータを確定し、且つ、同期可能データ量に基づいて当該テンソルデータ中から、今回同期できる一部のデータである第1のサブデータを確定できる。当該第1のサブデータのデータ量は、同期可能データ量と対応されることができ、例えば、第1のサブデータのデータ量は、前記同期可能データ量以下である。
可能な一実現形態において、当該テンソルデータのすべてのデータがいずれも同期されていないと、第1のサブデータとして、当該テンソルデータ中から同期可能データ量のデータを選択でき、当該テンソルデータの一部のデータが同期されていないし、且つ、同期されていない一部のデータのデータ量が同期可能データ量よりも大きいと、第1のサブデータとして、同期されていない一部のデータ(すなわち、当該テンソルデータの第2のサブデータ)中から同期可能データ量のデータを選択でき、同期されていない一部のデータのデータ量が同期可能データ量以下であると、同期されていない一部のデータを直接第1のサブデータとすることができ、当業者は、実際の状況に従って第1のサブデータを確定でき、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、同期状態命令には、同期待ちのテンソルデータの一部のデータの範囲が含まれてもよく、例えば、当該一部のサブデータなどの記憶アドレス範囲など、同期待ちの一部のデータを指定して取得するようにする。第1のプロセッサは、当該一部のデータの範囲に基づいて同期待ちの第1のサブデータを直接確定できる。
可能な一実現形態において、第1のプロセッサは、第1のサブデータに基づいて同期命令を生成して前記同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータのデータ特徴および第1のサブデータを含まれてもよい。第2のプロセッサは、同期命令を受信した後、当該命令を解析して同期待ちのテンソルデータのデータ特徴およびテンソルデータの第1のサブデータを確定し、データ特徴に基づいて記述子を確定し、記述子に基づいて同期待ちのテンソルデータを確定し、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、送信側からの同期状態命令に基づいてテンソルデータの記述子および同期可能データ量を確定し、同期可能データ量に基づいて今回同期するサブデータを確定し、受信側が今回同期するサブデータを取得するように、当該サブデータに基づいて同期命令を生成して送信することができて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、前記記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定するステップは、
前記記述子に基づいて、同期待ちのテンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含んでもよい。
例を挙げると、テンソルデータ中のデータの状態を設定でき、既に同期された一部のデータを同期済みに設定し、同期されていない一部のデータを同期待ちに設定する。この場合、第1のプロセッサは、第2のプロセッサからの同期状態命令を受信した場合、テンソルデータ中のデータの状態に基づいて、同期待ち状態にいる第2のサブデータを確定し、第2のサブデータおよび同期状態命令が示す同期可能データ量に基づいて、今回同期する第1のサブデータを確定できる。
可能な一実現形態において、第2のサブデータのデータ量が同期可能データ量よりも大きいと、第2のサブデータ中から今回同期する第1のサブデータを選択でき、第2のサブデータのデータ量が同期可能データ量以下であると、第2のサブデータを直接第1のサブデータとすることができる。
このような方式によって、テンソルデータの一部の同期を実現するように、今回同期する一部のデータを確定できて、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
例を挙げると、第1のプロセッサは、テンソルデータの第1のサブデータに基づいて同期命令生成して送信することによって、第2のプロセッサがテンソルデータの第1のサブデータの同期を実現するようにした後、第1のプロセッサは、テンソルデータ中のデータの状態を変更でき、すなわち、第1のサブデータの状態を同期待ち状態から同期済み状態に変更できる。このように、次回に第2のプロセッサの状態を照会して第2のプロセッサの同期状態命令を受信した場合、同期待ち状態にいる一部のデータ中から次回同期するデータを確定できることによって、データの繰り返し同期を回避して、データ同期の効率を向上させることができる。
可能な一実現形態において、データ同期方法をさらに提供し、第2のプロセッサに適用され、当該方法は、
第1のプロセッサからの状態照会命令を受信した場合、前記状態照会命令を解析して、同期待ちのテンソルデータのデータ特徴を得ることと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータに対する同期可能データ量を確定することと、
前記テンソルデータのデータ特徴および前記同期可能データ量に基づいて、前記第1のプロセッサを指示して前記第1のプロセッサが前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するための同期状態命令を生成して、前記同期状態命令を前記第1のプロセッサに送信することと、を含む。
例を挙げると、データ同期の送信側に同期待ちのテンソルデータがある場合、送信側は、受信側の状態を照会できる。第1のプロセッサ(送信側)は、状態照会命令を生成して送信し、第2のプロセッサは、当該状態照会命令を受信した場合、当該命令を解析して、既に同期待ちのテンソルデータのデータ特徴を確定した。当該データ特徴は、テンソルデータの識別子(例えば、データ番号)、形状、ソース、記憶アドレスなどの情報の中の少なくとも一つを含んでもよい。
可能な一実現形態において、第2のプロセッサは、データ特徴に基づいて、同期待ちのテンソルデータの記述子を確定できる。当該記述子は、既に登録(作成)された当該テンソルデータの形状を示すための記述子であってもよいし、当該テンソルデータの形状パラメータに基づいて新たな記述子を登録(作成)してもよく、本発明はこれに対して限定しない。
可能な一実現形態において、第2のプロセッサは、テンソルデータの一部の同期を実行するように、当該記述子に基づいて同期待ちのテンソルデータを確定し、自身の非共有記憶空間での、当該テンソルデータに割り当てることができる空間の収納可能のデータ量、すなわち同期可能データ量を確定できる。
可能な一実現形態において、第2のプロセッサは、確定された同期可能データ量および当該テンソルデータのデータ特徴に基づいて、第1のプロセッサを指示して前記第1のプロセッサが今回同期する同期可能データ量を確定するように、同期状態命令を生成して第1のプロセッサに送信することができる。第1のプロセッサは、今回同期できる一部のデータ(すなわち、第1のサブデータ)を確定した後、同期命令を生成して前記同期命令を第2のプロセッサに送信できる。当該命令中には、同期待ちのテンソルデータのデータ特徴および第1のサブデータを含まれてもよい。
このような方式によって、送信側により受信側の状態を照会し、受信側は、状態照会命令を受信した後に自身の状態(すなわち、同期可能データ量である)を確定して返信し、対話を通じてテンソルデータの一部の同期を実現して、データ同期の効率を向上させることができる。
可能な一実現形態において、前記方法は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得ることと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
例を挙げると、第2のプロセッサは、同期命令を受信した場合、当該命令を解析して同期待ちのテンソルデータのデータ特徴および今回同期する当該テンソルデータの第1のサブデータを確定し、当該データ特徴に基づいて同期待ちのテンソルデータの記述子を検索し、さらに記述子に基づいて同期待ちのテンソルデータを確定し、且つ、テンソルデータの第1のサブデータを自身の非共有記憶空間中に記憶できる。
このような方式によって、受信側は、同期命令に基づいて記述子を確定して今回同期するサブデータを取得できて、同期オーバーヘッドを軽減し、データ同期の効率を向上させることができる。
可能な一実現形態において、記述子の識別子と内容は、記述子記憶空間に記憶でき、当該記述子記憶空間は、プロセッサの内部メモリ(例えば、レジスタ、オンチップSRAM、または、他のメディアキャッシュなど)中の記憶空間であってもよい。記述子が示すテンソルデータのデータ記憶空間は、プロセッサの内部メモリ(例えば、オンチップキャッシュ)、または、プロセッサと接続された外部メモリ(オフチップメモリ)中の記憶空間であってもよい。データ記憶空間におけるデータアドレスは、実際の物理アドレスまたは仮想アドレスであってもよい。本発明は、記述子記憶空間とデータ記憶空間の位置およびデータアドレスのタイプに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、同一の領域に位置することができ、例えば、オンチップキャッシュの一つの連続領域を使用して記述子の関連内容を記憶することができ、そのアドレスがADDR0~ADDR1023であり、ここで、アドレスADDR0~ADDR31が記述子の識別子を記憶するために使用され、アドレスADDR32~ADDR63が記述子の内容を記憶するために使用され、アドレスADDR64~ADDR1023が記述子が示すテンソルデータを記憶するために使用されることができる。ここで、アドレスADDRは、1ビットまたは1バイトに限らず、ここは一つのアドレスを示すためのものであり、一つのアドレス単位である。当業者は、実際の状況に従って記憶領域およびそのアドレスを確定でき、本発明はこれに対して限定しない。
可能な一実現形態において、記述子の識別子、内容、および、記述子が示すテンソルデータは、内部メモリの異なる領域に分けて記憶でき、例えば、レジスタを記述子記憶空間として、レジスタ中に記述子の識別子および内容を記憶し、オンチップキャッシュをデータ記憶空間として、記述子が示すテンソルデータを記憶できる。
可能な一実現形態において、記述子が専用する専用レジスタ(SR)を設置してもよく、記述子中のデータは、即時値にすることも、専用レジスタ中から取得することもできる。レジスタを使用して記述子の識別子と内容を記憶する場合、レジスタの番号を使用して記述子の識別子を表すことができ、例えば、レジスタの番号が0であると、記憶した記述子の識別子が0である。レジスタ中の記述子が有効であると、記述子が示すテンソルデータの大きさに基づいて、キャッシュ空間中で一つの領域を割り当てて(例えば、キャッシュ中でテンソルデータ毎に一つのテンソルキャッシュユニットを作成して)当該テンソルデータを記憶するために使用できる。予め設定したキャッシュ空間を使用して当該テンソルデータを記憶してもよく、本発明はこれに対して限定しないことを理解すべきである。
可能な一実現形態において、記述子の識別子および内容を内部メモリに記憶し、記述子が示すテンソルデータを外部メモリに記憶できる。例えば、オンチップに記述子の識別子および内容を記憶し、オフチップに記述子が示すテンソルデータを記憶する方式を使用できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスは、固定アドレスであってもよい。例えば、テンソルデータに単独のデータ記憶空間を区分けでき、各テンソルデータのデータ記憶空間における開始アドレスは記述子の識別子と1対1に対応される。このような場合、プロセッサは記述子の内容に基づいてテンソルデータのデータアドレスを確定できる。
可能な一実現形態において、記述子に対応するデータ記憶空間のデータアドレスが可変アドレスである場合、前記記述子はN次元のテンソルデータのアドレスを表すために使用されることもでき、ここで、前記記述子の内容はテンソルデータのアドレスを表す少なくとも一つのアドレスパラメータをさらに含んでもよい。例えば、テンソルデータが3次元データであり、記述子が当該テンソルデータのアドレスを指す場合、記述子の内容は、テンソルデータの開始アドレスなどの、当該テンソルデータのアドレスを表す一つのアドレスパラメータを含んでもよく、テンソルデータの開始アドレス+アドレスオフセット量またはテンソルデータの各次元に基づくアドレスパラメータなどの、当該テンソルデータのアドレスの複数のアドレスパラメータを含んでもよい。当業者は、実際の必要に従ってアドレスパラメータを設定でき、本発明はこれに対して限定しない。
可能な一実現形態において、前記テンソルデータのアドレスパラメータは、前記記述子のデータ基準点の前記テンソルデータのデータ記憶空間における基準アドレスを含む。ここで、基準アドレスは、データ基準点の変化に従って異なってもよい。本発明は、データ基準点の選択に対して限定しない。
可能な一実現形態において、前記基準アドレスは、前記データ記憶空間の開始アドレスを含んでもよい。記述子のデータ基準点がデータ記憶空間の1番目のデータブロックである場合、記述子の基準アドレスがデータ記憶空間の開始アドレスである。記述子のデータ基準点がデータ記憶空間中の1番目のデータブロック以外の他のデータである場合、記述子の基準アドレスが当該データブロックのデータ記憶空間における物理アドレスである。
可能な一実現形態において、前記テンソルデータの形状パラメータは、前記テンソルデータのデータ記憶空間のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるサイズ、前記記憶領域のN個の次元方向の中の少なくとも一つの方向におけるオフセット量、N個の次元方向の対角位置にいる少なくとも二つの頂点の前記データ基準点に対する位置、および、前記記述子が示すテンソルデータのデータ記述位置とデータアドレスとの間のマッピング関係の中の少なくとも一つを含む。ここで、データ記述位置は、記述子が示すテンソルデータ中の点または領域のマッピング位置であり、例えば、テンソルデータが3次元データである場合、記述子は、3次元空間座標(x、y、z)を使用して当該テンソルデータの形状を表すことができ、当該テンソルデータのデータ記述位置は、3次元空間座標(x、y、z)を使用して表した、当該テンソルデータは3次元空間における点または領域の位置にマッピングすることができる。
当業者は、実際の状況に従ってテンソルデータを表す形状パラメータを選択でき、本発明はこれに対して限定しないことを理解すべきである。
本発明の実施例に係るデータ同期方法によると、データ同期の受信側空間が不足である場合、テンソルデータの一部の同期を実現し、複数回の一部の同期によって全体的なテンソルデータの同期を実現できることによって、空間が不足である場合テンソルデータ全体的な同期に失敗するかまたは同期が遅延されるなどの問題を回避して、データ同期の効率を向上させることができ、且つ、テンソルデータの形状を示す記述子が設定されており、データ同期過程で記述子に基づいてテンソルデータを確定することによって、同期オーバーヘッドを削減して、データアクセスの複雑度を低下させて、命令伝送および処理過程での命令互換性を実現できる。
説明する必要があるのは、前述の各方法の実施例について、簡単に説明するために、それらをいずれも一連の動作の組み合わせとして表現したが、当業者は、本発明は説明された動作の順序に限定されないし、なぜなら、本発明によると、いくつかのステップを他の順序で実行するかまたは同時に実行できることを了解すべきである。次に、当業者は、明細書に説明された実施例は、いずれもオプションとする実施例に属し、関わる動作およびモジュールは必ずとして本発明にとって必須なものではないことも理解すべきである。
さらに説明する必要があるのは、フローチャートでの各ステップは矢印に従って順に示したが、これらのステップは必ずとして矢印が示す順序に従って順に実行する必要がない。本明細書に明確な説明がない限り、これらのステップの実行に対して厳密の順序を限定しなく、これらのステップを他の順序に従って実行してもよい。さらに、フローチャートでの少なくとも一部のステップは、複数のサブステップまたは複数の段階を含んでもよく、これらのサブステップまたは段階は、必ずとして一つのタイミングで実行を完成させる必要がなく、異なるタイミングで実行させてもよいし、これらのサブステップまたは段階の実行順序も必ずとして順に実行させる必要がなく、他のステップまたは他のステップのサブステップまたは段階の少なくとも一部と交互または交替に実行させることができる。
図3f2は、本発明の一実施例に係るデータ同期方法を示すフローチャートである。当該データ同期装置は、第1のプロセッサに適用され、図3f2に示されたように、当該データ同期装置は、
第2のプロセッサからの同期要求命令を受信した場合、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を得るための要求命令解析モジュール51fと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための第1の記述子確定モジュール52fと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するためのデータ確定モジュール53fと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように、前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュール54fと、を備える。
可能な一実現形態において、前記データ確定モジュールは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
可能な一実現形態において、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
図3f3は、本発明の実施例に係るデータ同期装置を示すブロック図である。当該データ同期装置は、第2のプロセッサに適用され、図3f3に示されたように、当該データ同期装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を確定するための特徴およびデータ量確定モジュール61fと、
前記データ特徴および前記同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記同期要求命令に基づいて同期待ちのテンソルデータ、および。前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための同期要求命令を生成して、前記同期要求命令を第1のプロセッサに送信するための要求命令生成および送信モジュール62fと、を備える。
可能な一実現形態において、前記装置は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得るための同期命令解析モジュールと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定するための第2の記述子確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
上記の装置の実施例は、ただ模式的なもののであり、本発明の装置はさらに他の方式によって実現されてもよいことを理解すべきである。例えば、上記の実施例中の前記ユニット/モジュールの区分けは、ただ論理機能に基づく区分けであり、実際に実現するときに他の区分け方式があってもよい。例えば、複数のユニット、モジュール、または、コンポーネントを、組み合わせたり、もう一つのシステムに統合したり、いくつかの特徴を省略するか実行しないことができる。
また、特に説明しない限り、本発明の各実施例中の各機能ユニット/モジュールを一つのユニット/モジュールに統合してもよいし、各ユニット/モジュールが単独に物理的に存在してもよいし、二つまたは二つの以上のユニット/モジュールを一つに統合してもよい。上記の統合のユニット/モジュールを、ハードウェアの形式で実現してもよいし、ソフトウェアプログラムモジュールの形式で実現してもよい。
前記統合されたユニット/モジュールをハードウェアの形式で実現する場合、当該ハードウェアは、デジタル回路、アナログ回路などであってもよい。ハードウェア構造の物理的な実現は、トランジスタ、メモリスタなどを含むが、これらに限定されない。特に説明しない限り、前記人工知能プロセッサは、例えば、CPU、GPU、FPGA、DSP、ASICなどの、いかなる適当なハードウェアプロセッサであってもよい。特に説明しない限り、前記記憶ユニットは、例えば、抵抗性ランダムアクセスメモリRRAM(Resistive Random Access Memory)、動的ランダムアクセスメモリDRAM(DynaMic Random Access Memory)、静的ランダムアクセスメモリSRAM(Static Random乃至Access Memory)、拡張動的ランダムアクセスメモリEDRAM(Enhanced Dynamic Random Access Memory)、高帯域幅メモリHBM(High-Bandwidth Memory)、ハイブリッドストレージキューブHMC(Hybrid Memory Cube)などの、いかなる適当な磁気記憶媒体または光磁気記憶媒体であってもよい。
前記統合のユニット/モジュールがソフトウェアプログラムモジュールの形式で実現され、また独立した製品として販売または使用される場合、一つのコンピュータ読み取り可能なメモリに記憶できる。このような理解に基づいて、本発明の技術案は、本質的に、または、先行技術に寄与する一部または当該技術案の全部または一部は、ソフトウェア製品の形式で具体化されることができる。当該コンピュータソフトウェア製品は、一つのメモリに記憶され、一つのコンピュータデバイス(パーソナルコンピュータ、サーバ、または、ネットワークデバイスなどであってもよい)に本発明の各実施例に記載の方法の全部または一部のステップを実行させるためのいくつかの命令を含む。前述のメモリは、Uディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、モバイルハードディスク、磁気ディスクまたは光ディスクなどの、プログラムコードを記憶できる様々な媒体を含む。
可能な一実現形態において、人工知能チップをさらに開示し、前記人工知能チップは上記のデータ同期装置を備える。
可能な一実現形態において、ボードカードをさらに開示し、当該ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、上記の人工知能チップと、を備え、ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、前記記憶デバイスは、データを記憶し、前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
上記の実施例において、各実施例に対する説明にはそれぞれ焦点が当てられているが、特定の実施例で詳細に説明されていない部分については、他の実施例の関連する説明を参照することができる。上記の実施例の各技術的特徴は、任意の組み合わせることができ、説明を簡潔にするため、上記の実施例中の各技術的特徴のすべての可能の組み合わせに対して説明されていない。ただし、これらの技術的特徴の組み合わせに矛盾がない限り、すべて本明細書に記載の範囲と見なされるべきである。
前述の内容は、次の条項に従ってよりよく理解できる。
A1、データ同期方法であって、前記方法は、第1のプロセッサに適用され、前記方法は、
第2のプロセッサからの同期要求命令を受信した場合、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を得ることと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定することと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定することと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように,前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信することと、を含む。
A2、請求項A1に記載の方法であって、前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータを確定することは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定することと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定することと、を含む。
A3、請求項A1またはA2に記載の方法であって、前記方法は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更することをさらに含む。
A4、データ同期方法であって、前記方法は、第2のプロセッサに適用され、前記方法は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を確定することと、
前記データ特徴および前記同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記同期要求命令に基づいて同期待ちのテンソルデータ、および,前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための同期要求命令を生成して、前記同期要求命令を第1のプロセッサに送信することと、を含む。
A5、請求項A4に記載の方法であって、前記方法は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得ることと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定することと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶することと、をさらに含む。
A6、データ同期装置であって、前記装置は、第1のプロセッサに適用され、前記装置は、
第2のプロセッサからの同期要求命令を受信した場合、前記同期要求命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を得るための要求命令解析モジュールと、
前記データ特徴に基づいて、同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子を、確定するための第1の記述子確定モジュールと、
前記テンソルデータの記述子および前記同期可能データ量に基づいて、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される前記第1のサブデータを、確定するためのデータ確定モジュールと、
前記第2のプロセッサを指示して前記第2のプロセッサが前記第1のサブデータを取得するするように,前記第1のサブデータに基づいて、同期命令を生成して前記同期命令を前記第2のプロセッサに送信するための同期命令生成および送信モジュールと、を備える。
A7、請求項A6に記載の装置であって、前記データ確定モジュールは、
前記テンソルデータの記述子に基づいて、前記テンソルデータおよび前記テンソルデータ中で同期待ち状態にいる第2のサブデータを確定するための第1の確定サブモジュールと、
前記第2のサブデータおよび前記同期可能データ量に基づいて、第1のサブデータを確定するための第2の確定サブモジュールと、を備える。
A8、請求項A6またはA7に記載の装置であって、前記装置は、
前記テンソルデータの第1のサブデータの状態を同期待ち状態から同期済み状態に変更するための状態変更モジュールをさらに備える。
A9、データ同期装置であって、前記装置は、第2のプロセッサに適用され、前記装置は、
同期待ちのテンソルデータの、前記同期待ちのテンソルデータの形状を示すための記述子に基づいて、前記テンソルデータのデータ特徴および前記テンソルデータに対する同期可能データ量を確定するための特徴およびデータ量確定モジュールと、
前記データ特徴および前記同期可能データ量に基づいて、第1のプロセッサを指示して前記第1のプロセッサが前記同期要求命令に基づいて同期待ちのテンソルデータ、および、前記テンソルデータの第1のサブデータであって、データ量が前記同期可能データ量と対応される第1のサブデータを、確定するための同期要求命令を生成して、前記同期要求命令を第1のプロセッサに送信するための要求命令生成および送信モジュールと、を備える。
A10、請求項A9に記載の装置であって、前記装置は、
前記第1のプロセッサからの同期命令を受信した場合、前記同期命令を解析して、同期待ちのテンソルデータのデータ特徴および前記テンソルデータの第1のサブデータを得るための同期命令解析モジュールと、
前記データ特徴に基づいて、前記テンソルデータの記述子を確定するための第2の記述子確定モジュールと、
前記テンソルデータの記述子に基づいて、前記テンソルデータの第1のサブデータを記憶するためのデータ記憶モジュールと、をさらに備える。
A11、人工知能チップであって、前記チップは、請求項A6乃至A10の中のいずれか1項に記載のデータ同期装置を備える。
A12、電子デバイスであって、前記電子デバイスは、請求項A11に記載の人工知能チップを備える。
A13、ボードカードであって、前記ボードカードは、記憶デバイスと、インターフェース装置と、制御デバイスと、請求項A11に記載の人工知能チップと、を備え、
ここで、前記人工知能チップは、前記記憶デバイス、前記制御デバイス、および、前記インターフェース装置とそれぞれ接続され、
前記記憶デバイスは、データを記憶し、
前記インターフェース装置は、前記人工知能チップと外部デバイスとの間のデータ伝送を実現するために使用され、
前記制御デバイスは、前記人工知能チップの状態を監視制御するために使用される。
A14、請求項A13に記載のボードカードであって、
前記記憶デバイスは、複数グループの記憶ユニットを備え、各グループの前記記憶ユニットは、前記人工知能チップとバスを介して接続され、前記記憶ユニットは、DDR SDRAMであり、
前記チップは、DDRコントローラを備えて、各々の前記記憶ユニットのデータ伝送およびデータ記憶に対する制御に使用し、
前記インターフェース装置は、標準PCIEインターフェースである。
以上、本発明の各実施例を既に説明したが、上記の説明は例示的なのものであり、網羅的なものではなく、開示された各実施例に限定されるない。当業者にとって、説明された各実施例の範囲および精神から逸脱することなく、多くの修正および変更はいずれも明らかである。本明細書で所用される用語の選択は、各実施例の原理、実際の適用、または、市場における技術の改善をさらによく解釈すること、または、当業者が本明細書に開示される各実施例を理解できるようにすることを意図している。