Beispiel #1
0
 public extern static OpenCLErrorCode GetKernelWorkGroupInfo(
     CLKernelHandle kernel,
     CLDeviceHandle device,
     OpenCLKernelWorkGroupInfo param_name,
     IntPtr param_value_size,
     IntPtr param_value,
     out IntPtr param_value_size_ret);
Beispiel #2
0
 public extern static OpenCLErrorCode EnqueueNDRangeKernel(
     CLCommandQueueHandle command_queue,
     CLKernelHandle kernel,
     Int32 work_dim,
     [MarshalAs(UnmanagedType.LPArray)] IntPtr[] global_work_offset,
     [MarshalAs(UnmanagedType.LPArray)] IntPtr[] global_work_size,
     [MarshalAs(UnmanagedType.LPArray)] IntPtr[] local_work_size,
     Int32 num_events_in_wait_list,
     [MarshalAs(UnmanagedType.LPArray)] CLEventHandle[] event_wait_list,
     [Out, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] CLEventHandle[] new_event);
Beispiel #3
0
 public extern static OpenCLErrorCode EnqueueTask(
     CLCommandQueueHandle command_queue,
     CLKernelHandle kernel,
     Int32 num_events_in_wait_list,
     [MarshalAs(UnmanagedType.LPArray)] CLEventHandle[] event_wait_list,
     [Out, MarshalAs(UnmanagedType.LPArray, SizeConst=1)] CLEventHandle[] new_event);
Beispiel #4
0
 public extern static OpenCLErrorCode EnqueueNDRangeKernel(
     CLCommandQueueHandle command_queue,
     CLKernelHandle kernel,
     Int32 work_dim,
     [MarshalAs(UnmanagedType.LPArray)] IntPtr[] global_work_offset,
     [MarshalAs(UnmanagedType.LPArray)] IntPtr[] global_work_size,
     [MarshalAs(UnmanagedType.LPArray)] IntPtr[] local_work_size,
     Int32 num_events_in_wait_list,
     [MarshalAs(UnmanagedType.LPArray)] CLEventHandle[] event_wait_list,
     [Out, MarshalAs(UnmanagedType.LPArray, SizeConst=1)] CLEventHandle[] new_event);
Beispiel #5
0
 public extern static OpenCLErrorCode GetKernelWorkGroupInfo(
     CLKernelHandle kernel,
     CLDeviceHandle device,
     OpenCLKernelWorkGroupInfo param_name,
     IntPtr param_value_size,
     IntPtr param_value,
     out IntPtr param_value_size_ret);
Beispiel #6
0
 public extern static OpenCLErrorCode GetKernelInfo(
     CLKernelHandle kernel,
     OpenCLKernelInfo param_name,
     IntPtr param_value_size,
     IntPtr param_value,
     out IntPtr param_value_size_ret);
Beispiel #7
0
 public extern static OpenCLErrorCode SetKernelArg(
     CLKernelHandle kernel,
     Int32 arg_index,
     IntPtr arg_size,
     IntPtr arg_value);
Beispiel #8
0
 public extern static OpenCLErrorCode ReleaseKernel(
     CLKernelHandle kernel);
Beispiel #9
0
 public extern static OpenCLErrorCode EnqueueTask(
     CLCommandQueueHandle command_queue,
     CLKernelHandle kernel,
     Int32 num_events_in_wait_list,
     [MarshalAs(UnmanagedType.LPArray)] CLEventHandle[] event_wait_list,
     [Out, MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] CLEventHandle[] new_event);
Beispiel #10
0
 public extern static OpenCLErrorCode GetKernelInfo(
     CLKernelHandle kernel,
     OpenCLKernelInfo param_name,
     IntPtr param_value_size,
     IntPtr param_value,
     out IntPtr param_value_size_ret);
Beispiel #11
0
 public extern static OpenCLErrorCode SetKernelArg(
     CLKernelHandle kernel,
     Int32 arg_index,
     IntPtr arg_size,
     IntPtr arg_value);
Beispiel #12
0
 public extern static OpenCLErrorCode ReleaseKernel(
     CLKernelHandle kernel);
        /// <summary>
        /// Creates a <see cref="OpenCLKernel"/> for every <c>kernel</c> function in <see cref="OpenCLProgram"/>.
        /// </summary>
        /// <returns> The collection of created <see cref="OpenCLKernel"/>s. </returns>
        /// <remarks> <see cref="OpenCLKernel"/>s are not created for any <c>kernel</c> functions in <see cref="OpenCLProgram"/> that do not have the same function definition across all <see cref="OpenCLProgram.Devices"/> for which a program executable has been successfully built. </remarks>
        public ICollection<OpenCLKernel> CreateAllKernels()
        {
            ICollection<OpenCLKernel> kernels = new Collection<OpenCLKernel>();
            int kernelsCount = 0;
            CLKernelHandle[] kernelHandles;

            OpenCLErrorCode error = CL10.CreateKernelsInProgram(Handle, 0, null, out kernelsCount);
            OpenCLException.ThrowOnError(error);

            kernelHandles = new CLKernelHandle[kernelsCount];
            error = CL10.CreateKernelsInProgram(Handle, kernelsCount, kernelHandles, out kernelsCount);
            OpenCLException.ThrowOnError(error);

            for (int i = 0; i < kernelsCount; i++)
                kernels.Add(new OpenCLKernel(kernelHandles[i], this));

            return kernels;
        }