def test_dcgm_connection_versions(handle): ''' Test that different versions of dcgmConnect_v2 work ''' localhostStr = "127.0.0.1" v1Struct = dcgm_structs.c_dcgmConnectV2Params_v1() v1Struct.version = dcgm_structs.c_dcgmConnectV2Params_version1 #These APIs throw exceptions on error v1Handle = dcgm_agent.dcgmConnect_v2( localhostStr, v1Struct, dcgm_structs.c_dcgmConnectV2Params_version1) v2Struct = dcgm_structs.c_dcgmConnectV2Params_v2() v2Struct.version = dcgm_structs.c_dcgmConnectV2Params_version2 #These APIs throw exceptions on error v2Handle = dcgm_agent.dcgmConnect_v2( localhostStr, v2Struct, dcgm_structs.c_dcgmConnectV2Params_version2) #Do a basic request with each handle gpuIds = dcgm_agent.dcgmGetAllSupportedDevices(v1Handle) gpuIds2 = dcgm_agent.dcgmGetAllSupportedDevices(v2Handle) #Clean up the handles dcgm_agent.dcgmDisconnect(v1Handle) dcgm_agent.dcgmDisconnect(v2Handle)
def _test_connection_helper(domainSocketName): #Make sure the library is initialized dcgm_agent.dcgmInit() #First, try the raw method of using the dcgm_agent API directly v2Struct = dcgm_structs.c_dcgmConnectV2Params_v2() v2Struct.version = dcgm_structs.c_dcgmConnectV2Params_version2 v2Struct.addressIsUnixSocket = 1 v2Handle = dcgm_agent.dcgmConnect_v2( domainSocketName, v2Struct, dcgm_structs.c_dcgmConnectV2Params_version2) #Use the handle, which will throw an exception on error gpuIds2 = dcgm_agent.dcgmGetAllSupportedDevices(v2Handle) dcgm_agent.dcgmDisconnect(v2Handle) #Now use the DcgmHandle method dcgmHandle = pydcgm.DcgmHandle(unixSocketPath=domainSocketName) dcgmSystem = dcgmHandle.GetSystem() gpuIds = dcgmSystem.discovery.GetAllGpuIds() #Try to disconnect cleanly from our domain socket del (dcgmHandle) dcgmHandle = None
def GetAllSupportedGpuIds(self): gpuIds = dcgm_agent.dcgmGetAllSupportedDevices(self._dcgmHandle.handle) return gpuIds