Skip to content

Replace custom ibgda usage with nvshmem native apis#574

Open
seth-howell wants to merge 4 commits intodeepseek-ai:mainfrom
seth-howell:nvshmem_native_apis
Open

Replace custom ibgda usage with nvshmem native apis#574
seth-howell wants to merge 4 commits intodeepseek-ai:mainfrom
seth-howell:nvshmem_native_apis

Conversation

@seth-howell
Copy link
Copy Markdown
Contributor

This patch enables native NVSHMEM API usage in DeepEP

Eliminating the custom ibgda_device.cu file from DeepEP and switching to the new public nvshmem_qp APIs extends support to multiple transport backends including IBRC, IBDEVX, and libfabric.

This patch does not degrade performance on IBGDA. In some cases (2N, 4N) the kernels exhibit better performance than IBGDA.

It preserves IBGDA as the default transport unless a specific transport is supplied by the user.

Unordered transports like libfabric + EFA do require a fence before the put_signal operations to maintain functionality. Currently the performance of libfabric + EFA is not close to the performance of IB due to some missing functionality in the libfabric transport:

  1. Multi-rail support. This is scheduled for NVSHMEM 3.6 and is actively under development by AWS engineers
  2. The need for ordering between the put and signal operations with a fence which is costly and quiets the qpair (there is only 1). AWS engineers are aware of the issue and are looking at possible solutions in the NVSHMEM libfabric transport.

These improvements will be given to users for free in future releases of NVSHMEM.

Signed-off-by: Seth Howell <sethh@nvidia.com>
Add support for unordered networks.

A fence is required before the put_signal to send the tokens when
the transport is unordered. This is a no-op for IB-based transports.

Signed-off-by: Seth Howell <sethh@nvidia.com>
This prevents small performance losses from following proxy paths
in the IB cases.

TODO: When the EFA transport supports ordering between put-signal operations
remove the fence operation entirely.

Signed-off-by: Seth Howell <sethh@nvidia.com>
Signed-off-by: Seth Howell <sethh@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant