---
title: aclrtGetUserDevIdByLogicDevId
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclcppdevg_03_2058.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclcppdevg_03_2058.html
indexId: 4a7a4fcf9dbad8163b281b633013e3aeea18d05eca548d0c2452bbcc84a374d968
---
# aclrtGetUserDevIdByLogicDevId

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

根据逻辑设备ID获取对应的用户设备ID。


#### 函数原型

```
aclError aclrtGetUserDevIdByLogicDevId(const int32_t logicDevId, int32_t *const userDevid)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| logicDevId | 输入 | 逻辑设备ID。 |
| userDevid | 输出 | 用户设备ID。 |


#### 返回值说明

返回0表示成功，返回其他值表示失败，请参见aclError。


#### 用户设备ID、逻辑设备ID、物理设备ID之间的关系

若未设置ASCEND_RT_VISIBLE_DEVICES环境变量，逻辑设备ID与用户设备ID相同；若在非容器场景下，物理设备ID与逻辑设备ID相同。

下图以容器场景且设置ASCEND_RT_VISIBLE_DEVICES环境变量为例说明三者之间的关系：通过ASCEND_RT_VISIBLE_DEVICES环境变量设置的Device ID依次为1、2，对应的Device索引值依次为0、1，通过aclrtSetDevice接口设置的用户设备ID为0，即对应的Device索引值为0，因此用户设备ID=0对应逻辑设备ID=1，容器中的逻辑设备ID=1又映射到物理设备ID=6，因此最终是使用ID为6的物理设备进行计算。


关于ASCEND_RT_VISIBLE_DEVICES环境的详细介绍请参见《环境变量参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/envvar/envref_07_0001.html)》。
