Mobile computing is becoming more and more prevalent. However, it is likely to be the case for the foreseeable future that mobile computers will not be appropriate platforms for high-performance computing.
This is unfortunate, as there are many cases in which it would be extremely useful to have access to a supercomputer while "in the field". Fortunately, wireless communication capability is becoming more widely available in mobile devices. With a wireless connection, it is possible to remotely access high-performance supercomputers to perform computationally intensive calculations. However, wireless connections are slow, and it is not always worth suffering the latency to perform a small computation on a supercomputer.
This presents a dilemma for the mobile computer user - when should a computation be performed locally on the mobile computer, and when should it be shipped off to a faster computer? It is up to you to solve this dilemma using a performance prediction model and restructuring compiler technology.
Your first task will be develop a simple model for predicting the performance of loop nests executed in two situations - locally on the mobile computer and remotely on a more powerful server. Your model must account for the cost of copying data to and from the remote server. It should also be parameterized by the network bandwidth between the local and remote machine.
Your second task is to build a compiler which takes a loop nest as input and generates two programs, one for the local machine and one for the remote machine. At runtime, the program executing on the local machine will determine the size of the data sets, the network bandwidth, etc., and use the model to determine whether the loop should be executed locally or remotely. If the decision is made to execute remotely, then the second program running on the remote machine will be used to perform the computation.
The goals of the project are the following :-