diff --git a/docker/boinc-client/intel.docker-compose.yml b/docker/boinc-client/intel.docker-compose.yml new file mode 100644 index 0000000..503553b --- /dev/null +++ b/docker/boinc-client/intel.docker-compose.yml @@ -0,0 +1,28 @@ +# gotchas: +# - 'pid: host' allows boinc to determine nonboinc processes for cpu percentages +# and exclusive applications +# - 'group_add' removed in 3.0 +# - 'cpus' available from 2.2 and removed in 3.0 +# +# sources: +# - https://hub.docker.com/r/boinc/client +# - https://docs.docker.com/compose/compose-file/compose-file-v2/ + +version: '2.2' +services: + client: + image: boinc/client:intel + container_name: boinc-client + restart: always + network_mode: host + pid: host + mem_swappiness: 1 + devices: + - /dev/dri:/dev/dri + volumes: + - /etc/resolv.conf:/etc/resolv.conf:ro + - ./data:/var/lib/boinc + environment: + - BOINC_CMD_LINE_OPTIONS=--allow_remote_gui_rpc + - BOINC_GUI_RPC_PASSWORD=123 + - TZ=Europe/Dublin diff --git a/docker/boinc-client/intel.opensuse.dockerfile b/docker/boinc-client/intel.opensuse.dockerfile new file mode 100644 index 0000000..03e5aa6 --- /dev/null +++ b/docker/boinc-client/intel.opensuse.dockerfile @@ -0,0 +1,38 @@ +# docker build -t 'michelecereda/boinc-client:intel-tw-7.24.1' -f 'intel.opensuse.dockerfile' . +# docker run --rm --name 'boinc' --net='host' --pid='host' \ +# --device '/dev/dri:/dev/dri' -v './data:/var/lib/boinc' \ +# -e BOINC_GUI_RPC_PASSWORD="123" -e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \ +# 'michelecereda/boinc-client:intel-tw-7.24.1' + +FROM registry.opensuse.org/opensuse/tumbleweed:20231226 + +LABEL maintainer="michelecereda" \ + description="Intel GPU-savvy BOINC client." + +# Global environment settings +ENV BOINC_GUI_RPC_PASSWORD="123" \ + BOINC_REMOTE_HOST="127.0.0.1" \ + BOINC_CMD_LINE_OPTIONS="" + +# Copy files +COPY start-boinc.sh /usr/bin/ + +# Configure +WORKDIR /var/lib/boinc + +# BOINC RPC port +EXPOSE 31416 + +# Install +RUN zypper install -y --no-recommends \ + # Time Zone Database + timezone=2023c-1.5 \ + # BOINC client + boinc-client=7.24.1-1.2 \ + # OpenCL ICD Loader + ocl-icd-devel=2.3.1-2.1 \ + # Intel NEO OpenCL + intel-opencl=23.22.26516.18-1.2 \ + && zypper clean -a + +CMD ["start-boinc.sh"] diff --git a/docker/boinc-client/start-boinc.sh b/docker/boinc-client/start-boinc.sh new file mode 100755 index 0000000..968ba45 --- /dev/null +++ b/docker/boinc-client/start-boinc.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Originally from: +# https://github.com/BOINC/boinc-client-docker/blob/master/bin/start-boinc.sh + +# Configure the GUI RPC +echo $BOINC_GUI_RPC_PASSWORD > /var/lib/boinc/gui_rpc_auth.cfg +echo $BOINC_REMOTE_HOST > /var/lib/boinc/remote_hosts.cfg + +# Run BOINC. Full path needs for GPU support. +exec /usr/bin/boinc $BOINC_CMD_LINE_OPTIONS diff --git a/knowledge base/boinc.md b/knowledge base/boinc.md index 0d12925..bb1955b 100644 --- a/knowledge base/boinc.md +++ b/knowledge base/boinc.md @@ -7,6 +7,7 @@ 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) @@ -99,6 +100,14 @@ sudo zypper install 'https://repo.radeon.com/amdgpu-install/22.20.3/sle/15.4/amd sudo amdgpu-install --usecase=workstation --opencl=rocr ``` +### Intel OpenCL support + +```sh +sudo apt install 'intel-opencl-icd' 'ocl-icd-libopencl1' +sudo pacman -Sy 'ocl-icd' +sudo zypper install 'intel-opencl' +``` +
At the next restart of the BOINC client, something similar to this line should appear in the event logs: diff --git a/knowledge base/pacman.md b/knowledge base/pacman.md index 0badb9c..276c117 100644 --- a/knowledge base/pacman.md +++ b/knowledge base/pacman.md @@ -15,26 +15,43 @@ Useful options: ## TL;DR ```sh +# Search installed packages. +pacman -Q -s 'ddc' -# search an installed package -pacman --query --search ddc +# List all explicitly (manually) installed packages. +pacman -Q -e -# list all explicitly installed packages -pacman --query --explicit -# set a package as explicitly (manually) installed -pacman --database --asexplicit dkms -# set a package as installed as dependency (automatically installed) -pacman --database --asdeps autoconf +# Set packages as explicitly (manually) installed. +pacman -D --asexplicit 'dkms' -# install zsh unsupervisioned (useful in scrips) -pacman --noconfirm \ - --sync --needed --noprogressbar --quiet --refresh \ - fzf zsh-completions -# completely remove virtualbox-guest-utils-nox unsupervisioned (useful in scrips) -pacman --noconfirm \ - --remove --nosave --noprogressbar --quiet --recursive --unneeded \ - virtualbox-guest-utils-nox +# Set packages as installed as dependency (automatically installed). +pacman -D --asdeps 'autoconf' + + +# Refresh repositories' cache. +pacman -Sy + + +# Download packages from repositories. +# Does *not* install them. +pacman -Sw 'fzf' + + +# Install packages from repositories. +pacman -S -qy --needed --noprogressbar 'fzf' 'zsh-completions=0.35.0-1' + +# Install packages from local directories. +pacman -U 'fzf-0.44.1-1-x86_64.pkg.tar.zst' + + +# Completely remove packages. +pacman -R -nsu --noprogressbar 'virtualbox-guest-utils-nox' + + +# Take actions without supervision. +# Useful in scripts. +pacman --noconfirm … ``` ## Further readings