Folding@home (FAH or F@h) is a distributed computing project for disease research that simulates protein folding, computational drug design, and other types of molecular dynamics. FAHClient is a program developed by Stanford University. FAH is assisting researchers through simulating of druggable design of protein target to combat COVID-19. Better understanding protein misfolding can assist in designing drugs and therapies to combat this virus. Folding is a very complex process, and it’s often challenging to study in the laboratory with few machines.

The simulation requires a supercomputing capability with a performance ranging to exaFLOPS/PetaFLOPS (FLOPS is a measure of a computer’s performance). Folding@home by using power of computers from volunteers around the world is the first computer to achieve the exaFLOPS scale and is now estimated to be more powerful than the next top 100 supercomputers combined. Folding@home’s collective horsepower is now more than 1.5 exaFLOPS, or a quintillion calculations per second. That’s three quarters of the projected speed of a $600 million supercomputer called El Capitan.

The project has pioneered the utilization of central processing units (CPUs), graphics processing units (GPUs), PlayStation 3s, Message Passing Interface (used for computing on multi-core processors), and some Sony Xperia smartphones for distributed computing and scientific research. The project uses statistical simulation methodology that is a paradigm shift from traditional computing methods.

FAH uses a client–server model network architecture, the volunteered machines each receive pieces of a simulation (work units), complete them, and return them to the project’s database servers, where the units are compiled into an overall simulation. Volunteers can track their contributions on the Folding@home website, which makes volunteers participation competitive and encourages long-term involvement.

Distributed Computing — Approach

The distributed computing is a concept of using multiple computers to solve a common problem by computation distributed among connected computers unlike parallel computing systems that uses common memory pool.

Distributed Computing — Architecture

There are different messaging mechanisms for distributed computing which may includes http, RPC and message queues. Implementation architecture also varies and falls into one of the following architectures: Client-server, N-tier, Peer-to-Peer (P2P) or Cluster Computing. FAH implementation is a good example of client server architecture that uses RPC connectors for communications.

FAH — Distributed Computing Model — Sequence of Steps

FAH Client and Server — Sequence of Steps

First, a client that has been installed by a volunteer asks the assignment server to assign it to a work server:

(1). Next, the client talks to a work server and requests a work unit, which is a set of input files needed to work on a job for a length of time

(2). Based on the work unit, the client may then download the computational core required to do the work from a web server

(3). Once the work is completed, the client sends the results to the same work server, or to a specially-designated collection server if the work server is unreachable

(4). Log files and credits are then collected from the work servers and passed to the statistics server for tabulation and display to the participants

While Folding@home has concentrated on protein folding simulations, this architecture is extremely flexible and could support many other types of projects.

FAHClient on Kubernetes

FAHclient packages are available for various platforms. This is the (back-end) client software managed by FAHControl and typically runs behind the scene. This is a truly unified client (slot) manager. FAHClient starts one or multiple instances of a FAHCore and manages the work assignments for each of these client “slots”. These packages can be used to create a Docker container with a source image (ubuntu/centos) and can be deployed as a Deployment or Daemonset on a Kubernetes cluster.