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
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 127.0.0.1 ./%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/Folding@home.app/mpiexec -np 4 -host 127.0.0.1 ./%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 channel is selected based on three criteria:
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/Folding@home.app/mpiexec -np 4 \ -host 127.0.0.1 ./FahCore_a1.exe -dir work/ -suffix 03 -checkpoint 5 \ -verbose -lifeline 28794 -version 591'
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.
Mac OS X/Intel
Mac OS X/Intel
Mac OS X/Intel
Mac OS X/Intel
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".
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.