Skip to content

广播机制支持 #46

Open
Open
@wanghailu0717

Description

@wanghailu0717

1.张量广播是一个深度学习中常见的操作。普遍显性或者隐性地存在于各种网络中。
1.1 所谓显性是指用户网络中显示调用了相关算子(expand,broadcast等),该操作在内存上真实地在显存上(使用各种方法)拼接生成出了广播后的张量,通常该操作不是原地的。由于显示拼接,具体执行时出现了很多IO操作,造成空间与时间的双重浪费。
1.2 所谓隐性是指部分算子自带张量广播机制(boadcast_add 等),该操作通过逻辑映射关系尽可能地减少了IO以及空间占用,性能提升。但是这一部是将复杂性交给了算子开发者。
2.由于面向DDR的算子的入与出都在DDR上,这显然是一个明显的性能瓶颈。
3.我们期望在系统中添加如下的功能
3.1 前端接口(优先):用户可以使用 Micro+ TileTensor 的方式定义计算逻辑。这里我们可以添加一个强制性的约定——并行度定义,一个复杂任务将会拆解出多个并行度,多个并行的流独立执行,互不干扰。用户确认切分方式,并定义计算流。系统将这些信息下降至最终的cuda/bang/等其他代码。
3.2 Broadcast 支持(基于3.1):我们期望支持三种类型的广播机制
之一,是广播核函数生成,生成独立的广播核函数;
之二,是识别图中双目运算的广播情景,生成广播+运算的核函数;
之三,添加一种隐含的映射机制,将广播操作解析为一种数据读入方式,融合至后续的任一算子内。
4.可能的参考资料
https://github.com/pytorch/pytorch
https://github.com/numpy/numpy
https://github.com/tensorflow/tensorflow

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions