Chapel Parallel Programming Language
|Mentor||Michael Ferguson (mppf)|
|Suitable for Beginners?||no|
|Tags||Chapel parallel computing algorithms sorting high performance computing|
|Applications (1st Choice)||7 (6 submitted | 1 in-progress)|
|Applications (2nd Choice)||2 (2 submitted | 0 in-progress)|
|Code of Conduct||https://github.com/chapel-lang/chapel/issues/8276|
|License||Apache License 2.0 (Apache-2.0)|
Chapel is an open-source programming language designed for productive parallel computing at scale.
Chapel supports parallelism at the language level. For instance, Chapel provides a "coforall" loop, which is similar to a "for" loop and creates a separate task per iteration of the loop body. These explicit parallelism features make it easier to reason about the parallelism in your algorithm and program.
Data and Task Locality
When working on a large machine, the location of some data relative to the task which uses it or other data with which it must work plays a key role in performance. Chapel provides features which allow you to control that placement, both within a data structure and outside it.
Chapel is designed around a multiresolution philosophy, permitting users to initially write very abstract code and then incrementally add more detail until they are as close to the machine as their needs require.
Modern Language Features
Chapel supports code reuse and rapid prototyping via object-oriented design, type inference, and features for generic programming.
Existing code from other languages can be integrated into Chapel programs (or vice-versa) via interoperability features.
This project will require you to learn the Chapel programming language.
To succeed at this project, you will need:
- Proficiency in some programming language
- Exposure to the big-O complexity analysis of algorithms
Additionally, we ask that you do the following during the application process:
- Learn to write basic Chapel programs before applying (see this page)
- Be prepared to show off some of your Chapel programs in your application
Bonus points if you have familiarity with any of:
- parallel programming (e.g. pthreads, OpenMP, ...)
- distributed memory programming (e.g. MPI, UPC, ...)
- sorting algorithms (radix sort, quicksort, ...)
Tasks And Features
The Chapel standard library comes with a Sort module that includes many sorting functions. However the parallel performance of these sort algorithms has not been studied in detail, and furthermore the module is missing a radix sort. This project would consist of three phases. First, implement radix sort - including developing a API for specifying keys. Second, perform performance studies of both radix sort and the existing sorts and improve the implementations if possible. Finally, develop distributed radix sort and measure the performance of distributed sorting.
You must be logged in to comment on this project.
Sarthak Munshi, Wednesday, February 28, 08:46 UTC
Hi! I am available as a coach for this project. I was an ex-GSoC student for Chapel. You can contact me directly at email@example.com
Engin Kayraklioglu, Tuesday, February 27, 22:00 UTC
Hi! I am available as a coach for this project. You can contact me directly at firstname.lastname@example.org
Jonathan Dursi, Saturday, February 24, 20:05 UTC
Hi! I'm Jonathan Dursi, available to help coach for this project; I've spent a lot of time doing computing for science ranging from astrophysics to genomics, and while I'm comparatively new to Chapel, I'm very excited about it as both a programming language and as a community. Once you've started discussing the project in general with the community on Gitter or the Chapel GSoC mailing list, feel free to contact me directly at email@example.com.
Louis Jenkins, Friday, February 23, 18:05 UTC
Hello, I'm available as a coach for this project. If you wish to converse via email contact me at LouisJenkinsCS@hotmail.com
Ben Albrecht, Friday, February 23, 15:58 UTC
Hi, I am available as a coach for this project. If you want to talk to me, you can find me online on the Gitter channel.
Michael Ferguson, Monday, February 12, 15:01 UTC
I'll try to occasionally monitor comments on this page but then I'll just point people to the following resources:
For getting in touch / asking questions about the project:
- IRC, if your hours happen to overlap with ~9-5 UTC-5 (for communicating with me personally) - #chapel-developers or #chapel on freenode - see https://chapel-lang.org/developers.html
- Gitter, which allows messages to be read later for people who aren't online at the same time - https://gitter.im/chapel-lang/chapel
- Chapel GSoC mailing list (also appropriate for RGSoC): https://sourceforge.net/p/chapel/mailman/chapel-gsoc/
The benefit of using these communication mediums is that other community members can help in many cases.
If you're interested in contributing or applying and are looking for a place to start, see https://chapel-lang.org/contributing.html
Thanks everybody for your interest!
Sakshi Shukla, Saturday, February 10, 18:15 UTC
Namrata and I are looking really forward to take up this project. We both are quite inclined towards machine learning and data structures and we have some great ideas to implement on. We have acquired a good knowledge of python and data structures. We loved the idea of the project and to take this up. We look forward to your reply!
Louis Jenkins, Friday, February 9, 22:17 UTC
psxpa3, Friday, February 9, 18:38 UTC
I (Priya) with my friend (Kavya) wants to work on this project. We collaboratively have the skills required for this project. So, could we have a quick meeting (skype or whatever way) to get to know more about this project and what sort of prior contributions, if any, is needed before filing the application for RGSoc.
email id: firstname.lastname@example.org
Rupal-IIITD, Sunday, February 4, 17:55 UTC
We are a team applying for RGSoC this year. We really liked the concept of your project and are considering to submit a proposal for it. I wanted to get in touch with you to explore more about the project and for clearing our queries regarding the project deliverables and tasks (contributions to be made for applying, etc.) to get started on.
Looking forward to get in a conversation with you. :)
Michael Ferguson, Wednesday, January 24, 16:44 UTC
Code of Conduct
We're a relatively small community that hasn't created a code of conduct yet but many of us are interested in doing so. In the application above, we linked to an issue discussing the topic. Even though we don't have a formal code of conduct yet, we believe that we have a pleasant and welcoming community.