"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
the uninterpreted source code file.
1 OpenPA v1.0.4
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.
11 Project documentation and bug tracking can be found at:
15 If you would like to email questions or discuss topics related to OpenPA
16 you can send mail to firstname.lastname@example.org.
22 If you checked out the project from source control then you will need to
23 generate configure files and makefiles with autogen.sh:
25 % ./autogen.sh
27 Otherwise, the build procedure is basically the same as any other
28 autoconfiscated software:
30 % ./configure [configure_args]
31 % make
32 % make install
34 OpenPA does support Microsoft Windows but the build system
35 infrastructure is unfortunately not yet in place for general use.
38 Supported Platforms
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
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).
63 We also support two pseudo-platforms:
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
85 Known Issues
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.