Skip to content
This repository has been archived by the owner on Nov 8, 2022. It is now read-only.

Google Summer of Code 2012

jsreeram edited this page Mar 9, 2012 · 16 revisions

Google Summer of Code 2012

The goal of Intel Lab’s open-source River Trail project is to enable data-parallelism in web applications. In a world where the web browser is the user’s window into computing, browser applications must leverage all available computing resources to provide the best possible user experience. Today web applications do not take full advantage of parallel client hardware due to the lack of appropriate programming models. River Trail puts the parallel compute power of client’s hardware into the hands of the web developer while staying within the safe and secure boundaries of the familiar JavaScript programming paradigm. River Trail gently extends JavaScript with simple deterministic data-parallel constructs that are translated at runtime into a low-level hardware abstraction layer. By leveraging multiple CPU cores and vector instructions, River Trail achieves significant speedup over sequential JavaScript. The current prototype of River Trail works with the Firefox browser and is available at: https://github.com/RiverTrail/RiverTrail

Project Ideas

The following are a few interesting project ideas for students who wish to contribute to River Trail as part of the Google Summer of Code 2012 program. These are intended as possible starting points for the student's proposal, so narrowing/expanding of the project scope is ok as long as the mentors are aware of it. And of course, ideas not included in this list are welcome.

1. River Trail on Google Chrome

The current River Trail prototype works with Firefox only. The goal of this project is to port River Trail to run as an extension in Google’s Chrome browser using Google Native Client (NaCl), Pepper Plugin API (PPAPI), Netscape Plugin API (NPAPI) or other such interfaces supported by Chrome.

Skills: Familiarity with Chrome plugin interfaces, C++ and Javascript.

Mentor(s): sherhut & jsreeram

2. Profiling and Debugging support for River Trail

The prototype has very limited support for debugging parallel code. In this project the student will design and implement a framework that provides:

a) Supporting thread-safe output to the console (thread-safe printf to console)

b) A unified user-interface integrated into Firebug

The prototype has limited support for profiling parallel code. In addition to the above, the student will design a framework that provides:

c) Measurements of parallel execution time

d) Some characterization of the amount of parallelism achieved

e) Classification of runtime overheads

f) A user-interface integrated into Firebug

Skills: Familiarity with Firefox plugin interfaces, C++ and Javascript. Familiarity with Firebug and OpenCL is a plus.

Mentor(s): sherhut & jsreeram

3. Compiler Enhancements

In this project the student will design and implement enhancements to the River Trail prototype compiler such as one or more of:

a) Support for function inlining

b) Copy elimination (copies due to assignment statements as well as return statements)

c) Improved memory allocation

Skills: Experience with C and Javascript and knowledge of basic compiler concepts. Experience in compiler code generation is a plus.

Mentor(s): sherhut & jsreeram

4. Parallel web applications with River Trail

In this project the student will port/develop one or more interesting applications using River Trail. Examples ideas for applications or domains:

a) Simple real-time object tracking

b) A port of the JSmad audio decoder to River Trail

c) Parallelizing character skinning using River Trail

d) Large scale data visualization

Skills: Javascript

Mentor(s): sherhut & jsreeram


Student Application Template

Students who wish to apply should use the following template

  • Name

  • Email

  • Phone

(optional)

  • Your background and education:

Please provide a short description of your education and work experience specifically experience related to your proposal

  • Abstract

A short description of your proposal

  • Details

A detailed description of your proposal including details of the problem you wish to solve and what challenges you see in solving it.

  • Deliverables

What do you expect to deliver at the end of the program ?

  • Schedule

List a series of three milestones and what you hope to have accomplished

  • Mentor expectations

What do you expect from your mentors? What help do you need from them to make progress?