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

【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.xdnf.cn/news/8246.html

相关文章:

  • 超越感官的实相:声、光、气味的科学与哲学探微
  • Azure 公有云基础架构与核心服务:从基础到实践指南
  • C++——STL——封装红黑树实现mymap与myset
  • SpringBoot3+Vue3开发宾馆住房管理系统
  • 如何在UI设计中更好地平衡美学与功能性?
  • 【论文精读】2022 CVPR--RealBasicVSR现实世界视频超分辨率(RealWorld VSR)
  • Go语言爬虫系列教程(二) HTTP请求与响应处理详解
  • 电脑无法识别打印机usb设备怎么办 一键解决!
  • OpenHarmony外设驱动使用 (十三),Vibrator
  • Java内存管理:堆和栈的概念和运行原理
  • 第 7 章:综合回顾与性能优化
  • C语言实现顺序存储结构
  • 【LINUX操作系统】线程池——线程部分综合运用并实现一个自己的线程池
  • Git使用说明
  • 调度关键路径里调整优先级导致hardlockup
  • AWS中创建ES集群(opensearch部署)
  • Laravel 连接 SQL Server 之 Linux 系统安装 unixODBC 和 Microsoft ODBC 驱动
  • Oracle查看SQL执行计划的方法
  • .NET外挂系列:7. harmony在高级调试中的一些实战案例
  • docker环境安装wlcn
  • upload-labs通关笔记-第20关 文件上传之杠点绕过
  • DeltaV SIS逻辑解算器艾默生SLS 1508
  • Linux 之 MTD 子系统框架
  • recurrent neural network(rnn)
  • C++(29):结构体
  • 并发编程之线程安全lock
  • 看八股有感
  • 进销存管理系统:Java+Vue,含源码及文档,集成采购、销售、库存管理,实现数据互通,提升运营效率
  • 常见排序算法详解及其复杂度分析
  • 【沉浸式解决问题】System.getProperty(“user.dir“)获取不到项目根目录