This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Merging Cilk Plus into GCC Trunk
- From: Aldy Hernandez <aldyh at redhat dot com>
- To: "Iyer, Balaji V" <balaji dot v dot iyer at intel dot com>
- Cc: "'gcc at gcc dot gnu dot org'" <gcc at gcc dot gnu dot org>, Jeff Law <law at redhat dot com>, "rth at redhat dot com" <rth at redhat dot com>
- Date: Tue, 04 Sep 2012 17:23:56 -0500
- Subject: Re: Merging Cilk Plus into GCC Trunk
- References: <BF230D13CA30DD48930C31D40993300016C60B73@FMSMSX102.amr.corp.intel.com>
On 08/30/12 15:39, Iyer, Balaji V wrote:
Hello Everyone,
The Cilk-Plus branch is feature-complete. Programs using Cilk Plus constructs get great performance on vector and multicore hardware. Programs that don't use the new language features (enabled by a -fcilkplus flag) see no change. For details please see http://cilkplus.org.
It's time to promote the branch into mainline. Cilk Plus branch is stable and there is no unexpected failures with respect to the trunk in regression testsuites. Most of the changes are in the front and middle-end. Since it involves many changes, I plan to break it up into individual patches (listed below), each of which adds a new, complete capability. Later patches sometimes use the functionality added by the previous one. For example, Elemental functions for C++ will depend on some of the common routines used in C patch:
Hi Iyer.
Thank you for all your work on this.
Perhaps it is of interest to note (IIRC), that the language extensions
have been proposed for inclusion in the next OpenMP version??
I can't speak for the rest of the community, but I think items 1-12 are
useful for GCC (elemental functions, SIMD annotations, and array
notations for C/C++), regardless of any language extensions. Perhaps
you could provide examples on these as a start?
Regarding the SIMD annotations, I find the "vector" attribute somewhat
ambiguous, or prone to confusing users, so perhaps we could come up with
a better name?
Over all, I don't see why this can't be included as an experimental
feature like OpenMP, transactional memory, etc, especially if it's
relatively self contained and doesn't affected the non cilkplus code
path too much.
Anyone have further thoughts on this, especially global maintainers :)?
Aldy
1. Elemental functions for C.
2. Regression tests for elemental functions for C.
3. Elemental functions for C++.
4. Regression tests for elemental functions for C++.
5. SIMD annotations for C.
6. Regression tests for SIMD annotations for C.
7. SIMD annotations for C++.
8. Regression tests for SIMD annotations for C++.
9. Array notations for C.
10. Regression tests for Array notations for C.
11. Array Notations for C++.
12. Regression tests for Array Notations for C++.
13. The Cilk Runtime library -- It is a separate directory without any changes to compiler source.
14. Cilk Keywords (_Cilk_spawn and _Cilk_sync) for C.
15. Regression tests _Cilk_spawn and _Cilk_sync for C.
16. Cilk Keywords (_Cilk_spawn and _Cilk_sync) for C++.
17. Regression tests _Cilk_spawn and _Cilk_sync for C++.
18. Cilk Keywords (_Cilk_for) for C.
19. _Cilk_for Regression tests for C.
20. Cilk Keywords (_Cilk_for) for C++.
21. _Cilk_for Regression tests for C++.
22. Documentation about Cilk Plus into GCC documents.
If there is a more effective way to merge our changes to the trunk, I am open to suggestions.
Thanking You,
Yours Sincerely,
Balaji V. Iyer.