Giusto a titolo informativo, nel thread relativo a
GFN-1x Small Primes
(che è solo per GPU) si sconsiglia di eseguire tale sottoprogetto su host che possono interrompere spesso le elaborazioni GPU, specialmente se si tratta di GPU lente. Ovviamente si riferisce ai client Boinc con l'opzione "sospendi uso GPU quando il computer è in uso" abilitata (e funzionante, dato che la versione 7.16.6 su Ubuntu ce l'ha buggata, quindi no problems
).
Comunque sia, è implementato un sistema di checkpoint che salva soltanto l'indice dell'ultimo candidato completamente processato.
Una wu è composta da 2048 candidati e ne vengono elaborati fino a 256 in parallelo, con ogni test che dura 1-2 secondi.
Credo di aver capito che ogni 256 candidati, i progressi vengono registrati ed effettivamente c'è un file in cui questa informazione sembra essere presente.
Non viene scomodato il client Boinc che continua a non sapere nulla, ma presumo sia il programma a capire da dove ripartire. Un po' come l'applicazione TF di SRBase.
Quindi, niente panico.
Inoltre, per quanto riguarda i sistemi Linux (perlomeno sui vari *buntu) è presente un problemino per le applicazioni opencl. In pratica, l'applicazione GPU utilizza 1 thread CPU al 100%, anche se non ne avrebbe bisogno. Se ne parla
qui
. Per fortuna, con un po' di smanettamenti si può risolvere. Questo espediente funziona naturalmente anche sul progetto PrimeGrid, per tutte le applicazioni GFN.
1) Scaricare il file
libsleep.c
.
2) Modificare la variabile
yield_sleep_time con il valore desiderato (ogni GPU ne ha uno ottimale; più è alto, meno tempo CPU viene dedicato; se l'utilizzo della GPU non è vicino al 100%, serve più basso) e salvare.
3) Compilare mediante il comando presente nei commenti all'interno del file stesso. Viene generato un file dal nome
libsleep.so.
4) Se state elaborando con un client Boinc standalone, avete già finito. Chiudetelo e riapritelo con il comando bash:
YIELD_SLEEP_TIME="1000" LD_PRELOAD="/path/della/tua/libreria/libsleep.so" ./boinc
4bis) Se invece avete installato boinc come servizio, con la dovuta attenzione di quando si toccano i file di sistema potreste fare così:
sudo cp /path/della/tua/libreria/libsleep.so /lib/libsleepboinc.so
sudo cp /lib/systemd/system/boinc-client.service /etc/systemd/system/boinc-client.service
cd /etc/systemd/system
sudo mousepad boinc-client.service
Modificate la riga
con
ExecStart=/bin/sh -c 'YIELD_SLEEP_TIME="1000" LD_PRELOAD="/lib/libsleepboinc.so" /usr/bin/boinc --dir /var/lib/boinc-client'
e salvate.
Riavviate il sistema. Fine.
Se quest'ultima operazione è andata a buon fine, all'avvio del client nel
Registro Eventi... dovrebbero esserci anche queste due righe:
mar 26 gen 2021, 01:25:29 | | libc: version 1000usec
mar 26 gen 2021, 01:25:29 | | OS: Linux Ubuntu: Ubuntu 20.04.1 LTS [5.4.0-58-generic|libc 1000usec]
Per annullare questa modifica basta cancellare il file
/etc/systemd/system/boinc-client.service
e riavviare.
Occhio, il file in
/etc, non quello in
/lib che è l'originale.
P.S. si può modificare ogni volta la variabile bash YIELD_SLEEP_TIME per modificare il valore della libreria, senza dover ricompilare.