GPU : A Gnutella Processing Unit

caution If you want GPU to accept incoming connections, you should forward port 6346 on your router and make sure your firewall does not filter port 6346. Doing so, other GPUs will be able to connect to your machine, and more complex networks will arise, hopefully. If you need help, write us an email.


Advanced Tips and Tricks

what's left if you do not follow instructions ;-)

How can I build a cluster out of Windows 2000/XP machines?

  • Download GPU version 0.800 or higher on each machine and unpack the program in a local directory.
  • Run GPU on each machine by double-clicking GPU.exe.
  • On each GPU un check the Autoconnect check box.
  • On each GPU press the 'Start' button on the top left corner.
  • Figure out the IP number of all computers on the cluster. For example, you can click on Start - Execute. Then type cmd so that you get an old DOS prompt. With the command ipconfig you will be able to retrieve the IP number for each computer.
  • Connect machines as you like using the 'Connect' button, after you set the IP number near the button. You will see established connections in the hosts list below the button. Established connections are already bidirectional, no need to add them twice.
  • Now each GPU is ready to send out jobs with a click on the 'Compute globally' button. Each connected GPU receives jobs and sends back them to sender.
Have fun.

Run two GPUs on the same computer

It is possible to run two or more GPUs on the same computer; however, you have to make sure that all GPUs listen for incoming connections on a different port. You can set it, if you switch to the configuration tab. Below the 'Connection tab', you will find 'Listen Port'. Change this port on one of the two GPUs to 1000, for example.

How to force autoupdate

If something went wrong in the autoupdate procedure, you can attempt this again by resetting the version number in gpu.ini. Open gpu.ini with Notepad and edit the 'Autoupdate' line.

Advanced logfile analysis with Cygwin

Cygwin is a free Unix shell for Windows machines. All advanced GPUsers should have a copy on their toaster :-). So, after you installed Cygwin (remember to add the OpenSSH package, this is used to connect to other Unix/Linux machines), you can copy the log.txt file generated by GPU in a subdirectory visible by Cygwin, typically C:\Cygwin\home\username. Now, let's do things step by step.

  • First, type cat log.txt into your stylish Cygwin window. cat is a simple Unix command that displays the text in log.txt on screen.
  • Now we can extend the command to cat log.txt | grep "Incoming gpu". grep is another simple command that filters all lines containing Incoming gpu. So you will be able to see on the screen all IP numbers that connected to your computer. The strange character | is achieved by pressing Alt gr on your keyboard and the corresponding character (7 on my swiss german keyboard)
  • Finally, it is good to store the results in a file. Type cat log.txt | grep "Incoming gpu" > output.txt. This will create a file named output.txt that you can further analyze with Visualroute
  • .
  • Similarly, cat log.txt | grep "Chat" > output.txt will filter all chat entries and put them into the output.txt file...

Computer analysis with Network Mapper and board tools

Even without Visualroute, you can learn something on people on the network: if you are chatting with someone, you can see his/her time. See how many hours of difference there are compared to your time. Say this number is x. If you are both at the equator, or if an approximation is enough, you can compute a distance; switch to the GPU engine (the chip button), and type the following local command: x,24,dvd,40000,mul. Substitute x with the time difference. Result is the number of kilometers between you and the chatter. Call this number distance.

Now open the Network Mapper: with a click on 'Network status' learn the IP numbers of people belonging to the network. Then with Start-Execute, and by typing cmd, open a DOS-prompt. With nslookup IP-number, you can learn the DNS name of the computer. The last string after the dot is the country code, for example br for Brasil or ch for Switzerland.

In the same DOS-prompt, type ping IP-number to test the connection (packets might go lost sometimes) and to get a distance in milliseconds from you and the analyzed computer. Call this number y.

With tracert IP-number, you can learn how many computers there are in between and reconstruct where packets go through. Call the number of computers in between z.

See if the formula y = (distance*1000) / 3E8 + z * 0.025 holds. With GPU, you can compute locally distance,1000,mul,3E8,dvd,z,0.025,mul,add and see if the number matches somehow y. The formula is computed with following assumptions: each computer in the chain needs 25ms to forward the packet; packets travel at speed of light through the pipes; speed of light is 300'000 km /s = 3*10^8 m/s = 3E8 m/s; both computers are at the equator.

Run GPU in stealth mode

Please use this feature only if you own the computer. Anyway, even in stealth mode, GPU will show up shortly at startup. The feature was introduced on iap_mohan because the users of the Internet Coffee tended to close the small GPU icon on the taskbar.

To activate it, go to the Configuration tab and click on SaveOptions button first. Then open gpu.ini with notepad and change HideTrayIcon=0 to HideTrayIcon=1. Et voila, now GPU runs like a service in background...

How to publish your GPU on the network and get incoming connections

If you own a static IP number, you can follow steps from 1 to 6. If you have dynamic IP, things are more difficult and you have to read the entire tip from 1 to 13. Things work the same for other programs if you change the listening port (6346 in our case)

  1. on your router, make sure that port 6346 is forwarded to the computer that runs GPU. You can change this in the configuration of your router, this is called sometimes "SUA only" port forwarding or "virtual server" depending on the router's vendor. If you can choose between TCP/IP and UDP/IP, make sure you forward port 6346 only on TCP/IP.
  2. To do the port forwarding, the computer should have a static local IP address: for example 192.168.1.4, if the DHCP server of the router is configured to give out IPs from 192.168.1.32 to 192.168.1.64. Please do not confuse things: each router has a DHCP client (that gets a global unique IP number visible from outside that identifies the router on Internet) and a DHCP server that distributes local IPs (typically 192.168.X.X, not usable on the Internet) to the computers on the local network.
  3. Run GPU on the computer, check "Accept incoming GPU only" and un check "Autoconnect". This puts GPU in a listening mode, so that GPU won't bother you while you are working. GPU will generate very little Internet traffic with these settings.
  4. Because some people like to send the crab_simulator job, which blocks the virtual machine until someone answers the dialog message, you might want to delete crabs.dll in the \plugins subdirectory . If you let pde.dll and crypto.dll, you might get sometimes jobs that boost your CPU load to 100%. To avoid this, you can delete them as well.
  5. To start GPU on boot, you can click the "Run as service" option in the configuration tab...
  6. Et voila`, to get incoming connections from around the world (traceable in log.txt at best with the aid of Visualroute) you should send to the gpu mailing list your static IP number (in case you have a dynamic IP number please read the following steps, where we explain how to setup a DNS name). Your static IP or your DNS-name will then be included into the list GPU downloads at startup: GPUs attempt to connect to all host in that list. If you should later get too many connections, we can first put GPUs in a modus where only one of these connections is tried, or we can delete your host from the list, if it causes too much trouble to you.
  7. So, you are still reading? You have a router that gets dynamic IP? Maybe every 20 hours so that you have to stand up at three o'clock in the morning to update your DNS-entry? Ok, then read point 8)
  8. There are pages like DynDNS.org that will allow you to give a DNS name (like seeschloss.no-ip.org, for example) to your computer. You have to download a program that runs in background on your computer and that keeps the IP number uptodate for the DNS name you chose. We recommend DynDNS-Updater for Windows (freeware).

    Alternatively, some routers offer in their web configuration a service to reach and update DNS. Go and check your router's configuration page. If an option "Dynamic DNS update" or something similar is present, you do not need to download additional programs like DynDNS-Updater.

  9. You can view your outside IP for example here. The client you downloaded will ask the router if the outside IP changed, and inform DynDns if it happened.
  10. You can check if DynDns works fine, by opening a DOS prompt (for example press on Start->Execute and type cmd). Then type the command nslookup yourname.is-a-geek.net. Make sure the returned IP is equal to the result showed if you visit the page in point 9)
  11. Repeat the check in 9) and 10) after 20 hours and see if the information was updated correctly
  12. Remember to send your DNS-name as described in point 6)
  13. Congratulations, you did it!

A short additional note: how is it possible for a router to know which packets are for whom, if all computers in the local network have the same outside IP address? The trick here is to use the source port address (a number between 0 and 65535, normally only the first 1000 ports are meaningful) to store information on the local computer that sends the packet. In TCP/IP, to answer a packet, the couple ([destination IP:Port][source IP:Port]) is simply flipped to build an answer, so the router will map particular source ports ranges to computers on the local network.

How to run GPU at given times

If you want to run GPU only at given times, for example at night in your Internet Coffee, you can download the GPU trigger program here. Running GPU with trigger will enhance stability: eventual memory leaks in the program will not harm: each time GPU is restarted the Operating System frees the reserved memory.

Trigger is a simple application that starts and stops GPU at a given time. The program runs as a service hidden from user's view. It is visible only by pressing CTRL+ALT+DEL in the Processes list of the task manager. To stop Trigger, one has to use the task manager.

To configure start and stop time, open first trigger.ini. Change the values after Start= and Stop=.

Copy both trigger.exe and trigger.ini into the directory, where gpu.exe is placed.

Run trigger.exe, eventually place it in the Autostart folder.

Finally, verify in trigger.ini that the Format= line has the same hour format you used for Start= and Stop= values. If not, change the start and stop lines accordingly and restart trigger with the task manager.

Send us your advanced tip or trick

Do you have an advanced tip? Send it to the gpu mailing list. We would be glad to list you in our team, too! :-)

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