函数:device_can_access_peer
产品支持情况
产品 |
是否支持 |
---|---|
√ |
|
√ |
|
√ |
|
√ |
|
x |
|
x |
功能说明
查询Device之间是否支持内存复制。
函数原型
- C函数原型
1
aclError aclrtDeviceCanAccessPeer(int32_t *canAccessPeer, int32_t deviceId, int32_t peerDeviceId)
- python函数
1
can_access_peer, ret = acl.rt.device_can_access_peer(dev_id, peer_dev_id)
参数说明
参数名 |
说明 |
---|---|
dev_id |
int,指定Device的ID,不能与peer_dev_id参数值相同。 用户调用acl.rt.get_device_count接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)]。 |
peer_dev_id |
int,指定Device的ID,不能与dev_id参数值相同。 用户调用acl.rt.get_device_count接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)]。 |
返回值说明
返回值 |
说明 |
---|---|
can_access_peer |
int,通过dev_id参数指定的Device和通过peer_dev_id参数指定的Device之间是否支持内存复制,1表示支持,0表示不支持。 |
ret |
int,错误码,返回0表示成功,返回其它值表示失败。 |
约束说明
- 仅支持物理机和容器场景。
- 仅支持同一个PCIe Switch内Device之间的内存复制。AI Server场景下,虽然是跨PCIe Switch,但也支持Device之间的内存复制。
- 仅支持同一个物理机或容器内的Device之间的内存复制操作。
- 仅支持同一个进程内、线程间的Device之间的内存复制,不支持不同进程间Device之间的内存复制。
- Host的相关端口要已使能(例如Host BIOS等),同一个PCIe Switch内Device之间的拷贝才能端到端可用。
父主题: Device管理