All existing works handle work-groups by scheduling them in distinct CPU threads.
cPU threads do not need to syn-chronize until kernel completion, which is convenient because synchronization across threads on a CPU is expensive.