我有一个双精度向量x[]
。我有另一个布尔值xMask[]
的长向量。他们有相同的尺寸。我想使用Thrust来计算x[]
,但仅适用于xMask[]
为真的那些元素。例如:
x = [1, 2, 3, 4, 5, 6, 7, 8]
xMask = [true, false, true, false, true, false, true, false]
x[]
与xMask[]
的Maximum-Reduce是7(不是8,因为xMask[]
的值是false
)。
我可以在Thrust中轻松做到这一点吗?
1条答案
按热度按时间am46iovg1#
到目前为止,在Thrust中还没有一个名为
reduce_if
的函数,这将是您正在搜索的。对于给定的函数,有多种方法可以做到这一点,哪种方法最适合你的问题可能取决于掩码中true
s与false
s的比例以及它们的分布方式。也就是说,实现这一点的规范方法是将
transform_reduce
与zip_iterator
一起使用:要编译这个,
nvcc
需要--extended-lambda
标志。