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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-519307柔軟でスケーラブルなグラフ処理アクセラレータ
<>
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図1
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図2
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図3
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図4A
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図4B
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図4C
  • 特表-柔軟でスケーラブルなグラフ処理アクセラレータ 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-10
(54)【発明の名称】柔軟でスケーラブルなグラフ処理アクセラレータ
(51)【国際特許分類】
   G06F 17/16 20060101AFI20240501BHJP
   G06F 15/82 20060101ALI20240501BHJP
【FI】
G06F17/16 S
G06F15/82 660B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023567235
(86)(22)【出願日】2022-02-18
(85)【翻訳文提出日】2023-11-20
(86)【国際出願番号】 US2022016975
(87)【国際公開番号】W WO2022240463
(87)【国際公開日】2022-11-17
(31)【優先権主張番号】63/188,175
(32)【優先日】2021-05-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/564,413
(32)【優先日】2021-12-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ガネシュ ダシカ
(72)【発明者】
【氏名】マイケル イグナトウスキー
(72)【発明者】
【氏名】マイケル シュルテ
(72)【発明者】
【氏名】ガブリエル ロー
(72)【発明者】
【氏名】バレンティナ サラプラ
(72)【発明者】
【氏名】アンジェラ ダルトン
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB38
(57)【要約】
アクセラレータデバイスは、グラフデータセットの構造にアクセスするための第1の処理ユニットと、グラフデータセット内のデータ値に基づいて計算を実行するために第1の処理ユニットに結合された第2の処理ユニットと、を備える。
【選択図】図2
【特許請求の範囲】
【請求項1】
グラフデータセットの構造にアクセスするように構成された第1の処理ユニットと、
前記第1の処理ユニットに結合され、前記グラフデータセット内のデータ値に基づいて計算を実行するように構成された第2の処理ユニットと、を備える、
アクセラレータデバイス。
【請求項2】
前記第1の処理ユニットは、
前記グラフデータセット内の頂点を追加及び除去することと、
前記グラフデータセット内のエッジを追加及び除去することと、
を行うように構成された1つ以上の回路を含み、
前記第2の処理ユニットは、前記計算を実行するためのプログラムコードを実行するように構成された中央処理ユニットを含む、
請求項1のアクセラレータデバイス。
【請求項3】
前記第1の処理ユニットは、
前記グラフデータセット内の頂点を追加及び除去することと、
前記グラフデータセット内のエッジを追加及び除去することと、
を行うためのプログラムコードを実行するように構成された中央処理ユニットを含み、
前記第2の処理ユニットは、前記計算を実行するように構成された1つ以上の回路を含む、
請求項1のアクセラレータデバイス。
【請求項4】
前記第2の処理ユニットは、機能ユニットのシストリックアレイを含む、
請求項3のアクセラレータデバイス。
【請求項5】
機能ユニットのセットの各機能ユニットは、1つ以上のゼロオペランド計算をスキップするように構成されたゼロ検出回路を含む、
請求項3のアクセラレータデバイス。
【請求項6】
複数のメモリデバイスから前記グラフデータセットの第1の部分を取得するように構成された収集ユニットと、
前記グラフデータセットの第2の部分を前記複数のメモリデバイスに送信するように構成された分散ユニットと、を備える、
請求項1のアクセラレータデバイス。
【請求項7】
前記グラフデータセットの一部を第1の表現から第2の表現に変換するように構成されたフォーマットシャッフルユニットを備える、
請求項1のアクセラレータデバイス。
【請求項8】
グラフデータセットをメモリデバイスのセットに記憶することと、
アクセラレータデバイスの第1の処理ユニットにおいて、前記グラフデータセットの構造にアクセスすることと、
前記アクセラレータデバイスの第2の処理ユニットにおいて、前記グラフデータセット内のデータ値に基づいて計算を実行することと、を含む、
方法。
【請求項9】
前記グラフデータセットの構造にアクセスすることは、前記第1の処理ユニットの機能ユニットのセットにおいて、前記グラフデータセット内の1つ以上の頂点を追加又は除去することと、前記グラフデータセット内の1つ以上のエッジを追加又は除去することと、によって前記構造を修正することを含み、
前記計算を実行することは、前記第2の処理ユニットにおいて、前記データ値に対して1つ以上の算術演算を実行するためのプログラムコードを実行することを含む、
請求項8の方法。
【請求項10】
前記計算を実行することは、前記第2の処理ユニット内の機能ユニットのセットにおいて、前記データ値に対して1つ以上の算術演算を実行することを含み、
前記グラフデータセットの構造にアクセスすることは、前記アクセラレータデバイスの前記第2の処理ユニットにおいて、前記グラフデータセット内の1つ以上の頂点を追加又は除去することと、前記グラフデータセット内の1つ以上のエッジを追加又は除去することと、を行うためのプログラムコードを実行することを含む、
請求項8の方法。
【請求項11】
前記アクセラレータデバイスのフォーマットシャッフルユニットにおいて、前記グラフデータセットの一部を第1の表現から第2の表現に変換することを含む、
請求項8の方法。
【請求項12】
複数のメモリデバイスから前記グラフデータセットの第1の部分を取得することと、
前記グラフデータセットの第2の部分を前記複数のメモリデバイスに送信することと、を含む、
請求項8の方法。
【請求項13】
各々がグラフデータセットの一部を記憶する複数のメモリデバイスと、
前記複数のメモリデバイスに結合された複数のアクセラレータデバイスと、を備え、
前記複数のアクセラレータデバイスの各アクセラレータデバイスは、
前記グラフデータセットの構造にアクセスすることと、
前記グラフデータセット内のデータ値に基づいて計算を実行することと、
を行うように構成されている、
コンピューティングシステム。
【請求項14】
前記複数のアクセラレータデバイスの各アクセラレータデバイスは、
前記グラフデータセットの構造を修正するように構成された頂点処理ユニットと、
前記グラフデータセットのデータ値に対して1つ以上の算術演算を実行するように構成されたスループット処理ユニットと、を含む、
請求項13のコンピューティングシステム。
【請求項15】
前記複数のアクセラレータデバイスのうち第1のアクセラレータデバイスと、前記複数のアクセラレータデバイスのうち第2のアクセラレータデバイスと、が異なるハードウェア構成を有する場合に、
前記第1のアクセラレータデバイスは、前記第2のアクセラレータデバイスと同じ機能セットを実行するように構成されており、
前記機能セットは、前記第1のアクセラレータデバイス及び前記第2のアクセラレータデバイスの両方において共通のプログラミングインタフェースを介してアクセス可能である、
請求項13のコンピューティングシステム。
【請求項16】
前記複数のアクセラレータデバイスのうち第1のアクセラレータデバイスにおいて前記グラフデータセットに対して機能を実行するための第1のセットの機能ユニットは、前記複数のアクセラレータデバイスのうち第2のアクセラレータデバイスにおいて前記機能を実行するための第2のセットの機能ユニットよりも大きいスループット能力を有する、
請求項13のコンピューティングシステム。
【請求項17】
前記複数のアクセラレータデバイスのうち第1のアクセラレータデバイスは、処理ユニットにおいてプログラムコードを実行することによって、前記グラフデータセットに対して機能を実行するように構成されており、
前記複数のアクセラレータデバイスのうち第2のアクセラレータデバイスは、1つ以上の回路において前記機能を実行するように構成されている、
請求項13のコンピューティングシステム。
【請求項18】
各アクセラレータデバイスは、前記複数のメモリデバイスのうちローカルメモリデバイスに記憶された前記グラフデータセットの部分に対して動作するように構成されており、
前記ローカルメモリデバイスは、前記複数のメモリデバイスのうち他の何れのメモリデバイスよりも前記アクセラレータデバイスに近い、
請求項13のコンピューティングシステム。
【請求項19】
前記複数のアクセラレータデバイスの各アクセラレータデバイスは、前記計算を実行するように構成された機能ユニットのシストリックアレイを含み、
前記機能ユニットのセットの各々は、1つ以上のゼロオペランド計算をスキップするように構成されたゼロ検出回路を含む、
請求項13のコンピューティングシステム。
【請求項20】
前記複数のアクセラレータデバイスの各アクセラレータデバイスは、
前記複数のメモリデバイスから前記グラフデータセットの第1の部分を取得するように構成された収集ユニットと、
前記グラフデータセットの第2の部分を前記複数のメモリデバイスに送信するように構成された分散ユニットと、を含む、
請求項13のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年5月13日に出願された米国仮出願第63/188,175号に対する優先権を主張し、当該出願の全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
グラフは、エッジによって他のノードに接続されるノード又は頂点を有するデータ構造である。各ノード及び/又はエッジは、追加のデータ値に関連付けられてもよい。多くの機械学習、データマイニング及び科学計算をグラフ構造化計算としてモデル化することができるので、グラフ分析は人気のあるアプリケーション領域である。例えば、大きなグラフデータセットは 、ソーシャルネットワーク内の人々の間の関係を表すため、薬物合成のための異なる分子間の相互作用をモデル化するため、推奨を生成するため等に使用され得る。
【0003】
グラフ分析の性能及びコストに影響を及ぼす1つの次元は、グラフデータセットのサイズである。非常に大きいグラフデータセットは、多くの場合、複数のメモリデバイスにわたって分散され、そのような大きいグラフデータセットに関連付けられた計算は、システム内の複数のコンピューティングノードによって実行される。しかしながら、このようにグラフコンピューティングシステムをスケーリングすることは、性能ボトルネック(例えば、増加した通信レイテンシによる)並びに柔軟性及び均一性の欠如等の問題をもたらし得る。
【0004】
本開示は、添付の図面の図において、限定としてではなく例として示される。
【図面の簡単な説明】
【0005】
図1】グラフ処理アクセラレータデバイスを実装するコンピューティングシステムの一実施形態を示す図である。
図2】グラフ処理アクセラレータデバイスの一実施形態を示す図である。
図3】一実施形態による、コンピューティングシステムに展開されたグラフ処理アクセラレータデバイスを示す図である。
図4A】一実施形態による、スループット処理ユニット内の機能ユニットのシストリックアレイを示す図である。
図4B】一実施形態による、スループット処理ユニット内の機能ユニットのシストリックアレイを示す図である。
図4C】一実施形態による、スループット処理ユニットにおいて行列乗算を実行するプロセスを示す図である。
図5】一実施形態による、グラフ処理アクセラレータデバイスを実装するコンピューティングシステムにおいてグラフデータを処理するプロセスを示す図である。
【発明を実施するための形態】
【0006】
以下の明細書では、実施形態の理解を深めるために、特定のシステム、構成要素、方法等の例等の多数の具体的な詳細を記載する。しかしながら、少なくともいくつかの実施形態がこれらの具体的な詳細なしに実施され得ることは、当業者には明らかである。他の例では、実施形態を不必要に曖昧にすることを回避するために、周知の構成要素又は方法は詳細に記載されないか、又は、簡易ブロック図の形式で提示される。したがって、記載された具体的な詳細は単なる例示にすぎない。特定の実施形態は、これらの例示的な詳細とは異なっていてもよく、依然として実施形態の範囲内にあると考えられる。
【0007】
グラフ処理及びグラフ分析は、現代のデータセンタにおいて非常に人気のあるアプリケーション空間であり、ソーシャルネットワーク分析、推奨システム、薬物合成等を含む多種多様なアプリケーションを包含する。プログラムするのが簡単なスケーラブルハードウェアソリューションを提供することにより、様々なコンピューティングプラットフォーム上でのこれらのアプリケーションの展開を容易にすることができる。グラフ処理は、計算及びメモリ集約的であり、専用ハードウェアアクセラレータから利益を得ることができる。しかしながら、特定の処理ボトルネックに対処するように調整されたハードウェアソリューションは、異なるソフトウェア及びプログラミングインタフェースをもたらすので、既存の手法は、高度な非反復エンジニアリング(NRE)に関連付けられる。
【0008】
更に、より大きなグラフの処理は、グラフデータが、より小さなグラフと比較して、コンピューティングシステム内のより広いエリアにわたって物理的に配置されることを意味する。アクセラレータハードウェアの有効性は、アクセラレータハードウェアがデータから遠く離れて位置する場合に影響を受ける可能性がある。しかしながら、システムの異なる部分にアクセラレータ機能を配置することは、アクセラレータが特定の位置で動作するように最適化するために、ハードウェア(したがって、ソフトウェア/プログラミングインタフェース)の違いにつながる可能性がある。
【0009】
一実施形態では、グラフ処理アクセラレータアーキテクチャは、処理されているグラフデータがメモリ内に存在する場所に可能な限り近接してグラフデータを処理し、中央処理ユニット(CPU)に取り付けられた、ネットワークに取り付けられた、メモリに取り付けられた、ストレージに取り付けられた場所等を含むがこれらに限定されない、コンピューティングシステム全体の様々な異なる場所に配置することができる。しかしながら、アクセラレータの機能にアクセスするためのプログラミングインタフェースは、特定のマイクロアーキテクチャにかかわらず一定のままであり、その結果、アクセラレータ用のソフトウェアを書くことは、著しく容易であり、よりスケーラブルである。一実施形態において、グラフ処理アクセラレータは、行列演算を実行するための単一命令複数データ(SIMD)又はシストリックアレイベース(systolic-array-based)のスループット処理ユニット(又はベクトル処理ユニット)と、グラフデータの構造(すなわち、ノード及びエッジ)を操作するための頂点処理ユニットと、異なるスパース表現間でスパース行列を変換するためのフォーマットシャッフルユニット(format shuffle unit)と、プログラム可能な収集/分散ユニットと、汎用CPUと、を含む。
【0010】
図1は、上述したグラフ処理アクセラレータを含むコンピューティングシステム100の一実施形態を示している。概して、コンピューティングシステム100は、ラップトップコンピュータ又はデスクトップコンピュータ、携帯電話、サーバ、データセンタ等を含むがこれらに限定されない、多数の異なるタイプのデバイスの何れかとして具現化される。コンピューティングシステム100は、相互接続部101を介して互いに通信可能な多数の構成要素102~108を含む。コンピューティングシステム100において、構成要素102~108の各々は、相互接続部101を介して直接、又は、他の構成要素102~108のうち1つ以上を介して、他の構成要素102~108の何れかと通信することができる。コンピューティングシステム100内の構成要素101~108は、ラップトップコンピュータ若しくはデスクトップコンピュータのシャーシ又は携帯電話のケーシング等の単一の物理的ケーシング内に収容される。代替の実施形態では、コンピューティングシステム100の構成要素のうちいくつかは、コンピューティングシステム100全体が単一の物理的ケーシング内に存在しないように、周辺デバイスとして具現化される。
【0011】
また、コンピューティングシステム100は、ユーザから情報を受信する、又は、ユーザに情報を提供するためのユーザインタフェースデバイスを含み得る。具体的には、コンピューティングシステム100は、キーボード、マウス、タッチスクリーン、又は、ユーザから情報を受信するための他のデバイス等の入力デバイス102を含み得る。コンピューティングシステム100は、モニタ、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ、又は、他の出力装置等のディスプレイ105を介してユーザに情報を表示する。
【0012】
コンピューティングシステム100は、有線ネットワーク又は無線ネットワークを介してデータを送受信するためのネットワークアダプタ107を更に含む。また、コンピューティングシステム100は、1つ以上の周辺デバイス108を含む。周辺デバイス108は、大容量ストレージデバイス、位置検出デバイス、センサ、入力デバイス、又は、コンピューティングシステム100によって使用され得る他の種類のデバイスを含む。
【0013】
コンピューティングシステム100は、メインメモリ106又は他のメモリデバイス(例えば、処理ユニット104のうち1つ以上にローカルなメモリ)に記憶される命令106aを受信及び実行可能な1つ以上の処理ユニット104を含む。本明細書で参照されるように、処理ユニット104は、1つ以上のプロセッサ「パイプライン」を表し、中央処理ユニット(CPU)パイプライン、グラフ処理ユニット(GPU)パイプライン、又は、他のコンピューティングエンジンを含むことができる。メインメモリ106は、ランダムアクセスメモリ(RAM)モジュール、読み出し専用メモリ(random-access memory、ROM)モジュール、ハードディスク、及び、他の非一時的なコンピュータ可読媒体等のように、コンピューティングシステム100によって使用されるメモリデバイスを含むコンピューティングシステム100のメモリサブシステムの一部である。メインメモリ106に加えて、メモリサブシステムは、L2又はL3キャッシュ等のキャッシュメモリ及び/又はレジスタも含む。そのようなキャッシュメモリ及びレジスタは、処理ユニット104内に、又は、コンピューティングシステム100の他の構成要素上に存在する。
【0014】
図2は、コンピューティングシステム100において展開されるグラフ処理アクセラレータデバイス200の一実施形態を示している。アクセラレータデバイス200は、システム階層の複数のレベルで展開することができ、同じ機能がシステム階層内の全ての場所で公開され、したがって、ソフトウェアインタフェース及びアクセラレータのプログラミングを簡略化する。アクセラレータデバイス200内の回路構成要素は、処理ユニット201~204、ローカルメモリ210、及び、メモリインタフェースモジュール205~209を含む。処理ユニット201~203は、特定のグラフ処理タスクを実行するための専用ハードウェア機能ユニット(例えば、シストリックアレイ構成)を含む。一実施形態では、機能ユニットで実行される計算は、プログラムコードを実行することなく、回路で実行される。
【0015】
スループット処理ユニット201(又はベクトル処理ユニット)は、グラフデータセットのデータ値に基づいて、算術演算や線形代数演算等の計算を行う処理ユニットである。一実施形態では、スループット処理ユニット201は、以下を含むが、これらに限定されないテンソル処理のための線形代数プリミティブ機能(linear algebra primitive functions)を実行する。
・行列-行列乗算
・ベクトル-行列乗算
・行列-ベクトル乗算
・ベクトル及び行列の要素ごとの乗算
・ベクトル及び行列の要素ごとの加算
・テンソル又は他のフォーマットの形のサブグラフの選択/抽出
・サブグラフの値をテンソルの形で割り当てること
・機能をテンソルの形でサブグラフに適用すること
・行列をベクトルに、又は、ベクトルを要素に縮小すること
・行列の転置
・2つの行列の間のクロネッカー積又は他の類似の外積を計算すること
【0016】
一実施形態では、スループットユニット201は、単一命令、複数データ(SIMD)アーキテクチャ、又は、上記のプリミティブ機能を実行するための機能ユニットの1つ以上のシストリックアレイを使用して実装される。
【0017】
頂点処理ユニット202は、グラフデータセットの構造(すなわち、ノード/頂点、エッジ、並びに、ノード及び/又はエッジに関連付けられたプロパティ又はメタデータ)にアクセス及び/又はそれを修正するための機能ユニットを含む。一実施形態では、頂点処理ユニット202は、限定はしないが、以下を含むグラフ操作プリミティブ機能をサポートする。
・頂点の追加/除去
・クエリに基づくフィルタリング、所定のストラテジーによる分割
・エッジを一緒にグループ化すること
・エッジの結合
・頂点を一緒にグループ化すること
・頂点の結合
・隣接ノード識別子(ID)の収集
・接続された構成要素の収集
・グラフの反転(転置)
・フィルタに基づいてグラフからサブグラフを収集すること
・フィルタに基づくグラフ内のサブノードのマスキング
・ノード値集約
【0018】
更に、実施形態は、以下を含むがこれらに限定されない、グラフの基礎となる行列表現に対する基本動作をサポートすることができる。
・行列のサイズ変更
・行列のクリア
・要素の除去又は抽出
・要素の値を設定すること
【0019】
また、アクセラレータデバイス200は、異なるスパース表現間でスパース行列又は他のデータ構造タイプを変換するための計算ハードウェアを含むフォーマットシャッフルユニット203を含む。フォーマットシャッフルユニット203は、グラフデータセットの少なくとも一部を第1の表現から第2の表現に変換することができる。一実施形態では、フォーマットシャッフルユニット203は、以下の変換動作をサポートする。
・圧縮されたスパース行(CSR)、圧縮されたスパース列(CSC)、座標リスト(COO)、階層座標(HiCOO)、ELLPACK(ELL)、及び、スライスされたELLPACK(SELL-C-sigma)等の様々なスパーステンソル表現フォーマット間の変換
・スパーステンソル表現と密表現との間の変換及びその逆
・隣接リスト、隣接行列及びエッジリスト等の様々なグラフ表現間の変換
・圧縮表現と非圧縮表現との間の変換
【0020】
上記の処理構成要素201~203は、それぞれのタスクを実行するための専用ハードウェアを含む。特定の処理ユニットタイプを含む所定のアクセラレータデバイスの場合、含まれる処理ユニットが最適化されるタスクは、主に、その処理ユニット内の専用ハードウェアによって実行される。例えば、頂点処理ユニット202を含むアクセラレータデバイスは、他の構成要素ではなく頂点処理ユニット202においてグラフデータ構造操作を主に実行する。
【0021】
コンピューティングシステム100の一実施形態では、システム100内の各グラフ処理アクセラレータは、プリミティブ機能の同じ基本セットをサポートする。しかしながら、システム100内の所定のアクセラレータデバイスは、処理ユニットタイプ201~203の全てを含む必要はない。所定のアクセラレータデバイス200が専用ハードウェアを含まないタスクは、代わりにCPU204(例えば、x86CPU)によって実行される。例えば、専用頂点処理ユニット202を含まないグラフ処理アクセラレータデバイスは、CPU204においてグラフデータ構造操作を実行する。しかしながら、少なくともいくつかのタスクは、アクセラレータデバイス200が含むタスクのために最適化されたハードウェアを有する専用処理ユニット201~203のうち何れかによって実行される。
【0022】
例示的なコンピューティングシステム100では、システム100内の各グラフ処理アクセラレータデバイス200は、CPU204と、処理ユニット201~203のうち少なくとも1つと、を含む。アクセラレータデバイス200の各々は、処理ユニット201~203の専用ハードウェア及び汎用CPU204(機能のための専用ハードウェアが含まれない場合)において実装されるグラフ処理プリミティブ機能の少なくとも同じ基本セットをサポートする。アクセラレータ200の様々な実施形態は、上に列挙したものよりも少ない又は多いプリミティブ機能をサポートすることができる。
【0023】
アクセラレータデバイス200のメモリインタフェース部分は、プログラム可能な収集ユニット205及び分散ユニット206、入力/出力モジュール207、並びに、圧縮ユニット209及び解凍ユニット208のうち1つ以上を含む。収集ユニット205は、メモリ位置の疎(sparse)な範囲からデータを取り出すことができ、分散ユニット206は、メモリ位置の疎な範囲にわたって分散させる(すなわち、データを記憶する)ことができる。収集ユニット205は、I/Oモジュール207を介してシステム100内の複数のメモリ場所(例えば、異なるメモリデバイス)からグラフデータセットの一部を取得する。データは、圧縮された形式でI/Oモジュール207で受信することができ、解凍ユニット208で解凍される。収集ユニット205は、圧縮解除されたグラフデータをローカルメモリ210に記憶し、そこに対して、処理ユニット201~204が計算のためにアクセスすることができる。
【0024】
分散ユニット206は、システム100内の1つ以上のリモートメモリデバイスに記憶されるグラフデータセットの一部を送信する。一実施形態では、分散ユニット206は、ローカルメモリ210からリモートメモリデバイスに記憶されるデータ(例えば、処理ユニット201~204によって実行される計算から生じるデータ)を取得する。データは、圧縮ユニット209において圧縮され、次いで、I/Oモジュール207を介して、相互接続部101を介して宛先メモリデバイスに送信され得る。
【0025】
図3は、一実施形態による、コンピューティングシステム100内の異なる場所におけるグラフ処理アクセラレータデバイスを示している。図3は、コンピューティングシステム100内の様々な場所にある複数の処理ユニット301~303(処理ユニット104に対応する)、複数のメモリデバイス304及び305(メモリ106に対応する)、ストレージデバイス306(すなわち、周辺デバイス108のうち何れか)、並びに、グラフ処理アクセラレータデバイス314~318を更に示す。アクセラレータデバイス314~318の各々は、アクセラレータデバイス200等の装置によって実装されるが、処理ユニット201~203の全て又はサブセット、及び、構成要素205~209の全て又はサブセットを含んでもよい。グラフ処理アクセラレータデバイス314~318のセットは、プロセッサに取り付けられたアクセラレータ318、メモリに取り付けられたアクセラレータ314及び315、ネットワークに取り付けられたアクセラレータ316、並びに、ストレージに取り付けられたアクセラレータ317を含む。
【0026】
アクセラレータデバイス314~318の各々は、収集ユニット205及び分散ユニット206を含む。コンピューティングシステム100では、グラフデータセットは、メモリデバイス304及び305並びに図示されていない他のメモリデバイスを含む複数のメモリデバイスにわたって記憶され、メモリデバイスの各々は、完全なグラフデータセットの一部を記憶する。アクセラレータデバイス内の収集ユニット205は、相互接続部101を介して1つ以上のメモリデバイスからグラフデータセットの一部を取得し、その結果、その一部をアクセラレータデバイス内で処理することができる。グラフデータの処理が完了すると、分散ユニット206は、相互接続部101を介してグラフデータの処理された部分を送信して、メモリデバイスに記憶させる。一実施形態では、各アクセラレータデバイス314~318は、最も近くに位置するグラフデータに対して動作する。例えば、アクセラレータデバイス314は、システム100内の任意の他のメモリデバイス(例えば、メモリデバイス305)よりもメモリデバイス304に近いので、アクセラレータデバイス314は、主に、そのローカルメモリデバイス304に記憶されたグラフデータセットの部分に対して動作する。言い換えれば、アクセラレータデバイス314で実行される計算の大部分は、他のメモリデバイスではなくメモリデバイス304に記憶されたグラフデータに対して行われる。
【0027】
アクセラレータデバイス314~318の一部又は全部は、アクセラレータデバイスの場所、特定の他のデバイス又は構成要素に対するアクセラレータデバイスの近接性、実行されているアプリケーション等の要因に応じて最適化される異なるスループット及び/又は帯域幅能力を有する構成要素(例えば、ベクトル処理ユニット、頂点処理ユニット、フォーマットシャッフル等)を有する。一実施形態では、アクセラレータデバイスの各々は、アクセラレータ314~318の異なる個々のハードウェア構成にかかわらず、同じ共通ソフトウェア/プログラミングインタフェースを介してアクセス可能な同じ機能セット(例えば、上述したプリミティブグラフ処理機能)を実行することができる。
【0028】
アクセラレータデバイス314~318のスケーラビリティは、グラフアプリケーションの特定の部分を最適化するために個々の構成要素をスケーリングすることによって達成される。これは、例えば、より多数の機能ユニット、メモリ又は他のハードウェアリソースを処理ユニットに含めることによって、処理ユニット201~203のうち1つ以上のサイズ又は容量を増加させることによって達成することができる。したがって、システム100内の異なるアクセラレータデバイスは、同じ機能に対して異なる性能能力を有することができる。例えば、第1のアクセラレータデバイスにおいてグラフデータセットに対して特定の機能を実行するための処理ユニット201~203のうち何れかは、より多くの数の機能ユニット及び/又は他のハードウェアリソースを有してもよく、したがって、第2のアクセラレータデバイスにおいて同じ機能を実行するための、より小さいセットの機能ユニット及びより少ないハードウェアリソースを有する対応する処理ユニットよりも大きなスループット能力を有する(すなわち、所定の時間内により多くのデータを処理することができる)。
【0029】
いくつかの実施形態では、1つのアクセラレータデバイスにおける特定の機能は、そのCPU204においてプログラムコードを実行することによって実行され、別のアクセラレータデバイスでは、同じ機能が1つ以上のハードウェア機能ユニットにおいて実行される。例えば、第1のアクセラレータデバイス内のベクトル処理ユニット202は、グラフデータセット内の頂点エッジを追加及び除去するためのハードウェア機能ユニットを含むが、同じ第1のアクセラレータデバイスは、スループット処理ユニット201を欠き、計算を実行するためのCPU204内のプログラムコードを実行することによってグラフデータ値に対する計算(例えば、算術及び線形代数)を実行する。対照的に、同じコンピューティングシステム100内の第2のアクセラレータデバイスは、頂点処理ユニット202を欠き、グラフデータセット内の頂点及びエッジを追加及び除去するためのプログラムコードをそのCPU204内で実行するが、同じ第2のアクセラレータデバイスは、算術、線形代数及び他の計算を実行するためのハードウェア機能ユニットのアレイを含むスループット処理ユニット201を有する。したがって、これらのアクセラレータデバイスは、同じ機能をサポートするが、これらの機能は、異なるハードウェアにおいて異なる性能特性で実行される。
【0030】
一実施形態では、アクセラレータデバイス314~318の性能能力は、システム100内のそれらの場所に応じて最適化される。例えば、特定のデータが長期ストレージデバイスから(例えば、ストレージデバイス306の近くに存在するアクセラレータ317から)要求される場合、より多くの並列メモリ要求が処理され、正しいデータセットがシステムの別の部分に送信される前に収集されることを確実にするために、より多くのクエリフィルタが実行される可能性が高い。したがって、ローカルアクセラレータデバイス317の頂点処理ユニット202、ならびに収集ユニット205及び分散ユニット206は、機能ユニット及び処理能力を追加してサイズアップされ、一方、スループット処理ユニット201は、CPU204上で実行されるソフトウェアによってその機能が実装されてサイズダウン又は削除される。アクセラレータ317は、グラフデータの1つの部分に近く、それへのアクセスがより大きいが、グラフデータの他の部分へのアクセスはより小さいので、アクセラレータ317が、線形代数計算を実行するために使用されるグラフデータのビュー全体にアクセスすることはより困難である。代わりに、その主要な役割はデータを収集することである。
【0031】
別の例では、メイン計算デバイスである処理ユニット301の近くでインスタンス化されたグラフ処理アクセラレータ318は、比較的大量のデータにさらされないが、実行されているアプリケーションの計算(例えば、線形代数、算術等)で主に占有される。したがって、アクセラレータデバイス318は、より大きくより有能なスループット処理ユニット201と、より小さい頂点処理ユニット202(グラフがそれほど修正されないので)と、より小さい収集/分散ユニット205/206と、を有する。
【0032】
図4Aは、一実施形態による、機能ユニットのシストリックアレイを含むスループット処理ユニット201を示している。スループット処理ユニット201は、グラフデータセットに対する算術演算及び線形代数演算を高速化する。特に、スループット処理ユニット201は、グラフデータセット内に多くのゼロが存在するスパースアプリケーションのためのそのような計算を加速するための専用ハードウェアを含む。図4Aに示すように、スループット処理ユニット201は、計算を実行するための機能ユニットのシストリックアレイ401を含む。シストリックアレイ401は、4ワイド乗算-加算機能ユニットのアレイである。シストリックアレイ401は、2セットの値、A値404及びB値405を受信し、A値404の各々をB値405の各々と乗算する。代替実施形態は、異なる幅及び/又は機能を有する、より少ない又はより多くの機能ユニットを含むことができる。スパース計算の場合、機能ユニットの各々は、そのオペランドの1つとしてゼロを有する1つ以上のゼロオペランド計算をスキップするためのゼロ検出回路を含む。
【0033】
例えば、乗算ユニット402が積Cを生成するために2つの入力A及びBを受信する場合、任意のゼロ値積の計算を回避するために最適化を実行することができる。この場合、2つのスカラー値A及びBを提供するのではなく、オペランドの2つの可能な対(A1、B1)及び(A2、B2)が乗算器に提供される。何れの対が2つの非ゼロ値からなるかに依存して、「1」オペランド(すなわち、A1及びB1)又は「2」オペランド(すなわち、A2及びB2)の何れかが、実際に乗算される。オペランドの「1」セット及び「2」セットの両方が2つの非ゼロ値を有する少数の場合には、追加のバッファリングが提供される。スパースデータセットの場合、2つの非ゼロ値からなるペアは1つしかない可能性が高く、したがって、両方のペアの結果は、ゼロ検出回路403及び単一の乗算器ユニット402を使用して決定することができる可能性が高い。この場合、ゼロ検出回路403は、共に乗算される非ゼロ値であるオペランドのセットを選択し、他のセットの積はゼロである。オペランドの各セットが少なくとも1つのゼロオペランドを有する場合、両方の積はゼロである。オペランドの各セットが2つの非ゼロオペランドを有する場合、1つのセットは第1のサイクルで乗算され、第2のセットは第1のサイクル中にバッファリングされ、後続のサイクルで乗算される。
【0034】
図4Bは、ニューラルネットワーク計算のコンテキストにおいて、(A行列バッファ411に記憶された)重み及び(B行列バッファ412に記憶された)活性化のセットに対して行列乗算演算を実行するためのシストリックアレイの一実施形態を示しており、結果はC行列バッファ413に記憶される。シストリックアレイ414内の乗算/累算ユニット(MAC4)の各々は、A行列411から4つの入力を受け取り、B行列412から4つの入力を受け取る。したがって、MAC4ユニットのアレイ414は、A行列411から合計8つの入力を受け取り、B行列412から8つの入力を受け取るか又は8対のオペランドを受け取る。一実施形態では、図4Aに示す手法を適用するために、ゼロ検出論理がMAC4ユニットに組み込まれる。十分に疎なデータを乗算するために、ほとんどの場合、8対のオペランドのうち4つ以下が2つの非ゼロ値を含む。したがって、4つのMAC4ユニットは、通常、単一サイクルで8対のオペランドの計算を実行するのに十分である。MAC4ユニットは、オペランドの非ゼロ対に対する積を計算し、少なくとも1つのゼロオペランドを有する対に対する乗算結果はゼロに設定される。
【0035】
図4Cは、グラフ処理アクセラレータ200の一実施形態において行列乗算を実行するためのプロセス420を示すフローチャートを示している。行列乗算プロセス420は、図2及び図4Bに示すように、スループット処理ユニット201の構成要素において実行される。ブロック421において、収集ユニット205によってスパース読み出し/収集動作が実行されて、システム100内の1つ以上のメモリデバイスからグラフデータを取り出す。ブロック423において、収集されたデータは、A行列411及びB行列412バッファに格納される。行列乗算は、ブロック425で提供されるように、MAC4ユニットのシストリックアレイ414で実行され、結果は、ブロック427でC行列バッファ413にバッファリングされる。ブロック429において、計算が未だ完了していない場合、プロセス420がブロック425に戻る場合に、C行列バッファ414内の結果が、1つ以上の後続の反復においてMAC4ユニットへの入力として使用され、新しい着信データと乗算される。計算が完了すると、プロセス420は、ブロック429からブロック431に続く。ブロック431において、最終データ(すなわち、計算結果)は、分散ユニット206によってメモリに戻されて記憶される。
【0036】
図5は、一実施形態による、グラフデータセットに対して動作を実行するためのグラフ処理プロセス500を示している。プロセス500は、メモリ106及びグラフ処理アクセラレータ314~318を含むコンピューティングシステム100内の構成要素によって実行される。
【0037】
ブロック501において、グラフデータセット内のデータは、コンピューティングシステム100内の複数のメモリデバイス(例えば、メモリデバイス304及び305)にわたって記憶される。グラフデータセットは、ノード(又は頂点)及びエッジを、ノードとエッジとの間の関係とともに定義する。また、グラフデータセットは、ノード及び/又はエッジに関連付けられたデータ値を含み、非圧縮フォーマット又はCSR、CSC、ELLPACK等の圧縮フォーマットで記憶され得るブロック503において、処理ユニット301~303のうち何れかは、グラフデータに対して演算が実行されることを要求する。処理ユニットは、グラフ処理アクセラレータデバイス314~318のための共通プログラミングインタフェースに従って、演算及び演算が実行されるグラフデータを指定するプログラムコードを実行する。要求は、相互接続部101を介してアクセラレータデバイス314~318のうち1つ以上に送信される。
【0038】
ブロック505~515は、アクセラレータデバイス314によって一般的に表されるアクセラレータデバイス200~318のうち1つ以上において実行される。特に、ブロック505~515の動作は、処理ユニット201~204、収集及び分散ユニット205~206等の構成要素によって実行される。
【0039】
ブロック505において、アクセラレータデバイス200は、メモリデバイス106に格納されたグラフデータに対して演算を実行する要求を受信する。要求は、I/Oモジュール207によって相互接続部101から受信される。ブロック507において、収集ユニット205は、要求された演算が実行されるグラフデータを読み出すことによって要求に応答する。収集ユニット205は、メモリデバイス106からデータを要求し、データは、相互接続部101を介してメモリ106から送信され、圧縮形式でI/Oモジュール207において受信される。データは、解凍ユニット208において解凍され、収集ユニット205は、処理ユニット201~204によってアクセスされ得るローカルメモリ210にデータを記憶する。グラフデータは、グラフの構造的特徴(例えば、ノード/頂点、エッジ等)及び構造的特徴に関連付けられたデータ値を表す。
【0040】
収集されたデータは、ブロック508~513のうち1つ以上において提供されるように、要求に従って処理される。要求された1つ以上の動作に応じて、プロセス500は、ブロック508~513の一部又は全部を含んでもよい。要求された動作がグラフ構造の修正(例えば、ノード又はエッジの追加又は除去等)を伴う場合、ブロック509で提供されるように、グラフデータセットの構造が修正される。演算が実行されるアクセラレータデバイスのハードウェア構成に応じて、グラフ構造の修正は、頂点処理ユニット202内の機能ユニットのセットにおいて実行されるか、又は、アクセラレータデバイスが頂点処理ユニット202を含まない場合、演算は、修正を実行するためのプログラムコードを実行するCPU204において実行される。修正されたグラフデータは、ローカルメモリ210に記憶される。
【0041】
要求された動作が、算術、線形代数又は他の計算等のような、グラフデータセット内のデータ値に基づく計算を含む場合、ブロック511で提供されるように計算が実行される。アクセラレータデバイスのハードウェア構成に応じて、計算は、スループット処理ユニット201内の機能ユニットのセットにおいて実行されるか、又は、アクセラレータデバイスがスループット処理ユニット201を含まない場合、計算は、計算を実行するためのプログラムコードを実行するCPU204において実行される。一例として、図4Cのブロック423~429は、プロセス500のブロック511に対応する。
【0042】
要求された動作が、グラフデータを1つのテンソル表現形式(例えば、CSR、CSC、COO等)から別のテンソル表現形式に変換することを伴う場合、ブロック513で提供されるように変換が実行される。アクセラレータデバイスのハードウェア構成に応じて、計算はフォーマットシャッフルユニット203内の機能ユニットのセットで実行され、又は、アクセラレータデバイスがフォーマットシャッフルユニット203を含まない場合、変換は、変換を実行するためのプログラムコードを実行するCPU204で実行される。
【0043】
要求された動作がブロック509~513のうち1つ以上において完了すると、修正されたグラフデータがローカルメモリ210に記憶される。プロセス500はブロック515に続き、ここで、分散ユニット206は、メモリデバイス106に記憶される修正されたグラフデータを送る。分散ユニット206は、修正されたグラフデータをローカルメモリ210から取得し、グラフデータは圧縮ユニット209において圧縮される。データの圧縮バージョンは、I/Oモジュール207によって、相互接続部101を介してメモリデバイス106に送信される。プロセス500は、グラフデータ上で要求される各動作について繰り返す。したがって、システム100内のアクセラレータデバイス314~318は、サポートされたアクセラレータ機能にアクセスし、高度のスケーラビリティ及び柔軟性を維持するための統一ソフトウェアプログラミングインタフェースを提供しながら、グラフデータセットの処理を容易にする。
【0044】
本明細書で使用される場合、「に結合される」という用語は、1つ以上の介在する構成要素を介して直接的又は間接的に結合されることを意味し得る。本明細書で説明する様々なバスを介して提供される信号の何れも、他の信号と時分割され、1つ以上の共通バスを介して提供され得る。加えて、回路構成要素間又はブロック間の相互接続は、バス又は単一の信号線として示され得る。バスの各々は、代替的に、1つ以上の単一の信号線であってもよく、単一の信号線の各々は、代替的にバスであってもよい。
【0045】
特定の実施形態は、非一時的なコンピュータ可読記憶媒体に記憶された命令を含み得るコンピュータプログラム製品として実装され得る。これらの命令は、説明された動作を実行するように汎用プロセッサ又は専用プロセッサをプログラムするために使用され得る。コンピュータ可読記憶媒体は、機械(例えば、コンピュータ)によって可読な形態(例えば、ソフトウェア、処理アプリケーション)で情報を記憶又は送信するための任意の機構を含む。非一時的なコンピュータ可読記憶媒体は、磁気記憶媒体(例えば、フロッピー(登録商標)ディスケット)と、光記憶媒体(例えば、CD-ROM)と、光磁気記憶媒体と、読み出し専用メモリ(ROM)と、ランダムアクセスメモリ(RAM)と、消去可能なプログラマブルメモリ(例えば、EPROM及びEEPROM)と、フラッシュメモリと、電子命令を記憶するのに適した別のタイプの媒体と、を含んでもよいが、それに限定されない。
【0046】
加えて、いくつかの実施形態は、コンピュータ可読媒体が2つ以上のコンピュータシステム上に記憶され、及び/又は、2つ以上のコンピュータシステムによって実行される分散コンピューティング環境において実施されてもよい。加えて、コンピュータシステム間で転送される情報は、コンピュータシステムを接続する伝送媒体を介してプルされるか又はプッシュされるかの何れかであり得る。
【0047】
概して、コンピュータ可読記憶媒体に搭載されるコンピューティングシステム100及び/又はその一部を表すデータ構造は、プログラムによって読み取られることができ、コンピューティングシステム100を含むハードウェアを製造するために、直接又は間接的に使用され得るデータベース又は他のデータ構造であり得る。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(high-level design language、HDL)におけるハードウェア機能の行動レベルの記述又はレジスタ転送レベル(register-transfer level、RTL)の記述であり得る。記述は、合成ライブラリからゲートのリストを含むネットリストを生成するために記述を合成することができる合成ツールによって読み取ることができる。ネットリストは、コンピューティングシステム100を含むハードウェアの機能も表すゲートのセットを含む。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。次いで、マスクは、コンピューティングシステム100に対応する半導体回路(複数可)を製造するために、様々な半導体製造工程において使用され得る。代替的に、コンピュータ可読記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであり得る。
【0048】
本明細書における方法の動作は特定の順序で示され説明されているが、各方法の動作の順序は、特定の動作が逆の順序で実行され得るように、又は、特定の動作が少なくとも部分的に他の動作と同時に実行され得るように変更され得る。別の実施形態では、個別の動作の命令又はサブ動作は、断続的及び/又は交互に行われてもよい。
【0049】
上記の明細書において、実施形態は、その特定の例示的な実施形態を参照して説明されている。しかしながら、添付の特許請求の範囲に記載された実施形態のより広い範囲から逸脱することなく、様々な修正及び変更がそれらになされ得ることが明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で捉えられるべきである。
図1
図2
図3
図4A
図4B
図4C
図5
【手続補正書】
【提出日】2024-01-05
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
グラフデータセットの構造にアクセスするように構成された第1の処理ユニットと、
前記第1の処理ユニットに結合され、前記グラフデータセット内のデータ値に基づいて計算を実行するように構成された第2の処理ユニットと、を備える、
アクセラレータデバイス。
【請求項2】
前記第1の処理ユニットは、
前記グラフデータセット内の頂点を追加及び除去することと、
前記グラフデータセット内のエッジを追加及び除去することと、
を行うように構成された1つ以上の回路を含み、
前記第2の処理ユニットは、前記計算を実行するためのプログラムコードを実行するように構成された中央処理ユニットを含む、
請求項1のアクセラレータデバイス。
【請求項3】
前記第1の処理ユニットは、
前記グラフデータセット内の頂点を追加及び除去することと、
前記グラフデータセット内のエッジを追加及び除去することと、
を行うためのプログラムコードを実行するように構成された中央処理ユニットを含み、
前記第2の処理ユニットは、前記計算を実行するように構成された1つ以上の回路を含む機能ユニットのセットを含む
請求項1のアクセラレータデバイス。
【請求項4】
前記第2の処理ユニットは、前記機能ユニットのシストリックアレイを含む、
請求項3のアクセラレータデバイス。
【請求項5】
前記機能ユニットのセットの各機能ユニットは、1つ以上のゼロオペランド計算をスキップするように構成されたゼロ検出回路を含む、
請求項3のアクセラレータデバイス。
【請求項6】
複数のメモリデバイスから前記グラフデータセットの第1の部分を取得するように構成された収集ユニットと、
前記グラフデータセットの第2の部分を前記複数のメモリデバイスに送信するように構成された分散ユニットと、を備える、
請求項1~5の何れかのアクセラレータデバイス。
【請求項7】
前記グラフデータセットの一部を第1の表現から第2の表現に変換するように構成されたフォーマットシャッフルユニットを備える、
請求項1~5の何れかのアクセラレータデバイス。
【請求項8】
グラフデータセットをメモリデバイスのセットに記憶することと、
アクセラレータデバイスの第1の処理ユニットにおいて、前記グラフデータセットの構造にアクセスすることと、
前記アクセラレータデバイスの第2の処理ユニットにおいて、前記グラフデータセット内のデータ値に基づいて計算を実行することと、を含む、
方法。
【請求項9】
前記グラフデータセットの構造にアクセスすることは、前記第1の処理ユニットの機能ユニットのセットにおいて、前記グラフデータセット内の1つ以上の頂点を追加又は除去することと、前記グラフデータセット内の1つ以上のエッジを追加又は除去することと、によって前記構造を修正することを含み、
前記計算を実行することは、前記第2の処理ユニットにおいて、前記グラフデータセット内のデータ値に対して1つ以上の算術演算を実行するためのプログラムコードを実行することを含む、
請求項8の方法。
【請求項10】
前記計算を実行することは、前記第2の処理ユニット内の機能ユニットのセットにおいて、前記グラフデータセット内のデータ値に対して1つ以上の算術演算を実行することを含み、
前記グラフデータセットの構造にアクセスすることは、前記アクセラレータデバイスの前記第2の処理ユニットにおいて、前記グラフデータセット内の1つ以上の頂点を追加又は除去することと、前記グラフデータセット内の1つ以上のエッジを追加又は除去することと、を行うためのプログラムコードを実行することを含む、
請求項8の方法。
【請求項11】
前記アクセラレータデバイスのフォーマットシャッフルユニットにおいて、前記グラフデータセットの一部を第1の表現から第2の表現に変換することを含む、
請求項8~10の何れかの方法。
【請求項12】
複数のメモリデバイスから前記グラフデータセットの第1の部分を取得することと、
前記グラフデータセットの第2の部分を前記複数のメモリデバイスに送信することと、を含む、
請求項8~10の何れかの方法。
【請求項13】
各々がグラフデータセットの一部を記憶する複数のメモリデバイスと、
前記複数のメモリデバイスに結合された複数のアクセラレータデバイスと、を備え、
前記複数のアクセラレータデバイスの各アクセラレータデバイスは、
前記グラフデータセットの構造にアクセスすることと、
前記グラフデータセット内のデータ値に基づいて計算を実行することと、
を行うように構成されている、
コンピューティングシステム。
【請求項14】
前記複数のアクセラレータデバイスのうち第1のアクセラレータデバイスは、処理ユニットにおいてプログラムコードを実行することによって、前記グラフデータセットに対して機能を実行するように構成されており、
前記複数のアクセラレータデバイスのうち第2のアクセラレータデバイスは、1つ以上の回路において前記機能を実行するように構成されている、
請求項13のコンピューティングシステム。
【請求項15】
各アクセラレータデバイスは、前記複数のメモリデバイスのうちローカルメモリデバイスに記憶された前記グラフデータセットの部分に対して動作するように構成されており、
前記ローカルメモリデバイスは、前記複数のメモリデバイスのうち他の何れのメモリデバイスよりも前記アクセラレータデバイスに近い、
請求項13又は14のコンピューティングシステム。
【国際調査報告】