keywords: Intel(R), thread, threading, thread, Thread, Checker, checker, software, products, Pentium, tools, OpenMP*, pthreads, Linux*, multithreading, multi-threading Intel(R) C++ Compiler for Linux* with Cluster OpenMP* Intel(R) Fortran Compiler for Linux* with Cluster OpenMP* Release Notes **Contents Overview Product Contents System Requirements Known Issues and Limitations Technical Support Related Products and Services **Overview Cluster OpenMP* is a system that supports running an OpenMP* program on a set of nodes connected by a communication fabric, such as Ethernet. Such nodes do not have the shared memory hardware that OpenMP* is designed for, so Cluster OpenMP* simulates that hardware with a software mechanism. The software mechanism used by Cluster OpenMP* is commonly referred to as a distributed shared memory system. Cluster OpenMP* is an add-on to the Intel Compiler. You must purchase a separate license in order to compile your code for Cluster OpenMP*. **Product Contents See README.txt for product contents and directory structure. Cluster OpenMP* consists of two major parts: the OpenMP* support layer and the DVSM layer. The OpenMP* support layer implements the semantics of OpenMP* and uses the DVSM layer to manage the memory shared across the cluster. The DVSM layer is an exclusively-licensed and heavily modified extension of the TreadMarks distributed shared memory system developed at Rice University by Prof. Willy Zwaenepoel, Prof. Alan Cox, their colleagues and students. **System Requirements Cluster OpenMP* currently supports platforms using IA-64 processors (Itanium 2) and Intel® 64 (formerly Intel(R) EM64T) compatible processors running the Linux* Operating System. Minimum Hardware Required (per node) 512 MB of RAM 100 MB of disk space Recommended Hardware (per node) 2 GB of RAM 10 GB of disk space Required Software Operating Systems: Red Hat* Enterprise Linux* 3.0, Red Hat* Enterprise Linux* 4.0, SUSE Linux Enterprise Server* 9.0 SUSE Linux Enterprise Server* 10.0 Linux kernel version: 2.4.20 or later POSIX threads: NPTL Compilers: Intel(R) C++ Compiler for Linux*, Intel(R) Fortran Compiler for Linux*, Assembler: GNU assembler version 2.15.92.0.2 or later For Infiniband support: Open Fabrics Enterprise Distribution (OFED) 1.0 or later The OFED software may be downloaded from: https://svn.openfabrics.org/svn/openib/gen2/branches/ Recommended Software Intel(R) Trace Analyzer and Collector Intel(R) Thread Profiler Intel(R) Thread Checker Cluster Requirements One of the following supported communications fabrics: Ethernet*, Gigabit Ethernet*, Infiniband*, or any fabric that supports TCP/IP. All nodes that will cooperate in the execution of a Cluster OpenMP* program must be running the same operating system and the same kernel version. The nodes should be as identical as possible with respect to mounted file systems and system paths. There must be enough swap space available on disk for the program. In addition to the normal swap space needed by a Linux program, Cluster OpenMP* requires disk space allocated separately for sharable backing store. Sharable backing store is allocated in /tmp by default, and requires space equal to the size of twice the sharable pages allocated to the program. Use the --backing-store option in the kmp_cluster.ini file to allocate sharable backing store in some directory other than /tmp. **Known Issues and Limitations For Intel(R) 64 compatible architectures only, the following issue exists: * Older versions of the Cluster OpenMP runtime library (libclusterguide.so) use some symbols from the library "libirc" that cause incompatibilities with newer hardware. Newer versions of libclusterguide.so no longer use libirc. With older versions of libclusterguide.so, at runtime you may see an error similar to the following: a.out: symbol lookup error: a.out: undefined symbol: __intel_cpu_indicator If you receive this error, you must relink your application with a newer libclusterguide.so library. For all architectures, the following issues exist: * Cluster OpenMP programs built with C/C++ compilers version 9.1.045 and earlier or Fortran compilers version 9.1.040 and earlier must be re-linked or re-compiled with later versions of the compiler before they can be executed with the associated later versions of the Cluster OpenMP libraries. * Cluster OpenMP does not support the version of Posix threads known as "linuxthreads". It does support the version of Posix threads known as "NPTL". You can find out which version of Posix threads your kernel supports with the following Linux command: $ getconf GNU_LIBPTHREAD_VERSION The output will look something like either this: NPTL 0.60 or this: linuxthreads-0.10 If your system supports linuxthreads, then contact your system administrator to get NPTL support enabled. * Some recent Linux distributions, particularly SuSE 10, have enabled a kernel security feature known as "randomize_va_space". This feature causes the virtual addresses of memory mapped code and data to change at every process invocation. This feature causes problems with Cluster OpenMP, since Cluster OpenMP requires every process to map sharable data at the same virtual address. You may determine whether your system is affected by this by looking at the file /proc/sys/kernel/randomize_va_space. If it contains "1", then this feature is enabled on your system. To make Cluster OpenMP work properly in this situation, you must disable randomize_va_space by putting a "0" in that file. To do this, you should login as "root" and edit the file /etc/sysctl.conf by adding the line: kernel.randomize_va_space=0 then, reboot. * Cluster OpenMP* is only tested and supported in configurations where the nodes that will cooperate in the execution of a Cluster OpenMP* program are all running the same operating system and the same kernel version. * Cluster OpenMP* supports only one level of nested parallelism. When an outer parallel region is active and an inner parallel region is encountered, the inner region is serialized. * The limit on the total number of threads supported by Cluster OpenMP*, in all processes, is nearly 65,536. * The limit on the total amount of sharable memory supported by Cluster OpenMP* is 256 GBytes. * If you are trying to use a library statically linked with OpenMP*, while building a Cluster OpenMP* program, you must make sure that the Cluster OpenMP* library (libclusterguide.so) is linked before the library containing statically-linked OpenMP code. See section 10.2 of the Cluster OpenMP* User's Guide for more information. * An OpenMP* parallel region not nested within a Cluster OpenMP* parallel region will execute in parallel on a single node. An OpenMP* parallel region nested within a Cluster OpenMP* parallel region will execute on each thread that encounters it. * A Cluster OpenMP* program does not currently work as part of a shared object library, since it depends on each sharable variable being loaded at the same virtual address on all nodes. * Some versions of the C++ Standard Template Library seem to have bugs related to the use of sharable allocators. See sections 10.7.1.4 and 10.7.1.5 of the Cluster OpenMP* User's Guide for more information on using sharable allocators with STL containers. COMPILERS VERSION 10.0 ONLY: **Message Changed for -clomp-sharable-propagation in version When a sharable variable is found by the -clomp-sharable-propagation pass, the compiler prints a message similar to the following: pi.c(5): warning #11046: Variable nsteps should be declared sharable This is a slight wording change from previous versions. **Technical Support To receive technical support for this product and product updates, you need to register for an Intel(R) Premier Support account at the Intel(R) Registration Center (http://www.intel.com/software/products/registrationcenter/). Once you have contacted us with your suggestion or problem using your Premier Support account, a technical support engineer will respond within one (1) Intel business day. If you have not received, or lost your login ID or password, or are having trouble with access, please visit https://registrationcenter.intel.com/support. **Support Materials Available Download additional support material including sample codes and useful scripts from http://premier.intel.com. Login to your premier account (see above for registration information). Select "File Downloads", then select either Intel C++ Compiler, Linux* Cluster OpenMP* or Intel Fortran Compiler, Linux* Cluster OpenMP*, then click "Display File List". The extra support materials will be found in a file called "clomp_tools.tar.gz". **Related Products and Services Information on Intel(R) Software Development Products is available at http://www.intel.com/software/products Some of the related products include: *The Intel(R) Thread Profiler (http://www.intel.com/software/products/threading/) is a performance tuning tool for parallel programs that use Win32*, POSIX*, OpenMP* or custom synchronization. * The Intel(R) VTune(TM) Performance Analyzer (http://www.intel.com/software/products/vtune) enables you to evaluate how your application is utilizing the CPU and helps you determine if there are modifications you can make to improve your application's performance. * The Intel(R) Compilers (http://www.intel.com/software/products/compilers/) are an important part of making software run at top speeds with full support for the latest Pentium(R) and Itanium(R) processors. * The Intel(R) Cluster Tools (http://www.intel.com/software/products/cluster/) can help developers create, analyze and optimize high-performance applications on clusters of Intel(R) processor-based systems. * The Intel(R) Performance Library Suite (http://www.intel.com/software/products/perflib/) provides a set of routines optimized for various Intel processors. * The Intel(R) Software College (http://www.intel.com/software/college) provides training for developers on leading-edge software development technologies. Training consists of online and instructor-led courses covering all Intel architectures, platforms, tools, and technologies. **Disclaimer and Legal Information INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL(R) PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications. Intel may make changes to specifications and product descriptions at any time, without notice. The software described in this document may contain software defects which may cause the product to deviate from published specifications. Current characterized software defects are available on request. This document as well as the software described in it is furnished under license and may only be used or copied in accordance with the terms of the license. The information in this manual is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by Intel Corporation. Intel Corporation assumes no responsibility or liability for any errors or inaccuracies that may appear in this document or any software that may be provided in association with this document. Except as permitted by such license, no part of this document may be reproduced, stored in a retrieval system, or transmitted in any form or by any means without the express written consent of Intel Corporation. Developers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Improper use of reserved or undefined features or instructions may cause unpredictable behavior or failure in developer's software code when running on an Intel processor. Intel reserves these features or instructions for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from their unauthorized use. BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino logo, Chips, Core Inside, Dialogic, EtherExpress, ETOX, FlashFile, i386, i486, i960, iCOMP, InstantIP, Intel, Intel logo, Intel386, Intel486, Intel740, IntelDX2, IntelDX4, IntelSX2, Intel Core, Intel Inside, Intel Inside logo, Intel. Leap ahead., Intel. Leap ahead. logo, Intel NetBurst, Intel NetMerge, Intel NetStructure, Intel SingleDriver, Intel SpeedStep, Intel StrataFlash, Intel Viiv, Intel XScale, IPLink, Itanium, Itanium Inside, MCS, MMX, MMX logo, Optimizer logo, OverDrive, Paragon, PDCharm, Pentium, Pentium II Xeon, Pentium III Xeon, Performance at Your Command, Pentium Inside, skoool, Sound Mark, The Computer Inside., The Journey Inside, VTune, Xeon, Xeon Inside and Xircom are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. * Other names and brands may be claimed as the property of others. Copyright (C) 2007, Intel Corporation.