cupy.ReductionKernel#

class cupy.ReductionKernel(unicode in_params, unicode out_params, map_expr, reduce_expr, post_map_expr, identity, name=u'reduce_kernel', reduce_type=None, reduce_dims=True, preamble=u'', options=())[source]#

用户定义的归约核函数。

此类可用于定义带或不带广播功能的归约核函数。

核函数在调用其__call__()方法时编译,并为每个设备缓存。编译后的二进制文件也会缓存到$HOME/.cupy/kernel_cache/目录下的一个哈希文件名的文件中。其他进程可以重用缓存的二进制文件。

参数:
  • in_params (str) – 输入参数列表。

  • out_params (str) – 输出参数列表。

  • map_expr (str) – 输入值的映射表达式。

  • reduce_expr (str) – 归约表达式。

  • post_map_expr (str) – 归约值的映射表达式。

  • identity (str) – 用于开始归约的恒等值。

  • name (str) – 核函数名称。应设置此名称以提高性能分析的可读性。

  • reduce_type (str) – 用于归约的值的类型。此类型用于存储特殊变量a

  • reduce_dims (bool) – 如果为True,则输入数组将无复制地重塑为更小的维度以提高效率。

  • preamble (str) – 插入到cu文件顶部的 CUDA-C/C++ 代码片段。

  • options (tuple of str) – 其他编译选项。

方法

__call__()#

编译并调用归约核函数。

仅当核函数未缓存时才进行编译。请注意,参数 dtype、ndim 或 axis 不同的核函数不兼容。这意味着单个 ReductionKernel 对象可能会被编译成多个核函数二进制文件。

参数:
  • args – 核函数的参数。

  • out (cupy.ndarray) – 输出数组。仅当args不包含输出数组时才能指定此参数。

  • axis (int or tuple of ints) – 执行归约操作的轴。

  • keepdims (bool) – 如果为True,指定的轴将保留为长度为1的轴。

  • stream (cupy.cuda.Stream, optional) – 启动核函数所用的 CUDA 流。如果未指定,则使用当前流。

返回:

根据__init__方法的out_params参数返回数组。

__eq__(value, /)#

返回 self==value。

__ne__(value, /)#

返回 self!=value。

__lt__(value, /)#

返回 self<value。

__le__(value, /)#

返回 self<=value。

__gt__(value, /)#

返回 self>value。

__ge__(value, /)#

返回 self>=value。

属性

cached_code#

返回 next(iter(self.cached_codes.values()))

此属性方法仅用于调试目的。不保证返回值保持向后兼容性。

cached_codes#

返回一个字典,其中键是输入类型,值是代码。

此属性方法仅用于调试目的。不保证返回值保持向后兼容性。

identity#

unicode

类型:

identity

in_params#
map_expr#
name#
nargs#
nin#
nout#
options#
out_params#
params#
post_map_expr#
preamble#
reduce_dims#
reduce_expr#
reduce_type#