2017-02-27 91 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));