(57)【要約】分散型処理装置のデータ局所性を改善するためのメカニズムを実装するシステム、装置及び方法が開示される。システムは、複数の分散型処理装置（例えば、ＧＰＵ）と、メモリデバイスと、を含む。各処理装置は、１つ以上のローカルメモリデバイスに接続されている。システムは、データ局所性及びデータ共有を最大化することに基づいて、ワークロードを複数のワークグループにパーティション化する方法を決定する。システムは、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化することに基づいて、複数のワークグループの何れのサブセットを複数の処理装置の各々にディスパッチするかを決定する。システムは、ワークグループのデータ共有パターンに基づいて、データバッファをパーティション化する方法も決定する。システムは、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化するように、データバッファの個々のパーティションを各処理装置にマッピングする。【選択図】図８
2019537104.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリデバイスと、
複数の処理装置であって、前記複数の処理装置の各々は、前記複数のメモリデバイスのうち１つ以上のローカルメモリデバイスに接続されている、複数の処理装置と、を備え、
ワークロードを複数のワークグループにパーティション化し、
１つ以上のデータバッファを複数のデータパーティションにパーティション化し、
非ローカルメモリデバイスへのアクセスを最小化することに基づいて、ワークグループを前記複数の処理装置にディスパッチし、データパーティションを前記複数のメモリデバイスにマッピングする方法を決定するように構成されている、
システム。
【請求項２】
前記システムは、
前記ワークロードの次元に基づいて、前記ワークロードを複数のワークグループにパーティション化し、
Ｍ個（Ｍは、ワークグループの総数を処理装置の数で割ったものに等しい）の連続するワークグループを各処理装置にディスパッチするように構成されている、
請求項１のシステム。
【請求項３】
前記システムは、前記ワークロードと同じ次元に沿って前記１つ以上のデータバッファをパーティション化し、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングするように構成されている、
請求項２のシステム。
【請求項４】
前記１つ以上のデータバッファは、前記ワークロードよりも細かい粒度でパーティション化されている、
請求項３のシステム。
【請求項５】
前記システムは、
閾値量のデータを共有するワークグループを識別するために、前記複数のワークグループのデータ共有パターンを決定し、
前記データ共有パターンの分析に基づいて、前記複数のワークグループの何れのサブセットを前記複数の処理装置の各々にディスパッチするかを決定し、
前記複数のワークグループの前記データ共有パターンに基づいて、前記１つ以上のデータバッファをパーティション化する方法を決定し、
非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、パーティションをメモリデバイスにマッピングするように構成されている、
請求項１のシステム。
【請求項６】
何れのワークグループ識別子（ＩＤ）を、カーネルベースで何れの処理装置にマッピングするかを指定するためのディスパッチテーブルを含む、
請求項１のシステム。
【請求項７】
前記システムは、
閾値量のデータを共有する２つ以上のワークグループを識別し、
前記２つ以上のワークグループを第１処理装置にディスパッチするように構成されている、
請求項１のシステム。
【請求項８】
ワークロードを複数のワークグループにパーティション化することと、
１つ以上のデータバッファを複数のデータパーティションにパーティション化することと、
非ローカルメモリアクセスを最小化することに基づいて、ワークグループを複数の処理装置にディスパッチし、データパーティションを前記複数の処理装置のローカルメモリデバイスにマッピングする方法を決定することと、を含む、
方法。
【請求項９】
前記ワークロードの次元に基づいて、前記ワークロードを複数のワークグループにパーティション化することと、
Ｍ個（Ｍは、ワークグループの総数を処理装置の数で割ったものに等しい）の連続するワークグループを各処理装置にディスパッチすることと、を含む、
請求項８の方法。
【請求項１０】
前記ワークロードと同じ次元に沿って前記１つ以上のデータバッファをパーティション化することと、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングすることと、を含む、
請求項９の方法。
【請求項１１】
前記１つ以上のデータバッファを、前記ワークロードよりも細かい粒度でパーティション化することを含む、
請求項１０の方法。
【請求項１２】
閾値量のデータを共有するワークグループを識別するために、前記複数のワークグループのデータ共有パターンを決定することと、
前記データ共有パターンの分析に基づいて、前記複数のワークグループの何れのサブセットを前記複数の処理装置の各々にディスパッチするかを決定することと、
前記複数のワークグループの前記データ共有パターンに基づいて、前記１つ以上のデータバッファをパーティション化する方法を決定することと、
非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、パーティションをメモリデバイスにマッピングすることと、を含む、
請求項８の方法。
【請求項１３】
何れのワークグループ識別子（ＩＤ）を、カーネルベースで何れの処理装置にマッピングするかを指定するためのディスパッチテーブルを利用することを含む、
請求項８の方法。
【請求項１４】
閾値量のデータを共有する２つ以上のワークグループを識別することと、
前記２つ以上のワークグループを第１処理装置にディスパッチすることと、を含む、
請求項８の方法。
【請求項１５】
プログラム命令を記憶するコンピュータ可読記憶媒体であって、
前記プログラム命令は、プロセッサによって実行されると、
ワークロードを複数のワークグループにパーティション化することと、
１つ以上のデータバッファを複数のデータパーティションにパーティション化することと、
非ローカルメモリアクセスを最小化することに基づいて、ワークグループを複数の処理装置にディスパッチし、データパーティションを前記複数の処理装置のローカルメモリデバイスにマッピングする方法を決定することと、
を前記プロセッサに実行させる、
コンピュータ可読記憶媒体。
【請求項１６】
前記プログラム命令は、プロセッサによって実行されると、
前記ワークロードの次元に基づいて、前記ワークロードを複数のワークグループにパーティション化することと、
Ｍ個（Ｍは、ワークグループの総数を処理装置の数で割ったものに等しい）の連続するワークグループを各処理装置にディスパッチすることと、
を前記プロセッサに実行させる、
請求項１５のコンピュータ可読記憶媒体。
【請求項１７】
前記プログラム命令は、プロセッサによって実行されると、
前記ワークロードと同じ次元に沿って前記１つ以上のデータバッファをパーティション化することと、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングすることと、
を前記プロセッサに実行させる、
請求項１６のコンピュータ可読記憶媒体。
【請求項１８】
前記プログラム命令は、プロセッサによって実行されると、前記１つ以上のデータバッファを、前記ワークロードよりも細かい粒度でパーティション化することを前記プロセッサに実行させる、
請求項１５のコンピュータ可読記憶媒体。
【請求項１９】
前記プログラム命令は、プロセッサによって実行されると、
閾値量のデータを共有するワークグループを識別するために、前記複数のワークグループのデータ共有パターンを決定することと、
前記データ共有パターンの分析に基づいて、前記複数のワークグループの何れのサブセットを前記複数の処理装置の各々にディスパッチするかを決定することと、
前記複数のワークグループの前記データ共有パターンに基づいて、前記１つ以上のデータバッファをパーティション化する方法を決定することと、
非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、パーティションをメモリデバイスにマッピングすることと、
を前記プロセッサに実行させる、
請求項１５のコンピュータ可読記憶媒体。
【請求項２０】
前記プログラム命令は、プロセッサによって実行されると、
閾値量のデータを共有する２つ以上のワークグループを識別することと、
前記２つ以上のワークグループを第１処理装置にディスパッチすることと、
を前記プロセッサに実行させる、
請求項１５のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、米国エネルギー省により授与された、主契約番号ＤＥ−ＡＣ５２−０７ＮＡ２７３４４、外注番号Ｂ６０９２０１（ローレンスリバモア国立研究所とのファストフォワード−２ノードアーキテクチャプロジェクト（FastForward-2 Node Architecture (NA) Project with Lawrence Livermore National Laboratory））の下で政府支援を受けてなされたものである。米国政府は、本発明において一定の権利を有する。
【背景技術】
【０００２】
複数の分散型処理装置（例えば、グラフィックス処理装置（graphics processing unit：ＧＰＵ））を利用して、ソフトウェアアプリケーションを並列に実行することができる。例えば、大型ＧＰＵは、複数の小型ＧＰＵチップを互いにリンクすることによって実装することができる。各ＧＰＵチップが関連するローカルメモリデバイスを有するシステムでは、メモリアクセスのレイテンシ、帯域幅及びエネルギーは、アクセスがローカルメモリデバイスに対するものか、又は、リモートメモリデバイスに対するものかによって異なる。複数の小型ＧＰＵチップを用いて大型ＧＰＵを実装すると、小型ダイの歩留まりが向上するために製造コストの低減に役立つものの、分散型処理装置上で既存のソフトウェアアプリケーションを実行すると、頻繁なリモートメモリアクセスによってメモリアクセスレイテンシが増大する可能性がある。
【０００３】
本明細書に記載された方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによってより理解することができるであろう。
【図面の簡単な説明】
【０００４】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】コンピューティングシステムの別の実施形態のブロック図である。
【図３】コマンドプロセッサの一実施形態のブロック図である。
【図４】データバッファ及びワークグループのパーティション化の一実施形態を示す図である。
【図５】データバッファ及びワークグループのパーティション化の別の実施形態を示す図である。
【図６】ワークロード及びデータバッファをパーティション化する方法の一実施形態を示す一般化されたフロー図である。
【図７】ワークロード及びデータバッファをパーティション化する方法の別の実施形態を示す一般化されたフロー図である。
【図８】ワークロードを、閾値量のデータを共有するワークグループのサブセットにパーティション化する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００５】
以下の説明では、本明細書に提示された方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、当業者であれば、これらの具体的な詳細がなくても様々な実施形態を実施できること理解されたい。場合によっては、本明細書に記載されたアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示された要素が必ずしも一定の縮尺で描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法が他の要素に比べて誇張されている場合がある。
【０００６】
ワークグループ及びデータを複数の分散型処理装置にディスパッチするためにパーティション化する様々なシステム、装置、方法及びコンピュータ可読媒体が開示される。一実施形態では、システムは、データ局所性及びデータ共有を最大化することに基づいて、ワークロードを複数のワークグループにパーティション化する方法を決定するように構成されている。一実施形態では、システムは、複数の分散型処理装置と、複数のメモリデバイスと、を含む。一実施形態では、複数の処理装置の各々は、複数のメモリデバイスのうち１つ以上のローカルメモリデバイスに接続されている。一実施形態では、分散型処理装置は、グラフィックス処理装置（ＧＰＵ）である。別の実施形態では、分散型処理装置は、プロセッシングインメモリ（processing-in-memory：ＰＩＭ）デバイスである。他の実施形態では、分散型処理装置は、他の様々なタイプのプロセッサ又はコンピューティングデバイスの何れかとすることができる。
【０００７】
一実施形態では、システムは、ローカルメモリアクセスの最大化及びリモートメモリアクセスの最小化に基づいて、複数のワークグループの何れのサブセットを複数の処理装置の各々にディスパッチするかを決定するように構成されている。また、システムは、ワークグループのデータ共有パターン及びデータアクセスパターンに基づいて、データバッファをパーティション化する方法を決定するように構成されている。次に、システムは、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化するように、データバッファの個々のパーティションを各処理装置にマッピングする。
【０００８】
一実施形態では、システムは、ワークロードの次元に基づいて、ワークロードを複数のワークグループにパーティション化するように構成されている。次に、システムは、Ｎ個の連続するワークグループを所定の処理装置にディスパッチすることができる。ここで、Ｎは正の整数である。一実施形態では、Ｎの大きさを、ワークロード又は計算カーネル内のワークグループの総数をシステム内の処理装置の数で割ることによって決定することができる。システムは、ワークロードと同じ次元に沿って１つ以上のバッファをパーティション化することもできる。
【０００９】
別の実施形態では、システムは、閾値量のデータを共有するワークグループを同じ処理装置にディスパッチするように構成されている。システムは、異なるデータセットが同じデータパーティション内に存在する場合には、ワークグループが実際にデータを共有していなかったり閾値量のデータを共有していない場合であっても、異なるデータセットにアクセスするワークグループを同じ処理装置にディスパッチすることができる。本実施形態では、システムは、複数のワークグループのデータ共有パターン、データアクセスパターン及び／又はデータ局所性パターンを分析する。実施形態に応じて、データ共有パターン、データアクセスパターン及び／又はデータ局所性パターンを、実行時に、コンパイル時に、又は、ワークロードの実行前のプロファイリングを介して決定することができる。システムは、様々なパターンを分析した後に、何れのワークグループが、閾値量のデータを共有するか及び／又は同じデータパーティションにアクセスするかを決定することができる。次に、システムは、閾値量のデータを共有する及び／又は同じデータパーティションにアクセスするワークグループを、同じ処理装置にディスパッチすることができる。
【００１０】
図１を参照すると、コンピューティングシステム１００の一実施形態のブロック図が示されている。コンピューティングシステム１００は、グラフィックス処理装置（ＧＰＵ）１１５Ａ〜１１５Ｎと、メモリ１２５Ａ〜１２５Ｎと、ファブリック１２０と、ＣＰＵ１３０と、を含む。コンピューティングシステム１００は、図が曖昧になるのを避けるために図１に示されていない他のコンポーネントを含むことができる。ＧＰＵ１１５Ａ〜１１５Ｎは、任意の数及びタイプの処理装置（例えば、ＣＰＵ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、専用回路、アクセラレータ等）を表す。各ＧＰＵ１１５Ａ〜１１５Ｎは、対応するローカルメモリ１２５Ａ〜１２５Ｎに接続されている。ＧＰＵ１１５Ａ〜１１５Ｎは、様々なタイプの相互接続、バス又はネットワーク技術（例えば、ＰＣＩ（peripheral component interconnect）バス、ＰＣＩ−Ｘ（PCI-Extended）バス、ＰＣＩＥ（PCI Express）バス等）の何れかを使用して互いに接続することができる。一実施形態では、複数のＧＰＵ１１５Ａ〜１１５を統合プロセッサとして管理することができる。図１には明示的に示されていないが、システム１００は、ＧＰＵ１１５Ａ〜１１５Ｎ及びコア１３５Ａ〜１３５Ｎの内部に存在する１つ以上のキャッシュメモリを含むことができる。
【００１１】
各メモリ１２５Ａ〜１２５Ｎは、任意の数及びタイプのメモリデバイスを表す。一実施形態では、各メモリ１２５Ａ〜１２５Ｎは、対応するＧＰＵ１１５Ａ〜１１５Ｎと共に使用するためのランダムアクセスメモリ（ＲＡＭ）である。実装されるＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、抵抗変化メモリ（ＲｅＲＡＭ）、相変化メモリ（ＰＣＲＡＭ）、又は、他の任意の揮発性若しくは不揮発性ＲＡＭとすることができる。各メモリ１２５Ａ〜１２５Ｎを実装するために使用可能なＤＲＡＭのタイプには、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、ＤＤＲ２  ＤＲＡＭ、ＤＤＲ３  ＤＲＡＭ等が含まれるが、これらに限定されない。他のタイプのメモリ１２５Ａ〜１２５Ｎをシステム１００で利用することができる。このようなメモリとしては、高密度ＤＲＡＭ、ｅＤＲＡＭ、３Ｄ積層メモリ（例えば、積層ＤＲＡＭ）、インターポーザベースの集積メモリ、マルチチップモジュール（ＭＣＭ）、光磁気記憶媒体、読み出し専用メモリ（ＲＯＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、相変化メモリ、スピン注入型磁気抵抗メモリ（ＳＴＴ−ＭＲＡＭ）、メモリスタ、拡張データ出力（ＥＤＯ）ＲＡＭ、Ｒａｍｂｕｓ  ＲＡＭ、Ｒａｍｂｕｓ  ＤＲＡＭ、ＥＥＰＲＯＭ（erasable programmable memory）、ソリッドステートメモリ、ハードディスクドライブ、光記憶媒体等が挙げられる。ＧＰＵ１１５Ａ〜１１５Ｎ上で実行されるワークグループの場合、密結合ローカルメモリにアクセスするメモリ要求を、リモートメモリにアクセスするメモリ要求よりも低いレイテンシ及び低い電力消費で実行することができる。所定のＧＰＵ１１５Ａ〜１１５Ｎ用のリモートメモリは、他のＧＰＵ１１５Ａ〜１１５Ｎのうち１つのＧＰＵに接続されているメモリデバイスとして定義される。
【００１２】
ファブリック１２０は、実施形態に応じて、任意のタイプの通信ファブリック又は相互接続とすることができる。例えば、ファブリック１２０は、ブリッジ、ノースブリッジ、サウスブリッジ、バックプレーン等とすることができる。ＣＰＵ１３０は、コア１３５Ａ〜１３５Ｎを含む。コア１３５Ａ〜１３５Ｎは、任意の数及びタイプのプロセッサコアを表す。ＣＰＵ１３０は、システム１００のホストとも呼ばれる。他の実施形態では、システム１００は、２つ以上のＣＰＵ（したがって、２つ以上のホスト）を含むことができる。ＣＰＵ１３０のコア１３５Ａ〜１３５Ｎは、オペレーティングシステム等のシステム１００の主制御ソフトウェアを実行するように構成されている。一般に、使用中にＣＰＵ１３０によって実行されるソフトウェアは、システム１００の他のコンポーネントを制御してシステム１００の所望の機能を実現することができる。ＣＰＵ１３０は、アプリケーションプログラム等の他のソフトウェアを実行することもできる。アプリケーションプログラムは、ユーザ機能を提供することができ、低レベルのデバイス制御のためにオペレーティングシステムに依存することができる。一実施形態では、ＣＰＵ１３０上で実行されるソフトウェアは、ワークグループをＧＰＵ１１５Ａ〜１１５Ｎにディスパッチするように構成されている。また、ＣＰＵ１３０上で実行されるソフトウェアは、ローカルメモリアクセスを最大化し、ＧＰＵ１１５Ａ〜１１５Ｎ上で実行されるワークグループによるリモートアクセスを最小化するために、データバッファをパーティション化し、当該パーティションをＧＰＵ１１５Ａ〜１１５Ｎにマッピングするように構成されている。
【００１３】
一実施形態では、ＣＰＵ１３０上で実行されるソフトウェアは、複数の分散型ＧＰＵ１１５Ａ〜１１５Ｎに亘るワークグループのディスパッチを制御するように構成されている。別の実施形態では、１つ以上の他のプロセッサ（例えば、ＧＰＵ１１５Ａ〜１１５Ｎ）上で実行されるソフトウェアは、複数の分散型ＧＰＵ１１５Ａ〜１１５Ｎに亘るワークグループのディスパッチを制御するように構成されている。さらなる実施形態では、ハードウェア（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ））は、複数の分散型ＧＰＵ１１５Ａ〜１１５Ｎに亘るワークグループのディスパッチを制御するように構成されている。他の実施形態では、ハードウェア及び／又はソフトウェアの任意の適切な組み合わせは、複数の分散型ＧＰＵ１１５Ａ〜１１５Ｎに亘るワークグループのディスパッチを制御するように構成されている。
【００１４】
一実施形態では、システム１００のソフトウェア及び／又はハードウェアは、ワークロードの次元に基づいて、ワークロードを複数のワークグループにパーティション化するように構成されている。例えば、二次元のワークロード（すなわち、二次元のドメイン又はデータセットに基づくワークロード）の場合、ワークロードを、一方の次元に沿ってワークグループにパーティション化しながら、他方の次元を固定して維持することができる。したがって、二次元のワークロードの場合には、ワークロードを、同じ列からワークグループのセットにパーティション化することができ、又は、同じ行からワークグループのセットにパーティション化することができる。三次元のワークロード（すなわち、三次元のドメイン又はデータセットに基づくワークロード）の場合には、ワークロードを、１つの次元に沿ってワークグループのセットにパーティション化しながら、他の２つの次元を固定して維持することができる。ワークロードによって消費されるデータバッファを、ワークロードと同じ次元に沿ってパーティション化することもできる。
【００１５】
本明細書では、「カーネル」という用語は、プログラム内で宣言されている関数として定義することができる。「カーネル」は、複数の処理要素で同時に実行することができる。本明細書では、「ワークロード」という用語は、ｎ次元入力データに対して動作する１つ以上の機能を含むコードセクションを実行するために行われる作業（ワーク）の総量として定義される。本明細書では、「ワークアイテム」という用語は、コマンドによって処理装置上に呼び出されたカーネルの並列実行の集合のうち１つとして定義される。ワークアイテムを、処理装置で実行されるワークグループの一部として、１つ以上の処理要素によって実行することができる。本明細書では、「ワークグループ」という用語は、単一の処理装置で実行される、関連するワークアイテムの集合として定義される。
【００１６】
システム１００は、様々なタイプのコンピュータシステム又はコンピューティングデバイスの何れかに対応することができる。このようなコンピュータシステム又はコンピューティングデバイスとしては、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、スーパーコンピュータ、モバイルデバイスタブレット、電話、スマートフォン、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、サーバ、ファイルサーバ、アプリケーションサーバ、ストレージサーバ、ウェブサーバ、クラウドコンピューティングサーバ、又は、一般的な任意のタイプのコンピューティングシステム若しくはデバイス等が挙げられるが、これらに限定されない。システム１００のコンポーネントの数は、実施形態毎に異なってもよいことに留意されたい。図１に示した数よりも多くの又は少ないコンポーネント／サブコンポーネントが存在し得る。システム１００は、図１に示されていない他のコンポーネントを含むことができることにも留意されたい。また、他の実施形態では、システム１００は、図１に示す以外の方法で構造化することができる。
【００１７】
図２を参照すると、コンピューティングシステム２００の別の実施形態のブロック図が示されている。コンピューティングシステム２００は、分散型処理装置のデータ局所性を改善するために本明細書に記載された技術を実装可能なシステムの別の例である。図２に示すように、システム２００は、コマンドプロセッサ２０５に接続された複数の計算スタック２１０Ａ〜２１０Ｎを含む。計算スタック２１０Ａ〜２１０Ｎは、任意の数及びタイプの計算スタックを表す。
【００１８】
一実施形態では、各計算スタック２１０Ａ〜２１０Ｎは、ロジック層と複数のメモリ層とを含む。一実施形態では、計算スタック２１０Ａ〜２１０Ｎのメモリ層は、ダイ積層型ダイナミックランダムアクセスメモリ（ＤＲＡＭ）として実装されている。一実施形態では、各計算スタック２１０Ａ〜２１０Ｎは、メモリデバイスと直接統合されたプロセッシングインメモリ（ＰＩＭ）デバイスに接続された１つ以上のメモリデバイスを含む。ＰＩＭアーキテクチャは、メモリ内又はメモリの付近に計算機能を追加するという概念である。このアーキテクチャの利点には、処理デバイスとメモリ階層との間のデータの移動に関連するレイテンシ及びエネルギー消費を低減することが含まれる。例えば、各計算スタック２１０Ａ〜２１０Ｎの計算能力は、メモリダイと共に垂直に積層された個々のロジックダイに実装することができる。また、本明細書に記載された方法及びメカニズムは、ニアメモリ計算能力（near memory computation capabilities）がメモリダイ上に直接実装されている場合にも適用することができる。
【００１９】
一実施形態では、各計算スタック２１０Ａ〜２１０Ｎは、１つ以上のメモリチップと共に３Ｄ積層されたロジックチップ上の処理装置を含む三次元集積回路（３Ｄ  ＩＣ）である。場合によっては、メモリチップと統合された処理装置は、完全にプログラム可能なプロセッサである。メモリダイは、ＤＲＡＭ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、読み出し専用メモリ（ＲＯＭ）等のメモリ回路を実装する積層型メモリデバイスを含むことができる。ロジックダイは、積層型メモリダイのメモリ回路にアクセスするためのハードワイヤードロジック及びルーティングロジックを実装することができる。各メモリモジュールは、様々な３Ｄ集積回路製造プロセスの何れかを使用して製造することができる。一実施形態では、ロジックダイ及びメモリダイは、能動デバイスと、能動表面に形成された１つ以上の金属ルーティング層と、を有する別の基板（例えば、バルクシリコン）として実装することができ、互いに積み重ねされる。このアプローチは、ウェハオンウェハプロセスを含むことができ、これにより、ダイのマトリックスを備えるウェハが製造され薄くされ、そして、シリコン貫通ビア（ＴＳＶ）がバルクシリコンを通してエッチングされる。次に、複数のウェハを積み重ねて図示した層構成（例えば、３つのメモリ層用のメモリ回路ダイを含む３つのウェハと、プロセッサ層用ロジックダイと、のスタック）を実現し、整列し、次いで熱圧着によって接合する。得られた積層型ウェハのセットを単体して、個々の３Ｄ  ＩＣデバイスを分離する。他の実施形態では、計算スタック２１０Ａ〜２１０Ｎを製造するための他の技術を利用することができる。さらに他の実施形態では、処理装置は、非積層型構成で１つ以上のローカルメモリデバイスに接続されてもよい。これらの実施形態及び他の実施形態が可能であり、考えられる。
【００２０】
コマンドプロセッサ２０５は、様々なタイプの相互接続プロトコルのうち何れかを用いて計算スタック２１０Ａ〜２１０Ｎに接続されている。また、計算スタック２１０Ａ〜２１０Ｎは、様々なタイプの相互接続プロトコルのうち何れかを用いて互いに接続することができる。一実施形態では、コマンドプロセッサ２０５は、ワークロードを複数のワークグループにパーティション化し、ワークグループを分散型計算スタック２１０Ａ〜２１０Ｎにディスパッチし、データバッファを複数のデータパーティションにパーティション化し、データパーティションを分散型計算スタック２１０Ａ〜２１０Ｎにマッピングするように構成されている。別の実施形態では、計算スタック２１０Ａ〜２１０Ｎのうち１つ以上は、このような機能を実行するために、コードを実行し又はコマンドプロセッサ２０５のロジックを含むように構成されてもよい。
【００２１】
図３を参照すると、コマンドプロセッサ３００の一実施形態のブロック図が示されている。一実施形態では、コマンドプロセッサ３００は、ディスパッチロジック３１０と、ワークグループデータ共有パターンロジック３１５と、ディスパッチテーブル３２０と、パーティション化ロジック３２５と、ルックアップテーブル３３０と、を含む。ディスパッチロジック３１０、ワークグループデータ共有パターンロジック３１５及びパーティション化ロジック３２５は、ハードウェア及び／又はソフトウェアの任意の組み合わせを用いて実装可能であることに留意されたい。他の実施形態では、コマンドプロセッサ３００内に示されている２つ以上のロジックユニットを組み合わせて単一のユニットにすることができることにも留意されたい。一実施形態では、コマンドプロセッサ３００内に示されたロジックを、図２のコマンドプロセッサ２０５内に含めてもよい。別の実施形態では、コマンドプロセッサ３００内に示されたロジックを、図１のＣＰＵ１３０内に含めてもよい。
【００２２】
一実施形態では、パーティション化ロジック３２５は、ワークロードを複数のワークグループにパーティション化するように構成されている。一実施形態では、ディスパッチロジック３１０は、ワークグループを、システム（例えば、（図１の）システム１００、（図２の）システム２００）の様々な分散型処理装置（図示省略）にディスパッチするように構成されている。一実施形態では、分散型処理装置はＧＰＵである。別の実施形態では、分散型処理装置はＰＩＭである。他の実施形態では、分散型処理装置は、他のタイプの処理装置とすることができる。ワークグループのパーティション化が決定されると、ディスパッチテーブル３２０が更新される。一実施形態では、ディスパッチテーブル３２０は、何れのワークグループＩＤを、カーネルベースで何れの処理装置にマッピングするかを指定するビットベクトルとして実装される。データに依存しないワークグループパーティション化スキームを用いてワークグループを処理装置にディスパッチする場合には、ディスパッチテーブル３２０の代わりに数学関数（例えば、Ｎ個の連続するワークグループを各処理装置にディスパッチするためのｆｌｏｏｒ（ｗｏｒｋｇｒｏｕｐ＿ＩＤ／Ｎ）ｍｏｄ（ｎｕｍｂｅｒ＿ｏｆ＿ｐｒｏｃｅｓｓｉｎｇ＿ｕｎｉｔｓ））を使用することができる。
【００２３】
一実施形態では、ワークグループデータ共有パターンロジック３１５は、所定のカーネルの様々なワークグループが、所定のカーネルによって処理されたデータバッファにアクセスし、共有する方法を決定するように構成されている。一実施形態では、ワークグループデータ共有パターンロジック３１５は、閾値量の共有データにアクセスするワークグループのセットを識別するために、各ワークグループによってアクセスされたアドレス及びデータを分析する。別の実施形態では、ワークグループデータ共有パターンロジック３１５は、これらのワークグループのセットが同じデータを実際には共有しない場合であっても、同じデータパーティションにアクセスするワークグループのセットを識別する。例えば、第１ワークグループが第１データパーティション内のデータの第１部分にアクセスし、第２ワークグループが第１データパーティション内のデータの第２部分にアクセスする場合があるが、第１部分と第２部分とは重複していない。しかしながら、第１ワークグループ及び第２ワークグループが互いにグループ化され、第１データパーティションを記憶する処理装置にディスパッチされる場合には、第１ワークグループ及び第２ワークグループに対して実行されるローカルメモリアクセスの数が多くなる。ワークグループデータ共有パターンロジック３１５は、分析を実行した後に、何れのワークグループを互いにグループ化すべきかについての指示をディスパッチロジック３１０に伝える。ディスパッチロジック３１０は、ワークグループが閾値量の共有データにアクセスする場合又は同じデータパーティション内の異なるデータにアクセスする場合、当該ワークグループを同じ処理装置にディスパッチすることができる。
【００２４】
一実施形態では、パーティション化ロジック３２５は、データバッファを、分散型処理装置の異なる処理装置にマッピング可能なパーティションにパーティション化するように構成されている。パーティション化ロジック３２５は、様々なワークグループによってデータバッファがどのようにアクセスされ共有されるかを決定することができ、次に、ワークグループのデータ共有、データアクセス及びデータ局所性パターンに基づいてデータバッファをパーティション化することができる。複数のカーネルが同じデータバッファにアクセスする場合には、１つのカーネルのアクセスパターンを使用してデータのパーティション化を決定することができる。使用されるカーネルは、ランダムに選択すること、実行時間に基づいて選択すること、データアクセスパターンを決定することの容易さに基づいて選択すること、又は、他の基準に基づいて選択することができる。また、パーティション化ロジック３２５は、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化するように、データバッファの一部を異なる処理装置にマッピングするように構成されている。
【００２５】
一実施形態では、データマッピング情報は、ルックアップテーブル３３０に保持されている。一実施形態では、ルックアップテーブル３３０内のデータマッピング情報は、新たな物理アドレスが特定の処理装置のメモリに割り当てられ、マッピングされる場合、オペレーティングシステム（ＯＳ）によって更新される。ルックアップテーブル３３０は、集約化されたテーブルとすることができ、又は、各処理装置は、ルックアップテーブル３３０のローカルコピーを保持することができる。一実施形態では、物理アドレスのいくつかのビットを使用して、ルックアップテーブル３３０にインデックスを付ける。使用される実際のビット数は、実施形態によって異なっていてもよい。使用される特定のビットは、実施形態によって異なっていてもよく、例えばキャッシュライン、ページサイズ、複数のページ等のデータパーティション化粒度に依存してもよい。テーブルアクセスがミスである（すなわち、ルックアップされているアイテムがテーブルに存在しない）場合には、デフォルトのアドレスマッピングを使用することができる。ヒット（すなわち、ルックアップされているアイテムがテーブルに存在する）は、そのアドレスが、カーネルによってアクセスされたデータバッファに属しており、データバッファのパーティション化及び処理装置へのマッピングが、ルックアップテーブル３３０に知られていることを示している。テーブルエントリに記憶されたマッピング情報を使用して、データ位置を見つけることができる。ルックアップテーブル３３０内の各エントリは、ＧＰＵ  ＩＤ、メモリＩＤ、又は、マッピングされたＧＰＵ  ＩＤ若しくはメモリＩＤを計算するためのアドレスベースの数学関数を含むことができる。
【００２６】
図４を参照すると、データバッファ及びワークグループのパーティション化の一実施形態の図が示されている。システム（例えば、（図１の）システム１００、（図２の）システム２００）は、対応するローカルメモリデバイスを有する複数の分散型処理装置を含むことができる。一実施形態では、分散型処理装置は、単一の論理処理装置として扱うことができる。図４に示す例では、システムが８つの分散型処理装置を有するものと想定されている。これは、一実施形態を示していることを理解されたい。他の実施形態では、システムは、他の数の分散型処理装置を有することができる。
【００２７】
システムは、１つ以上のデータバッファ４０５Ａ〜４０５Ｂ上で動作するカーネルを実行することができる。データバッファ４０５Ａ〜４０５Ｂは、パーティション化され、異なる処理装置にマッピングされた例示的なデータバッファである。図４に示すように、システムが８つの分散型処理装置を有するものと想定すると、データバッファ４０５Ａ〜４０５Ｂは、８つのパーティションにパーティション化される。他の実施形態では、データバッファ４０５Ａ〜４０５Ｂは、システム内の分散型処理装置の数に応じて、他の数のバッファパーティションにパーティション化されてもよい。また、他の実施形態では、他の数のデータバッファをパーティション化することができる。
【００２８】
ワークグループ４１０は、任意の数及びタイプのワークグループを表す。概して、データバッファ４０５Ａ〜４０５Ｂ及びワークグループ４１０は、Ｍ個のパーティションを有することができる。ここで、Ｍは正の整数である。一実施形態では、Ｍは、ワークグループの総数を処理装置の数で割ったものに等しい。システムは、処理するワークロードを、異なる処理装置に割り当て可能なワークグループ４１０のサブセットにパーティション化する。また、システムは、データバッファ４０５Ａ〜４０５Ｂを、異なる処理装置のローカルメモリにマッピング可能なデータの部分にパーティション化する。図４に示すように、データバッファ４０５Ａ〜４０５Ｂ及びワークグループ４１０のパーティション内に示されている数は、宛先処理装置ＩＤに対応する。システムは、異なる分散型処理装置上で実行されているワークグループに対して、リモートメモリアクセスの数を最小化し、ローカルメモリアクセスの数を最大化することを試みるように、パーティション化及びマッピングを実行する。
【００２９】
図５を参照すると、ワークグループのパーティション化及びデータバッファのパーティション化の別の実施形態の図が示されている。一実施形態では、システムは、ワークグループ５０５がデータバッファ５１０内のデータにアクセスし共有する方法に基づいて、データバッファ５１０をパーティション化する方法を決定することができる。分析されたデータアクセス及びデータバッファ５１０のデータ共有パターンに基づいて、非ローカルメモリアクセスと比較してワークグループがより多くのローカルメモリアクセスを実行するように、データバッファ５１０をパーティション化してメモリデバイスにマッピングすることができる。図５に示す例では、データバッファ５１０は、二次元（２Ｄ）アレイである。
【００３０】
ワークグループ５０５の各パーティションがデータバッファの矩形領域にアクセスするようにワークグループ５０５がデータバッファ５１０にアクセスし、ワークグループの後続のパーティションが異なる矩形領域にアクセスして、列優先順にバッファを移動する場合について考察する。アクセスパターンは、ワークグループパーティションの各々によってアクセスされるように矩形領域が割り当てられた後に繰り返され、ワークグループの最初のパーティションは、データバッファの次に利用可能な矩形領域にアクセスする。この場合、データバッファ５１０がメモリにおいて行優先方式でレイアウトされていると、データバッファ５１０及びワークグループ５０５の両方に対してＭ個の連続するパーティションを生成するアプローチでは、データバッファ５１０とワークグループ５０５との間に不整合が生じる。この不整合を緩和するための１つの方法は、ワークグループ５０５のパーティション化を同一に維持しながら、データバッファ５１０の列に沿ってより細かい粒度のパーティションを生成することである。実施形態に応じて、パーティション化は、キャッシュライン若しくはＯＳページの粒度で、又は、より大きい領域を使用することによって実行することができる。したがって、Ｍ個のワークグループパーティションに対してＭ個より多いデータパーティションが存在する場合がある。換言すれば、データバッファ５１０は、ワークグループ５０５よりも細かい粒度でパーティション化することができる。
【００３１】
図５に示すように、データバッファ５１０の各データパーティションのサイズは、Ｒ／４行×Ｃ／４列である。８つの処理装置の８つのワークグループパーティションのデータバッファ５１０用に合計１６個のデータパーティションが存在する。データバッファ５１０内の各番号０〜７は、データパーティションが、同じ番号０〜７に対応する処理装置にマッピングされたワークグループによってアクセスされることを示す。データバッファ５１０を、Ｒ／４行×Ｃ／４列のサイズを有するパーティションにパーティション化する例は、実行可能なパーティション化の一例に過ぎないことに留意されたい。他の実施形態では、他のパーティション化スキームを利用可能であることを理解されたい。
【００３２】
図６を参照すると、ワークロード及びデータバッファをパーティション化する方法６００の一実施形態が示されている。説明の都合上、本実施形態におけるステップ及び図７〜図８のステップは、順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち１つ以上が、同時に実行され、示された順序とは異なる順序で実行され、又は、完全に省略されることに留意されたい。必要に応じて他のさらなる要素も実行される。本明細書に記載された様々なシステム又は装置の何れも、方法６００を実施するように構成されている。
【００３３】
システムは、ワークロードを複数のワークグループにパーティション化する（ブロック６０５）。システムは、複数の処理装置と、複数のメモリデバイスと、を含む。一実施形態では、複数の処理装置の各々は、複数のメモリデバイスのうち１つ以上のローカルメモリデバイスに接続されている。一実施形態では、各処理装置はＧＰＵである。別の実施形態では、各処理装置はＰＩＭデバイスである。他の実施形態では、処理装置は、他のタイプのデバイスとすることができる。
【００３４】
次に、システムは、１つ以上のデータバッファを複数のデータパーティションにパーティション化する（ブロック６１０）。次いで、システムは、非ローカルメモリデバイスへのアクセスを最小化することに基づいて、ワークグループを複数の処理装置にディスパッチし、データパーティションを複数のメモリデバイスにマッピングする方法を決定する（ブロック６１５）。上記の文脈において、「最小化する」という用語は、（図７の方法７００に記載された）ワークロードの次元も、（図８の方法８００に記載された）ワークグループのデータ共有パターンも考慮に入れない標準的なディスパッチング及びマッピングスキームと比較して、処理装置によって生成されたリモートメモリアクセスの数を減らすこととして定義することができる。ブロック６１５の後に、方法６００は終了する。
【００３５】
図７を参照すると、ワークロード及びデータバッファをパーティション化する方法７００の別の実施形態が示されている。図示した例では、システムは、ワークロードの次元に基づいて、ワークロードを複数のワークグループにパーティション化する（ブロック７０５）。システムは、複数の処理装置と、複数のメモリデバイスと、を含む。一実施形態では、複数の処理装置の各々は、複数のメモリデバイスのうち１つ以上のローカルメモリデバイスに接続されている。
【００３６】
システムは、Ｍ個の連続するワークグループを各処理装置にディスパッチする（ブロック７１０）。ここで、Ｍは正の整数である。一実施形態では、Ｍは、ワークグループの総数をシステム内の処理装置の数で割ったものに等しい。また、システムは、ワークロードと同じ次元に沿って１つ以上のデータバッファをパーティション化し、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングする（ブロック７１５）。一実施形態では、１つ以上のデータバッファは、ワークロードよりも細かい粒度でパーティション化される。ブロック７１５の後に、方法７００は終了する。
【００３７】
図８を参照すると、ワークロードを、閾値量のデータを共有するワークグループのサブセットにパーティション化する方法８００の一実施形態が示されている。図示した例では、システムは、閾値量のデータを共有するワークグループを識別するために、複数のワークグループのデータ共有パターンを決定する（ブロック８０５）。一実施形態では、データ共有パターンは、コンパイラによるコンパイル時に決定される。別の実施形態では、データ共有パターンは、実行時に制御ロジック及び／又はソフトウェアによって決定される。さらに別の実施形態では、データ共有パターンは、アプリケーションをハードウェア及び／又はソフトウェアでプロファイリングすることによって決定される。いくつかの実施形態では、システムは、複数のワークグループのデータアクセスパターン及び／又はデータ局所性パターンを決定することができる。次に、システムは、データ共有パターンの分析に基づいて、ワークグループの何れのサブセットを各処理装置にディスパッチするかを決定する（ブロック８１０）。次いで、システムは、データ共有パターンの分析に基づいて、１つ以上のデータバッファをパーティション化する方法を決定する（ブロック８１５）。次に、システムは、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングする（ブロック８２０）。システムは、ブロック８１０，８１５，８２０を実行するときにデータアクセスパターン及び／又はデータ局所性パターンも利用できることに留意されたい。ブロック８２０の後に、方法８００は終了する。
【００３８】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び／又はメカニズムを実施する。プログラム命令は、Ｃ等の高水準プログラミング言語でハードウェアの動作を記述する。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、プログラム実行用のプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも１つ以上のメモリと、プログラム命令を実行するように構成された１つ以上のプロセッサと、を含む。
【００３９】
上記の実施形態は、実装の非限定的な例に過ぎないことが強調されるべきである。上記の開示が十分に理解されれば、当業者には多くの変形及び変更が明らかになるであろう。添付の特許請求の範囲は、このような変形及び変更を全て包含するように解釈されることを意図している。
【図１】
2019537104.tif 000003
【図２】
2019537104.tif 000004
【図３】
2019537104.tif 000005
【図４】
2019537104.tif 000006
【図５】
2019537104.tif 000007
【図６】
2019537104.tif 000008
【図７】
2019537104.tif 000009
【図８】
2019537104.tif 000010
【国際調査報告】
2019537104.tif 000011
2019537104.tif 000012
2019537104.tif 000013