fastfetch-cli / fastfetch

Like neofetch, but much faster because written mostly in C.
MIT License
8.03k stars 347 forks source link

[BUG] Wrong GPU frequency shown. #1029

Closed Null-Ping closed 1 week ago

Null-Ping commented 1 week ago

General description of bug:

Often helpful information:

The content of the configuration file you use (if any):

{
    "general": {
        "processingTimeout": 100000,
        "wmiTimeout": 100000
    },
    "display": {
        "noBuffer": true,
        "showErrors": true
    },
    "modules": [
         {
            "type": "gpu",
            "driverSpecific": true,
            "detectionMethod": "auto",
            "hideType": "none",
            "temp": true
        },
        {
            "type": "vulkan"
        },
        {
            "type": "opengl"
        },
        {
            "type": "opencl"
        },
        {
            "type": "version"
        }
    ]
}

Output of fastfetch -c ci.jsonc --format json:

[
  {
    "type": "GPU",
    "result": [
      {
        "coreCount": 1280,
        "memory": {
          "dedicated": {
            "total": 6323961856,
            "used": null
          },
          "shared": {
            "total": 17154299904,
            "used": null
          }
        },
        "driver": "31.0.15.5212",
        "name": "NVIDIA GeForce GTX 1060 with Max-Q Design",
        "temperature": 49.0,
        "type": "Discrete",
        "vendor": "NVIDIA",
        "platformApi": "Direct3D 12.1",
        "frequency": 1.67
      }
    ]
  },
  {
    "type": "Vulkan",
    "result": {
      "apiVersion": "1.3.277",
      "conformanceVersion": "1.3.2",
      "driver": "NVIDIA [552.12]",
      "gpus": [
        {
          "type": "Discrete",
          "vendor": "NVIDIA",
          "name": "NVIDIA GeForce GTX 1060 with Max-Q Design",
          "driver": "552.12",
          "platformApi": "Vulkan 1.3.277",
          "memory": {
            "dedicated": {
              "total": 6548357120,
              "used": null
            },
            "shared": {
              "total": 17154297856,
              "used": null
            }
          },
          "deviceId": 7264
        }
      ]
    }
  },
  {
    "type": "OpenGL",
    "result": {
      "version": "4.6.0 NVIDIA 552.12",
      "renderer": "NVIDIA GeForce GTX 1060 with Max-Q Design/PCIe/SSE2",
      "vendor": "NVIDIA Corporation",
      "slv": "4.60 NVIDIA",
      "library": "WGL"
    }
  },
  {
    "type": "OpenCL",
    "error": "Fastfetch was build without OpenCL support"
  },
  {
    "type": "Version",
    "result": {
      "projectName": "fastfetch",
      "architecture": "x86_64",
      "version": "2.16.0",
      "versionTweak": "",
      "cmakeBuiltType": "RelWithDebInfo",
      "compileTime": "Jun 19 2024, 06:40:11",
      "compiler": "clang 18.1.6",
      "debugMode": false,
      "libc": "ucrt 14.0"
    }
  }
]

Output of fastfetch --list-features:

threads
vulkan
zlib
Proprietary GPU driver API
Null-Ping commented 1 week ago

Both GPU-Z and this Python script do get the correct frequency.

from __future__ import print_function
__author__      = "Zhi-Qiang Zhou"
__copyright__   = "Copyright 2017"

import pyopencl as cl

def openclInfo():
    """Print OpenCL information.
    """
    platforms = cl.get_platforms()
    print('There are {:d} platform(s) detected:\n'.format(len(platforms)))
    print(70 * '-')
    for platform_id, platform in enumerate(platforms):
        print('Platform:             ', platform.name)
        print('Vendor:               ', platform.vendor)
        print('Version:              ', platform.version)
        print('Number of devices:    ', len(platform.get_devices()))
        print('  ' + 68 * '-')
        for device_id, device in enumerate(platform.get_devices()):
            printDeviceInfo(platform_id, device_id, prefix='  ')
            print('  ' + 68 * '-')

def printDeviceInfo(platform_id, device_id, prefix=''):
    """Print OpenCL device information.

    Args:
        platform_id (int): Platform ID
        device_id (int): Device ID
        prefix (str): Prefix string
    """
    platforms = cl.get_platforms()
    devices = platforms[platform_id].get_devices()
    device = devices[device_id]
    print(prefix + 'Device {:d}:'.format(device_id), str(device.name), 
        '[Type: {:s}]'.format(cl.device_type.to_string(device.type)))
    print(prefix + '  Device version:               ', device.version)
    print(prefix + '  Driver version:               ', device.driver_version)
    print(prefix + '  Vendor:                       ', device.vendor)
    print(prefix + '  Available:                    ', bool(device.available))
    print(prefix + '  Address bits:                 ', device.address_bits)
    print(prefix + '  Max compute units:            ', device.max_compute_units)
    print(prefix + '  Max clock frequency:          ', device.max_clock_frequency, 'MHz')
    print(prefix + '  Global memory:                ', int(device.global_mem_size / 1024**2), 'MB')
    print(prefix + '  Global cache memory:          ', int(device.global_mem_cache_size), 'B')
    print(prefix + '  Local memory:                 ', int(device.local_mem_size / 1024), 'KB')
    print(prefix + '  Max allocable memory:         ', int(device.max_mem_alloc_size / 1024**2), 'MB')
    print(prefix + '  Host unified memory:          ', bool(device.host_unified_memory))
    print(prefix + '  Max constant args:            ', device.max_constant_args)
    print(prefix + '  Max work group size           ', device.max_work_group_size)
    print(prefix + '  Max work item dimensions:     ', device.max_work_item_dimensions)
    print(prefix + '  Max work item size:           ', device.max_work_item_sizes)
    print(prefix + '  Image support:                ', bool(device.image_support))
    print(prefix + '  Max Image2D size (H x W):     ', device.image2d_max_height, 'x', 
        device.image2d_max_width)
    print(prefix + '  Max Image3D size (D x H x W): ', device.image3d_max_depth, 'x', 
        device.image3d_max_height, 'x', device.image3d_max_width)

if __name__ == '__main__':

    openclInfo()
    _ = input('Press enter to quit: ')

(You might need to pip install pyopencl.)

CarterLi commented 1 week ago
==============NVSMI LOG==============

Timestamp                                 : Thu Jun 20 07:17:53 2024
Driver Version                            : 555.99
CUDA Version                              : 12.5

Attached GPUs                             : 1
GPU 00000000:01:00.0
    Product Name                          : NVIDIA GeForce RTX 3070 Ti Laptop GPU
    Product Brand                         : GeForce
    Product Architecture                  : Ampere
    Display Mode                          : Disabled
    Display Active                        : Disabled
    Persistence Mode                      : Enabled
    Addressing Mode                       : N/A
    MIG Mode
        Current                           : N/A
        Pending                           : N/A
    Accounting Mode                       : Disabled
    Accounting Mode Buffer Size           : 4000
    Driver Model
        Current                           : WDDM
        Pending                           : WDDM
    Serial Number                         : N/A
    GPU UUID                              : GPU-317b1ee1-938f-259c-21e3-3bac71f77dd3
    Minor Number                          : N/A
    VBIOS Version                         : 94.04.7e.00.03
    MultiGPU Board                        : No
    Board ID                              : 0x100
    Board Part Number                     : N/A
    GPU Part Number                       : 24A0-760-A1
    FRU Part Number                       : N/A
    Module ID                             : 1
    Inforom Version
        Image Version                     : G001.0000.03.03
        OEM Object                        : 2.0
        ECC Object                        : N/A
        Power Management Object           : N/A
    Inforom BBX Object Flush
        Latest Timestamp                  : N/A
        Latest Duration                   : N/A
    GPU Operation Mode
        Current                           : N/A
        Pending                           : N/A
    GPU C2C Mode                          : N/A
    GPU Virtualization Mode
        Virtualization Mode               : None
        Host VGPU Mode                    : N/A
        vGPU Heterogeneous Mode           : N/A
    GPU Reset Status
        Reset Required                    : No
        Drain and Reset Recommended       : N/A
    GSP Firmware Version                  : N/A
    IBMNPU
        Relaxed Ordering Mode             : N/A
    PCI
        Bus                               : 0x01
        Device                            : 0x00
        Domain                            : 0x0000
        Device Id                         : 0x24A010DE
        Bus Id                            : 00000000:01:00.0
        Sub System Id                     : 0x13241462
        GPU Link Info
            PCIe Generation
                Max                       : 4
                Current                   : 4
                Device Current            : 4
                Device Max                : 4
                Host Max                  : 4
            Link Width
                Max                       : 16x
                Current                   : 8x
        Bridge Chip
            Type                          : N/A
            Firmware                      : N/A
        Replays Since Reset               : 0
        Replay Number Rollovers           : 0
        Tx Throughput                     : 0 KB/s
        Rx Throughput                     : 0 KB/s
        Atomic Caps Inbound               : N/A
        Atomic Caps Outbound              : N/A
    Fan Speed                             : N/A
    Performance State                     : P0
    Clocks Event Reasons
        Idle                              : Active
        Applications Clocks Setting       : Not Active
        SW Power Cap                      : Not Active
        HW Slowdown                       : Not Active
            HW Thermal Slowdown           : Not Active
            HW Power Brake Slowdown       : Not Active
        Sync Boost                        : Not Active
        SW Thermal Slowdown               : Not Active
        Display Clock Setting             : Not Active
    Sparse Operation Mode                 : N/A
    FB Memory Usage
        Total                             : 8192 MiB
        Reserved                          : 174 MiB
        Used                              : 0 MiB
        Free                              : 8018 MiB
    BAR1 Memory Usage
        Total                             : 8192 MiB
        Used                              : 8164 MiB
        Free                              : 28 MiB
    Conf Compute Protected Memory Usage
        Total                             : N/A
        Used                              : N/A
        Free                              : N/A
    Compute Mode                          : Default
    Utilization
        Gpu                               : 0 %
        Memory                            : 0 %
        Encoder                           : 0 %
        Decoder                           : 0 %
        JPEG                              : 0 %
        OFA                               : 0 %
    Encoder Stats
        Active Sessions                   : 0
        Average FPS                       : 0
        Average Latency                   : 0
    FBC Stats
        Active Sessions                   : 0
        Average FPS                       : 0
        Average Latency                   : 0
    ECC Mode
        Current                           : N/A
        Pending                           : N/A
    ECC Errors
        Volatile
            SRAM Correctable              : N/A
            SRAM Uncorrectable Parity     : N/A
            SRAM Uncorrectable SEC-DED    : N/A
            DRAM Correctable              : N/A
            DRAM Uncorrectable            : N/A
        Aggregate
            SRAM Correctable              : N/A
            SRAM Uncorrectable Parity     : N/A
            SRAM Uncorrectable SEC-DED    : N/A
            DRAM Correctable              : N/A
            DRAM Uncorrectable            : N/A
            SRAM Threshold Exceeded       : N/A
        Aggregate Uncorrectable SRAM Sources
            SRAM L2                       : N/A
            SRAM SM                       : N/A
            SRAM Microcontroller          : N/A
            SRAM PCIE                     : N/A
            SRAM Other                    : N/A
    Retired Pages
        Single Bit ECC                    : N/A
        Double Bit ECC                    : N/A
        Pending Page Blacklist            : N/A
    Remapped Rows                         : N/A
    Temperature
        GPU Current Temp                  : 51 C
        GPU T.Limit Temp                  : N/A
        GPU Shutdown Temp                 : 98 C
        GPU Slowdown Temp                 : 95 C
        GPU Max Operating Temp            : 105 C
        GPU Target Temperature            : 87 C
        Memory Current Temp               : N/A
        Memory Max Operating Temp         : N/A
    GPU Power Readings
        Power Draw                        : 31.83 W
        Current Power Limit               : 125.00 W
        Requested Power Limit             : N/A
        Default Power Limit               : 125.00 W
        Min Power Limit                   : 1.00 W
        Max Power Limit                   : 150.00 W
    GPU Memory Power Readings
        Power Draw                        : N/A
    Module Power Readings
        Power Draw                        : N/A
        Current Power Limit               : N/A
        Requested Power Limit             : N/A
        Default Power Limit               : N/A
        Min Power Limit                   : N/A
        Max Power Limit                   : N/A
    Clocks
        Graphics                          : 1485 MHz
        SM                                : 1485 MHz
        Memory                            : 7000 MHz
        Video                             : 1305 MHz
    Applications Clocks
        Graphics                          : N/A
        Memory                            : N/A
    Default Applications Clocks
        Graphics                          : N/A
        Memory                            : N/A
    Deferred Clocks
        Memory                            : N/A
    Max Clocks
        Graphics                          : 1785 MHz
        SM                                : 1785 MHz
        Memory                            : 7001 MHz
        Video                             : 1575 MHz
    Max Customer Boost Clocks
        Graphics                          : N/A
    Clock Policy
        Auto Boost                        : N/A
        Auto Boost Default                : N/A
    Voltage
        Graphics                          : 787.500 mV
    Fabric
        State                             : N/A
        Status                            : N/A
        CliqueId                          : N/A
        ClusterUUID                       : N/A
        Health
            Bandwidth                     : N/A
    Processes                             : None
    Capabilities
        EGM                               : disabled
nonetrix commented 1 week ago

Same issue mine reports as 50Mhz lmao imagine the power efficiency if it was real

GPU: AMD Radeon RX 6800 @ 0.05 GHz [Discrete]

Edit: kek

GPU: AMD Radeon RX 6800 @ 0.02 GHz [Discrete]

Running rocm-smi reveals that it is really running at 500MHz which is lowest it will go without underclocking maybe??? Not sure how far you could take that, not going to bother finding out

Null-Ping commented 1 week ago

Here is some more data:

NVIDIA doesn't seem to have specs page for the Max-Q variant, for regular GTX 1060 it has this: graphics 1506 MHz, processor 1708 MHz. Clocks for Max-Q variant, taken from techpowerup.com: base 1063 MHz, boost 1480 MHz, memory 2002 MHz. Clocks for Max-Q variant, taken from notebookcheck.net: 1063 MHz - 1265 MHz - 1341 MHz - 1480 MHz boost, 8000 MHz memory.

Now I'm not even sure what is the real max frequency 1341 MHz, 1480 or 1670 MHz? Is GPU-Z and PyOpenCl right, or NVIDIA-smi, or the websites? If somebody knows, or knows how to check the real one, please tell me.

nvsmi_log.txt pyopencl_log.txt

nvidia_control_panel gpu_z

CarterLi commented 1 week ago

@nonetrix It was current frequency not max frequency. AMD drivers only report current frequency.

https://www.kernel.org/doc/html/v5.10/gpu/amdgpu.html#hwmon-interfaces

nonetrix commented 1 week ago

Yes correct, it also isn't able to go down to 20MHz last time I checked

CarterLi commented 1 week ago

@Null-Ping We use nvmlDeviceGetMaxClockInfo to query max frequency for NV cards. I'll check it later

CarterLi commented 1 week ago

If somebody knows, or knows how to check the real one, please tell me.

Maybe run some GPU stress tests, and read the current frequency

Null-Ping commented 1 week ago

Furmark reports frequencies up to 1493, so i seems like the 1480 number is more accurate. From what I have read, 1670 MHz is only for regular GTX 1060, not for the Max-Q. 1341 MHz is normal boost clock for Max-Q, and 1480 is overclocked boost clock. (I did not overclock my GPU though, but maybe the laptop manufacturer HP did, sadly, the BIOS is to locked-up to get any information from there.)

Null-Ping commented 1 week ago

Also, this report shows the correct frequency for OpenCL: https://opencl.gpuinfo.org/displayreport.php?id=191 No idea why on my laptop it is different.

CarterLi commented 1 week ago

Tested myself

image image

GPU-z itself reports current freq higher than its max freq. Seems fastfetch and nvidia-smi ( which both use nvml ) are correct

CarterLi commented 1 week ago

There are many nvml bindings for python. You should be able to use them to get the same result

CarterLi commented 1 week ago

Furmark reports frequencies up to 1493, so i seems like the 1480 number is more accurate.

Please make sure that it reports the maximum frequency, not the average freq or temperature limited freq

CarterLi commented 1 week ago

--gpu-detection-method opencl was added in the dev branch.

Null-Ping commented 1 week ago

Thanks. After all I managed to get the frequency to 1.67 GHz in Furmark, by decreasing load. So I guess GPU-Z, OpenCL, and partially the websites are wrong. Sorry for bad report.