XcalableMP: directive-based language eXtension for Scalable and performance-tunable Parallel Programming