Ejemplo n.º 1
0
        private void init(IPartitioning p, cl_program program)
        {
            clscale     = cl.CreateKernel(program, "scale");
            clacc       = cl.CreateKernel(program, "acc");
            clmew       = cl.CreateKernel(program, "mew");
            cldnrm2     = cl.CreateKernel(program, "dnrm2");
            clinnerprod = cl.CreateKernel(program, "innerprod");

            size       = p.LocalLength;
            globalsize = size;
            int m = globalsize % localsize;

            if (m > 0)
            {
                globalsize += localsize - m;
            }

            globalsizehalf = globalsize / 2;
            m = globalsizehalf % localsize;
            if (m > 0)
            {
                globalsizehalf += localsize - m;
            }

            groups = globalsizehalf / localsize;
        }
Ejemplo n.º 2
0
 internal static extern cl_int clBuildProgram(
     cl_program program,
     cl_uint num_devices,
     [In] cl_device_id[] device_list,
     String options,
     ProgramNotify pfn_notify,
     IntPtr user_data);
Ejemplo n.º 3
0
        /// <summary>
        /// Create OpenCL device
        /// </summary>
        /// <param name="clEnv">OpenCL environment</param>
        public clDevice(clEnvironment clEnv)
        {
            env = clEnv;

            cq            = cl.CreateCommandQueue(env.context, env.device);
            vectorProgram = loadProgram(clVectorSource.source);
            matrixProgram = loadProgram(clMatrixSource.source);
        }
Ejemplo n.º 4
0
        private cl_program loadProgram(string[] src)
        {
            cl_program program = cl.CreateProgramWithSource(env.context, src);

            try
            {
                cl.BuildProgram(program);
            }
            catch (ApplicationException e)
            {
                cl_program_build_info_return info = cl.GetProgramBuildInfo(program, env.device);
                Console.WriteLine(info.status);
                Console.WriteLine(info.log);
                throw e;
            }
            return(program);
        }
Ejemplo n.º 5
0
 internal static extern ErrorCode clCreateKernelsInProgram(
     cl_program program,
     cl_uint num_kernels,
     [Out][MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] cl_kernel[] kernels,
     out cl_uint num_kernels_ret);
Ejemplo n.º 6
0
 internal static extern cl_kernel clCreateKernel(cl_program program, String kernel_name, out ErrorCode errcode_ret);
Ejemplo n.º 7
0
 internal static extern cl_int clGetProgramBuildInfo(cl_program program, cl_device_id device, cl_program_build_info param_name, IntPtr param_value_size, void *param_value, out IntPtr param_value_size_ret);
Ejemplo n.º 8
0
 internal static extern cl_int clGetProgramInfo(cl_program program, cl_program_info param_name, IntPtr param_value_size, void *param_value, out IntPtr param_value_size_ret);
Ejemplo n.º 9
0
 internal static extern cl_int clReleaseProgram(cl_program program);
Ejemplo n.º 10
0
 internal static extern cl_int clRetainProgram(cl_program program);