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++ 代码片段。
方法
- __call__()#
编译并调用归约核函数。
仅当核函数未缓存时才进行编译。请注意,参数 dtype、ndim 或 axis 不同的核函数不兼容。这意味着单个 ReductionKernel 对象可能会被编译成多个核函数二进制文件。
- 参数:
args – 核函数的参数。
out (cupy.ndarray) – 输出数组。仅当
args
不包含输出数组时才能指定此参数。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#