[GH-ISSUE #290] Running the test case on a 2-node H20 3E machine failed with internode.cu:1029 'unspecified launch failure' #208

Open
opened 2026-10-26 09:56:40 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @liweiqing1997 on GitHub (Jul 9, 2025).
Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/290

I ran the test case on a 2-node H20 3E machine.
After running for a while, an error occurred. How can I troubleshoot and solve it?

  • deep-ep version: 1.1.0+e6d61fc

  • command line:

  • `TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.138 MASTER_PORT=7654 WORLD_SIZE=2 RANK=0 python3 tests/test_internode.py

  • TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.138 MASTER_PORT=7654 WORLD_SIZE=2 RANK=1 python3 tests/test_internode.py

  • `

error is:

xception raised from c10_cuda_check_implementation at /pytorch/c10/cuda/CUDAException.cpp:43 (most recent call first):
frame #0: c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits, std::allocator >) + 0x98 (0x7fef8af785e8 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10.so)
frame #1: c10::detail::torchCheckFail(char const*, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) + 0xe0 (0x7fef8af0d4a2 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10.so)
frame #2: c10::cuda::c10_cuda_check_implementation(int, char const*, char const*, int, bool) + 0x3c2 (0x7fef8b33f422 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so)
frame #3: + 0x1e79f (0x7fef8b30779f in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so)
frame #4: + 0x20060 (0x7fef8b309060 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so)
frame #5: + 0x2028c (0x7fef8b30928c in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so)
frame #6: + 0x457242 (0x7fef82857242 in /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch_python.so)
frame #7: c10::TensorImpl::~TensorImpl() + 0x9 (0x7fef8af52f39 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10.so)
frame #8: + 0x7186d8 (0x7fef82b186d8 in /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch_python.so)
frame #9: + 0x718af1 (0x7fef82b18af1 in /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch_python.so)
frame #10: + 0x181390 (0x5597c1981390 in /usr/bin/python3)
frame #11: + 0x1946c8 (0x5597c19946c8 in /usr/bin/python3)
frame #12: + 0x1946dc (0x5597c19946dc in /usr/bin/python3)
frame #13: + 0x1946dc (0x5597c19946dc in /usr/bin/python3)
frame #14: + 0x1a061f (0x5597c19a061f in /usr/bin/python3)
frame #15: + 0x15f9d6 (0x5597c195f9d6 in /usr/bin/python3)
frame #16: + 0x2939a7 (0x5597c1a939a7 in /usr/bin/python3)
frame #17: _PyEval_EvalFrameDefault + 0x54b7 (0x5597c197a727 in /usr/bin/python3)
frame #18: _PyFunction_Vectorcall + 0x7c (0x5597c198b6ac in /usr/bin/python3)
frame #19: _PyEval_EvalFrameDefault + 0x807 (0x5597c1975a77 in /usr/bin/python3)
frame #20: _PyFunction_Vectorcall + 0x7c (0x5597c198b6ac in /usr/bin/python3)
frame #21: _PyEval_EvalFrameDefault + 0x6c0 (0x5597c1975930 in /usr/bin/python3)
frame #22: _PyFunction_Vectorcall + 0x7c (0x5597c198b6ac in /usr/bin/python3)
frame #23: _PyEval_EvalFrameDefault + 0x1987 (0x5597c1976bf7 in /usr/bin/python3)
frame #24: + 0x25a9d6 (0x5597c1a5a9d6 in /usr/bin/python3)
frame #25: PyEval_EvalCode + 0x86 (0x5597c1a5a8a6 in /usr/bin/python3)
frame #26: + 0x2812c8 (0x5597c1a812c8 in /usr/bin/python3)
frame #27: + 0x27bacf (0x5597c1a7bacf in /usr/bin/python3)
frame #28: PyRun_StringFlags + 0x81 (0x5597c1a756e1 in /usr/bin/python3)
frame #29: PyRun_SimpleStringFlags + 0x41 (0x5597c1a75591 in /usr/bin/python3)
frame #30: Py_RunMain + 0x3d0 (0x5597c1a748c0 in /usr/bin/python3)
frame #31: Py_BytesMain + 0x2d (0x5597c1a4e8ed in /usr/bin/python3)
frame #32: + 0x29d90 (0x7fef8bc29d90 in /usr/lib/x86_64-linux-gnu/libc.so.6)
frame #33: __libc_start_main + 0x80 (0x7fef8bc29e40 in /usr/lib/x86_64-linux-gnu/libc.so.6)
frame #34: _start + 0x25 (0x5597c1a4e7e5 in /usr/bin/python3)

W0709 15:47:03.322000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886753 via signal SIGTERM
W0709 15:47:03.323000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886754 via signal SIGTERM
W0709 15:47:03.323000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886755 via signal SIGTERM
W0709 15:47:03.323000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886756 via signal SIGTERM
W0709 15:47:03.324000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886757 via signal SIGTERM
W0709 15:47:03.324000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886758 via signal SIGTERM
W0709 15:47:03.324000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886760 via signal SIGTERM
Traceback (most recent call last):
File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 281, in
torch.multiprocessing.spawn(test_loop, args=(num_processes, args), nprocs=num_processes)
File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 340, in spawn
return start_processes(fn, args, nprocs, join, daemon, start_method="spawn")
File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 296, in start_processes
while not context.join():
File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 215, in join
raise ProcessRaisedException(msg, error_index, failed_process.pid)
torch.multiprocessing.spawn.ProcessRaisedException:

-- Process 6 terminated with the following error:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 90, in _wrap
fn(i, *args)
File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 243, in test_loop
test_main(args, i, local_rank, num_local_ranks, num_ranks, num_nodes, rank, buffer, group)
File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 188, in test_main
t = bench(lambda: buffer.dispatch(**tune_args))[0]
File "/nvme3/lwq/deepep_install/DeepEP/tests/utils.py", line 104, in bench
fn()
File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 188, in
t = bench(lambda: buffer.dispatch(**tune_args))[0]
File "/usr/local/lib/python3.10/dist-packages/deep_ep-1.1.0+e6d61fc-py3.10-linux-x86_64.egg/deep_ep/buffer.py", line 331, in dispatch
return self.internode_dispatch(x, handle, num_tokens_per_rank, num_tokens_per_rdma_rank, is_token_in_rank, num_tokens_per_expert,
File "/usr/local/lib/python3.10/dist-packages/deep_ep-1.1.0+e6d61fc-py3.10-linux-x86_64.egg/deep_ep/buffer.py", line 430, in internode_dispatch
recv_x, recv_x_scales, _, _, _, _, _, _, _, _, _, _, _, _, event = self.runtime.internode_dispatch(
RuntimeError: Failed: CUDA error /nvme3/lwq/deepep_install/DeepEP/csrc/kernels/internode.cu:1029 'unspecified launch failure'

The logs before errors are as follows:

Image

other info:
ibv_devinfo:

[root@opllm-h20-x6immzry-0000 lwq]# ibv_devinfo
hca_id: mlx5_bond_0
        transport:                      InfiniBand (0)
        fw_ver:                         32.45.1020
        node_guid:                      7c8c:0903:00a6:82e6
        sys_image_guid:                 7c8c:0903:00a6:82e6
        vendor_id:                      0x02c9
        vendor_part_id:                 41692
        hw_ver:                         0x1
        board_id:                       MT_0000001093
        phys_port_cnt:                  1
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet

hca_id: mlx5_bond_1
        transport:                      InfiniBand (0)
        fw_ver:                         32.45.1020
        node_guid:                      7c8c:0903:00a6:7056
        sys_image_guid:                 7c8c:0903:00a6:7056
        vendor_id:                      0x02c9
        vendor_part_id:                 41692
        hw_ver:                         0x1
        board_id:                       MT_0000001093
        phys_port_cnt:                  1
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet

hca_id: mlx5_bond_2
        transport:                      InfiniBand (0)
        fw_ver:                         32.45.1020
        node_guid:                      7c8c:0903:00a6:7686
        sys_image_guid:                 7c8c:0903:00a6:7686
        vendor_id:                      0x02c9
        vendor_part_id:                 41692
        hw_ver:                         0x1
        board_id:                       MT_0000001093
        phys_port_cnt:                  1
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet

hca_id: mlx5_bond_3
        transport:                      InfiniBand (0)
        fw_ver:                         32.45.1020
        node_guid:                      7c8c:0903:00a6:89f2
        sys_image_guid:                 7c8c:0903:00a6:89f2
        vendor_id:                      0x02c9
        vendor_part_id:                 41692
        hw_ver:                         0x1
        board_id:                       MT_0000001093
        phys_port_cnt:                  1
                port:   1
                        state:                  PORT_ACTIVE (4)
                        max_mtu:                4096 (5)
                        active_mtu:             4096 (5)
                        sm_lid:                 0
                        port_lid:               0
                        port_lmc:               0x00
                        link_layer:             Ethernet
Image

`root@opllm-h20-x6immzry-0000:/nvme3/lwq/Big_and_EP# nvshmem-info -a
NVSHMEM v3.2.5

Build Information:
CUDA API 12080
CUDA Driver 12080
Build Timestamp Jul 7 2025 11:56:31
Build Variables
NVSHMEM_DEBUG=OFF NVSHMEM_DEVEL=OFF NVSHMEM_DEFAULT_PMI2=OFF
NVSHMEM_DEFAULT_PMIX=OFF NVSHMEM_DEFAULT_UCX=OFF
NVSHMEM_ENABLE_ALL_DEVICE_INLINING=OFF NVSHMEM_GPU_COLL_USE_LDST=OFF
NVSHMEM_IBGDA_SUPPORT=ON NVSHMEM_IBGDA_SUPPORT_GPUMEM_ONLY=OFF
NVSHMEM_IBDEVX_SUPPORT=OFF NVSHMEM_IBRC_SUPPORT=ON
NVSHMEM_MPI_SUPPORT=OFF NVSHMEM_NVTX=ON NVSHMEM_PMIX_SUPPORT=OFF
NVSHMEM_SHMEM_SUPPORT=OFF NVSHMEM_TEST_STATIC_LIB=OFF
NVSHMEM_TIMEOUT_DEVICE_POLLING=OFF NVSHMEM_TRACE=OFF NVSHMEM_UCX_SUPPORT=OFF
NVSHMEM_USE_DLMALLOC=OFF NVSHMEM_USE_NCCL=OFF NVSHMEM_USE_GDRCOPY=ON
NVSHMEM_VERBOSE=OFF CUDA_HOME=/usr/local/cuda GDRCOPY_HOME=/usr/local/gdrdrv
LIBFABRIC_HOME=/usr/local/libfabric MPI_HOME=/usr/local/ompi
NCCL_HOME=/usr/local/nccl NVSHMEM_PREFIX=/usr/local/nvshmem PMIX_HOME=/usr
SHMEM_HOME=/usr/local/ompi UCX_HOME=/usr/local/ucx

Standard options:
NVSHMEM_VERSION false (type: bool, default: false)
Print library version at startup
NVSHMEM_INFO false (type: bool, default: false)
Print environment variable options at startup
NVSHMEM_DISABLE_NVLS false (type: bool, default: false)
Disable NVLS SHARP resources for collectives, even if available for platform
NVSHMEM_SYMMETRIC_SIZE 1073741824 (type: size, default: 1073741824)
Specifies the size (in bytes) of the symmetric heap memory per PE. The
size is implementation-defined and must be at least as large as the integer
ceiling of the product of the numeric prefix and the scaling factor. The
character suffixes for the scaling factor are as follows:

      *  k or K multiplies by 2^10 (kibibytes)
      *  m or M multiplies by 2^20 (mebibytes)
      *  g or G multiplies by 2^30 (gibibytes)
      *  t or T multiplies by 2^40 (tebibytes)

    For example, string '20m' is equivalent to the integer value 20971520, or 20
    mebibytes. Similarly the string '3.1M' is equivalent to the integer value
    3250586. Only one multiplier is recognized and any characters following the
    multiplier are ignored, so '20kk' will not produce the same result as '20m'.
    Usage of string '.5m' will yield the same result as the string '0.5m'.
    An invalid value for NVSHMEM_SYMMETRIC_SIZE is an error, which the NVSHMEM
    library shall report by either returning a nonzero value from
    nvshmem_init_thread or causing program termination.

NVSHMEM_DEBUG "" (type: string, default: "")
Set to enable debugging messages.
Optional values: VERSION, WARN, INFO, ABORT, TRACE

Bootstrap options:
NVSHMEM_BOOTSTRAP "PMI" (type: string, default: "PMI")
Name of the default bootstrap that should be used to initialize NVSHMEM.
Allowed values: PMI, MPI, SHMEM, plugin, UID
NVSHMEM_BOOTSTRAP_PMI "PMI" (type: string, default: "PMI")
Name of the PMI bootstrap that should be used to initialize NVSHMEM.
Allowed values: PMI, PMI-2, PMIX
NVSHMEM_BOOTSTRAP_PLUGIN "" (type: string, default: "")
Absolute path to or name of the bootstrap plugin file to load when
NVSHMEM_BOOTSTRAP=plugin is specified
NVSHMEM_BOOTSTRAP_MPI_PLUGIN "nvshmem_bootstrap_mpi.so.3" (type: string, default: "nvshmem_bootstrap_mpi.so.3")
Absolute path to or name of the MPI bootstrap plugin file.
NVSHMEM will search for the plugin based on linux linker priorities. See man
dlopen
NVSHMEM_BOOTSTRAP_SHMEM_PLUGIN "nvshmem_bootstrap_shmem.so.3" (type: string, default: "nvshmem_bootstrap_shmem.so.3")
Absolute path to or name of the SHMEM bootstrap plugin file.
NVSHMEM will search for the plugin based on linux linker priorities. See man
dlopen
NVSHMEM_BOOTSTRAP_PMI_PLUGIN "nvshmem_bootstrap_pmi.so.3" (type: string, default: "nvshmem_bootstrap_pmi.so.3")
Absolute path to or name of the PMI bootstrap plugin file.
NVSHMEM will search for the plugin based on linux linker priorities. See man
dlopen
NVSHMEM_BOOTSTRAP_PMI2_PLUGIN "nvshmem_bootstrap_pmi2.so.3" (type: string, default: "nvshmem_bootstrap_pmi2.so.3")
Absolute path to or name of the PMI-2 bootstrap plugin file.
NVSHMEM will search for the plugin based on linux linker priorities. See man
dlopen
NVSHMEM_BOOTSTRAP_PMIX_PLUGIN "nvshmem_bootstrap_pmix.so.3" (type: string, default: "nvshmem_bootstrap_pmix.so.3")
Absolute path to or name of the PMIx bootstrap plugin file.
NVSHMEM will search for the plugin based on linux linker priorities. See man
dlopen
NVSHMEM_BOOTSTRAP_UID_PLUGIN "nvshmem_bootstrap_uid.so.3" (type: string, default: "nvshmem_bootstrap_uid.so.3")
Absolute path to or name of the UID bootstrap plugin file.
NVSHMEM will search for the plugin based on linux linker priorities. See man
dlopen

Additional options:
NVSHMEM_CUDA_PATH "" (type: string, default: "")
Path to directory containing libcuda.so (for use when not in default location)
NVSHMEM_DEBUG_ATTACH_DELAY 0 (type: int, default: 0)
Delay (in seconds) during the first call to NVSHMEM_INIT to allow for attaching
a debuggger (Default 0)
NVSHMEM_DEBUG_FILE "" (type: string, default: "")
Debugging output filename, may contain %h for hostname and %p for pid
NVSHMEM_MAX_TEAMS 32 (type: long, default: 32)
Maximum number of simultaneous teams allowed
NVSHMEM_MAX_MEMORY_PER_GPU 137438953472 (type: size, default: 137438953472)
Maximum memory per GPU
NVSHMEM_DISABLE_CUDA_VMM false (type: bool, default: false)
Disable use of CUDA VMM for P2P memory mapping. By default, CUDA VMM is enabled
on x86 and disabled on P9. CUDA VMM feature in NVSHMEM requires CUDA RT version
and CUDA Driver version to be greater than or equal to 11.3.
NVSHMEM_DISABLE_P2P false (type: bool, default: false)
Disable P2P connectivity of GPUs even when available
NVSHMEM_IGNORE_CUDA_MPS_ACTIVE_THREAD_PERCENTAGE false (type: bool, default: false)
When doing Multi-Process Per GPU (MPG) run, full API support is available only
if sum of CUDA_MPS_ACTIVE_THREAD_PERCENTAGE of processes running on a GPU is <=
100%. Through this variable, user can request NVSHMEM runtime to ignore the
active thread percentage and allow full MPG support. Users enable it at their
own risk as NVSHMEM might deadlock.
NVSHMEM_CUMEM_GRANULARITY 536870912 (type: size, default: 536870912)
Granularity for cuMemAlloc/cuMemCreate
NVSHMEM_PROXY_REQUEST_BATCH_MAX 32 (type: int, default: 32)
Maxmum number of requests that the proxy thread processes in a single iteration
of the progress loop.

Collectives options:
NVSHMEM_DISABLE_NCCL false (type: bool, default: false)
Disable use of NCCL for collective operations
NVSHMEM_BARRIER_DISSEM_KVAL 2 (type: int, default: 2)
Radix of the dissemination algorithm used for barriers
NVSHMEM_BARRIER_TG_DISSEM_KVAL 2 (type: int, default: 2)
Radix of the dissemination algorithm used for thread group barriers
NVSHMEM_FCOLLECT_LL_THRESHOLD 2048 (type: size, default: 2048)
Message size threshold up to which fcollect LL algo will be used

NVSHMEM_REDUCE_SCRATCH_SIZE 524288 (type: size, default: 524288)
Amount of symmetric heap memory (minimum 16B, multiple of 8B) reserved by
runtime for every team to implement reduce and reducescatter collectives

NVSHMEM_BCAST_ALGO 0 (type: int, default: 0)
Broadcast algorithm to be used.
* 0 - use default algorithm selection strategy

NVSHMEM_REDMAXLOC_ALGO 1 (type: int, default: 1)
Reduction algorithm to be used for MAXLOC operation.
* 1 - default, flag alltoall algorithm
* 2 - flat reduce + flat bcast
* 3 - topo-aware two-level reduce + topo-aware bcast

Transport options:
NVSHMEM_REMOTE_TRANSPORT "ibrc" (type: string, default: "ibrc")
Selected transport for remote operations: ibrc, ucx, libfabric, ibdevx, none
NVSHMEM_ENABLE_NIC_PE_MAPPING false (type: bool, default: false)
When not set or set to 0, a PE is assigned the NIC on the node that is closest
to it by distance. When set to 1, NVSHMEM either assigns NICs to PEs on a
round-robin basis or uses NVSHMEM_HCA_PE_MAPPING or NVSHMEM_HCA_LIST when they
are specified.
NVSHMEM_DISABLE_LOCAL_ONLY_PROXY false (type: bool, default: false)
When running on an NVLink-only configuaration (No-IB, No-UCX), completely
disable the proxy thread. This will disable device side global exit and device
side wait timeout polling (enabled by NVSHMEM_TIMEOUT_DEVICE_POLLING build-time
variable) because these are processed by the proxy thread.
NVSHMEM_IB_ENABLE_IBGDA false (type: bool, default: false)
Set to enable GPU-initiated communication transport.

Hidden options:
NVSHMEM_INFO_HIDDEN true (type: bool, default: false)
Print hidden environment variable options at startup
NVSHMEM_DISABLE_NVLS_SHARING true (type: bool, default: true)
Disable NVLS SHARP resource sharing for user-defined teams
NVSHMEM_HEAP_KIND "DEVICE" (type: string, default: "DEVICE")
Specify the memory kind used by the NVSHMEM symmetric heap.
Allowed values: VIDMEM, SYSMEM
NVSHMEM_ENABLE_RAIL_OPT false (type: bool, default: false)
Enable Rail Optimization when heap is in SYSMEM
NVSHMEM_BOOTSTRAP_TWO_STAGE false (type: bool, default: false)
Ignore CUDA device setting during initialization,forcing two-stage
initialization
NVSHMEM_DEBUG_SUBSYS "" (type: string, default: "")
Comma separated list of debugging message sources. Prefix with '^' to exclude.
Values: INIT, COLL, P2P, PROXY, TRANSPORT, MEM, BOOTSTRAP, TOPO, UTIL, ALL
NVSHMEM_ENABLE_ERROR_CHECKS false (type: bool, default: false)
Enable error checks
NVSHMEM_DISABLE_MNNVL false (type: bool, default: false)
Disable MNNVL connectivity for GPUs even when available
NVSHMEM_CUMEM_HANDLE_TYPE "FILE_DESCRIPTOR" (type: string, default: "FILE_DESCRIPTOR")
Handle type for cuMemCreate. Supported are - FABRIC or FILE_DESCRIPTOR
NVSHMEM_BYPASS_ACCESSIBILITY_CHECK false (type: bool, default: false)
Bypass peer GPU accessbility checks
NVSHMEM_FCOLLECT_NTHREADS 512 (type: int, default: 512)
Sets number of threads per block for fcollect collective.
By default, if no env is set, default value is min(max_occupancy per CTA, msg
size per PE).
If env is specified, value overrides the default irrespective of max occupancy
per CTA

NVSHMEM_REDUCESCATTER_NTHREADS 512 (type: int, default: 512)
Sets number of threads per block for reducescatter collective.
By default, if no env is set, default value is min(max_occupancy per CTA, msg
size per PE).
If env is specified, value overrides the default irrespective of max occupancy
per CTA

NVSHMEM_MAX_CTAS 1 (type: int, default: 1)
Sets number of blocks per grid for host onstream collective.
By default, if no env is set, default value to 1 CTA
If env is specified, value overrides the default value

NVSHMEM_REDUCE_RECEXCH_KVAL 2 (type: int, default: 2)
Radix of the recursive exchange reduction algorithm
NVSHMEM_FCOLLECT_LL128_THRESHOLD 0 (type: size, default: 0)
Message size threshold up to which the fcollect LL128 algo will be used.
LL128 will be used only when FCOLLECT_LL_THRESHOLD < size
NVSHMEM_FCOLLECT_NVLS_THRESHOLD 16777216 (type: size, default: 16777216)
Message size threshold up to which fcollect NVLS algo will be used

NVSHMEM_REDUCESCATTER_NVLS_THRESHOLD 16777216 (type: size, default: 16777216)
Message size threshold up to which reducescatter NVLS algo will be used

NVSHMEM_BCAST_TREE_KVAL 2 (type: int, default: 2)
Radix of the broadcast tree algorithm
NVSHMEM_FCOLLECT_ALGO 0 (type: int, default: 0)
Fcollect algorithm to be used.
* 0 - use default algorithm selection strategy

NVSHMEM_REDUCE_ALGO 0 (type: int, default: 0)
Allreduce algorithm to be used.
* 0/1 - use default algorithm selection strategy

NVSHMEM_REDUCE_NVLS_THRESHOLD 2048 (type: int, default: 2048)
Message size threshold up to which allreduce one-shot algo will be used

NVSHMEM_REDUCESCATTER_ALGO 0 (type: int, default: 0)
Reduce Scatter algorithm to be used.
* 0 - use default algorithm selection strategy

NVSHMEM_ASSERT_ATOMICS_SYNC false (type: bool, default: false)
Bypass flush on wait_until at target
NVSHMEM_BYPASS_FLUSH false (type: bool, default: false)
Bypass flush in proxy when enforcing consistency

NVTX options:
NVSHMEM_NVTX "off" (type: string, default: "off")
Set to enable NVTX instrumentation. Accepts a comma separated list of
instrumentation groups. By default the NVTX instrumentation is disabled.
init : library setup
alloc : memory management
launch : kernel launch routines
coll : collective communications
wait : blocking point-to-point synchronization
wait_on_stream : point-to-point synchronization (on stream)
test : non-blocking point-to-point synchronization
memorder : memory ordering (quiet, fence)
quiet_on_stream : nvshmemx_quiet_on_stream
atomic_fetch : fetching atomic memory operations
atomic_set : non-fetchong atomic memory operations
rma_blocking : blocking remote memory access operations
rma_nonblocking : non-blocking remote memory access operations
proxy : activity of the proxy thread
common : init,alloc,launch,coll,memorder,wait,atomic_fetch,rma_blocking,proxy
all : all groups
off : disable all NVTX instrumentation
`

Originally created by @liweiqing1997 on GitHub (Jul 9, 2025). Original GitHub issue: https://github.com/deepseek-ai/DeepEP/issues/290 I ran the test case on a 2-node H20 3E machine. After running for a while, an error occurred. How can I troubleshoot and solve it? - deep-ep version: 1.1.0+e6d61fc - command line: - `TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.138 MASTER_PORT=7654 WORLD_SIZE=2 RANK=0 python3 tests/test_internode.py - - TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.138 MASTER_PORT=7654 WORLD_SIZE=2 RANK=1 python3 tests/test_internode.py - ` error is: > xception raised from c10_cuda_check_implementation at /pytorch/c10/cuda/CUDAException.cpp:43 (most recent call first): > frame #0: c10::Error::Error(c10::SourceLocation, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) + 0x98 (0x7fef8af785e8 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10.so) > frame #1: c10::detail::torchCheckFail(char const*, char const*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) + 0xe0 (0x7fef8af0d4a2 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10.so) > frame #2: c10::cuda::c10_cuda_check_implementation(int, char const*, char const*, int, bool) + 0x3c2 (0x7fef8b33f422 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so) > frame #3: <unknown function> + 0x1e79f (0x7fef8b30779f in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so) > frame #4: <unknown function> + 0x20060 (0x7fef8b309060 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so) > frame #5: <unknown function> + 0x2028c (0x7fef8b30928c in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10_cuda.so) > frame #6: <unknown function> + 0x457242 (0x7fef82857242 in /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch_python.so) > frame #7: c10::TensorImpl::~TensorImpl() + 0x9 (0x7fef8af52f39 in /usr/local/lib/python3.10/dist-packages/torch/lib/libc10.so) > frame #8: <unknown function> + 0x7186d8 (0x7fef82b186d8 in /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch_python.so) > frame #9: <unknown function> + 0x718af1 (0x7fef82b18af1 in /usr/local/lib/python3.10/dist-packages/torch/lib/libtorch_python.so) > frame #10: <unknown function> + 0x181390 (0x5597c1981390 in /usr/bin/python3) > frame #11: <unknown function> + 0x1946c8 (0x5597c19946c8 in /usr/bin/python3) > frame #12: <unknown function> + 0x1946dc (0x5597c19946dc in /usr/bin/python3) > frame #13: <unknown function> + 0x1946dc (0x5597c19946dc in /usr/bin/python3) > frame #14: <unknown function> + 0x1a061f (0x5597c19a061f in /usr/bin/python3) > frame #15: <unknown function> + 0x15f9d6 (0x5597c195f9d6 in /usr/bin/python3) > frame #16: <unknown function> + 0x2939a7 (0x5597c1a939a7 in /usr/bin/python3) > frame #17: _PyEval_EvalFrameDefault + 0x54b7 (0x5597c197a727 in /usr/bin/python3) > frame #18: _PyFunction_Vectorcall + 0x7c (0x5597c198b6ac in /usr/bin/python3) > frame #19: _PyEval_EvalFrameDefault + 0x807 (0x5597c1975a77 in /usr/bin/python3) > frame #20: _PyFunction_Vectorcall + 0x7c (0x5597c198b6ac in /usr/bin/python3) > frame #21: _PyEval_EvalFrameDefault + 0x6c0 (0x5597c1975930 in /usr/bin/python3) > frame #22: _PyFunction_Vectorcall + 0x7c (0x5597c198b6ac in /usr/bin/python3) > frame #23: _PyEval_EvalFrameDefault + 0x1987 (0x5597c1976bf7 in /usr/bin/python3) > frame #24: <unknown function> + 0x25a9d6 (0x5597c1a5a9d6 in /usr/bin/python3) > frame #25: PyEval_EvalCode + 0x86 (0x5597c1a5a8a6 in /usr/bin/python3) > frame #26: <unknown function> + 0x2812c8 (0x5597c1a812c8 in /usr/bin/python3) > frame #27: <unknown function> + 0x27bacf (0x5597c1a7bacf in /usr/bin/python3) > frame #28: PyRun_StringFlags + 0x81 (0x5597c1a756e1 in /usr/bin/python3) > frame #29: PyRun_SimpleStringFlags + 0x41 (0x5597c1a75591 in /usr/bin/python3) > frame #30: Py_RunMain + 0x3d0 (0x5597c1a748c0 in /usr/bin/python3) > frame #31: Py_BytesMain + 0x2d (0x5597c1a4e8ed in /usr/bin/python3) > frame #32: <unknown function> + 0x29d90 (0x7fef8bc29d90 in /usr/lib/x86_64-linux-gnu/libc.so.6) > frame #33: __libc_start_main + 0x80 (0x7fef8bc29e40 in /usr/lib/x86_64-linux-gnu/libc.so.6) > frame #34: _start + 0x25 (0x5597c1a4e7e5 in /usr/bin/python3) > > W0709 15:47:03.322000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886753 via signal SIGTERM > W0709 15:47:03.323000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886754 via signal SIGTERM > W0709 15:47:03.323000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886755 via signal SIGTERM > W0709 15:47:03.323000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886756 via signal SIGTERM > W0709 15:47:03.324000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886757 via signal SIGTERM > W0709 15:47:03.324000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886758 via signal SIGTERM > W0709 15:47:03.324000 886688 torch/multiprocessing/spawn.py:169] Terminating process 886760 via signal SIGTERM > Traceback (most recent call last): > File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 281, in <module> > torch.multiprocessing.spawn(test_loop, args=(num_processes, args), nprocs=num_processes) > File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 340, in spawn > return start_processes(fn, args, nprocs, join, daemon, start_method="spawn") > File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 296, in start_processes > while not context.join(): > File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 215, in join > raise ProcessRaisedException(msg, error_index, failed_process.pid) > torch.multiprocessing.spawn.ProcessRaisedException: > > -- Process 6 terminated with the following error: > Traceback (most recent call last): > File "/usr/local/lib/python3.10/dist-packages/torch/multiprocessing/spawn.py", line 90, in _wrap > fn(i, *args) > File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 243, in test_loop > test_main(args, i, local_rank, num_local_ranks, num_ranks, num_nodes, rank, buffer, group) > File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 188, in test_main > t = bench(lambda: buffer.dispatch(**tune_args))[0] > File "/nvme3/lwq/deepep_install/DeepEP/tests/utils.py", line 104, in bench > fn() > File "/nvme3/lwq/deepep_install/DeepEP/tests/test_internode.py", line 188, in <lambda> > t = bench(lambda: buffer.dispatch(**tune_args))[0] > File "/usr/local/lib/python3.10/dist-packages/deep_ep-1.1.0+e6d61fc-py3.10-linux-x86_64.egg/deep_ep/buffer.py", line 331, in dispatch > return self.internode_dispatch(x, handle, num_tokens_per_rank, num_tokens_per_rdma_rank, is_token_in_rank, num_tokens_per_expert, > File "/usr/local/lib/python3.10/dist-packages/deep_ep-1.1.0+e6d61fc-py3.10-linux-x86_64.egg/deep_ep/buffer.py", line 430, in internode_dispatch > recv_x, recv_x_scales, _, _, _, _, _, _, _, _, _, _, _, _, event = self.runtime.internode_dispatch( > RuntimeError: Failed: CUDA error /nvme3/lwq/deepep_install/DeepEP/csrc/kernels/internode.cu:1029 'unspecified launch failure' The logs before errors are as follows: <img width="1464" height="1622" alt="Image" src="https://github.com/user-attachments/assets/85e4dd80-22e8-4d7c-8c57-3ee206ee2593" /> other info: ibv_devinfo: ``` [root@opllm-h20-x6immzry-0000 lwq]# ibv_devinfo hca_id: mlx5_bond_0 transport: InfiniBand (0) fw_ver: 32.45.1020 node_guid: 7c8c:0903:00a6:82e6 sys_image_guid: 7c8c:0903:00a6:82e6 vendor_id: 0x02c9 vendor_part_id: 41692 hw_ver: 0x1 board_id: MT_0000001093 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x00 link_layer: Ethernet hca_id: mlx5_bond_1 transport: InfiniBand (0) fw_ver: 32.45.1020 node_guid: 7c8c:0903:00a6:7056 sys_image_guid: 7c8c:0903:00a6:7056 vendor_id: 0x02c9 vendor_part_id: 41692 hw_ver: 0x1 board_id: MT_0000001093 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x00 link_layer: Ethernet hca_id: mlx5_bond_2 transport: InfiniBand (0) fw_ver: 32.45.1020 node_guid: 7c8c:0903:00a6:7686 sys_image_guid: 7c8c:0903:00a6:7686 vendor_id: 0x02c9 vendor_part_id: 41692 hw_ver: 0x1 board_id: MT_0000001093 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x00 link_layer: Ethernet hca_id: mlx5_bond_3 transport: InfiniBand (0) fw_ver: 32.45.1020 node_guid: 7c8c:0903:00a6:89f2 sys_image_guid: 7c8c:0903:00a6:89f2 vendor_id: 0x02c9 vendor_part_id: 41692 hw_ver: 0x1 board_id: MT_0000001093 phys_port_cnt: 1 port: 1 state: PORT_ACTIVE (4) max_mtu: 4096 (5) active_mtu: 4096 (5) sm_lid: 0 port_lid: 0 port_lmc: 0x00 link_layer: Ethernet ``` <img width="1816" height="776" alt="Image" src="https://github.com/user-attachments/assets/e84dc5e9-4917-42ee-9347-df4782db7830" /> `root@opllm-h20-x6immzry-0000:/nvme3/lwq/Big_and_EP# nvshmem-info -a NVSHMEM v3.2.5 Build Information: CUDA API 12080 CUDA Driver 12080 Build Timestamp Jul 7 2025 11:56:31 Build Variables NVSHMEM_DEBUG=OFF NVSHMEM_DEVEL=OFF NVSHMEM_DEFAULT_PMI2=OFF NVSHMEM_DEFAULT_PMIX=OFF NVSHMEM_DEFAULT_UCX=OFF NVSHMEM_ENABLE_ALL_DEVICE_INLINING=OFF NVSHMEM_GPU_COLL_USE_LDST=OFF NVSHMEM_IBGDA_SUPPORT=ON NVSHMEM_IBGDA_SUPPORT_GPUMEM_ONLY=OFF NVSHMEM_IBDEVX_SUPPORT=OFF NVSHMEM_IBRC_SUPPORT=ON NVSHMEM_MPI_SUPPORT=OFF NVSHMEM_NVTX=ON NVSHMEM_PMIX_SUPPORT=OFF NVSHMEM_SHMEM_SUPPORT=OFF NVSHMEM_TEST_STATIC_LIB=OFF NVSHMEM_TIMEOUT_DEVICE_POLLING=OFF NVSHMEM_TRACE=OFF NVSHMEM_UCX_SUPPORT=OFF NVSHMEM_USE_DLMALLOC=OFF NVSHMEM_USE_NCCL=OFF NVSHMEM_USE_GDRCOPY=ON NVSHMEM_VERBOSE=OFF CUDA_HOME=/usr/local/cuda GDRCOPY_HOME=/usr/local/gdrdrv LIBFABRIC_HOME=/usr/local/libfabric MPI_HOME=/usr/local/ompi NCCL_HOME=/usr/local/nccl NVSHMEM_PREFIX=/usr/local/nvshmem PMIX_HOME=/usr SHMEM_HOME=/usr/local/ompi UCX_HOME=/usr/local/ucx Standard options: NVSHMEM_VERSION false (type: bool, default: false) Print library version at startup NVSHMEM_INFO false (type: bool, default: false) Print environment variable options at startup NVSHMEM_DISABLE_NVLS false (type: bool, default: false) Disable NVLS SHARP resources for collectives, even if available for platform NVSHMEM_SYMMETRIC_SIZE 1073741824 (type: size, default: 1073741824) Specifies the size (in bytes) of the symmetric heap memory per PE. The size is implementation-defined and must be at least as large as the integer ceiling of the product of the numeric prefix and the scaling factor. The character suffixes for the scaling factor are as follows: * k or K multiplies by 2^10 (kibibytes) * m or M multiplies by 2^20 (mebibytes) * g or G multiplies by 2^30 (gibibytes) * t or T multiplies by 2^40 (tebibytes) For example, string '20m' is equivalent to the integer value 20971520, or 20 mebibytes. Similarly the string '3.1M' is equivalent to the integer value 3250586. Only one multiplier is recognized and any characters following the multiplier are ignored, so '20kk' will not produce the same result as '20m'. Usage of string '.5m' will yield the same result as the string '0.5m'. An invalid value for NVSHMEM_SYMMETRIC_SIZE is an error, which the NVSHMEM library shall report by either returning a nonzero value from nvshmem_init_thread or causing program termination. NVSHMEM_DEBUG "" (type: string, default: "") Set to enable debugging messages. Optional values: VERSION, WARN, INFO, ABORT, TRACE Bootstrap options: NVSHMEM_BOOTSTRAP "PMI" (type: string, default: "PMI") Name of the default bootstrap that should be used to initialize NVSHMEM. Allowed values: PMI, MPI, SHMEM, plugin, UID NVSHMEM_BOOTSTRAP_PMI "PMI" (type: string, default: "PMI") Name of the PMI bootstrap that should be used to initialize NVSHMEM. Allowed values: PMI, PMI-2, PMIX NVSHMEM_BOOTSTRAP_PLUGIN "" (type: string, default: "") Absolute path to or name of the bootstrap plugin file to load when NVSHMEM_BOOTSTRAP=plugin is specified NVSHMEM_BOOTSTRAP_MPI_PLUGIN "nvshmem_bootstrap_mpi.so.3" (type: string, default: "nvshmem_bootstrap_mpi.so.3") Absolute path to or name of the MPI bootstrap plugin file. NVSHMEM will search for the plugin based on linux linker priorities. See man dlopen NVSHMEM_BOOTSTRAP_SHMEM_PLUGIN "nvshmem_bootstrap_shmem.so.3" (type: string, default: "nvshmem_bootstrap_shmem.so.3") Absolute path to or name of the SHMEM bootstrap plugin file. NVSHMEM will search for the plugin based on linux linker priorities. See man dlopen NVSHMEM_BOOTSTRAP_PMI_PLUGIN "nvshmem_bootstrap_pmi.so.3" (type: string, default: "nvshmem_bootstrap_pmi.so.3") Absolute path to or name of the PMI bootstrap plugin file. NVSHMEM will search for the plugin based on linux linker priorities. See man dlopen NVSHMEM_BOOTSTRAP_PMI2_PLUGIN "nvshmem_bootstrap_pmi2.so.3" (type: string, default: "nvshmem_bootstrap_pmi2.so.3") Absolute path to or name of the PMI-2 bootstrap plugin file. NVSHMEM will search for the plugin based on linux linker priorities. See man dlopen NVSHMEM_BOOTSTRAP_PMIX_PLUGIN "nvshmem_bootstrap_pmix.so.3" (type: string, default: "nvshmem_bootstrap_pmix.so.3") Absolute path to or name of the PMIx bootstrap plugin file. NVSHMEM will search for the plugin based on linux linker priorities. See man dlopen NVSHMEM_BOOTSTRAP_UID_PLUGIN "nvshmem_bootstrap_uid.so.3" (type: string, default: "nvshmem_bootstrap_uid.so.3") Absolute path to or name of the UID bootstrap plugin file. NVSHMEM will search for the plugin based on linux linker priorities. See man dlopen Additional options: NVSHMEM_CUDA_PATH "" (type: string, default: "") Path to directory containing libcuda.so (for use when not in default location) NVSHMEM_DEBUG_ATTACH_DELAY 0 (type: int, default: 0) Delay (in seconds) during the first call to NVSHMEM_INIT to allow for attaching a debuggger (Default 0) NVSHMEM_DEBUG_FILE "" (type: string, default: "") Debugging output filename, may contain %h for hostname and %p for pid NVSHMEM_MAX_TEAMS 32 (type: long, default: 32) Maximum number of simultaneous teams allowed NVSHMEM_MAX_MEMORY_PER_GPU 137438953472 (type: size, default: 137438953472) Maximum memory per GPU NVSHMEM_DISABLE_CUDA_VMM false (type: bool, default: false) Disable use of CUDA VMM for P2P memory mapping. By default, CUDA VMM is enabled on x86 and disabled on P9. CUDA VMM feature in NVSHMEM requires CUDA RT version and CUDA Driver version to be greater than or equal to 11.3. NVSHMEM_DISABLE_P2P false (type: bool, default: false) Disable P2P connectivity of GPUs even when available NVSHMEM_IGNORE_CUDA_MPS_ACTIVE_THREAD_PERCENTAGE false (type: bool, default: false) When doing Multi-Process Per GPU (MPG) run, full API support is available only if sum of CUDA_MPS_ACTIVE_THREAD_PERCENTAGE of processes running on a GPU is <= 100%. Through this variable, user can request NVSHMEM runtime to ignore the active thread percentage and allow full MPG support. Users enable it at their own risk as NVSHMEM might deadlock. NVSHMEM_CUMEM_GRANULARITY 536870912 (type: size, default: 536870912) Granularity for cuMemAlloc/cuMemCreate NVSHMEM_PROXY_REQUEST_BATCH_MAX 32 (type: int, default: 32) Maxmum number of requests that the proxy thread processes in a single iteration of the progress loop. Collectives options: NVSHMEM_DISABLE_NCCL false (type: bool, default: false) Disable use of NCCL for collective operations NVSHMEM_BARRIER_DISSEM_KVAL 2 (type: int, default: 2) Radix of the dissemination algorithm used for barriers NVSHMEM_BARRIER_TG_DISSEM_KVAL 2 (type: int, default: 2) Radix of the dissemination algorithm used for thread group barriers NVSHMEM_FCOLLECT_LL_THRESHOLD 2048 (type: size, default: 2048) Message size threshold up to which fcollect LL algo will be used NVSHMEM_REDUCE_SCRATCH_SIZE 524288 (type: size, default: 524288) Amount of symmetric heap memory (minimum 16B, multiple of 8B) reserved by runtime for every team to implement reduce and reducescatter collectives NVSHMEM_BCAST_ALGO 0 (type: int, default: 0) Broadcast algorithm to be used. * 0 - use default algorithm selection strategy NVSHMEM_REDMAXLOC_ALGO 1 (type: int, default: 1) Reduction algorithm to be used for MAXLOC operation. * 1 - default, flag alltoall algorithm * 2 - flat reduce + flat bcast * 3 - topo-aware two-level reduce + topo-aware bcast Transport options: NVSHMEM_REMOTE_TRANSPORT "ibrc" (type: string, default: "ibrc") Selected transport for remote operations: ibrc, ucx, libfabric, ibdevx, none NVSHMEM_ENABLE_NIC_PE_MAPPING false (type: bool, default: false) When not set or set to 0, a PE is assigned the NIC on the node that is closest to it by distance. When set to 1, NVSHMEM either assigns NICs to PEs on a round-robin basis or uses NVSHMEM_HCA_PE_MAPPING or NVSHMEM_HCA_LIST when they are specified. NVSHMEM_DISABLE_LOCAL_ONLY_PROXY false (type: bool, default: false) When running on an NVLink-only configuaration (No-IB, No-UCX), completely disable the proxy thread. This will disable device side global exit and device side wait timeout polling (enabled by NVSHMEM_TIMEOUT_DEVICE_POLLING build-time variable) because these are processed by the proxy thread. NVSHMEM_IB_ENABLE_IBGDA false (type: bool, default: false) Set to enable GPU-initiated communication transport. Hidden options: NVSHMEM_INFO_HIDDEN true (type: bool, default: false) Print hidden environment variable options at startup NVSHMEM_DISABLE_NVLS_SHARING true (type: bool, default: true) Disable NVLS SHARP resource sharing for user-defined teams NVSHMEM_HEAP_KIND "DEVICE" (type: string, default: "DEVICE") Specify the memory kind used by the NVSHMEM symmetric heap. Allowed values: VIDMEM, SYSMEM NVSHMEM_ENABLE_RAIL_OPT false (type: bool, default: false) Enable Rail Optimization when heap is in SYSMEM NVSHMEM_BOOTSTRAP_TWO_STAGE false (type: bool, default: false) Ignore CUDA device setting during initialization,forcing two-stage initialization NVSHMEM_DEBUG_SUBSYS "" (type: string, default: "") Comma separated list of debugging message sources. Prefix with '^' to exclude. Values: INIT, COLL, P2P, PROXY, TRANSPORT, MEM, BOOTSTRAP, TOPO, UTIL, ALL NVSHMEM_ENABLE_ERROR_CHECKS false (type: bool, default: false) Enable error checks NVSHMEM_DISABLE_MNNVL false (type: bool, default: false) Disable MNNVL connectivity for GPUs even when available NVSHMEM_CUMEM_HANDLE_TYPE "FILE_DESCRIPTOR" (type: string, default: "FILE_DESCRIPTOR") Handle type for cuMemCreate. Supported are - FABRIC or FILE_DESCRIPTOR NVSHMEM_BYPASS_ACCESSIBILITY_CHECK false (type: bool, default: false) Bypass peer GPU accessbility checks NVSHMEM_FCOLLECT_NTHREADS 512 (type: int, default: 512) Sets number of threads per block for fcollect collective. By default, if no env is set, default value is min(max_occupancy per CTA, msg size per PE). If env is specified, value overrides the default irrespective of max occupancy per CTA NVSHMEM_REDUCESCATTER_NTHREADS 512 (type: int, default: 512) Sets number of threads per block for reducescatter collective. By default, if no env is set, default value is min(max_occupancy per CTA, msg size per PE). If env is specified, value overrides the default irrespective of max occupancy per CTA NVSHMEM_MAX_CTAS 1 (type: int, default: 1) Sets number of blocks per grid for host onstream collective. By default, if no env is set, default value to 1 CTA If env is specified, value overrides the default value NVSHMEM_REDUCE_RECEXCH_KVAL 2 (type: int, default: 2) Radix of the recursive exchange reduction algorithm NVSHMEM_FCOLLECT_LL128_THRESHOLD 0 (type: size, default: 0) Message size threshold up to which the fcollect LL128 algo will be used. LL128 will be used only when FCOLLECT_LL_THRESHOLD < size NVSHMEM_FCOLLECT_NVLS_THRESHOLD 16777216 (type: size, default: 16777216) Message size threshold up to which fcollect NVLS algo will be used NVSHMEM_REDUCESCATTER_NVLS_THRESHOLD 16777216 (type: size, default: 16777216) Message size threshold up to which reducescatter NVLS algo will be used NVSHMEM_BCAST_TREE_KVAL 2 (type: int, default: 2) Radix of the broadcast tree algorithm NVSHMEM_FCOLLECT_ALGO 0 (type: int, default: 0) Fcollect algorithm to be used. * 0 - use default algorithm selection strategy NVSHMEM_REDUCE_ALGO 0 (type: int, default: 0) Allreduce algorithm to be used. * 0/1 - use default algorithm selection strategy NVSHMEM_REDUCE_NVLS_THRESHOLD 2048 (type: int, default: 2048) Message size threshold up to which allreduce one-shot algo will be used NVSHMEM_REDUCESCATTER_ALGO 0 (type: int, default: 0) Reduce Scatter algorithm to be used. * 0 - use default algorithm selection strategy NVSHMEM_ASSERT_ATOMICS_SYNC false (type: bool, default: false) Bypass flush on wait_until at target NVSHMEM_BYPASS_FLUSH false (type: bool, default: false) Bypass flush in proxy when enforcing consistency NVTX options: NVSHMEM_NVTX "off" (type: string, default: "off") Set to enable NVTX instrumentation. Accepts a comma separated list of instrumentation groups. By default the NVTX instrumentation is disabled. init : library setup alloc : memory management launch : kernel launch routines coll : collective communications wait : blocking point-to-point synchronization wait_on_stream : point-to-point synchronization (on stream) test : non-blocking point-to-point synchronization memorder : memory ordering (quiet, fence) quiet_on_stream : nvshmemx_quiet_on_stream atomic_fetch : fetching atomic memory operations atomic_set : non-fetchong atomic memory operations rma_blocking : blocking remote memory access operations rma_nonblocking : non-blocking remote memory access operations proxy : activity of the proxy thread common : init,alloc,launch,coll,memorder,wait,atomic_fetch,rma_blocking,proxy all : all groups off : disable all NVTX instrumentation `
Author
Owner

@sphish commented on GitHub (Jul 11, 2025):

Could you upload a more complete log?

<!-- gh-comment-id:3059879675 --> @sphish commented on GitHub (Jul 11, 2025): Could you upload a more complete log?
Author
Owner

@liweiqing1997 commented on GitHub (Jul 16, 2025):

sure.

command line:
node0:
root@opllm-h20-zcbziaff-0002:/nvme3/lwq/deepep_install/DeepEP-main# TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.140 MASTER_PORT=46534 WORLD_SIZE=2 RANK=0 python3 tests/test_internode.py

node1:
TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.140 MASTER_PORT=46534 WORLD_SIZE=2 RANK=1 python3 tests/test_internode.py

deepep-node-0.log
deepep-node-1.log

<!-- gh-comment-id:3076591154 --> @liweiqing1997 commented on GitHub (Jul 16, 2025): sure. **command line:** node0: root@opllm-h20-zcbziaff-0002:/nvme3/lwq/deepep_install/DeepEP-main# TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.140 MASTER_PORT=46534 WORLD_SIZE=2 RANK=0 python3 tests/test_internode.py node1: TORCH_USE_CUDA_DSA=1 CUDA_LAUNCH_BLOCKING=1 NVSHMEM_IB_ENABLE_IBGDA=1 NVSHMEM_IBGDA_NIC_HANDLER=gpu MASTER_ADDR=192.168.0.140 MASTER_PORT=46534 WORLD_SIZE=2 RANK=1 python3 tests/test_internode.py [deepep-node-0.log](https://github.com/user-attachments/files/21246721/deepep-node-0.log) [deepep-node-1.log](https://github.com/user-attachments/files/21246722/deepep-node-1.log)
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
deepseek-ai/DeepEP#208
No description provided.