private void progInit() { if (prog == null) { prog = Accelerator.CreateProgram(File.ReadAllText("OpenCL/vector.cl")); kernels["msub"] = Accelerator.CreateKernel("msub", prog); } }
public static ComputeKernel CreateKernel(string name, ComputeProgram prog) { var kern = Cl.CreateKernel(prog.prog, name, out var err); ComputeKernel kernel = new ComputeKernel() { kernel = kern }; return(kernel); }
public static ComputeProgram CreateProgram(params string[] code) { var prog = Cl.CreateProgramWithSource(_context, 1, code, null, out var err); Cl.BuildProgram(prog, 1, new[] { _device }, "", null, IntPtr.Zero); if (Cl.GetProgramBuildInfo(prog, _device, ProgramBuildInfo.Status, out err).CastTo <BuildStatus>() != BuildStatus.Success) { Console.WriteLine("Program Build Failure!"); throw new Exception(); } ComputeProgram program = new ComputeProgram() { prog = prog }; return(program); }
public Matrix(int w, int h) { Width = w; Height = h; data = new float[w * h]; buffer = Accelerator.CreateMemory(w * h * sizeof(float), true, true); dirty = true; if (prog == null) { prog = Accelerator.CreateProgram(File.ReadAllText("OpenCL/matrix.cl")); kernels["matrixMul"] = Accelerator.CreateKernel("matrixMul", prog); kernels["msub"] = Accelerator.CreateKernel("msub", prog); kernels["madd"] = Accelerator.CreateKernel("madd", prog); kernels["vecvecmat_mult"] = Accelerator.CreateKernel("vecvecmat_mult", prog); kernels["trans_multProduct"] = Accelerator.CreateKernel("trans_multProduct", prog); } }