| 101 | } |
| 102 | |
| 103 | Layout lite::to_lite_layout(const LTensorLayout& mge_layout) { |
| 104 | Layout layout; |
| 105 | if (!mge_layout.dtype.valid()) { |
| 106 | return layout; |
| 107 | } |
| 108 | layout.ndim = mge_layout.ndim; |
| 109 | LITE_ASSERT(layout.ndim < layout.MAXDIM, "tensor layout ndim is to large"); |
| 110 | for (size_t i = 0; i < layout.ndim; i++) { |
| 111 | layout.shapes[i] = mge_layout.shape[i]; |
| 112 | } |
| 113 | switch (mge_layout.dtype.enumv()) { |
| 114 | case mgb::DTypeEnum::Float32: |
| 115 | layout.data_type = LiteDataType::LITE_FLOAT; |
| 116 | break; |
| 117 | #if !MEGDNN_DISABLE_FLOAT16 |
| 118 | case mgb::DTypeEnum::Float16: |
| 119 | layout.data_type = LiteDataType::LITE_HALF; |
| 120 | break; |
| 121 | #endif |
| 122 | case mgb::DTypeEnum::Int32: |
| 123 | layout.data_type = LiteDataType::LITE_INT; |
| 124 | break; |
| 125 | case mgb::DTypeEnum::Int16: |
| 126 | layout.data_type = LiteDataType::LITE_INT16; |
| 127 | break; |
| 128 | case mgb::DTypeEnum::Uint16: |
| 129 | layout.data_type = LiteDataType::LITE_UINT16; |
| 130 | break; |
| 131 | case mgb::DTypeEnum::Int8: |
| 132 | layout.data_type = LiteDataType::LITE_INT8; |
| 133 | break; |
| 134 | case mgb::DTypeEnum::Uint8: |
| 135 | layout.data_type = LiteDataType::LITE_UINT8; |
| 136 | break; |
| 137 | default: |
| 138 | LITE_THROW(mgb::ssprintf( |
| 139 | "unsupport dtype in lite : %s.", mge_layout.to_string().c_str())); |
| 140 | } |
| 141 | return layout; |
| 142 | } |
| 143 | |
| 144 | mgb::CompNode::Locator lite::to_compnode_locator(const LiteDeviceType& device) { |
| 145 | mgb::CompNode::Locator loc; |