aclrtDeviceCanAccessPeer
函数功能
查询Device之间是否支持内存复制。
Atlas 200/300/500 推理产品,不支持该接口。
Atlas 200I/500 A2推理产品,不支持该接口。
约束说明
- 仅支持物理机和容器场景;
- 仅支持同一个PCIe Switch内Device之间的内存复制。AI Server场景下,虽然是跨PCIe Switch,但也支持Device之间的内存复制。
- 仅支持同一个物理机或容器内的Device之间的内存复制操作;
- 仅支持同一个进程内、线程间的Device之间的内存复制,不支持不同进程间Device之间的内存复制。
- Host的相关端口要已使能(例如Host BIOS等),同一个PCIe Switch内Device之间的拷贝才能端到端可用。
- Atlas 推理系列产品(Ascend 310P处理器),Control CPU开放形态下,应用程序运行在Device的Control CPU上时,该接口不支持Device之间的内存复制。
函数原型
aclError aclrtDeviceCanAccessPeer(int32_t *canAccessPeer, int32_t deviceId, int32_t peerDeviceId)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
canAccessPeer |
输出 |
通过deviceId参数指定的Device和通过peerDeviceId参数指定的Device之间是否支持内存复制,1表示支持,0表示不支持。 |
deviceId |
输入 |
指定Device的ID,不能与peerDeviceId参数值相同。 用户调用aclrtGetDeviceCount接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)] |
peerDeviceId |
输入 |
指定Device的ID,不能与deviceId参数值相同。 用户调用aclrtGetDeviceCount接口获取可用的Device数量后,这个Device ID的取值范围:[0, (可用的Device数量-1)] |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用示例,参见两个Device间的数据传输。
父主题: 内存管理