The Hive Mind: Helping To Solve COVID19

by 18th April 2020Development, Docker, Platforms, Technological Thoughts

Updated: 1st May 2020

COVID19, otherwise known as the Coronavirus, has brought the world to a standstill, with many countries in lockdown, businesses shutdown, and employees furloughed.

As an IT specialist, I’m not on the frontline of the fight against this pernicious virus but, in common with millions of people across the globe, I want to be of use and help.

One of the ways I can help, is by contributing CPU/GPU time to identifying possible vaccines for COVID19. Many people have laptops or desktops at home; some of us also have servers, which generally sit there not stretching themselves.

If you remember the Search for Extra-Terrestrial Intelligence (SETI) which, way back in the ’90s, used collaborative cloud processing to analyse signals from outer space, then you will know that this concept has been taken up to solve other problems, one of which is the hunt for cures to various illnesses, such as Alzheimer’s, Huntingdon’s, Parkinson’s or cancer.

Folding@Home

Folding@Home is a system which allows you to do just that: contribute spare CPU or GPU cycles to processing simulations which help our understanding of these diseases. It has now also recently taken up the challenge of understanding COVID19.

There are various ways of installing Folding@Home and setting it to work, but one of the simplest is to run a Docker container. Since I have a Synology Rackstation with Docker installed, it wasn’t too much trouble to set it up, and thankfully, there are existing images available in the Docker Hub.

As with most servers, I don’t have a particularly powerful GPU, which is actually more effective in crunching the numbers involved in these simulations, but the advantage is that my server will run the simulation 24/7. With that in mind, I decided to use the Yurinnick/Folding-At-Home image. This has been recently updated to also include a GPU version (2020-05-01).

Installation

Whilst the installation instructions are fairly straightforward, I noticed that the standard installation downloads any simulations to the container itself. This means that if you update the container for any reason, the data is lost, and you could lose hours, if not days of processing.

To avoid this happening, I created a directory on the server itself which I could then bind to the Folding-At-Home container to store the simulation data. You can also use a Docker volume if you wish, but I like to store data where I can see it, rather than a virtual volume.

The other changes I made to the default setting were to add a username, join a team (In this case a group who are avid readers of The Register – an irreverent IT newssite), and add a passkey from Folding@Home to identify myself. You don’t have to include this, but it just means that no-one can impersonate you. Saying that, if anyone wants to contribute using my username, they are more than welcome!

docker run --name Folding-At-Home \
-p 7396:7396 -p 36330:36330 \
-e USER={username} \
-e TEAM={team} \
-e ENABLE_GPU=false \
-e ENABLE_SMP=true \
-e POWER=light \
-e PASSKEY={passkey} \
-v {server directory}:/opt/fahclient/work \
--restart unless-stopped \
yurinnick/folding-at-home:latest \
--allow 0/0 --web-allow 0/0

Providing you have Docker installed on your server, running the command above does the following:

–name Folding-At-Home the name of the container
-p 7396:7396 -p 36330:36330 The ports Folding@home needs to allow access
-e USER={username} Defines your username. The default is anonymous
-e TEAM={team} Defines the Team you want to contribute to. The default is no team.
-e ENABLE_GPU={false|true} Set to “false” if you are using the CPU version and “true” if you are using the NVidia GPU version.
-e ENABLE_SMP={true} Enables the auto-configuration of SMP slots if set to true
-e POWER={full|medium|light} Sets the default power Folding at Home will use. As my server is running 24/7 and runs a multitude of different services, I have set it to “light”.
-e PASSKEY={passkey} Defines your passkey for security. This is optional
-v {server directory}:/opt/fahclient/work Sets a volume on the server to which Folding@Home can download simulation data
–restart unless-stopped Makes sure the Container will always restart if it fails for any reason – unless you have stopped it.
yurinnick/folding-at-home:{latest|latest-nvidia} The name of the Docker image to download to create the container. Append “latest” to select the CPU version or “latest-nvidia” to choose the GPU version
–allow 0/0 –web-allow 0/0 Commands for Folding@Home to allow you to access the web interface.

Don’t forget to change the values inside curly braces ({}) with your own details!

Once it has downloaded, created the container, and started, you can access the web interface at http://{server-ip}:7396/. I have mine set with a reverse proxy and a URL so I don’t have to remember the port!

Matthew Cunliffe Avatar
Matthew Cunliffe

Matthew is an IT specialist with more than 24 years experience in software development and project management. He has a wide range of interests, including international political theory; playing guitar; music; hiking, kayaking, and bouldering; and data privacy and ethics in IT.

Matthew Cunliffe

Author

Matthew is an IT specialist with more than 24 years experience in software development and project management. He has a wide range of interests, including international political theory; playing guitar; music; hiking, kayaking, and bouldering; and data privacy and ethics in IT.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Share this post