Hi,

I checked this into cilkplus branch.  Jason, can you also mirror
branches/cilkplus in GCC git mirror?

Thanks.

H.J.
----
On Mon, Aug 15, 2011 at 1:30 PM, Iyer, Balaji V <balaji.v.i...@intel.com> wrote:
> Hello Everyone,
>   This letter describes the recently created GCC branch called "cilkplus" 
> that ports the Intel(R) Cilk(TM) Plus language extensions to the C and C++ 
> front-ends of gcc-4.7. We are looking for collaborators and advice as we 
> proceed - both on this open-source gcc project, and on the open language 
> specification. The compiler and its associated runtime are available at:  
> http://gcc.gnu.org/svn/gcc/branches/cilkplus . The URL for the patch is 
> available at: http://software.intel.com/file/38093 .
>
>   Intel Cilk Plus is a set of C and C++ constructs for task-parallel and 
> data-parallel programming for improving performance on multicore and vector 
> processors. This language extension includes the following features:
>
> 1.  Three keywords provide a simple yet powerful model for parallel 
> programming: _Cilk_spawn, _Cilk_sync and _Cilk_for. Reducers provide an easy, 
> lock-free way to deal with shared data.
>
> 2.      Simple array notations including elemental functions allow 
> programmers to easily use data-parallelism.
>
> 3.      Pragmas communicate SIMD information to the vectorizer to help ensure 
> that loops are vectorized correctly.
>
>   The implementation of Intel Cilk Plus language extensions to gcc requires 
> the above patches to the C and C++ front-ends, plus a copy of the Intel Cilk 
> Plus runtime library (Cilk Plus RTL).  Both of these have been checked into 
> the new gcc branch.  The Cilk Plus RTL is being maintained by using an 
> upstream, BSD-licensed version available at http://www.cilkplus.org .  
> Changes to the Cilk Plus RTL are welcome and must be contributed to the 
> upstream version via this web site.  A contribution process is in place for 
> receiving such changes; see http://www.cilkplus.org for details.
>
>   In this release, the C and C++ compiler parsers now accept the three 
> keywords _Cilk_spawn, _Cilk_sync, and _Cilk_for, as well as a pragma to 
> adjust the grainsize of _Cilk_for. The list below provides a brief 
> explanation of each of the keywords. For more details, see the "Intel(r) 
> Cilk(tm) Plus Language Specification" at http://www.cilkplus.org .
>
> 1.      _Cilk_spawn - Annotates a function-call and indicates that execution 
> may (but is not required to) continue without waiting for the function to 
> return. The syntax is:
> [ <type> <retval> = ] _Cilk_spawn <postfix_expression> (<expression-list> 
> (optional)) ;
>
> 2.      _Cilk_sync - Indicates that all the statements in the current Cilk 
> block must finish executing before any statements after the _Cilk_sync begin 
> executing. The syntax is:
> _Cilk_sync ;
>
> 3.      _Cilk_for - Is a variant of a for-statement where any or all 
> iterations may (but are not required to) execute in parallel. You can 
> optionally precede _Cilk_for with a grainsize-pragma to specify the number of 
> serial iterations desired for each chunk of the parallel loop. If there is no 
> grainsize pragma or if the grainsize evaluates to '0', then the runtime will 
> pick a grainsize using its own internal heuristics. The syntax:
> [ #pragma cilk grainsize = <expression> ] _Cilk_for (<assignment_expression> 
> ; <condition> ; <expression>)
>     <statement>
>
>   The parser will accept these keywords and insert the appropriate functions 
> to interact with the runtime library. Along with these keywords, you can use 
> #pragma simd directives to communicate loop information to the vectorizer so 
> it can generate better vectorized code. The five #pragma simd directives are: 
> vectorlength, private, linear, reduction, and assert. The list below 
> summarizes the five directives. For a detailed explanation please refer to 
> the "Intel(r) Cilk(tm) Plus Language Specification" at 
> http://www.cilkplus.org .
>
> 1)      #pragma simd vectorlength (n1, n2 ...): Specify a choice vector width 
> that the back-end may use to vectorize the loop.
>
> 2)      #pragma simd private (var1, var2, ...): Specify a set of variables 
> for which each loop iteration is independent of each other iterations.
>
> 3)      #pragma simd linear (var1:stride1, var2:stride2, ...): Specify a set 
> of variables that increase monotonically in each iteration of the loop.
>
> 4)      #pragma simd reduction (operator: var1, var2...): Specify a set of 
> variables whose value is computed by vector reduction using the specified 
> operator.
>
> 5)      #pragma simd assert: Directs the compiler to halt if the vectorizer 
> is unable to vectorize the loop.
>
>   The current implementation of the runtime library has been tested on x86 
> (both 32 and 64 bit) architectures. In theory, the runtime library should not 
> be too difficult for you to port to other architectures. However, be aware 
> that access to shared variables currently assumes sequential consistency, so 
> architectures that use a different memory model may require you to insert 
> additional memory barriers.
>
>   These language extensions provide a simple, well-structured, and powerful 
> model for parallel programming. Intel hopes that you will find these 
> extensions to be a useful and significant enhancement to the GCC C and C++ 
> compiler. In this initial release, the array notations and elemental 
> functions present in the full Intel(r) Cilk(tm) Plus Language Specification 
> are not yet implemented. Intel welcomes help and advice from all contributors 
> in the GCC community.  Please see http://www.cilkplus.org for more 
> information on community involvement in this open-source project.
>
>   If you have comments, suggestions or questions, please contact Balaji V. 
> Iyer at balaji.v.iyer  -AT- intel.com.
>
> Yours sincerely,
>
> Balaji V. Iyer,
> Intel Corporation
> ------------------------------------------------------------------------------------------------------------------------------
> 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.
>
>
>
>
>



-- 
H.J.

Reply via email to