【手続補正書】
【提出日】平成31年4月25日(2019.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
Ｎ次元テンソルにアクセスするための命令を処理するための装置であって、
複数のテンソルインデックス要素と、
複数の次元乗数要素とを備え、前記次元乗数要素の各々は、対応するテンソルインデックス要素を有し、前記装置はさらに、
１つ以上のプロセッサを備え、前記１つ以上のプロセッサは、
Ｎ次元テンソルの特定の要素にアクセスするための命令を取得するように構成され、前記Ｎ次元テンソルは、Ｎ個の次元の各々にわたって配置された複数の要素を有し、Ｎは、１以上の整数であり、前記１つ以上のプロセッサはさらに、
前記複数のテンソルインデックス要素のうちの１つ以上のテンソルインデックス要素および前記複数の次元乗数要素のうちの１つ以上の次元乗数要素を用いて、前記特定の要素のアドレスを決定するように構成され、
前記Ｎ次元テンソルの前記特定の要素にアクセスするための前記決定されたアドレスを示すデータを出力するように構成される、装置。
【請求項２】
前記特定の要素の前記アドレスは、前記Ｎ次元テンソルの別の要素からのアドレスオフセットであり、
前記特定の要素の前記アドレスを決定することは、
前記１つ以上のテンソルインデックス要素の各テンソルインデックス要素ごとに、それぞれのテンソルインデックス要素に記憶された値と前記１つ以上の次元乗数要素の前記対応する次元乗数要素に記憶された値とを乗算して、それぞれの乗算された値を生成することと、
前記乗算された値の合計を求めることによって前記アドレスオフセットを決定することとを備える、請求項１に記載の装置。
【請求項３】
前記複数のテンソルインデックス要素は、テンソルインデックス要素のＭ個のグループに配置され、Ｍは、１よりも大きな正の整数であり、
テンソルインデックス要素の各グループは、別個の異なる多次元テンソルに割り当てられる、請求項１または２に記載の装置。
【請求項４】
複数のテンソル境界要素をさらに備え、前記複数のテンソル境界要素の各々は、前記複数のテンソルインデックス要素における対応するテンソルインデックス要素を有する、請求項１〜３のいずれか１項に記載の装置。
【請求項５】
前記命令は、第１のループと前記第１のループの外側ループである第２のループとを含む入れ子ループを処理するための命令を表わし、前記第１のループは、第１のインデックス変数を用いて反復され、前記第２のループは、第２のインデックス変数を用いて反復される、請求項４に記載の装置。
【請求項６】
前記１つ以上のプロセッサはさらに、
前記複数のテンソルインデックス要素、前記複数の次元乗数要素および前記複数のテンソル境界要素に記憶された値を初期化値に設定するように構成される、請求項５に記載の装置。
【請求項７】
前記１つ以上のプロセッサはさらに、
前記複数のテンソル境界要素の第１のテンソル境界要素に記憶された値を、前記第１のループを反復するための前記第１のインデックス変数の上限値に設定するように構成され、
前記複数のテンソル境界要素の第２のテンソル境界要素に記憶された値を、前記第２のループを反復するための前記第２のインデックス変数の上限値に設定するように構成され、
前記複数の次元乗数要素の第１の次元乗数要素に記憶された値を、予め定められた値に設定するように構成され、
前記複数の次元乗数要素の第２の次元乗数要素に記憶された値を、前記第１のインデックス変数の前記上限値に設定するように構成される、請求項５または６に記載の装置。
【請求項８】
前記Ｎ次元テンソルの前記要素の前記アドレスを決定することは、
前記複数のテンソルインデックス要素の第１のテンソルインデックス要素に記憶された値を、前記第１のインデックス変数の現在の値に設定することと、
前記複数のテンソルインデックス要素の第２のテンソルインデックス要素に記憶された値を、前記第２のインデックス変数の現在の値に設定することと、
前記第１の次元乗数要素に記憶された前記値と前記第１のテンソルインデックス要素に記憶された前記値とを乗算して、第１の乗算された値を取得することと、
前記第２の次元乗数要素に記憶された前記値と前記第２のテンソルインデックス要素に記憶された前記値とを乗算して、第２の乗算された値を取得することと、
前記第１の乗算された値および前記第２の乗算された値を少なくとも合計することによって前記アドレスを決定することとを備える、請求項７に記載の装置。
【請求項９】
前記１つ以上のプロセッサはさらに、
前記第１のテンソルインデックス要素に記憶された前記値を更新するための命令を受取るように構成され、
前記第１のテンソルインデックス要素に記憶された前記値を更新するための前記命令を受取った後、前記第１のテンソルインデックス要素に記憶された前記値と前記第１のテンソル境界要素に記憶された前記値との間の差が閾値を満たすことを判断するように構成され、
前記第１のテンソルインデックス要素に記憶された前記値と前記第１のテンソル境界要素に記憶された前記値との間の前記差が前記閾値を満たすと判断したことに応答して、前記第１のテンソルインデックス要素に記憶された前記値を更新するように構成される、請求項８に記載の装置。
【請求項１０】
前記第１のインデックス変数は、前記第１のループが完了するたびに第１のインクリメント値だけインクリメントされ、
前記第１のテンソルインデックス要素に記憶された前記値を更新することは、前記第１のテンソルインデックス要素に記憶された前記値を前記第１のインクリメント値だけインクリメントすることを備える、請求項９に記載の装置。
【請求項１１】
前記１つ以上のプロセッサはさらに、
前記第１のテンソルインデックス要素に記憶された前記値を更新するための命令を受取るように構成され、
前記第１のテンソルインデックス要素に記憶された前記値を更新するための前記命令を受取った後、前記第１のテンソルインデックス要素に記憶された前記値と前記第１のテンソル境界要素に記憶された前記値との間の差が閾値を満たさないことを判断するように構成され、
前記第１のテンソルインデックス要素に記憶された前記値と前記第１のテンソル境界要素に記憶された前記値との間の前記差が前記閾値を満たさないと判断したことに応答して、
前記第１のテンソルインデックス要素に記憶された前記値をリセットするように構成され、
前記第２のテンソルインデックス要素に記憶された前記値を更新するように構成される、請求項８に記載の装置。
【請求項１２】
前記第２のインデックス変数は、前記第２のループが完了するたびに第２のインクリメント値だけインクリメントされ、
前記第２のテンソルインデックス要素に記憶された前記値を更新することは、前記第２のテンソルインデックス要素に記憶された前記値を前記第２のインクリメント値だけインクリメントすることを備える、請求項１１に記載の装置。
【請求項１３】
前記１つ以上のプロセッサは、１つ以上の演算論理ユニットを含む、請求項１〜１２のいずれか１項に記載の装置。
【請求項１４】
前記テンソルインデックス要素および前記次元乗数要素の各々は、レジスタである、請求項１〜１３のいずれか１項に記載の装置。
【請求項１５】
複数の分岐先要素をさらに備え、前記複数の分岐先要素の各々は、前記複数のテンソルインデックス要素における対応するテンソルインデックス要素を有し、前記複数の分岐先要素の各々は、それぞれの分岐先要素に対応するループの反復が完了すると実行される命令のためのアドレスを記憶するように構成される、請求項１〜１４のいずれか１項に記載の装置。
【請求項１６】
システムであって、
Ｎ次元テンソル上で線形代数演算を実行するように構成された１つ以上のプロセッサを備え、前記Ｎ次元テンソルは、Ｎ個の次元の各々にわたって配置された複数の要素を有し、Ｎは、１以上の整数であり、前記システムはさらに、
複数のテンソルインデックス要素と、
複数の次元乗数要素とを備え、前記次元乗数要素の各々は、対応するテンソルインデックス要素を有し、前記システムはさらに、
回路を備え、前記回路は、
前記Ｎ次元テンソルの特定の要素にアクセスするための命令を取得するように構成され、
前記複数のテンソルインデックス要素のうちの１つ以上のテンソルインデックス要素および前記複数の次元乗数要素のうちの１つ以上の次元乗数要素を用いて、前記特定の要素のアドレスを決定するように構成され、
前記Ｎ次元テンソルの前記特定の要素にアクセスするための前記決定されたアドレスを示すデータを前記１つ以上のプロセッサに出力するように構成される、システム。
【請求項１７】
前記特定の要素の前記アドレスは、前記Ｎ次元テンソルの別の要素からのアドレスオフセットであり、
前記特定の要素の前記アドレスを決定することは、
前記１つ以上のテンソルインデックス要素の各テンソルインデックス要素ごとに、それぞれのテンソルインデックス要素に記憶された値と前記１つ以上の次元乗数要素の前記対応する次元乗数要素に記憶された値とを乗算して、それぞれの乗算された値を生成することと、
前記乗算された値の合計を求めることによって前記アドレスオフセットを決定することとを備える、請求項１６に記載のシステム。
【請求項１８】
コンピュータによって実行される方法であって、
Ｎ次元テンソルの特定の要素にアクセスするための命令を取得するステップを備え、前記Ｎ次元テンソルは、Ｎ個の次元の各々にわたって配置された複数の要素を有し、Ｎは、１以上の整数であり、前記方法はさらに、
複数のテンソルインデックス要素のうちの１つ以上のテンソルインデックス要素および複数の次元乗数要素のうちの１つ以上の次元乗数要素を用いて、前記特定の要素のアドレスを決定するステップと、
前記Ｎ次元テンソルの前記特定の要素にアクセスするための前記決定されたアドレスを示すデータを出力するステップとを備える、方法。
【請求項１９】
前記特定の要素の前記アドレスは、前記Ｎ次元テンソルの別の要素からのアドレスオフセットであり、
前記特定の要素の前記アドレスを決定するステップは、
前記１つ以上のテンソルインデックス要素の各テンソルインデックス要素ごとに、それぞれのテンソルインデックス要素に記憶された値と前記１つ以上の次元乗数要素の対応する次元乗数要素に記憶された値とを乗算して、それぞれの乗算された値を生成するステップと、
前記乗算された値の合計を求めることによって前記アドレスオフセットを決定するステップとを備える、請求項１８に記載の方法。
【請求項２０】
前記命令は、第１のループと前記第１のループの外側ループである第２のループとを含む入れ子ループを処理するための命令を表わし、前記第１のループは、第１のインデックス変数を用いて反復され、前記第２のループは、第２のインデックス変数を用いて反復される、請求項１８または１９に記載の方法。