internal KernelArgument(Kernel kernel, int index) { if (kernel == null) throw new ArgumentNullException("kernel"); if (index < 0) throw new ArgumentOutOfRangeException("index"); _kernel = kernel; _index = index; }
public OpenCLKernel(OpenCLKernelSet kernelSet, string kernelName) { this.kernelSet = kernelSet; if (!kernelSet.Kernels.TryGetValue(kernelName, out this.kernel)) { this.kernel = kernelSet.Program.CreateKernel(kernelName); } this.currentArg = 0; this.createdBuffers = new List <OpenCLBuffer>(); #if ENABLE_PROFILING if (profilingStopwatch == null) { profilingStopwatch = System.Diagnostics.Stopwatch.StartNew(); } else { profilingStopwatch.Restart(); } #endif }
/// <summary> /// Enqueues a command to execute a <see cref="Kernel"/> on this command queue's <see cref="Device"/>. /// </summary> /// <remarks> /// The kernel is executed using a single work-item. /// /// <para><see cref="EnqueueTask"/> is equivalent to calling /// <see cref="EnqueueNDRangeKernel(Kernel, IntPtr, IntPtr, Event[])"/> with /// <em>globalWorkSize</em> set to 1, and <em>localWorkSize</em> set to 1.</para> /// </remarks> /// <param name="kernel">A valid <see cref="Kernel"/> object.</param> /// <param name="eventWaitList">The events that need to be complete before this /// command is executed. If the list is null or empty, this command does not /// wait on any event to complete.</param> /// <returns>Returns an event object that identifies this particular kernel execution instance.</returns> public Event EnqueueTask(Kernel kernel, params Event[] eventWaitList) { EventSafeHandle[] eventHandles = null; if (eventWaitList != null) eventHandles = Array.ConvertAll(eventWaitList, @event => @event.Handle); EventSafeHandle handle = UnsafeNativeMethods.EnqueueTask(this.Handle, kernel.Handle, eventHandles); return new Event(handle); }
public Event EnqueueNDRangeKernel(Kernel kernel, IntPtr[] globalWorkOffset, IntPtr[] globalWorkSize, IntPtr[] localWorkSize, params Event[] eventWaitList) { EventSafeHandle[] eventHandles = null; if (eventWaitList != null) eventHandles = Array.ConvertAll(eventWaitList, @event => @event.Handle); EventSafeHandle handle = UnsafeNativeMethods.EnqueueNDRangeKernel(this.Handle, kernel.Handle, globalWorkOffset, globalWorkSize, localWorkSize, eventHandles); return new Event(handle); }
public Event EnqueueNDRangeKernel(Kernel kernel, IntPtr[] globalWorkSize, IntPtr[] localWorkSize, params Event[] eventWaitList) { return EnqueueNDRangeKernel(kernel, null, globalWorkSize, localWorkSize, eventWaitList); }
public Event EnqueueNDRangeKernel(Kernel kernel, IntPtr globalWorkOffset, IntPtr globalWorkSize, IntPtr localWorkSize, params Event[] eventWaitList) { return EnqueueNDRangeKernel(kernel, new[] { globalWorkOffset }, new[] { globalWorkSize }, new[] { localWorkSize }, eventWaitList); }