Holistic Characterization of Parallel Programming Models in a Distributed Memory Environment