C$ Project Home Page

The aim of this project is creating a unified language and system for seamless parallel programming on modern GPU's and CPU's. In future, it is planned to be extended to other processors.

News

10.10.2007 Publications & Presentations section added, with two publications uploaded. More publications to follow...

12.02.2007 The C$ Project home page created.

Project Idea & Description

The concept of C$ project comes from several sources. The project started as a quest for a convenient,portable and expressive language for GPGPU programming, as existing languages were either low-level or lacked expressivity. However, the GPU is not the only source of parallelism on the PC. The other source is modern multi-core processors. With the emergence of other commodity-level processors (such as CELL), a convenient language for writing parallel programs becomes very desirable.

We propose our C$ langauge as a C#-like language extended with several features for parallel programming support. C$ is a data-parallel function-level object-oriented language. The features C#-like language is extended with are as follows:
C$ language shall allow to write portable and efficient programs which can run on a number of parallel architectures, including GPU-equipped commodity PCs. C$ is indended for writing various domain-specific libraries for parallel architectures, which, in turn, can be used to write HPC applications in C$.

C$ is intended to be translated to a number of target architectures (backends). Currently the list of intended architectures includes GPU, Multi-core CPU, Multi-GPU (SLI, CrossFire), and Multi-GPU + Multi-CPU Hybrid Architecture. In future, other architectures may be added, such as CELL processors, GPU clusters and GPU grids, as the data-parallel nature of the language is not tied to any particular architecture.

The language can be either interpreted (interpreter is being written now as a proof-of-concept), or compiled. Currently compilation into .NET MSIL code is intended, with function-parallel code being compiled into calls to C$ runtime for building expression trees, which then are optimized in run-time and executed on a backend.

Further info about C$ can be obtained from the documents published below.

Publications & Presentations

2007

Adinetz A. V., Sakharnykh N. A., On Approaches to GPU Programming, Scientific Service in Internet 2007: Multicore Computer World (In Russian), September 23-29, Abrau-Durso, Russia
PDF (In Russian) Slides (PDF, in Russian) Slides (PPTX, in Russian)

Adinetz A. V., A Higher-Level and Portable Approach to GPGPU programming, SYRCoSE'2007, May 31-June 1, Moscow, Russia
PDF (In English) Slides (PDF, in English) Slides (PPTX, in English)

Language Documents

C$ Language Concept
C$ Main Idea
C$ System Structure
C$ Sample Code (not final)

Support & Acknowledgements

Planned Releases