move datatype into MPI path; fix bug with commit-free asymm in SMP path