diff --git a/paddle/fluid/operators/dropout_op.h b/paddle/fluid/operators/dropout_op.h index 09c4899c7376700fbeb3ca9735e9456138b9a08e..20742f9a453c5ad3c3702fd939e28312263323f5 100644 --- a/paddle/fluid/operators/dropout_op.h +++ b/paddle/fluid/operators/dropout_op.h @@ -77,13 +77,20 @@ class CPUDropoutKernel : public framework::OpKernel { } } } else { - auto X = EigenMatrix::Reshape(*x, 1); - auto Y = EigenMatrix::Reshape(*y, 1); - auto& place = - *context.template device_context().eigen_device(); if (upscale_in_train) { - Y.device(place) = X; + const auto* X_data = x->data(); + auto* Y_data = y->mutable_data(context.GetPlace()); +#ifdef PADDLE_WITH_MKLML +#pragma omp parallel for +#endif + for (int i = 0; i < x->numel(); i++) { + Y_data[i] = X_data[i]; + } } else { + auto X = EigenMatrix::Reshape(*x, 1); + auto Y = EigenMatrix::Reshape(*y, 1); + auto& place = + *context.template device_context().eigen_device(); Y.device(place) = X * static_cast(1.0f - dropout_prob); } }