cross splitpoints; they will generate compiler warnings . In order to parallelize this loop, a special 'Iterator' class may be used in place of a standard integer looping counter. It is safe for parallelization, and the programmer is free to create new Iterator classes at will . In addition to these Iterator classes, the programmer is free to implement classes called 'Accumulators' which are used to carry out reduction operations. The way the Iterator classes are implemented opens up various means for scalability. The Sieve Parallel Runtime employs dynamic speculative execution when executing on a target platform. This can yield very good speedups, however running on a single core machine can incur overheads . Determinism Determinism is an unusual feature of the Sieve System. If executing a parallel Sieve program on a multi core machine yields a bug, the bug will not disappear when run on a single core to aid debugging. This has the advantage of eliminating race conditions, one of the most common bugs in concurrent programming. The removal of the need to consider concurrency control structures within a sieve block can speed up development time and results in safer code. Supported Systems The system is designed for hierarchical based systems with homogeneous or heterogeneous CPU cores which have local memories, connected via DMA engines or similar memory transfer models. Sieve has been shown successfully operating on multi-core x86 systems, the Ageia PhysX Physics Processing Unit, and the IBM Cell microprocessor. ANSI C is generated if a compiler code generator is not available for a certain target platform. This allows for autoparallelization using existing C compilation toolkits . See also Software transactional memory Alias analysis OpenMP Threading Building Blocks (TBB) Cilk/Cilk Plus Speculative execution References Auto-parallelisation of Sieve C++ Programs Alastair Donaldson, Anton Lokhmotov, Colin Riley, Andrew Cook. In Proceedings of the Euro-Par Workshop Highly Parallel Processing on a Chip (HPPC'07), Rennes, France, August 2007. Lecture Notes in Computer Science 4854, 2007. Delayed Side-effects Ease Multi-core Programming Anton Lokhmotov, Alan Mycroft, Andrew Richards. In Proceedings of the 13th International Euro-Par Conference, Rennes, France, August 2007. Lecture Notes in Computer Science 4641, 641-650, 2007. Implementing deterministic declarative concurrency using sieves S. Lindley. In proceedings of DAMP 2007: Workshop on Declarative Aspects of Multicore Programming Nice, France, January 2007. The Codeplay Sieve C++ Parallel Programming System A. Richards. White paper, 2006. Codeplay Sieve C++ System Presentation Scott McKenzie, presented at