Hi papampi,
This issue was with a mix of cards like the P106 and 1070 in a frame setting the OC speeds requires that the nvidia command to set the GPU or memory OC needs to be the [2] for some and [3] for others. The loop looks like it was designed to try both [2] [3] if NORMAL=YES above, for each gpu but the gpu variable was incremented in the inner loop so you would get [2] on gpu[0] then [3] on gpu[1], [2] on gpu [2] and so on. By moving the gpu increment out of the for loop it and into the outer while loop I believe it works as intended. I added the two echo's in here to show the behavior.
Original loop:
TI is 2 3, J is 2 and GPU is 0
nvidia-settings -a [gpu:0]/GPUGraphicsClockOffset[2]=-200
nvidia-settings -a [gpu:0]/GPUMemoryTransferRateOffset[2]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:0]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:0]) assigned value 1500.
TI is 2 3, J is 3 and GPU is 1
nvidia-settings -a [gpu:1]/GPUGraphicsClockOffset[3]=-200
nvidia-settings -a [gpu:1]/GPUMemoryTransferRateOffset[3]=1300
TI is 2 3, J is 2 and GPU is 2
nvidia-settings -a [gpu:2]/GPUGraphicsClockOffset[2]=-200
nvidia-settings -a [gpu:2]/GPUMemoryTransferRateOffset[2]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:2]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:2]) assigned value 1500.
TI is 2 3, J is 3 and GPU is 3
nvidia-settings -a [gpu:3]/GPUGraphicsClockOffset[3]=-200
nvidia-settings -a [gpu:3]/GPUMemoryTransferRateOffset[3]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:3]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:3]) assigned value 1500.
TI is 2 3, J is 2 and GPU is 4
nvidia-settings -a [gpu:4]/GPUGraphicsClockOffset[2]=-200
nvidia-settings -a [gpu:4]/GPUMemoryTransferRateOffset[2]=1300
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:4]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:4]) assigned value 1300.
TI is 2 3, J is 3 and GPU is 5
nvidia-settings -a [gpu:5]/GPUGraphicsClockOffset[3]=-200
nvidia-settings -a [gpu:5]/GPUMemoryTransferRateOffset[3]=1300
===============================================================
By moving the gpu increment to the while loop the execution looks like:
TI is 2 3, J is 2 and GPU is 0
nvidia-settings -a [gpu:0]/GPUGraphicsClockOffset[2]=-200
nvidia-settings -a [gpu:0]/GPUMemoryTransferRateOffset[2]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:0]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:0]) assigned value 1500.
TI is 2 3, J is 3 and GPU is 0
nvidia-settings -a [gpu:0]/GPUGraphicsClockOffset[3]=-200
nvidia-settings -a [gpu:0]/GPUMemoryTransferRateOffset[3]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:0]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:0]) assigned value 1500.
TI is 2 3, J is 2 and GPU is 1
nvidia-settings -a [gpu:1]/GPUGraphicsClockOffset[2]=-200
nvidia-settings -a [gpu:1]/GPUMemoryTransferRateOffset[2]=1300
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:1]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:1]) assigned value 1300.
TI is 2 3, J is 3 and GPU is 1
nvidia-settings -a [gpu:1]/GPUGraphicsClockOffset[3]=-200
nvidia-settings -a [gpu:1]/GPUMemoryTransferRateOffset[3]=1300
TI is 2 3, J is 2 and GPU is 2
nvidia-settings -a [gpu:2]/GPUGraphicsClockOffset[2]=-200
nvidia-settings -a [gpu:2]/GPUMemoryTransferRateOffset[2]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:2]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:2]) assigned value 1500.
TI is 2 3, J is 3 and GPU is 2
nvidia-settings -a [gpu:2]/GPUGraphicsClockOffset[3]=-200
nvidia-settings -a [gpu:2]/GPUMemoryTransferRateOffset[3]=1500
Attribute 'GPUGraphicsClockOffset' (19_1_4:0[gpu:2]) assigned value -200.
Attribute 'GPUMemoryTransferRateOffset' (19_1_4:0[gpu:2]) assigned value 1500.
if [ $P106_100_FULL_HEADLESS_MODE == "NO" ]
then
gpu=0
while [ $gpu -lt $GPUS ]
do
for j in $TI
do
CORE=${__CORE_OVERCLOCK[${gpu}]}
MEM=${MEMORY_OVERCLOCK[${gpu}]}
echo "TI is $TI, J is $j and GPU is $gpu"
echo "${NVD} -a [gpu:$gpu]/GPUGraphicsClockOffset[${j}]=$CORE"
echo "${NVD} -a [gpu:$gpu]/GPUMemoryTransferRateOffset[${j}]=$MEM"
${NVD} -a [gpu:$gpu]/GPUGraphicsClockOffset[${j}]=$CORE
${NVD} -a [gpu:$gpu]/GPUMemoryTransferRateOffset[${j}]=$MEM
done
gpu=$(($gpu+1))
done
Thanks a lot for the detailed explanation
Added your fix for next release.
If you found any more fixes please let us know to add for next releases.