Intel® Concurrent Collections for C++ Release Notes

Home | FAQ | Documentation and Tutorials | Papers | Discussions and Feedback

Contents

Overview

Intel® Concurrent Collections for C++ is a new language for describing parallel computations. It distinguishes the expression of the potential parallelism of the program from both the lower-level serial details of the algorithm, and the actual parallelism for a given target. It works on shared and distributed memory.

These release notes describe the supported platforms; installation instructions; functionality added, changed, and removed, and known issues and possible workarounds for those issues for Intel® Concurrent Collections for C++ since the previous release.

Supported Platforms

Microsoft Windows XP*, Microsoft Windows 7, Microsoft Windows Vista*, Microsoft Windows Server 2003*, Microsoft Windows Server 2008* (embedded editions not supported), or Linux

Installation Notes

Please see the Getting Started document for information on installing the product, and other requirements.

Restrictions

The following restrictions apply to this version of the release of this product:

The WhatIf release of Intel® Concurrent Collections for C++ should not be used in production code. Please contact technical support if you are interested in using Intel® Concurrent Collections for C++ in production code.

Follow on releases of this product will likely require rewriting of some of your code. Backward compatibility is not guaranteed.

Known Problems and Limitations

This is a list of the known problems of the current implementation.

Problem: When running on distributed memory, the default scheduler (TBB_TASK) might react incorrectly to setting the number of threads (CNC_NUM_THREADS)
Workaround: Use CNC_SCHEDULER=FIFO_STEAL

Problem: Using DAPL with MPI might lead to crashes, dead-locks or bad performance. Newer versions of Intel MPI might provide fixes.
Workarounds:

  1. At runtime, set environment variables I_MPI_DAPL_TRANSLATION_CACHE=off and I_MPI_DAPL_CREATE_CONN_QUAL=0
  2. Use TCP by setting environment variables (at runtime) I_MPI_FABRICS=shm:tcp and I_MPI_TCP_NETMASK=ib and I_MPI_DYNAMIC_CONNECTION=0

Problem: CnC::parallel_for does not work with Microsoft* compiler, the compiler issues error messages.
Workaround: Use the Intel® C++ compiler or use tbb::parallel_for.

Problem: When unsing SOCKETS for distributed memory on Windows*, the runtime issues errors related to unsufficient memory for the socket communication.
Workarounds:

  1. Use MPI
  2. Add more memory (RAM)
  3. Use Linux*

What's New with Release 0.9.001?

  • New step/thread affinity control: use step-tuner to assign affinity of steps to threads
  • Added thread-pinning: pin threads to CPU-cores
  • New cancellation feature for step-tuners: cancel individual steps (in flight or yet to come), all steps, or custom cancellation sets
  • Added tuning capabilites for CnC::parallel_for: switch on/off checking dependencies, priority, affinity, depends and preschedule
  • New support for Intel(R) Xeon Phi(TM) (MIC): native and mixed CPU/MIC
  • Improved instrumentation hooks for ITAC: Using collection names as given in collection-constructors
  • Cleaner/simpler hashing and equality definition for custom tags
  • New samples (UTS, NQueens (with cancellation), parsec/dedup, Floyd-Warshall) and improved samples
  • Closed memory leak on distributed memory
  • Other bug fixes etc.
  • Added support for Visual Studio* 2012, dropped support for Visual Studio* 2005 (Windows* only)
  • Require TBB 4.1 (was 4.0)
  • Switched to gcc 4.3 ABI (Linux* only)

What's New with Release 0.8.000?

  • Cleaned up selection of underlying schedulers
  • Improved communication on distributed memory
  • Added printing communication statistics
  • Various bug fixes, including
    • Performance bug turned into an option: CNC_SCHEDULER_BYPASS
    • Fixed CnC::debug::trace_all
    • Fixed CnC::debug:time*
    • Fixed C++ issues (standard conformance)
  • Revised API tutorial
  • Extended RTM sample (vectorization, generic tile-sizes, scalability)
  • Documented workarounds for issues in MPI

What's New with Release 0.7.003?

  • Linux* and Windows* have been validated to work with Intel® Threading Building Blocks (Intel® TBB) 4.0.
  • Various bug-fixes
  • Performance improvements
  • Changes to API make this release incompatible with previous versions
    • Introduced explicit step-collections
    • Prescription signature has changed
    • Single tuner type was replaced with tuners per collection
    • Collection constructors also accept reference and no longer pointer
    • Get-counting moved to tuner (from put)
    • Using vector collection also in tuner
    • No longer requires tag_hash_compare for tags unless preservation is enabled (in tuner)
  • Extended and more stable support for distributed memory
    • Works with Intel® MPI 4.0.1 and later
    • Tuning capabilities for adjusting the distribution plan
    • Get-counted garbage collection
    • Tag-ranges
    • Samples
  • More examples (in particular for distributed memory)
    • All updated to conform to the new API
  • Support for profiling with Intel® Trace Analyzer and Collector (distributed and shared memory)
  • Added API for expressing producer/consumer relationships as well as for controller/controlee relationship
  • Removed graph builder and spec translator from release
  • All documents have been updated to conform to the new runtime API

What's New with Release 0.6.0?

  • Microsoft Visual Studio* 2010 support has been added.
  • Linux* and Windows* have been validated to work with Intel® Threading Building Blocks (Intel® TBB) 3.0.
  • Bugs fixed:
  • Increased the maximum size of a .cnc file.
  • Fixed typographical error in coding hints file, which caused compilation failures.
  • On Linux*, re-install in a different location is now supported.
  • API updated:
  • In runtimes/cnc_api/cnc/default_tuner.h, the lock_globally() method has been removed. The purpose was to allow the user to serialize the execution of a particular step instance. But CnC does not endorse the use of non-thread-safe step instances, consequently this method was removed.
  • The runtime supports cyclic dependencies between tag-range-instances.
  • Scheduling statistics improved: scheduler bypassing now registers step execution statistics.

What's New with Release 0.5.0?

  • GraphBuilder added for Windows*
    • A GUI tool to design and build an Intel® Concurrent Collections for C++ graph has been added to the product. GraphBuilder will translate the graph, which can be translated directly to a CnC C++ header file and corresponding codinghints.txt file. Please see the GraphBuilder User's Guide document for information on using the GraphBuilder.
    • GraphBuilder requires Visual Studio* 2008 with C#.
  • Runtime API changes
    • The interface for the "get" member function of CnC::item_collection has been changed.
    • Tag-ranges and the parallel_for construct have been added.
  • CnC for distributed memory (distCnC) for the socket-based communication model has been added.
  • See the Runtime API document for detailed information.
  • Samples updated
    • All samples have been updated to conform to the updated runtime API.
  • The following samples are added to illustrate the new runtime features: mandel, fib, fib_getcount, fib_preschedule, fib_stats, fib_trace, fib_tuner, primes_parfor, primes_range.
  • Documents updated
  • The documents "Runtime API" and "Concurrent Collections Tutorial" have been updated to conform to the updated runtime API
  • On Windows* and Linux*, the default Intel® Concurrent Collections for C++ runtime library has been changed from static to dynamic form. If you want to use the static CnC version of the libraries (only on Windows*), you must define a Preprocessor Definition named “CNC_STATIC_LIB”, and specify either “cnc_static_debug.lib” or “cnc_static.lib” in the Linker Input Additional Dependencies property. Please refer to any of the the supplied Samples to view how this is done for configurations named "Static_Debug" and Static_Release".
  • On Windows*, the requirement to have the VS2005 SP1 runtime libraries installed on the system to run the translator (cnc.exe) for VS2008 projects has been eliminated.

What's New with Release 0.4.0?

  • Linux* support
    • Support for Linux* OS has been added.
  • New runtime API
    • We have developed a new C++ API that provides a natural way to program in C++ using the Intel® Concurrent Collections design methodology. The API also includes interfaces for tuning and debugging your Intel® Concurrent Collections program. Note that this new version is not compatible with the previous versions. See the Runtime API document for detailed information.
  • Textual notation updated
    • The specifications of tag type for item collections and tag collections are now required. The optional attributes for item/step/tag collections have been changed. See the Textual Notation document for detailed information.
  • Samples updated
    • All samples have been updated to conform to the new runtime API and textual notation.
  • Documents updated
    • All documents have been updated to conform to the new runtime API and textual notation.

What's New with Release 0.3.0?

  • Performance improvement
    • Steps can now be specified with different priorities to improve performance. See 1.1.4 Attributes for steps in the Intel® Concurrent Collections for C++ Reference Manual.
  • Memory usage improvement
    • Garbage collection by ref-counting is now supported to reduce memory usage. See 1.1.5 Attributes for items in the Intel® Concurrent Collections for C++ Reference Manual.
  • Samples added
    • MatrixInversion - demonstrates the new ref-counting feature
  • Translator license expiration date
    • The license for the translator (cnc.exe) in the download package expires on 12/31/2009.
  • Documents updated:
    • Intel® Concurrent Collections for C++ Reference Manual
  • Problems fixed
    • The cnc.exe (translator) "The system cannot execute the specified program." problem that occurs when VS2005 SP1 is not installed on the system has been fixed.

What's New with Release 0.2.0?

  • Supported platforms
    • Support for Windows* Intel® 64 architecture systems has been added.
  • Technical requirements
    • To use this release, you must have the Intel® Threading Building Blocks 2.1 installed. See Getting Started for details on how to download and install this version.
  • Textual notation enhancements
    • Declaration of step collections is allowed.
    • More error and warning messages added for legal graphs checking. For more information, please refer to Chapter 1.3 of the Intel® Concurrent Collections for C++ Reference Manual.
  • Functionality added
    • The constructor for the generated graph class now accepts an optional int parameter that specifies the number of desired threads to use at runtime. For more information, please refer to Chapter 2.2 of the Intel® Concurrent Collections for C++ Reference Manual.
  • Performance improvement
    • The processing of tag instances for steps is now faster.
  • Memory usage improvement
    • Memory usage has been improved with regard to the processing of tag instances for steps.
  • Some memory leaks have been fixed related to step instance objects.
  • Samples added
    • cholesky - an implementation of Cholesky decomposition
    • blacksholes - a Black-Scholes partial differential equation solver
  • Translator license expiration date
    • The license for the translator (cnc.exe) in the download package expires on 12/31/2009.
  • Documents updated
    • Getting Started
    • Intel® Concurrent Collections for C++ Reference Manual
  • Problems fixed
    • The library paths in Microsoft Visual Studio* 2008 sample projects have been corrected to point to the VC9 libraries instead of VC8.

System Requirements for Microsoft Windows Systems

Hardware

Minimum Requirements

Intel® Xeon® processor supporting Hyper-Threading Technology (HT Technology)

0.2 GB of disk space

Software

Minimum Requirements

Microsoft Windows* XP Professional, Microsoft Windows Server* 2003, Microsoft Windows Vista*, Microsoft Windows 7

Compilers:

Intel® C++ Compiler 11.1 for Windows or higher

Microsoft Visual C++* 7.1 or 8.0

A few sample codes use std::shared_ptr which require Microsoft Visual Studio* 2010/icc 12.1

Microsoft Internet Explorer* 6.0 or higher

Adobe Reader* 6.0 or higher

Microsoft Visual Studio* 2005, 2008 or 2010

Intel® Threading Building Blocks (Intel® TBB) 4.0 or higher

System Requirements for Linux Systems

Hardware

Minimum Requirements

Intel® Xeon® processor supporting Hyper-Threading Technology (HT Technology)

0.2 GB of disk space

Software

Minimum Requirements

Supported 64-bit Linux versions include Ubuntu* 11.04 and SLES* Linux* 10

Compilers:

Intel® C++ Compiler 11.1 for Linux or higher

GCC 4.1.2

A few sample codes use std::shared_ptr which require gcc 4.3/icc 12.1

Adobe Reader* 6.0 or higher

Intel® Threading Building Blocks (Intel® TBB) 4.0 or higher

Third Party Attributions

Intel® Concurrent Collections for C++ was created using the Caphyon Advanced Installer which uses the HTMLayout Component, copyright Terra Informatica Software, Inc. ().

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. UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.

The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or by visiting Intel's Web Site.

Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different processor families. See http://www.intel.com/products/processor_number for details.

Intel, Intel Atom, Intel Xeon Phi, and Intel Core are trademarks of Intel Corporation in the U.S. and/or other countries.

* Other names and brands may be claimed as the property of others.

Copyright (C) 2008-2013, Intel Corporation. All rights reserved.

有关编译器优化的更完整信息,请参阅优化通知