2017-02-27 56 views
0

我有一个struct和Execute()方法的类,并且一个Cudafying方法使用了这个结构体。传递给gpu内存的结构是未定义的。如何将结构传递给Cudafy?

问题:Cuda的说: “.../CUDAFYSOURCETEMP.cu(3):错误:标识符 ”PointGPU“ 未定义”

[Cudafy] 
public struct PointGPU 
     { 
      public double x; 
      public double y; 
      public double z; 

     public PointGPU(double xVal, double yVal, double zVal) 
     { 
      x = xVal; 
      y = yVal; 
      z = zVal; 
     } 
    } 

class MarchingCubesOnGPU 
{ 
    CudafyModule km = CudafyTranslator.Cudafy(); 
    GPGPU gpu = CudafyHost.GetDevice(); 

    private static PointGPU[] pointsGpu = new PointGPU[8]; 

    public void Execute() 
    { 
     gpu.LoadModule(km); 

     PointGPU[] dev_points = gpu.CopyToDevice(pointsGpu); 

     gpu.Launch().PolygoniseOnGpu(dev_points, ...); 

     ... 
    } 

    [Cudafy] 
    public static void PolygoniseOnGpu(PointGPU[] p, ...) 
    { 
     ... 
    } 

    public List<Triangle> setPolygoniseParameters(...) 
    { 
     pointsGpu = ... 
    } 
} 

这条线在CudafySourceTemp.cu是

extern "C" __global__ void PolygoniseOnGpu(PointGPU* p, ...); 

回答

0

决定是:

CudafyModule km = CudafyTranslator.Cudafy(typeof(PointGPU));