Ejemplo n.º 1
0
 private void progInit()
 {
     if (prog == null)
     {
         prog            = Accelerator.CreateProgram(File.ReadAllText("OpenCL/vector.cl"));
         kernels["msub"] = Accelerator.CreateKernel("msub", prog);
     }
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }