Fixed high CPU usage due to busy waiting the kernel to finish, added checks to initial memory allocations instead of blindly launching the kernel, launch configs can now be specified per device, updated the help text on launch config