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=())[源代码]#
用户定义的归约内核。
此类可用于定义带或不带广播的缩减内核。
内核在调用
__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__()#
编译并调用归约内核。
只有在内核未被缓存的情况下,编译才会运行。请注意,具有不同参数数据类型、维度或轴的内核是不兼容的。这意味着单个 ReductionKernel 对象可能会被编译成多个内核二进制文件。
- 参数:
args – 内核的参数。
out (cupy.ndarray) – 输出数组。如果
args不包含输出数组,则只能指定此项。keepdims (bool) – 如果
True,指定的轴将保持为长度为一的轴。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
- 类型:
身份
- in_params#
- map_expr#
- name#
- nargs#
- nin#
- nout#
- options#
- out_params#
- params#
- post_map_expr#
- preamble#
- reduce_dims#
- reduce_expr#
- reduce_type#