Cuda 推力:设备参考can';不能与printf一起使用吗?

Cuda 推力:设备参考can';不能与printf一起使用吗?,cuda,printf,nvidia,thrust,Cuda,Printf,Nvidia,Thrust,我使用推力配分函数将数组分为奇数和偶数。但是,当我尝试显示设备向量时,它会显示随机值。请告诉我错误在哪里。我想我做的每件事都是对的 #include<stdio.h> #include <thrust/host_vector.h> #include <thrust/device_vector.h> #include<thrust/partition.h> struct is_even { //const int toCom;

我使用推力配分函数将数组分为奇数和偶数。但是,当我尝试显示设备向量时,它会显示随机值。请告诉我错误在哪里。我想我做的每件事都是对的

#include<stdio.h>
#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include<thrust/partition.h>

struct is_even
  {
      //const int toCom;
      //is_even(int val):toCom(val){}
    __device__
    bool operator()(const int &x)
    {
      return x%2;
    }
  };

void main(){


    thrust::host_vector<int> H(6);
    for(int i =0 ; i<H.size();i++){
        H[i] = i+1;
    }
    thrust::device_vector<int> D = H;
    thrust::partition(D.begin(),D.end(),is_even());
    for(int i =0 ;i< D.size();i++){
        printf("%d,",D[i]);
    }


    getchar();

}
#包括
#包括
#包括
#包括
结构是偶数
{
//const int toCom;
//是偶数(int-val):toCom(val){}
__装置__
布尔运算符()(常量int&x)
{
返回x%2;
}
};
void main(){
推力:主_矢量H(6);

对于(int i=0;i您不能通过
printf
的省略号发送
推力::设备_参考
(即
D[i]
)的结果,因为它不是POD类型。请参阅。您的代码将为此产生编译器警告

先转换到
int

for(int i = 0; i < D.size(); ++i)
{
  printf("%d,", (int) D[i]);
}
for(int i=0;i
自从移动到GitHub:。