next up previous contents
Next: Theoretical considerations Up: Programming for the GPU Previous: Differences with centralized frameworks   Contents

GPU Protocol

The GPU protocol is very simple. A more advanced proposal is given in BOINC for the centralized model, and in [16] for a Peer-to-Peer approach. Due to Delphi, and viewed that the computing engine is encapsulated in a component, getting other protocols on the framework is easy, namely throw another component on the Delphi form. Currently in GPU, the component that does connections to Gnutella was written and is maintained by a German programmer, Kamil Pogorzelski [17].

As we saw previously, in the file-sharing network there are two types of packets (there are more [5], but these are the ones that concern us): the request for files and the answer. The GPU framework does it similarly; it creates a request string or an answer and spreads it throughout the Gnutella disguised as search string for files. This is inelegant, but fits our need of rapid prototyping and of compatibility with other Gnutella clients3. This might change in future, as we hope to provide a cleaner implementation with Gnutella packets dedicated to the GPU framework. A priority queue might be useful, too. Users with long uptime and many computed results should be privileged with high-priority requests.


A request for computational time is built as follows; fields are separated by GPU with ':'.


Table 1: GPU Request
Request Header identifies search for files as computational job
Internal ID each job gets a different identifier, so that
  the list in Gnutella does not block the packet,
  if the same job is submitted twice.
GUID Global Unique Identifier, identifies requester on network
JobID ID for the GPU Job
Command String to be interpreted by the Virtual Machine



Table 2: GPU Result
Result header identifies search for files as result of a computation
Internal ID each result gets a different identifier, so that
  Gnutella does not block the packet,
  if the result is submitted twice.
GUID of requester Global Unique Identifier of the requester
JobID ID for the GPU Job
Computing Time how long it took to compute the result
Result String in the Virtual Machine Format



next up previous contents
Next: Theoretical considerations Up: Programming for the GPU Previous: Differences with centralized frameworks   Contents
Tiziano Mengotti 2004-03-27