Opened 6 years ago

Last modified 2 years ago

#1537 new proposed-project

Add NVIDIA CUDA backend for Data Parallel Haskell

Reported by: basvandijk Owned by:
Priority: OK Keywords: CUDA, Data Parallel Haskell, Concurrency
Cc: Difficulty: 3 people Summer
Mentor: not-accepted Topic: Concurrency

Description (last modified by basvandijk)

Introduction

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

CUDA

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 (6)

comment:1 Changed 6 years ago by basvandijk

  • Description modified (diff)
  • Difficulty changed from 2 people Summer to 3 people Summer

comment:2 Changed 6 years ago by nominolo

  • Priority set to bad

Likely too big.

comment:3 Changed 6 years ago by dons

See Roman's comments here:

http://article.gmane.org/gmane.comp.lang.haskell.cafe/37538

This is really a PhD project.

comment:4 Changed 5 years ago by rkudiyarov

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 4 years ago by dons

  • Priority changed from bad to OK

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

comment:6 Changed 2 years ago by 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.

Note: See TracTickets for help on using tickets.