Crystal: theory and pragmatics of generating efficient parallel code