internal void DispatchKernel<T, U, V, W, X, Y, Z, A>(int start, int end, Buffer<T> buf1, Buffer<U> buf2, Buffer<V> buf3, Buffer<W> buf4, Buffer<X> buf5, Buffer<Y> buf6, Buffer<Z> buf7, Buffer<A> buf8, Action<Index, GPUArray<T>, GPUArray<U>, GPUArray<V>, GPUArray<W>, GPUArray<X>, GPUArray<Y>, GPUArray<Z>, GPUArray<A>> action, string src)
where T : unmanaged
where U : unmanaged
where V : unmanaged
where W : unmanaged
where X : unmanaged
where Y : unmanaged
where Z : unmanaged
where A : unmanaged
{
var idx = new Index(start);
var kernel = GetKernel(action, src);
kernel(((end - start) / block_size, block_size), idx,
new GPUArray<T>(buf1),
new GPUArray<U>(buf2),
new GPUArray<V>(buf3),
new GPUArray<W>(buf4),
new GPUArray<X>(buf5),
new GPUArray<Y>(buf6),
new GPUArray<Z>(buf7),
new GPUArray<A>(buf8));
Synchronize();
}
internal void DispatchKernel<T, U, V, W, X, Y, Z, A>(int start, int end, Buffer<T> buf1, Buffer<U> buf2, Buffer<V> buf3, Buffer<W> buf4, Buffer<X> buf5, Buffer<Y> buf6, Buffer<Z> buf7, Buffer<A> buf8, Action<Index, GPUArray<T>, GPUArray<U>, GPUArray<V>, GPUArray<W>, GPUArray<X>, GPUArray<Y>, GPUArray<Z>, GPUArray<A>> action, string src)
where T : unmanaged
where U : unmanaged
where V : unmanaged
where W : unmanaged
where X : unmanaged
where Y : unmanaged
where Z : unmanaged
where A : unmanaged
{
var idx = new Index(start);
var kernel = GetKernel(action, src);
kernel(((end - start) / block_size, block_size), idx,
new GPUArray<T>(buf1),
new GPUArray<U>(buf2),
new GPUArray<V>(buf3),
new GPUArray<W>(buf4),
new GPUArray<X>(buf5),
new GPUArray<Y>(buf6),
new GPUArray<Z>(buf7),
new GPUArray<A>(buf8));
Synchronize();
}