传递给gpu内存的struct未定义。如何将struct传递给Cudafy?

时间:2017-02-27 14:34:32

标签: c# .net gpu cudafy.net

我有一个结构和一个带有Execute()方法的类,一个cudafying方法使用该结构。

问题: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, ...);

1 个答案:

答案 0 :(得分:0)

决定是:

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