Intel® Cilk Plus Change Log

Intel C/C++ Compiler 14.0 RC1

  Bug fixes
    - CQ245528 - Cilk min/max reducers not binay compatible with V13

Intel C/C++ Compiler 14.0 beta 2

  Bug fixes
    - CQ244175 - cilk assertion failed: h (Improved assertion message)

Intel C/C++ Compiler mainline-to-14.0 branch cutoff

  Bug fixes
    - CQ178732 - __CILKRTS_CACHE_ALIGNED on leftmost_ in reducer class causes
                runtime crash/bad code with vectorization
    - CQ174205 - Cilk: reducer_list doesn't respect allocator for identity
    - CQ176977 - Feature request for Cilk reducer for multiplication
  User-visible Enhancements for Intel customers:
    - Added record/replay capability
    - New reducer infrastructure makes it easier for users to create
      custom reducers
    - Added support for variable-length arrays (VLAs) with _Cilk_spawn
  Other enhancements
    - Factored cilk_fiber out of scheduler
    - Removed obsolete debugger hooks
    - Support for Android
    - Support for ARM

Intel C/C++ Compiler 13.0, Update 2

- Bugs Fixed:
    - CQ233690 - Remove exceptions used to communicate with the Intel Debugger
                 extension for Visual Studio since it's been deprecated for 13.0
    - CQ181970 - Generate error when cilk_api.h is used with Cilk disabled
    - CQ238824 - undefined references generated from inline functions in
                 cilk_api
    - CQ181746 - spawning function called within a cilk_spawn argument list
                 causes crash.  (Library fix. Compiler changes also needed.)
    - Fixed documentation errors in (public) header files
    - MIC build fixes

  Enhancements:
    - Rebuilt with VS2008 on Windows
    - Updated copyrights on include files
    - Performance improvements in cilk_for (faster stack-frame lookup)
    - Added support for VX works

Intel C/C++ Compiler 13.0, Update 1

- Bugs fixed:
    - CQ DPD200177099 Performance Issues with cilk_for (Partial fix -- only
      the regression was fixed.)
    - CQ DPD200233690 Cilk run-time causes annoying messages from VS2010:
      First-chance exception at ... Intel Parallel Debugger Extension
      Exception in ...

  Enhancements:
    - Makefiles enhanced for cygwin

Intel C/C++ Compiler 13.0, RC1

- Bugs fixed:
    - CQ181970 - Use of __cilkrts_get_nworkers should trigger compile-time
                 error with -no-intel-extensions
    - CQ279605 - ACCVIO in cilkCpp/throw_left_1 on Win64 - Fixed initialization
                 of variable used to detect nested exceptions on Win64
    - CQ232986 - very short cilk_for loops corrupt the pedigree
    - CQ181131 - Bad assert when shutting down with only 1 worker
    - CQ178732 - __CILKRTS_CACHE_ALIGNED on leftmost_ in reducer class causes
                runtime crash/bad code with vectorization.  (Added assert,
                didn't actually make bug go away.  Will document for user.)
  Enhancements:
    - Added operator* to all reducers

Intel C/C++ Compiler 13.0, Beta Update 2

- Bugs fixed:
    - CQ180902 - Cilk/TBB interop problem - fixed interop call in
      do_return_from_spawn()
    - CQ265244 - Cilk integration with IDB - fixed exported symbol, singleton
      for global state.

Intel C/C++ Compiler 13.0, Beta Update 1

- Added __cilkrts_get_pedigree() to let applications walk pedigree chain
  themselves.  __cilkrts_pedigree_node renamed to __cilkrts_pedigree.
  __cilkrts_get_pedigree_info() is now deprecated.

- Bugs fixed:
    - CQ176501 - Fixed shutdown on Windows - wasn't calling
      WaitForMultipleObjects properly
    - Fixed problems with builtins
    - CQ189335 - Added comments to document more on how
      __cilkrts_set_param("nworkers") workers
    - CQ179865 - Fixed assertion failure whens spawning inside a reduce()

- Bugs fixes merged from 12.1 Update 10:
    - CQ173534, CQ272608 - cilkCpp/throw-after-merge test flaky on Win32 - 
      Added __cilkrts_stub_handler to SAFESEH list
    - CQ179865 - Fixed assertion failure when a reducer merge function spawned
    - CQ277750 - Test cilkCpp/rsp fails intermittently - Removed incorrect
      test of w->exc in __cilkrts_bind_thread
    
Intel C/C++ Compiler 13.0, Beta 1

- Bugs fixed:
    - CQ214655 - Exception failures on Mac OS.  Built the runtime with a new
      compiler, problem went away.
    - CQ178250, CQ178251 - Problems reading pedigrees after exceptions -
      Moved code to maintain pedigrees in __cilkrts_leave_frame
    - CQ178291 - Problems with TBB/Cilk interop - Fixed initialization race
      when starting Cilk runtime on multiple threads
    - CQ176020 - Fixed typos in reducer_min.h
    - CQ177905 - Pedigrees not useful outside of spawning functions - Extended
      pedigree to have 2 extra terms - thread# and "outer" rank
    - Fixed memory leak - freed memory allocated for user workers

Intel C/C++ Compiler 12.1, Update 8

- Bugs fixed:
    - CQ173480 - Initialization problem using Cilk Plus with ArBB/TBB on
      Windows - When started, the application quits with the message "An
      application was unable to start correctly"
    - CQ173692 - Return a failure code if the runtime is initialized when
      __cilkrts_set_param("nworkers") is called.
    - Fixed bug in pedigrees.  Needed to track that this pedigree has been
      used.
    - Exported __cilkrts_bump_worker_rank on Linux
    - Added support for pedigrees in cilk_for loops, provided
      __cilkrts_bump_loop_rank to allow users to provide support until
      the compiler bumps the loop rank on each serial iteration.
    - Fixed bug for Inspector - cilk_leave_stolen notification now only
      given when we're sure that the end-of-frame processing will go into
      the scheduler.
    - Use __notify_zc_intrinsic to lower annotation cost
    - Fixed bug in calculation of maximum number of workers.
    - CQ208005 - Flaky results on get_worker_number test.
    - CQ171932 - Undefined references to builtin symbols.

Open Source GCC Release 1 - Changes since release with Intel® C++ 
Compiler 12.1, Update 7

- Reorganized sources in preparation for open source release
- Document runtime internals using Doxygen

Intel C/C++ Compiler 12.1, Update 7

- Added support for pedigrees

- Added support for saving/restoring floating point state on steal and resume

- Bugs fixed:
    - CQ211720 - When we run out of possible exception handlers on Windows*
      OS (x86 64-bit), the application must be terminated.  We've run any 
      destructors as we walked up the stack, so trying to pass the exception 
      to Windows* will be a bad idea.
    - CQ159340 - Make sure the stack alignment on a steal on Windows* OS (x86 
      32-bit) matches the stack alignment of the original stack.  Was causing 
      issues with IPO and SSE instructions which have 16-byte alignment 
      requirements. Not a problem on Linux* or Windows* OS (x86 64-bit).

Intel C/C++ Compiler 12.0 Update 6

- Bugs fixed:
    - TBB Bugzila 1814 - Fixed interop with TBB
    - CQ214502 - Catch attempt to unwind off of stack when processing
      exceptions on Windows* OS (x86 64-bit)
    - Handle entry into Cilk on a fiber.
    - CQ169045 - Removed limits on user-specified cilk_for grainsize
    - Instead of terminating application when we fail to create a stack,
      lose parallelism
      
Intel C/C++ Compiler 12.0 Update 5

- Replaced spindown code with new, scheme that scales much better.

Intel C/C++ Compiler 12.0 Update 4

- Implemented spindown to improve performance of loops that call into Cilk
  code.

-----------------------------------------------------------------------------

Intel and Cilk 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.