From b779ce2831a2585ed9047c4b2e52f88058ca4c30 Mon Sep 17 00:00:00 2001 From: "Pham, Gabriel" Date: Wed, 22 Jan 2025 19:05:25 -0500 Subject: [PATCH] [SWDEV-493207] Added amdgpu version to version command Signed-off-by: gabrpham --- CHANGELOG.md | 8 +++++++ amdsmi_cli/amdsmi_commands.py | 40 ++++++++++++++++++++++++++++++++++- amdsmi_cli/amdsmi_parser.py | 8 +++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 241ac1e2f9..e9b8205241 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -135,6 +135,14 @@ GPU: 0 ### Changed +- **Added amdgpu driver version to `amd-smi version` command**. + - The `amd-smi version` command can now also display the amdgpu driver version using the `-g` flag. + +```shell +amd-smi version -g +AMDSMI Tool: 24.7.1+6fa991c-dirty | AMDSMI Library version: 24.7.2.0 | ROCm version: N/A | amdgpu version: 6.12.2 +``` + - **All `amd-smi set` and `amd-smi reset` options are now mutually exclusive**. - Users can only use one set option at a time now. diff --git a/amdsmi_cli/amdsmi_commands.py b/amdsmi_cli/amdsmi_commands.py index 6ad7ea6699..e474a45dd5 100644 --- a/amdsmi_cli/amdsmi_commands.py +++ b/amdsmi_cli/amdsmi_commands.py @@ -98,12 +98,22 @@ class AMDSMICommands(): sys.exit(-1) - def version(self, args): + def version(self, args, gpu_version=None): """Print Version String Args: args (Namespace): Namespace containing the parsed CLI args """ + + if gpu_version: + args.gpu_version = gpu_version + # if cpu_version: + # args.cpu_version = cpu_version + # # if no args are given, display everything + # if not gpu_version and not cpu_version: + # args.gpu_version = True + # args.cpu_version = True + try: amdsmi_lib_version = amdsmi_interface.amdsmi_get_lib_version() amdsmi_lib_version_str = f"{amdsmi_lib_version['year']}.{amdsmi_lib_version['major']}.{amdsmi_lib_version['minor']}.{amdsmi_lib_version['release']}" @@ -116,10 +126,38 @@ class AMDSMICommands(): self.logger.output['amdsmi_library_version'] = f'{amdsmi_lib_version_str}' self.logger.output['rocm_version'] = f'{rocm_version_str}' + if args.gpu_version: + try: + gpus = amdsmi_interface.amdsmi_get_processor_handles() + if gpus: + gpu_version_info = amdsmi_interface.amdsmi_get_gpu_driver_info(gpus[0]) + gpu_version_str = gpu_version_info['driver_version'] + else: + gpu_version_str = "N/A" + except amdsmi_exception.AmdSmiLibraryException as e: + gpu_version_str = e.get_error_info() + self.logger.output['amdgpu_version'] = gpu_version_str + + # if args.cpu_version: + # try: + # cpus = amdsmi_interface.amdsmi_get_cpusocket_handles() + # if cpus: + # cpu_version_info = amdsmi_interface.amdsmi_get_amd_hsmp_deriver_version(cpus[0]) + # cpu_version_str = cpu_version_info['driver_version'] + # else: + # cpu_version_str = "N/A" + # except amdsmi_exception.AmdSmiLibraryException as e: + # cpu_version_str = e.get_error_info() + # self.logger.output['amd_hsmp_driver_version'] = cpu_version_str + if self.logger.is_human_readable_format(): human_readable_output = f"AMDSMI Tool: {__version__} | " \ f"AMDSMI Library version: {amdsmi_lib_version_str} | " \ f"ROCm version: {rocm_version_str}" + if args.gpu_version: + human_readable_output = human_readable_output + f" | amdgpu version: {gpu_version_str}" + # if args.cpu_version: + # human_readable_output = human_readable_output + f" | amd_hsmp driver version: {cpu_version_str}" # Custom human readable handling for version if self.logger.destination == 'stdout': print(human_readable_output) diff --git a/amdsmi_cli/amdsmi_parser.py b/amdsmi_cli/amdsmi_parser.py index 62e3fc8ed9..ff36ae729d 100644 --- a/amdsmi_cli/amdsmi_parser.py +++ b/amdsmi_cli/amdsmi_parser.py @@ -604,6 +604,14 @@ class AMDSMIParser(argparse.ArgumentParser): # Add Universal Arguments self._add_command_modifiers(version_parser) + # help info; CPU version code will be added back in once amd_hsmp code has been completed + gpu_version_help = "Display the current amdgpu driver version" + # cpu_version_help = "Display the current amd_hsmp driver version" + + # Add GPU and CPU version Arguments + version_parser.add_argument('-g', '--gpu_version', action='store_true', required=False, help=gpu_version_help) + # version_parser.add_argument('-c', '--cpu_version', action='store_true', required=False, help=cpu_version_help) + def _add_list_parser(self, subparsers: argparse._SubParsersAction, func): if not self.helpers.is_amdgpu_initialized():