UCX使用SDMA时,出现如下报错:
1 | 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个,因此可以通过修改共享通道数来间接修改独立通道数。修改方法如下:
cat /sys/module/sdma_dae/parameters/share_chns
1 | 16
|
rmmod sdma_dae
modprobe sdma_dae share_chns=160
例如,修改共享通道数为160个,则独立通道数为0个,因此该配置允许MPI在单IO-Die中启动SDMA业务进程。
modprobe sdma_dae share_chns=8
例如,修改共享通道数为8个,则独立通道数为152个,因此该配置允许MPI在使用-x UCX_SDMA_SHARED_CHANNEL_MODE=n时,在单IO-Die中最多启动152个业务进程。