作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用推力库的partition_copy函数对数组进行分区。
我已经看到了传递指针的示例,但是我需要知道每个分区中有多少个元素。
我尝试过的是将设备 vector 作为OutputIterator参数传递,如下所示:
#include <thrust/device_vector.h>
#include <thrust/device_ptr.h>
#include <thrust/partition.h>
struct is_even {
__host__ __device__ bool operator()(const int &x) {
return (x % 2) == 0;
}
};
int N;
int *d_data;
cudaMalloc(&d_data, N*sizeof(int));
//... Some data is put in the d_data array
thrust::device_ptr<int> dptr_data(d_data);
thrust::device_vector<int> out_true(N);
thrust::device_vector<int> out_false(N);
thrust::partition_copy(dptr_data, dptr_data + N, out_true, out_false, is_even());
error: class "thrust::iterator_system<thrust::device_vector<int, thrust::device_allocator<int>>>" has no member "type"
detected during instantiation of "thrust::pair<OutputIterator1, OutputIterator2> thrust::partition_copy(InputIterator, InputIterator, OutputIterator1, OutputIterator2, Predicate) [with InputIterator=thrust::device_ptr<int>, OutputIterator1=thrust::device_vector<int, thrust::device_allocator<int>>, OutputIterator2=thrust::device_vector<int, thrust::device_allocator<int>>, Predicate=leq]"
最佳答案
您的编译错误是由于您在此处传递 vector 而不是迭代器而导致的:
thrust::partition_copy(dptr_data, dptr_data + N, out_true, out_false, is_even());
^^^^^^^^^^^^^^^^^^^
thrust::partition_copy(dptr_data, dptr_data + N, out_true.begin(), out_false.begin(), is_even());
Returns A pair p such that p.first is the end of the output range beginning at out_true and p.second is the end of the output range beginning at out_false.
auto r = thrust::partition_copy(dptr_data, dptr_data + N, out_true.begin(), out_false.begin(), is_even());
int length_true = r.first - out_true.begin();
int length_false = r.second - out_false.begin();
关于c++ - 如何知道推力::partition_copy的结果中有多少个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60207167/
我正在尝试为我的类(class)实现通用过滤模型 AlignedRead .这个想法是,在程序开始时,用户选项确定应将哪个系列的过滤器应用于每个 AlignedRead。 .困难在于一些过滤器是“基于
《C++ partition()和stable_partition()函数》一节中,已经详细介绍了 partition() 和 stable_partition() 函数的功能和用法。不知道读者是否发
我正在尝试将 vector 分成偶数和奇数。我调整了两个输出容器的大小以确保它们足够大 - 但 partition_copy 对我来说仍然会导致 SIGBART,即使它在我使用 back_insert
我是一名优秀的程序员,十分优秀!