| 118 | } |
| 119 | |
| 120 | Maybe<void> EagerLocalTensorImpl::InitEagerBlobObject( |
| 121 | const Symbol<one::LocalTensorMeta>& local_tensor_meta, |
| 122 | const std::shared_ptr<const one::MutLocalTensorMeta>& mut_local_tensor_meta, |
| 123 | const intrusive::shared_ptr<LocalDepObject>& dep_object) { |
| 124 | CHECK_OR_RETURN(static_cast<bool>(local_tensor_meta->device())); // NOLINT |
| 125 | const auto& mem_case = local_tensor_meta->device()->mem_case(); |
| 126 | |
| 127 | if (tensor_storage_) { |
| 128 | auto tensor_storage = tensor_storage_->storage(); |
| 129 | eager_blob_object_ = std::make_shared<vm::EagerBlobObject>( |
| 130 | mem_case, local_tensor_meta, mut_local_tensor_meta, local_tensor_meta->dtype(), |
| 131 | local_tensor_meta->memory_format(), tensor_storage, dep_object); |
| 132 | } else { |
| 133 | auto device = local_tensor_meta->device(); |
| 134 | auto storage = device->rematable() ? std::make_shared<vm::RematableTensorStorage>(device) |
| 135 | : std::make_shared<vm::TensorStorage>(true, device); |
| 136 | const auto& eager_blob_object = std::make_shared<vm::EagerBlobObject>( |
| 137 | mem_case, local_tensor_meta, mut_local_tensor_meta, local_tensor_meta->dtype(), |
| 138 | local_tensor_meta->memory_format(), storage, dep_object); |
| 139 | JUST(set_eager_blob_object(eager_blob_object)); |
| 140 | } |
| 141 | return Maybe<void>::Ok(); |
| 142 | } |
| 143 | |
| 144 | Maybe<bool> EagerLocalTensorImpl::is_pinned() const { |
| 145 | if (this->device() == JUST(Device::New("meta"))) { return false; } |
no test coverage detected