You can set another set of arguments after you enqueue kernel. You don't even need set every argument again. Just be sure that you don't share write buffers between devices without proper synchronization and kernel between multiple threads without locking during setting arguments to enqueue.