SMS dit: Program-based, structural testing of shared memory parallel programs