JP2019537104A - 分散型gpuのデータ局所性を改善するためのメカニズム - Google Patents

分散型gpuのデータ局所性を改善するためのメカニズム Download PDF

Info

Publication number
JP2019537104A
JP2019537104A JP2019517274A JP2019517274A JP2019537104A JP 2019537104 A JP2019537104 A JP 2019537104A JP 2019517274 A JP2019517274 A JP 2019517274A JP 2019517274 A JP2019517274 A JP 2019517274A JP 2019537104 A JP2019537104 A JP 2019537104A
Authority
JP
Japan
Prior art keywords
data
workgroups
workload
partitioning
local memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019517274A
Other languages
English (en)
Inventor
エッカート ヤスコ
エッカート ヤスコ
カイラン オヌル
カイラン オヌル
エス. ジャヤセーナ ヌワン
エス. ジャヤセーナ ヌワン
エイチ. ロー ガブリエル
エイチ. ロー ガブリエル
ピン ジャン ドン
ピン ジャン ドン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019537104A publication Critical patent/JP2019537104A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

分散型処理装置のデータ局所性を改善するためのメカニズムを実装するシステム、装置及び方法が開示される。システムは、複数の分散型処理装置(例えば、GPU)と、メモリデバイスと、を含む。各処理装置は、1つ以上のローカルメモリデバイスに接続されている。システムは、データ局所性及びデータ共有を最大化することに基づいて、ワークロードを複数のワークグループにパーティション化する方法を決定する。システムは、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化することに基づいて、複数のワークグループの何れのサブセットを複数の処理装置の各々にディスパッチするかを決定する。システムは、ワークグループのデータ共有パターンに基づいて、データバッファをパーティション化する方法も決定する。システムは、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化するように、データバッファの個々のパーティションを各処理装置にマッピングする。【選択図】図8

Description

本発明は、米国エネルギー省により授与された、主契約番号DE−AC52−07NA27344、外注番号B609201(ローレンスリバモア国立研究所とのファストフォワード−2ノードアーキテクチャプロジェクト(FastForward-2 Node Architecture (NA) Project with Lawrence Livermore National Laboratory))の下で政府支援を受けてなされたものである。米国政府は、本発明において一定の権利を有する。
複数の分散型処理装置(例えば、グラフィックス処理装置(graphics processing unit:GPU))を利用して、ソフトウェアアプリケーションを並列に実行することができる。例えば、大型GPUは、複数の小型GPUチップを互いにリンクすることによって実装することができる。各GPUチップが関連するローカルメモリデバイスを有するシステムでは、メモリアクセスのレイテンシ、帯域幅及びエネルギーは、アクセスがローカルメモリデバイスに対するものか、又は、リモートメモリデバイスに対するものかによって異なる。複数の小型GPUチップを用いて大型GPUを実装すると、小型ダイの歩留まりが向上するために製造コストの低減に役立つものの、分散型処理装置上で既存のソフトウェアアプリケーションを実行すると、頻繁なリモートメモリアクセスによってメモリアクセスレイテンシが増大する可能性がある。
本明細書に記載された方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによってより理解することができるであろう。
コンピューティングシステムの一実施形態のブロック図である。 コンピューティングシステムの別の実施形態のブロック図である。 コマンドプロセッサの一実施形態のブロック図である。 データバッファ及びワークグループのパーティション化の一実施形態を示す図である。 データバッファ及びワークグループのパーティション化の別の実施形態を示す図である。 ワークロード及びデータバッファをパーティション化する方法の一実施形態を示す一般化されたフロー図である。 ワークロード及びデータバッファをパーティション化する方法の別の実施形態を示す一般化されたフロー図である。 ワークロードを、閾値量のデータを共有するワークグループのサブセットにパーティション化する方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示された方法及びメカニズムの十分な理解を提供するために、多くの具体的な詳細が述べられている。しかしながら、当業者であれば、これらの具体的な詳細がなくても様々な実施形態を実施できること理解されたい。場合によっては、本明細書に記載されたアプローチを曖昧にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示された要素が必ずしも一定の縮尺で描かれていないことが理解されるであろう。例えば、いくつかの要素の寸法が他の要素に比べて誇張されている場合がある。
ワークグループ及びデータを複数の分散型処理装置にディスパッチするためにパーティション化する様々なシステム、装置、方法及びコンピュータ可読媒体が開示される。一実施形態では、システムは、データ局所性及びデータ共有を最大化することに基づいて、ワークロードを複数のワークグループにパーティション化する方法を決定するように構成されている。一実施形態では、システムは、複数の分散型処理装置と、複数のメモリデバイスと、を含む。一実施形態では、複数の処理装置の各々は、複数のメモリデバイスのうち1つ以上のローカルメモリデバイスに接続されている。一実施形態では、分散型処理装置は、グラフィックス処理装置(GPU)である。別の実施形態では、分散型処理装置は、プロセッシングインメモリ(processing-in-memory:PIM)デバイスである。他の実施形態では、分散型処理装置は、他の様々なタイプのプロセッサ又はコンピューティングデバイスの何れかとすることができる。
一実施形態では、システムは、ローカルメモリアクセスの最大化及びリモートメモリアクセスの最小化に基づいて、複数のワークグループの何れのサブセットを複数の処理装置の各々にディスパッチするかを決定するように構成されている。また、システムは、ワークグループのデータ共有パターン及びデータアクセスパターンに基づいて、データバッファをパーティション化する方法を決定するように構成されている。次に、システムは、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化するように、データバッファの個々のパーティションを各処理装置にマッピングする。
一実施形態では、システムは、ワークロードの次元に基づいて、ワークロードを複数のワークグループにパーティション化するように構成されている。次に、システムは、N個の連続するワークグループを所定の処理装置にディスパッチすることができる。ここで、Nは正の整数である。一実施形態では、Nの大きさを、ワークロード又は計算カーネル内のワークグループの総数をシステム内の処理装置の数で割ることによって決定することができる。システムは、ワークロードと同じ次元に沿って1つ以上のバッファをパーティション化することもできる。
別の実施形態では、システムは、閾値量のデータを共有するワークグループを同じ処理装置にディスパッチするように構成されている。システムは、異なるデータセットが同じデータパーティション内に存在する場合には、ワークグループが実際にデータを共有していなかったり閾値量のデータを共有していない場合であっても、異なるデータセットにアクセスするワークグループを同じ処理装置にディスパッチすることができる。本実施形態では、システムは、複数のワークグループのデータ共有パターン、データアクセスパターン及び/又はデータ局所性パターンを分析する。実施形態に応じて、データ共有パターン、データアクセスパターン及び/又はデータ局所性パターンを、実行時に、コンパイル時に、又は、ワークロードの実行前のプロファイリングを介して決定することができる。システムは、様々なパターンを分析した後に、何れのワークグループが、閾値量のデータを共有するか及び/又は同じデータパーティションにアクセスするかを決定することができる。次に、システムは、閾値量のデータを共有する及び/又は同じデータパーティションにアクセスするワークグループを、同じ処理装置にディスパッチすることができる。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。コンピューティングシステム100は、グラフィックス処理装置(GPU)115A〜115Nと、メモリ125A〜125Nと、ファブリック120と、CPU130と、を含む。コンピューティングシステム100は、図が曖昧になるのを避けるために図1に示されていない他のコンポーネントを含むことができる。GPU115A〜115Nは、任意の数及びタイプの処理装置(例えば、CPU、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、専用回路、アクセラレータ等)を表す。各GPU115A〜115Nは、対応するローカルメモリ125A〜125Nに接続されている。GPU115A〜115Nは、様々なタイプの相互接続、バス又はネットワーク技術(例えば、PCI(peripheral component interconnect)バス、PCI−X(PCI-Extended)バス、PCIE(PCI Express)バス等)の何れかを使用して互いに接続することができる。一実施形態では、複数のGPU115A〜115を統合プロセッサとして管理することができる。図1には明示的に示されていないが、システム100は、GPU115A〜115N及びコア135A〜135Nの内部に存在する1つ以上のキャッシュメモリを含むことができる。
各メモリ125A〜125Nは、任意の数及びタイプのメモリデバイスを表す。一実施形態では、各メモリ125A〜125Nは、対応するGPU115A〜115Nと共に使用するためのランダムアクセスメモリ(RAM)である。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗変化メモリ(ReRAM)、相変化メモリ(PCRAM)、又は、他の任意の揮発性若しくは不揮発性RAMとすることができる。各メモリ125A〜125Nを実装するために使用可能なDRAMのタイプには、ダブルデータレート(DDR)DRAM、DDR2 DRAM、DDR3 DRAM等が含まれるが、これらに限定されない。他のタイプのメモリ125A〜125Nをシステム100で利用することができる。このようなメモリとしては、高密度DRAM、eDRAM、3D積層メモリ(例えば、積層DRAM)、インターポーザベースの集積メモリ、マルチチップモジュール(MCM)、光磁気記憶媒体、読み出し専用メモリ(ROM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、相変化メモリ、スピン注入型磁気抵抗メモリ(STT−MRAM)、メモリスタ、拡張データ出力(EDO)RAM、Rambus RAM、Rambus DRAM、EEPROM(erasable programmable memory)、ソリッドステートメモリ、ハードディスクドライブ、光記憶媒体等が挙げられる。GPU115A〜115N上で実行されるワークグループの場合、密結合ローカルメモリにアクセスするメモリ要求を、リモートメモリにアクセスするメモリ要求よりも低いレイテンシ及び低い電力消費で実行することができる。所定のGPU115A〜115N用のリモートメモリは、他のGPU115A〜115Nのうち1つのGPUに接続されているメモリデバイスとして定義される。
ファブリック120は、実施形態に応じて、任意のタイプの通信ファブリック又は相互接続とすることができる。例えば、ファブリック120は、ブリッジ、ノースブリッジ、サウスブリッジ、バックプレーン等とすることができる。CPU130は、コア135A〜135Nを含む。コア135A〜135Nは、任意の数及びタイプのプロセッサコアを表す。CPU130は、システム100のホストとも呼ばれる。他の実施形態では、システム100は、2つ以上のCPU(したがって、2つ以上のホスト)を含むことができる。CPU130のコア135A〜135Nは、オペレーティングシステム等のシステム100の主制御ソフトウェアを実行するように構成されている。一般に、使用中にCPU130によって実行されるソフトウェアは、システム100の他のコンポーネントを制御してシステム100の所望の機能を実現することができる。CPU130は、アプリケーションプログラム等の他のソフトウェアを実行することもできる。アプリケーションプログラムは、ユーザ機能を提供することができ、低レベルのデバイス制御のためにオペレーティングシステムに依存することができる。一実施形態では、CPU130上で実行されるソフトウェアは、ワークグループをGPU115A〜115Nにディスパッチするように構成されている。また、CPU130上で実行されるソフトウェアは、ローカルメモリアクセスを最大化し、GPU115A〜115N上で実行されるワークグループによるリモートアクセスを最小化するために、データバッファをパーティション化し、当該パーティションをGPU115A〜115Nにマッピングするように構成されている。
一実施形態では、CPU130上で実行されるソフトウェアは、複数の分散型GPU115A〜115Nに亘るワークグループのディスパッチを制御するように構成されている。別の実施形態では、1つ以上の他のプロセッサ(例えば、GPU115A〜115N)上で実行されるソフトウェアは、複数の分散型GPU115A〜115Nに亘るワークグループのディスパッチを制御するように構成されている。さらなる実施形態では、ハードウェア(例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))は、複数の分散型GPU115A〜115Nに亘るワークグループのディスパッチを制御するように構成されている。他の実施形態では、ハードウェア及び/又はソフトウェアの任意の適切な組み合わせは、複数の分散型GPU115A〜115Nに亘るワークグループのディスパッチを制御するように構成されている。
一実施形態では、システム100のソフトウェア及び/又はハードウェアは、ワークロードの次元に基づいて、ワークロードを複数のワークグループにパーティション化するように構成されている。例えば、二次元のワークロード(すなわち、二次元のドメイン又はデータセットに基づくワークロード)の場合、ワークロードを、一方の次元に沿ってワークグループにパーティション化しながら、他方の次元を固定して維持することができる。したがって、二次元のワークロードの場合には、ワークロードを、同じ列からワークグループのセットにパーティション化することができ、又は、同じ行からワークグループのセットにパーティション化することができる。三次元のワークロード(すなわち、三次元のドメイン又はデータセットに基づくワークロード)の場合には、ワークロードを、1つの次元に沿ってワークグループのセットにパーティション化しながら、他の2つの次元を固定して維持することができる。ワークロードによって消費されるデータバッファを、ワークロードと同じ次元に沿ってパーティション化することもできる。
本明細書では、「カーネル」という用語は、プログラム内で宣言されている関数として定義することができる。「カーネル」は、複数の処理要素で同時に実行することができる。本明細書では、「ワークロード」という用語は、n次元入力データに対して動作する1つ以上の機能を含むコードセクションを実行するために行われる作業(ワーク)の総量として定義される。本明細書では、「ワークアイテム」という用語は、コマンドによって処理装置上に呼び出されたカーネルの並列実行の集合のうち1つとして定義される。ワークアイテムを、処理装置で実行されるワークグループの一部として、1つ以上の処理要素によって実行することができる。本明細書では、「ワークグループ」という用語は、単一の処理装置で実行される、関連するワークアイテムの集合として定義される。
システム100は、様々なタイプのコンピュータシステム又はコンピューティングデバイスの何れかに対応することができる。このようなコンピュータシステム又はコンピューティングデバイスとしては、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、スーパーコンピュータ、モバイルデバイスタブレット、電話、スマートフォン、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、サーバ、ファイルサーバ、アプリケーションサーバ、ストレージサーバ、ウェブサーバ、クラウドコンピューティングサーバ、又は、一般的な任意のタイプのコンピューティングシステム若しくはデバイス等が挙げられるが、これらに限定されない。システム100のコンポーネントの数は、実施形態毎に異なってもよいことに留意されたい。図1に示した数よりも多くの又は少ないコンポーネント/サブコンポーネントが存在し得る。システム100は、図1に示されていない他のコンポーネントを含むことができることにも留意されたい。また、他の実施形態では、システム100は、図1に示す以外の方法で構造化することができる。
図2を参照すると、コンピューティングシステム200の別の実施形態のブロック図が示されている。コンピューティングシステム200は、分散型処理装置のデータ局所性を改善するために本明細書に記載された技術を実装可能なシステムの別の例である。図2に示すように、システム200は、コマンドプロセッサ205に接続された複数の計算スタック210A〜210Nを含む。計算スタック210A〜210Nは、任意の数及びタイプの計算スタックを表す。
一実施形態では、各計算スタック210A〜210Nは、ロジック層と複数のメモリ層とを含む。一実施形態では、計算スタック210A〜210Nのメモリ層は、ダイ積層型ダイナミックランダムアクセスメモリ(DRAM)として実装されている。一実施形態では、各計算スタック210A〜210Nは、メモリデバイスと直接統合されたプロセッシングインメモリ(PIM)デバイスに接続された1つ以上のメモリデバイスを含む。PIMアーキテクチャは、メモリ内又はメモリの付近に計算機能を追加するという概念である。このアーキテクチャの利点には、処理デバイスとメモリ階層との間のデータの移動に関連するレイテンシ及びエネルギー消費を低減することが含まれる。例えば、各計算スタック210A〜210Nの計算能力は、メモリダイと共に垂直に積層された個々のロジックダイに実装することができる。また、本明細書に記載された方法及びメカニズムは、ニアメモリ計算能力(near memory computation capabilities)がメモリダイ上に直接実装されている場合にも適用することができる。
一実施形態では、各計算スタック210A〜210Nは、1つ以上のメモリチップと共に3D積層されたロジックチップ上の処理装置を含む三次元集積回路(3D IC)である。場合によっては、メモリチップと統合された処理装置は、完全にプログラム可能なプロセッサである。メモリダイは、DRAM、スタティックランダムアクセスメモリ(SRAM)、読み出し専用メモリ(ROM)等のメモリ回路を実装する積層型メモリデバイスを含むことができる。ロジックダイは、積層型メモリダイのメモリ回路にアクセスするためのハードワイヤードロジック及びルーティングロジックを実装することができる。各メモリモジュールは、様々な3D集積回路製造プロセスの何れかを使用して製造することができる。一実施形態では、ロジックダイ及びメモリダイは、能動デバイスと、能動表面に形成された1つ以上の金属ルーティング層と、を有する別の基板(例えば、バルクシリコン)として実装することができ、互いに積み重ねされる。このアプローチは、ウェハオンウェハプロセスを含むことができ、これにより、ダイのマトリックスを備えるウェハが製造され薄くされ、そして、シリコン貫通ビア(TSV)がバルクシリコンを通してエッチングされる。次に、複数のウェハを積み重ねて図示した層構成(例えば、3つのメモリ層用のメモリ回路ダイを含む3つのウェハと、プロセッサ層用ロジックダイと、のスタック)を実現し、整列し、次いで熱圧着によって接合する。得られた積層型ウェハのセットを単体して、個々の3D ICデバイスを分離する。他の実施形態では、計算スタック210A〜210Nを製造するための他の技術を利用することができる。さらに他の実施形態では、処理装置は、非積層型構成で1つ以上のローカルメモリデバイスに接続されてもよい。これらの実施形態及び他の実施形態が可能であり、考えられる。
コマンドプロセッサ205は、様々なタイプの相互接続プロトコルのうち何れかを用いて計算スタック210A〜210Nに接続されている。また、計算スタック210A〜210Nは、様々なタイプの相互接続プロトコルのうち何れかを用いて互いに接続することができる。一実施形態では、コマンドプロセッサ205は、ワークロードを複数のワークグループにパーティション化し、ワークグループを分散型計算スタック210A〜210Nにディスパッチし、データバッファを複数のデータパーティションにパーティション化し、データパーティションを分散型計算スタック210A〜210Nにマッピングするように構成されている。別の実施形態では、計算スタック210A〜210Nのうち1つ以上は、このような機能を実行するために、コードを実行し又はコマンドプロセッサ205のロジックを含むように構成されてもよい。
図3を参照すると、コマンドプロセッサ300の一実施形態のブロック図が示されている。一実施形態では、コマンドプロセッサ300は、ディスパッチロジック310と、ワークグループデータ共有パターンロジック315と、ディスパッチテーブル320と、パーティション化ロジック325と、ルックアップテーブル330と、を含む。ディスパッチロジック310、ワークグループデータ共有パターンロジック315及びパーティション化ロジック325は、ハードウェア及び/又はソフトウェアの任意の組み合わせを用いて実装可能であることに留意されたい。他の実施形態では、コマンドプロセッサ300内に示されている2つ以上のロジックユニットを組み合わせて単一のユニットにすることができることにも留意されたい。一実施形態では、コマンドプロセッサ300内に示されたロジックを、図2のコマンドプロセッサ205内に含めてもよい。別の実施形態では、コマンドプロセッサ300内に示されたロジックを、図1のCPU130内に含めてもよい。
一実施形態では、パーティション化ロジック325は、ワークロードを複数のワークグループにパーティション化するように構成されている。一実施形態では、ディスパッチロジック310は、ワークグループを、システム(例えば、(図1の)システム100、(図2の)システム200)の様々な分散型処理装置(図示省略)にディスパッチするように構成されている。一実施形態では、分散型処理装置はGPUである。別の実施形態では、分散型処理装置はPIMである。他の実施形態では、分散型処理装置は、他のタイプの処理装置とすることができる。ワークグループのパーティション化が決定されると、ディスパッチテーブル320が更新される。一実施形態では、ディスパッチテーブル320は、何れのワークグループIDを、カーネルベースで何れの処理装置にマッピングするかを指定するビットベクトルとして実装される。データに依存しないワークグループパーティション化スキームを用いてワークグループを処理装置にディスパッチする場合には、ディスパッチテーブル320の代わりに数学関数(例えば、N個の連続するワークグループを各処理装置にディスパッチするためのfloor(workgroup_ID/N)mod(number_of_processing_units))を使用することができる。
一実施形態では、ワークグループデータ共有パターンロジック315は、所定のカーネルの様々なワークグループが、所定のカーネルによって処理されたデータバッファにアクセスし、共有する方法を決定するように構成されている。一実施形態では、ワークグループデータ共有パターンロジック315は、閾値量の共有データにアクセスするワークグループのセットを識別するために、各ワークグループによってアクセスされたアドレス及びデータを分析する。別の実施形態では、ワークグループデータ共有パターンロジック315は、これらのワークグループのセットが同じデータを実際には共有しない場合であっても、同じデータパーティションにアクセスするワークグループのセットを識別する。例えば、第1ワークグループが第1データパーティション内のデータの第1部分にアクセスし、第2ワークグループが第1データパーティション内のデータの第2部分にアクセスする場合があるが、第1部分と第2部分とは重複していない。しかしながら、第1ワークグループ及び第2ワークグループが互いにグループ化され、第1データパーティションを記憶する処理装置にディスパッチされる場合には、第1ワークグループ及び第2ワークグループに対して実行されるローカルメモリアクセスの数が多くなる。ワークグループデータ共有パターンロジック315は、分析を実行した後に、何れのワークグループを互いにグループ化すべきかについての指示をディスパッチロジック310に伝える。ディスパッチロジック310は、ワークグループが閾値量の共有データにアクセスする場合又は同じデータパーティション内の異なるデータにアクセスする場合、当該ワークグループを同じ処理装置にディスパッチすることができる。
一実施形態では、パーティション化ロジック325は、データバッファを、分散型処理装置の異なる処理装置にマッピング可能なパーティションにパーティション化するように構成されている。パーティション化ロジック325は、様々なワークグループによってデータバッファがどのようにアクセスされ共有されるかを決定することができ、次に、ワークグループのデータ共有、データアクセス及びデータ局所性パターンに基づいてデータバッファをパーティション化することができる。複数のカーネルが同じデータバッファにアクセスする場合には、1つのカーネルのアクセスパターンを使用してデータのパーティション化を決定することができる。使用されるカーネルは、ランダムに選択すること、実行時間に基づいて選択すること、データアクセスパターンを決定することの容易さに基づいて選択すること、又は、他の基準に基づいて選択することができる。また、パーティション化ロジック325は、ローカルメモリアクセスを最大化し、リモートメモリアクセスを最小化するように、データバッファの一部を異なる処理装置にマッピングするように構成されている。
一実施形態では、データマッピング情報は、ルックアップテーブル330に保持されている。一実施形態では、ルックアップテーブル330内のデータマッピング情報は、新たな物理アドレスが特定の処理装置のメモリに割り当てられ、マッピングされる場合、オペレーティングシステム(OS)によって更新される。ルックアップテーブル330は、集約化されたテーブルとすることができ、又は、各処理装置は、ルックアップテーブル330のローカルコピーを保持することができる。一実施形態では、物理アドレスのいくつかのビットを使用して、ルックアップテーブル330にインデックスを付ける。使用される実際のビット数は、実施形態によって異なっていてもよい。使用される特定のビットは、実施形態によって異なっていてもよく、例えばキャッシュライン、ページサイズ、複数のページ等のデータパーティション化粒度に依存してもよい。テーブルアクセスがミスである(すなわち、ルックアップされているアイテムがテーブルに存在しない)場合には、デフォルトのアドレスマッピングを使用することができる。ヒット(すなわち、ルックアップされているアイテムがテーブルに存在する)は、そのアドレスが、カーネルによってアクセスされたデータバッファに属しており、データバッファのパーティション化及び処理装置へのマッピングが、ルックアップテーブル330に知られていることを示している。テーブルエントリに記憶されたマッピング情報を使用して、データ位置を見つけることができる。ルックアップテーブル330内の各エントリは、GPU ID、メモリID、又は、マッピングされたGPU ID若しくはメモリIDを計算するためのアドレスベースの数学関数を含むことができる。
図4を参照すると、データバッファ及びワークグループのパーティション化の一実施形態の図が示されている。システム(例えば、(図1の)システム100、(図2の)システム200)は、対応するローカルメモリデバイスを有する複数の分散型処理装置を含むことができる。一実施形態では、分散型処理装置は、単一の論理処理装置として扱うことができる。図4に示す例では、システムが8つの分散型処理装置を有するものと想定されている。これは、一実施形態を示していることを理解されたい。他の実施形態では、システムは、他の数の分散型処理装置を有することができる。
システムは、1つ以上のデータバッファ405A〜405B上で動作するカーネルを実行することができる。データバッファ405A〜405Bは、パーティション化され、異なる処理装置にマッピングされた例示的なデータバッファである。図4に示すように、システムが8つの分散型処理装置を有するものと想定すると、データバッファ405A〜405Bは、8つのパーティションにパーティション化される。他の実施形態では、データバッファ405A〜405Bは、システム内の分散型処理装置の数に応じて、他の数のバッファパーティションにパーティション化されてもよい。また、他の実施形態では、他の数のデータバッファをパーティション化することができる。
ワークグループ410は、任意の数及びタイプのワークグループを表す。概して、データバッファ405A〜405B及びワークグループ410は、M個のパーティションを有することができる。ここで、Mは正の整数である。一実施形態では、Mは、ワークグループの総数を処理装置の数で割ったものに等しい。システムは、処理するワークロードを、異なる処理装置に割り当て可能なワークグループ410のサブセットにパーティション化する。また、システムは、データバッファ405A〜405Bを、異なる処理装置のローカルメモリにマッピング可能なデータの部分にパーティション化する。図4に示すように、データバッファ405A〜405B及びワークグループ410のパーティション内に示されている数は、宛先処理装置IDに対応する。システムは、異なる分散型処理装置上で実行されているワークグループに対して、リモートメモリアクセスの数を最小化し、ローカルメモリアクセスの数を最大化することを試みるように、パーティション化及びマッピングを実行する。
図5を参照すると、ワークグループのパーティション化及びデータバッファのパーティション化の別の実施形態の図が示されている。一実施形態では、システムは、ワークグループ505がデータバッファ510内のデータにアクセスし共有する方法に基づいて、データバッファ510をパーティション化する方法を決定することができる。分析されたデータアクセス及びデータバッファ510のデータ共有パターンに基づいて、非ローカルメモリアクセスと比較してワークグループがより多くのローカルメモリアクセスを実行するように、データバッファ510をパーティション化してメモリデバイスにマッピングすることができる。図5に示す例では、データバッファ510は、二次元(2D)アレイである。
ワークグループ505の各パーティションがデータバッファの矩形領域にアクセスするようにワークグループ505がデータバッファ510にアクセスし、ワークグループの後続のパーティションが異なる矩形領域にアクセスして、列優先順にバッファを移動する場合について考察する。アクセスパターンは、ワークグループパーティションの各々によってアクセスされるように矩形領域が割り当てられた後に繰り返され、ワークグループの最初のパーティションは、データバッファの次に利用可能な矩形領域にアクセスする。この場合、データバッファ510がメモリにおいて行優先方式でレイアウトされていると、データバッファ510及びワークグループ505の両方に対してM個の連続するパーティションを生成するアプローチでは、データバッファ510とワークグループ505との間に不整合が生じる。この不整合を緩和するための1つの方法は、ワークグループ505のパーティション化を同一に維持しながら、データバッファ510の列に沿ってより細かい粒度のパーティションを生成することである。実施形態に応じて、パーティション化は、キャッシュライン若しくはOSページの粒度で、又は、より大きい領域を使用することによって実行することができる。したがって、M個のワークグループパーティションに対してM個より多いデータパーティションが存在する場合がある。換言すれば、データバッファ510は、ワークグループ505よりも細かい粒度でパーティション化することができる。
図5に示すように、データバッファ510の各データパーティションのサイズは、R/4行×C/4列である。8つの処理装置の8つのワークグループパーティションのデータバッファ510用に合計16個のデータパーティションが存在する。データバッファ510内の各番号0〜7は、データパーティションが、同じ番号0〜7に対応する処理装置にマッピングされたワークグループによってアクセスされることを示す。データバッファ510を、R/4行×C/4列のサイズを有するパーティションにパーティション化する例は、実行可能なパーティション化の一例に過ぎないことに留意されたい。他の実施形態では、他のパーティション化スキームを利用可能であることを理解されたい。
図6を参照すると、ワークロード及びデータバッファをパーティション化する方法600の一実施形態が示されている。説明の都合上、本実施形態におけるステップ及び図7〜図8のステップは、順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち1つ以上が、同時に実行され、示された順序とは異なる順序で実行され、又は、完全に省略されることに留意されたい。必要に応じて他のさらなる要素も実行される。本明細書に記載された様々なシステム又は装置の何れも、方法600を実施するように構成されている。
システムは、ワークロードを複数のワークグループにパーティション化する(ブロック605)。システムは、複数の処理装置と、複数のメモリデバイスと、を含む。一実施形態では、複数の処理装置の各々は、複数のメモリデバイスのうち1つ以上のローカルメモリデバイスに接続されている。一実施形態では、各処理装置はGPUである。別の実施形態では、各処理装置はPIMデバイスである。他の実施形態では、処理装置は、他のタイプのデバイスとすることができる。
次に、システムは、1つ以上のデータバッファを複数のデータパーティションにパーティション化する(ブロック610)。次いで、システムは、非ローカルメモリデバイスへのアクセスを最小化することに基づいて、ワークグループを複数の処理装置にディスパッチし、データパーティションを複数のメモリデバイスにマッピングする方法を決定する(ブロック615)。上記の文脈において、「最小化する」という用語は、(図7の方法700に記載された)ワークロードの次元も、(図8の方法800に記載された)ワークグループのデータ共有パターンも考慮に入れない標準的なディスパッチング及びマッピングスキームと比較して、処理装置によって生成されたリモートメモリアクセスの数を減らすこととして定義することができる。ブロック615の後に、方法600は終了する。
図7を参照すると、ワークロード及びデータバッファをパーティション化する方法700の別の実施形態が示されている。図示した例では、システムは、ワークロードの次元に基づいて、ワークロードを複数のワークグループにパーティション化する(ブロック705)。システムは、複数の処理装置と、複数のメモリデバイスと、を含む。一実施形態では、複数の処理装置の各々は、複数のメモリデバイスのうち1つ以上のローカルメモリデバイスに接続されている。
システムは、M個の連続するワークグループを各処理装置にディスパッチする(ブロック710)。ここで、Mは正の整数である。一実施形態では、Mは、ワークグループの総数をシステム内の処理装置の数で割ったものに等しい。また、システムは、ワークロードと同じ次元に沿って1つ以上のデータバッファをパーティション化し、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングする(ブロック715)。一実施形態では、1つ以上のデータバッファは、ワークロードよりも細かい粒度でパーティション化される。ブロック715の後に、方法700は終了する。
図8を参照すると、ワークロードを、閾値量のデータを共有するワークグループのサブセットにパーティション化する方法800の一実施形態が示されている。図示した例では、システムは、閾値量のデータを共有するワークグループを識別するために、複数のワークグループのデータ共有パターンを決定する(ブロック805)。一実施形態では、データ共有パターンは、コンパイラによるコンパイル時に決定される。別の実施形態では、データ共有パターンは、実行時に制御ロジック及び/又はソフトウェアによって決定される。さらに別の実施形態では、データ共有パターンは、アプリケーションをハードウェア及び/又はソフトウェアでプロファイリングすることによって決定される。いくつかの実施形態では、システムは、複数のワークグループのデータアクセスパターン及び/又はデータ局所性パターンを決定することができる。次に、システムは、データ共有パターンの分析に基づいて、ワークグループの何れのサブセットを各処理装置にディスパッチするかを決定する(ブロック810)。次いで、システムは、データ共有パターンの分析に基づいて、1つ以上のデータバッファをパーティション化する方法を決定する(ブロック815)。次に、システムは、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングする(ブロック820)。システムは、ブロック810,815,820を実行するときにデータアクセスパターン及び/又はデータ局所性パターンも利用できることに留意されたい。ブロック820の後に、方法800は終了する。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムを実施する。プログラム命令は、C等の高水準プログラミング言語でハードウェアの動作を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、プログラム実行用のプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
上記の実施形態は、実装の非限定的な例に過ぎないことが強調されるべきである。上記の開示が十分に理解されれば、当業者には多くの変形及び変更が明らかになるであろう。添付の特許請求の範囲は、このような変形及び変更を全て包含するように解釈されることを意図している。

Claims (20)

  1. 複数のメモリデバイスと、
    複数の処理装置であって、前記複数の処理装置の各々は、前記複数のメモリデバイスのうち1つ以上のローカルメモリデバイスに接続されている、複数の処理装置と、を備え、
    ワークロードを複数のワークグループにパーティション化し、
    1つ以上のデータバッファを複数のデータパーティションにパーティション化し、
    非ローカルメモリデバイスへのアクセスを最小化することに基づいて、ワークグループを前記複数の処理装置にディスパッチし、データパーティションを前記複数のメモリデバイスにマッピングする方法を決定するように構成されている、
    システム。
  2. 前記システムは、
    前記ワークロードの次元に基づいて、前記ワークロードを複数のワークグループにパーティション化し、
    M個(Mは、ワークグループの総数を処理装置の数で割ったものに等しい)の連続するワークグループを各処理装置にディスパッチするように構成されている、
    請求項1のシステム。
  3. 前記システムは、前記ワークロードと同じ次元に沿って前記1つ以上のデータバッファをパーティション化し、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングするように構成されている、
    請求項2のシステム。
  4. 前記1つ以上のデータバッファは、前記ワークロードよりも細かい粒度でパーティション化されている、
    請求項3のシステム。
  5. 前記システムは、
    閾値量のデータを共有するワークグループを識別するために、前記複数のワークグループのデータ共有パターンを決定し、
    前記データ共有パターンの分析に基づいて、前記複数のワークグループの何れのサブセットを前記複数の処理装置の各々にディスパッチするかを決定し、
    前記複数のワークグループの前記データ共有パターンに基づいて、前記1つ以上のデータバッファをパーティション化する方法を決定し、
    非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、パーティションをメモリデバイスにマッピングするように構成されている、
    請求項1のシステム。
  6. 何れのワークグループ識別子(ID)を、カーネルベースで何れの処理装置にマッピングするかを指定するためのディスパッチテーブルを含む、
    請求項1のシステム。
  7. 前記システムは、
    閾値量のデータを共有する2つ以上のワークグループを識別し、
    前記2つ以上のワークグループを第1処理装置にディスパッチするように構成されている、
    請求項1のシステム。
  8. ワークロードを複数のワークグループにパーティション化することと、
    1つ以上のデータバッファを複数のデータパーティションにパーティション化することと、
    非ローカルメモリアクセスを最小化することに基づいて、ワークグループを複数の処理装置にディスパッチし、データパーティションを前記複数の処理装置のローカルメモリデバイスにマッピングする方法を決定することと、を含む、
    方法。
  9. 前記ワークロードの次元に基づいて、前記ワークロードを複数のワークグループにパーティション化することと、
    M個(Mは、ワークグループの総数を処理装置の数で割ったものに等しい)の連続するワークグループを各処理装置にディスパッチすることと、を含む、
    請求項8の方法。
  10. 前記ワークロードと同じ次元に沿って前記1つ以上のデータバッファをパーティション化することと、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングすることと、を含む、
    請求項9の方法。
  11. 前記1つ以上のデータバッファを、前記ワークロードよりも細かい粒度でパーティション化することを含む、
    請求項10の方法。
  12. 閾値量のデータを共有するワークグループを識別するために、前記複数のワークグループのデータ共有パターンを決定することと、
    前記データ共有パターンの分析に基づいて、前記複数のワークグループの何れのサブセットを前記複数の処理装置の各々にディスパッチするかを決定することと、
    前記複数のワークグループの前記データ共有パターンに基づいて、前記1つ以上のデータバッファをパーティション化する方法を決定することと、
    非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、パーティションをメモリデバイスにマッピングすることと、を含む、
    請求項8の方法。
  13. 何れのワークグループ識別子(ID)を、カーネルベースで何れの処理装置にマッピングするかを指定するためのディスパッチテーブルを利用することを含む、
    請求項8の方法。
  14. 閾値量のデータを共有する2つ以上のワークグループを識別することと、
    前記2つ以上のワークグループを第1処理装置にディスパッチすることと、を含む、
    請求項8の方法。
  15. プログラム命令を記憶するコンピュータ可読記憶媒体であって、
    前記プログラム命令は、プロセッサによって実行されると、
    ワークロードを複数のワークグループにパーティション化することと、
    1つ以上のデータバッファを複数のデータパーティションにパーティション化することと、
    非ローカルメモリアクセスを最小化することに基づいて、ワークグループを複数の処理装置にディスパッチし、データパーティションを前記複数の処理装置のローカルメモリデバイスにマッピングする方法を決定することと、
    を前記プロセッサに実行させる、
    コンピュータ可読記憶媒体。
  16. 前記プログラム命令は、プロセッサによって実行されると、
    前記ワークロードの次元に基づいて、前記ワークロードを複数のワークグループにパーティション化することと、
    M個(Mは、ワークグループの総数を処理装置の数で割ったものに等しい)の連続するワークグループを各処理装置にディスパッチすることと、
    を前記プロセッサに実行させる、
    請求項15のコンピュータ可読記憶媒体。
  17. 前記プログラム命令は、プロセッサによって実行されると、
    前記ワークロードと同じ次元に沿って前記1つ以上のデータバッファをパーティション化することと、非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、データパーティションをメモリデバイスにマッピングすることと、
    を前記プロセッサに実行させる、
    請求項16のコンピュータ可読記憶媒体。
  18. 前記プログラム命令は、プロセッサによって実行されると、前記1つ以上のデータバッファを、前記ワークロードよりも細かい粒度でパーティション化することを前記プロセッサに実行させる、
    請求項15のコンピュータ可読記憶媒体。
  19. 前記プログラム命令は、プロセッサによって実行されると、
    閾値量のデータを共有するワークグループを識別するために、前記複数のワークグループのデータ共有パターンを決定することと、
    前記データ共有パターンの分析に基づいて、前記複数のワークグループの何れのサブセットを前記複数の処理装置の各々にディスパッチするかを決定することと、
    前記複数のワークグループの前記データ共有パターンに基づいて、前記1つ以上のデータバッファをパーティション化する方法を決定することと、
    非ローカルメモリアクセスと比較して増加した数のローカルメモリアクセスをワークグループが実行するように、パーティションをメモリデバイスにマッピングすることと、
    を前記プロセッサに実行させる、
    請求項15のコンピュータ可読記憶媒体。
  20. 前記プログラム命令は、プロセッサによって実行されると、
    閾値量のデータを共有する2つ以上のワークグループを識別することと、
    前記2つ以上のワークグループを第1処理装置にディスパッチすることと、
    を前記プロセッサに実行させる、
    請求項15のコンピュータ可読記憶媒体。
JP2019517274A 2016-10-21 2017-08-21 分散型gpuのデータ局所性を改善するためのメカニズム Pending JP2019537104A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/331,002 2016-10-21
US15/331,002 US20180115496A1 (en) 2016-10-21 2016-10-21 Mechanisms to improve data locality for distributed gpus
PCT/US2017/047807 WO2018075131A1 (en) 2016-10-21 2017-08-21 Mechanisms to improve data locality for distributed gpus

Publications (1)

Publication Number Publication Date
JP2019537104A true JP2019537104A (ja) 2019-12-19

Family

ID=59772714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019517274A Pending JP2019537104A (ja) 2016-10-21 2017-08-21 分散型gpuのデータ局所性を改善するためのメカニズム

Country Status (6)

Country Link
US (1) US20180115496A1 (ja)
EP (1) EP3529697A1 (ja)
JP (1) JP2019537104A (ja)
KR (1) KR20190070915A (ja)
CN (1) CN109791507A (ja)
WO (1) WO2018075131A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG10201507834SA (en) * 2015-09-21 2017-04-27 Yokogawa Electric Corp Mobile based on collaborative and interactive operations with smart mobile devices
US10474600B2 (en) 2017-09-14 2019-11-12 Samsung Electronics Co., Ltd. Heterogeneous accelerator for highly efficient learning systems
KR102424962B1 (ko) * 2017-11-15 2022-07-25 삼성전자주식회사 병렬 연산 처리를 수행하는 메모리 장치 및 이를 포함하는 메모리 모듈
US20190332420A1 (en) * 2018-04-27 2019-10-31 Advanced Micro Devices, Inc. Feedback guided split workgroup dispatch for gpus
US10802995B2 (en) * 2018-07-26 2020-10-13 Xilinx, Inc. Unified address space for multiple hardware accelerators using dedicated low latency links
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法
US11436046B2 (en) 2018-10-11 2022-09-06 Powerchip Semiconductor Manufacturing Corporation Electronic device with memory processor-based multiprocessing architecture and operation method thereof
US11204819B2 (en) * 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US10997686B2 (en) 2019-01-09 2021-05-04 Intel Corporation Workload scheduling and distribution on a distributed graphics device
CN117742901A (zh) * 2022-09-13 2024-03-22 安徽寒武纪信息科技有限公司 任务调度方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013114538A (ja) * 2011-11-30 2013-06-10 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム
JP2014523021A (ja) * 2011-06-20 2014-09-08 クゥアルコム・インコーポレイテッド グラフィックス処理ユニットにおけるメモリの共有

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032264A (en) * 1997-04-22 2000-02-29 Micron Technology, Inc. Apparatus and method implementing repairs on a memory device
US6788302B1 (en) * 2000-08-03 2004-09-07 International Business Machines Corporation Partitioning and load balancing graphical shape data for parallel applications
US20070240140A1 (en) * 2006-02-10 2007-10-11 International Business Machines Corporation Methods and systems for application load distribution
US8453132B2 (en) * 2006-07-28 2013-05-28 Hewlett-Packard Development Company, L.P. System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US8395631B1 (en) * 2009-04-30 2013-03-12 Nvidia Corporation Method and system for sharing memory between multiple graphics processing units in a computer system
US8719833B2 (en) * 2010-06-24 2014-05-06 Sap Ag Adaptive demand-driven load balancing
US9195501B2 (en) * 2011-07-12 2015-11-24 Qualcomm Incorporated Instruction culling in graphics processing unit
US9032416B2 (en) * 2012-07-30 2015-05-12 Oracle International Corporation Load balancing using progressive sampling based on load balancing quality targets
US9277005B2 (en) * 2013-01-09 2016-03-01 Edgecast Networks, Inc. Optimized consistent request distribution for balanced load distribution in a content delivery network
US9276827B2 (en) * 2013-03-15 2016-03-01 Cisco Technology, Inc. Allocating computing resources based upon geographic movement
US9788210B2 (en) * 2013-06-11 2017-10-10 Sonus Networks, Inc. Methods and systems for adaptive buffer allocations in systems with adaptive resource allocation
US9338234B2 (en) * 2014-04-16 2016-05-10 Microsoft Technology Licensing, Llc Functional programming in distributed computing
US10175855B2 (en) * 2014-06-25 2019-01-08 Oracle International Corporation Interaction in orbit visualization
US9906589B2 (en) * 2014-11-14 2018-02-27 Facebook, Inc. Shared management service
US9965343B2 (en) * 2015-05-13 2018-05-08 Advanced Micro Devices, Inc. System and method for determining concurrency factors for dispatch size of parallel processor kernels
US10229468B2 (en) * 2015-06-03 2019-03-12 Intel Corporation Automated conversion of GPGPU workloads to 3D pipeline workloads
US9965382B2 (en) * 2016-04-04 2018-05-08 Omni Ai, Inc. Data composite for efficient memory transfer in a behavioral recognition system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014523021A (ja) * 2011-06-20 2014-09-08 クゥアルコム・インコーポレイテッド グラフィックス処理ユニットにおけるメモリの共有
JP2013114538A (ja) * 2011-11-30 2013-06-10 Toshiba Corp 情報処理装置、情報処理方法及び制御プログラム

Also Published As

Publication number Publication date
WO2018075131A1 (en) 2018-04-26
EP3529697A1 (en) 2019-08-28
US20180115496A1 (en) 2018-04-26
KR20190070915A (ko) 2019-06-21
CN109791507A (zh) 2019-05-21

Similar Documents

Publication Publication Date Title
JP2019537104A (ja) 分散型gpuのデータ局所性を改善するためのメカニズム
US11599475B2 (en) Apparatuses and methods for compute enabled cache
CN111279322B (zh) 一种处理系统和在3d堆栈存储器中混写的方法
US9921751B2 (en) Methods and systems for mapping a peripheral function onto a legacy memory interface
US11494078B2 (en) Translation lookaside buffer in memory
KR102288830B1 (ko) 텐서 메모리 액세스를 촉진할 수 있는 메모리 디바이스 및 방법
US11474950B2 (en) Memory controller including plurality of address mapping tables, system on chip, and electronic device
US20160274794A1 (en) Data storage devices, data processing systems having the same, methods of operating and methods of manufacturing the same
US11507301B2 (en) Memory module implementing memory centric architecture
EP4060505A1 (en) Techniques for near data acceleration for a multi-core architecture
US10534545B2 (en) Three-dimensional stacked memory optimizations for latency and power
JP7288344B2 (ja) 半導体システム及びその動作方法
JP2021099891A (ja) ワイドプリフェッチを行う高帯域幅dramメモリ
Lefter et al. A shared polyhedral cache for 3d wide-i/o multi-core computing platforms
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same
EP4375840A1 (en) Memory controller, electronic system including the same and method of controlling memory access

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210707

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220519

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220815

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20221025