填充后我的Cuda Vector怎么可能是空的?

时间:2017-02-04 19:01:41

标签: c++ cuda

所以我有一大堆Code,它是一个未来统一资产库的插件。该库使用一组三维点填充四面体网格。我从Unity传递分数,一切正常,矢量显然已填满,或者说我的日志文本文件...在写入之后,在我尝试调用四边形方法之前,我检查向量是否为空并且它转它是空的。我不明白。

我从未使用dll通信,所以我有点迷失。 谢谢你的时间。

以下是代码:

extern "C"{
const int deviceIdx     = 0; 
const int seed          = 123456789;
const int pointNum      = 15000;
const Distribution dist = UniformDistribution;

Point3HVec   pointVec; 
GDelOutput   output; 

EXPORT_API void makeInputFromMeshCoords(float x[] , float y[], float z[],int sizeOfArrays){
     CudaSafeCall( cudaSetDevice( deviceIdx ) );
     CudaSafeCall( cudaDeviceReset() );
    std::ofstream StatisticsFile;
    StatisticsFile.open ("E:/documentos/Videojuegos/Cuarto_curso/TFG/SimplestPluginExample/Unity Project Plugin/Assets/Logs/CoordinatesUnity.txt"); 

    for(int i =0; i<sizeOfArrays;i++)
     {            

          Point3 point = {x[i],y[i],z[i]};
          pointVec.push_back(point);
          StatisticsFile <<"("<<pointVec[i]._p[0]<<","<<pointVec[i]._p[1]<<","<<pointVec[i]._p[2]<<")"<< std::endl;     
          StatisticsFile<<pointVec.size()<<std::endl; 
    }
    StatisticsFile<<"END OF LOOP; SIZE: "<<pointVec.size()<<"Empty " << (pointVec.empty()?"it is":"it is not")<<std::endl; 
    StatisticsFile.close();

    assert(pointVec.empty());
    GpuDel triangulator; 
    triangulator.compute( pointVec, &output );
}

}

以下是库类型定义:

typedef thrust::host_vector< Point3 >    Point3HVec;

1 个答案:

答案 0 :(得分:3)

assert的参数是一个在正确操作下断言为真的表达式。你断言向量是空的,它失败了,因为它实际上是填充的。移除assert或将其更改为assert(!pointVec.empty());