Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenCLTemplate资源不足_C#_Opencl_Opentk_Cloo - Fatal编程技术网

C# OpenCLTemplate资源不足

C# OpenCLTemplate资源不足,c#,opencl,opentk,cloo,C#,Opencl,Opentk,Cloo,我正在尝试使用raycast编写一个游戏,我想将raycast计算传输到gpu,但由于某些原因,它会给出一个outofresources错误 内核应该在其中执行的函数 public unsafe void GpGPU_Ray(float px, float py, float[] angle, out float[] dists, out float[] offsets) { OpenCLTemplate.CLCalc.Program.Variable varPx

我正在尝试使用raycast编写一个游戏,我想将raycast计算传输到gpu,但由于某些原因,它会给出一个outofresources错误

内核应该在其中执行的函数

    public unsafe void GpGPU_Ray(float px, float py, float[] angle, out float[] dists, out float[] offsets)
    {
        OpenCLTemplate.CLCalc.Program.Variable varPx = new OpenCLTemplate.CLCalc.Program.Variable(new float[1] { px });
        OpenCLTemplate.CLCalc.Program.Variable varPy = new OpenCLTemplate.CLCalc.Program.Variable(new float[1] { py });
        
        OpenCLTemplate.CLCalc.Program.Variable varAngle = new OpenCLTemplate.CLCalc.Program.Variable(angle);
        OpenCLTemplate.CLCalc.Program.Variable varMap = new OpenCLTemplate.CLCalc.Program.Variable(NumberMap);
        OpenCLTemplate.CLCalc.Program.Variable varWidth = new OpenCLTemplate.CLCalc.Program.Variable(new float[1] { Map.Width });
        OpenCLTemplate.CLCalc.Program.Variable varDists = new OpenCLTemplate.CLCalc.Program.Variable(new float[angle.Length]);
        OpenCLTemplate.CLCalc.Program.Variable varOffsets = new OpenCLTemplate.CLCalc.Program.Variable(new float[angle.Length]);

        OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varPx, varPy, varAngle, varMap, varWidth, varDists, varOffsets};
        var MaxWGSZ = OpenCLTemplate.CLCalc.CLDevices[0].MaxWorkGroupSize;


        int[] workers = new int[1] { angle.Length };

        RayCastKernel.Execute(args, workers);
        //OpenCLTemplate.CLCalc.Program.Sync();

        varPx.Dispose();
        varPy.Dispose();
        varAngle.Dispose();
        varMap.Dispose();
        varWidth.Dispose();


        dists = new float[angle.Length];
        offsets = new float[angle.Length];

        //At this moment an exception occurs
        varDists.ReadFromDeviceTo(dists);
        varOffsets.ReadFromDeviceTo(offsets);

        varDists.Dispose();
        varOffsets.Dispose();

        RayCastKernel.Dispose();
    }