Intel® C++ Compiler 16.0 User and Reference Guide
int __cilkrts_bump_loop_rank(void);
This function ensures that no two loop iterations share a pedigree.
Each iteration of a cilk_for loop should start with a different pedigree. However, because of the way that the runtime breaks cilk_for loops into grains (see cilk_for), the pedigree can remain unchanged over consecutive iterations within a grain. Calling __cilkrts_bump_loop_rank() at the end of each loop iteration ensures that no two loop iterations will share a pedigree.
The following guidelines apply to __cilkrts_bump_loop_rank():
Do not call __cilkrts_bump_loop_rank() unless you intend to read the pedigree during the loop; doing so may inhibit vectorization of the loop.
Do not call __cilkrts_bump_loop_rank() more than once within the loop; doing so will create overlapping pedigrees across grains.