Determining Compute Unit Voltages

Making your compute units efficient is normally a difficult task, but with crossbelt it becomes simple to see what settings you should implement.

NOTE Overclocking and undervolting can cause harm to your equipment. Please do so at your own risk.

NOTE This doc only covers voltage with respect to AMD cards only. Nothing needs to be done for Nvidia.

Decreasing power consumption by undervolting the core

In order to mine efficiently you need to consume the least amount of power and attain the highest hashrate. But a high hashrate with big power consumption does not allow for maximum profit. So it is best to adjust your voltage overclock settings to achieve maximum profitability.

Adjusting your core voltage settings is the quickest way to save power. However, this can also mean an unstable system or much lower hashrate than anticipated. All GPUs are different even if they are the same, but most will benefit from from a conservative setting. Since all GPUs are different you need to fetch the voltage and voltage table for that GPU.

Getting the current core voltage

You can get the currently set and running voltage for each GPU with the cb cu volt core command.

$ cb cu volt core
INDEX | NAME          | CURRENT_VDDC | CONFIGURED_VDDC
------|---------------|--------------|----------------
GPU0  | Radeon RX 570 | 822          | 811
GPU1  | Radeon RX 570 | 819          | 811
GPU2  | Radeon RX 570 | 824          | 811
GPU3  | Radeon RX 480 | 889          | 826
GPU4  | Radeon RX 570 | 825          | 811
GPU5  | Radeon RX 480 | 864          | 846

As you can see, despite the configured voltage the GPU is using slightly more. At this time we are not sure the correlation between these two columns but setting the core voltage will bring down your power consumption for sure.

Getting the voltage table

The voltage table provides an insight into how the GPU can be configured. Each GPU runs in one of several states. These states are labeled 0-7 and provide a clock and voltage setting for each state. For best results use the values from the same row.

The voltage table is not static. Whenever a OC is applied the voltage table will adjust accordingly and the table output will be completely different.

This data is gathered by parsing the sysfs file pp_od_clk_voltage readings.

NOTE This table is for the core voltage and clock settings only.

$ cb cu volt table --units 0
INDEX | NAME          | BIOS            | PSTATE | CLK_MHZ | VOLTAGE
------|---------------|-----------------|--------|---------|--------
0     | Radeon RX 570 | 113-2E366FU-O53 | 0      | 300     | 750
0     | Radeon RX 570 | 113-2E366FU-O53 | 1      | 588     | 765
0     | Radeon RX 570 | 113-2E366FU-O53 | 2      | 943     | 776
0     | Radeon RX 570 | 113-2E366FU-O53 | 3      | 963     | 787
0     | Radeon RX 570 | 113-2E366FU-O53 | 4      | 983     | 798
0     | Radeon RX 570 | 113-2E366FU-O53 | 5      | 1003    | 811
0     | Radeon RX 570 | 113-2E366FU-O53 | 6      | 1023    | 861
0     | Radeon RX 570 | 113-2E366FU-O53 | 7      | 1043    | 861

For most AMD 5XX series cards a voltage between 800-900 should be the goal. Anything higher or lower may use excessive power or be unstable. Each card is different so experimentation will be necessary.

When looking at this table try and use a core clock above 1000 (for 5xx series) and a voltage above 800. You should use the exact values in this table for the desired PSTATE.

Each hashing algorithm will require a different setting based on how it uses the GPU to compute hashes. Some algorithms use all memory while others use all core.

Referencing this voltage table should provide a starting point on which values to use. If you decide on PSTATE 6 your voltage will be 861 and your core clock will be 1023.

If you decide on PSTATE 7 your voltage will be 861 and core clock will be 1043.

If the algorithm requires more clock speed, PSTATE 7 would be the better choice since it uses the same voltage but slightly higher clock speed.

Comparing voltage tables will other GPUs

Crossbelt is great for comparing voltage tables across all GPUs or a subset of GPUs and power states.

Use the --pstate <num|range> or --units <num|range> to mix and match GPUs and power states.

$ cb cu volt table --units 0-3,4 --pstate 3-5
INDEX | NAME          | BIOS             | PSTATE | CLK_MHZ | VOLTAGE
------|---------------|------------------|--------|---------|--------
0     | Radeon RX 570 | 113-2E366FU-O53  | 3      | 963     | 787
1     | Radeon RX 570 | 113-2E366FU-O53  | 3      | 1003    | 811
2     | Radeon RX 570 | 113-2E366FU-O53  | 3      | 1003    | 811
3     | Radeon RX 480 | 113-D0090101_103 | 3      | 1045    | 815
4     | Radeon RX 570 | 115-C940PI0-100  | 3      | 983     | 787
0     | Radeon RX 570 | 113-2E366FU-O53  | 4      | 983     | 798
1     | Radeon RX 570 | 113-2E366FU-O53  | 4      | 1023    | 861
2     | Radeon RX 570 | 113-2E366FU-O53  | 4      | 1036    | 861
3     | Radeon RX 480 | 113-D0090101_103 | 4      | 1066    | 815
4     | Radeon RX 570 | 115-C940PI0-100  | 4      | 1003    | 798
0     | Radeon RX 570 | 113-2E366FU-O53  | 5      | 1003    | 811
1     | Radeon RX 570 | 113-2E366FU-O53  | 5      | 1043    | 861
2     | Radeon RX 570 | 113-2E366FU-O53  | 5      | 1069    | 861
3     | Radeon RX 480 | 113-D0090101_103 | 5      | 1087    | 826
4     | Radeon RX 570 | 115-C940PI0-100  | 5      | 1023    | 811