我有两个浮点阵列
a = {1, 0, 0, 22, 89, 100};
b = {2, 3, 5, 0, 77, 98};
两者都是单调递增的;两者长度相同;两者内部可能/可能没有0。我试图得到的是一个新的数组,按升序梳理两个数组,但没有0:
c = {1, 2, 3, 5, 22, 77, 89, 98, 100 };
我不知道如何写CUDA代码,除非我做一个串行循环,这是我试图避免的。有什么建议吗?谢谢。
正如Robert指出的,推力为您的需求提供了基本的构建块。
合并铜
#include <iostream>
#include <thrust/remove.h>
#include <thrust/merge.h>
int main()
{
float a[6] = {1, 0, 0, 22, 89, 100};
float b[6] = {2, 3, 5, 0, 77, 98};
float c[12];
thrust::merge(a,a+6,b,b+6,c);
float* newEnd = thrust::remove(c,c+12,0);
thrust::copy(c,newEnd, std::ostream_iterator<float>(std::cout, " "));
}
编译并运行:
nvcc-arch sm_20合并。铜
输出:
12352778998100