Skip to content

Commit af77ed2

Browse files
committed
pollish details
1 parent b7e0167 commit af77ed2

File tree

1 file changed

+1
-7
lines changed

1 file changed

+1
-7
lines changed

docs/design/phi/design.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -620,12 +620,6 @@ void Scale(const Context& dev_ctx,
620620

621621
> FAQ:
622622
623-
>- 为什么需要使用模板参数?为什么不和torch一样,没有模板参数?
624-
- 运行时数据类型T和设备Device的选择是在kernel选择时必要的操作,各个框架都是一样的
625-
- torch在写法上避免了用模板实现kernel选择,但实际上采用了全局kernel map查找的选择方式,这种方式的开销是比较重的,一个kernel的执行过程中,可能存在多次kernel map的查找
626-
- 基本流程如下图:
627-
- ![图片](http://bos.bj.bce-internal.sdns.baidu.com/agroup-bos-bj/bj-2aafdb051eaea7120bdf9604eb738029dcd3162a)
628-
- 这种方式存在的性能问题已经被torch自身认识到,所以torch也在做算子库重构,但是积重难返,他们重构也并未对此问题从根本上解决,只是减少了一些redispatch的层数,我们不能一味模仿竞品自身都认为有问题的设计
629623
>- 为什么第一个参数需要是DeviceContext?为什么不能不传?
630624
- phi kernel要求是纯函数形式,即函数内使用的变量均通过参数传入,或者在函数内部创建,不允许在函数内部使用全局单例,为了适配多样的kernel需求,像DeviceContext这种存储上下文信息的参数是必要的
631625
>- 为什么需要两个模板参数?
@@ -1697,7 +1691,7 @@ API和Op都是对算子运行行为的概要描述,本质上只是同一段内
16971691

16981692
推理之前为什么要做**算子增强推全**,就是op的参数太多了,但API的参数很少,这两者本来是介绍一个东西,却差别如此之大,所以需要发动全员,在op的某些参数上标记AsExtra,就声明这个参数可能是多余的。
16991693

1700-
当然我们演变到如此田地,有一定历史原因:
1694+
当然我们演变成现在这样,有一定历史原因:
17011695

17021696
1. Op输入输出参数规范限制差,留的口子太大,可以天马行空地写;
17031697
2. 2.0 API对外层Python API的形态做了大范围规整,但是Op层保持不变,是导致目前同一段描述差异变大的一个主要原因。

0 commit comments

Comments
 (0)