Calling same kerenl twice Any better approach?


I have a kernel F, which operates on an array acontaining following data:

a=[1 2 3 4 5 6 ]

The kernel operates on a and gives the following results:

1-Element wise square in a2=[1 4 9 16 25 36 ]

2-Sum of the elements of a in block_Sums=[21]

My algorithm says that I must again apply the same kernel F on block_Sums=[21], which is one of the outputs of the kerenel.

In short:
First reference: F:–>a= { a2, block_Sums}

do this again but not on a, instead on block_Sums

Second Reference: F:–>block_Sums= { block_Sums2, xyz}

My requirement is to get block_Sums2, and ignore xyz which is useless for me.

The problem is if I call the kerenel twice from the host, the arguments and execution configuration in the kernel F need to be changed in the two references (because as can be seen from the above the dimensions of the input arrays a and block_Sums in the two ref are different).Can anybody tell me how to get around with this problem? Any better approach than calling the kernel twice in a row?

Thanks for your time.