Extending the OpenSHMEM Analyzer to perform synchronization and multi-valued analysis Swaroop Pophale 1 , Oscar Hernandez 2 , Stephen Poole 2 , and Barbara Chapman 1 1 University of Houston, Houston, Texas 77004, USA, spophale, chapman@cs.uh.edu 2 Oak Ridge National Laboratory, Oak Ridge, Tennessee, 37840, USA oscar, spoole@ornl.gov Abstract. OpenSHMEM Analyzer (OSA) is a compiler-based tool that provides static analysis for OpenSHMEM programs. It was developed with the intention of providing feedback to the users about semantics errors due to incorrect use of the OpenSHMEM API in their programs, thus making development of OpenSHMEM applications an easier task for beginners as well as experienced programmers. In this paper we dis- cuss the improvements to the OSA tool to perform parallel analysis to detect collective synchronization structure of a program. Synchroniza- tion is a critical aspect of all programming models and in OpenSHMEM it is the responsibility of the programmer to introduce synchronization calls to ensure the completion of communication among processing ele- ments (PEs) to prevent use of old/incorrect data, avoid deadlocks and ensure data race free execution keeping in mind the semantics of Open- SHMEM library specification. Our analysis yields three tangible outputs: a detailed control flow graph (CFG) making all the OpenSHMEM calls used, a system dependence graph and a barrier tree. The barrier tree represents the synchronization structure of the program presented in a simplistic manner that enables visualization of the program’s synchro- nization keeping in mind the concurrent nature of SPMD applications that use OpenSHMEM library calls. This provides a graphical represen- tation of the synchronization calls in the order in which they appear at execution time and how the different PEs in OpenSHMEM may en- counter them based upon the different execution paths available in the program. Our results include the summarization of the analysis con- ducted within the middle-end of a compiler and the improvements we have done to the existing analysis to make it aware of the parallelism in the OpenSHMEM program. 1 Introduction OpenSHMEM is a PGAS library that may be used with C, C++ or Fortran SPMD programs to achieve potentially low-latency communication via its one- sided remote direct memory access (RDMA) calls on shared as well as distributed systems that have the required hardware capability. Compilers are not aware