Within iOS Metal the documentation says that a single threadgroup can only be associated with a single compute unit. So I'm curious if choosing a number of threadgroups should be dependent on the number of available compute units? Is there a penalty for having more threadgroups than compute units? If it is important to match the number of compute units to threadgroups, how can one determine on a given device the number of available compute units?