Opened 10 years ago

Last modified 3 years ago

#1537 new proposed-project

Add NVIDIA CUDA backend for Data Parallel Haskell

Reported by: Bas van Dijk Owned by:
Priority: bad Keywords: CUDA, Data Parallel Haskell, Concurrency
Cc: Difficulty: 3 people Summer
Mentor: not-accepted Topic: Concurrency

Description (last modified by Bas van Dijk)


This ticket proposes to add a NVIDIA CUDA backend for the Data Parallel Haskell extension of GHC.


To quote Wikipedia on CUDA:

"CUDA ("Compute Unified Device Architecture"), is a GPGPU technology that allows a programmer to use the C programming language to code algorithms for execution on the GPU... CUDA gives developers unfettered access to the native instruction set and memory of the massively parallel computational elements in CUDA GPUs. Using CUDA, Nvidia GeForce-based GPUs effectively become powerful, programmable open architectures like today’s CPUs (Central Processing Units). By opening up the architecture, CUDA provides developers both with the low-level, deterministic, and for repeatable access to hardware that is necessary API to develop essential high-level programming tools such as compilers, debuggers, math libraries, and application platforms."

To me, the exciting thing about CUDA is, if not the technology itself the high availability of CUDA enabled "graphic" cards. It is estimated that by the end of 2007 there will be over 40,000,000 CUDA-capable GPUs!

Also see the NVIDIA CUDA site.

Data Parallel Haskell

To quote the Haskell Wiki on DPH:

"Data Parallel Haskell is the codename for an extension to the Glasgow Haskell Compiler and its libraries to support nested data parallelism with a focus to utilise multi-core CPUs. Nested data parallelism extends the programming model of flat data parallelism, as known from parallel Fortran dialects, to irregular parallel computations (such as divide-and-conquer algorithms) and irregular data structures (such as sparse matrices and tree structures)..."

The project

It turns out people are actually already working on this. See this thread on haskell-cafe.

I actually think this project is to big for a Google Summer of Code project. It's more suitable for a Masters project I guess. However the project can be broken into several sub-projects that each address a different research question. Immediate questions that come to mind are for example:

  1. How to compile DPH code to CUDA C code?
  2. How to integrate normal Haskell code with CUDA backed DPH code?
  3. <add your question here>

Interested Mentors

  • ?

Interested Students

  • ?

Change History (7)

comment:1 Changed 10 years ago by Bas van Dijk

Description: modified (diff)
Difficulty: 2 people Summer3 people Summer

comment:2 Changed 10 years ago by nominolo

Priority: bad

Likely too big.

comment:3 Changed 10 years ago by dons

See Roman's comments here:

This is really a PhD project.

comment:4 Changed 8 years ago by Roman

I understand that is big work, but I want to use results of work in my master dissertation. If you have a people who maybe a mentor, it will be easy for me to implement so big functional.

comment:5 Changed 8 years ago by dons

Priority: badOK

Should be easier now with the CUDA library, more mature DPH, and the accelerate library.

comment:6 Changed 6 years ago by Dmitry Dzhus

Given much progress in DPH over last years, I believe that perhaps some other projects may be done in the field of NDP? Could someone prompt at possible direction of study? I'm quite interested in the subject.

comment:7 Changed 3 years ago by Edward Kmett

Priority: OKbad

Downgrading this proposal to bad, as written.

DPH has more or less gone fallow over the last few years.

Libraries like accelerate have slipped in to fill the void on the CUDA front.

Note: See TracTickets for help on using tickets.