---
title: UCX使用SDMA时，报错：UCX ERROR Failed to create sdma_device[0] handle
description: "UCX使用SDMA时，出现如下报错："
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/userg_huaweimpi_0061.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/userg_huaweimpi_0061.html
indexId: 63550bba458031e14d9aa0a778ae1e2d933a784ad36c946258cab25ed2070c6a60
---
# UCX使用SDMA时，报错：UCX ERROR Failed to create sdma_device[0] handle

#### 现象描述

UCX使用SDMA时，出现如下报错：

```
UCX ERROR Failed to create sdma_device[0] handle
```


#### 可能原因

在开启smmu的环境中，UCX的sm传输层默认会选择SDMA作为共享内存进行数据传输，单IO-Die中SDMA内核驱动默认总通道数为160个，其中包含独立通道数和共享通道数。MPI每启动一个业务进程，UCX会申请该进程所在IO-Die的一个SDMA共享通道。如果SDMA没有申请共享通道，MPI会在初始化阶段报错退出。如果通过命令参数-x UCX_SDMA_SHARED_CHANNEL_MODE=n选择独立通道模式，而SDMA独立通道数量申请不足，MPI同样会在初始化阶段报错退出。


#### 恢复步骤

在使用SDMA运行业务之前，需要检查单IO-Die中SDMA内核共享通道是否大于0；如果采用独立通道模式，则需要根据业务规模手动修改SDMA内核独立通道数。由于单IO-Die中SDMA内核共享通道数和独立通道数默认总共为160个，因此可以通过修改共享通道数来间接修改独立通道数。修改方法如下：

1. 查看当前单IO-Die中SDMA内核共享通道数。
  cat /sys/module/sdma_dae/parameters/share_chns

```
16
```


2. 移除SDMA内核模块。
  rmmod sdma_dae

3. 重新插入SDMA内核模块，并修改共享通道数。

  - 例1
    modprobe sdma_dae share_chns=160

    例如，修改共享通道数为160个，则独立通道数为0个，因此该配置允许MPI在单IO-Die中启动SDMA业务进程。

  - 例2
    modprobe sdma_dae share_chns=8

    例如，修改共享通道数为8个，则独立通道数为152个，因此该配置允许MPI在使用-x UCX_SDMA_SHARED_CHANNEL_MODE=n时，在单IO-Die中最多启动152个业务进程。
