
                  Omni OpenMP Compiler System (ver. 1.6)
	       Unviersity of Tsukuba and PC Cluster Consortium
				JAPAN
-- 1.6
  - serval bug fix in omf77
  - This is the final update in 1.x. 
    The next release will be 2.x, which will include new SCASH, F95.

-- 1.5
   - Move to PC Cluster Consortium

--- 1.4a
  - Bug fix
    - SCASH/Omni support SMP (SMP BUG fixed)
    - fixed SCASH/Omni runtime bug(when program run on 1 node cluster,
      make segmentation fault).

--- 1.4
  minor update SCASH/Omni for new SCASH library.
  SCASH/Omni unsupport SMP(It's BUG). 

--- 1.3s
  minor update for SCASH/Omni

--- 1.3, Update from 1.2s
  - Bug fix
  - Omni OpenMP extension of data mapping and affinity scheduling for SCASH.
  - Update for Score 3.3.2, in which SCASH for SMP nodes are available.
  - omf77 multiple precision support by GNU MP.
  - Source distribution for Win-NT implementation on the cygus environment.
  - Installtion with jexc, out of beta state.
  - Stackthreads implementation improved by polling codes.

--- 1.2s, Update from 1.2 (minor update)

  - Several bugs in SCASH implementation were fixed for Score 3.2.
  - Fixed bugs and update in omf77/omcc
     - threadprivate common.
     - external dummy procedure.
     - adjustable local array is supported.
     - local variables in main are allocated statically.
     - spin lock for alpha and IBM
  - jexc (java byte code to C translator for Exc java toolkit) is 
    ready for a binary version.
    - RPM (binary) is available for linux (x86 and alpha, Redhad 6.2).
  - Win-NT implementation on the cygus environment (beta state, binary only)

--- 1.2, Update from 1.1

  - Several bugs in OpenMP C/Fortran 77 compiler were fixed.
    - Adjustable array in private clause of F77 OpenMP is supported.
    - Complex reduction in F77 is supported.
    - Performance improvement from 1.1.
  - Kaffe JVM (1.0.5) can be used to run our compiler.
  - Supporting multiple configurations including scash, shmem, StackThreads,
    sproc(on irix)
    - Cluster-enabled OpenMP implementation on software distributed shared
      memory SCASH, a beta version is available.
    - StackThreads runtime implementation for nested irregular parallelism 
      is available.
    - Omni installation creates all runtime libraries (combination of lock
      mechanism and parallel execution mechanism) available on the platform. 
    - New compile drivers, omcc/omf77, are available for multiple runtime 
      configuration (shmem, scash, StackThreads, etc...). You can specify 
      those runtimes by "-omniconfig" option.
  - 64 bit machine beta support. See also omni64bit.html for detail.
    - INTEGER*8 support in Fortran 77 if backend C compiler supports 64
      bit integer. 

--- Update from 1.0

  - Several bugs in OpenMP C compiler, ompcc, were fixed.
  - OpenMP Fortran 77, ompf77, now supports almost features, which
    were not supported in the previous beta version.
  - The front-end of C and f77 can successfully compile major benchmark
    programs including SPECint95, SPECfp95, SPEChpc (SPECseis,
    SPECchem, SPECclimate), NPB 2.3 serial version.
  - A serious performance bug of thread scheduling for linux pthread
    was fixed. "sched_yield" of linux may cause large overhead.
  - A performance bug in case of the mixture of OpenMP and MPI under
    pthread environment was fixed. The idle threads are suspended
    by using "pthread_cond_wait". The "spin" version may cause
    performance bug when using with MPICH.
  - In profiling mode, blocks of tlog records are output in the order of
    timestamp. A large tlog file is automatically truncated (2000 records) 
    in viewing with tlogview.
  - IBM AIX with POSIX thread is supported.

---
Contents:

 1) What is RWCP Omni Compiler?
 2) Other software that you will need
 3) Unpacking this distribution file
 4) Platforms
 5) Installation
 6) Compile and run your OpenMP program
 7) Unsupported features and bugs
 8) Where to find more information
 9) Reporting bugs and requesting features

IMPORTANT: Please make sure you understand the Copyright and License
information in the files named COPYRIGHT and LICENSE before installing
this release.
---
1) What is RWCP Omni Compiler?

RWCP Omni Compiler Software is a collection of programs and libraries,
written in C and Java, that allow researchers to build code
transformation systems (compilers). Omni OpenMP compiler is a part of
this software that translates C and Fortran 77 programs with OpenMP
pragmas into C code suitable for compiling with a native compiler
linked with the Omni OpenMP runtime library.  The software consist of
two major parts: front end programs (C-front and F-front) that
translates OpenMP C and Fortran 77 programs into a intermediate code
(called Xobject), and Java libraries (Exc Java tool kit) that
transform Xobject code and generate C code.

This distribution contains all the pieces necessary to compile OpenMP
programs for a shared memory multiprocessor supporting a thread
library (POSIX thread and Solaris thread).

2) Other software that you will need

To compile and run OpenMP programs using Omni OpenMP Compiler,
the following software is required:
  - C compiler (having "long long int" or sizeof(long int) == 8
    preferred for INTEGER*8 in Fortran 77)
  - gnu bison or yacc to make the parser.
  - Java Development Kit, JDK (later than 1.1.3, 1.2.2 preferred), or
    Kaffe (1.0.5 or later). If you have no java enivornment, you
    can try installation with jexc(java to C translater).
  - Thread library. Solaris thread or POSIX thread library. On SGI
    IRIX, sproc can also be used.

3) Unpacking this distribution file

When you unpack our distribution file, you will find the following
directories and files:
  Omni/				-- top directory
	doc/			-- documentation
	C-front/		-- C parser
	F-front/                -- Fortran 77 parser
	exc-tools-java/ 	-- Exc Java tool kit
	tests/			-- test and example of openMP programs
	lib/			-- runtime library
		libompc/	-- Omni OpenMP runtime library
	        libtlog/	-- Profile library
	        libf2c/         -- Fortran runtime library
	        libompsm/       -- "shmem" model runtime library
                libompst/       -- stackthreads runtime library
		runtime/        -- 
	tools/
		jexc/		-- Java bytecode to C translator
				   for exc-toolkit-java
		driver/		-- C, Fortran77 Compile driver
	        jmpstat/        -- java version of Solaris "mpstat"
		tlogview/       -- Omni profile visualization tool
	utils/			-- misc.
	configure		-- configure command to make and install

4) Platforms

OpenMP is a programming model for shared memory multiprocessor.
The current version of the Omni OpenMP compiler has been tested on the
following platforms:

  -- Sun Solaris 5.6 (SPARC and x86) with Solaris threads and POSIX threads.
  -- Linux 2.2.7 (redhat-6.0, x86 SMP) with linux-threads.
  -- IRIX 6.5 (Origin 2000) with POSIX threads and shared process (AKA
     sproc). 64 bit process model is supported as beta.
  -- Linux 2.2.14 (redhat-6.2, Alpha SMP) with linux-threads (beta)
  -- IBM AIX with POSIX threads
  -- HPUX with POSIX threads
  -- Windows NT/2000 with cygwin

Note that you can install the software to any platform with POSIX
thread library (even in a single processor machine).

Version 1.3 supports the following runtime and platform:

  -- StackThreads implmentations for nested irregular parallelism
  -- SCASH implemenation for cluster-enabled OpenMP

5) Installation

 Belows are general installation procedures. See also Install.html for more detail.

 1. Get the Omni distribution,"Omni.tar.gz". Unpack the distribution
    file.
	gzip -dc Omni.tar.gz | tar xvf -

 2. Change the current directory to Omni directory.

	cd Omni

 3. Run "configure". 

	configure 
    or
 	configure --prefix=<your_install_directory>

   More detailed feature options, see Install.html.

 4. Run "make" to compile the sources.

		make

 5. Run "make install" to install the compiler.

		make install

 6. Make sure that the command path includes install_directory/bin.

6) Compile and run your OpenMP program

The command to compile OpenMP C programs is "omcc". For the
description and options of "omcc", see doc/omcc.html.
The command to compile OpenMP Fortran77 programs is "omf77". For the
description and options of "omf77", see doc/omf77.html.
The directory "tests" contains some small programs to test the OpenMP
compiler.

To run the OpenMP program, just execute the compiled executable on
your SMP platform. The number of processor (or operating system
threads) used is controlled as follows:

 -- The environment variable OMPC_NUM_PROCS specifies the number of
threads to execute the program. For example, you want to use 4 threads,

  	setenv OMPC_NUM_PROCS 4

 -- If the environment variable OMPC_NUM_PROCS is not set, check the
number of physical processors in your platform. The same number of
threads are created as the number of physical processor. 
In Linux and Solaris platforms, the runtime system checks the number
of processors. Otherwise, the current version uses a compile-time
constant N_PROC_DEFALUT (currently 4) in "ompclib.h" as the number of threads.

 -- If the environment variable OMP_NUM_THREADS is set and its value
is greater than the number of threads described above, the value of 
OMP_NUM_THREADS is used as the max number of threads.

 -- If the environment variable OMPC_BIND_PROCS and the max number of
threads is less than or equal to the max number of threads, the
threads are bind to the processor under solaris platforms. 
It works only in Solaris thread environment.

You can monitor the parallel execution the following command:
  -- mpstat in Solaris
    (also jmpstat, Java version of "mpstat" in tools directory
	for Solaris platforms)
  -- xcpustate in Linux

7) Unsupported features and bugs

See the documents under "doc" directory attached in the release.

8) Where to Find More Information
For the documents about OpenMP specification, you can get them from
the OpenMP official web site:

	http://www.openmp.org/

The directory "doc" contains some documents about the Omni Compiler 
Software. 

You can obtain the most recent documents and software release at our
web site:

	http://pdplab.trc.rwcp.or.jp/Omni/

9) Reporting bugs and requesting features
To report bugs or features requests, send E-mail to:
	pdp-openmp@trc.rwcp.or.jp
Your feedback and bug reports will be greatly appreciated.

-- Enjoy!


