kernel selection. This logic will be further complicated by allowing individual routines to be run on GPU