diff --git a/paddle/fluid/inference/api/details/zero_copy_tensor.cc b/paddle/fluid/inference/api/details/zero_copy_tensor.cc index 5ed6691ebb8673fd177340936cc605cee04b8838..b117a21dea3e65b11dfe84afcee8eea80f51dcd4 100644 --- a/paddle/fluid/inference/api/details/zero_copy_tensor.cc +++ b/paddle/fluid/inference/api/details/zero_copy_tensor.cc @@ -65,10 +65,13 @@ T *Tensor::mutable_data(PlaceType place) { case static_cast(PlaceType::kXPU): { return tensor->mutable_data(paddle::platform::XPUPlace(device_)); } + case static_cast(PlaceType::kNPU): { + return tensor->mutable_data(paddle::platform::NPUPlace(device_)); + } default: PADDLE_THROW(paddle::platform::errors::Unavailable( - "Only CPU / CUDA / XPU places is supported. The place `%d` is not " - "supported.", + "Only CPU / CUDA / XPU / NPU places is supported. The place `%d` is " + "not supported.", static_cast(place))); break; } @@ -86,6 +89,8 @@ T *Tensor::data(PlaceType *place, int *size) const { *place = PlaceType::kGPU; } else if (paddle::platform::is_xpu_place(tensor->place())) { *place = PlaceType::kXPU; + } else if (paddle::platform::is_npu_place(tensor->place())) { + *place = PlaceType::kNPU; } else { *place = PlaceType::kUNK; } diff --git a/paddle/fluid/inference/api/details/zero_copy_tensor_test.cc b/paddle/fluid/inference/api/details/zero_copy_tensor_test.cc index 7e709924e91f93b0fb92a0d555675c117a7a831e..f5140547b89e4edf65212a80408e204c071dc2af 100644 --- a/paddle/fluid/inference/api/details/zero_copy_tensor_test.cc +++ b/paddle/fluid/inference/api/details/zero_copy_tensor_test.cc @@ -133,6 +133,10 @@ TEST(Tensor, FillRandomDataAndCheck) { ASSERT_TRUE(FillRandomDataAndCheck(PlaceType::kGPU)); ASSERT_TRUE(SetPlaceAndCheck(PlaceType::kGPU)); #endif +#ifdef PADDLE_WITH_ASCEND_CL + ASSERT_TRUE(FillRandomDataAndCheck(PlaceType::kNPU)); + ASSERT_TRUE(SetPlaceAndCheck(PlaceType::kNPU)); +#endif } } // namespace paddle_infer