• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

GPU-Z Shared Memory Class in C#

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
I wrote a C# class that reads the shared memory from GPU-Z.
It doesn't use DLLImport or PInvoke (but it does require .Net 4), as it uses the new MemoryMappedFiles (MMF) namespace they added in 4.0

The problem is that I can't think of anything useful to do with it that I can't get from just running GPU-Z. :/

Any thought fellow coders and users of GPU-Z?

I'll happily post the class source code when I nail down all the output requirements needed for any ideas you gents (and ladies) throw out.
 

FordGT90Concept

"I go fast!1!11!1!"
Joined
Oct 13, 2008
Messages
26,259 (4.65/day)
Location
IA, USA
System Name BY-2021
Processor AMD Ryzen 7 5800X (65w eco profile)
Motherboard MSI B550 Gaming Plus
Cooling Scythe Mugen (rev 5)
Memory 2 x Kingston HyperX DDR4-3200 32 GiB
Video Card(s) AMD Radeon RX 7900 XT
Storage Samsung 980 Pro, Seagate Exos X20 TB 7200 RPM
Display(s) Nixeus NX-EDG274K (3840x2160@144 DP) + Samsung SyncMaster 906BW (1440x900@60 HDMI-DVI)
Case Coolermaster HAF 932 w/ USB 3.0 5.25" bay + USB 3.2 (A+C) 3.5" bay
Audio Device(s) Realtek ALC1150, Micca OriGen+
Power Supply Enermax Platimax 850w
Mouse Nixeus REVEL-X
Keyboard Tesoro Excalibur
Software Windows 10 Home 64-bit
Benchmark Scores Faster than the tortoise; slower than the hare.
Graph clockspeeds and memory usage.
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
134 views and only one suggestion? (Thanks Ford)
You guys suck at ideas as much as I do. :laugh:
 

Mindweaver

Moderato®™
Staff member
Joined
Apr 16, 2009
Messages
8,193 (1.50/day)
Location
Charleston, SC
System Name Tower of Power / Sechs
Processor i7 14700K / i7 5820k @ 4.5ghz
Motherboard ASUS ROG Strix Z690-A Gaming WiFi D4 / X99S GAMING 7
Cooling CM MasterLiquid ML360 Mirror ARGB Close-Loop AIO / CORSAIR Hydro Series H100i Extreme
Memory CORSAIR Vengeance LPX 32GB (2 x 16GB) DDR4 3600 / G.Skill DDR4 2800 16GB 4x4GB
Video Card(s) ASUS TUF Gaming GeForce RTX 4070 Ti / ASUS TUF Gaming GeForce RTX 3070 V2 OC Edition
Storage 4x Samsung 980 Pro 1TB M.2, 2x Crucial 1TB SSD / Samsung 870 PRO 500GB M.2
Display(s) Samsung 32" Odyssy G5 Gaming 144hz 1440p, ViewSonic 32" 72hz 1440p / 2x ViewSonic 32" 72hz 1440p
Case Phantek "400A" / Phanteks “Enthoo Pro series”
Audio Device(s) Realtek ALC4080 / Azalia Realtek ALC1150
Power Supply Corsair RM Series RM750 / Corsair CXM CX600M
Mouse Glorious Gaming Model D Wireless / Razer DeathAdder Chroma
Keyboard Glorious GMMK with box-white switches / Keychron K6 pro with blue swithes
VR HMD Quest 3 (128gb) + Rift S + HTC Vive + DK1
Software Windows 11 Pro x64 / Windows 10 Pro x64
Benchmark Scores Yes
Yea.. I'm drawing blanks.. Oh course I've not had my full dose of caffeine yet... But I'm working on it...lol but right now.. I got nothing... :p
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
I could always just toss the class code out and let people play with it.
I just wanted to get some ideas what output formats (Arrays, Lists, etc.) might be useful for others and add them as methods to the class.

Curently what I have is ..
Code:
void ReadSharedMemory() // Reads data from shared mem into classes
List<KeyValuePair<string, string>> GetListOfRecords(); // Return a list of GPUZ_RECORD
KeyValuePair<string, string>[] GetArrayOfRecords(); // Returns an array of GPUZ_RECORD

List<GPUZ_SENSOR_RECORD> GetListOfSensors(); // Returns list of the sensor records.
GPUZ_SENSOR_RECORD[] GetArrayOfSensors(); // Returns an array of sensor records.

KeyValuePair<string, string> GetRecordByName (string name);
GPUZ_SENSOR_RECORD GetSensorByName (string name);

KeyValuePair<string, string> GetRecordByIndex (int index);
GPUZ_SENSOR_RECORD GetSensorByIndex (int index);

Anyone want to run a quick test on this stub program for me?
Launch program, hit button. See if records print out (no sensor records, just board records)
Try with GPU-Z running and not (It should detect if GPU-Z is running).
You need .Net 4

Thanks !!
 

Attachments

  • WindowsFormsApplication1.exe
    12 KB · Views: 1,034
Last edited:
Joined
Sep 13, 2008
Messages
1,230 (0.22/day)
Location
Metro Atlanta
Processor AMD Ryzen 1700
Motherboard Gigabyte AB350 GAMING 3
Memory 16GB (2x8) 3200MHz
Display(s) Acer 24" LCD
Software Windows 10 Pro
Without GPU-Z running:



With GPU-Z Running:

 
Joined
Mar 14, 2011
Messages
97 (0.02/day)
Processor Intel Core i9-13900K
Motherboard ASUS Maximus Z690 Hero
Cooling EK EK-Nucleus AIO CR360 Lux D-RGB
Memory Corsair Dominator Platinum RGB 64 GB (2 x 32 GB) @ DDR5-6000
Video Card(s) NVIDIA GeForce RTX 4080 Founders Edition
Storage WD Black NVMe 1TB + WD SN750 1TB + Samsung 860 QVO 1TB + Seagate Firecuda 8TB
Display(s) Alienware AW3420DW
Case Lian Li LANCOOL 216
Audio Device(s) Edifier S351DB + Philips X2
Power Supply EVGA SuperNOVA 1000 P2
Mouse Steelseries Aerox 5 Wireless
Keyboard Keychron Q5 with Gazzew Boba U4s
Software Windows 11
Not running:



Running:

 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
Thanks kids !!
Munki sent me a PM pointing out my incorrect use of "it's" instead of "its" in the error message.
Please feel free to trash me if you are a grammar nazi. :laugh: (it's been corrected in the code)

If someone could try running it on a 32-bit box I would appreciate it. No need for screens, just let me know if you encounter any problems.

@TissueBox : Welcome to P&W, our little corner of the world. Are you a coder?
 
Joined
Sep 13, 2008
Messages
1,230 (0.22/day)
Location
Metro Atlanta
Processor AMD Ryzen 1700
Motherboard Gigabyte AB350 GAMING 3
Memory 16GB (2x8) 3200MHz
Display(s) Acer 24" LCD
Software Windows 10 Pro
Thanks kids !!
Munki sent me a PM pointing out my incorrect use of "it's" instead of "its" in the error message.
Please feel free to trash me if you are a grammar nazi. :laugh: (it's been corrected in the code)

If someone could try running it on a 32-bit box I would appreciate it. No need for screens, just let me know if you encounter any problems.

@TissueBox : Welcome to P&W, our little corner of the world. Are you a coder?

:laugh::laugh::laugh::laugh: I'm far from a grammar Nazi. I was born and raised in Georgia, my grammar is horrid :laugh:
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
Sorry Munki ... I meant to say "if y'all a grammar nazi" :roll:

I coded the class in a separate class file and removed the MessageBox error.
I replaced it with an accessor (property called GPUZ_Running) so you can handle the fact GPU-Z may not be running yourself.

Code:
GPUZ_SHMEM shMem = new GPUZ_SHMEM();
if (!shMem.GPUZ_Running)
{
    // handle it however you want
}
else shMem.ReadSharedMem();

Here's the class code if anyone want to take a look ...
PHP:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.IO;
using System.IO.MemoryMappedFiles;

namespace WindowsFormsApplication1
{
    public class GPUZ_SHMEM
    {
        private const int MAX_RECORDS = 128;
        private bool gPUZ_Running = false;

        public class GPUZ_SENSOR_RECORD
        {
            public string name;
            public string unit;
            public UInt32 digits;
            public Double value;
        };

        public class GPUZ_SH_MEM
        {
            public UInt32 version;
            public volatile Int32 busy;
            public UInt32 lastUpdate;
            public List<KeyValuePair<string, string>> data = new List<KeyValuePair<string, string>>(MAX_RECORDS);
            public List<GPUZ_SENSOR_RECORD> sensors = new List<GPUZ_SENSOR_RECORD>(MAX_RECORDS);
        };

        public GPUZ_SH_MEM shMem = new GPUZ_SH_MEM();

        public GPUZ_SHMEM()
        {
            // Check to see if GPU-Z is running.
            foreach (Process p in Process.GetProcesses())
            {
                if (p.ProcessName.Contains("GPU-Z")) gPUZ_Running = true;
            }
        }

        public bool GPUZ_Running { get { return gPUZ_Running; } }

        public void ReadSharedMemory()
        {

            string key, value;
            string name, unit;

            using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("GPUZShMem"))
            {
                using (MemoryMappedViewStream mmvs = mmf.CreateViewStream())
                {
                    BinaryReader reader = new BinaryReader(mmvs, Encoding.Unicode);

                    shMem.version = reader.ReadUInt32();
                    shMem.busy = reader.ReadInt32();
                    shMem.lastUpdate = reader.ReadUInt32();

                    for (int i = 0; i < MAX_RECORDS; i++)
                    {
                        // Remove any null values in the key array
                        key = new string(reader.ReadChars(256)).Trim('\0');
                        if (key.Contains("\0")) key = key.Substring(0, key.IndexOf("\0"));

                        // Remove any null values in the value array
                        value = new string(reader.ReadChars(256)).Trim('\0');
                        if (value.Contains("\0")) value = value.Substring(0, value.IndexOf("\0"));

                        // Only add List item if there is a valid key
                        if (key != String.Empty)
                        {
                            KeyValuePair<string, string> dataItem = new KeyValuePair<string, string>(key, value);
                            shMem.data.Add(dataItem);
                        }
                    }

                    for (int i = 0; i < MAX_RECORDS; i++)
                    {
                        // Remove any null values in the name array
                        name = new string(reader.ReadChars(256)).Trim('\0');
                        if (name.Contains("\0")) name = name.Substring(0, name.IndexOf("\0"));

                        // Remove any null values in the unit array
                        unit = new string(reader.ReadChars(8)).Trim('\0');
                        if (unit.Contains("\0")) unit = unit.Substring(0, unit.IndexOf('\0'));

                        // Only add List item if there is a valid name
                        if (name != String.Empty)
                        {
                            GPUZ_SENSOR_RECORD sensorItem = new GPUZ_SENSOR_RECORD();
                            sensorItem.name = name;
                            sensorItem.unit = unit;
                            sensorItem.digits = reader.ReadUInt32();
                            sensorItem.value = reader.ReadDouble();

                            shMem.sensors.Add(sensorItem);
                        }
                    }
                }
            }
        }

        public List<KeyValuePair<string, string>> GetListOfRecords()
        {
            return shMem.data;
        }

        public KeyValuePair<string, string>[] GetArrayOfRecords()
        {
            KeyValuePair<string, string>[] kvpArray;
            return kvpArray = shMem.data.ToArray();
        }

        public List<GPUZ_SENSOR_RECORD> GetListOfSensors()
        {
            return shMem.sensors;
        }

        public GPUZ_SENSOR_RECORD[] GetArrayOfSensors()
        {
            GPUZ_SENSOR_RECORD[] sensorArrray;
            return sensorArrray = shMem.sensors.ToArray();
        }

        public KeyValuePair<string, string> GetRecordByName(string name)
        {
            foreach (KeyValuePair<string, string> k in shMem.data)
            {
                if (k.Key == name) return k;
            }

            // REturn a KVP with null values if name not found
            return new KeyValuePair<string, string>(null, null);
        }

        public GPUZ_SENSOR_RECORD GetSensorByName(string name)
        {
            foreach (GPUZ_SENSOR_RECORD r in shMem.sensors)
            {
                if (r.name == name) return r;
            }

            // Return a null class value if name not found
            return null;
        }

        public KeyValuePair<string, string> GetRecordByIndex(int index)
        {
            if (index >= 0 && index < shMem.data.Count) return shMem.data[index];
            else return new KeyValuePair<string, string>(null, null);

            // Returns a KVP with null values if index out of range
        }

        public GPUZ_SENSOR_RECORD GetSensorByIndex(int index)
        {
            if (index >= 0 && index < shMem.sensors.Count) return shMem.sensors[index];
            else return null;

            // Returns a null class value if index out of range.
        }
    }
}

It's C# code, I just used the php tags to give it a little color. :)
As always, comments and suggestions appreciated !
 
Last edited:
Joined
Mar 14, 2011
Messages
97 (0.02/day)
Processor Intel Core i9-13900K
Motherboard ASUS Maximus Z690 Hero
Cooling EK EK-Nucleus AIO CR360 Lux D-RGB
Memory Corsair Dominator Platinum RGB 64 GB (2 x 32 GB) @ DDR5-6000
Video Card(s) NVIDIA GeForce RTX 4080 Founders Edition
Storage WD Black NVMe 1TB + WD SN750 1TB + Samsung 860 QVO 1TB + Seagate Firecuda 8TB
Display(s) Alienware AW3420DW
Case Lian Li LANCOOL 216
Audio Device(s) Edifier S351DB + Philips X2
Power Supply EVGA SuperNOVA 1000 P2
Mouse Steelseries Aerox 5 Wireless
Keyboard Keychron Q5 with Gazzew Boba U4s
Software Windows 11
@TissueBox : Welcome to P&W, our little corner of the world. Are you a coder?

Unfortunately, I am not - I'm more of a guinea pig :laugh:

Looked at the "New Forum Posts" and decided to contribute something here :toast:
 

crazyeyesreaper

Not a Moderator
Staff member
Joined
Mar 25, 2009
Messages
9,752 (1.78/day)
Location
04578
System Name Old reliable
Processor Intel 8700K @ 4.8 GHz
Motherboard MSI Z370 Gaming Pro Carbon AC
Cooling Custom Water
Memory 32 GB Crucial Ballistix 3666 MHz
Video Card(s) MSI GTX 1080 Ti Gaming X
Storage 3x SSDs 2x HDDs
Display(s) Dell U2412M + Samsung TA350
Case Thermaltake Core P3 TG
Audio Device(s) Samson Meteor Mic / Generic 2.1 / KRK KNS 6400 headset
Power Supply Zalman EBT-1000
Mouse Mionix NAOS 7000
Keyboard Mionix
hmm any chance you could set it to record and log memory usage kinda like fraps maybe? log min max avg memory usage i dont know lol maybe GPU-Z does that? i dont know drawing blanks just saying random shit that comes to mind
 

Aquinus

Resident Wat-man
Joined
Jan 28, 2012
Messages
13,147 (2.96/day)
Location
Concord, NH, USA
System Name Apollo
Processor Intel Core i9 9880H
Motherboard Some proprietary Apple thing.
Memory 64GB DDR4-2667
Video Card(s) AMD Radeon Pro 5600M, 8GB HBM2
Storage 1TB Apple NVMe, 4TB External
Display(s) Laptop @ 3072x1920 + 2x LG 5k Ultrafine TB3 displays
Case MacBook Pro (16", 2019)
Audio Device(s) AirPods Pro, Sennheiser HD 380s w/ FIIO Alpen 2, or Logitech 2.1 Speakers
Power Supply 96w Power Adapter
Mouse Logitech MX Master 3
Keyboard Logitech G915, GL Clicky
Software MacOS 12.1
Can GPU-Z run silently or minimized on start? If that can be done you could use the C# application to launch and close GPU-Z as needed.
 
Joined
Jul 23, 2011
Messages
1,586 (0.34/day)
Location
Kaunas, Lithuania
System Name my box
Processor AMD Ryzen 9 5950X
Motherboard ASRock Taichi x470 Ultimate
Cooling NZXT Kraken x72
Memory 2×16GiB @ 3200MHz, some Corsair RGB led meme crap
Video Card(s) AMD [ASUS ROG STRIX] Radeon RX Vega64 [OC Edition]
Storage Samsung 970 Pro && 2× Seagate IronWolf Pro 4TB in Raid 1
Display(s) Asus VG278H + Asus VH226H
Case Fractal Design Define R6 Black TG
Audio Device(s) Using optical S/PDIF output lol
Power Supply Corsair AX1200i
Mouse Razer Naga Epic
Keyboard Keychron Q1
Software Funtoo Linux
Benchmark Scores 217634.24 BogoMIPS
The problem is that I can't think of anything useful to do with it that I can't get from just running GPU-Z. :/

Any thought fellow coders and users of GPU-Z?

Idea! How 'bout such feature: "alert me if some monitored value goes above/beyond *value* and/or stays above/beyond *value* for more than *time interval*." ?
As far as I remember, GPU-Z can't do that.
 
Last edited:

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
hmm any chance you could set it to record and log memory usage kinda like fraps maybe? log min max avg memory usage i dont know lol maybe GPU-Z does that? i dont know drawing blanks just saying random shit that comes to mind

GPU-Z can log everything if you check the log to file CheckBox. It puts it in a CSV text file.

Can GPU-Z run silently or minimized on start? If that can be done you could use the C# application to launch and close GPU-Z as needed.

You can start GPU-Z minimized by going into the shortcuts properties and set the run dropdown to minimized. It would be a simple thing to launch GPU-Z from any app.

Idea! How 'bout such feature: "alert me if some monitored value goes above/beyond *value* and/or stays above/beyond *value* for more than *time interval*." ?
As far as I remember, GPU-Z can't do that.

That's a thought. A little, light wieght temp alarm utility. Any thoughts on how long it should read a "high" temp before alerting?

One of the current issues is that if you open two instances of GPU-Z (say for crossfired cards) it still writes the data to the same shared memory and it's kind of hit or miss what card readings you are going to get. Maybe one of these days W1zz will add full multi-GPU functionality to GPU-Z
 
Last edited:
Joined
Jul 23, 2011
Messages
1,586 (0.34/day)
Location
Kaunas, Lithuania
System Name my box
Processor AMD Ryzen 9 5950X
Motherboard ASRock Taichi x470 Ultimate
Cooling NZXT Kraken x72
Memory 2×16GiB @ 3200MHz, some Corsair RGB led meme crap
Video Card(s) AMD [ASUS ROG STRIX] Radeon RX Vega64 [OC Edition]
Storage Samsung 970 Pro && 2× Seagate IronWolf Pro 4TB in Raid 1
Display(s) Asus VG278H + Asus VH226H
Case Fractal Design Define R6 Black TG
Audio Device(s) Using optical S/PDIF output lol
Power Supply Corsair AX1200i
Mouse Razer Naga Epic
Keyboard Keychron Q1
Software Funtoo Linux
Benchmark Scores 217634.24 BogoMIPS
Any thoughts on how long it should read a "high" temp before alerting?

I would suggest two modes:
Monitor a user requested reading, with the ability to choose to trigger when going either below or above a user supplied value.
First mode: alert as soon as it is below/above the threshold.
Second mode: alert after it stays above/below the threshold longer than an interval which is also supplied by the user.
When monitoring more than one thing, the modes should be set "per rule". for example, with two rules: "alert if the GPU temp stays above 75°C for more than 300 seconds & alert immediately, if it goes above 90°"
or "immediately alert if the Vcore goes above 1.35V & alert if the GPU temp stays above 80°C for more than 60 seconds" and so on...

P.S. The "below" setting could be useful, for example, to spot a fan failure.
 
Last edited:

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
Another Stub

Here's another test stub.
It's should read the GPU Temp (only, not #1 - #3) for a single card or a crossfire pair.
You need to have two instances of GPU-Z running if using more than one card (and of course not have both instances pointing at the same card :D )
It reads the shared mem every 500ms (this is somewhat problematic as it's still a bit of a crap shoot what card will be in the shared mem slot).

Anyone have a dual-GPU card they could try it on?

EDIT : No error checking to see if GPU-Z is running. It will throw an exception if no GPU-Z is available.

Thanks !
 

Attachments

  • GPU_Z_Temp_Alert.exe
    14.5 KB · Views: 842

crazyeyesreaper

Not a Moderator
Staff member
Joined
Mar 25, 2009
Messages
9,752 (1.78/day)
Location
04578
System Name Old reliable
Processor Intel 8700K @ 4.8 GHz
Motherboard MSI Z370 Gaming Pro Carbon AC
Cooling Custom Water
Memory 32 GB Crucial Ballistix 3666 MHz
Video Card(s) MSI GTX 1080 Ti Gaming X
Storage 3x SSDs 2x HDDs
Display(s) Dell U2412M + Samsung TA350
Case Thermaltake Core P3 TG
Audio Device(s) Samson Meteor Mic / Generic 2.1 / KRK KNS 6400 headset
Power Supply Zalman EBT-1000
Mouse Mionix NAOS 7000
Keyboard Mionix
well i was thinking more like if the card switches to 3D clocks then have it record memory usage,

GPU-Z tends to record constant makes it harder to pinpoint where Memory usage spikes im just being nitpicky tho as it would help pinpoint some of the harsher areas to test in games etc.

Still pretty cool stuff your doing here Kreij
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
I assume you mean memory on the GPU?
I have to look into this as only one of my corssfired cards shows dedicated and dynamic memory usage. Does the memory usage show up if you only have one card in?

I'm just throwing out little test programs right now to get a handle on what I can and cannot do with the shared memory.
 

crazyeyesreaper

Not a Moderator
Staff member
Joined
Mar 25, 2009
Messages
9,752 (1.78/day)
Location
04578
System Name Old reliable
Processor Intel 8700K @ 4.8 GHz
Motherboard MSI Z370 Gaming Pro Carbon AC
Cooling Custom Water
Memory 32 GB Crucial Ballistix 3666 MHz
Video Card(s) MSI GTX 1080 Ti Gaming X
Storage 3x SSDs 2x HDDs
Display(s) Dell U2412M + Samsung TA350
Case Thermaltake Core P3 TG
Audio Device(s) Samson Meteor Mic / Generic 2.1 / KRK KNS 6400 headset
Power Supply Zalman EBT-1000
Mouse Mionix NAOS 7000
Keyboard Mionix
its no problem Kreij
and yea i ment Vram usage,

example i dont care what vram usage is when lvl is loading in BF3 for instance, as my GPU clocks are idle at the time, same goes for SHogun 2 it takes 5-6 mins to load a battle, so if it could trigger logging ONLY during 3D clocks it would be amazing as aka run a benchmark we know how long it is, can use fraps for instance to test frame rates but at the same time, i can log just 3D vram usage on a second by second basis, might be way to hard to do, just something i find interesting.

im only running 1 card right now and GPU-Z seems to be reporting memory usage properly
 
Joined
Aug 15, 2011
Messages
1 (0.00/day)
I've made an overlay info display (small but practical) to run over a game or app on a corner of the screen.
I can have realtime info of my gpu without leaving the game.

Just an ideia..
 
Joined
Jul 23, 2011
Messages
1,586 (0.34/day)
Location
Kaunas, Lithuania
System Name my box
Processor AMD Ryzen 9 5950X
Motherboard ASRock Taichi x470 Ultimate
Cooling NZXT Kraken x72
Memory 2×16GiB @ 3200MHz, some Corsair RGB led meme crap
Video Card(s) AMD [ASUS ROG STRIX] Radeon RX Vega64 [OC Edition]
Storage Samsung 970 Pro && 2× Seagate IronWolf Pro 4TB in Raid 1
Display(s) Asus VG278H + Asus VH226H
Case Fractal Design Define R6 Black TG
Audio Device(s) Using optical S/PDIF output lol
Power Supply Corsair AX1200i
Mouse Razer Naga Epic
Keyboard Keychron Q1
Software Funtoo Linux
Benchmark Scores 217634.24 BogoMIPS
Here's another test stub.
It's should read the GPU Temp (only, not #1 - #3) for a single card or a crossfire pair.
You need to have two instances of GPU-Z running if using more than one card (and of course not have both instances pointing at the same card :D )
It reads the shared mem every 500ms (this is somewhat problematic as it's still a bit of a crap shoot what card will be in the shared mem slot).

Anyone have a dual-GPU card they could try it on?

EDIT : No error checking to see if GPU-Z is running. It will throw an exception if no GPU-Z is available.

Thanks !

So, I finally got some time to relax from my studies, so I booted up window$.
I checked how is that utility working... it doesn't look too well - monitors the max GPU clock reached.

Yet, it looks promising, if ever going to be completed ;]

I attached a screenshot:
gpu-z_read.png
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.21/day)
Location
Cheeseland (Wisconsin, USA)
LOL ... didn't do that before. Something must have changed in 0.6.2

I've put this project on hold at the moment.
It's really unreliable for reading two cards, unfortunately. I'm hoping W1zz decides to add mutli-card support to the shared mem one of these days.
 
Last edited:

FordGT90Concept

"I go fast!1!11!1!"
Joined
Oct 13, 2008
Messages
26,259 (4.65/day)
Location
IA, USA
System Name BY-2021
Processor AMD Ryzen 7 5800X (65w eco profile)
Motherboard MSI B550 Gaming Plus
Cooling Scythe Mugen (rev 5)
Memory 2 x Kingston HyperX DDR4-3200 32 GiB
Video Card(s) AMD Radeon RX 7900 XT
Storage Samsung 980 Pro, Seagate Exos X20 TB 7200 RPM
Display(s) Nixeus NX-EDG274K (3840x2160@144 DP) + Samsung SyncMaster 906BW (1440x900@60 HDMI-DVI)
Case Coolermaster HAF 932 w/ USB 3.0 5.25" bay + USB 3.2 (A+C) 3.5" bay
Audio Device(s) Realtek ALC1150, Micca OriGen+
Power Supply Enermax Platimax 850w
Mouse Nixeus REVEL-X
Keyboard Tesoro Excalibur
Software Windows 10 Home 64-bit
Benchmark Scores Faster than the tortoise; slower than the hare.
I noticed the NVIDIA Quadro driver (version 29#) had an option to install a WMI library. Has anyone taken a look into that?
 

pspost

New Member
Joined
Jun 2, 2012
Messages
2 (0.00/day)
Hello!

Please tell me why do we have to deal with GPU-Z and SharedMem interface? Why don't just read sensors as GPU-Z does? Is there GPU-Z source code? Or source code for reading sensors?

I'm not familiar with this stuff (sensors reading) hence such a question I asked.

Thanks.

Paul
 
Top