def collect_gpu_evidence()

in src/local_gpu_verifier/src/verifier/cc_admin.py [0:0]


def collect_gpu_evidence(nonce: str, no_gpu_mode=False, standalone_mode=True):
    """Method to Collect GPU Evidence used by Attestation SDK
    Args:
        nonce (String): Hex string representation of Nonce
        no_gpu_mode (Boolean): Represents if the function should run in No GPU (test) mode
        standalone_mode (Boolean): Represents if the function should run in Standalone mode
    Returns:
        list of NVMLHandler objects containing GPU Evidence
    """
    info_log.debug("collect_gpu_evidence called")
    evidence_list = []
    try:
        if no_gpu_mode:
            evidence_nonce = BaseSettings.NONCE
            number_of_available_gpus = NvmlHandlerTest.get_number_of_gpus()
        else:
            init_nvml(standalone_mode=standalone_mode)
            evidence_nonce = CcAdminUtils.validate_and_extract_nonce(nonce)

            number_of_available_gpus = NvmlHandler.get_number_of_gpus()
            if number_of_available_gpus == 0:
                err_msg = "No GPU found"
                info_log.critical(err_msg)
                raise NoGpuFoundError(err_msg)
            info_log.info(f"Number of GPUs available : {number_of_available_gpus}")

        for i in range(number_of_available_gpus):
            info_log.info(f"Fetching GPU {i} information from GPU driver.")
            if no_gpu_mode:
                gpu_info_obj = NvmlHandlerTest(settings=BaseSettings)
            else:
                gpu_info_obj = NvmlHandler(index=i, nonce=evidence_nonce, settings=BaseSettings)
            evidence_list.append(gpu_info_obj)
        info_log.info("All GPU Evidences fetched successfully")

    except Exception as error:
        info_log.error(error)
    finally:
        return evidence_list