"Fossies" - the Fresh Open Source Software Archive

Member "openpa-1.0.4/README" (11 Jan 2013, 4964 Bytes) of package /linux/misc/openpa-1.0.4.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 OpenPA v1.0.4
    2 -------------
    3 
    4 The goal of this project is to provide an open source, highly-portable
    5 library that provides atomic primitives (and related constructs) for
    6 high performance, concurrent software. This project is a collaboration
    7 between the Mathematics and Computer Science (MCS) division at Argonne
    8 National Laboratory (ANL) and the HDF Group. The code was originally
    9 derived from work on the MPICH2 project. 
   10 
   11 Project documentation and bug tracking can be found at:
   12 
   13   https://trac.mcs.anl.gov/projects/openpa/
   14 
   15 If you would like to email questions or discuss topics related to OpenPA
   16 you can send mail to opa-discuss@lists.mcs.anl.gov.
   17 
   18 
   19 Building 
   20 --------
   21 
   22 If you checked out the project from source control then you will need to
   23 generate configure files and makefiles with autogen.sh:
   24 
   25 % ./autogen.sh
   26 
   27 Otherwise, the build procedure is basically the same as any other
   28 autoconfiscated software:
   29 
   30 % ./configure [configure_args]
   31 % make
   32 % make install
   33 
   34 OpenPA does support Microsoft Windows but the build system
   35 infrastructure is unfortunately not yet in place for general use.
   36 
   37 
   38 Supported Platforms
   39 -------------------
   40 
   41 The following header files in the src/primitives directory support the
   42 listed platforms:
   43 opa_gcc_ia64.h        - GCC on Intel's IA64 (Itanium) architecture
   44 opa_gcc_intel_32_64.h - GCC (and some GCC-like compilers) on x86 and
   45                         x86_64 architectures
   46 opa_gcc_intrinsics.h  - GCC on many other platforms.  These use compiler
   47                         intrinsics which are not always implemented on
   48                         every platform
   49 opa_gcc_ppc.h         - GCC and IBM's XLC on PowerPC 4xx and 970 systems.
   50                         Specifically, this supports the modified-PPC440
   51                         processor in IBM's Blue Gene/P supercomputers and most
   52                         64-bit PPC machines such as BG/P login nodes and G5
   53                         Macs.
   54 opa_gcc_sicortex.h    - GCC on SiCortex machines.  This is a MIPS 5K based
   55                         architecture, so it may work on similar platforms.
   56 opa_gcc_arm.h         - GCC on ARMv7 (and later)
   57 opa_nt_intrinsics.h   - Windows support.  These use compiler intrinsics
   58                         available in Microsoft's Visual Studio compiler.
   59 opa_sun_atomic_ops.h  - Solaris support.  This uses Solaris' built-in
   60                         atomic operations library.  Tested on a Niagara
   61                         (T5240) machine with Solaris (s10s_u4wos_12b).
   62 
   63 We also support two pseudo-platforms:
   64 
   65 opa_by_lock.h - Used when you specify "--with-atomic-primitives=no" or when
   66                 auto-detecting the primitive implementation and lock-based fall
   67                 back is selected.  This uses pthread mutexes to emulate the
   68                 atomic behavior.  This option typically has dramatically slower
   69                 performance on most platforms where native primitives are
   70                 available.  You should usually only use it for testing or on
   71                 platforms where pthreads are available but no native primitives
   72                 are currently implemented.  The library initialization function
   73                 *must* be called when using this primitives implementation.
   74 opa_unsafe.h  - Used when you specify "--with-atomic-primitives=unsafe".  This
   75                 can be used to improve performance in code that uses OPA already
   76                 and is conditionally compiled to be single-threaded without
   77                 having to modify said code.  It is also potentially useful for
   78                 meta-testing to ensure that any threading tests you might have
   79                 will catch bugs when you have a broken atomics implementation.
   80                 The OPA test suite itself fails spectacularly when compiled this
   81                 way.  This header can also be used by defining the preprocessor
   82                 macro OPA_USE_UNSAFE_PRIMITIVES prior to including
   83                 opa_primitives.h.
   84 
   85 Known Issues
   86 ------------
   87 
   88 * One known issue is that the gcc atomic intrinsics aren't supported by
   89   compilers prior to GCC 4.1.  In particular the default Mac OS X compiler is
   90   gcc 4.0.1 so these result in a linker error when using this set of
   91   primitives.  The good news is that on OSX/Intel we use native inline
   92   assembly anyway, so this isn't a big problem.
   93 * The PGI compilers currently are not supported.  There is at least one known
   94   bug in the PGI compiler's handling of of inline assembly for which we are
   95   awaiting a fix from PGI.  Once a fixed version of the compiler is available
   96   this issue should be rectified in an upcoming release.
   97 * As mentioned earlier, Windows is supported but the build system is not
   98   yet present.
   99 * We've had reports of trouble with older IA64 machines running GCC 3.2.2.
  100   Unfortunately we don't have access to a machine with this configuration so we
  101   have been unable to debug and fix the problem.  Patches and detailed bug
  102   reports on this issue are very welcome.
  103