Co-array Fortran (CAF) and Unified Parallel C (UPC) are two emerging languages for single-program, multiple-data global address space programming. These languages boost programmer productivity by providing shared variables for communication instead of message passing. However, the performance of these emerging languages still has room for improvement. In this paper, we study the performance of variants of the NAS MG, CG, SP, and BT benchmarks on several modern cluster architectures to identify challenges that must be met to deliver top performance. We compare CAF and UPC variants of these programs with the original Fortran+MPI code. Today, CAF and UPC programs deliver scalable performance on clusters only when written to use bulk communication. However, our experiments uncovered some significant performance bottlenecks limiting UPC performance on all platforms. We account for the root causes of these performance anomalies and show that they can be remedied with additional compiler improvements, in particular we show that many of these obstacles can be resolved with adequate optimizations by the backend C compilers.
Revised: May 19, 2011 |
Published: June 10, 2005
Citation
Coarfa C., Y. Dotsenko, J.M. Mellor-Crummey, F. Cantonnet, T. El-Ghazawi, A. Mohanti, and Y. Yao, et al. 2005.An Evaluation of Global Address Space Languages: Co-Array Fortran and Unified Parallel C. In Proceedings of the tenth ACM SIGPLAN symposium on principles and practice of parallel programming, PPoPP’05, June 15–17, 2005, Chicago, Illinois, 36-47. New York, New York:ACM Press.PNNL-SA-44877.