In this project, we present our implementation of a network, consisting solely of mobile devices, that enables performing parallel computing tasks. The code may be installed on Android devices and then implemented algorithms can be run in parallel using the connected devices.
We defined the goals to be as follows:
- Building and maintaining a network employing non-stable mobile device connections.
- Developing a platform for utilizing mobile devices in parallel computing.
- Creating a flexible network infrastructure that will enable addition of new algorithms and other developments.
- Determining the viability of the proposed solution.
- The network effected consists of a single server device and multiple user devices. The server is the main node of the network and has the assignment of storing, maintaining and distributing a table that defines the network functionality. The user devices can act in two capacities, Helper and Help Requester. Helpers communicate with a Help Requester and receive a task to be performed which they run on the local system and update the Help requester with the results. Help Requesters parcel a resource consuming assignment into many shorter tasks and provides the required information to connected Helpers. Once some or all the tasks are complete the Help Requester can use the data received from the Helpers to complete the overall task.An objective of ours was to give the project a modular structure so that the implementation of any functionality can be readily changed or augmented. In this manner, we enable developers to modify the behavior of the network. For Example, one can easily change a simple method and Helpers will choose which Help Requester to prioritize or have user devices provide additional data for the Server to contain.To measure the performance of our project we connected up to four devices as a network, and compared the run times of an algorithm using a single Helper or two Helpers.