Changes between Version 81 and Version 82 of DevProjects


Ignore:
Timestamp:
Apr 9, 2013, 2:28:50 PM (12 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DevProjects

    v81 v82  
    2424There are several ways to get tasks to work on:
    2525
     26 * Read the list of proposed projects on this page.
    2627 * Scan the [/query BOINC bug database] for unresolved bugs or feature requests.
    27  * Read the list of proposed features on this page.
    2828 * Scan the [//dev/ BOINC message boards] for ideas.
    2929
     
    4040so that they can evaluate it and possibly check it in.
    4141
    42 == Proposed features ==
     42== Major projects ==
    4343The following development projects are available
    4444'''(Note: please do not add items to these lists.
    4545Suggest new items in the boinc_dev email list.)'''
    4646
    47 === High priority ===
     47=== Handle heterogeneous GPUs ===
     48Currently BOINC requires that all GPUs of a given vendor (NVIDIA, ATI, Intel) be similar,
     49and it treats them as a single pool
     50(i.e. jobs are not associated with a particular GPU instance).
     51This model has a number of drawbacks on machines with multiple different GPUs.
     52Change the model so that each GPU is treated separately.
     53This will require extensive changes to the client, scheduler, and RPC protocol.
    4854
    49  1. Change the GPU framework.
    50   Currently BOINC requires that all GPUs of a given vendor (NVIDIA, ATI, Intel) be similar,
    51   and it treats them as a single pool
    52   (i.e. jobs are not associated with a particular GPU instance).
    53   This model has a number of drawbacks on machines with multiple different GPUs.
    54   Change the model so that each GPU is treated separately.
    55   This will require major changes to the client, scheduler, and RPC protocol.
    56  1. The client's job scheduler has several O(N^2) algorithms,
    57   where N is the number of jobs queued on the client.
    58   Change these to Nlog(N).
    59  1. The scheduler's logic for selecting app versions is clumsy.
    60   Replace it with logic that, at the start, selects a version for each (app, resource type)
    61   and stores these in an array.
     55=== Eliminate O(n!^2) algorithms ===
     56The client's job scheduler has several O(N!^2) algorithms,
     57where N is the number of jobs queued on the client.
     58These cause the client to use lots of CPU when N is large (1,000).
     59Change these to Nlog(N).
     60
     61=== Automated testing of BOINC ===
     62
     63We plan to deploy a Jenkins-based automated test system for BOINC.
     64Help us add unit tests to the BOINC code,
     65and to design end-to-end tests that exercise the entire system
     66under a range of use cases and error conditions.
     67
     68=== Accelerating batch completion ===
     69
     70Volunteer computing resources are unreliable - computers fail,
     71people uninstall BOINC, and so on.
     72Roughly 5% of jobs fail or time out.
     73This means that in a batch of 10,000 jobs, 500 or so will fail.
     74We retry these (after a delay of a few days) and 25 or so will fail, and so on.
     75Thus is can take quite a long time to finish the entire batch.
     76
     77This problem can be solved by using more reliable computers to handle retries
     78and jobs at the end of a batch.
     79Doing so, however, is tricky.
     80Design and implement a mechanism for doing this.
     81
     82=== Improve app version selection ===
     83
     84The scheduler's logic for selecting app versions is clumsy.
     85Replace it with logic that, at the start of a request, selects a version for each (app, resource type)
     86and stores these in an array.
     87
     88== Small and medium-size project ==
     89
     90=== Enhance the BOINC Android GUI ===
     91
     92The current BOINC Android GUI is functional but not visually appealing,
     93and it lacks some usability features.
     94Design and implement improvements to the GUI.
     95Possibilities includes:
     96
     97 * Add graphics to the GUI; for example, allow projects to supply
     98   slide-show images illustrating their science.
     99 * Implement mechanism that allow users to smoothly navigate
     100   from the GUI to web-based features on project sites,
     101   as is done on the desktop BOINC GUI.
     102 * Implement the "notices" mechanism that allows project to push
     103   news items to volunteers.
    62104
    63105=== Web features ===