Contents

Multi GPU overclock setup under Fedora 33

It turns out GPU overclocking under Linux may not be easy peasy.

Objective

The goal is to be able to overclock GPU without any displays attached.

After installation of nvidia card and proper drivers under linux system the overclock functionality is disabled by default.

To overcome this limitation few steps are required, but when attached card has no displays attached it gets a little bit more complicated.

My setup

I have three NVIDIA GPUs installed on my mobo:

  • GTX 1650S
  • RTX 3070
  • RTX 3060 Ti

1650S is used just as display output (HDMI, DP ports used)
3070 and 3060 Ti for CUDA calculations

To increase performance I wanted to overclock 3070 and 3060 Ti, but it forced me to learn few more things in Linux.

Solution

Here is my configuration file (/etc/X11/xorg.conf.d/10-nvidia.conf)

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" 0 0
    Screen      2  "Screen2" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/input/mice"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Idek Iiyama PLX2380H"
    HorizSync       30.0 - 83.0
    VertRefresh     55.0 - 76.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce GTX 1650 SUPER"
    BusID          "PCI:11:0:0"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "nvidiaXineramaInfoOrder" "DFP-2"
    Option         "metamodes" "HDMI-0: nvidia-auto-select +2560+0, DP-0: nvidia-auto-select +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    Option         "Coolbits" "28"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

#########################3060################################################
Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
    Option         "CustomEDID" "DFP-0:/etc/X11/edid.bin"
EndSection

Section "Device"
    Identifier     "Device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce RTX 3060"
    BusID          "PCI:10:0:0"
    Option         "Coolbits" "28"
EndSection

#screen for 3070
Section "Screen"
    Identifier     "Screen1"
    Device         "Device1"
    Monitor        "Monitor1"
    Option         "UseDisplayDevice" "DFP-0"
    Option         "ConnectedMonitor" "DFP-0"
    DefaultDepth    24
    Option         "Coolbits" "28"
    SubSection     "Display"
        Viewport 0 0
        Depth       24
    EndSubSection
EndSection


###########################3070##############################################
Section "Monitor"
    Identifier     "Monitor2"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
    Option         "CustomEDID" "DFP-0:/etc/X11/edid.bin"
EndSection

Section "Device"
    Identifier     "Device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce RTX 3070"
    BusID          "PCI:4:0:0"
    Option         "Coolbits" "28"
EndSection

#screen for 3070
Section "Screen"
    Identifier     "Screen2"
    Device         "Device2"
    Monitor        "Monitor2"
    Option         "UseDisplayDevice" "DFP-0"
    Option         "ConnectedMonitor" "DFP-0"
    DefaultDepth    24
    Option         "Coolbits" "28"
    SubSection     "Display"
        Viewport 0 0
        Depth       24
    EndSubSection
EndSection

Description

First thing you need to do is to configure Dummy monitor for the card.

To do so we need EDID of some screen.

The easiest way is to export it from already attached display.

Exporting EDIT

It is reflected in the section:

#Dummy monitor
Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Unknown"
    Option         "DPMS"
    Option         "CustomEDID" "DFP-0:/etc/X11/edid.bin"
EndSection

Then we need to create Device section for our card where in BusId we specify port where card is attached.

The last section is Screen which connects Device and Screen.

The crucial part is Option "Coolbits" "28" which turns on overclocking possibilities.

In the end we end up with:

Overclocking options turned on

Useful resources: