Independent GPU Throttling

Started by fred, May 16, 2011, 02:25:08 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

fred

As of V 5.90 the GPU cards are automatically assigned to the right position and are set to individual throttling. You need at least BOINC 7.0.30 for this to work.

In the "Programs" tab you may set different GPU temperatures:

70 (uses 70C for all GPU's)
61;53;67;74 (uses the individual temperatures in C for the GPU's).

As of V 5.70 you can adjust the GPU temperatures individually.

For a 4 card setup: In the Set Gpu field type e.g. 70;79;74;80
With 2 cards: e.g. 70;79

Sometimes it is necessary to assign the right reading, to the right GPU.

As of V 3.60 it is possible, to throttle the GPU independently, on multi GPU systems.

Some things, that may make it impossible on your system for this to work properly.

Multi GPU cards like the GTX 295 or the GTX 590, may have difficulty regulating the GPU's separably.
As one GPU heats up its companion GPU, as do other parts of the card, one of the GPU's may never go below a certain temperature, whatever you do.
The temperature may even rise as the other GPU heats up more. The same may be the case when you place two cards close to one another, as the heat from one card is sucked into the fan of the card next to it.

But that said, some systems may benefit from this feature.

Before this can works, you have to be sure that Device 0, 1,2,3 are the same as GPU 0, 1,2,3 in TThrottle.
Sometimes BOINC assigns devices in mysterious ways.

The best way yet... Use the program Process Explorer AKA "procexp.exe", this program lets you suspend and resume programs.

The example is for SETI but should work on other projects as well.

Find the CUDA or ATI tasks, normally under BOINC.
Suspend all GPU tasks, with the right mouse, suspend.
Wait for a minute or 2 for the cards to cool down.

Next, Resume one of them and wait until you see the temperature go up for at least 2 degrees. Suspend this one again.
In the TThrottle programs tab, check the PID and device number.
CPU:0, GPU:1,2 PID:5200 = 5200, Device 2. (Device is the number directly after the GPU: 1)
CPU:0, GPU:1,0 PID:3596 = 3596, Device 0.
At the same time check the graph, the BoincTasks graph works best, as this allows you to show the GPU's only, write down the GPU number like GPU 0, GPU 1.

When you are done, you should have list like this:

Device 2, PID 2296, GPU 3
Device 3, PID 3180, GPU 0
Device 1, PID 3564, GPU 1
Device 0, PID 3564, GPU 2

From this extract the sequence Device 0,1,2,3 position: 2;1;3;0  (Device 0 = GPU 2, Device 1 = GPU 1, Device 2 = GPU 3, Device 3 - GPU 0)

In TThrottle.xml, placed in the same folder as the Exe add the entry.

<GPU_SETUP>
  <Device_position>2;1;3;0</Device_position>
</GPU_SETUP>

When there already is a <GPU_SETUP> add the <Device_position> too it.
Make sure you have only one <GPU_SETUP> block and there are no comments around the block.

Restart TThrottle and check for the line: <GPU> device_position: 2 1 3 0 4 5
When the line is present you are all set.

This function only works when you have "Connect with BOINC client" checked, the line <Device_position> is present even when the sequence is 0;1;2;3 and you have more than one GPU.

Mellowman

This doesn't seem to work anymore. Or maybe it's just my system with 2 Nvidia's GTX-560TI-448's (in SLI in 1st and 2nd slot) and an ATI/AMD HD6950 (3rd slot).