Projects/GeneralCompute

From OLPC
Jump to: navigation, search

1. Project Title & Shipment Detail

Name of Project: GeneralCompute - Support for heterogeneous computing.
Number of Laptops (or other hardware) You Request to Borrow: 1
Loan Length—How Many Months: 8-10 months.


2. Team Participants

Employer and/or School: Not working on behalf of any employer or school. This is a community and opensource project.


3. Objectives

Project Objectives:
Most computing device in the market have more that one processor i.e. CPU, GPU (programmable/non-programmable), DSP etc. These processors are supplied by different or same vendor. But to take advantage of these processors, vendors usually supply different set of APIs for each of these processors. There is a publicly available open standard that defines a common API to take advantage of these heterogenous computing devices. The OLPC laptop already has a GPU. Hence it already is hosting atleast two computing devices. It will be beneficial to support a "General Compute" API for the developers who can then take advantage of these devices in a uniform manner. This proposal will benefit the programmers who develop middleware or applications.


4. Plan of Action

Plan and Procedure for Achieving the Stated Objectives:
There are six aspects of this project:
* Driver development.
* Porting of available opensource low-level VM and mapping them to the target computing devices in the system.
* Public API development.
* Testing.
* Documentation.
* Demos. (This is not covered by this project)
This is a 8-10 man-months project (if considered full-time, which may not be the case). This is a C/C++ API. Python binding is not considered in this proposal. A separate Python binding project certainly will benefit.


5. Needs

Why is this project needed?
Please refer the project objectives.
Locally?
This project will benefit atleast the OLPC community of developers globally.
In the greater OLPC/Sugar community?
Please refer the project objectives.
Outside the community?
There is no reason why this project cannot be ported to other embedded Linux platforms. It will help other Linux communities as well. This development sits between the OS kernel and the middleware and application developers. Hence it will not be directly exposed to the end user.
Why can't this project be done in emulation using non-XO machines?
This project will require the target to write the drivers and the mapping of VM to the target devices.
Why are you requesting the number of machines you are asking for?
1 machine is sufficient for 1-2 developers if they are local and be able to share. Presently I am the only one working on this project, hence single machine will suffice.
Will you consider (1) salvaged/rebuilt or (2) damaged XO Laptops?
No. It helps to have a non-damaged target device for testing. Also I require a English keyboard layout.


6. Sharing Deliverables

Project URL: http://wiki.laptop.org/go/Projects/GeneralCompute
How will you convey tentative ideas & results back to the OLPC/Sugar community, prior to completion?
For communication: IRC, community forum or OLPC help/mailing list.
For deliveries: The OLPC source code repository.
How will the final fruits of your labor be distributed to children or community members worldwide?
This project will not directly help the end user. It will help the middleware and application programmers. The APIs provided will be C/C++. But a Python binding is possible.
Will your work have any possible application or use outside our community?
This project will not be directly exposed to the end user and there is no reason why the project cannot be ported to other Linux platforms.
If yes, how will these people be reached?
At present I would rather concentrate on getting things done for this platform and community. I believe that fragrance automatically reaches everywhere, it does not require marketing :) I will concentrate on making my project fragrant, if it is good it will certainly generate interest and people will take notice. I will require participants who can write better documents than me. But this will not be required immediately.
Have you investigated working with nearby XO Lending Libraries or Project Groups?
There is not one availabe as yet, and waiting for one is waste of time.


7. Quality/Mentoring

Would your Project benefit from Support, Documentation and/or Testing people?
Yep, very much. Initially it will require documentation and support for the hardware platform.
Teachers' input into Usability?
This project will not directly affect the end user. It is intended to help the middleware and application programmers.
How will you promote your work?
Through forums, mailing lists and IRC. And also please do refer "how will these people be reached?" section above.
Can we help you with an experienced mentor from the OLPC/Sugar community?
Yep, sure. I will certainly give a shout when required. Mostly I will be looking for someone with the hardware knowledge of the platform.
If YES: specify the kind of Ongoing Mentoring that will benefit you most.
Help from hardware engineers will certainly benefit, e.g. in the form of documentation on internal workings of the hardware.
If NO: specify who will help you share your progress, creations & results.
NA.


8. Timeline (Start to Finish)

Please include a Proposed timeline for your Project life-cycle:
There will be six phases of the development (in the order specified):
* Understanding and Driver development - 1 month.
* Porting of available opensource low-level VM and mapping them to the target computing devices in the system - 2 months.
* Public API development - 2-3 months.
* Testing - Cummulative - 1-2 months.
* Documentation - Cummulative - 1-2 months. (The public API is already well documented.)
* Demos. (This is not covered by this project)
This is a 8-10 man-months project (if considered full-time, which may not be the case). This is a C/C++ API. Python binding is not considered in this proposal. A separate Python binding project certainly will benefit.
Specify how you prefer to communicate your ongoing progress and obstacles!
Through source code submissions, forums, mailing lists and IRC.