IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7023917疎要素を密行列に変換するためのシステムおよび方法
<>
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図1
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図2A
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図2B
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図2C
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図2D
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図3A
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図3B
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図4
  • 特許-疎要素を密行列に変換するためのシステムおよび方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-14
(45)【発行日】2022-02-22
(54)【発明の名称】疎要素を密行列に変換するためのシステムおよび方法
(51)【国際特許分類】
   G06F 17/16 20060101AFI20220215BHJP
【FI】
G06F17/16 P
【請求項の数】 17
【外国語出願】
(21)【出願番号】P 2019216610
(22)【出願日】2019-11-29
(62)【分割の表示】P 2016251097の分割
【原出願日】2016-12-26
(65)【公開番号】P2020061167
(43)【公開日】2020-04-16
【審査請求日】2019-12-26
(31)【優先権主張番号】15/016,486
(32)【優先日】2016-02-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ラビ・ナラヤナスワミ
(72)【発明者】
【氏名】ラフル・ナガラジャン
(72)【発明者】
【氏名】ウ・ドン・ヒョク
(72)【発明者】
【氏名】クリストファー・ダニエル・リアリー
【審査官】井上 宏一
(56)【参考文献】
【文献】特開平06-052125(JP,A)
【文献】特開2014-199545(JP,A)
【文献】米国特許出願公開第2012/0159489(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
(57)【特許請求の範囲】
【請求項1】
疎要素を密行列に変換するためのシステムであって、
2次元の疎密変換ユニットのそれぞれの次元に沿って配置された複数の疎要素アクセスユニットを備え、各疎要素アクセスユニットは、
それぞれの複数個のプロセッサを備えるそれぞれのデータフェッチユニットを備え、前記データフェッチユニットは、
前記データフェッチユニットが位置する前記疎要素アクセスユニットは1つ以上のデータ片において格納される特定の疎要素の部分集合にアクセスするよう割り当てられるという指示を与える1つ以上の制御信号を外部のソースから受取り、
指示に基いて、前記特定の疎要素の部分集合の中の1つ以上の疎要素をフェッチするよう構成され、各疎要素アクセスユニットはさらに、
それぞれの連結ユニットを備え、前記連結ユニットは、
少なくとも前記1つ以上の疎要素に適用される変換に基いて出力密行列を生成するよう構成され、各疎要素アクセスユニットはさらに、
それぞれの圧縮/伸長ユニットを備え、前記圧縮/伸長ユニットは、
前記出力密行列を圧縮して、圧縮された出力密行列を生成し、
前記圧縮された出力密行列をノードネットワークに与えるよう構成される、疎要素を密行列に変換するためのシステム。
【請求項2】
各疎要素アクセスユニットは、それぞれの要求識別ユニットをさらに備え、前記要求識別ユニットは、
前記ノードネットワーク上で、前記特定の疎要素に対する要求を受取り、
前記要求識別ユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断し、
前記要求識別ユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することに応じて、前記データフェッチユニットに対して、前記特定の疎要素の部分集合にアクセスするための前記指示を生成するよう構成される、請求項1に記載のシステム。
【請求項3】
前記要求識別ユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することは、ルックアップテーブルに基いて、前記要求識別ユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することを含む、請求項2に記載のシステム。
【請求項4】
各疎要素アクセスユニットは、
それぞれの疎低減ユニットをさらに備え、前記疎低減ユニットは、
1のプロセッサから第1の疎要素を含む第1の行列を受取るよう構成され、前記第1の行列は第1の次元を有し、前記疎低減ユニットはさらに、
前記第1の疎要素を含む第2の行列を生成するよう構成され、前記第2の行列は、前記第1の次元よりも小さい第2の次元を有し、
前記連結ユニットは、さらに、
前記第2の行列を受取るよう構成され、
前記出力密行列を生成することは、前記第2の行列に基いて前記出力密行列を生成することをさらに含む、請求項1~3のいずれかに記載のシステム。
【請求項5】
前記連結ユニットは、
第1の時点において第1の疎要素を受取り、
第2の異なる時点において第2の疎要素を受取り、
前記出力密行列のために前記第1の疎要素および前記第2の疎要素の順序を判断するよう構成され、
前記出力密行列を生成することは、前記第1の疎要素および前記第2の疎要素の前記順序に基いて前記出力密行列を生成することをさらに含む、請求項1~4のいずれかに記載のシステム。
【請求項6】
前記連結ユニットは、さらに、前記ノードネットワーク上で送信される密行列を表す第1の密行列を受取るよう構成され、
前記出力密行列を生成することは、前記第1の密行列、第1の疎要素および第2の疎要素に基いて前記出力密行列を生成することをさらに含む、請求項1~4のいずれかに記載のシステム。
【請求項7】
前記圧縮/伸長ユニットは、圧縮された第1の密行列を伸長して、前記連結ユニットによって受け取られる前記第1の密行列に対応する密行列を生成するよう構成される、請求項に記載のシステム。
【請求項8】
前記特定の疎要素のうちの1つ以上の疎要素は多次元の行列であり、前記出力密行列はベクトルである、請求項1~7のいずれかに記載のシステム。
【請求項9】
疎要素を密行列に変換するための方法であって、
疎要素アクセスユニットによって、外部のソースから、1つ以上の疎要素にアクセスするための1つ以上の制御信号を受け取ることを備え、複数の疎要素アクセスユニットが2次元の疎密変換ユニットのそれぞれの次元に沿って配置され、各疎要素アクセスユニットは、それぞれのデータフェッチユニットと、それぞれの連結ユニットと、それぞれの圧縮/伸長ユニットとを備え、前記方法はさらに、
それぞれの複数個のプロセッサを有する前記それぞれのデータフェッチユニットによって、前記1つ以上の制御信号に基づいて、前記データフェッチユニットが位置する前記疎要素アクセスユニットは1つ以上のデータ片において格納される特定の疎要素の部分集合にアクセスするよう割り当てられるという指示を受取ることと、
指示に基いて、前記特定の疎要素の部分集合の中の1つ以上の疎要素をフェッチすることと、
前記それぞれの連結ユニットによって、少なくとも前記1つ以上の疎要素に適用される変換に基いて出力密行列を生成することと
前記それぞれの圧縮/伸長ユニットによって、前記出力密行列を圧縮して、圧縮された出力密行列を生成すること、および前記圧縮された出力密行列をノードネットワークに与えることとを備える、疎要素を密行列に変換するための方法。
【請求項10】
疎低減ユニットによって、第1のプロセッサから第1の疎要素を含む第1の行列を受取ることをさらに備え、前記第1の行列は第1の次元を有し、前記方法はさらに、
前記疎低減ユニットによって、前記第1の疎要素を含む第2の行列を生成することを備え、前記第2の行列は、前記第1の次元よりも小さい第2の次元を有し、前記方法はさらに、
前記連結ユニットによって前記第2の行列を受取ることを備え
前記出力密行列を生成することは、前記第2の行列に基いて前記出力密行列を生成することをさらに含む、請求項に記載の方法。
【請求項11】
前記出力密行列を生成することはさらに、
第1の時点において第1の疎要素を受取ることと、
第2の異なる時点において第2の疎要素を受取ることと
前記出力密行列のために前記第1の疎要素および前記第2の疎要素の順序を判断することと、
前記第1の疎要素および前記第2の疎要素の前記順序に基いて前記出力密行列を生成することとを含む、請求項9または10に記載の方法。
【請求項12】
前記出力密行列を生成することはさらに、
前記ノードネットワーク上で送信される密行列を表す第1の密行列を受取ることと、
前記第1の密行列、第1の疎要素および第2の疎要素に基いて前記出力密行列を生成することとを含む、請求項9または10に記載の方法。
【請求項13】
要求識別ユニットによって、前記ノードネットワーク上において、1つ以上のデータ片において格納される特定の疎要素に対する要求を受取ることと、
前記データフェッチユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することと、
前記データフェッチユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することに応じて、前記特定の疎要素の部分集合にアクセスするための前記指示を生成することとをさらに備える、請求項9~12のいずれかに記載の方法。
【請求項14】
前記データフェッチユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することは、前記データフェッチユニットは、ルックアップテーブルに基いて、前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することを含む、請求項13に記載の方法。
【請求項15】
疎要素を密行列に変換するためのシステムであって、
1つ以上のデータ片において格納される特定の疎要素の部分集合に基づいて出力行列に対する要求を送信するよう構成される1つ以上のプロセッサと、
ノードネットワーク上で接続され、2次元の疎密変換ユニットのそれぞれの次元に沿って配置された複数個の疎要素アクセスユニットとを備え、疎要素アクセスユニットは、
それぞれの複数個のプロセッサを備えるそれぞれのデータフェッチユニットを備え、前記データフェッチユニットは、
前記データフェッチユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合にアクセスするよう割り当てられるという指示を与える1つ以上の制御信号を外部のソースから受取り、
指示に基いて、前記特定の疎要素の部分集合の中の1つ以上の疎要素をフェッチするよう構成され、各疎要素アクセスユニットはさらに、
それぞれの連結ユニットを備え、前記連結ユニットは、
少なくとも前記1つ以上の疎要素に適用される変換に基いて出力密行列を生成するよう構成され、各疎要素アクセスユニットはさらに、
それぞれの圧縮/伸長ユニットを備え、前記圧縮/伸長ユニットは、
前記出力密行列を圧縮して、圧縮された出力密行列を生成し、
前記圧縮された出力密行列を前記ノードネットワークに与えるよう構成される、疎要素を密行列に変換するためのシステム。
【請求項16】
各疎要素アクセスユニットは、それぞれの要求識別ユニットをさらに含み、前記要求識別ユニットは、
前記ノードネットワーク上で、前記特定の疎要素に対する前記要求を受取り、
前記要求識別ユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断し、
前記要求識別ユニットが位置する前記疎要素アクセスユニットは前記特定の疎要素の部分集合を扱うよう割当てられる、と判断することに応じて、前記データフェッチユニットに対して、前記特定の疎要素の部分集合にアクセスするための前記指示を生成するよう構成される、請求項15に記載のシステム。
【請求項17】
各疎要素アクセスユニットは、それぞれの疎低減ユニットをさらに含み、前記疎低減ユニットは、
1のプロセッサから第1の疎要素を含む第1の行列を受取るよう構成され、前記第1の行列は第1の次元を有し、前記疎低減ユニットはさらに、
前記第1の疎要素を含む第2の行列を生成するよう構成され、前記第2の行列は、前記第1の次元よりも小さい第2の次元を有し、
前記連結ユニットは、さらに、
前記第2の行列を受取るよう構成され、
前記出力密行列を生成することは、前記第2の行列に基いて前記出力密行列を生成することをさらに含む、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
発明の詳細な記載
背景
この明細書は、一般に、回路系を用いて行列を処理することに関する。
【発明の概要】
【発明が解決しようとする課題】
【0002】
概要
この明細書に記載される主題の1つの革新的な局面によれば、行列プロセッサを用いて、疎から密への、または密から疎への行列変換を実行することができる。一般に、高性能計算システムは、行列を処理するために線形代数ルーチンを用い得る。いくつかの例においては、行列のサイズは1つのデータストレージにはまるには大きすぎるかもしれず、行列の異なる部分は、分散型データストレージシステムの異なる位置に疎に格納され得る。行列をロードするために、計算システムの中央処理ユニットは、複数の行列プロセッサに対して、行列の異なる部分にアクセスするよう命令し得る。各行列プロセッサは、疎データを集めて、疎データ上において同時計算を実行し、および、中央処理ユニットがその後の処理を実行するために、ともに連結することができる密行列を生成してもよい。
【課題を解決するための手段】
【0003】
一般に、この明細書に記載される主題の1つの革新的な局面は、疎要素を密行列に変換するためのシステムにおいて実施することができる。システムは、要求識別ユニットを備え、要求識別ユニットは、ノードネットワーク上において、1つ以上のデータ片において格納される特定の疎要素に対する要求を受取り、システムは特定の疎要素の部分集合を扱うよう割当てられる、と判断し、システムは特定の疎要素の部分集合を扱うよう割当てられる、と判断することに応じて、特定の疎要素の部分集合にアクセスするための指示を生成するよう構成される。システムは、複数個のプロセッサを含むデータフェッチユニットを備え、データフェッチユニットは、要求識別ユニットから、特定の疎要素の部分集合にアクセスするための指示を受取り、特定の疎要素の部分集合の識別に基いて、特定の疎要素の部分集合をフェッチするためのプロセッサ指定を判断し、指定に基いて、および複数個のプロセッサのうちの第1のプロセッサによって、特定の疎要素の部分集合の第1の疎要素をフェッチし、指定に基いて、および複数個のプロセッサのうちの第2のプロセッサによって、特定の疎要素の部分集合の第2の疎要素をフェッチするよう構成される。システムは、少なくとも第1の疎要素および第2の疎要素に適用される変換に基いて出力密行列を生成するよう構成される連結ユニットを備える。
【0004】
これらおよび他の実現例は、各々、任意で以下の特徴の1つ以上を含むことができる。たとえば、システムは、疎低減ユニットを備えてもよく、疎低減ユニットは、第1のプロセッサから第1の疎要素を含む第1の行列を受取るように構成され、第1の行列は第1の次元を有し、疎低減ユニットはさらに、第1の疎要素を含む第2の行列を生成するよう構成され、第2の行列は、第1の次元よりも小さい第2の次元を有する。連結ユニットは、さらに、第2の行列を受取るように構成されてもよい。出力密行列を生成するために、出力密行列は第2の行列に基いて生成されてもよい。
【0005】
連結ユニットは、第1の時点において第1の疎要素を受取り、第2の異なる時点において第2の疎要素を受取り、出力密行列のために第1の疎要素および第2の疎要素の順序を判断するよう構成されてもよい。出力密行列を生成するために、出力密行列は、第1の疎要素および第2の疎要素の順序に基いて生成されてもよい。
【0006】
システムは、圧縮/伸長ユニットを備えてもよく、圧縮/伸長ユニットは、出力密行列を圧縮して、圧縮された出力密行列を生成し、圧縮された出力密行列をノードネットワークに与えるよう構成される。連結ユニットは、さらに、ノードネットワーク上で送信される密行列を表す第1の密行列を受取るよう構成されてもよい。出力密行列を生成するために、出力密行列は、第1の密行列、第1の疎要素および第2の疎要素に基いて生成されてもよい。圧縮/伸長ユニットは、圧縮された第1の密行列を伸長して第1の密行列を生成するよう構成されてもよい。
【0007】
システムは特定の疎要素の部分集合を扱うよう割当てられる、と判断するために、データフェッチユニットは、ルックアップテーブルに基いて、システムは特定の疎要素の部分集合を扱うよう割当てられる、と判断するよう構成されてもよい。特定の疎要素のうちの1つ以上の疎要素は多次元の行列であってもよく、出力密行列はベクトルであってもよい。
【0008】
この明細書において記載される主題は、以下の利点の1つ以上を実現するように特定の実施の形態において実現することができる。中央処理ユニットから特化された行列プロセッサに疎密データロードタスクをシフトすることは、中央処理ユニットの計算帯域幅を増大し、システムの処理費を低減する。行列プロセッサはデータが格納されるメモリ近くにあるように配置することができ、データのロードに対するレイテンシを下げることができる。特化された行列プロセッサを用いることによって、疎データをフェッチするために密な線形代数に対して特化されるプロセッサの使用を回避することができる。コントローラ-チャネルごとに複数のユニットを有することにより、一度に処理されている同時のトランザクションの数が並列化され得、トランザクションは、前のトランザクションが完了するのを待たずに、直ちに処理され得る。
【0009】
この局面および他の局面の他の実現例は、計算機記憶装置上でエンコードされる、方法のアクションを実行するように構成される、対応のシステム、装置およびコンピュータプログラムを含む。1つ以上のコンピュータのシステムは、システムにインストールされ、動作でシステムにアクションを実行させるソフトウェア、ファームウェア、ハードウェアまたはそれらの組合せによってそのように構成することができる。1つ以上のコンピュータプログラムは、データ処理装置によって実行されたとき、装置にアクションを実行させる命令を有することによって、そのように構成することができる。
【0010】
この明細書に記載される主題の1つ以上の実現例の詳細は、添付の図面および以下の記載において述べられる。主題の他の潜在的な特徴、局面および利点は、記載、図面および特許請求の範囲から明らかになる。
【図面の簡単な説明】
【0011】
図1】例示の計算システムのブロック図である。
図2A】例示の疎密変換ユニットを示す図である。
図2B】例示の疎密変換ユニットを示す図である。
図2C】例示の疎密変換ユニットを示す図である。
図2D】例示の疎密変換ユニットを示す図である。
図3A】例示の疎要素アクセスユニットを示す図である。
図3B】例示の疎要素アクセスユニットを示す図である。
図4】密行列を生成するためのプロセスの例を示すフローチャート図である。
図5】疎要素を密行列に変換するためのプロセスの例を示すフローチャート図である。
【発明を実施するための形態】
【0012】
さまざまな図面における同様の参照番号および指定は同様の要素を示す。
詳細な記載
一般に、データは行列の形式において表すことができ、計算システムは線形代数アルゴリズムを用いてデータを操作し得る。行列は一次元のベクトルまたは多次元行列であり得る。行列は、データベーステーブルまたは変数などのようなデータ構造によって表されてもよい。しかしながら、行列のサイズが大きすぎると、1つのデータストレージに行列全体を格納することは可能ではないかもしれない。密行列は複数の疎要素に変換され得、各疎要素は異なるデータストレージに格納され得る。密行列の疎要素は行列であってもよく、行列のうちの小さな部分行列(たとえば単一値要素、行、列、または部分行列)のみが非零値を有する。計算システムが密行列にアクセスすることを必要とするときに、中央処理ユニット(CPU)は、データストレージの各々に到達するスレッドを開始して、格納された疎要素をフェッチしてもよく、そして、疎密変換を適用して密行列を戻す。しかしながら、それが疎要素すべてをフェッチするのにかかる時間の量は長いかもしれず、CPUの計算帯域幅は結果として十分に利用されないかもしれない。いくつかの場合では、計算システムはいくつかの密行列の疎要素にアクセスして新たな密行列を形成する必要があるかもしれず、それらの密行列は等しい次元を有さないかもしれない。異なる密行列の疎要素をフェッチするようデータストレージの各々に到達するスレッドと関連付けられるCPUアイドル時間は、異なる待ち時間に遭遇し得、さらに、計算装置の性能に望ましくない態様で影響を与えるかもしれない。いくつかの場合では、計算システムはいくつかの密行列の疎要素にアクセスして新たな密行列を形成する必要があるかもしれず、それらの疎要素は等しい次元を有さないかもしれない。異なる密行列の疎要素をフェッチするようデータストレージの各々に到達するスレッドと関連付けられるCPUアイドル時間は、異なる待ち時間に遭遇し得、さらに、計算装置の性能に望ましくない態様で影響を与えるかもしれない。CPUから分離しているハードウェア疎密変換ユニットは、プロセッサの計算帯域幅をCPU動作から独立した疎要素の収集および疎要素の密行列への変換によって、増大させ得る。
【0013】
図1は、1つ以上の密行列から疎要素を変換して密行列を生成するための例示の計算システム100のブロック図を示す。計算システム100は、処理ユニット102、疎密変換ユニット104およびデータ片106a~106kを含み、kは1以上の整数である。一般に、処理ユニット102は、目標密行列へのアクセスための命令を処理し、目標密行列を生成するために疎密変換ユニット104に命令110を送信する。疎密変換ユニット104はデータ片106a~106kの1つ以上から対応する疎要素108a~108nにアクセスし、nは1つ以上の整数である。疎密変換ユニット104は対応する疎要素108a~108nを用いて目標密行列112を生成し、目標密行列112をその後の処理のために処理ユニット102に与える。たとえば、疎要素108a~108nは異なるサイズを有する二次元の行列であり得、疎密変換ユニット104は疎要素108a~108nの各々をベクトルに変換することおよびn個のベクトルを単一のベクトルに連結することによって目標密行列112を生成し得る。
【0014】
いくつかの実現例では、処理ユニット102は、目標密行列の更新ための命令を処理し、更新された密行列を疎密変換ユニット104に送信してもよい。疎密変換ユニット104は、更新された密行列を対応する疎要素に変換し、したがって、データ片106a~106kに格納された1つ以上の疎要素を更新してもよい。
【0015】
処理ユニット102は計算システム100内で実行のために命令を処理するように構成される。処理ユニット102は1つ以上のプロセッサを含んでもよい。いくつかの実現例では、処理ユニット102は疎密変換ユニット104によって生成された目標密行列112を処理するように構成される。他のいくつかの実現例では、処理ユニット102は、疎
密変換ユニット104に目標密行列112を生成することを要求するよう構成されてもよく、別の処理ユニットが目標密行列112を処理するように構成されてもよい。データ片106a~106kは疎要素108a~108nを含むデータを格納する。いくつかの実現例では、データ片106a~106kは単数または複数の揮発性記憶装置であってもよい。他のいくつかの実現例では、データ片106a~106kは単数または複数の不揮発性記憶装置であってもよい。データ片106a~106kは、さらに、ストレージエリアネットワークまたは他の構成における装置などのような別のコンピュータ読取可能媒体の形式であってもよい。データ片106a~106kは電気的接続、光接続または無線接続を用いて、疎密変換ユニット104に結合されてもよい。いくつかの実現例では、データ片106a~106kは疎密変換ユニット104の一部であってもよい。
【0016】
疎密変換ユニット104は疎要素に基いて密行列を判断するように構成される。いくつかの実現例では、疎密変換ユニット104は密行列に基いて疎要素の位置を判断するように構成されてもよい。いくつかの実現例では、図2A図2Dを参照してより詳細に以下に記載されるように、疎密変換ユニット104は複数の相互接続された疎要素アクセスユニットを含んでもよい。
【0017】
図2Aは例示の疎密変換ユニット200を示す。疎密変換ユニット200は疎密変換ユニット104に対応してもよい。疎密変換ユニット200は、M×N個の疎要素アクセスユニットX1,1~XM,Nを含み、それらは物理的にまたは論理的にM個の行およびN個の列に配列され、MおよびNは1以上の整数である。いくつかの実現例では、疎密変換ユニット200は、データを処理するように構成されたさらなる回路系を含んでもよい。一般に、疎密変換ユニット200は、密行列に対する要求を受け、疎要素アクセスユニットX1,1~XM,Nによってアクセス可能な対応する疎要素に基いて密行列を判断するよう構成される。一般に、各疎要素アクセスユニットは、指定される疎要素の組にアクセスするよう構成され、図3A図3Bを参照してより詳細に以下に記載される。いくつかの実現例では、疎要素アクセスユニットは単一命令・多重データ(SIMD)処理装置であってもよい。
【0018】
いくつかの実現例では、疎要素アクセスユニットX1,1~XM,Nは、二次元のメッシュ構成に物理的にまたは論理的に配列されてもよい。たとえば疎要素アクセスユニットX1,1は、疎要素アクセスユニットX1,2およびX2,1に直接結合される。別の例として、疎要素アクセスユニットX2,2は、疎要素アクセスユニットX2,1、X3,1、X2,3およびX1,2に直接結合される。2つの疎要素アクセスユニット間の結合は、電気的接続、光接続、無線接続または任意の他の好適な接続であってもよい。
【0019】
他のいくつかの実現例では、疎要素アクセスユニットX1,1~XM,Nは、二次元の円環面構成に物理的にまたは論理的に配列されてもよい。たとえば疎要素アクセスユニットX1,1は、疎要素アクセスユニットX1,2、X2,1、X1,NおよびXM,1に直接結合される。別の例として、疎要素アクセスユニットXM,Nは、疎要素アクセスユニットXM,N-1、XM-1,N、XM,1およびX1,Nに直接結合される。
【0020】
いくつかの実現例では、疎密変換ユニット200は、予め定められる条件の組に従って密行列から変換される疎要素を区分するよう構成されてもよい。疎要素アクセスユニットX1,1~XM,Nの各行は、特定の密行列から変換される疎要素にアクセスするよう区分されてもよい。たとえば、疎密変換ユニット200は、コンピュータモデルの1,000個の異なるデータベーステーブルに対応する密行列から変換される疎要素にアクセスするよう構成されてもよい。データベーステーブルの1つ以上は異なるサイズを有してもよい。疎要素アクセスユニットの第1番目の行202は、データベーステーブル1番~データベーステーブル100番から変換される疎要素にアクセスするよう構成されてもよく、
疎要素アクセスユニットの第2番目の行204は、データベーステーブル101番~データベーステーブル300番から変換される疎要素にアクセスするよう構成されてもよく、疎要素アクセスユニットのM番目の行206は、データベーステーブル751番~データベーステーブル1,000番から変換される疎要素にアクセスするよう構成されてもよい。いくつかの実現例では、区分は、疎密変換ユニット200を用いて、プロセッサが疎要素にアクセスする前に、ハードウェア命令によって構成されてもよい。
【0021】
疎要素アクセスユニットX1,1~XM,Nの各列は、特定の密行列から変換される疎要素の部分集合にアクセスするよう区分されてもよい。たとえば、データベーステーブル1番に対応する密行列は1,000個の疎要素に変換されてもよく、1,000個の疎要素は上に記載されるような第1番目の行202によってアクセス可能である。疎要素アクセスユニットX1,1は、データベーステーブル1番の疎要素1番~200番にアクセス
するよう構成されてもよく、疎要素アクセスユニットX1,2は、データベーステーブル
1番の疎要素201番~500番にアクセスするよう構成されてもよい。別の例として、データベーステーブル2番に対応する密行列は500個の疎要素に変換されてもよく、500の疎要素は上に記載されるような第1番目の行202によってアクセス可能である。疎要素アクセスユニットX1,1は、データベーステーブル2番の疎要素1番~50番にアクセスするよう構成されてもよく、疎要素アクセスユニットX1,2は、データベーステーブル2番の疎要素51番~200番にアクセスするよう構成されてもよい。別の例として、データベーステーブル1,000番に対応する密行列は10,000個の疎要素に変換されてもよく、10,000個の疎要素は上に記載されるような第M番目の行206によってアクセス可能である。疎要素アクセスユニットXM,1は、データベーステーブル1,000番の疎要素1番~2,000番にアクセスするよう構成されてもよく、疎要素アクセスユニットXM,Nは、データベーステーブル1,000番の疎要素9,000番~10,000番にアクセスするよう構成されてもよい。
【0022】
図2Bは、疎密変換ユニット200が、疎要素アクセスユニットの二次元のメッシュネットワークを用いて、どのように疎要素を要求し得るかの例を示す。例として、処理ユニットは、疎密変換ユニット200に対して、データベーステーブル1番の疎要素1番~50番、データベーステーブル2番の疎要素100番~200番、およびデータベーステーブル1,000番の疎要素9,050番~9,060番を用いて生成される密な一次元のベクトルを要求する命令を実行してもよい。疎密変換ユニット200は、処理ユニットから要求を受けた後、疎密変換ユニット200は、疎要素アクセスユニットX1、1に命令して、疎要素に対する要求をメッシュネットワークにおける他の疎要素アクセスユニットに同報通信させてもよい。疎要素アクセスユニットX1,1は、疎要素アクセスユニットX1,2に要求222を、および疎要素アクセスユニットX2,1に要求224を同報通信してもよい。要求222を受けた後、疎要素アクセスユニットX1,2は、要求226を疎要素アクセスユニットX1,3に同報通信してもよい。いくつかの実現例では、疎要素アクセスユニットは、ルーティングスキームに基いて別の疎要素アクセスユニットに要求を同報通信するよう構成されてもよい。たとえば、疎要素アクセスユニットX1,2は疎要素アクセスユニットX2,2に要求を同報通信するよう構成されなくてもよく、なぜならば、疎要素アクセスユニットX2,2は疎要素アクセスユニットX2、1から同報通信を受けるよう構成されるからである。ルーティングスキームは静的であってもよく、または動的に生成されてもよい。たとえば、ルーティングスキームはルックアップテーブルであってもよい。いくつかの実現例では、疎要素アクセスユニットは、要求224を要求224に基いて別の疎要素アクセスユニットに同報通信するよう構成されてもよい。たとえば、要求224は要求された疎要素の識別を含んでもよく(たとえばデータベーステーブル1番、疎要素1番~50番)、疎要素アクセスユニットX1,2は、要求224を疎要素アクセスユニットX2,2および/または疎要素アクセスユニットX1,3に同報通信するべきであるかどうかを、識別に基づいて判断してもよい。同報通信プロセスは、メ
ッシュネットワークを介して伝搬し、疎要素アクセスユニットXM,Nは疎要素アクセスユニットXM,N-1から要求230を受ける。
【0023】
図2Cは、疎密変換ユニット200が、疎要素アクセスユニットの二次元のメッシュネットワークを用いて、要求される密行列をどのように生成し得るかの例を示す。いくつかの実現例では、或る疎要素アクセスユニットが同報通信された要求を受けた後、その疎要素アクセスユニットは、それは要求される疎要素のいずれかにアクセスするよう構成されるかどうかを判断するよう構成される。たとえば疎要素アクセスユニットX1,1は、それは、データベーステーブル1番の疎要素1番~50番にアクセスするよう構成されるが、データベーステーブル2番の疎要素100番~200番またはデータベーステーブル1,000番の疎要素9,050番~9,060番にアクセスするようには構成されない、と判断してもよい。それがデータベーステーブル1番の疎要素1番~50番にアクセスするよう構成されると判断することに応じて、疎要素アクセスユニットX1,1は、データベーステーブル1番の疎要素1番~50番を、これらの疎要素が格納されているデータ片からフェッチし、これらの疎要素に基いて密行列242を生成してもよい。
【0024】
別の例として、疎要素アクセスユニットX2,1は、それが、データベーステーブル1番の疎要素1番~50番、データベーステーブル2番の疎要素100番~200番、またはデータベーステーブル1,000番の疎要素9,050番~9,060番のいずれにもアクセスするよう構成されない、と判断してもよい。それが要求される疎要素のいずれにもアクセスするよう構成されないと判断することに応じて、疎要素アクセスユニットX2,1はさらなるアクションを実行しなくてもよい。
【0025】
別の例として、疎要素アクセスユニットX1,2は、それはデータベーステーブル2番の疎要素100番~200番にアクセスするよう構成されるが、データベーステーブル1番の疎要素1番~50番またはデータベーステーブル1,000番の疎要素9,050番~9,060番にアクセスするようには構成されない、と判断してもよい。それがデータベーステーブル2番の疎要素100番~200番にアクセスするよう構成されると判断することに応じて、疎要素アクセスユニットX1,2は、これらの疎要素が格納されているデータ片からこれらの疎要素をフェッチし、これらの疎要素に基いて密行列244を生成してもよい。いくつかの実現例では、ある疎要素アクセスユニットが、密行列を生成した後、その疎要素アクセスユニットは、同報通信された要求の送信側にその密行列を転送するよう構成されてもよい。ここでは、疎要素アクセスユニットX1,2は密行列244を疎要素アクセスユニットX1,1に転送する。
【0026】
別の例として、疎要素アクセスユニットXM,Nは、それはデータベーステーブル1,000番の疎要素9,050番~9,060番にアクセスするよう構成されるが、データベーステーブル1番の疎要素1番~50番またはデータベーステーブル2番の疎要素100番~200番にアクセスするようには構成されない、と判断してもよい。それがデータベーステーブル1,000番の疎要素9,050番~9,060番にアクセスするよう構成されると判断することに応じて、疎要素アクセスユニットXM,Nは、これらの疎要素が格納されているデータ片からこれらの疎要素をフェッチし、これらの疎要素に基いて密行列246を生成してもよい。いくつかの実現例では、ある疎要素アクセスユニットが、密行列を生成した後、その疎要素アクセスユニットは、同報通信された要求の送信側にその密行列を転送するよう構成されてもよい。ここでは、疎要素アクセスユニットXM,Nは密行列246を疎要素アクセスユニットXM,N-1に転送する。次のサイクルで、疎要素アクセスユニットXM,N-1は、密行列246を疎要素アクセスユニットXM,N-1に転送するよう構成される。このプロセスは、疎要素アクセスユニットX2,1が密行列246を疎要素アクセスユニットX1,1に転送するまで継続する。
【0027】
いくつかの実現例では、疎密変換ユニット200は、疎要素アクセスユニットによって生成された密行列を変換し、プロセッサユニットのための密行列を生成するように構成される。ここで、疎密変換ユニット200は、密行列242、244および246を、プロセッサユニットのための密行列に変換する。たとえば、密行列242は100×10の次元を有してもよく、密行列244は20×100の次元を有してもよく、密行列246は3×3の次元を有してもよい。疎密変換ユニット200は、密行列242、244および246を、1×3009の次元でベクトルに変換してもよい。有利なことに、密行列(たとえばデータベーステーブル)に従う行の区分化は、疎密変換ユニット200が、生成された密行列が列Nから列1に伝搬した後に、要求された疎要素をすべて得ることを可能にする。列の区分化は、疎要素アクセスユニットのわずか1つを用いてあまりにも多数の疎要素にアクセスすることによって引起される帯域幅ボトルネックを低減する。
【0028】
図2Dは、疎密変換ユニット200が、疎要素アクセスユニットの二次元のメッシュネットワークを用いて、密行列に基いて疎要素をどのように更新し得るかの例を示す。例として、処理ユニットは、疎密変換ユニット200に対して、データベーステーブル1番の疎要素1番~50番およびデータベーステーブル1,000番の疎要素9,050番~9,060番を用いて生成される密な一次元のベクトルを用いて、格納された疎要素を更新するよう要求する命令を実行してもよい。疎密変換ユニット200は、処理ユニットから要求を受けた後、疎密変換ユニット200は疎要素アクセスユニットX1,1に対して、疎要素更新要求をメッシュネットワークにおける他の疎要素アクセスユニットに同報通信するよう命令してもよく、疎要素更新要求は、処理ユニットによって与えられる密な一次元のベクトルを含んでもよい。いくつかの実現例では、疎要素アクセスユニットX1,1は、それが密な一次元のベクトルに含まれる疎要素にアクセスするよう割当てられるかどうかを判断してもよい。それが密な一次元のベクトルに含まれる疎要素にアクセスするよう割当てられると判断することに応じて、疎要素アクセスユニットX1,1は、データ片に格納される疎要素を更新してもよい。ここで、疎要素アクセスユニットX1,1は、それがデータベーステーブル1番の疎要素1番~50番に割当てられると判断し、疎要素アクセスユニットX1,1は、データ片におけるこれらの疎要素を更新するよう命令を実行する。
【0029】
疎要素アクセスユニットX1,1は、疎要素アクセスユニットX1,2に疎要素更新要求252を、および疎要素アクセスユニットX2,1に疎要素更新要求254を同報通信してもよい。疎要素更新要求252を受けた後、疎要素アクセスユニットX1,2は、それは、密な一次元のベクトルに含まれる疎要素にアクセスするよう割当てられない、と判断してもよい。疎要素アクセスユニットX1,2は、要求256を疎要素アクセスユニットX1,3に同報通信する。同報通信プロセスは、メッシュネットワークを介して伝搬し、疎要素アクセスユニットXM,Nは疎要素アクセスユニットXM,N-1から要求260を受ける。ここで、疎要素アクセスユニットXM,Nは、それがデータベーステーブル1,000番の疎要素9,050番~9,060番に割当てられると判断し、疎要素アクセスユニットXM、Nはデータ片におけるこれらの疎要素を更新するよう命令を実行する。
【0030】
図3Aは例示の疎要素アクセスユニット300を示す。疎要素アクセスユニット300は、疎要素アクセスユニットX1,1~XM,Nの任意の1つであってもよい。一般に、疎要素アクセスユニット300は、ノードネットワーク320から、1つ以上のデータ片に格納された疎要素をフェッチし、フェッチされた疎要素を密行列に変換する要求342を受けるよう構成される。いくつかの実現例では、処理ユニット316が、ノードネットワーク320における疎要素アクセスユニットに対して、疎要素を用いて生成された密行列を求める要求を送信する。疎要素アクセスユニットは、疎要素アクセスユニット300に要求342を同報通信してもよい。同報通信された要求342のルーティングは図2B
おける記載に類似してもよい。疎要素アクセスユニット300は、要求識別ユニット302、データフェッチユニット304、疎低減ユニット306、連結ユニット308、圧縮/伸長ユニット310、および分割ユニット312を含む。ノードネットワーク320は二次元のメッシュネットワークであってもよい。処理ユニット316は処理ユニット102と類似してもよい。
【0031】
一般に、要求識別ユニット302は、1つ以上のデータ片330に格納された疎要素をフェッチするよう要求342を受け、疎要素アクセスユニット300は要求342によって示された疎要素にアクセスするよう割当てられるかどうかを判断するよう構成される。いくつかの実現例では、要求識別ユニット302は、疎要素アクセスユニット300が要求342によって示される疎要素にアクセスするよう割当てられるかどうかを、ルックアップテーブルを用いることによって判断してもよい。特定の要求された疎要素の識別(たとえば、データベーステーブル1番の1番)がルックアップテーブルに含まれている場合には、要求識別ユニット302は、特定の要求された疎要素をフェッチするよう、信号344をデータフェッチユニット304に送信してもよい。特定の要求された疎要素の識別(たとえば、データベーステーブル1番の1番)がルックアップテーブルに含まれない場合には、要求識別ユニット302は受取った要求を破棄してもよい。いくつかの実現例では、要求識別ユニット302は、受取った要求をノードネットワーク320上における別の疎要素アクセスユニットに同報通信するよう構成されてもよい。
【0032】
データフェッチユニット304は、信号344を受信することに応じて、データ片330から1つ以上の要求された疎要素をフェッチするよう構成される。いくつかの実現例では、データフェッチユニット304は1つ以上のプロセッサ322a~322kを含み、kは整数である。プロセッサ322a~322kは、ベクトル処理ユニット(VPU)、アレイ処理ユニットまたは任意の好適な処理ユニットであってもよい。いくつかの実現例では、プロセッサ322a~322kは、データ片330近くに配置されて、プロセッサ322a~322kとデータ片330との間のレイテンシを低減するようにする。疎要素アクセスユニット300がフェッチするよう割当てられる、要求された疎要素の数に基いて、データフェッチユニット304は、プロセッサ322a~322k間に分散されるべき1つ以上の要求を発生させるよう構成されてもよい。いくつかの実現例では、プロセッサ322a~322kの各々は、疎要素の識別に基いて特定の疎要素に割当てられてもよく、データフェッチユニット304は、プロセッサ322a~322kに対する1つ以上の要求を疎要素の識別に基いて発生させるよう構成されてもよい。いくつかの実現例では、データフェッチユニット304はルックアップテーブルを用いることによってプロセッサ割当を判断してもよい。いくつかの実現例では、データフェッチユニット304は、プロセッサ322a~322kのために複数のバッチを生成してもよく、各バッチは要求された疎要素の部分集合に対する要求である。プロセッサ322a~322kは、割当てられた疎要素をデータ片330から独立してフェッチし、フェッチされた疎要素を疎低減ユニット306に転送するよう構成される。
【0033】
疎低減ユニット306はフェッチされた疎要素346の次元を低減するように構成される。たとえば、プロセッサ322a~322kの各々は、100×1の次元を有する疎要素を生成してもよい。疎低減ユニット306は、100×kの次元を有する、フェッチされた疎要素346を受け、フェッチされた疎要素346の次元を論理演算、算術演算または両方の組合せによって100×1に低減することによって疎低減要素348を生成してもよい。疎低減ユニット306は疎低減要素348を連結ユニット308に出力するように構成される。
【0034】
連結ユニット308は、疎低減要素348を再配列および連結して、連結された要素350を生成するように構成される。たとえば、疎要素アクセスユニットX1,1は、デー
タベーステーブル1番の疎要素1番~200番にアクセスするよう構成されてもよい。プロセッサ322aは、フェッチされた疎要素10番を、フェッチされた疎要素5番を返すように構成されるプロセッサ322bよりも早く、疎低減ユニット306に返すかもしれない。連結ユニット308は、その後受取られる疎要素5番を、より早く受取られた疎要素10番の前に順序づけられるように再配列し、疎要素1番~200番を連結された要素350として連結するよう構成される。
【0035】
圧縮/伸長ユニット310は、連結された要素350を圧縮して、ノードネットワーク320のための密行列352を生成するよう構成される。たとえば、圧縮/伸長ユニット310は、連結された要素350における零値を圧縮して、ノードネットワーク320の帯域幅を改善するよう構成されてもよい。いくつかの実現例では、圧縮/伸長ユニット310は、受取られた密行列を伸長してもよい。たとえば、疎要素アクセスユニット300は、ノードネットワーク320を介して近隣の疎要素アクセスユニットから密行列を受けてもよい。疎要素アクセスユニット300は受取られた密行列を伸長してもよく、伸長された密行列を連結された要素350と連結して、更新された連結された要素を形成してもよく、それらは圧縮され、次いでノードネットワーク320に出力されることができる。
【0036】
図3Bは、疎要素アクセスユニット300がノードネットワーク320から受取られる密行列に基いて疎要素をどのように更新し得るかの例を示す。例として、処理ユニットは、疎密変換ユニットに対して、データベーステーブル1番の疎要素1番~50番およびデータベーステーブル1,000番の疎要素9,050番~9,060番を用いて生成される密な一次元のベクトルを用いて、格納された疎要素を更新するよう要求する命令を実行してもよい。疎密変換ユニットは、処理ユニットから要求を受けた後、疎密変換ユニットは要求362を送信して、疎要素アクセスユニット300に対して、それが密な一次元のベクトルに含まれる疎要素にアクセスするよう割当てられるかどうかを判断するよう命令してもよい。要求識別ユニット302は、疎要素アクセスユニット300が密な一次元のベクトルに含まれる疎要素にアクセスするよう割当てられるかどうかを判断するよう構成される。疎要素アクセスユニット300が密な一次元のベクトルに含まれる疎要素にアクセスするよう割当てられると判断することに応じて、要求識別ユニット302は、データ片において格納された疎要素を更新するよう、指示364を分割ユニット312に送信してもよい。
【0037】
分割ユニット312は、受取られた密行列を、データ片330においてデータフェッチユニット304によって更新することができる疎要素に変換するように構成される。たとえば、分割ユニット312は、密な一次元のベクトルを複数の疎要素に変換し、データフェッチユニット304に対して、疎要素アクセスユニット300がフェッチするよう割当てられるデータ片330において格納された疎要素を更新するよう命令するよう構成されてもよい。
【0038】
図4は、密行列を生成するためのプロセス400の例を示すフローチャートである。プロセス400は、疎密変換ユニット104または疎密変換ユニット200などのようなシステムによって実行されてもよい。システムは、疎要素アクセスユニットの第1の群および疎要素アクセスユニットの第2の群を含んでもよい。たとえば、図2Aを参照して、疎密変換ユニット200は、M×N個の疎要素アクセスユニットX1,1~XM,Nを含み、それらは物理的にまたは論理的にM個の行およびN個の列に配列される。疎要素アクセスユニットX1,1~XM,Nの各行は、特定の密行列から変換される疎要素にアクセスするよう区分されてもよい。いくつかの実現例では、疎要素アクセスユニットの第1の群は第1の疎要素アクセスユニットおよび第2の疎要素アクセスユニットを含んでもよい。たとえば、疎密変換ユニット200の第1番目の行は疎要素アクセスユニットX1,1および、X1,2を含んでもよい。いくつかの実現例では、疎要素アクセスユニットの第1
の群および疎要素アクセスユニットの第2の群は二次元のメッシュ構成で配列されてもよい。いくつかの実現例では、疎要素アクセスユニットの第1の群および疎要素アクセスユニットの第2の群は二次元の円環面構成で配列されてもよい。
【0039】
システムは、第1の密行列と関連付けられる疎要素および第2の密行列と関連付けられる疎要素を含む疎要素に基いた出力行列に対する要求を受ける(402)。たとえば、図2Bを参照して、処理ユニットは、疎密変換ユニット200に対して、データベーステーブル1番の疎要素1番~50番、データベーステーブル2番の疎要素100番~200番およびデータベーステーブル1,000番の疎要素9,050番~9,060番を用いて生成される密な一次元のベクトルを要求する命令を実行してもよい。
【0040】
いくつかの実現例では、第1の疎要素アクセスユニットは、第1の密行列と関連付けられる疎要素および第2の密行列と関連付けられる疎要素を含む複数個の疎要素に対する要求を受取ってもよい。第1の疎要素アクセスユニットは、第2の疎要素アクセスユニットに要求を送信してもよい。たとえば、図2Bを参照して、疎密変換ユニット200は、処理ユニットから要求を受けた後、疎密変換ユニット200は、疎要素アクセスユニットX1、1に命令して、疎要素に対する要求をメッシュネットワークにおける他の疎要素アクセスユニットに同報通信させてもよい。疎要素アクセスユニットX1、1は、要求222を疎要素アクセスユニットX1、2に同報通信してもよい。
【0041】
システムは、疎要素アクセスユニットの第1の群によってフェッチされる第1の密行列と関連付けられる疎要素を得る(404)。いくつかの実現例では、第1の疎要素アクセスユニットは、複数個の疎要素のうちの特定の疎要素のアイデンティティが、第1の密行列と関連付けられる疎要素の第1の部分集合のうちの1つのアイデンティティと一致する、と判断してもよい。たとえば、図2Cを参照して、疎要素アクセスユニットX1,1は、データベーステーブル1番の疎要素1番~200番にアクセスするよう構成されてもよい。疎要素アクセスユニットX1,1は、それはデータベーステーブル1番の疎要素1番~50番にアクセスするよう構成されるが、データベーステーブル2番の疎要素100番~200番またはデータベーステーブル1,000番の疎要素9,050番~9,060番にアクセスするようには構成されない、と判断してもよい。複数個の疎要素のうちの特定の疎要素のアイデンティティが、第1の密行列と関連付けられる疎要素の第1の部分集合のうちの1つのアイデンティティと一致する、と判断することに応じて、第1の疎要素アクセスユニットは、特定の疎要素を含む第1の密行列と関連付けられる疎要素の第1の部分集合をフェッチしてもよい。たとえば、それがデータベーステーブル1番の疎要素1番~50番にアクセスするよう構成されると判断することに応じて、疎要素アクセスユニットX1,1は、データベーステーブル1番の疎要素1番~50番を、これらの疎要素が格納されているデータ片からフェッチしてもよい。
【0042】
第2の疎要素アクセスユニットは、第1の密行列と関連付けられる疎要素の第2の異なる部分集合をフェッチしてもよい。たとえば、図2Cを参照して、疎要素アクセスユニットX1,2は、データベーステーブル2番の疎要素51番~200番にアクセスするよう構成されてもよい。それがデータベーステーブル2番の疎要素100番~200番にアクセスするよう構成されると判断することに応じて、疎要素アクセスユニットX1,2は、これらの疎要素が格納されているデータ片からこれらの疎要素をフェッチしてもよい。
【0043】
システムは、疎要素アクセスユニットの第2の群によってフェッチされる第2の密行列と関連付けられる疎要素を得る(406)。たとえば、図2Cを参照して、第2の群疎要素アクセスユニットは、M×N個の疎要素アクセスユニットのM番目の行であってもよく、疎要素アクセスユニットXM,Nは、データベーステーブル1,000番の疎要素9,000番~10,000番にアクセスするよう構成されてもよい。それがデータベーステ
ーブル1,000番の疎要素9,050番~9,060番にアクセスするよう構成されると判断することに応じて、疎要素アクセスユニットXM,Nは、これらの疎要素が格納されているデータ片からこれらの疎要素をフェッチし、これらの疎要素に基いて密行列246を生成してもよい。
【0044】
いくつかの実現例では、第1の疎要素アクセスユニットは、第1のデータ片から第1の密行列と関連付けられる疎要素の第1の部分集合をフェッチしてもよく、第2の疎要素アクセスユニットは、第2の異なるデータ片から第1の密行列と関連付けられる疎要素の第2の異なる部分集合をフェッチしてもよい。たとえば、図1を参照して、第1の疎要素アクセスユニットは、データ片106aから第1の密行列と関連付けられる疎要素の第1の部分集合をフェッチしてもよく、第2の疎要素アクセスユニットは、データ片106bから第1の密行列と関連付けられる疎要素の第2の異なる部分集合をフェッチしてもよい。
【0045】
システムは、第1の密行列と関連付けられる疎要素および第2の密行列と関連付けられる疎要素を変換して、第1の密行列と関連付けられる疎要素および第2の密行列と関連付けられる疎要素を含む出力密行列を生成する(408)。たとえば、図2Cを参照して、疎密変換ユニット200は、密行列242、244および246を、プロセッサユニットのための密行列に変換してもよい。
【0046】
いくつかの実現例では、第1の密行列と関連付けられる疎要素および第2の密行列と関連付けられる疎要素は多次元の行列であってもよく、出力密行列はベクトルであってもよい。たとえば、密行列242は100×10の次元を有してもよく、密行列244は20×100の次元を有してもよく、密行列246は3×3の次元を有してもよい。疎密変換ユニット200は、密行列242、244および246を、1×3009の次元でベクトルに変換してもよい。
【0047】
図5は、密行列を生成するためのプロセス500の例を示すフローチャートである。プロセス500は、疎密変換ユニット104または疎要素アクセスユニット300などのようなシステムによって実行されてもよい。
【0048】
システムは特定の疎要素の部分集合にアクセスすることに対する指示を受ける(502)。たとえば図3Aを参照して、データフェッチユニット304は、データ片330から1つ以上の要求された疎要素をフェッチするための信号344を受信するよう構成されてもよい。いくつかの実現例では、1つ以上のデータ片において格納される特定の疎要素に対する要求が、ノードネットワーク上で受けられてもよい。たとえば図3Aを参照して、要求識別ユニット302は、データ片330において格納された疎要素をフェッチするようノードネットワーク320上で要求342を受けるよう構成されてもよい。システムは、データフェッチユニットは特定の疎要素の部分集合を扱うよう割当てられる、と判断してもよい。たとえば、要求識別ユニット302は、疎要素アクセスユニット300は要求342によって示される疎要素にアクセスするよう割当てられるかどうかを判断するよう構成されてもよい。データフェッチユニットは特定の疎要素の部分集合を扱うよう割当てられる、と判断することに応じて、その指示は特定の疎要素の部分集合にアクセスすることに対して生成されてもよい。たとえば、特定の要求された疎要素の識別(たとえば、データベーステーブル1番の1番)がルックアップテーブルに含まれている場合には、要求識別ユニット302は、特定の要求された疎要素をフェッチするよう、信号344をデータフェッチユニット304に送信してもよい。
【0049】
システムは、特定の疎要素の部分集合の識別に基いて、特定の疎要素の部分集合をフェッチするためのプロセッサ指定を判断する(504)。たとえば図3Aを参照して、データフェッチユニット304は1つ以上のプロセッサ322a~322kを含む。プロセッ
サ322a~322kの各々は、疎要素の識別に基いて特定の疎要素に割当てられてもよく、データフェッチユニット304は、プロセッサ322a~322kに対する1つ以上の要求を疎要素の識別に基いて発生させるよう構成されてもよい。いくつかの実現例では、システムは、システムが特定の疎要素の部分集合を扱うよう割当てられると判断してもよく、システムはルックアップテーブルに基いて特定の疎要素の部分集合を扱うよう割当てられると判断することを含む。たとえば、データフェッチユニット304はルックアップテーブルを用いることによってプロセッサ割当を判断してもよい。
【0050】
システムは、指定に基いて、および複数個のプロセッサのうちの第1のプロセッサによって、特定の疎要素の部分集合の第1の疎要素をフェッチする(506)。たとえば図3Aを参照して、データフェッチユニット304は、信号344に含まれる疎要素をフェッチするようプロセッサ322aに命令してもよい。
【0051】
システムは、指定に基いて、および複数個のプロセッサのうちの第2のプロセッサによって、特定の疎要素の部分集合の第2の疎要素をフェッチする(508)。たとえば図3Aを参照して、データフェッチユニット304は、信号344に含まれる異なる疎要素をフェッチするようプロセッサ322bに命令してもよい。
【0052】
いくつかの実現例では、第1のプロセッサから第1の疎要素を含む第1の行列を受取ってもよく、第1の行列は第1の次元を有してもよい。システムは、第1の疎要素を含む第2の行列を生成してもよく、第2の行列は、第1の次元よりも小さい第2の次元を有する。たとえば、疎低減ユニット306はフェッチされた疎要素346の次元を低減するように構成されてもよい。プロセッサ322a~322kの各々は、100×1の次元を有する疎要素を生成してもよい。疎低減ユニット306は、100×kの次元を有する、フェッチされた疎要素346を受け、フェッチされた疎要素346の次元を論理演算、算術演算または両方の組合せによって100×1に低減することによって疎低減要素348を生成してもよい。システムは出力密行列を生成してもよく、出力密行列は第2の行列に基いて生成されてもよい。たとえば、連結ユニット308は、疎低減要素348を再配列および連結して、連結された要素350を生成するように構成されてもよい。
【0053】
いくつかの実現例では、第1の疎要素は第1の時間の点において受取られてもよく、第2の疎要素は第2の異なる時間の点において受取られてもよい。システムは、出力密行列のために第1の疎要素および第2の疎要素の順序を判断してもよい。たとえば図3Aを参照して、プロセッサ322aは、フェッチされた疎要素10番を、フェッチされた疎要素5番を返すように構成されるプロセッサ322bよりも早く、疎低減ユニット306に返すかもしれない。連結ユニット308は、その後受取られる疎要素5番を、より早く受取られた疎要素10番の前に順序づけられるように再配列し、疎要素1番~200番を連結された要素350として連結するよう構成される。
【0054】
システムは、少なくとも第1の疎要素および第2の疎要素に適用される変換に基いて出力密行列を生成する(510)。いくつかの実現例では、システムは、出力密行列を圧縮して、圧縮された出力密行列を生成してもよい。システムは、圧縮された出力密行列をノードネットワークに与えてもよい。たとえば、圧縮/伸長ユニット310は、連結された要素350を圧縮して、ノードネットワーク320のための密行列352を生成するよう構成されてもよい。
【0055】
いくつかの実現例では、システムは、ノードネットワーク上で送信される密行列を表す第1の密行列を受取ってもよく、第1の密行列、第1の疎要素および第2の疎要素に基いて出力密行列を生成してもよい。たとえば、疎要素アクセスユニット300は、ノードネットワーク320を介して近隣の疎要素アクセスユニットから密行列を受けてもよい。疎
要素アクセスユニット300は受取られた密行列を伸長してもよく、伸長された密行列を連結された要素350と連結して、更新された連結された要素を形成してもよく、それらは圧縮され、次いでノードネットワーク320に出力されることができる。
【0056】
いくつかの実現例では、特定の疎要素のうちの1つ以上の疎要素は、多次元の行列であり、出力密行列はベクトルである。主題の実施形態および本明細書に記載される機能的動作は、デジタル電子回路において、有形に実施されたコンピュータソフトウェアもしくはファームウェアにおいて、本明細書において開示された構造およびそれらの構造等価物を含むコンピュータソフトウェアにおいて、または、それらの1つ以上の組合せにおいて実現され得る。本明細書に記載される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的なプログラム担体上でエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして実現され得る。代替的に、または加えて、プログラム命令は、データ処理装置による実行に対して好適な受信側装置への送信のために情報をエンコードするよう生成される、たとえばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生成された伝播される信号上でエンコードすることができる。コンピュータ記憶媒体は、コンピュータ読取可能記憶装置、コンピュータ読取可能記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それらの1つ以上の組合せであり得る。
【0057】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置、デバイスおよびマシンを包含する。当該装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)といった特定目的論理回路を含み得る。当該装置は、ハードウェアに加えて、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または、それらの1つ以上の組合せを構成するコードといった、当該コンピュータプログラムについて実行環境を作成するコードをさらに含み得る。
【0058】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプトまたはコードとも称され、または記載され得る)コンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、もしくは、コンピューティング環境で使用するのに好適な他のユニットとして任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、対応する必要があるわけではない。プログラムは、当該プログラムに専用である単一のファイルにおいて、または、複数の連携ファイル(coordinated files)(たとえばコードの1つ以
上のモジュール、サブプログラムまたは部分を格納するファイル)において、他のプログラムまたはデータ(たとえばマークアップ言語ドキュメントに格納される1つ以上のスクリプト)を保持するファイルの一部に格納され得る。コンピュータプログラムは、1つの場所に位置するかもしくは複数の場所にわたって分散され通信ネットワークによって相互接続される1つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
【0059】
本明細書に記載されるプロセスおよび論理フローは、入力データ上で動作し出力を生成することにより機能を実行するよう1つ以上のプログラマブルプロセッサが1つ以上のコンピュータプログラムを実行することによって実行され得る。プロセスおよび論理フローは、たとえばFPGA(フィールドプログラマブルゲートアレイ)、ASIC(特定用途向け集積回路)といった特殊目的論理回路として、またはGPGPU(汎用グラフィック
処理装置)として実現され得る。
【0060】
コンピュータプログラムの実行に好適であるプロセッサは、例として、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。一般に、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受取る。コンピュータの必須の要素は、命令を実行するための中央処理ユニットと、命令およびデータを格納するための1つ以上のメモリデバイスとである。一般に、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶装置からデータを受取るかもしくは当該1つ以上の大容量記憶装置にデータを転送するよう動作可能に結合されるか、またはその両方を行う。しかしながら、コンピュータはそのような装置を有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置(たとえばユニバーサルシリアルバス(USB)フラッシュドライブ)といった別のデバイスに埋め込まれ得る。
【0061】
コンピュータプログラム命令およびデータを格納するのに好適であるコンピュータ読取可能媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリ素子といった半導体メモリデバイスと、たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスクと、光磁気ディスクと、CD-ROMおよびDVD-ROMディスクとを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、特殊目的論理回路によって補足され得るか、または特殊目的論理回路に組み込まれ得る。
【0062】
ユーザとのインタラクションを提供するために、本明細書に記載される主題の実施形態は、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタといったユーザに対して情報を表示するための表示デバイスと、たとえばマウス、トラックボールといったユーザがコンピュータに入力を提供可能であるキーボードおよびポインティングデバイスとを有するコンピュータ上で実現され得る。他の種類のデバイスが同様に、ユーザとのインタラクションを提供するために使用され得;たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった任意の形態の感覚フィードバックであり得;ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受取られ得る。加えて、コンピュータは、ユーザが使用するデバイスにドキュメントを送信しユーザが使用するデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。
【0063】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含む計算システムにおいて実現され得るか、たとえばアプリケーションサーバといったミドルウェアコンポーネントを含む計算システムにおいて実現され得るか、たとえば本明細書に記載される主題の実現例とユーザが対話することが可能であるグラフィカルユーザーインターフェイスもしくはウェブブラウザを有するクライアントコンピュータといったフロントエンドコンポーネントを含む計算システムにおいて実現され得るか、または1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネントもしくはフロントエンドコンポーネントの任意の組合せの計算システムにおいて実現され得る。システムのコンポーネントは、たとえば通信ネットワークといったデジタルデータ通信の任意の形態または媒体によって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」
)、たとえばインターネットを含む。
【0064】
計算システムはクライアントおよびサーバを含むことができる。クライアントとサーバとは一般に互いから遠隔にあり、典型的には通信ネットワークを通じて対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されるとともに互いに対してクライアント-サーバ関係を有するコンピュータプログラムによって発生する。
【0065】
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。別個の実施形態の文脈で本明細書において記載されるある特徴は、単一の実施形態において組合せでも実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載されているとともにそのように最初は請求されている場合があるが、請求される組合せのうちの1つ以上の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合わせの変形例に関し得る。
【0066】
同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。ある状況においては、マルチタスキングおよび並列処理が有利であり得る。さらに、上に記載された実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきでなく、記載されたプログラムコンポーネントおよびシステムは一般に、単一のソフトウェアプロダクトに一緒に統合され得るか、または、複数のソフトウェアプロダクトへとパッケージ化され得るということが理解されるべきである。
【0067】
主題の特定の実施形態が記載された。他の実施形態は以下の請求の範囲内にある。たとえば、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある実現例においては、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0068】
100 計算システム、 102 処理ユニット、104 疎密変換ユニット、106a~106k データ片、200 疎密変換ユニット、300 疎要素アクセスユニット、302 要求識別ユニット、304 データフェッチユニット、306 疎低減ユニット、308 連結ユニット、310 圧縮/伸長ユニット、312 分割ユニット、330 データ片、320 ノードネットワーク、322a~322k プロセッサ。
図1
図2A
図2B
図2C
図2D
図3A
図3B
図4
図5