In this world, computing power leads to miracles. Computing power can play a major role in solving the problems around us. This is one of the reasons why the entire technology industry (including Microsoft) is invested in quantum computing which will help make a computer more efficient at solving these problems. Folding house is a distributed computer project that performs molecular dynamics simulations of protein dynamics.
Microsoft has released a detailed guide whereby anyone can donate their computer resources to the project. We will talk about how to safely give CPU time with Windows Sandbox in this guide.
Safely donate CPU time using Windows Sandbox
Before you start, you need to make sure that Windows Sandbox is activated on your computer.
Now open Notepad and copy and paste the following code into it:
#Requires -RunAsAdministrator #For a custom username, add -usernameto the command execution param([string]$username=‘wsandbox_anon‘) $ProgressPreference = ‘SilentlyContinue‘ #Progress bar makes things way slower # Ensure that virtualization is enabled in BIOS. Write-Output ‘Verifying that virtualization is enabled in BIOS…‘ if ((Get-WmiObject Win32_ComputerSystem).HypervisorPresent -eq $false) { Write-Output ‘ERROR: Please Enable Virtualization capabilities in your BIOS settings…‘ exit } # Determine if Windows Sandbox is enabled. Write-Output ‘Checking to see if Windows Sandbox is installed…‘ If ((Get-WindowsOptionalFeature –FeatureName ‘Containers-DisposableClientVM‘ –Online).State -ne ‘Enabled‘) { Write-Output ‘Windows Sandbox is not installed, attempting to install it (may require reboot)…‘ if ((Enable-WindowsOptionalFeature –FeatureName ‘Containers-DisposableClientVM‘ –All –Online –NoRestart).RestartNeeded) { Write-Output ‘Please reboot to finish installing Windows Sandbox, then re-run this script…‘ exit } } else { Write-Output ‘Windows Sandbox already installed.‘ } # Download the latest version of FAH. Write-Output ‘Checking for latest version of foldingathome…‘ $installer_url = ‘https://download.foldingathome.org/releases/public/release/fah-installer/windows-10-32bit/‘ # Use regex to get the latest version from the FAH website. $version = ((Invoke-WebRequest –Uri $installer_url –UseBasicParsing).Links | Where-Object {$_.href -match ‘^vd+([.]d+)?‘} | ForEach-Object {[float]($_.href -replace ‘[^.d]‘, ‘‘)} | Measure-Object –Max).Maximum $installer = “$($installer_url)v$($version)/latest.exe“ $installer_size =(Invoke-WebRequest $installer –Method Head –UseBasicParsing).Headers.‘Content-Length‘ Write-Output “Using FAH v$version.“ # Check if the installer is present, download otherwise. $working_dir = “$env:USERPROFILEfah_conf“ $install_fname = ‘folding_installer.exe‘ If (!(test-path “$working_dir$install_fname“) -or (Get-ChildItem “$working_dir$install_fname“).Length -ne $installer_size ) { Remove-Item “$working_dir$install_fname“ –Force –ErrorAction SilentlyContinue Write-Output “Downloading latest folding executable: $working_dir$install_fname“ Write-Output “Saving to $working_dir$install_fname…“ New-Item –ItemType Directory –Force –Path $working_dir | Out-Null Invoke-WebRequest –Uri $installer –OutFile “$working_dir$install_fname“ } # Create the FAH configuration file with the Windows Sandbox FAH team #251561. Write-Output ‘Creating init command…‘ $conf_file = ‘fah_sandbox_conf.xml‘ Write-Output “Saved Folding@Home configuration file to $working_dir$conf_file“ New-Item –Force –Path “$working_dir$conf_file“ –ItemType File Set-Content –Path “$working_dir$conf_file“ –Value @” “@ <# Create the script that runs at logon. This script: 1. Starts the installer 2. Creates a volatile working directory 3. Copies the config into the working directory 4. Sets the firewall policies to let FAH run 5. Starts the FAH client #> Write-Output ‘Creating init command…‘ $logon_cmd = “$working_dirinit.cmd“ $wdg_install_dir = ‘C:userswdagutilityaccountdesktopfah_conf‘ $wdg_working_dir = ‘C:userswdagutilityaccountdesktopfah_working_dir‘ Write-Output “Saved logon script to $logon_cmd, this will be run upon starting Sandbox.“ New-Item –Force –Path $logon_cmd –ItemType File Set-Content –Path $logon_cmd –Value @” start $wdg_install_dir$install_fname /S goto WAITLOOP :WAITLOOP if exist “C:Program Files (x86)FAHClientFAHClient.exe” goto INSTALLCOMPLETE ping -n 6 127.0.0.1 > nul goto WAITLOOP :INSTALLCOMPLETE mkdir $wdg_working_dir cd $wdg_working_dir echo ”Copying config file to $wdg_working_dir” copy $wdg_install_dir$conf_file $wdg_working_dir netsh advfirewall firewall Add rule name=”FAHClient” program=”C:Program Files (x86)FAHClientFAHClient.exe” action=allow dir=out netsh advfirewall firewall Add rule name=”FAHClient” program=”C:Program Files (x86)FAHClientFAHClient.exe” action=allow dir=in start C:”Program Files (x86)”FAHClientFAHClient.exe –config $wdg_working_dir$conf_file “@ # Create the Sandbox configuration file with the new working dir & LogonCommand. $sandbox_conf = “$working_dirfah_sandbox.wsb“ Write-Output “Creating sandbox configuration file to $sandbox_conf“ New-Item –Force –Path $sandbox_conf –ItemType File Set-Content –Path $sandbox_conf –Value @” “@ # For convenience, start the Sandbox. Write-Output ‘Starting sandbox…‘ Start-Process ‘C:WINDOWSsystem32WindowsSandbox.exe‘ –ArgumentList $sandbox_conf Enable $working_dir true $wdg_install_dirinit.cmd
Alternatively, you can simply download it from Microsoft GitHub repository.
Once done, just run it with Windows PowerShell and it will start a Windows Sandbox environment which will donate your computer’s resources to the distributed computer project.
Good luck!
-
Source:
Microsoft - Keywords: Sandbox