diff --git a/mooncake-transfer-engine/example/transfer_engine_heterogeneous_ascend_perf_initiator.cpp b/mooncake-transfer-engine/example/transfer_engine_heterogeneous_ascend_perf_initiator.cpp index efbd30ea72..d2a9ec52d1 100644 --- a/mooncake-transfer-engine/example/transfer_engine_heterogeneous_ascend_perf_initiator.cpp +++ b/mooncake-transfer-engine/example/transfer_engine_heterogeneous_ascend_perf_initiator.cpp @@ -160,6 +160,9 @@ std::string loadNicPriorityMatrix() { " \"cpu:1\": [[" + device_names + "], []], " + " \"npu:0\": [[" + + device_names + + "], []], " " \"cuda:0\": [[" + device_names + "], []], " diff --git a/mooncake-transfer-engine/src/transport/ascend_transport/heterogeneous_rdma_transport/heterogeneous_rdma_transport.cpp b/mooncake-transfer-engine/src/transport/ascend_transport/heterogeneous_rdma_transport/heterogeneous_rdma_transport.cpp index 2ba7455249..943332a919 100644 --- a/mooncake-transfer-engine/src/transport/ascend_transport/heterogeneous_rdma_transport/heterogeneous_rdma_transport.cpp +++ b/mooncake-transfer-engine/src/transport/ascend_transport/heterogeneous_rdma_transport/heterogeneous_rdma_transport.cpp @@ -4,13 +4,19 @@ namespace mooncake { namespace { +// ACL memory location types for aclrtPtrAttributes::location.type: +// 0 = ACL host memory, 1 = device memory, 2 = regular CPU memory (malloc) +static constexpr int kDeviceMemoryLocationType = 1; + bool isCpuMemory(void *addr) { aclrtPtrAttributes attributes{}; if (int ret = aclrtPointerGetAttributes(addr, &attributes)) { - LOG(ERROR) << "aclrtPointrtGetAttributes error, ret: " << ret; - return false; + // If ACL cannot identify the pointer, treat it as regular CPU memory. + LOG(WARNING) << "aclrtPointerGetAttributes failed for addr " << addr + << ", ret: " << ret << ". Treating as CPU memory."; + return true; } - return (attributes.location.type == 0); + return (attributes.location.type != kDeviceMemoryLocationType); } } // namespace