|
|
@ -187,21 +187,12 @@ void SetTensorFromPyArrayT(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
#ifdef PADDLE_WITH_CUDA
|
|
|
|
#ifdef PADDLE_WITH_CUDA
|
|
|
|
T *dst;
|
|
|
|
auto dst = self->mutable_data<T>(place);
|
|
|
|
if (array.nbytes() <= 4 && !paddle::platform::is_cuda_pinned_place(place)) {
|
|
|
|
|
|
|
|
dst = self->mutable_data<T>(platform::CPUPlace());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
dst = self->mutable_data<T>(place);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (paddle::platform::is_cuda_pinned_place(place)) {
|
|
|
|
if (paddle::platform::is_cuda_pinned_place(place)) {
|
|
|
|
std::memcpy(dst, array.data(), array.nbytes());
|
|
|
|
std::memcpy(dst, array.data(), array.nbytes());
|
|
|
|
} else if (paddle::platform::is_gpu_place(place)) {
|
|
|
|
} else if (paddle::platform::is_gpu_place(place)) {
|
|
|
|
if (array.nbytes() <= 4) {
|
|
|
|
paddle::platform::GpuMemcpySync(dst, array.data(), array.nbytes(),
|
|
|
|
std::memcpy(dst, array.data(), array.nbytes());
|
|
|
|
cudaMemcpyHostToDevice);
|
|
|
|
} else {
|
|
|
|
|
|
|
|
paddle::platform::GpuMemcpySync(dst, array.data(), array.nbytes(),
|
|
|
|
|
|
|
|
cudaMemcpyHostToDevice);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
PADDLE_THROW(
|
|
|
|
PADDLE_THROW(
|
|
|
|
"Incompatible place type: Tensor.set() supports CPUPlace, CUDAPlace "
|
|
|
|
"Incompatible place type: Tensor.set() supports CPUPlace, CUDAPlace "
|
|
|
|