From beac3631098f8acc1283e945e5c516fbac98bdcf Mon Sep 17 00:00:00 2001 From: sasha0552 Date: Mon, 28 Oct 2024 01:41:46 +0000 Subject: [PATCH] Print both NVML and NVAPI GPU name --- src/main.c | 6 ++++++ src/nvapi.c | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main.c b/src/main.c index 11c99b5..55b57d4 100644 --- a/src/main.c +++ b/src/main.c @@ -306,6 +306,12 @@ int main(int argc, char *argv[]) { // Print the managed GPU details printf("%u. %s (GPU id = %u)\n", managedGPUs, gpuName, i); + /////////////////////////////// + NvAPI_ShortString nvapiGpuName; + NVAPI_CALL(NvAPI_GPU_GetFullName(nvapiDevices[i], nvapiGpuName), errored); + printf("(NVAPI) %u. %s (GPU id = %u)\n", managedGPUs, nvapiGpuName, i); + /////////////////////////////// + // Increment the managed GPU counter managedGPUs++; } diff --git a/src/nvapi.c b/src/nvapi.c index ede95ab..719cf18 100644 --- a/src/nvapi.c +++ b/src/nvapi.c @@ -15,6 +15,7 @@ typedef void * (*nvapi_QueryInterface_t)(int); typedef NvAPI_Status (*NvAPI_EnumPhysicalGPUs_t)(NvPhysicalGpuHandle[NVAPI_MAX_PHYSICAL_GPUS], NvU32 *); +typedef NvAPI_Status (*NvAPI_GPU_GetFullName_t)(NvPhysicalGpuHandle, NvAPI_ShortString); typedef NvAPI_Status (*NvAPI_GPU_SetForcePstate_t)(NvPhysicalGpuHandle, NvU32, NvU32); typedef NvAPI_Status (*NvAPI_GetErrorMessage_t)(NvAPI_Status, NvAPI_ShortString); typedef NvAPI_Status (*NvAPI_Initialize_t)(); @@ -25,6 +26,7 @@ typedef NvAPI_Status (*NvAPI_Unload_t)(); static void * lib; static NvAPI_EnumPhysicalGPUs_t _NvAPI_EnumPhysicalGPUs; +static NvAPI_GPU_GetFullName_t _NvAPI_GPU_GetFullName; static NvAPI_GPU_SetForcePstate_t _NvAPI_GPU_SetForcePstate; static NvAPI_GetErrorMessage_t _NvAPI_GetErrorMessage; static NvAPI_Initialize_t _NvAPI_Initialize; @@ -48,6 +50,14 @@ NvAPI_Status NvAPI_EnumPhysicalGPUs(NvPhysicalGpuHandle nvGPUHandle[NVAPI_MAX_PH return _NvAPI_EnumPhysicalGPUs(nvGPUHandle, pGpuCount); } +NvAPI_Status NvAPI_GPU_GetFullName(NvPhysicalGpuHandle hPhysicalGpu, NvAPI_ShortString szName) { + // Ensure the function pointer is valid + NVAPI_POINTER(_NvAPI_GPU_GetFullName); + + // Invoke the function using the provided parameters + return _NvAPI_GPU_GetFullName(hPhysicalGpu, szName); +} + NvAPI_Status NvAPI_GPU_SetForcePstate(NvPhysicalGpuHandle hPhysicalGpu, NvU32 pstateId, NvU32 fallbackState) { // Ensure the function pointer is valid NVAPI_POINTER(_NvAPI_GPU_SetForcePstate); @@ -114,6 +124,7 @@ NvAPI_Status NvAPI_Initialize() { // Retrieve the addresses of specific NvAPI functions using nvapi_QueryInterface _NvAPI_EnumPhysicalGPUs = (NvAPI_EnumPhysicalGPUs_t) nvapi_QueryInterface(0xe5ac921f); + _NvAPI_GPU_GetFullName = (NvAPI_GPU_GetFullName_t) nvapi_QueryInterface(0xceee8e9f); _NvAPI_GPU_SetForcePstate = (NvAPI_GPU_SetForcePstate_t) nvapi_QueryInterface(0x025bfb10); _NvAPI_GetErrorMessage = (NvAPI_GetErrorMessage_t) nvapi_QueryInterface(0x6c2d048c); _NvAPI_Initialize = (NvAPI_Initialize_t) nvapi_QueryInterface(0x0150e828);