From 51d923066b34754eb682253a4b992da380612b51 Mon Sep 17 00:00:00 2001 From: Michael Smirnov Date: Thu, 22 Apr 2021 10:09:43 +0300 Subject: [PATCH 1/3] add device info in the report --- bench.py | 1 + utils.py | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/bench.py b/bench.py index 772762503..11b9e3d7c 100644 --- a/bench.py +++ b/bench.py @@ -463,6 +463,7 @@ def gen_basic_dict(library, algorithm, stage, params, data, alg_instance=None, 'library': library, 'algorithm': algorithm, 'stage': stage, + 'device': params.device, 'input_data': { 'data_format': params.data_format, 'data_order': params.data_order, diff --git a/utils.py b/utils.py index 6d77d4765..bbf075024 100755 --- a/utils.py +++ b/utils.py @@ -94,6 +94,11 @@ def get_omp_env(): } return omp_env +def parse_lscpu_lscl_info(command_output): + command_output = command_output.split('\n') + for i in range(len(command_output)): + command_output[i] = command_output[i].split(':') + return {line[0].strip(): line[1].strip() for line in command_output} def get_hw_parameters(): hw_params = {} @@ -101,16 +106,10 @@ def get_hw_parameters(): if 'Linux' in platform.platform(): # get CPU information lscpu_info, _ = read_output_from_command('lscpu') - # remove excess spaces in CPU info output - while ' ' in lscpu_info: - lscpu_info = lscpu_info.replace(' ', ' ') - lscpu_info = lscpu_info.split('\n') - for i in range(len(lscpu_info)): - lscpu_info[i] = lscpu_info[i].split(': ') - hw_params.update( - {'CPU': {line[0]: line[1] for line in lscpu_info}}) + hw_params.update({'CPU': parse_lscpu_lscl_info(lscpu_info)}) if 'CPU MHz' in hw_params['CPU'].keys(): del hw_params['CPU']['CPU MHz'] + # get RAM size mem_info, _ = read_output_from_command('free -b') mem_info = mem_info.split('\n')[1] @@ -118,14 +117,22 @@ def get_hw_parameters(): mem_info = mem_info.replace(' ', ' ') mem_info = int(mem_info.split(' ')[1]) / 2 ** 30 hw_params.update({'RAM size[GB]': mem_info}) - # get GPU information + + # get Intel GPU information + try: + lsgpu_info, _ = read_output_from_command('lscl --device-type=gpu --platform-vendor=Intel') + hw_params.update({'GPU Intel': parse_lscpu_lscl_info(lsgpu_info)}) + except (FileNotFoundError, json.JSONDecodeError): + pass + + # get Nvidia GPU information try: gpu_info, _ = read_output_from_command( 'nvidia-smi --query-gpu=name,memory.total,driver_version,pstate ' '--format=csv,noheader') gpu_info = gpu_info.split(', ') hw_params.update({ - 'GPU': { + 'GPU Nvidia': { 'Name': gpu_info[0], 'Memory size': gpu_info[1], 'Performance mode': gpu_info[3] From 9e705b1b22ef3da8bd588af1e17a913937bc457e Mon Sep 17 00:00:00 2001 From: Michael Smirnov Date: Thu, 22 Apr 2021 11:06:35 +0300 Subject: [PATCH 2/3] refine intel gpu info --- utils.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/utils.py b/utils.py index bbf075024..be97cfe7c 100755 --- a/utils.py +++ b/utils.py @@ -94,12 +94,14 @@ def get_omp_env(): } return omp_env + def parse_lscpu_lscl_info(command_output): - command_output = command_output.split('\n') + command_output = command_output.strip().split('\n') for i in range(len(command_output)): command_output[i] = command_output[i].split(':') return {line[0].strip(): line[1].strip() for line in command_output} + def get_hw_parameters(): hw_params = {} @@ -120,8 +122,17 @@ def get_hw_parameters(): # get Intel GPU information try: - lsgpu_info, _ = read_output_from_command('lscl --device-type=gpu --platform-vendor=Intel') - hw_params.update({'GPU Intel': parse_lscpu_lscl_info(lsgpu_info)}) + lsgpu_info, _ = read_output_from_command( + 'lscl --device-type=gpu --platform-vendor=Intel') + platform_num = 0 + start_idx = lsgpu_info.find('Platform ') + while start_idx >= 0: + start_idx = lsgpu_info.find(':', start_idx) + 1 + end_idx = lsgpu_info.find('Platform ', start_idx) + platform_info = parse_lscpu_lscl_info(lsgpu_info[start_idx:end_idx]) + hw_params.update({f'GPU Intel platform {platform_num + 1}': platform_info}) + platform_num += 1 + start_idx = end_idx except (FileNotFoundError, json.JSONDecodeError): pass From 833ecd6ecfe411c879c1930d7088ca872a1edfdf Mon Sep 17 00:00:00 2001 From: Michael Smirnov Date: Thu, 22 Apr 2021 13:07:14 +0300 Subject: [PATCH 3/3] improve device parcing logic from lscl --- utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils.py b/utils.py index be97cfe7c..40eef714e 100755 --- a/utils.py +++ b/utils.py @@ -124,14 +124,14 @@ def get_hw_parameters(): try: lsgpu_info, _ = read_output_from_command( 'lscl --device-type=gpu --platform-vendor=Intel') - platform_num = 0 - start_idx = lsgpu_info.find('Platform ') + device_num = 0 + start_idx = lsgpu_info.find('Device ') while start_idx >= 0: start_idx = lsgpu_info.find(':', start_idx) + 1 - end_idx = lsgpu_info.find('Platform ', start_idx) + end_idx = lsgpu_info.find('Device ', start_idx) platform_info = parse_lscpu_lscl_info(lsgpu_info[start_idx:end_idx]) - hw_params.update({f'GPU Intel platform {platform_num + 1}': platform_info}) - platform_num += 1 + hw_params.update({f'GPU Intel #{device_num + 1}': platform_info}) + device_num += 1 start_idx = end_idx except (FileNotFoundError, json.JSONDecodeError): pass