: ''Help Stanford University scientists studying Alzheimer's, Huntington's, Parkinson's, and many cancers by simply running a piece of software on your computer. The problems we are trying to solve require so many calculations, we ask people to donate their unused computer power to crunch some of the numbers. In just 5 minutes... Add your computer to over 333,684 others around the world to form the world's largest distributed supercomputer.''

−

Please see the [http://folding.stanford.edu/ Folding@home site] for a fuller description.

== Installation ==

== Installation ==

−

{{Note|There are multiple versions of folding@home in the AUR. One is the i686 package, named foldingathome, which is used in the example below. The other is foldingathome-smp, which is the x86_64 client and uses symmetric multi-processing, a more efficient method.}}

−

−

Folding@home is no longer in the community repository due to licensing issues. However, it is still possible to build it from [[AUR]]. If you are familiar with PKGBUILDs and AUR then build it and skip to configuration.

−

−

To install manually, first download the tarball at the [http://aur.archlinux.org/packages.php?ID=11852 Folding@home AUR page]. Open a console and untar the tarball. cd to the resulting directory and:

−

−

$ makepkg

−

and if there are no errors you will be left with a package called {{Filename|foldingathome-''version''-''number''.pkg.tar.gz}}.

+

Install {{AUR|foldingathome}} from the [[AUR]].

−

−

Run

−

# pacman -U foldingathome-version-number.pkg.tar.gz

−

being sure to replace version-number first ;)

−

−

If all went well, Folding@home should now be installed.

== Configuration ==

== Configuration ==

−

Firstly, you will want to open your {{filename|/etc/conf.d/foldingathome}} configuration file, with your editor of choice.

+

Run {{ic|/opt/fah/FAHClient --configure}} as root to generate a configuration file at {{ic|/opt/fah/config.xml}}. (the Arch Linux team number is 45032) Alternately, you can write {{ic|opt/fah/config.xml}} by hand and use {{ic|/opt/fah/sample-config.xml}} as a reference. With a config file in place, you can start the daemon, check it's status, and make the daemon automatically start at boot time.

−

# nano /etc/conf.d/foldingathome

+

$ cd /opt/fah

+

# ./FAHClient --configure

+

# systemctl start foldingathome

+

$ systemctl status foldingathome

+

# systemctl enable foldingathome

−

The config is self explanatory, if you wish to have Folding@home run as a user other than root (handy on single user systems, probably more secure on multi-user systems), or in a different group, then change these values.

+

=== The graphical way ===

−

Now run the Folding@home process for the first time with

+

You can manage the daemon by opening a web browser and heading to http://localhost:7396/. Alternately, you can install {{AUR|fahcontrol}} and use the FAHControl program.

−

# /etc/rc.d/foldingathome start

+

The daemon can also be controlled remotely. Instructions for doing so are listed in {{ic|/opt/fah/sample-config.xml}}. Remember to open firewall ports if necessary.

−

give it a few seconds and then run

+

=== The terminal way ===

−

# /etc/rc.d/foldingathome stop

+

To see the current progress of foldingathome, simply {{ic|$ tail /opt/fah/log.txt}}.

−

You will find under your {{filename|/opt/fah/}} directory, either new files or a new folder, if you set the user variable in {{filename|/etc/conf.d/foldingathome}}. You will find a file called client.cfg, either in the /opt/fah dir or the {{filename|/opt/fah/FAH_USER}} folder.

+

The behaviour of foldingathome can be customized by editing {{ic|/opt/fah/config.xml}}. Some options that can be specified:

−

# nano /opt/fah/client.cfg

+

* bigpackets, defines whether you will accept memory intensive work loads. If you have no problem with Folding@home using up more of your RAM, then set this to big. Other settings are normal and small.

−

or

+

* passkey, to uniquely identify you. Though not needed, it provides some measure of security. For details, see [http://folding.stanford.edu/English/FAQ-passkey]

−

$ nano /opt/fah/FAH_USER/client.cfg # Replace FAH_USER first

+

<passkey v='passkey'/>

−

+

* Slots for CPU or GPU

−

The most important settings here are:

+

<slot id='0' type='CPU'/>

−

−

*username, username associated to the work-units you return (not related to the FAH_USER variable in {{filename|/etc/conf.d/foldingathome}}).

−

−

*team, the team number you wish to contribute points to (earned for work units returned), you will of course want to fill in 45032, the arch-linux team number.

−

−

*bigpackets, defines whether you will accept memory intensive work loads. If you have no problem with Folding@home using up more of your RAM, then set this to big. Other settings are normal and small.

−

−

*machineid, covered in the Multi-Core section.

−

−

After editing that, run

−

−

# /etc/rc.d/foldingathome start

−

−

again, to start Folding@home up.

−

−

Assuming it all ran correctly, you will want to put it in {{filename|/etc/rc.conf}} to run on startup, so

−

−

# nano /etc/rc.conf

−

−

and add @foldingathome to your DAEMONS array (the @ causes it to start in the background, so as not to slow startup, see [[Daemons]]).

−

<br>Remember, this is @foldingathome-smp for the SMP client.

−

−

Folding@home is now installed and running.

−

−

{{Note|Ensure that the '''nscd''' daemon appears before '''foldingathome''' in the DAEMONS array of {{Filename|/etc/rc.conf}}, otherwise starting foldingathome will fail with segmentation faults.}}

== Multi-Core CPUs and Folding@home ==

== Multi-Core CPUs and Folding@home ==

−

=== A Quick Note On Hyperthreading ===

+

As of version 7.x, multi-core CPUs no longer require any special configuration. If you are using version 6.x, read on.

−

If you have a single-core hyperthreading CPU, you may be tempted to follow the multi-core instructions. It is highly recommenced that you '''''do not''''' do this as the Folding@home team prefers fewer results quickly, than more results slowly. There is also a time-limit on work-units, so if it runs slower, your work-units may not be returned in time, and so distributed to another user. If you have one core, run one folding process.

−

−

=== Multiple Folding@home Installs ===

−

It is very simple to set up an extra install, although after each (rare) upgrade of the Folding@home package, you will have to perform some maintenance, unless you wish to build separate packages with custom PKGBUILDS / scripts (beyond the scope of this tutorial). This method ''should'' also scale to however many cores/processors you have.

−

−

First, stop Folding@home if it is running

−

−

# /etc/rc.d/foldingathome stop

−

−

next

−

−

# cp -r /opt/fah /opt/fah2

−

−

If you wish to call it something different, then by all means do. This tutorial will assume you are using {{filename|/opt/fah2}} for your second install and that you have the FAH_USER directory.

−

−

Now

−

−

$ rm -rf /opt/fah2/FAH_USER/work /opt/fah2/FAH_USER/queue.dat

−

−

if they exist, this way the new process will not start working on the same work-unit as the original thread.

−

−

You now have to open up the configuration for the new process

−

−

$ nano /opt/fah2/FAH_USER/client.cfg

−

−

and change the '''machineid''' to a number different to the one in {{filename|/opt/fah/client.cfg}}.

−

−

If you are using the bigpackets option in client.cfg, you should only have it set to yes for '''one''' of your Folding@home processes as it can overwhelm your system unless you have plenty of free RAM (1GB at least).

−

−

==== Editing Init Scripts ====

−

Now comes the fun part. A second init script needs to be created and a little editing needs to be done, but this way you can turn each process on and off as wanted and it is simpler than one script managing both.

−

−

−

First, some initial editing has to be done to the current script and saved under another name

−

−

# nano /etc/rc.d/foldingathome

−

−

After

−

−

. /etc/rc.conf

−

. /etc/rc.d/functions

−

. /etc/conf.d/foldingathome

−

−

Add

−

−

FAH_VER=504

−

−

This is to cut down on later maintenance.

−

−

Next, change

−

−

PID=`pidof -o %PPID /opt/fah/FAH504-Linux.exe`

−

−

to

−

−

PID=`pgrep -f /opt/fah/FAH${FAH_VER}-Linux.exe -u $FAH_USER`

−

−

The reason for this is that pidof detects the first and second Folding@home process as the same and so stopping one init script will kill both processes. On the other hand, pgrep will find the process' associated filename/location. The "-u $FAH_USER" part is tacked on as a precaution, in case you are doing something strange with Folding@home threads and users. You will also notice the FAH_VER has slipped in there.

−

−

There should be two more instances of {{filename|/opt/fah/FAH504-Linux.exe}}, change them to

−

−

/opt/fah/FAH${FAH_VER}-Linux.exe

−

−

Next, find the lines

−

add_daemon foldingathome

−

rm_daemon foldingathome

−

−

and change them to something like

−

add_daemon foldingathome1

−

rm_daemon foldingathome1

−

−

You can also change the

−

−

stat_busy "Starting Folding@home"

−

−

stat_busy "Stopping Folding@home"

−

−

lines to have some extra description such as "on Core 1" if you need to.

−

−

Now save the file as {{filename|/etc/rc.d/foldingathome1}} , this is to prevent it being over-written by a package upgrade.

−

−

Make a copy of the script

−

−

# cp /etc/rc.d/foldingathome1 /etc/rc.d/foldingathome2

−

−

Now you have to find and replace instances of /opt/fah with /opt/fah2 in this script, double checking you are not getting any false positives (there should not be any, but scripts change). Make sure you get the one in the PID variable, otherwise the whole pgrep bit was a bit pointless ;)

−

−

Also, find the lines

−

add_daemon foldingathome1

−

rm_daemon foldingathome1

−

−

again, and change them to something like

−

add_daemon foldingathome2

−

rm_daemon foldingathome2

−

−

Now, save this script and open up /etc/rc.conf and add @foldingathome1 and @foldingathome2 to the DAEMONS variable. Start up the two processes

−

−

# /etc/rc.d/foldingathome1 start

−

# /etc/rc.d/foldingathome2 start

−

−

and if all goes well, you have got 2 Folding@home processes running!

−

−

==== Maintenance ====

−

−

When upgrading the Folding@home package, it is recommended you stop both Folding@home init-scripts first

−

−

# /etc/rc.d/foldingathome1 stop

−

# /etc/rc.d/foldingathome2 stop

−

−

On upgrading, {{filename|/opt/fah/FAH504-Linux.exe}} will be replaced with a new version, this needs to be copied into your {{filename|/opt/fah2}} directory and the old executable deleted.

−

−

You then just have to change the FAH_VER variable in ''both scripts'' to reflect the new version number. You can then restart both scripts with

−

−

# /etc/rc.d/foldingathome1 start

−

# /etc/rc.d/foldingathome2 start

−

−

It may also be worth checking that there have been no other significant changes to the updated original script.

−

==== Alternative: Single Init Script ====

+

=== A quick note on hyperthreading ===

−

I could not get the above method to work with the current (6.02) version of the client. I found an old script on the forums and modified it slightly which works just fine on my system.

+

{{Accuracy|"Hyperthreading is usually enabled in the BIOS by default, and we recommend that it stays enabled, as the SMP cores can use it to process Work Units faster." [http://folding.stanford.edu/English/FAQ-SMP#ntoc6]}}

−

#!/bin/bash

+

If you have a single-core hyperthreading CPU, you may be tempted to follow the multi-core instructions. It is highly recommenced that you do '''not''' do this as the Folding@home team prefers fewer results quickly, than more results slowly. There is also a time-limit on work-units, so if it runs slower, your work-units may not be returned in time, and so distributed to another user. If you have one core, run one folding process.

−

#/etc/rc.d/foldingathome

−

#

−

# Starts the Folding@home client in the background

−

−

. /etc/rc.d/functions

−

−

case "$1" in

−

start)

−

stat_busy "Starting Folding@home"

−

cd /opt/fah/

−

/opt/fah/fah6 > /opt/fah/myfah.log &

−

cd /opt/fah2/

−

/opt/fah2/fah6 > /opt/fah2/myfah.log &

−

stat_done

−

;;

−

stop)

−

stat_busy "Stopping Folding@home"

−

killall fah6

−

stat_done

−

;;

−

restart)

−

stop

−

start

−

;;

−

*)

−

echo $"Usage: $0 {start|stop|restart}"

−

RETVAL=1

−

−

esac

−

exit 0

−

Just make sure you do not forget to follow the first section under "Setting up Multiple Folding@home installs".

+

=== Multiple Folding@home installs ===

−

=== Folding@home SMP Support ===

+

Multiple installations of FAH on a single machine are useless, as in v7, you can use slots for every workload. The software is uniform now for GPU and CPU.

−

There is now a Folding@home client available for 64-bit multi-processor or multi-core computers (aka SMP). The creators of Folding@home suggest the SMP client runs best on quad core machines but many people run it on dual cores with no trouble. This client is definitely NOT recommended for single-core CPUs with Hyperthreading. So, if your machine meets the requirements (Arch 64-bit, true multi-core/processor) you may want to give the SMP client a try instead of running two of the standard client!

+

== Monitoring work-unit progress ==

−

−

−

Setup is identical to that of the standard client EXCEPT for the following:

−

* the name of the package in the [http://aur.archlinux.org/packages.php?do_Details=1&ID=11964&O=0&L=&C=&K=folding&SB=&SO=&PP=&do_MyPackages=&do_Orphans=&SeB= AUR is foldingathome-smp]

+

There are several ways of monitoring the progress of your FAH clients, both on the command line and by GUI.

−

* lib32-glibc is required to install and run the client (this is reflected as a dependency in the PKGBUILD)

−

* the package installs to {{filename|/opt/fah-smp}}

−

* the configuration script in {{filename|/etc/conf.d}} is foldingathome-smp

−

* the daemon that should be added to {{filename|/etc/rc.conf}} is foldingathome-smp

+

The FAHControl software distributed by folding at home provides you with efficient means to control remote hosts.

+

Just add another client with the corresponding button "Add" and enter the name, ip address, port and password (if you set one) and hit save. The software should now try to establish

+

a connection to the remote host and show you the progress in a seperate client tab.

−

==== Migrating ====

+

In AUR there is {{AUR|fahmon}}, which provides a GUI with the ability to watch multiple clients and get info on the work-unit itself. Fahmon has a dedicated site at [http://www.fahmon.net/ http://www.fahmon.net/]

−

When migrating from the standard FAH client/s to SMP, you may wish to finish off the work units currently running but without the FAH client downloading new ones. This is possible through the init-scripts as long as you make sure to check the status of the current work-unit before shutting down / rebooting.

+

On the CLI, you can add a command to your shell configuration file (e.g: ''.bashrc'' or ''.zshrc''). Replace ''fah_user'' with the actual user first.

−

−

This may seem a bit over the top and whether you do it depends on how committed you are to returning all work-units sent to your box. At the worst, your work-unit will be distributed to someone else after the cut-off date.

This will force the FAH client to only finish its current work-unit and upload it without downloading a new one. The problem arises in that if you reboot (or restart the init-scripts) after it is finished and sent back the work-unit, it will download a new one to finish and send back. You will just have to monitor the status of the work-unit before you restart, and if it is at 100% and the end of {{filename|/opt/fah/FAH_USER/FAHlog.txt}} says the work-unit has been returned, you can remove that script from the DAEMONS= line in {{filename|/etc/rc.conf}}.

+

echo

−

+

cat /opt/fah/''fah_user''/unitinfo.txt

−

If you know how, you can probably find a way of stopping it from doing this, maybe with a check in the init-script which stops it running when the work-unit file is no longer in the {{filename|/opt/fah/FAH_USER/work}} directory.

+

}

−

+

}}

−

If you are currently on i686 arch, you will also need to migrate to X86_64 arc, and it would be a good idea to read the [[Arch64_FAQ]]

−

−

==== Troubleshooting ====

−

−

===== Cannot find ./mpiexec =====

−

−

If you are using the $FAH_USER variable, you will find on starting the smp client that it cannot find {{filename|./mpiexec}}, this is because it is in the {{filename|/opt/fah-smp/}} directory and not your local one. Copy it to {{filename|/opt/fah-smp/$FAH_USER}} and it should run fine.

−

−

===== SMP client not doing any work / stalling ( NNODES=4 ) =====

−

−

( This is adapted from the [http://folding.stanford.edu/English/FAQ-SMP folding@home SMP FAQ] )

−

−

If you run

−

# /etc/rc.d/foldingathome-smp start

−

−

from the console, you will get some output. If this output stalls with a

−

NNODES=4

−

line and top/htop shows the smp-client running but with no CPU usage, you will need to check your local network settings. Check that your {{filename|/etc/hosts}} file is set up with 127.0.0.1 linked to the hostname you set up in {{filename|/etc/rc.conf}}.

−

−

===== Work Unit progress sitting at 100% =====

−

−

If your Work Unit progress is sitting at 100%, there is usually a delay in uploading. If your client is running non-backgrounded, there will usually be a prompt to press 'c' to upload the data to the server. However, if you run your client backgrounded, you will want to enable automatic uploading of work data. This can be done by editing {{Filename|client.cfg}} in your Folding@Home directory (usually {{Filename|/opt/foldingathome/}} for i686 or {{Filename|/opt/fah-smp/}} for x86_64) and changing the settings line 'asknet=yes' to 'asknet=no'. This will allow Folding@Home to upload data automatically, rather than waiting for user input to upload.

−

−

== Monitoring Work-Unit Progress ==

−

There are several ways of monitoring the progress of your FAH client/s, both on the command line and by GUI.

−

−

In AUR there is silent blades [http://aur.archlinux.org/packages.php?do_Details=1&ID=7788&O=0&L=&C=&K=folding&SB=&SO=&PP=&do_MyPackages=&do_Orphans=&SeB= fahmon], which provides a GUI with the ability to watch multiple clients and get info on the work-unit itself. Fahmon has a dedicated site at [http://www.fahmon.net/ http://www.fahmon.net/]

−

−

On the CLI, you can add a command to your .bashrc , .zshrc or .whateverrc :

Revision as of 00:01, 27 November 2013

Help Stanford University scientists studying Alzheimer's, Huntington's, Parkinson's, and many cancers by simply running a piece of software on your computer. The problems we are trying to solve require so many calculations, we ask people to donate their unused computer power to crunch some of the numbers. In just 5 minutes... Add your computer to over 333,684 others around the world to form the world's largest distributed supercomputer.

Installation

Configuration

Run /opt/fah/FAHClient --configure as root to generate a configuration file at /opt/fah/config.xml. (the Arch Linux team number is 45032) Alternately, you can write opt/fah/config.xml by hand and use /opt/fah/sample-config.xml as a reference. With a config file in place, you can start the daemon, check it's status, and make the daemon automatically start at boot time.

The graphical way

You can manage the daemon by opening a web browser and heading to http://localhost:7396/. Alternately, you can install fahcontrolAUR and use the FAHControl program.

The daemon can also be controlled remotely. Instructions for doing so are listed in /opt/fah/sample-config.xml. Remember to open firewall ports if necessary.

The terminal way

To see the current progress of foldingathome, simply $ tail /opt/fah/log.txt.

The behaviour of foldingathome can be customized by editing /opt/fah/config.xml. Some options that can be specified:

bigpackets, defines whether you will accept memory intensive work loads. If you have no problem with Folding@home using up more of your RAM, then set this to big. Other settings are normal and small.

passkey, to uniquely identify you. Though not needed, it provides some measure of security. For details, see [1]

<passkey v='passkey'/>

Slots for CPU or GPU

<slot id='0' type='CPU'/>

Multi-Core CPUs and Folding@home

As of version 7.x, multi-core CPUs no longer require any special configuration. If you are using version 6.x, read on.

A quick note on hyperthreading

The factual accuracy of this article or section is disputed.

Reason: "Hyperthreading is usually enabled in the BIOS by default, and we recommend that it stays enabled, as the SMP cores can use it to process Work Units faster." [2] (Discuss in Talk:Folding@home#)

If you have a single-core hyperthreading CPU, you may be tempted to follow the multi-core instructions. It is highly recommenced that you do not do this as the Folding@home team prefers fewer results quickly, than more results slowly. There is also a time-limit on work-units, so if it runs slower, your work-units may not be returned in time, and so distributed to another user. If you have one core, run one folding process.

Multiple Folding@home installs

Multiple installations of FAH on a single machine are useless, as in v7, you can use slots for every workload. The software is uniform now for GPU and CPU.

Monitoring work-unit progress

There are several ways of monitoring the progress of your FAH clients, both on the command line and by GUI.

The FAHControl software distributed by folding at home provides you with efficient means to control remote hosts.
Just add another client with the corresponding button "Add" and enter the name, ip address, port and password (if you set one) and hit save. The software should now try to establish
a connection to the remote host and show you the progress in a seperate client tab.

In AUR there is fahmonAUR, which provides a GUI with the ability to watch multiple clients and get info on the work-unit itself. Fahmon has a dedicated site at http://www.fahmon.net/

On the CLI, you can add a command to your shell configuration file (e.g: .bashrc or .zshrc). Replace fah_user with the actual user first.