我有两个推力装置矢量,假设是,a,和,B,我想找到向量 a 的索引,其中它小于/大于向量 B 的成对分量($a_{ij}>B_{ij}$)。
我找到了以下关于如何使用标量的链接:
- Equivalent of Matlab's find command in CUDA
- Detect values greater than threshold in an array and store result in a binary(1/0) array using thrust
- Find the indices and values that larger than a threshold in CUDA
我的主要问题是transform只需要一个向量作为输入,而对于另一种方法,我不确定如何进行成对比较。
例如:a = {1,3,5,6,9}和 B = {2,1,4,7,8}。我正在寻找指数,其中 a_ij >B_ij。
因此,输出应该是{1,2,4},索引为0,因为 a 在这些位置比 b 的成对分量大。
1条答案
按热度按时间ckocjqey1#
这至少部分地是流压缩问题。Thrust提供流压缩算法,如
copy_if
。Thrust确实有一个
transform
变体,它接受两个向量作为输入。你也可以用zip_iterator
做类似的事情,作为任何推力算法的输入。我认为最紧凑的方法是同时使用
copy_if
和zip迭代器和计数迭代器。有一个copy_if
变体可以接受一个模板数组,它可以很好地满足我们这里的目的。下面是一个示例: