How to call another kernel with same parameter

So this is the kernel of my mergesort, bottom up mergesort algorithm. This mergeBU kernel assign the index to merge kernel.
How to call kernel merge with parameter are the same with mergeBU? Should it called from the host by clEnqueueNDRangeKernel(mergeBU) then clEnqueueNDRangeKernel(merge) with using OUT_OF_ORDER sequences?If yes, how’s the code?
What I want is the mergeBU kernel is being executed that it’s data still in global memory then the merge kernel using the data afterwards.


__kernel void mergeBU(__global int *a, __global int *aux, int N, float sz)
{
	int idx = get_global_id(0);
	int lo = 2 * sz*idx;
	int mid = lo + sz - 1;
	float hi = fminf(lo + sz + sz - 1, N - 1);
	merge(a, aux, lo, mid, hi);
}

__kernel void merge(__global int *a, __global int *aux, int lo, int mid, float hi)
{
	int i = lo;
	int j = mid + 1;

	for (int k = lo; k <= hi; k++)
	{
		aux[k] = a[k];
	}

	for (int k = lo; k <= hi; k++)
	{
		if		(i > mid)			{ a[k] = aux[j]; j++; }
		else if        (j > hi)			{ a[k] = aux[i]; i++; }
		else if        (aux[j] < aux[i])	        { a[k] = aux[j]; j++; }
		else						{ a[k] = aux[i]; i++; }
	}
}

Any comments are welcome. Thanks.