JP2021530022A - Gpu主導の通信のためのネットワークパケットテンプレーティング - Google Patents

Gpu主導の通信のためのネットワークパケットテンプレーティング Download PDF

Info

Publication number
JP2021530022A
JP2021530022A JP2020570420A JP2020570420A JP2021530022A JP 2021530022 A JP2021530022 A JP 2021530022A JP 2020570420 A JP2020570420 A JP 2020570420A JP 2020570420 A JP2020570420 A JP 2020570420A JP 2021530022 A JP2021530022 A JP 2021530022A
Authority
JP
Japan
Prior art keywords
processor
fields
network packet
subset
network
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.)
Granted
Application number
JP2020570420A
Other languages
English (en)
Other versions
JP7461895B2 (ja
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 JP2021530022A publication Critical patent/JP2021530022A/ja
Application granted granted Critical
Publication of JP7461895B2 publication Critical patent/JP7461895B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/54Interprogram communication
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/321Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Advance Control (AREA)

Abstract

グラフィックスプロセッシングユニット(GPU)主導の通信のためのネットワークパケットテンプレーティングを行うためのシステム、装置、及び方法が開示されている。中央演算処理装置(CPU)は、テンプレートに従ってネットワークパケットを作成し、ネットワークパケットのフィールドの第1のサブセットに静的データを入れる。次に、CPUはネットワークパケットをメモリに記憶する。GPUはカーネルの実行を開始し、カーネルが実行を完了する前にカーネル内のネットワーク通信要求を検出する。この決定に応じて、GPUは、ネットワークパケットのフィールドの第2のサブセットにランタイムデータを入れる。そして、GPUは、ネットワークパケットは処理可能状態であるという通知を生成する。ネットワークインターフェースコントローラ(NIC)は、通知を検出することに応じて、フィールドの第1のサブセットから、及びフィールドの第2のサブセットから取得したデータを用いてネットワークパケットを処理する。【選択図】図7

Description

本発明は、政府支援によって、米国エネルギー省から授与されたLawrence Livermore National SecurityとのPathForwardProject(主契約番号DEAC52−07NA27344、下請契約番号B620717)の下で行われた。米国政府は本発明において一定の権利を有する。
中央演算処理装置(CPU)などの汎用プロセッサは典型的に、ソフトウェアアプリケーションに対する入出力(I/O)動作を実行する。複数のプロセッサが含まれるシステムでは、CPUが、ネットワークメッセージを生成することができる唯一のプロセッサである場合がある。システムには、汎用プロセッサに加えてデータ並列プロセッサも含まれる可能性がある。データ並列プロセッサは高並列実行アーキテクチャを有している。データ並列プロセッサには、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)などが含まれる可能性がある。データ並列プロセッサは、CPUがデータ並列プロセッサに代わってネットワーク通信を調整するのを待つ間、計算の遅延を受ける。CPU及びGPUを伴うコンピューティングシステムでは、CPUは「ホスト」と言われることが多い。これらのシステムでは、GPUはネットワーク動作に関しては「二流市民(second class citizen)」である。このため、GPUがネットワーク動作を開始する能力は限定され、GPUが開始した任意のネットワーク動作にCPUを関与させる必要がある。GPUに対するネットワークメッセージを生成するためにホストを用いることには潜在的に、GPUからホストへ、及びホストからネットワークインターフェースへの複数のバックツーバック往復が伴い、性能の低下を招くことになる。
本明細書で説明する方法及びメカニズムの利点は、以下の説明を添付図面とともに参照することによってより良好に理解され得る。
コンピューティングシステムの1つの実施態様のブロック図である。 コンピューティングシステムの別の実施態様のブロック図である。 CPUからGPUへ移行されるネットワーク制御経路の1つの実施態様のタイミング図を例示する図である。 ネットワークパケットテンプレートを記憶するための待ち行列の1つの実施態様を例示する図である。 ネットワークパケットテンプレートの1つの実施態様を例示する図である。 ネットワークパケットテンプレートの別の実施態様を例示する図である。 ネットワークパケットテンプレートを作成及び使用するための方法の1つの実施態様を例示する汎用フロー図である。 待ち行列にネットワークパケットテンプレートを加えるときを決定するための方法の1つの実施態様を例示する汎用フロー図である。 待ち行列にネットワークパケットテンプレートを加えるときを決定するための方法の別の実施態様を例示する汎用フロー図である。
以下の説明では、本明細書で示す方法及びメカニズムの十分な理解が得られるように、多くの具体的な詳細について述べる。しかし、当業者であれば分かるように、これらの具体的な詳細を伴うことなく種々の実施態様を実施してもよい。場合によっては、良く知られた構造、コンポーネント、信号、コンピュータプログラム命令、及び技術については、本明細書で説明するアプローチが不明瞭になることを回避するために、詳細には示していない。当然のことながら、説明を簡単及び明瞭にするために、図に示した要素は必ずしも一定の比率では描かれていない。たとえば、要素のいくつかについての寸法は他の要素に対して誇張されている場合がある。
本明細書では、ネットワークパケットテンプレーティングを実施するための種々のシステム、装置、及び方法について開示している。第1のプロセッサ(たとえば、中央演算処理装置(CPU))が、テンプレートに従ってネットワークパケットを作成して、ネットワークパケットのフィールドの第1のサブセットに静的データを入れる。次に、第1のプロセッサはネットワークパケットをメモリに記憶する。第2のプロセッサ(たとえば、グラフィックスプロセッシングユニット(GPU))がカーネルの実行を開始して、カーネルが実行を完了する前にネットワーク通信要求を検出する。ネットワーク通信要求を検出することに応じて、第2のプロセッサは、ネットワークパケットのフィールドの第2のサブセットにランタイムデータを入れる。そして、第2のプロセッサは、ネットワークパケットは処理可能状態であるという通知を生成する。ネットワークインターフェースコントローラ(NIC)は、通知を検出することに応じて、フィールドの第1のサブセットから、及びフィールドの第2のサブセットから取得したデータを用いて、ネットワークパケットを処理する。
1つの実施態様では、第1及び第2のプロセッサによってアクセス可能なメモリ内に環状バッファが保持される。環状バッファは複数のネットワークパケットを記憶する。1つの実施態様では、第1のプロセッサは環状バッファのステータスを周期的にチェックし、存在しているネットワークパケットの数が閾値を下回った場合、第1のプロセッサは環状バッファに1つ以上のネットワークパケットを加える。環状バッファにネットワークパケットを加えるとき、第1のプロセッサは、環状バッファに加えられた各ネットワークパケットのフィールドの第1のサブセットにデータを入れる。1つの実施態様では、フィールドの第1のサブセットには、ネットワーク制御ビットフィールド及びメモリアクセスキーフィールドが含まれる。1つの実施態様では、フィールドの第2のサブセットには、転送元オフセットフィールド、転送先オフセットフィールド、及び動作タイプフィールドが含まれる。
次に図1を参照して、コンピューティングシステム100の1つの実施態様のブロック図を示す。1つの実施態様では、コンピューティングシステム100には、少なくともプロセッサ105A〜N、入出力(I/O)インターフェース120、バス125、メモリコントローラ(複数可)130、ネットワークインターフェースコントローラ(NIC)135、及びメモリ装置(複数可)140が含まれる。他の実施態様では、コンピューティングシステム100には他のコンポーネントが含まれ、及び/またはコンピューティングシステム100は異なる方法で配置されている。プロセッサ105A〜Nは、システム100に含まれる任意の数のプロセッサを表す。1つの実施態様では、プロセッサ105Aは中央演算処理装置(CPU)などの汎用プロセッサである。1つの実施態様では、プロセッサ105Nは高並列アーキテクチャを伴うデータ並列プロセッサである。データ並列プロセッサには、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)などが含まれる。いくつかの実施態様では、プロセッサ105A〜Nには複数のデータ並列プロセッサが含まれる。
メモリコントローラ(複数可)130は、プロセッサ105A〜NとI/Oインターフェース120に結合されたI/Oデバイス(図示せず)とがアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は任意の数及びタイプのメモリ装置(複数可)140に結合されている。メモリ装置(複数可)140は任意の数及びタイプのメモリ装置を表す。たとえば、メモリ装置(複数可)140内のメモリのタイプには、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)などが含まれる。1つの実施態様では、所与のメモリ装置140には、ネットワークパケットテンプレートに従って第1のプロセッサ105Aが生成した新規作成のネットワークパケットを記憶するための環状バッファ150が含まれる。第1のプロセッサ105Aは、新規作成の各ネットワークパケットに静的情報を入れる。1つの実施態様では、所与のメモリ装置140は第2のプロセッサ105Nにローカルである。第2のプロセッサがネットワーク伝送を開始できる状態にあるとき、第2のプロセッサ105Nは、環状バッファ150に記憶されたネットワークパケットを動的なランタイム情報によって更新し、そして第2のプロセッサ105NはNIC135に、ネットワークパケットは処理可能状態であると通知する。NIC135はネットワークパケットを処理して、要求されたネットワーク通信をネットワーク145上で実行する。本明細書で用いる場合、ネットワークパケットとは、複数のフィールドによってフォーマットされたデータ構造である。データ構造は、第1のプロセッサ105Aによって形成され、第2のプロセッサ105Bによって更新される。言い換えれば、ネットワークパケットは、第1のプロセッサ105Aによって書き込まれるフィールドの第1のサブセットと、第2のプロセッサ105Nによって書き込まれ及び/または更新されるフィールドの第2のサブセットとを有するフォーマットされたデータ構造である。
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェースを表す(たとえば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCI拡張(PCIX)、PCIE(PCIエクスプレス)バス、ギガビットイーサネット(GBE)バス、ユニバーサルシリアルバス(USB))。I/Oインターフェース120には種々のタイプの周辺デバイス(図示せず)が結合される。このような周辺デバイスには、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティックまたは他のタイプのゲームコントローラ、メディア記録装置、外部記憶装置、ネットワークインターフェースカードなどが含まれるが、これらに限定されない。ネットワークインターフェースコントローラ(NIC)135はネットワーク145を介してネットワークメッセージを受信し、送信する。1つの実施態様では、所与のプロセッサ105Nは、NIC135がネットワークパケットを処理する要求を生成する。1つの実施態様では、NIC135は、プロセッサ105Aの関与を伴うことなく、プロセッサ105Nが生成した要求を処理する。この実施態様では、プロセッサ105AはCPUであり、プロセッサ105NはGPUである。他の実施態様では、他のタイプのプロセッサがこれらの動作を実行することができる。
ネットワーク145は、たとえば、無線接続、直接ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)、イントラネット、インターネット、ケーブルネットワーク、パケット交換網、光ファイバネットワーク、ルータ、ストレージエリアネットワーク、または他のタイプのネットワークを含む、任意のタイプのネットワークまたはネットワークの組み合わせを表す。LANの例には、イーサネットネットワーク、ファイバー分散データインターフェース(FDDI)ネットワーク、及びトークンリングネットワークが含まれる。種々の実施態様では、ネットワーク145にはさらに、リモートダイレクトメモリアクセス(RDMA)ハードウェア及び/またはソフトウェア、伝送制御プロトコル/インターネットプロトコル(TCP/IP)ハードウェア及び/またはソフトウェア、ルータ、リピータ、スイッチ、グリッド、及び/または他のコンポーネントが含まれる。
種々の実施態様では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェラブルデバイス、または他の種々のタイプのコンピューティングシステムもしくはデバイスのいずれかである。コンピューティングシステム100のコンポーネントの数は実施態様ごとに変わることに注意されたい。たとえば、他の実施態様では、各コンポーネントは図1に示す数よりも多いかまたは少ない。また他の実施態様では、コンピューティングシステム100には、図1に示していない他のコンポーネントが含まれることに注意されたい。さらに、他の実施態様では、コンピューティングシステム100は図1に示したもの以外の方法で構築される。
次に図2を参照して、コンピューティングシステム200の別の実施態様のブロック図を示す。1つの実施態様では、システム200には、GPU205、システムメモリ225、及びローカルメモリ230が含まれる。またシステム200には、図が不明瞭になることを回避するために図示しない他のコンポーネントが含まれる。GPU205には少なくとも、コマンドプロセッサ235、ディスパッチユニット250、計算ユニット255A〜N、メモリコントローラ220、グローバルデータシェア270、レベルワン(L1)キャッシュ265、及びレベルツー(L2)キャッシュ260が含まれる。他の実施態様では、GPU205には他のコンポーネントが含まれ、例示したコンポーネントのうちの1つ以上が省略され、たとえ図2には1つのインスタンスのみが示されていてもコンポーネントの複数のインスタンスを有し、及び/または他の好適な態様で構成されている。
種々の実施態様では、コンピューティングシステム200は種々のタイプのソフトウェアアプリケーションのいずれかを実行する。1つの実施態様では、所与のソフトウェアアプリケーションを実行する一部として、コンピューティングシステム200のホストCPU(図示せず)は、GPU205上で行うべきカーネルを開始する。本明細書で用いる場合、用語「カーネル」または「計算カーネル」は、1つ以上の計算ユニット上で1つ以上のスレッドとして開始及び実行される実行可能命令を含む機能またはタスクとして規定される。コマンドプロセッサ235はホストCPUからカーネルを受け取って、ディスパッチユニット250にカーネルを出して、計算ユニット255A〜Nにディスパッチする。計算ユニット255A〜N上で実行されるカーネル内のスレッドは、環状バッファ240に記憶されたネットワークパケットをランタイム情報により更新することによってネットワーク通信を開始し、そしてNIC(図示せず)に通知する。NICは、対応する通知を受け取ることに応じて、所与のネットワークパケットを処理する。図2に図示しないが、1つの実施態様では、計算ユニット255A〜Nには1つ以上のキャッシュ及び/またはローカルメモリも各計算ユニット255A〜N内に含まれている。
次に図3を参照して、CPUからGPUへ移行されているネットワーク制御経路の1つの実施態様のタイミング図300を示す。1つの実施態様では、CPU320はGPU325上でカーネル335を開始し、そしてGPU325はCPU320とは独立にカーネル335を実行する。GPU325がカーネル335を実行する間、CPU320は他のタスクを実行することができる。いくつかの実施態様では、CPU320は他のGPUに結合されて、CPU320は他のGPU上でカーネルを開始することができる。これらのカーネルは、GPU325上でカーネル335と並列に実行される。CPU320はテンプレートに従ってネットワークパケットを生成し、各ネットワークパケットのフィールドの一部にデータを入れる。そして、CPU320は、GPU325及びNIC315がアクセス可能な場所に各ネットワークパケットを記憶する。CPU320は、GPU325からの明示的な要求を待つことなく先行してネットワークパケットを生成する。
カーネル335を実行する間、カーネル335が終了するのを待たずに、GPU325は所与のネットワークパケットのフィールドの残りの部分にデータを入れ、そして、GPU325は、送るブロック340で図示されているように、ネットワークパケット要求をネットワークインターフェースコントローラ(NIC)315に送る。GPU325は、このネットワーク要求をNIC315に、CPU320による何らの関与も伴わずに送ることに注意されたい。NIC315は、ネットワークパケット要求を処理して、その要求をネットワーク上に置き、一方で、置くブロック345で図示されるように、カーネル335は続けて実行する。図3に図示しないが、カーネル335は複数のネットワークパケット要求をNIC315に送り、それらはカーネル335の実行中にNIC315によって処理されることに注意されたい。後の時点で、カーネル335の実行は完了し、完了ブロック350によって表される。
次に図4を参照して、ネットワークパケットを記憶するための待ち行列400の1つの実施態様の図を示す。1つの実施態様では、待ち行列400は円形待ち行列であり、動作は先入れ先出し(FIFO)原理に基づいて行われて、最後の位置は最初の位置に戻って接続され円形を作っている。本明細書では「円形待ち行列」は「環状バッファ」とも言われることに注意されたい。他の実施態様では、待ち行列400は、他の種々のタイプのデータ構造のいずれかを用いて実施される。1つの実施態様では、待ち行列400は、CPU、GPU、及びNICを含むコンピューティングシステムによって用いられる。
1つの実施態様では、CPU415は待ち行列400にネットワークパケットを加える。各ネットワークパケットはネットワークパケットテンプレートに従って生成される。本明細書で用いる場合、「ネットワークパケットテンプレート」は、通信パケットの構造として規定され、第1のプロセッサによって作成されるが、1つ以上の空フィールドが第2のプロセッサによって記入及び/または更新される。言い換えれば、「ネットワークパケットテンプレート」によって通信パケットの構造が規定されるが、通信パケットの中身の少なくとも一部は第2のプロセッサによって記入される。典型的に、CPU415は、ネットワークパケットのフィールドの一部に静的情報(たとえば、ネットワーク制御ビット、メモリアクセスキー(Rkey))を記入することを、待ち行列400内の利用可能なスロットにパケットを記憶する前に行う。第2のプロセッサがフィールドの第2のサブセットをネットワークパケットに書き込んだ後に、ネットワークパケットを処理する通知がNIC420に伝えられる。言い換えれば、第2のプロセッサがフィールドをすべて記入することを完了してNIC420に対する通知を生成したら、ネットワークパケットは準備完了になる。1つの実施態様では、第2のプロセッサは、ドアベルレジスタに通知を書き込むことによって、NIC420にネットワークパケットは準備ができていることを通知する。他の実施態様では、第2のプロセッサはNIC420に通知を伝えるために他の技術を用いる。
1つの実施態様では、CPU415は、新規作成のネットワークパケットを待ち行列400に周期的に加える。たとえば、CPU415は待ち行列400のステータスを周期的にチェックする。1つの実施態様では、各待ち行列項目には、待ち行列項目に有効なネットワークパケットが記憶されているか否かを示す有効インジケータが含まれる。本明細書では、「待ち行列項目」は「待ち行列スロット」とも言われることに注意されたい。1つの実施態様では、有効インジケータが示すように待ち行列400に何らかの未使用の(すなわち、利用可能な)スロットがある場合、CPU415は、待ち行列400のこれらの空項目に1つ以上のネットワークパケットを加える。別の実施態様では、待ち行列400に現時点で記憶されているネットワークパケットの数が閾値よりも少ない場合、CPU415は待ち行列400の利用可能なスロットに1つ以上のネットワークパケットを加える。種々の実施態様では、CPU415が待ち行列400に加える415ネットワークパケットの数は固定されているか、プログラム可能であるか、利用可能なスロットの数に基づいているか、または他の好適な仕方で決定される。
1つの実施態様では、NIC420は、処理すべき待ち行列400内の次の場所を指し示すポインタを保持する。NIC420が通知を受け取ってネットワークパケットを処理した後、NIC420は待ち行列内の次の場所を指し示すポインタを増加させる。同様に、GPU425は、待ち行列400内の、変更された後にNIC420によって処理できる状態にあるネットワークパケットを記憶する場所を指し示すポインタを保持する。1つの実施態様では、GPU425が保持するポインタは、NIC420が保持するポインタから1つの待ち行列要素だけずれている。同様に、1つの実施態様では、CPU415は、待ち行列400内の、新規作成のネットワークパケットを記憶するための利用可能な場所を指し示すポインタを保持する。
1つの実施態様では、CPU415は、新規作成のネットワークパケットを記憶するために利用可能な何らかの項目があるか否かを判定するために、待ち行列400の項目を照会する。1つの実施態様では、CPU415が待ち行列400内に利用可能な項目を検出した場合、CPU415は新しいネットワークパケットを生成して、利用可能な項目内にネットワークパケットを記憶する。別の実施態様では、CPU415が待ち行列400内に利用可能な項目を検出し、また第1の条件が満たされている場合、CPU415は新しいネットワークパケットを生成して、利用可能な項目内にネットワークパケットを記憶する。1つの実施態様では、第1の条件は、待ち行列400では、GPU425によって使用できる状態にあるネットワークパケットの数が閾値数よりも少ないことである。他の実施態様では、第1の条件は他の種々のタイプの条件のいずれかである。種々の実施態様では、CPU415はネットワークパケットを先行して、また臨界経路の外に作成する。このようにして、GPU425がネットワークパケットを生成する必要があるとき、GPU425は、待ち行列400に記憶されたネットワークパケットにリアルタイムでアクセスして、CPU415の何らの関与も伴うことなく、NIC420がすぐに消費するようにネットワークパケットを設定する。
次に図5を参照して、ネットワークパケットテンプレート505の1つの実施態様の図を示す。種々の実施態様では、ネットワークパケットテンプレートには、本明細書で説明するように、種々の静的情報及びランタイム情報を有する複数のインジケータ及び/またはフィールドが含まれる。たとえば、1つの実施態様では、ネットワークパケットテンプレート505には、有効インジケータ510、パケット準備完了インジケータ515、及び複数のフィールド520A〜Nが含まれる。他の実施態様では、ネットワークパケットテンプレート505には他の数及び/もしくは他のタイプのインジケータ及びフィールドが含まれ、ならびに/またはネットワークパケットテンプレート505は他の好適な仕方で構築される。
1つの実施態様では、有効インジケータ510は項目に有効なネットワークパケットが記憶されているか否かを示す。有効なネットワークパケットとは、第1のプロセッサ(たとえば、CPU)によって作成及び初期化されていて、第2のプロセッサによる更新(たとえば、GPU、メモリ(PIM)デバイスにおける処理)ができる状態にあるパケットである。1つの実施態様では、パケット準備完了インジケータ515は、NICによって処理可能状態であるネットワークパケットが項目に記憶されるときを特定する。種々の実施態様では、フィールド520A〜Nには種々のネットワーク通信設定のいずれかが記憶されている。1つの実施態様では、ネットワークパケットがネットワークパケットテンプレート505に従って作成されるときに、フィールド520A〜Nの第1のサブセットが第1のプロセッサによってプログラムされ、第2のプロセッサがネットワーク伝送を開始する必要があるときに、フィールド520A〜Nの第2のサブセットがリアルタイムでプログラムされる。
次に図6を参照して、ネットワークパケットテンプレート605の別の実施態様の図を示す。1つの実施態様では、ネットワークパケットテンプレート605には、有効インジケータ610及びパケット準備完了インジケータ615が含まれる。またネットワークパケットテンプレート605には、ネットワーク制御ビット620及びメモリアクセスキー625が含まれる。1つの実施態様では、第1のプロセッサ(たとえば、CPU)は、テンプレート605に従ってネットワークパケットを作成して、第2のプロセッサ(たとえば、GPU)がアクセス可能なメモリ内の待ち行列(たとえば、図4の待ち行列400)にそのネットワークパケットを記憶するときに、ネットワーク制御ビット620及びメモリアクセスキー625に対するフィールドに記入する。図示しないが、他の実施態様では、ネットワークパケットテンプレート605には、待ち行列にネットワークパケットを作成及び記憶した際に、第1のプロセッサによって記入される1つ以上の他のフィールドも含まれる。
またネットワークパケットテンプレート605には、第2のプロセッサによってランタイム情報が動的に記入される種々のフィールドも含まれる。たとえば、1つの実施態様では、ネットワークパケットテンプレート605には、転送元オフセット630、転送先オフセット635、及び動作タイプ640(第2のプロセッサによってランタイム情報が記入される)が含まれる。転送元オフセット630は、転送元バッファまたは転送元メモリ装置内のどこでデータの転送を始めるかを特定する。転送先オフセット635は、転送先バッファまたは転送先メモリ装置内のどこに転送データを記憶するかを特定する。動作タイプ640は、行うべき動作のタイプ(たとえば、読み出し、書き込み、アトミック)を特定する。他の実施態様では、ネットワークパケットテンプレート605には、第2のプロセッサによってランタイム情報が動的に記入される他の数及びタイプのフィールドが含まれることに注意されたい。また、さらなる実施態様では、ネットワークパケットテンプレート605は他の好適な仕方で構築される。
次に図7を参照して、ネットワークパケットテンプレートを作成及び使用するための方法700の1つの実施態様を示す。説明の目的上、この実施態様におけるステップ及び図8のステップは順番に示している。しかし、説明した方法の種々の実施態様において、説明する要素のうちの1つ以上は同時に行われるか、図示したものとは異なる順番で行われるか、または完全に省略されることに注意されたい。他のさらなる要素も必要に応じて行われる。本明細書で説明する種々のシステムまたは装置のいずれかは、方法700を実施するように構成されている。
第1のプロセッサは、テンプレートに従ってネットワークパケットを作成して、ネットワークパケットのフィールドの第1のサブセットにデータを入れる(ブロック705)。1つの実施態様では、第1のプロセッサはCPUである。第1のプロセッサは、第2のプロセッサがアクセス可能な場所にネットワークパケットを記憶する(ブロック710)。1つの実施態様では、第1のプロセッサは、ネットワークパケットテンプレートに対する明示的な要求を第2のプロセッサから受け取ることなく、ステップ705及び710を実行する。この結果、ステップ705及び710を先行して、また臨界経路の外で行うことができる。1つの実施態様では、準備完了フラグは、第1のプロセッサによって記憶されたネットワークパケットに対して設定されておらず、ネットワークパケットがまだNICによって処理可能状態ではないことを示している。また準備完了フラグが設定されていないことは、ネットワークパケットが準備完了になる前に第2のプロセッサが依然としてネットワークパケットにもっとデータを加える必要があることも示している。
また、第1のプロセッサは第2のプロセッサ上でカーネルを開始する(ブロック715)。1つの実施態様では、第2のプロセッサはGPUである。ステップ715はしばしば、ステップ705及び710と並列に行われるか、またはステップ705及び710よりも前に行われることに注意されたい。次に、カーネルの実行中に、第2のプロセッサは、カーネルがネットワーク通信要求を検出することに応じて、ネットワークパケットのフィールドの第2のサブセットにデータを入れる(ブロック720)。そして、第2のプロセッサはNICに、ネットワークパケットは処理可能状態であることを通知する(ブロック725)。次にNICは、フィールドの第1のサブセット及びフィールドの第2のサブセットから取得したデータを用いて、ネットワークパケットを処理する(ブロック730)。ブロック730の後に、方法700は終了する。
次に図8を参照して、待ち行列にネットワークパケットテンプレートを加えるときを決定するための方法800の1つの実施態様を示す。第1のプロセッサは、ネットワークパケットを記憶する待ち行列のステータスをモニタする(ブロック805)。待ち行列に対して第1の条件が検出されたら(条件ブロック810、「yes」肢)、第1のプロセッサは1つ以上のネットワークパケットを作成して待ち行列に加える(ブロック815)。1つの実施態様では、第1の条件は、待ち行列の占有レベルが閾値を下回ることである。占有レベルは、待ち行列に記憶され、第2のプロセッサがデータを入れられる状態である有効なネットワークパケットの個数として特定される。1つの実施態様では、閾値は、待ち行列に記憶されたネットワークパケットを更新する第2のプロセッサによってプログラムされる。この実施態様では、第2のプロセッサは、現時点で第2のプロセッサによって実行されているカーネルのステータスに基づいて閾値を調整する。たとえば、1つの実施態様では、第2のプロセッサが、比較的大きな数のネットワーク要求を生成しているカーネルを実行する場合、第2のプロセッサは、第1のプロセッサが多数のネットワークパケットを待ち行列上に保持することが確実になるように閾値を動的に下げる。他の実施態様では、第2のプロセッサは1つ以上の他の因子に基づいて閾値を調整する。
別の実施態様では、第1の条件は、待ち行列が、ネットワークパケットを記憶するための1つ以上の利用可能なスロットを有することである。他の実施態様では、第1の条件は他の種々のタイプの条件のいずれかである。待ち行列に対して第1の条件が検出されなかった場合(条件ブロック810、「no」肢)、第1のプロセッサは、待ち行列のステータスを再びチェックする前に、プログラム可能な時間、待機する(ブロック820)。1つの実施態様では、プログラム可能な時間は、現時点で実行されているカーネルに対応付けられる1つ以上の因子に基づいて、第2のプロセッサによって決定される。ブロック820の後に、方法800はブロック805に戻る。
次に図9を参照して、待ち行列にネットワークパケットテンプレートを加えるときを決定するための方法900の別の実施態様を示す。第1のプロセッサ(たとえば、CPU)及び第2のプロセッサ(たとえば、GPU)を有するシステムでは、第2のプロセッサが、ネットワークパケットを記憶する待ち行列のステータスをモニタする(ブロック905)。待ち行列に対して第1の条件が検出された場合(条件ブロック910、「yes」肢)、第2のプロセッサは、1つ以上のネットワークパケットを作成して待ち行列に加えるために、第1のプロセッサに対して割り込みを生成する(ブロック915)。割り込みを受け取ることに応じて、第1のプロセッサは1つ以上のネットワークパケットを作成して待ち行列に加える(ブロック920)。
1つの実施態様では、第1の条件は、待ち行列の占有レベルが閾値を下回ることである。占有レベルは、待ち行列に記憶され、1つ以上のフィールドに第2のプロセッサによってデータを入れられる状態である有効なネットワークパケットの個数であると特定される。別の実施態様では、第1の条件は、待ち行列が、ネットワークパケットを記憶するための1つ以上の利用可能なスロットを有することである。他の実施態様では、第1の条件は他の種々のタイプの条件のいずれかである。待ち行列に対して第1の条件が検出されなかった場合(条件ブロック910、「no」肢)、第2のプロセッサは、待ち行列のステータスを再びチェックする前に、プログラム可能な時間、待機する(ブロック925)。ブロック925の後に、方法900はブロック905に戻る。
種々の実施態様では、ソフトウェアアプリケーションのプログラム命令を用いて、本明細書で説明した方法及び/またはメカニズムを実施する。たとえば、汎用または専用プロセッサによって実行可能なプログラム命令が考えられる。種々の実施態様では、このようなプログラム命令は高レベルプログラミング言語によって表される。他の実施態様では、プログラム命令を高レベルプログラミング言語からバイナリ、中間、または他の形式にコンパイルする。代替的に、プログラム命令は、ハードウェアの動作または設計を記述するように記述される。このようなプログラム命令をCなどの高水準プログラミング言語によって表す。代替的に、ベリログなどのハードウェア設計言葉(HDL)を用いる。種々の実施態様では、プログラム命令を種々の非一時的なコンピュータ可読記憶媒体のいずれかに記憶する。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令をコンピューティングシステムに送ってプログラムを実行させる。概して言えば、このようなコンピューティングシステムには、プログラム命令を実行するように構成された少なくとも1つ以上のメモリと、1つ以上のプロセッサが含まれる。
強調しておかなければならないのは、前述した実施態様は単に実施態様の非限定的な例であるということである。開示内容が十分に理解されたら、多くの変形及び変更が当業者には明らかになる。以下の特許請求の範囲は、このような変形及び変更をすべて受け入れると解釈すべきであることが意図されている。

Claims (20)

  1. メモリと、
    第1のプロセッサであって、テンプレートに従ってネットワークパケットを作成して、前記ネットワークパケットのフィールドの第1のサブセットにデータを入れることと、前記メモリに前記ネットワークパケットを記憶することと、を行うように構成された、第1のプロセッサと、
    第2のプロセッサであって、カーネルの実行を開始することと、前記カーネルが実行を完了する前に、前記カーネル内のネットワーク通信要求を検出することに応じて、前記ネットワークパケットのフィールドの第2のサブセットにデータを入れることと、前記ネットワークパケットは処理可能状態であるという通知を生成することと、を行うように構成された、前記第2のプロセッサと、
    前記カーネルが実行を完了する前に、前記通知を検出することに応じて、前記ネットワークパケットを処理するように構成されたネットワークインターフェースコントローラと、を含む、システム。
  2. 前記ネットワークインターフェースコントローラは、フィールドの前記第1のサブセットから、及びフィールドの前記第2のサブセットから取得されたデータを用いて前記ネットワークパケットを処理する、請求項1に記載のシステム。
  3. フィールドの前記第1のサブセットには静的データが含まれ、
    フィールドの前記第2のサブセットにはランタイムデータが含まれる、請求項1に記載のシステム。
  4. フィールドの前記第1のサブセットには、ネットワーク制御ビットフィールド及びメモリアクセスキーフィールドが含まれ、
    フィールドの前記第2のサブセットには、転送元オフセットフィールド、転送先オフセットフィールド、及び動作タイプフィールドが含まれる、請求項1に記載のシステム。
  5. 前記第1のプロセッサは、前記ネットワークパケットを作成し、前記第2のプロセッサが前記ネットワーク通信要求を検出する前に、前記ネットワークパケットテンプレートのフィールドの前記第1のサブセットにデータを入れるように構成されている、請求項1に記載のシステム。
  6. 前記第1のプロセッサは、テンプレートに従って前記ネットワークパケットを作成し、第1の条件を検出することに応じてのみ、待ち行列に前記ネットワークパケットを記憶するように構成されている、請求項1に記載のシステム。
  7. 前記第1の条件は、前記待ち行列の占有レベルが閾値を下回ることである、請求項6に記載のシステム。
  8. テンプレートに従って、第1のプロセッサによって、ネットワークパケットを作成して、前記ネットワークパケットのフィールドの第1のサブセットにデータを入れることと、
    前記第1のプロセッサにより、前記ネットワークパケットをメモリに記憶することと、
    第2のプロセッサでカーネルの実行を開始することと、
    前記カーネルが実行を完了する前に、前記カーネル内のネットワーク通信要求を検出することに応じて、
    前記第2のプロセッサによって、前記ネットワークパケットのフィールドの第2のサブセットにデータを入れることと、
    前記第2のプロセッサによって、前記ネットワークパケットテンプレートは処理可能状態であるという通知を作成することと、
    前記第2のプロセッサで前記カーネルが実行を完了する前に、前記通知を検出することに応じて、ネットワークインターフェースコントローラによって前記ネットワークパケットテンプレートを処理することと、を含む、方法。
  9. フィールドの前記第1のサブセットから、及びフィールドの前記第2のサブセットから取得されたデータを用いて前記ネットワークパケットを処理することをさらに含む、請求項8に記載の方法。
  10. フィールドの前記第1のサブセットには静的データが含まれ、
    フィールドの前記第2のサブセットにはランタイムデータが含まれる、請求項8に記載の方法。
  11. フィールドの前記第1のサブセットには、ネットワーク制御ビットフィールド及びメモリアクセスキーフィールドが含まれ、
    フィールドの前記第2のサブセットには、転送元オフセットフィールド、転送先オフセットフィールド、及び動作タイプフィールドが含まれる、請求項8に記載の方法。
  12. 前記第1のプロセッサによって、前記ネットワークパケットを作成することと、前記第2のプロセッサが前記ネットワーク通信要求を検出する前に、前記ネットワークパケットのフィールドの前記第1のサブセットにデータを入れることと、をさらに含む、請求項8に記載の方法。
  13. 前記第1のプロセッサによって、テンプレートに従って前記ネットワークパケットを作成することと、第1の条件を検出することに応じてのみ、待ち行列に前記ネットワークパケットを記憶することと、をさらに含む、請求項8に記載の方法。
  14. 前記第1の条件は、前記待ち行列の占有レベルが閾値を下回ることである、請求項13に記載の方法。
  15. メモリと、複数の計算ユニットとを含むプロセッサであって、
    前記複数の計算ユニットの1つ以上の計算ユニットでカーネルの実行を開始することと、
    前記カーネルが実行を完了する前に、前記カーネル内のネットワーク通信要求を検出することに応じて、
    フィールドの第1のサブセットのみにデータが入っている状態で、前記メモリ内にネットワークパケットを配置することと、
    前記ネットワークパケットのフィールドの第2のサブセットにデータを入れることと、
    前記ネットワークパケットテンプレートは処理可能状態であるという通知を生成することと、を行うように構成されている、プロセッサ。
  16. フィールドの前記第1のサブセットには静的データが含まれ、フィールドの前記第2のサブセットにはランタイムデータが含まれる、請求項15に記載のプロセッサ。
  17. フィールドの前記第1のサブセットには、ネットワーク制御ビットフィールド及びメモリアクセスキーフィールドが含まれ、
    フィールドの前記第2のサブセットには、転送元オフセットフィールド、転送先オフセットフィールド、及び動作タイプフィールドが含まれる、請求項15に記載のプロセッサ。
  18. 前記プロセッサが前記ネットワーク通信要求を検出する前に、前記ネットワークパケットのフィールドの前記第1のサブセットにデータが入る、請求項15に記載のプロセッサ。
  19. 前記プロセッサはさらに、フィールドの前記第1のサブセットにデータが入った前記ネットワークパケットを待ち行列に加えるときを決定するための閾値をプログラミングするように構成されている、請求項15に記載のプロセッサ。
  20. 前記プロセッサはさらに、前記通知をネットワークインターフェースコントローラに伝えて、前記ネットワークパケットを処理させるように構成されている、請求項15に記載のプロセッサ。
JP2020570420A 2018-06-28 2019-04-25 Gpu主導の通信のためのネットワークパケットテンプレーティング Active JP7461895B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/022,498 2018-06-28
US16/022,498 US10740163B2 (en) 2018-06-28 2018-06-28 Network packet templating for GPU-initiated communication
PCT/US2019/029040 WO2020005377A1 (en) 2018-06-28 2019-04-25 Network packet templating for gpu-initiated communication

Publications (2)

Publication Number Publication Date
JP2021530022A true JP2021530022A (ja) 2021-11-04
JP7461895B2 JP7461895B2 (ja) 2024-04-04

Family

ID=67138012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020570420A Active JP7461895B2 (ja) 2018-06-28 2019-04-25 Gpu主導の通信のためのネットワークパケットテンプレーティング

Country Status (6)

Country Link
US (1) US10740163B2 (ja)
EP (1) EP3814921A1 (ja)
JP (1) JP7461895B2 (ja)
KR (1) KR102523590B1 (ja)
CN (1) CN112313636A (ja)
WO (1) WO2020005377A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861403B2 (en) * 2020-10-15 2024-01-02 Nxp Usa, Inc. Method and system for accelerator thread management
US11677839B2 (en) * 2021-06-17 2023-06-13 Nvidia Corporation Automatic coalescing of GPU-initiated network communication
US11960813B2 (en) 2021-08-02 2024-04-16 Advanced Micro Devices, Inc. Automatic redistribution layer via generation
KR20230092227A (ko) 2021-12-17 2023-06-26 삼성전자주식회사 멀티코어 프로세서 및 스토리지 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180107627A1 (en) * 2016-10-18 2018-04-19 Advanced Micro Devices, Inc. Gpu remote communication with triggered operations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US8170023B2 (en) * 2007-02-20 2012-05-01 Broadcom Corporation System and method for a software-based TCP/IP offload engine for implementing efficient digital media streaming over internet protocol networks
US9450780B2 (en) * 2012-07-27 2016-09-20 Intel Corporation Packet processing approach to improve performance and energy efficiency for software routers
US9319254B2 (en) * 2012-08-03 2016-04-19 Ati Technologies Ulc Methods and systems for processing network messages in an accelerated processing device
US20170180272A1 (en) * 2012-10-03 2017-06-22 Tracey Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
US9934177B2 (en) * 2014-11-04 2018-04-03 Cavium, Inc. Methods and systems for accessing storage using a network interface card
US9342384B1 (en) * 2014-12-18 2016-05-17 Intel Corporation Function callback mechanism between a central processing unit (CPU) and an auxiliary processor
US10331590B2 (en) * 2016-06-30 2019-06-25 Intel Corporation Graphics processing unit (GPU) as a programmable packet transfer mechanism

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180107627A1 (en) * 2016-10-18 2018-04-19 Advanced Micro Devices, Inc. Gpu remote communication with triggered operations

Also Published As

Publication number Publication date
US20200004610A1 (en) 2020-01-02
KR20210013732A (ko) 2021-02-05
EP3814921A1 (en) 2021-05-05
US10740163B2 (en) 2020-08-11
JP7461895B2 (ja) 2024-04-04
WO2020005377A1 (en) 2020-01-02
KR102523590B1 (ko) 2023-04-19
CN112313636A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
JP7092801B2 (ja) Gpuタスクスケジューリングの継続分析タスク
JP7461895B2 (ja) Gpu主導の通信のためのネットワークパケットテンプレーティング
CN110741356B (zh) 多处理器系统中的中继一致存储器管理
CN109690512B (zh) 具有触发操作的gpu远程通信
US7200695B2 (en) Method, system, and program for processing packets utilizing descriptors
US9632958B2 (en) System for migrating stash transactions
US20230120934A1 (en) Gpu networking using an integrated command processor
US10970118B2 (en) Shareable FPGA compute engine
EP3830702A1 (en) Vmid as a gpu task container for virtualization
CN116243983A (zh) 处理器、集成电路芯片、指令处理方法、电子设备和介质
US10713188B2 (en) Inter-process signaling system and method
WO2013109234A2 (en) Method to accelerate message signaled interrupt processing
US10284501B2 (en) Technologies for multi-core wireless network data transmission
WO2021061374A1 (en) Multi-core processor and inter-core data forwarding method
EP3234786B1 (en) Scalable synchronization mechanism for distributed memory
WO2024183678A1 (zh) 获取数据对象的锁的方法、网卡以及计算设备
WO2024000510A1 (zh) 一种处理请求的方法、装置及系统
US20220114123A1 (en) Distributed interrupt priority and resolution of race conditions
Heidelberger et al. Concurrent array-based queue

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230613

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230913

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240325

R150 Certificate of patent or registration of utility model

Ref document number: 7461895

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150