MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / eager_api_async_read

Function eager_api_async_read

paddle/fluid/pybind/eager_functions.cc:1109–1290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1107
1108#if defined(PADDLE_WITH_CUDA)
1109static PyObject* eager_api_async_read(PyObject* self,
1110 PyObject* args,
1111 PyObject* kwargs) {
1112 EAGER_TRY
1113 auto& src = GetTensorFromArgs("async_read", "src", args, 0, false);
1114 auto& dst = GetTensorFromArgs("async_read", "dst", args, 1, false);
1115 auto& index = GetTensorFromArgs("async_read", "index", args, 2, false);
1116 auto& buffer = GetTensorFromArgs("async_read", "buffer", args, 3, false);
1117 auto& offset = GetTensorFromArgs("async_read", "offset", args, 4, false);
1118 auto& count = GetTensorFromArgs("async_read", "count", args, 5, false);
1119 const phi::distributed::ProcessMesh* mesh = nullptr;
1120 if (InputsContainDistTensor(&mesh, src, dst, index, buffer, offset, count)) {
1121 ConvertAllInputsToDistTensor(mesh, src, dst, index, buffer, offset, count);
1122 }
1123
1124 {
1125 eager_gil_scoped_release guard;
1126 EagerSetDeviceId();
1127 PADDLE_ENFORCE_EQ(
1128 src.is_gpu_pinned(),
1129 true,
1130 common::errors::InvalidArgument("Required `src` device should be "
1131 "CUDAPinnedPlace, but received %d.",
1132 src.place()));
1133 PADDLE_ENFORCE_EQ(
1134 dst.is_gpu(),
1135 true,
1136 common::errors::InvalidArgument(
1137 "Required `dst` device should be CUDAPlace, but received %d.",
1138 dst.place()));
1139 PADDLE_ENFORCE_EQ(
1140 index.is_cpu(),
1141 true,
1142 common::errors::InvalidArgument(
1143 "Required `index` device should be CPUPlace, but received %d.",
1144 index.place()));
1145 PADDLE_ENFORCE_EQ(buffer.is_gpu_pinned(),
1146 true,
1147 common::errors::InvalidArgument(
1148 "Required `buffer` device should be CUDAPinnedPlace, "
1149 "but received %d.",
1150 buffer.place()));
1151 PADDLE_ENFORCE_EQ(
1152 offset.is_cpu(),
1153 true,
1154 common::errors::InvalidArgument(
1155 "Required `offset` device should be CPUPlace, but received %d.",
1156 offset.place()));
1157 PADDLE_ENFORCE_EQ(
1158 count.is_cpu(),
1159 true,
1160 common::errors::InvalidArgument(
1161 "Required `count` device should be CPUPlace, but received %d.",
1162 count.place()));
1163
1164 auto& src_tensor = src;
1165 auto* dst_tensor = &dst;
1166 auto& index_tensor = index;

Callers

nothing calls this directly

Calls 14

InputsContainDistTensorFunction · 0.85
EagerSetDeviceIdFunction · 0.85
index_selectFunction · 0.85
is_gpu_pinnedMethod · 0.80
is_gpuMethod · 0.80
get_current_streamFunction · 0.70
GetCurrentDeviceIdFunction · 0.50
placeMethod · 0.45
is_cpuMethod · 0.45
sizeMethod · 0.45
dimsMethod · 0.45

Tested by

no test coverage detected