在哪里@丘比保险丝丘比python decorator有文档吗?

2024-09-26 22:50:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过一些演示@丘比保险丝这对于使用Numpy语法的GPU编程来说简直是个奇迹。cupy的主要问题是,像添加这样的每个操作都是一个完整的内核启动,然后是无内核的。例如,一系列的加法和乘法会给内核带来很多痛苦。( 这就是为什么使用numba@jit会更好)

在@丘比保险丝()似乎通过将函数内部的所有操作合并到单个内核中来解决此问题,从而显著降低了启动和免费成本。在

但是除了演示和源代码之外,我找不到任何关于这个的文档丘比。融合班级。在

我的问题包括:

  1. 威尔丘比保险丝在decorator应用到的函数内部积极地内联调用的任何python函数,从而将它们滚动到同一个内核中?在

这个增强日志暗示了这一点,但并没有说明组合函数是否在同一个内核中,或者只是在调用的函数也被修饰时才允许。 https://github.com/cupy/cupy/pull/1350

  1. 如果是这样,我是否需要用@fuse装饰这些函数。我认为这可能会损害内联而不是帮助它,因为它可能会将这些函数呈现为不可熔接(可能是非python)形式。

  2. 如果没有,我可以通过首先用装饰函数来获得自动内联吗@麻木.jit然后用保险丝装饰。或者@jit会再次以不可熔接的形式呈现生成的python?

  3. 保险丝怎么断了?有哪些陷阱?@fuse是实验性的,不太可能维护?

参考文献:

https://gist.github.com/unnonouno/877f314870d1e3a2f3f45d84de78d56c

https://www.slideshare.net/pfi/automatically-fusing-functions-on-cupy

https://github.com/cupy/cupy/blob/master/cupy/core/fusion.py

https://docs-cupy.chainer.org/en/stable/overview.html

https://github.com/cupy/cupy/blob/master/cupy/manipulation/tiling.py


Tags: 函数pyhttpsnumpygithubmastercom装饰
1条回答
网友
1楼 · 发布于 2024-09-26 22:50:42

一些)答案:我已经找到了这些问题的答案

questions:

1.  fusing kernels is such a huge advance I don't understand when I would ever not want to use @fuse.  isn't it always better? When is it a bad idea?

答:Fuse还不支持很多有用的操作。例如,z=丘比。艾比喜欢(x) 不起作用,也不适用于全局变量。因此,它不能普遍适用。在

^{pr2}$

答:看看计时和nvvm标记,它看起来像是在拉入子例程并将它们融合到内核中。因此,将事物划分为子例程而不是单片代码将与fuse一起工作。在

2.  I see that a bug fix in the release notes says that it can now handle calling other functions decorated with @fuse.  But this does not say if their kernels are fused or remain separate.

答:看一下NVVM的输出,它们似乎是连接在一起的。很难说是否有一些剩余的开销,但是计时并没有显示出明显的开销,表明两个独立的内核。关键的是它现在起作用了。从cupy 4.1开始,您不能从融合函数调用融合函数,因为返回类型是错误的。但从5.1开始你就可以了。但是您不需要修饰这些函数。不管你做或不做,它都会起作用。在

4. Why isn't it documented?

ANSWWR:它似乎有一些缺陷和一些不完整的功能。代码还建议API,因为它可能会更改。在

然而,这基本上是一个奇迹的功能,当它可以使用,很容易提高速度一个数量级的中小规模阵列。所以即使是这个alpha版本也能被记录下来,那就太好了。在

相关问题 更多 >

    热门问题