Folding@home

From ArchWiki
Jump to navigation Jump to search

From the project home page:

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

Install the foldingathomeAUR package. In order to use your GPU for folding (highly recommended), you'll need ocl-icd and the appropriate OpenCL package for your GPU. Nvidia users can also use CUDA.

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 its status, and make the daemon automatically start at boot time.

$ cd /opt/fah
# ./FAHClient --configure

Then start/enable the foldingathome.service systemd unit.

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:

  • 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'/>

Run f@h with limited privileges

It's not necessary to run folding with root privileges. The easy way is to use foldingathome-norootAUR, which makes use of systemd's DynamicUser feature. Note that certain files are in different locations, and there is a script /opt/fah/fah-config to generate the config.xml. To set it up manually, read on.


Create a dedicated user fah for folding without critical privileges:

# useradd --system -s /sbin/nologin -m -d /var/lib/fah --user-group fah

Now edit the foldingathome.service to use the new user:

# systemctl edit foldingathome.service
[Service]
User=fah
Group=fah
WorkingDirectory=/var/lib/fah
ExecStart=
ExecStart=/opt/fah/FAHClient --config /var/lib/fah/config.xml --exec-directory=/opt/fah --data-directory=/var/lib/fah

Start foldingathome.service.

Note:
  • To use your graphics card for this task the fah user has to be in the required group (video). But doing this will also cause the foldingathome.service to start before Xorg and breaking it in the process.
  • The fah user has various privilege problems, if configured like this. He needs at least execute access to /opt/fah/.

Monitoring work-unit progress

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

Folding@home writes its log file to the data directory. By checking out a few last lines you can check its progress, e.g. tail -10 /var/lib/fah/log.txt.

The fahcontrolAUR software distributed by folding at home provides you with efficient means to control both local and 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.

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.

fahstat() {
        echo
        echo $(date)
        echo
        cat /opt/fah/fah_user/unitinfo.txt
}

Or for multiple clients :

 fahstat() {
         echo
         echo $(date)
         echo
         echo "Core 1:";cat /opt/fah/fah_user/unitinfo.txt
         echo
         echo "Core 2:";cat /opt/fah2/fah_user/unitinfo.txt
 }

Also, replacing cat with tail -n1 will give just the percentage of work unit complete.

On foldingathome-smp 6.43, the unitinfo.txt file is not placed inside the user folder. The correct directory would be /opt/fah-smp/unitinfo.txt.

For checking NVidia GPU utilisation, nvtop-gitAUR can be used. It also reports core temperature and power usage.

See also