Exemple #1
0
        /// <summary>
        /// Loads a compiled kernel into the given OpenCL context as kernel program.
        /// </summary>
        /// <param name="accelerator">The associated accelerator.</param>
        /// <param name="kernel">The source kernel.</param>
        /// <param name="launcher">The launcher method for the given kernel.</param>
        public CLKernel(
            CLAccelerator accelerator,
            CLCompiledKernel kernel,
            MethodInfo launcher)
            : base(accelerator, kernel, launcher)
        {
            var errorCode = LoadKernel(
                accelerator,
                kernel.Name,
                kernel.Source,
                kernel.CVersion,
                out programPtr,
                out kernelPtr,
                out var errorLog);

            if (errorCode != CLError.CL_SUCCESS)
            {
                Trace.WriteLine("Kernel loading failed:");
                if (string.IsNullOrWhiteSpace(errorLog))
                {
                    Trace.WriteLine(">> No error information available");
                }
                else
                {
                    Trace.WriteLine(errorLog);
                }
            }
            CLException.ThrowIfFailed(errorCode);
        }
Exemple #2
0
 internal CLKernel(
     CLAccelerator accelerator,
     CLCompiledKernel kernel,
     MethodInfo launcher)
     : base(accelerator, kernel, launcher)
 {
     CLException.ThrowIfFailed(LoadKernel(
                                   accelerator,
                                   kernel.Source,
                                   out programPtr,
                                   out kernelPtr));
 }