# tensorlink **Repository Path**: lite_xay/tensorlink ## Basic Information - **Project Name**: tensorlink - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-06-07 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tensorlink 连接torch与mindspore_lite的一个组件。用户能够使用它实现torch.Tensor与mindspore_lite.Tensor间的互转,而不发生数据的拷贝。 > 注意: > - 数据的拥有者是原Tensor,而目的Tensor仅有数据的使用权。 > - 支持的后端:CPU、Ascend。 ## 如何编译 ### c++编译依赖 - [GCC](https://gcc.gnu.org/releases.html) >= 7.3.0 - [CMake](https://cmake.org/download/) >= 3.18.3 ### Python编译依赖: - [Python](https://www.python.org/) >= 3.7.0 - [torch](https://pytorch.org/) >= 2.1.0 - [mindspore-lite](https://www.mindspore.cn/lite/docs/zh-CN/r2.3/use/downloads.html) >= 2.3 ### `build.sh`的参数说明 | 参数 | 参数描述 | | --------- | ------------------------------------------------------------ | | -h | 打印使用方法。 | | -v | 控制是否打印编译详情。 | | -d | 编译Debug版本。默认Release版本。 | | -i | 控制编译后是否自动安装。默认仅编译。 | | -j | 设置编译的线程数。默认4线程。 | ### 环境变量 | 变量 | 变量说明 | 必要性 | 默认值 | | --------------------- | -------------------------------------------------------- | --------- | --------- | | MSLITE_INSTALLED_PATH | mindspore_lite的安装路径 | 否 | - | | MSLITE_SOURCE_PATH | mindspore_lite的源码路径 | 否 | - | | TORCH_INSTALLED_PATH | torch的安装路径 | 否 | - | | TORCH_SOURCE_PATH | torch的源码路径 | 否 | - | | ENABLE_GITEE_MIRROR | 控制依赖库的下载源 | 否 | off | | TENSORLINK_CXX11_ABI | 控制GCC宏`_GLIBCXX_USE_CXX11_ABI`(0或者1),以兼容torch | 否 | 0 | > 注意: > - MSLITE_INSTALLED_PATH和MSLITE_SOURCE_PATH至少需要设置一个。 > - TORCH_INSTALLED_PATH和TORCH_SOURCE_PATH至少需要设置一个。 ### 编译 1. 设置必要的环境变量 ```bash export MSLITE_INSTALLED_PATH=xxx export TORCH_INSTALLED_PATH=xxx export ENABLE_GITEE_MIRROR=on ``` 2. 运行`build.sh` ```bash bash build.sh -i ``` ## 使用说明 ### API说明 - tensor转换模式 ```python ConvertType.Torch2MsLite ConvertType.MsLite2Torch ``` - tensor转换接口 ```python def convert_tensor(tensor: Optional[Union[torch.Tensor, mslite.Tensor]], mode: ConvertType) ``` ### 示例 - torch.Tensor 转 mindspore_lite.Tensor ```python import torch from tensorlink import convert_tensor, ConvertType import numpy as np np_data = np.random.uniform(size=[2, 3]).astype(np.float32) torch_tensor = torch.from_numpy(np_data) mslite_tensor = convert_tensor(torch_tensor, ConvertType.Torch2MsLite) ``` - mindspore_lite.Tensor 转 torch.Tensor ```python import mindspore_lite as mslite from tensorlink import convert_tensor, ConvertType import numpy as np np_data = np.random.uniform(size=[2, 3]).astype(np.float32) mslite_tensor = mslite.Tensor(np_data) torch_tensor = convert_tensor(mslite_tensor, ConvertType.MsLite2Torch) ```