<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Network on QSysArch - Quantum Computer System Architecture</title><link>https://qsysarch.com/ja/categories/network/</link><description>Recent content in Network on QSysArch - Quantum Computer System Architecture</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Tue, 28 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://qsysarch.com/ja/categories/network/index.xml" rel="self" type="application/rss+xml"/><item><title>NVQLink：NVIDIAのGPU-量子統合システムアーキテクチャ</title><link>https://qsysarch.com/ja/posts/nvqlink-system-architecture/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate><guid>https://qsysarch.com/ja/posts/nvqlink-system-architecture/</guid><description>&lt;p&gt;私は、&lt;a href="https://qblox.com/newsroom/qblox-accelerates-utility-scale-quantum-computing-with-nvidia" class="external-link" target="_blank" rel="noopener"&gt;Qblox&lt;/a&gt; のチームの一員になれたことを大変嬉しく思っています。このチームは、&lt;a href="https://www.nvidia.com/en-us/solutions/quantum-computing/nvqlink/" class="external-link" target="_blank" rel="noopener"&gt;Nvidia&lt;/a&gt; と積極的に協力し、&lt;a href="https://nvidianews.nvidia.com/news/nvidia-nvqlink-quantum-gpu-computing" class="external-link" target="_blank" rel="noopener"&gt;NVQLink&lt;/a&gt; 標準を推進しています。これは、GPU、CPU、および QPU (量子プロセッサ、Qblox が開発している最前線の量子コントローラを含む) 上で計算される異種システムを相互接続する方法です。&lt;/p&gt;&#10;&lt;p&gt;&lt;img src='https://qsysarch.com/images/nvqlink/nvqlink1.webp' style='width:50%;margin:0;padding:0;'&gt;&lt;img src='https://qsysarch.com/images/nvqlink/nvqlink2.webp' style='width:50%;margin:0;padding:0;'&gt;&lt;/p&gt;&#10;&lt;h1 id="nvqlinkの概要"&gt;&#10; NVQLinkの概要&#10; &lt;a class="heading-link" href="#nvqlink%e3%81%ae%e6%a6%82%e8%a6%81"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;NVQLinkは、GPUと量子プロセッサを接続するための単なる「ケーブル」ではなく、ネットワークからソフトウェアスタックまで、異種デバイスを相互接続できる包括的なフレームワークです。&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img class="glightbox" src="https://qsysarch.com/images/nvqlink/connect-quantum-processing-units-qpus-with-gpus.webp" alt="NVQLink 高レベルシステムアーキテクチャ" /&gt; 画像提供: &lt;a href="https://www.naddod.com/blog/nvidia-nvqlink-introduction-connecting-quantum-and-gpu-computing" class="external-link" target="_blank" rel="noopener"&gt;Nannod&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="パフォーマンス仕様"&gt;&#10; パフォーマンス仕様&#10; &lt;a class="heading-link" href="#%e3%83%91%e3%83%95%e3%82%a9%e3%83%bc%e3%83%9e%e3%83%b3%e3%82%b9%e4%bb%95%e6%a7%98"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;主要な「ハードウェア」仕様では、ネットワークおよびコンピューティングリソースの性能が重視されます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;ネットワークスループット：GPUからQPUまで最大400Gb/s。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;ネットワーク遅延：往復遅延（FPGA → GPU → FPGA）が4.0マイクロ秒未満。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GPUハードウェア：NVIDIA GB200 Grace Blackwellスーパーチップをベースに構築されたリアルタイムホストで、非常に高いTFLOPS性能を備えています。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="nvqlinkが必要な理由"&gt;&#10; NVQLinkが必要な理由&#10; &lt;a class="heading-link" href="#nvqlink%e3%81%8c%e5%bf%85%e8%a6%81%e3%81%aa%e7%90%86%e7%94%b1"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;あなたは「なぜこれが重要なのか？」と疑問に思うかもしれません。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;量子ハードウェアと高速化されたGPUコンピューティングを緊密に統合するためのオープンスタンダードを作成します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;ハイブリッドワークフローを可能にします：ニューラルネットワークのキャリブレーション、量子誤り訂正（QEC）など。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;これは、ソフトウェアとハードウェアを1つに統合したオープンなプラットフォームを提供し、&lt;a href="https://developer.nvidia.com/cuda-q" class="external-link" target="_blank" rel="noopener"&gt;CUDA-Q&lt;/a&gt;のおかげで、誰もが&lt;a href="https://qsysarch.com/posts/4-rust-to-the-rescue/" &gt;知識の海&lt;/a&gt;に溺れることなく量子コンピュータとやり取りできるようにします。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h1 id="nvqlink仕様アーキテクチャ設計"&gt;&#10; NVQLink仕様：アーキテクチャ設計&#10; &lt;a class="heading-link" href="#nvqlink%e4%bb%95%e6%a7%98%e3%82%a2%e3%83%bc%e3%82%ad%e3%83%86%e3%82%af%e3%83%81%e3%83%a3%e8%a8%ad%e8%a8%88"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;NVQLinkのホワイトペーパーがhttps://arxiv.org/abs/2510.25213から入手可能になったので、提案されているアーキテクチャの詳細を詳しく見ていきましょう。&lt;/p&gt;&#10;&lt;p&gt;システムアーキテクチャ&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img class="glightbox" src="https://qsysarch.com/images/nvqlink/nvqlink-system-architecture-diagram.webp" alt="NVQlinkシステムアーキテクチャとコンポーネント" /&gt; (ホワイトペーパーに掲載されている元の&lt;a href="https://qsysarch.com/images/nvqlink/nvqlink-system-architecture.webp" &gt;画像&lt;/a&gt;を基に作成したシステム図)&lt;/p&gt;&#10;&lt;p&gt;予想通り、詳細はNannodによる概要と一致しています。コンポーネントの観点から見ると、NVQLinkアーキテクチャはリアルタイムホスト（&lt;code&gt;RTH&lt;/code&gt;）とQPU制御システム（&lt;code&gt;QSC&lt;/code&gt;）で構成されています。これら2つのコンポーネントは、低遅延でスケーラブルなリアルタイムインターコネクト（&lt;code&gt;RTI&lt;/code&gt;）で接続されています。RTHには、CPUやGPUといった従来のHPCコンピューティングリソースが搭載されています。QSCには、通常、QPUを制御するパルス処理ユニット（&lt;code&gt;PPU&lt;/code&gt;）が含まれています。&lt;/p&gt;&#10;&lt;p&gt;この図では、重要なキーワードである「fn」と「NI」を紹介します。NVQLinkのメンタルモデル（「プログラミングモデル」）では、CPU、GPU、PPU（またはその他の専用IC/FPGA）はそれぞれ「デバイス」と呼ばれ、NVQLinkはこれらのデバイスのいずれに対してもリモートプロシージャコール（「コールバック」または「fn」）を実行できるようにします。これは非常に強力なソリューションであり、NVQLinkは異種システムを繋ぐ接着剤として機能します。「fn」ランタイムの実際の実装は高度に最適化されており、マーシャリングも自動的に処理されます。これにより、数マイクロ秒のレイテンシを実現できます。「NI」はネットワークインターフェースの略で、すべての関係者が統一された相互接続システムを構築するために使用できる、小型でオプションのネットワークカード/インターフェース/ケーブルとして概念化されています。&lt;/p&gt;&#10;&lt;h2 id="時間領域"&gt;&#10; 時間領域&#10; &lt;a class="heading-link" href="#%e6%99%82%e9%96%93%e9%a0%98%e5%9f%9f"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;NVQLinkでは、時間領域という非常に重要な概念も導入されています。これは、システムに関わるすべての「処理ユニット」が「同じクロック」に従うとは限らないため必要となります。&lt;/p&gt;&#10;&lt;p&gt;クロック、つまり時間ドメインには、速いものから遅いものまで4つのカテゴリがあります。&#10;&lt;img class="glightbox" src="https://qsysarch.com/images/nvqlink/time-domains-vertical.webp#right" alt="NVQLink処理時間ドメイン" style="width: 100%; max-width: 250px;"/&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;物理時間領域 (PTD): 通常は QPU クロック。&lt;/p&gt;</description></item><item><title>GPUDirect RDMA: RoCE パケットの寿命</title><link>https://qsysarch.com/ja/posts/gpu-direct-from-rdma-from-pcie-to-using-doca/</link><pubDate>Sat, 18 Oct 2025 00:00:00 +0000</pubDate><guid>https://qsysarch.com/ja/posts/gpu-direct-from-rdma-from-pcie-to-using-doca/</guid><description>&lt;style&gt;&#10;img[src$='#center']&#10;{&#10;display: block;&#10;margin: 0.7rem auto;&#10;}&#10;img[src$='#right']&#10;{&#10;width: 50%;&#10;float: right;&#10;padding-left: 10px;&#10;}&#10;&lt;/style&gt;&#10;&lt;p&gt;&#10;&lt;img class="glightbox" src="https://qsysarch.com/images/gpudirect-rdma-pcie/nvidia-dgx-spark.webp#right" alt="" style="width: 100%; max-width: 200px;"/&gt;&lt;/p&gt;&#10;&lt;p&gt;このメモは、RDMA の内部構造、特に &lt;a href="https://nvidianews.nvidia.com/news/nvidia-dgx-spark-arrives-for-worlds-ai-developers" class="external-link" target="_blank" rel="noopener"&gt;DGX Spark&lt;/a&gt; (右の画像) に統合された 200Gb connectX-7 などの PCIe サブシステムと相互接続する「RDMA 準拠 NIC」を作成するために必要なことを理解することを目的としています。&lt;/p&gt;&#10;&lt;h1 id="rdmaをクライアントサーバープロトコルとして使用する"&gt;&#10; RDMAを「クライアントサーバー」プロトコルとして使用する&#10; &lt;a class="heading-link" href="#rdma%e3%82%92%e3%82%af%e3%83%a9%e3%82%a4%e3%82%a2%e3%83%b3%e3%83%88%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc%e3%83%97%e3%83%ad%e3%83%88%e3%82%b3%e3%83%ab%e3%81%a8%e3%81%97%e3%81%a6%e4%bd%bf%e7%94%a8%e3%81%99%e3%82%8b"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;このメモは、RDMAプロトコルの概要から始めましょう。&lt;/p&gt;&#10;&lt;h2 id="rdma設定"&gt;&#10; RDMA設定&#10; &lt;a class="heading-link" href="#rdma%e8%a8%ad%e5%ae%9a"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;RDMAデータチャネルを設定する際、メモリバッファは使用する前にネットワークカードに登録する必要があります。登録プロセスは以下の手順で構成されます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;メモリをピン留めして、オペレーティングシステムによってスワップされないようにする。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;アドレス変換情報をNICに保存します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;メモリ領域のアクセス許可を設定します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;NICがRDMA動詞を実行する際に使用するリモートキーとローカルキーを作成します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="rdmaキューペア"&gt;&#10; RDMAキューペア&#10; &lt;a class="heading-link" href="#rdma%e3%82%ad%e3%83%a5%e3%83%bc%e3%83%9a%e3%82%a2"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;RDMA通信は3つのキューのセットに基づいています&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;SQ&lt;/code&gt;: 送信キュー&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;RQ&lt;/code&gt;: 受信キュー&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;code&gt;CQ&lt;/code&gt;: 完了キュー&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;RDMAキューペア、または「QP」とは、送信キューと受信キューを指します。&lt;/p&gt;&#10;&lt;h2 id="rdmaワークキュー要素"&gt;&#10; RDMAワークキュー要素&#10; &lt;a class="heading-link" href="#rdma%e3%83%af%e3%83%bc%e3%82%af%e3%82%ad%e3%83%a5%e3%83%bc%e8%a6%81%e7%b4%a0"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;アプリケーションは、ワークリクエスト（ワークキュー要素（&lt;code&gt;WQE&lt;/code&gt;）とも呼ばれる）を使用してジョブを発行します。ワークリクエストは、バッファへのポインタを持つ小さな構造体です。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;送信キューでは、送信するメッセージへのポインタです。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;受信キューでは、受信したメッセージをどこに配置すべきかを示します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;作業依頼が完了すると、アダプタは完了キュー要素を作成し、それを完了キューに追加します。&lt;/p&gt;</description></item><item><title>RoCEv2: InfiniBandトランスポートプロトコル</title><link>https://qsysarch.com/ja/posts/the-infiniband-transport-protocol-of-rocev2/</link><pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate><guid>https://qsysarch.com/ja/posts/the-infiniband-transport-protocol-of-rocev2/</guid><description>&lt;p&gt;私は以前、高性能ネットワーク向けテストシステムを開発する計測機器メーカーであるSpirent社に勤務していました。製品は&lt;a href="https://www.spirent.com/products/testcenter-hardware" class="external-link" target="_blank" rel="noopener"&gt;Test Center&lt;/a&gt;と呼ばれ、非常に優秀なチームと共に、RoCEv2システムのテストに使用されるシステムを開発していました。私の主な担当は、優先フロー制御（PFC）と、800GbpsのFPGAベースの「パケットアナライザおよびジェネレータ」（PGAとも呼ばれる）でPFCを有効にする方法でした。&lt;/p&gt;&#10;&lt;p&gt;しかし、私はレイヤー4を実際に見たことがなかったので、このメモでは、InfiniBandトランスポート層（L4）の主要な要素を明確にし、いくつかの図を用いて視覚化することで、このギャップを埋めようと試みます。&lt;/p&gt;&#10;&lt;h1 id="rocev2フレーム"&gt;&#10; RoCEv2フレーム&#10; &lt;a class="heading-link" href="#rocev2%e3%83%95%e3%83%ac%e3%83%bc%e3%83%a0"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;まずは実際のRoCEv2フレームから見ていきましょう。&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img class="glightbox" src="https://qsysarch.com/images/rocev2-frame-format.webp" alt="RoCEv2フレーム" /&gt;&lt;/p&gt;&#10;&lt;h2 id="ベーストランスポートヘッダー-bth"&gt;&#10; ベーストランスポートヘッダー (BTH)&#10; &lt;a class="heading-link" href="#%e3%83%99%e3%83%bc%e3%82%b9%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88%e3%83%98%e3%83%83%e3%83%80%e3%83%bc-bth"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;BTHヘッダーに含まれる主要フィールド：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;オペコード: RDMA_WRITE、RDMA_READなどのRDMA操作の種類を指定するために使用されます。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;宛先キューペア: パケットの異なる宛先キューペアを区別するために使用されます。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;確認応答要求: 受信側がこのパケットに対してACKを返す必要があるかどうかを示します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;パケットシーケンス番号（PSN）：確実な配信のためのパケットシーケンス追跡に使用されます。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;UDPは信頼性の低いプロトコルであり、フレームが失われたり、順序が狂ったり、重複したりする可能性があるため、PSNを使用して正しい配信を保証します。しかし、これはIBTLがフレームの再送信を要求する方法が必要であることも意味します。これは、後述するAETHヘッダーを使用して実現されます。&lt;/p&gt;&#10;&lt;h2 id="拡張トランスポートヘッダー-eth"&gt;&#10; 拡張トランスポートヘッダー (ETH)&#10; &lt;a class="heading-link" href="#%e6%8b%a1%e5%bc%b5%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88%e3%83%98%e3%83%83%e3%83%80%e3%83%bc-eth"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h2&gt;&#10;&lt;p&gt;InfiniBandトランスポート層には、特定の機能に使用される拡張ヘッダーがいくつかあります。RDMAの場合、最も重要なのはRETHとAETHの2つです。&lt;/p&gt;&#10;&lt;h5 id="rdma拡張トランスポートヘッダーreth"&gt;&#10; RDMA拡張トランスポートヘッダー（RETH）&#10; &lt;a class="heading-link" href="#rdma%e6%8b%a1%e5%bc%b5%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88%e3%83%98%e3%83%83%e3%83%80%e3%83%bcreth"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h5&gt;&#10;&lt;img src='https://qsysarch.com/images/RoCEv2-IBTH-RETH-frame.webp' style="width:320px;max-width:100%;float:right;padding-left:20px;"&gt;&#10;&lt;p&gt;RDMA_WRITE操作にはいくつかの要素が必要であり、それらはRETH拡張ヘッダーのフィールドで表現されます。このヘッダーは、受信側のハードウェアに対して、書き込み操作の詳細（以下を含む）を伝えます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;仮想アドレス：データが書き込まれるメモリ上のアドレス&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;リモートキー (R_Key): メモリ領域へのアクセス権限を検証するアクセスキー&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;長さ：転送するデータのサイズ&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h5 id="ack-拡張トランスポート-ヘッダー-aeth"&gt;&#10; ACK 拡張トランスポート ヘッダー (AETH)&#10; &lt;a class="heading-link" href="#ack-%e6%8b%a1%e5%bc%b5%e3%83%88%e3%83%a9%e3%83%b3%e3%82%b9%e3%83%9d%e3%83%bc%e3%83%88-%e3%83%98%e3%83%83%e3%83%80%e3%83%bc-aeth"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h5&gt;&#10;&lt;p&gt;前述のとおり、IBTLは信頼性の低い送信の場合に送信者に通知する必要があります。これは、以下のフィールドを含むEATH拡張機能を使用して行われます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;シンドローム: フロー制御情報とともに、成功 (ACK)、エラー状態 (NAK)、または受信側準備未完了 (RNR) ステータスを示す応答コードを含むフィールド&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;メッセージシーケンス番号 (MSN): 直近に完了したメッセージのシーケンス番号を示し、シーケンス番号が小さいメッセージはすべて正常に受信されたことを意味します。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="カスタム拡張機能"&gt;&#10; カスタム拡張機能&#10; &lt;a class="heading-link" href="#%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%a0%e6%8b%a1%e5%bc%b5%e6%a9%9f%e8%83%bd"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h4&gt;&#10;&lt;p&gt;&lt;a href="https://www.afs.enea.it/asantoro/V1r1_2_1.Release_12062007.pdf" class="external-link" target="_blank" rel="noopener"&gt;IBTL仕様書&lt;/a&gt;（第9章を参照）には、かなりの数の拡張機能が含まれており、そのうちのいくつかは私の注意を引きました。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;比較と交換: &lt;a href="https://en.wikipedia.org/wiki/Compare-and-swap" class="external-link" target="_blank" rel="noopener"&gt;ロックフリー&lt;/a&gt;同期が可能になります。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;送信と書き込み：前者は制御フローに使用され、後者はデータフローに使用されます。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;即時拡張：転送されるメモリとともにサイドチャネルメタデータの交換を可能にする。&lt;/p&gt;</description></item><item><title>RDMAとInfiniBandの複雑な世界</title><link>https://qsysarch.com/ja/posts/the-confusing-world-of-rdma-and-infiniband/</link><pubDate>Tue, 16 Sep 2025 00:00:00 +0000</pubDate><guid>https://qsysarch.com/ja/posts/the-confusing-world-of-rdma-and-infiniband/</guid><description>&lt;img src='https://qsysarch.com/images/gpu-infiniband-nvlink.webp' style="width:380px;max-width:100%;float:right;padding-left:20px;"&gt;&#10;&lt;p&gt;GPUの文脈におけるRDMAに関連するバズワードは数多く存在します。GPUダイレクト、NVLink、NVLink Fusion、InfiniBand、Quantum InfiniBand、GPUNetIO、DOCAなどです。これらは紛らわしいものですが、必ずしもそうである必要はないのかもしれません。&lt;/p&gt;&#10;&lt;p&gt;この記事は個人的なメモ形式で書かれており、様々な技術について説明し、いくつかの図を用いて視覚化することを試みています。&lt;/p&gt;&#10;&lt;h1 id="gpu-directとrdmaマーケティングとテクノロジー"&gt;&#10; GPU DirectとRDMA：マーケティングとテクノロジー。&#10; &lt;a class="heading-link" href="#gpu-direct%e3%81%a8rdma%e3%83%9e%e3%83%bc%e3%82%b1%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0%e3%81%a8%e3%83%86%e3%82%af%e3%83%8e%e3%83%ad%e3%82%b8%e3%83%bc"&gt;&#10; &lt;i class="fa-solid fa-link" aria-hidden="true" title="見出しへのリンク"&gt;&lt;/i&gt;&#10; &lt;span class="sr-only"&gt;見出しへのリンク&lt;/span&gt;&#10; &lt;/a&gt;&#10;&lt;/h1&gt;&#10;&lt;p&gt;では、まずはNVIDIA公式ドキュメントの紛らわしい&lt;a href="https://developer.nvidia.com/blog/unlocking-gpu-accelerated-rdma-with-nvidia-doca-gpunetio/" class="external-link" target="_blank" rel="noopener"&gt;GPUNetIO&lt;/a&gt;ページから始めましょう。&lt;/p&gt;&#10;&lt;p&gt;RDMAという略語は、一方のコンピュータのオペレーティングシステムを介さずに、もう一方のコンピュータのメモリへリモートで直接メモリアクセスを可能にするプロトコルを表しています。…これは、RDMAプロトコルとは無関係なGPUDirect RDMAと混同してはいけません。&lt;/p&gt;&#10;&lt;p&gt;なるほど、つまりGPUDirect RDMAはRDMAプロトコルとは異なるんですね！でも、GPUDirect RDMAは少なくともRDMAプロトコルを使用しているのでしょうか？そうだといいのですが。そうでなければ、本当に混乱してしまいます。&lt;/p&gt;&#10;&lt;p&gt;GPUDirect RDMAは、NVIDIAが提供するGPUDirectテクノロジーファミリーに含まれる技術の一つです。これにより、ネットワークカードはCPUメモリのコピーやオペレーティングシステムのルーチンを介さずに、GPUメモリに直接アクセスしてデータを送受信できます。GPUDirect RDMAは、イーサネット、InfiniBand、またはRoCEに対応したあらゆるネットワークフレームワークで有効化できます。&lt;/p&gt;&#10;&lt;p&gt;さて、少なくともGPUDirect RDMAはイーサネット（ETH）でもInfiniBand（IB）でも、どのトランスポート層でも実装できることは明らかです。では、GPUNetIOとは何でしょうか？そして、RDMAとどのように関係しているのでしょうか？答えは簡単です。GPUNetIOは、その名前が示すように、ネットワークカード上でGPU Direct RDMAを実装する&lt;em&gt;ネットワーク&lt;/em&gt;ベースのものです。これは、GPU Directがネットワークカードから駆動される必要があるという意味ではなく、GPUNetIOがネットワークカードの種類に特化したバージョンであるという意味です。&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img class="glightbox" src="https://qsysarch.com/images/gpunetio-packet-xfer.webp" alt="GPUNetIO: GPU中心のデータ転送" /&gt;&lt;/p&gt;&#10;&lt;p&gt;上記の図の GPUNetIO &lt;a href="https://docs.nvidia.com/doca/sdk/doca&amp;#43;gpunetio/index.html" class="external-link" target="_blank" rel="noopener"&gt;ドキュメント&lt;/a&gt; にある「CUDA」ボックスは少し分かりにくいです。これは GPU 上で実行されるカーネルだと推測されますが、ドキュメントに何が書かれているか確認してみましょう。&lt;/p&gt;&#10;&lt;p&gt;従来のアプローチでは、CPU 中心のモデルに依存することが多く、CPU は NIC と連携して GPUDirect RDMA を使用して GPU メモリにパケットを受信します。その後、CPU は GPU 上の CUDA カーネルにパケットの処理を通知します。… DOCA GPUNetIO は、CPU をクリティカル パスから排除する GPU 中心のソリューションを提供することで、この課題に対処します。&lt;/p&gt;&#10;&lt;p&gt;私にはまだ完全には理解できていません。クリティカルパスは「GPU中心」とありますが、クリティカルパスとは何でしょうか？図に示されているステップ(1)から(4)のことでしょうか？そして、CPUは依然として何のために必要なのでしょうか？答えを見つけるには、「非同期カーネル開始」モードを確認する必要があります。これは、「&lt;em&gt;GPU CUDAカーネルがネットワーク通信を制御してデータを送受信する&lt;/em&gt;」可能性として説明されています。GPUDirect IKAは以下を可能にします。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GPUはイーサネット通信（イーサネット/IP/UDP/TCP/ICMP）を制御できます。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GPUはRDMA通信を制御できます（InfiniBandまたはRoCEをサポート）。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;アプリケーションのクリティカルパスではCPUの介入は不要です&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;つまり、これは100％明確です。&lt;/p&gt;&#10;&lt;img src='https://qsysarch.com/images/gpunetio-and-doca.webp' style="width:280px;max-width:100%;float:right;padding-left:20px;"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GPU Direct RDMAは、CPUによるステージングコピーなしで、GPUメモリとの間で直接データ転送を可能にします。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GPU Direct AKIは、GPUがネットワークカードを「制御」することを可能にします。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;GPUNetIOは、GPUダイレクトRDMAとAKIの両方のテクノロジーを処理するソフトウェアコンポーネントです。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DOCAは、NVIDIAがGPUNetIO対応ハードウェア（その他）をプログラミングするために提供するSDKです。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;混乱の原因は、「AKI」を「GPU Direct RDMA + AKI」と表記すべきであるという事実にあると思われます。なぜなら、AKIはCPUをバイパスできるRDMA機能を補完するものだからです。&lt;/p&gt;</description></item></channel></rss>