Skip to content

Commit

Permalink
Print both NVML and NVAPI GPU name
Browse files Browse the repository at this point in the history
  • Loading branch information
sasha0552 authored Oct 28, 2024
1 parent 0fb4f3a commit beac363
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
}
Expand Down
11 changes: 11 additions & 0 deletions src/nvapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)();
Expand All @@ -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;
Expand All @@ -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);
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit beac363

Please sign in to comment.