2017-02-27 17 views
0

私は構造体とExecute()メソッドを持つクラスを持っており、cudafyingメソッドは構造体を使用しています。gpuメモリに渡された構造体は未定義です。構造体をCudafyに渡すには?

問題:クーダは言う: ".../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)); 
関連する問題