| 100 | void DenseTensor::set_type(phi::DataType type) { meta_.dtype = type; } |
| 101 | |
| 102 | void* DenseTensor::mutable_data(const Place& place, |
| 103 | phi::DataType type, |
| 104 | size_t requested_size) { |
| 105 | set_type(type); |
| 106 | PADDLE_ENFORCE_GE( |
| 107 | numel(), |
| 108 | 0, |
| 109 | common::errors::PreconditionNotMet( |
| 110 | "The Tensor's element number must be equal or greater than zero. " |
| 111 | "The Tensor's shape is [", |
| 112 | dims(), |
| 113 | "] now")); |
| 114 | size_t size = numel() * SizeOf(dtype()); |
| 115 | if (requested_size && (requested_size > size)) { |
| 116 | size = requested_size; |
| 117 | } |
| 118 | |
| 119 | /* some versions of paddle::variant don't have operator!= */ |
| 120 | if (holder_ == nullptr || !(holder_->place() == place) || |
| 121 | holder_->size() < size + meta_.offset) { |
| 122 | holder_.reset(); |
| 123 | holder_ = memory_utils::AllocShared(place, size); |
| 124 | meta_.offset = 0; |
| 125 | } |
| 126 | uintptr_t ptr = reinterpret_cast<uintptr_t>(holder_->ptr()) + meta_.offset; |
| 127 | return reinterpret_cast<void*>(ptr); |
| 128 | } |
| 129 | |
| 130 | void* DenseTensor::mutable_data(const Place& place, size_t requested_size) { |
| 131 | return mutable_data(place, type(), requested_size); |
nothing calls this directly
no test coverage detected