私はE9171 AMDGPUにT1040 NXPボードを搭載していますが、このGPUはamdgpuを使ったパートゥピアデータ転送に対応していますか?このNXPはPCIeスイッチを介してFPGAおよびGPUに接続されています。このGPUはQDMAドライバーを使ってFPGAから直接データを取得できるはずですし、またこのNXPボードはAMDGPUドライバーを使った直接ピアツーピア機能をサポートしていますか?
T1040プラットフォーム上のE9171 + AMDGPUがFPGA→GPU PCIe P2P DMAをサポートしていると考えないでください。現在入手可能なAMDGPUの情報に基づくと、NVIDIA GPUDirect RDMAのように、FPGAとAMDGPU間の直接的なP2P通信は、AMDGPUの標準機能として一般的にはサポートされていません。
AMDGPUにはLinuxのP2Pインフラストラクチャサポート(PCI_P2PDMA)があり、AMD KFDにはHSA_AMD_P2Pオプションがありますが、このサポートは主に以下の目的で文書化されています:
Linux Kconfigの説明には 、AMDのGPU間のP2P通信が明示的に記載されています。
AMDのエンジニアは次のように公に述べている。
Xilinx FPGAとAMD GPU間のP2Pは現在直接サポートされていません
そして、真のデバイス間PCIe DMAの代わりに、ホストメモリ登録の回避策を提案した。
そのため、
|
パス |
ステータス |
|
AMD GPU ↔ AMD GPU |
特定のROCmプラットフォームでサポートされています |
|
FPGA ↔ AMD GPUダイレクトPCIe DMA |
AMDGPUでは一般的にサポートされていません |
|
FPGA →ホストDDR → GPU |
サポートされる |
|
FPGA P2Pバッファはホストメモリにマッピングされ、GPUに登録されました |
T1040側からは、PCIeハードウェア自体がスイッチを介してメモリ読み書きTLPを転送できる場合、以下の場合に限ります:
PCIeというプロトコルは、エンドポイント間のデータ転送を妨げるものではありません。しかし、 T1040/NXPソフトウェアは自動的にAMDGPU-FPGAのP2Pサポートを提供するわけではありません。重要な問題は、次の点である。
通常、T1040 PCIeコントローラ自体よりもAMDGPUの制限がブロック要因となっています。
現在のトポロジー:
PCIeスイッチ
/ \
FPGA(QDMA)E9171 GPU
\ /
T1040 RC
最も可能性の高いサポートフロー:
FPGA →--> DDR(T1040メモリ)
|
V
AMDGPU DMA
|
VRAM
動作保証はありません:
FPGA(QDMA)---> GPU VRAM
AMDGPUは一般的に任意のFPGAデバイス向けにGPUDirect-RDMAのようなインターフェースを公開しないからです。