不允许使用不完整类型的推力copy_if
thrust copy_if: incomplete type is not allowed
我正在尝试使用thrust::copy_if来压缩数组,谓词检查正数:
头文件:file.h:
struct is_positive
{
__host__ __device__
bool operator()(const int x)
{
return (x >= 0);
}
};
和file.cu
#include "../headers/file.h"
#include <thrust/device_ptr.h>
#include <thrust/device_vector.h>
#include <thrust/copy.h>
void compact(int* d_inputArray, int* d_outputArray, const int size)
{
thrust::device_ptr<int> t_inputArray(d_inputArray);
thrust::device_ptr<int> t_outputArray(d_outputArray);
thrust::copy_if(t_inputArray, t_inputArray + size, d_outputArray, is_positive());
}
我得到的错误信息以:
开头/usr/地方/cuda/include/推力/系统/细节/一般/memory.inl (40):错误:不允许使用不完整的类型
完整的错误信息
如果我只是使用copy而不是copy_if,代码可以很好地编译,所以我排除了所有内容,除了谓词is_positive()。
提前感谢您对如何调试此类推力错误的任何帮助或一般提示。
e:我使用Cuda 7.5
在我看来你只是打错了。:
thrust::copy_if(t_inputArray, t_inputArray + size, d_outputArray, is_positive());
^
应该是这样的:
thrust::copy_if(t_inputArray, t_inputArray + size, t_outputArray, is_positive());
您将原始指针与适当的推力设备指针混合在一起,这会导致问题。
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 如何将enable-if与模板参数和参数包一起使用
- 无论条件是否为true,if总是在c++中执行
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- std::filesystem::copy throws filesystem_error
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- if数组上的随机数
- 将按位if条件转换为普通if条件
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 使用if-else将数字转换为单词
- 为什么简单的算术减法在"if"条件下不起作用?
- 以在Qt中的IF语句中设置时间延迟