mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
257 lines
8.9 KiB
Markdown
257 lines
8.9 KiB
Markdown
# BOINC
|
|
|
|
1. [TL;DR](#tldr)
|
|
1. [Client management](#client-management)
|
|
1. [Remote management](#remote-management)
|
|
1. [Use the GPU for computations](#use-the-gpu-for-computations)
|
|
1. [AMD drivers](#amd-drivers)
|
|
1. [Intel OpenCL support](#intel-opencl-support)
|
|
1. [Use VirtualBox for computations](#use-virtualbox-for-computations)
|
|
1. [Ask for tasks for alternative platforms](#ask-for-tasks-for-alternative-platforms)
|
|
1. [Gotchas](#gotchas)
|
|
1. [Further readings](#further-readings)
|
|
1. [Sources](#sources)
|
|
|
|
## TL;DR
|
|
|
|
Files are located in `/var/lib/boinc` by default.<br/>
|
|
Some distribution (debian and derivate) use `/etc/boinc-client` for configuration files instead, and create links to
|
|
them in the default location.
|
|
|
|
The resource share property can be set anywhere from 0 to 1000 for each project, with 0 meaning it will not get any work
|
|
from that project unless every other project you run is out of work.
|
|
|
|
<details>
|
|
<summary>Setup</summary>
|
|
|
|
```sh
|
|
# Install.
|
|
flatpak install 'edu.berkeley.BOINC'
|
|
sudo apt install 'boinc-client' 'boinc-manager' # or 'boinc-client-nvidia-cuda' or similar for more features support
|
|
sudo pacman -S 'boinc' # or 'boinc-nox'
|
|
sudo zypper install 'boinc-client' 'boinc-manager'
|
|
|
|
# Enable the service.
|
|
sudo systemctl start 'boinc-client.service'
|
|
|
|
# Allow GPU usage.
|
|
sudo gpasswd -a 'boinc' 'video'
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Usage</summary>
|
|
|
|
```sh
|
|
# Set the GUI RPC communications port.
|
|
# Default is '31416'.
|
|
boinc --gui_rpc_port '30000'
|
|
|
|
# Open `boinc-manager` with*out* also starting the client (`-nd`).
|
|
# Connect to the instance started by the current system (`-a`).
|
|
# Allow for multiple instances of the manager (`-m`).
|
|
# Provide the connection password in the command (`-p`).
|
|
boinc-manager -nd -amp '123'
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Laptop-like platforms energy management</summary>
|
|
|
|
```sh
|
|
# Do not boost the CPU frequency for niced loads.
|
|
# The governor must support it - check if the file exists.
|
|
echo 1 | sudo tee '/sys/devices/system/cpu/cpufreq/ondemand/ignore_nice_load'
|
|
|
|
# Disable (1) or enable (0) turbo boost for Intel CPUs.
|
|
echo 1 | sudo tee '/sys/devices/system/cpu/intel_pstate/no_turbo'
|
|
|
|
# Suspend computing when the computer is in use by giving the `boinc` user
|
|
# access to the X session (so that mouse and keyboard input can be communicated
|
|
# to the client).
|
|
xhost '+SI:localUser:boinc'
|
|
```
|
|
|
|
</details>
|
|
|
|
## Client management
|
|
|
|
| Name | Type |
|
|
| --------------- | ------------ |
|
|
| [BOINC Manager] | Graphical |
|
|
| [boinccmd] | Command line |
|
|
| [boinctui] | Text |
|
|
|
|
Local control RPCs are authenticated using the GUI RPC password. This password is located in the `gui_rpc_auth.cfg`
|
|
configuration file, as the single first line, with a max length of 255 characters.
|
|
|
|
A password is **required** from version FIXME, and is automatically generated if the file is not found or it is empty.
|
|
|
|
Resource share is used to help BOINC determine which projects to prioritize; the larger the number, the more it will
|
|
prioritize work from that project over the other projects.<br/>
|
|
This value does **not** determine anything about how much of your CPU, GPU, etc. are used. If you want to do that,
|
|
change the relative settings.<br/>
|
|
The number for resource share can be set anywhere from `0` to `1000` for each project. Setting a project's resource
|
|
share to zero means it will **not** get any work from that project **unless** every other project you run is out of
|
|
work.
|
|
|
|
### Remote management
|
|
|
|
All remote RPCs (both status and control) are authenticated using the GUI RPC password.
|
|
|
|
Quick, dirty solution: use the `--allow_remote_gui_rpc` option when starting the client.<br/>
|
|
This will make the BOINC client accept connections from **any** host (subject to password authentication) even if the
|
|
client's configuration files are set otherwise.
|
|
|
|
Better solution:
|
|
|
|
1. Add the `<allow_remote_gui_rpc>1</allow_remote_gui_rpc>` **option** to the `cc_config.xml` file in the BOINC data
|
|
directory;
|
|
1. Restart the service to make the above change effective;
|
|
1. Check port `31416` (or the one configured for use) is reachable from other hosts.
|
|
1. Specify a set of allowed hosts creating the `remote_hosts.cfg` file in the BOINC data directory; its entries must be
|
|
DNS host names or IP addresses, and must be one per line.
|
|
|
|
> the _Read config file_ action in BOINC Manager's _Advanced_ menu will also read the `remote_hosts.cfg` file, so a
|
|
> restart of the client is not required to enable changes to the remote host list.
|
|
|
|
1. Check the `gui_rpc_auth.cfg` file in the BOINC data directory to get the password for authentication.
|
|
|
|
## Use the GPU for computations
|
|
|
|
Check the GPU is OpenCL-enabled installing and running `clinfo`:
|
|
|
|
```sh
|
|
$ clinfo
|
|
Number of platforms 1
|
|
Platform Name NVIDIA CUDA
|
|
Platform Vendor NVIDIA Corporation
|
|
Platform Version OpenCL 1.2 CUDA 10.0.132
|
|
…
|
|
```
|
|
|
|
If the resulting number of platform is `0`, you need to install the proprietary drivers for your card.
|
|
|
|
<details style="padding-bottom: 1em;">
|
|
<summary>On OpenSUSE</summary>
|
|
|
|
### AMD drivers
|
|
|
|
See [AMD Linux drivers] and [Radeon™ Software for Linux® Installation] for the AMD drivers.<br/>
|
|
If you want to install also the ROCm component, see also the [AMD ROCm™ documentation].
|
|
|
|
Install the `amdgpu-install` package from [AMD's Linux drivers][amd linux drivers] page, then execute it.
|
|
|
|
```sh
|
|
# Previous versions of the package (like the one in the official documentation
|
|
# at the time of writing) made DKMS fail.
|
|
sudo zypper install 'https://repo.radeon.com/amdgpu-install/22.20.3/sle/15.4/amdgpu-install-22.20.50203-1.noarch.rpm'
|
|
sudo amdgpu-install --usecase=workstation --opencl=rocr
|
|
```
|
|
|
|
The BOINC user also needs to be added to the `video` group to be able to use these drivers correctly.
|
|
|
|
```sh
|
|
gpasswd -a 'boinc' 'video'
|
|
usermod --append --groups 'video' 'boinc'
|
|
```
|
|
|
|
### Intel OpenCL support
|
|
|
|
```sh
|
|
sudo apt install 'intel-opencl-icd' 'ocl-icd-libopencl1'
|
|
sudo pacman -Sy 'intel-compute-runtime' 'ocl-icd'
|
|
sudo zypper install 'intel-opencl' 'ocl-icd-devel'
|
|
```
|
|
|
|
</details>
|
|
|
|
At the next restart of the BOINC client, something similar to this line should appear in the event logs:
|
|
|
|
```plaintext
|
|
Oct 09 23:09:40 hostnameHere boinc[1709]: 09-Oct-2022 23:09:40 [---] OpenCL: AMD/ATI GPU 0: gfx90c:xnack- (driver version 3452.0 (HSA1.1,LC), device ve>
|
|
```
|
|
|
|
## Use VirtualBox for computations
|
|
|
|
Install VirtualBox, then add the `boinc` user to the `vboxusers` group:
|
|
|
|
```sh
|
|
usermod --append --groups 'vboxusers' 'boinc'
|
|
```
|
|
|
|
## Ask for tasks for alternative platforms
|
|
|
|
Required, for instance, to compute 32 bit tasks for World Community Grid's tasks on arm64 on Pi 4.<br/>
|
|
One line per platform.
|
|
|
|
See <https://boinc.berkeley.edu/trac/wiki/BoincPlatforms> for the available platforms.
|
|
|
|
In `cc_config.xml`:
|
|
|
|
```xml
|
|
<cc_config>
|
|
<options>
|
|
<alt_platform>arm-unknown-linux-gnueabihf</alt_platform>
|
|
<alt_platform>arm-unknown-linux-gnueabisf</alt_platform>
|
|
</options>
|
|
</cc_config>
|
|
```
|
|
|
|
## Gotchas
|
|
|
|
- It seems to work much better on debian-based distribution than on others.
|
|
- In order to suspend computing when the computer is in use, the `boinc` user should have access to your X session so
|
|
that mouse and keyboard input can be communicated to the client:
|
|
|
|
```sh
|
|
xhost '+SI:localUser:boinc'
|
|
```
|
|
|
|
## Further readings
|
|
|
|
- [Website]
|
|
- [BOINC Manager]
|
|
- [boinccmd] for the bare CLI utility
|
|
- [boinctui] for a TUI manager
|
|
- [GUI RPC bind to port 31416 failed: 98]
|
|
- [AMD ROCm™ documentation]
|
|
- [Check or set the CPU frequency or governor]
|
|
|
|
### Sources
|
|
|
|
- [Client configuration]
|
|
- [Controlling BOINC remotely]
|
|
- [Installing or uninstalling the amdgpu stack]
|
|
- [Platforms]
|
|
- Arch Wiki's [BOINC page][boinc on arch wiki]
|
|
- [Linux suspend when computer is in use bug]
|
|
|
|
<!--
|
|
Reference
|
|
═╬═Time══
|
|
-->
|
|
|
|
<!-- Knowledge base -->
|
|
[boinccmd]: boinccmd.md
|
|
[check or set the cpu frequency or governor]: check%20or%20set%20the%20CPU%20frequency%20or%20governor.md
|
|
|
|
<!-- Upstream -->
|
|
[amd linux drivers]: https://www.amd.com/en/support/linux-drivers
|
|
[amd rocm™ documentation]: https://rocm.docs.amd.com/en/latest/
|
|
[boinc manager]: https://boinc.berkeley.edu/wiki/BOINC_Manager
|
|
[client configuration]: https://boinc.berkeley.edu/wiki/Client_configuration
|
|
[controlling boinc remotely]: https://boinc.berkeley.edu/wiki/Controlling_BOINC_remotely
|
|
[installing or uninstalling the amdgpu stack]: https://amdgpu-install.readthedocs.io/en/latest/install-installing.html
|
|
[platforms]: https://boinc.berkeley.edu/trac/wiki/BoincPlatforms
|
|
[radeon™ software for linux® installation]: https://amdgpu-install.readthedocs.io/en/latest/
|
|
[website]: https://boinc.berkeley.edu/
|
|
|
|
<!-- Others -->
|
|
[boinc on arch wiki]: https://wiki.archlinux.org/title/BOINC
|
|
[boinctui]: https://www.mankier.com/package/boinc-tui
|
|
[gui rpc bind to port 31416 failed: 98]: https://boinc.mundayweb.com/wiki/index.php?title=GUI_RPC_bind_to_port_31416_failed:_98
|
|
[linux suspend when computer is in use bug]: https://boinc.berkeley.edu/dev/forum_thread.php?id=14019&postid=101146#101146
|