SMP client

From FaHWiki
Revision as of 05:06, 27 July 2010 by Smoking2000 (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

FAH logo 32.pngThis is content for a proposed page merge between Clients, How tos & FAQ. Feel free to use the talk page to discuss



The FAH SMP capability is implemented using Message Passing Interface (MPI). The current set of FAH SMP clients are hardcoded to 4 MPI nodes attached to the loopback device and thus the ideal target for the FAH SMP client are systems with 4 computing units. Being it one CPU with 4 cores or 2 CPUs with 2 cores or just 4 CPUs is a matter of taste.

The Folding@home SMP client initially used the MPICH2 implementation of MPI for the Linux, Mac OS X and Windows SMP clients, to enable multiple Folding@home cores to cooperate. Since v5.92 the Windows client stopped using MPICH2 in favor of DeinoMPI which runs much more reliable on Windows (like MPICH2 does on Linux and Mac OS X). The Linux & Mac OS X clients still use MPICH2. See: Folding Forum: kasson in New Windows SMP client release

SMP Client Specific Applications

The use MPICH2 by the Folding@home SMP client can be seen in its use of smpd.exe on Windows and mpiexec(.exe) on all the supported operating systems.


According to the MPICH2 Frequently Asked Questions, smpd.exe "is the primary process manager for MPICH2 on Windows. [...] It is written in C."

smpd.exe is only used by the SMP client for Windows, the Linux and Mac OS X SMP clients don't need it. On those two Unix flavors an unspecified trick is used to avoid the need for an smpd process (likely UNIX Domain Sockets).

Some interesting documentation for MPICH2 on Windows is available:

See also: Folding-community: smpd.exe


The SMP client on Linux calls the command below to run mpiexec which in turn will run the cores. The client will add some more flags to this command, but those are added at run time whereas the "base command" is hardcoded inside the program, this is also true for the SMP client on Mac OS X.

./mpiexec -np 4 -host ./%s -dir %s -suffix %s

On Mac OS X the SMP client uses a slightly different "base command" because the paths where the files are installed on Mac OS X differs from where they are installed on Linux.

The command is in reality on a single line, but has been split over multiple lines below for readability. A backslash (\) is used to continue on a new line.

/Applications/ -np 4 -host ./%s \
-dir %s -suffix %s 

On Windows the SMP client uses yet another command to run mpiexec:

mpiexec -channel auto -np 4 %s -dir %s -suffix %s

The first %s is the filename of the core, the second %s is the directory in which the core should store its files and the third %s is the two digit number of the index in the queue for this Work Unit (WU).

The -channel auto arguments used by the Windows SMP client make mpiexec automatically choose which channel to use for communication between the processes it starts. There are several channels to choose from:

  • the default uses sockets (sock),
  • there are two that use shared memory (shm),
  • one that uses sockets and shared memory (ssm),
  • one that uses Infiniband (ib), and
  • one thread-safe socket channel (sshm).

The channel is selected based on three criteria:

  1. If -np (number of processes) is less than 8 on one machine, use shm
  2. If -np is greater than 7 on one machine, use sshm
  3. If running on multiple machines, use ssm. This channel can be changed using winconfigure.

See: MPICH2 Windows Development Guide (PDF) HTML

You can find the exact call used to start mpiexec in the FAHlog.txt file.

$ grep mpiexec ~/Library/Folding\@home/FAHlog.txt
[21:16:41] - Calling '/Applications/ -np 4 \
-host ./FahCore_a1.exe -dir work/ -suffix 03 -checkpoint 5 \
-verbose -lifeline 28794 -version 591'

Supported Operating Systems & Hardware

  • Linux/x86_64
  • Mac OS X/x86
  • Windows/x86

For Linux only a single client is available, the Console client (CLI), just like it is for the CPU client. It is currently unknown if the Linux SMP client can also run on FreeBSD and OpenBSD like the CPU client can. The -freeBSD and -openBSD flags and their associated brandelf and elf2olf calls are still in the client, though.

For Mac OS X users on Intel hardware there are two clients available. The first client to be released was the Console client, but there is now also a client installer for easy installation and configuration.

The Windows SMP client has been released as open-beta to the public on March 17 2007. Besides mpiexec the Windows SMP client also uses another binary smpd.exe. Both mpiexec and smpd.exe can be installed by running install.bat. The Windows SMP client is available as a client installer.



Client Installer


Mac OS X/Intel


Install & usage

Mac OS X/Intel



Related FAQ items

  • None yet.

Console client (CLI)



Mac OS X/Intel

Install & usage


Mac OS X/Intel


  • None yet.

Related FAQ items

Among more usual issues the SMP core is known to stop "mid air" at the WU completion and to refuse to give control over to the FAH client. Result is a dead FAH client and broken WU. This behavior is not overly frequent, but seen on every FAH SMP supported platform. Just check the WU progress frequently enough and be ready to kill/restart the FAH client and accept the losses.
HOWTO: Folding-community: What to do when your SMP client hangs at 100% completion

Future of the FAH SMP:
Folding-community: kasson's post in: Intel's new "Era of Tera".

Graphical client (GUI)

It's much easier and less work to develop a Console application than it is to develop a GUI application. Therefore new versions of a client are usually first released in their Console flavor and bit later the GUI client is released. For the Linux CPU client there has never even been a GUI client.

Currently the SMP client is only available in its Console flavor, and it's unknown if a GUI client will be available like it is for the CPU client. The Mac OS X Client Installer does install a viewer application, but this is not correctly working yet. It will likely be only graphical functionality the client will get on Mac OS X by default, third party developers may provide other graphical functionalit and/or interfaces (e.g. InCrease-like applications). For Linux it's probable that there will only be a Console client and no GUI.

See Also

Personal tools