update TODOs & ensure all writes finished before launching new kernel
optimize by process multiple elements per thread
add unroll directive