Coelacanth's Dream

Intel Xe GPU 近況 ―― Xe-HPのメモリリージョン, PXP, Iris Xe MAX のサポート状況

Xe-HP のメモリリージョン

2020/11/27、Linux Kernel (intel-gfx) に DG1 の持つ VRAM、LMEM (Local Memory) を有効にするパッチが投稿された。1
パッチには Xe-HP に向けた準備も含まれており、Xe-HP のメモリリージョンについて言及された部分があった。

DG1 は 1つの GPUチップに LPDDR4x 128-bit という、GPU としては一般的な構成を取る。
データセンター向け PCIeカード H3C XG310 GPU は、サーバー向け dGPU SG1 を 4チップ搭載するが、GPU間は PLXチップで接続されていると思われ、GPU はそれぞれ別のデバイスとして認識され、メモリ空間も別々となる。2
そして、Xe-HP はチップをタイルとして 1つのパッケージに複数搭載され、タイル間は EMIB技術を用いて接続される。
H3C XG310 GPU と異なるのは、Xe-HP はマルチコアGPUであるように動作し、単一のメモリ空間となる (だろう) 点。
メモリ空間を共有し、EMIB技術によって GPU間が広帯域で接続されても、やはりメモリアクセスに掛かる時間としてはその GPU に直接接続されているメモリが速い。
そのため、マルチコアGPUとしてもメモリに異なる層、リージョンが存在する。
パッチではそれを区別するため、LMEM とは別に SHMEM のバッファーオブジェクト (BO, GPU メモリ管理の単位) のサポート準備が含まれている。

他社の GPU間接続には、NVIDIA は NVLink、AMD は Infinity Fabric (xGMI) といった名前があり、そして Intel には Xe-HPC に採用される、CXL をベースとした Xe Link がある。その Xe Link が Xe-HP に置いても使われるかは不明。

メモリ帯域と GPU間接続の関係について AMD Instinct MI100 を例に挙げると、
MI100 はメモリに HBM2 32GB を採用しており、メモリバス幅は 4096-bit、ピークメモリ帯域は 1228.8 GB/s にもなる。
対し Infinity Fabric はリンクあたり 92 GB/s、MI100 は 3リンク持っているため、それらを合わせても 276 GB/s と、メモリ帯域の 2割程しかない。
MI100 は実際には GPUカード間の接続となるが、Xe-HP はパッケージ内での接続となるため、もっと高速に接続できると思われる。
Intel Architecture Day 2020 での発表においても、スケーリング性能に自信がある様子だった。3
それでも、消費電力や発熱等の制約や、異なる GPU に接続されたメモリへのアクセスに発生するレイテンシにより、結局はローカルな HBMメモリを活用することが重要となる。

Gen12 GPU は PXP をサポート

2020/11/14 に、PXP (Protected Xe Path) をサポートするパッチが投稿された。4
PXP はユーザースペースで実行可能な ring3 レベルに、ハードウェアで保護されたセッションを確立させ、各セッションの状態とライフサイクルを管理するのに役立つ機能とされている。

ユーザースペース側では、Iris (OpenGL)ANV (Vulkan) ドライバーに PXP をサポートするパッチが投稿されている。現在はマージリクエストの段階。5

似た機能として AMD TMZ (Trust Memory Zone) があり、TMZ ではメモリを暗号化し、GPU内の信頼できるハードウェアブロック部のみで復号化を可能にすることでコンテンツを保護する。 TMZ は Vega/GFX9 世代からサポートされており、EPYC の SME (Secure Memory Encryption(、SEV (Secure Encrypted Virtualization) といい、メモリの暗号化機能に関しては AMD のが早くから意識していたような印象を受ける。
【XDC2020】AMD GPU のメモリ暗号化機能 TMZ ―― DRMへの活用も | Coelacanth’s Dream

PXP も TMZ 同様に DRM への活用を想定した機能ではないかと思われる。

Linux環境における Iris Xe MAX のサポート状況

ディスクリートGPUと言うと、マザーボードの PCIeスロット差し、ケーブルでモニタと繋げば映像が出力され、適切なドライバーをインストールすればそのグラフィクス処理を発揮できる、とシンプルに思っているが、DG1 / Iris Xe MAX はまだそういった段階にはないらしい。

Intel が公開しているドキュメントによると、Xe-LP/Gen12アーキテクチャ のサポートは既に Linux に為されているが、それは Tiger Lake 等に統合されている GPU までで、dGPU である Iris Xe MAX のサポート作業はまだ進行中だとされている。

現在では早期アクセスとして、仮想環境を構築、異なる Linux Kernel を 2つインストールし、Iris Xe MAX はゲストVM で動作させる手段を提供している。
ディスプレイ出力は Tiger Lake の iGPU側から行ない、Iris Xe MAX でグラフィクス処理、GPGPU、メディアエンコードを実行できるが、やはりユーザーが一般的に見て、求めるシステムとは離れている気がする。

Iris Xe MAX はゲストVMに PCIパススルーを用いてアクセスする。
データセンター向け製品である H3C XG310 GPU がリリースされ、2021年には Xe-HP GPU が登場するため、PCIパススルー機能が既に Intel dGPU でサポートされているのは歓迎されることではある。また、近頃 Intel にとってサーバー市場はますます重要なものとなっており、そのために仮想化機能のサポートに力を入れている可能性もある。

ただ 2021年前半には OEM向けにデスクトップ向け DG1 がリリースされ、同年中にはHWレイトレーシングもサポートしたゲーミング向け dGPU Xe-HPG がリリース予定にある中で、6
それらの先立ちである Iris Xe MAX の、Linux環境におけるサポートがまだ十分な状態にないことに不安を覚えるのは確かだ。

参考リンク