| 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 === |
| | 56 | The client's job scheduler has several O(N!^2) algorithms, |
| | 57 | where N is the number of jobs queued on the client. |
| | 58 | These cause the client to use lots of CPU when N is large (1,000). |
| | 59 | Change these to Nlog(N). |
| | 60 | |
| | 61 | === Automated testing of BOINC === |
| | 62 | |
| | 63 | We plan to deploy a Jenkins-based automated test system for BOINC. |
| | 64 | Help us add unit tests to the BOINC code, |
| | 65 | and to design end-to-end tests that exercise the entire system |
| | 66 | under a range of use cases and error conditions. |
| | 67 | |
| | 68 | === Accelerating batch completion === |
| | 69 | |
| | 70 | Volunteer computing resources are unreliable - computers fail, |
| | 71 | people uninstall BOINC, and so on. |
| | 72 | Roughly 5% of jobs fail or time out. |
| | 73 | This means that in a batch of 10,000 jobs, 500 or so will fail. |
| | 74 | We retry these (after a delay of a few days) and 25 or so will fail, and so on. |
| | 75 | Thus is can take quite a long time to finish the entire batch. |
| | 76 | |
| | 77 | This problem can be solved by using more reliable computers to handle retries |
| | 78 | and jobs at the end of a batch. |
| | 79 | Doing so, however, is tricky. |
| | 80 | Design and implement a mechanism for doing this. |
| | 81 | |
| | 82 | === Improve app version selection === |
| | 83 | |
| | 84 | The scheduler's logic for selecting app versions is clumsy. |
| | 85 | Replace it with logic that, at the start of a request, selects a version for each (app, resource type) |
| | 86 | and stores these in an array. |
| | 87 | |
| | 88 | == Small and medium-size project == |
| | 89 | |
| | 90 | === Enhance the BOINC Android GUI === |
| | 91 | |
| | 92 | The current BOINC Android GUI is functional but not visually appealing, |
| | 93 | and it lacks some usability features. |
| | 94 | Design and implement improvements to the GUI. |
| | 95 | Possibilities 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. |