public void Run(ComputeContext context, TextWriter log) { try { ComputeProgram program = new ComputeProgram(context, kernelSources); program.Build(null, null, null, IntPtr.Zero); log.WriteLine("Program successfully built."); ICollection<ComputeKernel> kernels = program.CreateAllKernels(); log.WriteLine("Kernels successfully created."); // cleanup kernels foreach (ComputeKernel kernel in kernels) { kernel.Dispose(); } kernels.Clear(); // cleanup program program.Dispose(); } catch (Exception e) { log.WriteLine(e.ToString()); } }
public KernelManager(GraphicsInterop interop, InputManager input, string source) { _input = input; var localSizeSingle = (long)Math.Sqrt(interop.Device.MaxWorkGroupSize); _localSize = new[] { localSizeSingle, localSizeSingle }; //_localSize = new[] { interop.Device.MaxWorkGroupSize, 1 }; _program = new ComputeProgram(interop.Context, source); try { _program.Build(new[] { interop.Device }, "", null, IntPtr.Zero); } catch (InvalidBinaryComputeException) { Console.WriteLine(_program.GetBuildLog(interop.Device)); return; } catch (BuildProgramFailureComputeException) { Console.WriteLine(_program.GetBuildLog(interop.Device)); return; } Console.WriteLine(_program.GetBuildLog(interop.Device)); _kernels = _program.CreateAllKernels().ToArray(); }
public void Run(ComputeContext context, TextWriter log) { try { ComputeProgram program = new ComputeProgram(context, kernelSources); program.Build(null, null, null, IntPtr.Zero); log.WriteLine("Program successfully built."); program.CreateAllKernels(); log.WriteLine("Kernels successfully created."); } catch (Exception e) { log.WriteLine(e.ToString()); } }
protected override void RunInternal() { ComputeProgram program = new ComputeProgram(context, new string[] { kernelSources }); program.Build(null, null, notify, IntPtr.Zero); Console.WriteLine("Program successfully built."); List<ComputeKernel> kernels = new List<ComputeKernel>(program.CreateAllKernels()); Console.WriteLine("Kernels successfully created."); }