Provo a tornare sull'argomento linux+ati+commandline dopo qualche prova con i nuovi driver e le nuove schede video.
Se avete correzioni o altre informazioni da portare: ben vengano. :-)
Rispetto al passato:
- non è più necessario aver avviato l'interfaccia grafica sull'host;
- non è più necessario riflashare il bios della VGA per modificare tensioni e frequenze;
- non è necessario nessun software particolare: le modifiche avvengono attraverso il kernel.
L'hardware supportato è dal GCN-3 in poi, quindi dal chipset Tonga della R9-285. Controllate su wikipedia il vostro chipset:
List of AMD graphics processing units
I chipset delle serie GCN-1 e GCN-2 non sono supportati ufficialmente anche se qualcosa funziona, soprattuto con GCN-2 che può utilizzare le librerie ufficiali OpenCL di AMD.
Per il software, ho usato le librerie OpenCL dei driver ufficiali di AMD nella versione 18.20, quindi non le più recenti disponibili. Per contro, serve un kernel maggiore o uguale al 4.17, quindi piuttosto recente. Nel dubbio, è bene aspettare che un kernel >=4.17 diventi stabile nella vostra distribuzione: meno problemi.
Se vi scoccia aspettare, tentate con il pacchetto amdgpu-pro di AMD, dovrebbe funzionare ma non ho fatto molte prove.
Per abilitare le opzioni avanzate, è necessario aggiungere alla commandline del kernel al boot
amdgpu.ppfeaturemask=0xffffffff
quindi è necessario modificare grub o lilo.
Riavviato il computer, fermate boinc per evitare di avere la scheda video sotto carico e controllate lo stato iniziale della scheda con:
# sensors amdgpu-*
amdgpu-pci-0100
Adapter: PCI adapter
vddgfx: +0.90 V
fan1: 1460 RPM
temp1: +34.0°C (crit = +104.0°C, hyst = -273.1°C)
power1: 19.10 W (cap = 150.00 W)
E controllate gli stati o livelli di prestazioni predeterminati del core della gpu e della memoria:
# cat /sys/class/drm/card0/device/pp_od_clk_voltage
OD_SCLK:
0: 300MHz 900mV
1: 473MHz 918mV
2: 745MHz 931mV
3: 829MHz 962mV
4: 870MHz 1000mV
5: 903MHz 1031mV
6: 938MHz 1075mV
7: 990MHz 1100mV
OD_MCLK:
0: 150MHz 900mV
1: 300MHz 900mV
2: 700MHz 900mV
3: 1425MHz 975mV
OD_RANGE:
SCLK: 300MHz 1200MHz
MCLK: 150MHz 1750MHz
VDDC: 900mV 1225mV
Il primo passo potrebbe essere la modifica del consumo massimo, per esempio limitandolo a
99 Watt. Prima di dare comandi a casaccio, controllate il valore pre-impostato; tenendo conto che il percorso del file nel vostro computer potrebbe essere diverso:
# cat /sys/class/drm/card0/device/hwmon/hwmon3/power1_cap
150000000
Tralasciano le facili battute sui "milioni di watt" delle schede AMD, grossomodo significa che il massimo consumo è impostato a 150W.
Limitiamolo a 99W:
# echo "99000000" > /sys/class/drm/card0/device/hwmon/hwmon3/power1_cap
La scheda video passerà da uno stato all'altro per rispettare tale limite, quindi se nello stato 7 a 990MHz/1100mV del core dovesse superare i 99W di consumo imposti, la scheda video scenderà di stato, per esempio, fino allo stato 5, cioè a 903MHz/1031mV.
Per il momento, con il kernel 4.19.6, non è possibile aumentare il consumo massimo.
Oltre a limitare il consumo, è possibile modificare frequenze e tensioni dei vari stati, per esempio con:
#echo "s 7 999 1075" > /sys/class/drm/card0/device/pp_od_clk_voltage
Andiamo a modificare lo stato 7, il più performante, aumentando la frequenza massima del core ma abbassandone la tensione.
#echo "m 3 1450 975" > /sys/class/drm/card0/device/pp_od_clk_voltage
Per lo stato 3 della memoria: aumentiamo la frequenza massima e manteniamo la tensione.
Per rendere effettive le modifiche usiamo:
#echo "c" > /sys/class/drm/card0/device/pp_od_clk_voltage
Per ripristinare le frequenze iniziali:
#echo "r" > /sys/class/drm/card0/device/pp_od_clk_voltage
Adesso riavviate boinc e buone prove. ;-)