------------------------------------------------------------------------------- The Odyssey Compiler v1.0alpha June 1999 Diego Novillo diego@cs.ualberta.ca Computing Science Department University of Alberta, Edmonton, Canada ------------------------------------------------------------------------------- Introduction ------------ Odyssey is an optimizing compiler for explicitly parallel languages which is still in the very early stages of development. This is the first public release. Most of the optimizations still do not work properly and they are being changed almost daily. The base analysis framework (CSSAME) is almost finished but it definitely contains some rough edges. The main goal of the project is to develop new optimization techniques that take advantage of the parallel and synchronization structure of the program. We are also interested in adapting traditional optimization techniques to work on explicitly parallel programs. Contents -------- The source directory tree included in this distribution contains the CSSAME library (Concurrent SSA with Mutual Exclusion) library, the PFG (Parallel Flow Graph) library and a few support libraries. This software has been developed on IRIX 6.5 using SGI native threads and PThreads. The compiler makes heavy use of the STL. It works fine with the SGI version of STL and the SGI compilers. I have not tried it on other platforms. Please let me know if you port it to other platforms so that I can incorporate your changes into the main release. String UtilLib src/CSSAMELib The CSSAME library. CSSAME (pronounced sesame) is an extension to the SSA form to support explicitly parallel programs with mutual exclusion synchronization. src/Debug A third-party debugging library written by Anatoly Kardash . It is used heavily to trace the actions of the compiler and its libraries. src/FindPar src/FixPgen src/GenPar Utility programs to recognize parallel sections in the code and generate the annotations recognized by SUIF to produce parallel code. src/OCC The main compiler driver. src/OptLib The optimization library. All the transformation passes are in here. src/ParLib A support library to recognize cobegin/coend and doall statements in C. src/Scripts Shell scripts to compile and link Odyssey programs. The main compiler (odc) driver lives here. src/ShowCCFG A stand-alone program to generate a dotty or xvcg file with the flowgraph of the program. src/String String library used mainly for error and warning messages. src/UtilLib Various functions not related to anything in particular. Mainly used to display parts of source files when displaying the CSSAME form. A top level Makefile will build and install the library. It uses SUIF environment variables to determine what compiler and architecture to use. To compile the library type 'make install'. The only environment variable that you need define is ODYSSEY, which is used by the Makefile and the compiler itself (occ) to determine the location of include files and libraries. If it is left undefined, it defaults to $HOME/Odyssey. Documentation ------------- That would be very nice, thank you. I haven't found time to write any kind of internal or user-level documentation. I use the header files and most source files have extensive comments. Hopefully it all makes some sense (It does to me anyway). Copyright and Disclaimer ------------------------ This software is provided under the same terms described in the SUIF copyright included below. I only ask that you give me credit for it and send me any bug corrections and/or enhancements that you make to the library. /* Copyright (C) 1994 Stanford University All rights reserved. NOTICE: This software is provided ``as is'', without any warranty, including any implied warranty for merchantability or fitness for a particular purpose. Under no circumstances shall Stanford University or its agents be liable for any use of, misuse of, or inability to use this software, including incidental and consequential damages. License is hereby given to use, modify, and redistribute this software, in whole or in part, for any purpose, commercial or non-commercial, provided that the user agrees to the terms of this copyright notice, including disclaimer of warranty, and provided that this copyright notice, including disclaimer of warranty, is preserved in the source code and documentation of anything derived from this software. Any redistributor of this software or anything derived from this software assumes responsibility for ensuring that any parties to whom such a redistribution is made are fully aware of the terms of this license and disclaimer. "SUIF" is a trademark of Stanford University. */