nvidia-smi获取显卡序号与libcuda不对应

nvidia-smi 使用的库是nvml(libnvidia-ml.soxxx),可以获取GPU一些属性信息
libcuda.so这个库有一些接口cuDeviceGetAttribute也可以获取GPU的属性,如bus Id 等
但是,现在遇到一个问题就是:假设这样一个情形,有4块显卡(显卡类型并不完全相同),获取每一块显卡的bus Id。 四块显卡序号为0 1 2 3
通过nvidia-smi获取的bus_id情况
gpu_idx bus_id
0 0x02
1 0x03
2 0x81
3 0x82
通过cuDeviceGetAttribute获取bus_id的情况
gpu_idx bus_id
0 0x03
1 0x02
2 0x81
3 0x82
可以看出当gpu_id=0 和gpu_id=1时,两种方式获取bus_id不一致。
也就是说通过传递同样的gpu_idx,两种方式获取的结果是不一样的。两个库似乎对显卡的顺序处理有差异。不知道大家有没有遇到同样的情况

我觉得应该反过来说,相同的bus_id获得了不同的gpu_idx