转换二元操作#
- group transformation_binaryops
类型定义
-
template<typename L, typename R>
using binary_op_common_type_t = typename binary_op_common_type<L, R>::类型# 二元操作通用类型助手。
枚举
-
enum class binary_operator : int32_t#
可以对数据执行的二进制操作类型。
值:
-
enumerator ADD#
运算符 +
-
enumerator SUB#
操作符 -
-
enumerator MUL#
操作符 *
-
enumerator DIV#
运算符 / 使用 lhs 和 rhs 的通用类型
-
enumerator TRUE_DIV#
在将类型提升为浮点数后的运算符 /
-
enumerator FLOOR_DIV#
operator // 如果两个参数都是整数,则向负无穷方向取整的整数除法;对于浮点类型,使用地板除法(对于混合整数/浮点参数,使用C++类型提升)。如果需要不同的提升语义,调用者有责任在调用此函数之前手动提升。
-
enumerator MOD#
操作符 %
-
enumerator PMOD#
正模运算符 如果余数为负数,则返回 (余数 + 除数) % 除数,否则返回 (被除数 % 除数)
-
enumerator PYMOD#
运算符 % 但遵循 Python 的负数符号规则
-
enumerator POW#
lhs ^ rhs
-
enumerator INT_POW#
int ^ int,用于避免浮点数精度损失。对于负指数返回0。
-
enumerator LOG_BASE#
以底数为基的对数
-
enumerator ATAN2#
双参数反正切函数
-
enumerator SHIFT_LEFT#
运算符 <<
-
enumerator SHIFT_RIGHT#
操作符 >>
-
enumerator SHIFT_RIGHT_UNSIGNED#
operator >>> (来自 Java) 逻辑右移。在移位之前转换为无符号值。
-
enumerator BITWISE_AND#
运算符 &
-
enumerator BITWISE_OR#
操作符 |
-
enumerator BITWISE_XOR#
运算符 ^
-
enumerator LOGICAL_AND#
运算符 &&
-
enumerator LOGICAL_OR#
运算符 ||
-
enumerator EQUAL#
操作符 ==
-
enumerator NOT_EQUAL#
运算符 !=
-
enumerator LESS#
操作符 <
-
enumerator GREATER#
操作符 >
-
enumerator LESS_EQUAL#
运算符 <=
-
enumerator GREATER_EQUAL#
操作符 >=
-
enumerator NULL_EQUALS#
当两个操作数都为null时返回true;当一个为null时返回false;当两个都不为null时返回相等的结果
-
enumerator NULL_NOT_EQUALS#
当两个操作数都为null时返回false;当一个为null时返回true;当两个都不为null时返回不等的结果
-
enumerator NULL_MAX#
当两个操作数都非空时返回最大值;当其中一个为空时返回非空操作数;当两者都为空时返回无效值
-
enumerator NULL_MIN#
当两个操作数都不为空时返回最小值;当其中一个为空时返回非空操作数;当两者都为空时返回无效值
-
enumerator GENERIC_BINARY#
使用输入的ptx代码生成的通用二元运算符
-
enumerator NULL_LOGICAL_AND#
运算符 && 在 Spark 中的规则:(null, null) 为 null,(null, true) 为 null,(null, false) 为 false,且 (valid, valid) == LOGICAL_AND(valid, valid)
-
enumerator NULL_LOGICAL_OR#
操作符 || 在Spark中的规则:(null, null) 是 null, (null, true) 是 true, (null, false) 是 null, 并且 (valid, valid) == LOGICAL_OR(valid, valid)
-
enumerator INVALID_BINARY#
无效操作
-
enumerator ADD#
函数
-
std::unique_ptr<column> binary_operation(scalar const &lhs, column_view const &rhs, binary_operator op, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
在标量和列之间执行二进制操作。
输出包含所有
0 <= i < rhs.size()的op(lhs, rhs[i])结果。标量是左操作数,列元素是右操作数。在非交换二元操作的情况下,这种区别是显著的。无论操作符是什么,输出值的有效性是两个操作数有效性的逻辑与,除了NullMin和NullMax(逻辑或)。
- Parameters:
lhs – 左侧操作数标量
rhs – 右侧操作数列
op – 二元运算符
output_type – 输出列所需的数据类型
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回列的设备内存的设备内存资源
- Throws:
cudf::logic_error – 如果
output_type的数据类型不是固定宽度cudf::logic_error – 如果
output_type的数据类型不是布尔型,用于比较和逻辑操作。cudf::data_type_error – 如果操作不支持
lhs和rhs的类型
- Returns:
输出列的类型为
output_type,包含二元操作的结果
-
std::unique_ptr<column> binary_operation(column_view const &lhs, scalar const &rhs, binary_operator op, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
在列和标量之间执行二进制操作。
输出包含所有
0 <= i < lhs.size()的op(lhs[i], rhs)结果。列元素是左操作数,标量是右操作数。在非交换二元操作的情况下,这种区分是重要的。无论操作符是什么,输出值的有效性是两个操作数有效性的逻辑与,除了NullMin和NullMax(逻辑或)。
- Parameters:
lhs – 左操作数列
rhs – 右侧操作数标量
op – 二元运算符
output_type – 输出列所需的数据类型
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回列的设备内存的设备内存资源
- Throws:
cudf::logic_error – 如果
output_type的数据类型不是固定宽度cudf::logic_error – 如果
output_type的数据类型不是布尔型,用于比较和逻辑操作。cudf::data_type_error – 如果操作不支持
lhs和rhs的类型
- Returns:
输出列的类型为
output_type,包含二元操作的结果
-
std::unique_ptr<column> binary_operation(column_view const &lhs, column_view const &rhs, binary_operator op, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
在两列之间执行二进制操作。
输出包含所有
0 <= i < lhs.size()的op(lhs[i], rhs[i])结果无论操作符是什么,输出值的有效性是两个操作数有效性的逻辑与,除了NullMin和NullMax(逻辑或)。
- Parameters:
lhs – 左操作数列
rhs – 右侧操作数列
op – 二元运算符
output_type – 输出列所需的数据类型
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回列的设备内存的设备内存资源
- Throws:
cudf::logic_error – 如果
lhs和rhs的大小不同cudf::logic_error – 如果
output_type的数据类型不是布尔型,用于比较和逻辑操作。cudf::logic_error – 如果
output_type的数据类型不是固定宽度cudf::data_type_error – 如果操作不支持
lhs和rhs的类型
- Returns:
输出列的类型为
output_type,包含二元操作的结果
-
std::unique_ptr<column> binary_operation(column_view const &lhs, column_view const &rhs, std::string const &ptx, data_type output_type, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
使用用户定义的PTX函数在两列之间执行二进制操作。
输出包含所有
0 <= i < lhs.size()的op(lhs[i], rhs[i])结果无论操作符是什么,输出值的有效性是两个操作数有效性的逻辑与
- Parameters:
lhs – 左操作数列
rhs – 右侧操作数列
ptx – 包含二进制函数PTX的字符串
output_type – 输出列所需的数据类型。假设output_type与PTX代码中函数的输出数据类型兼容。
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回列的设备内存的设备内存资源
- Throws:
cudf::logic_error – 如果
lhs和rhs的大小不同cudf::logic_error – 如果
lhs和rhs的数据类型不是数值类型cudf::logic_error – 如果
output_type的数据类型不是数值类型
- Returns:
输出列的类型为
output_type,包含二元操作的结果
-
int32_t binary_operation_fixed_point_scale(binary_operator op, int32_t left_scale, int32_t right_scale)#
计算基于给定二进制运算符
op的fixed_point数字的scale- Parameters:
op – 用于两个
fixed_point数字的binary_operatorleft_scale – 左侧
fixed_point数字的比例right_scale – 右侧
fixed_point数字的比例
- Returns:
计算得到的
fixed_point数的scale
-
cudf::data_type binary_operation_fixed_point_output_type(binary_operator op, cudf::data_type const &lhs, cudf::data_type const &rhs)#
根据给定的二元运算符
op计算data_type用于fixed_point数字- Parameters:
op – 用于两个
fixed_point数字的binary_operatorlhs –
cudf::data_type左侧fixed_point数字的数据类型rhs –
cudf::data_type右侧的fixed_point数字
- Returns:
计算得到的
cudf::data_type的fixed_point数字
变量
-
template<typename L, typename R, typename = void>
struct binary_op_common_type# - #include <binaryop.hpp>
二元操作通用类型默认值。
-
template<typename L, typename R>
struct binary_op_common_type<L, R, std::enable_if_t<has_common_type_v<L, R>>># - #include <binaryop.hpp>
二元操作通用类型特化。
-
template<typename L, typename R>