RDMA【Remote Direct Memory Access】
概要

通常のネットワーク通信では、送信側はメモリ上のデータをOSのカーネルバッファへコピーしてからプロトコル処理を行い、受信側でも同様にカーネルバッファを経由してアプリケーションのメモリへ格納する。この方式では転送のたびにCPUが関与し、メモリ間のコピーも複数回発生するため、通信速度の低下やCPU負荷の増大につながりやすい。
RDMAでは、ネットワークインターフェースがOSのネットワークスタックを経由せずに相手方のメモリ領域へ直接アクセスする。これによりデータのコピー回数が削減され、通信遅延の短縮と単位時間あたりの伝送量(スループット)の向上が同時に得られる。CPUは通信処理から解放されるため、本来の演算処理に専念できる。
RDMAはスーパーコンピュータや大規模クラスタなど高性能コンピューティング(HPC:High Performance Computing)の分野で早くから活用されてきた。多数の計算ノード間で頻繁にデータを交換するこうした環境では、システム内の通信にかかるオーバーヘッドが大きく、その低減が全体の処理性能に直結するためである。
近年ではデータセンターやクラウド基盤でも採用が広がっており、分散ストレージや大規模データベース、機械学習インフラなど様々な用途で利用されている。特に、巨大な機械学習モデルを構築するために多数のGPUを連携させる分散学習では、ノード間でモデルパラメータを高速に同期する必要があり、RDMAが有効な手段となっている。
実装方式としては、専用ネットワーク規格である「InfiniBand」、一般的なイーサネット(Ethernet)環境で動作する「RoCE」(RDMA over Converged Ethernet)、IPネットワーク上で利用できる「iWARP」(Internet Wide Area RDMA Protocol)などがある。遠隔地のメモリへ直接アクセスするという基本的な仕組みはいずれも共通しており、利用環境や要件に応じて選択される。