GPU : A Gnutella Processing Unit

Frequently Asked Questions

What is this all about?

GPU is a framework for distributed computing based on a network that builds itself randomly. In this network, each node is represented by a computer running the GPU application. Computers connect to each other and establish connections in what should get a supercomputer over Internet. Nodes on the network can be seen in 3D thanks to the Network Mapper, a so called frontend application that "speaks" with GPU.

Technically, GPU is a Grid-Computing infrastructure for Monte Carlo Applications and Randomized Algorithms.

In two words, we would like to build a cluster software (or an internet supercomputer) to perform some useful task, and maybe even do some practical research on P2P or contribute to science in some way. Our goals are similar to BOINC projects, although we are just enthousiasts and not scientists, so you might not get the same level of professionalism when you run GPU :-). Nor we have fundings or whatever. This thing is just for fun. And it stills needs lot of improvements.

Moreover, we feel a little bit like The Next Generation Distributed Computing project, because we run on a cluster which can be connected in any way: we do not use the classic centralized client/server architecture, but a P2P network.

If you like, you can download and test GPU here. Any suggestion, idea, or help is very appreciated. Thx :-).

What is the current project status?

We know for sure that the system scales at least up to 40 computers because we tested it on a university computer room. There is hope, with some eventual changes, that the system will allow each user to see 2000 other computers, as in Gnutella. More computers can build a cluster (up to half a million), but each machine will see only about 2000 computers because Gnutella packets have a count-down counter decreased each time a computer is reached. Once count-down gets zero, the packet is destroyed and no more computers can be seen.

Right now, we are able to generate videos of virtual landscapes with an external program called Terragen. Generating such a video takes about two weeks on a single computer. With the current GPU cluster size we reduce this time to one-two days. If you have the divx codec installed on your computer, you can download and view our videos here. Additionally, there are a lot of plugins and frontends that are intended as example, and an experimental Distributed Search Engine. GPU runs in a stable manner both under Windows or Linux with wine emulator.

Here you can find some more information on current project status, current network status, or read the latest project news...

a little cluster

<HB9TVM> development facility ;-)

Who is behind the project?

We are a group of people from all around the world that would like to see the idea happen. We are mostly computer science students or people with a strong interest in computers and distributed computing. GPU was developed as semester and master thesis at ETH Zürich under supervision of Wes by dangermouse with the help of the amazing GPU Team, using all Open Source software available around the world and in outer deep space. The Distributed Search Engine and the Terragen wrapper were both written by nanobit (Rene Tegel). The main component that connects to Gnutella and the foundation of the core client is written by Kamil Pogorzelski. To develop GPU in Delphi, you might want to use the DelphiPackagerTool made by DelphiFreak (Samuel Herzog). The website was built by SeeSchloss. All other developers are listed on the GPU itself or on the frontend. Their name appears in the news as well. If you need help, please contact us on the mailing list.

Can i run my favourite app on the cluster in a distributed fashion?

If you have an application which takes a file as input and computes another file as output go to the file distributor page. For more complex applications like the distributed search engine, knowledge of Delphi and of the framework is required.

Does my computer get faster when i run GPU?

Ehm no, definitely not. Unlike Open Mosix, GPU does not automatically redistribute your applications to other connected computers.

To run an application on GPU in a distributed fashion, one needs to wrap it with a plugin and a frontend developed on purpose. The File Distributor makes things more easy, if you have an application which takes a file as input and generates one or several files as output.

Running GPU means sharing your ressources with others to target and eventually reach common goals (e.g. running the search engine or computing movies). Although GPU is designed to be very light (CPU usage stays mostly at 0%), some plugins like Terragen can be very ressource hungry.

Why a search engine? do you hope to beat Google? you fool!

One reason to run a search engine on GPU is to show that P2P can do more than a centralized network.

The other reason is a matter of freedom. There are countries who would like to control access to information, for example to hide from public opinion knowledge that might be inconvenient to the party in power, knowledge that might show the true intents and the people who really profit by governamental moves, how they treat prisoners and people with different belief.

On the other side there are companies, huge powerful companies, that deliver operating systems to almost any machine on the world. They do not like cheap concurrence from other operating systems, so they might manipulate their own search engine so that results to the operating system available for free does not show up.

It is not a matter of crawling anything pornographic, illegal and decadent, we believe society has to enforce some sort of censorship on these contents.

OK, this is the vision, let's stop dreaming, for the moment you might still be better with this search engine. Don't be fool man. Be happy!

What is the main difference compared to a centralized project like Seti@home?

There are two: Seti@home can scale at least up to 3'000'000 computers and GPU to 300'000 like Gnutella, although 2000 computers only are visible for each user. However, current GPU versions (0.9xx) scale only up to 60 nodes, we need to put more work into the communication layer.

On ChessBrain, another centralized project, volunteers compute one chess match only. With GPU, where everyone can get and has to provide CPU-time, everyone could play chess against the virtual supercomputer, if parallelism would already work in the chess plugin.

We present some centralized frameworks here.

What is the difference with a grid computing project like the Globus Toolkit?

The Globus Toolkit gives clean standards for building a grid. Using known technologies (Tomcat web servers, SOAP, RSA, XML, WSDL) and extensions of known technologies (GridFTP), it tries to define an inhomogeneous infrastructure for computing grids. In some configurations, computations are performed only after authenticating users.

In Globus, computations are offered as a "grid service" to clients, like a webserver offering pages to browsers. Globus does not define a scheduler, a scheduler should be implemented as a "grid service", too. The idea is very elegant for the centralized model, but there might be some problems in a P2P environment.

Version 2.0 was difficult to install and get running. We know some people who spent a semester term project to get it running. Version 3.0 is much easier to install and is in sinergy with IBM Eclipse.

Another interesting Open Source Grid project is MyGrid.

GPU has quite a different philosophy: its main focus is on a P2P scheduler for randomized algorithms. Additionally, we would like a very homogeneous grid and easy to install, with a click on a setup.exe file. Then, we do not care at all about authenticating users, wrong results should disappear in random noise because of the nature of Monte Carlo simulations. A simple majority rule could discern wrong results, unless more than half of the users are cheating. In a sense, GPU is a bottom up project that does many things in reverse :-)

What is the difference with a file-sharing client?

In principle, the only difference should be an additional computational feature. However, GPU is very experimental; file-sharing with GPU is still not recommended. We recommend EMule or Gnucleus, both Open Source and hosted at sourceforge.

<spartacus> gpu node with <guevara> oscilloscope. The depicted curve on the oscilloscope is <spartacus> fan's noise.

I will never run GPU on my machine!

Although this is not a question, it is fine. We understand your security concerns. The philosophy of the project is similar to what we remark in everyday life: if we do something for others without asking for a reward, chances that they will help us in time of trouble are much higher.

How can I name my computer, so that it appears in the Network Mapper?

It's easy: go at the bottom of the GPU window and set your nickname (well, in GPU computer names matter more than real names). Your nickname is the computer name, too. You can set your country and team at the same place. If you do not like the team names, just found your own team by typing your team name into the team edit box.

What do colors mean in the Network Mapper?

As you probably noticed, computers are represented as spheres and connections between them as lines. Take a closer look at the spheres. If they are solid, this means the corresponding computer answered our status request. Sometimes, computers do not answer for several reasons like network congestion, or a version lower than 0.827. In these cases, we know that these computers exist through the other nodes that answered our status request. These nodes are plotted as wire spheres (from far away, wire spheres seem gray). Now the meaning of colors is related to the number of computations a computer is currently performing (green = 0, blue = 1, violet = 2, red = 3). Sometimes, computers answer with a wrong IP (they have a dynamic IP). This confuses the Network Mapper: several gray wire spheres appear. We call these spheres ghosts, because they do not represent a computer.

What does GPU to protect my computer from running malicious code?

GPU provides a system to sign plugins, frontends and application. However, you need to install PGP to verify them. GPU works fine with the firewall ZoneAlarm, but not with Norton Firewall. Other file sharing programs have similar trouble with Norton. So far, there were no security flaws. Of course, we cannot provide 100% guarantee. We do our best to stay virus and worm free, else our users will run away :-#

What is the best way to learn the basics behind GPU?

This is a personal choice: you might want to read our documentation or simply run the client, or do both.

How can I help?

We keep an entire page on this topic. You can download GPU and test it a little on your machine and help people on the chat rooms, although there are not many, right now.

Is GPU entirely Open Source?

GPU is Open Source. Unfortunately, the underlying TGnutella component is commercial, but we can share the source code with other people that work on the project without paying additional fees. Plugins and frontends can be developed entirely using Open Source.

Is it possible to download or share offensive content?

Note: in versions 0.9xx file sharing is disabled.

No, it is not possible to share, to download or to search for offensive or adult material. Additionally, GPU makes clear how easy it is to track people on the network, generally speaking.

Can I write a plugin, a frontend or a modified GPU client?

You are welcome! We will made it available through the autoupdate feature of GPU and include it in future releases. If you need support, we will give you all our resources to help you (provided the extension is not for weapon research, of course :-) If you are short of ideas, you can pick one here, if you like.

I do not like the autoupdate feature!

You do not have to use it. Autoupdate is always done with the user's approval: you can read what is new and then decide. If you see lot of client with newer versions on the network, an update might be worth the pain :-/

What additional programs are cool to use in combination with GPU?

We recommend

  • Typsoft FTP Server - to store rendered images on your own FTP server (Open Source)
  • TightVNC - to control your Windows and Linux PCs remotely (Open Source)
  • MPlayer - to view divx movies (avi, wmv) under Linux (Open Source)
  • PGP to verify plugins, to sign, encrypt and decrypt files (freeware)
  • ZoneAlarm as personal firewall to protect yourself from worms and trojan horses (freeware)
  • Visualroute to trace people on Internet (shareware, 30 days trial)
  • Languard Network Scanner to scan computers for weaknesses (limited freeware)
  • Google Toolbar to block popups and to see the page ranking of the GPU site (freeware)
  • EarthClock to know time and weather of your friends around the world (Open Source)
  • Cygwin as complete Unix Shell for Windows, with tools for developers like CVS and ssh, and for users like grep and diff to analyze the logfile of GPU (Open Source)
  • Clamwin Antivirus to keep your computer free from viruses and dialers (Open Source)
  • Release Forge helps out in releasing files on sourceforge (Open Source)

Why do you use Delphi as programming language?

Delphi is a Rapid Aid Development tool used in industry, where robustness, simplicity and speed (both in development and use) are a vital requirement for companies. A broad range of Open Source components is available and interfaces to common libraries like OpenGL are provided. Well programmed components with good debugging capabilites allow developers to get complex and robust applications running quickly (take a look at the amazing Artificial planet to get an idea). The ability of Java to run on multiple architectures is sacrificed in exchange with a tool with comparable object oriented features (components are implemented as JavaBeans there), but able to generate optimized object code like C++.

How long will it take until GPU is ported to Linux?

It is already possible to run GPU 0.9xx under Linux using the wine emulator. See our information on the download page. For the Intel architecture, the computing engine is in place. Depending on volunteers, we might get TGnutella under Kylix as well by porting the TCustomSocket objects. Windows uses event-driven sockets, Linux does not. But we now of libraries that mimic event-driven behavior in Kylix, however their signature is not compatible with the normal TCustomSocket signature. We might simply wait for Borland to port them in the next version of Kylix. GPU on Linux is not for tomorrow, it might take one or two years, unfortunately.

Under which license is GPU exactly? can I write commercial plugins and frontends?

The GPU core (without TGnutella) is under the GPL license. The GPL will ensure that any change will be to benefit of the entire user community.

The delivered plugins and frontends are under the previously mentioned license, too. However, plugins as dynamic link libraries and frontends as executables are completely independent from GPU. If you write your own plugins and frontends, you might enforce any license on them because they are binary independent from the framework. Although it might be too early to develop commercial GPU apps, one day this might make sense.

The web page is very slow!

GPU is kindly hosted by Sourceforge, a platform for Open Source with more than 70000 projects. No wonder, if sometimes something goes wrong or slow. You can go to Seeschloss mirror, if Sourceforge is experiencing some problems.

The idea is crazy! Will it work?

Quien sabe. Chi lo sa. Qui sait. Who knows? If it will happen, then only gradually. To dream is not forbidden, eh. You can look at it as a proof of concept.

<gemini>'s modified front panel

I have an additional question, where can I pose it?

Please contact us in our mailing list, thank you!



Seeschloss created the initial website. The logo was designed by Mark Grady. Graphics are by David A. Lucas.
GPU, a P2P-computing cluster software, © 2002-2015 by the GPU Development team