当前位置: 首页 > article >正文

【mindspore系列】- 算子源码分析

本文会介绍mindspore的算子源码结构、执行过程以及如何编写一个自定义的mindspore算子。

源码介绍

首先,我们先从https://gitee.com/mindspore/mindspore/ 官网中clone源代码下来。
clone好代码后,可以看到源码的文件夹结构如下(只列出比较重要的文件夹):

  • docs
  • mindspore
    • ccsrc
    • core
    • ops
    • python
  • tests

前端接口

在算子开发过程中,主要涉及这三个文件夹。
docs文件夹是所有mindspore API的接口文档,包括中英文接口文档。
tests文件夹是所有的测试代码,包括UT用例和ST用例等。
mindspore文件夹是重点关注对象,核心实现逻辑基本都在这个文件夹里。

mindspore文件夹里,有四个子文件夹。其中 python文件夹是前端的接口定义。
例如mindspore/python/mindspore/ops/function/array_func.py这个文件里定义了很多关于array相关的算子,譬如def min(xxx), def max(xxx) 等这些常见算子。
如果你仔细研究过这个文件夹,你会发现在这个文件夹下,有的函数有时候会被定义两次,但是他们所属的包路径却不一样。
例如包路径下有ops.min这个函数定义,同时还有mint.min这个函数的定义。
实际上,mindspore目前的有两套接口定义。例如:

import mindspore
from mindspore import ops, mint, Tensor# ops下的接口
print(ops.max(Tensor([1,2,3]))# mint下的接口
print(mint.max(Tensor([1,2,3])))

这两个的区别从官网上就能看出。之所有会搞两套接口定义,是因为mindspore前期是抄袭TensorFlow的架构和接口定义,因此细心的你能发现ops下的接口定义基本与Tensorflow的接口定义保持一致。但是随着Torch的火爆,越来越多的人在使用Torch,mindspore为了让这部分人无痛迁移脚本,就搞出来一套mint下的接口,简称 mindspore is not torch,翻译过来大概就是此地无银三百两吧。
目前ops和mint的关系:如果ops下的接口定义与Torch的定义一致,那么mint的接口会直接引用ops下的接口。如果不一致,则会新增xxx_ext接口,即增加后缀名以区分函数的方式来增加mint下的接口。

后端实现

mindspore.ops文件夹是算子具体的后端实现,

http://www.lryc.cn/news/2387741.html

相关文章:

  • 学习日记-day17-5.27
  • 一种比较精简的协议
  • 网络常识:网线和光纤的区别
  • OpenCV CUDA模块图像过滤------创建一个 Scharr 滤波器函数createScharrFilter()
  • html css js网页制作成品——HTML+CSS+js醇香咖啡屋网页设计(5页)附源码
  • [特殊字符] 构建高内聚低耦合的接口架构:从数据校验到后置通知的分层实践
  • brep2seq 源码笔记2
  • UE5 蓝图,隐藏一个Actor,同时隐藏它的所有子物体
  • 人工智能AI之机器学习基石系列 第 2 篇:数据为王——机器学习的燃料与预处理
  • 代码随想录算法训练营 Day58 图论Ⅷ 拓扑排序 Dijkstra
  • 实现单例模式的6种方法(Python)
  • 基于 STM32 的智慧农业温室控制系统设计与实现
  • 深度学习优化器相关问题
  • 【免费】【无需登录/关注】度分秒转换在线工具
  • 常见的垃圾回收算法原理及其模拟实现
  • fpga-编程线性序列机和状态机
  • 力扣面试150题--完全二叉树的节点个数
  • Qt 多线程环境下的全局变量管理与密码安全
  • 内网映射有什么作用,如何实现内网的网络地址映射到公网连接?
  • BLIP3-o:一系列完全开源的统一多模态模型——架构、训练与数据集
  • DNS解析流程入门篇
  • spring4第2课-ioc控制反转-依赖注入,是为了解决耦合问题
  • 大模型系列22-MCP
  • 【监控】Prometheus+Grafana 构建可视化监控
  • vscode里几种程序调试配置
  • RAGFlow源码安装操作过程
  • Unity使用XCharts动态配置数据——折线图(LineChart)
  • 【HITCSAPP 哈工大计算机系统期末大作业】 程序人生-Hello’s P2P
  • DAY9 热力图和箱线图的绘制
  • 如何查看 GitLab 内置的 PostgreSQL 版本?