| 685 | } |
| 686 | |
| 687 | DeviceTensorND Tensor::dev_tensor(bool contiguous) { |
| 688 | mgb_assert(m_blob, "uninitialized tensor."); |
| 689 | if (contiguous) { |
| 690 | to_contiguous_inplace(); |
| 691 | } |
| 692 | MGB_LOCK_GUARD(m_blob_mtx); |
| 693 | DeviceTensorStorage storage; |
| 694 | storage.reset(m_cn, m_blob->size(), m_blob->storage()); |
| 695 | storage = storage.sub(m_offset); |
| 696 | DeviceTensorND ret; |
| 697 | ret.reset(storage, m_layout); |
| 698 | return ret; |
| 699 | } |
| 700 | |
| 701 | bool Tensor::empty() { |
| 702 | return !m_blob->size(); |