2017-02-27 1 views
0

구조체와 Execute() 메서드가있는 클래스가 있고 cudafying 메서드는 구조체를 사용합니다.GPP 메모리에 전달 된 구조체가 정의되지 않았습니다. 구조체를 Cudafy에 전달하는 방법?

PROBLEM는 : CUDA는 말한다 : ".../CUDAFYSOURCETEMP.cu (3) 오류 : 식별자"는 PointGPU CudafySourceTemp.cu 이러한 라인

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

[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 = ... 
    } 
} 

"정의되지"

답변

0

결정은 다음과 같습니다.

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