SMP client

General
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 SMP client initially used the MPICH2 implementation of MPI for the Linux, Mac OS X and Windows SMP clients, to enable multiple  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:

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

smpd.exe
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:
 * MPICH2 on Windows XP: Installing, Compiling Fortran, and Running (DOC/MS Word)
 * MPICH2 Windows Development Guide (PDF)  HTML

See also:

mpiexec
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 is the filename of the core, the second  is the directory in which the core should store its files and the third  is the two digit number of the index in the queue for this Work Unit (WU).

The 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: See: MPICH2 Windows Development Guide (PDF)  HTML
 * 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.

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'

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.

FAQs

 * SMP FAQ (Core A1): Folding@Home on multi-core/SMP boxes
 * Folding@Home high performance client FAQ
 * Folding@Home configuration FAQ
 * Frequently Asked Questions (FAQ)

Cores

 * A1: Gromacs SMP core

Download
Mac OS X/Intel
 * Client Installer v5.91 beta (Client installer)
 * Installer README
 * SMP FAQ
 * License information

Windows/x86
 * CLI client v5.91 beta
 * SMP FAQ
 * License information

Install & usage
Mac OS X/Intel
 * Installer README
 * SMP FAQ

Windows/x86
 * SMP FAQ

Howtos

 * How to enable -verbosity 9 flags when using the Client Installer on Mac OS X

Related FAQ items

 * None yet.

Download
Linux/x86_64
 * CLI client v5.91 beta
 * SMP FAQ
 * License information

Mac OS X/Intel
 * CLI client v5.91 beta
 * SMP FAQ
 * License information

Install & usage
Linux/x86_64
 * SMP FAQ
 * finstall - "./finstall smp"

Mac OS X/Intel
 * SMP FAQ
 * finstall - "./finstall smp"

Howtos

 * 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:

Future of the FAH SMP:

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.