# # Copyright 2016 The BigDL Authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # import sys import subprocess def check_python_version(): py_version = sys.version.split()[0] lst = py_version.split(".") v1 = eval(lst[0]) v2 = eval(lst[1]) if v1!=3 or v2<9: print("Python Version must be higher than 3.9.x, please check python version. More details could be found in the README.md") return 1 return 0 def check_transformer_version(): try: import transformers print(f"transformers={transformers.__version__}") except: print("Transformers is not installed.") def check_torch_version(): try: import torch print(f"torch={torch.__version__}") except: print("PyTorch is not installed.") def check_ipex_llm_version(): import os if os.system("pip show ipex-llm")!=0: print("ipex-llm is not installed") def check_ipex_version(): try: import intel_extension_for_pytorch as ipex print(f"ipex={ipex.__version__}") except: print("IPEX is not installed properly. ") def check_memory(): physical_mem = subprocess.run('wmic computersystem get totalphysicalmemory', capture_output=True, text=True).stdout """ Example output: TotalPhysicalMemory 68448202752 """ physical_mem = physical_mem.split('\n') for i in range(1, len(physical_mem)+1): if physical_mem[-i].strip().isdigit(): print(f'Total Memory: {int(physical_mem[-i].strip()) / 1024**3:.3f} GB') break print() memory = subprocess.run('wmic memorychip get Capacity, Speed', capture_output=True, text=True).stdout """ Example output: Capacity Speed 34359738368 3200 34359738368 3200 """ memory = memory.split('\n\n') chip_count = 0 for i in range(1, len(memory)+1): if memory[-i] != '' and 'Speed' not in memory[-i]: capacity, speed = memory[-i].strip().split(' ') # convert capacity from byte to GB capacity = str(int(int(capacity) / 1024**3)) if capacity.isdigit() and speed.isdigit(): print(f'Chip {chip_count} Memory: {capacity} GB | Speed: {speed} MHz') chip_count += 1 def check_cpu(): cpu_info = subprocess.run('wmic cpu get Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed, Manufacturer', capture_output=True, text=True).stdout """ Example output: Manufacturer MaxClockSpeed Name NumberOfCores NumberOfLogicalProcessors GenuineIntel 3200 12th Gen Intel(R) Core(TM) i9-12900K 16 24 """ cpu_info = cpu_info.split('\n\n') names = cpu_info[0] values = cpu_info[1] idx = 0 while idx < len(names): if names[idx] != ' ': start = idx name_end = names[start:].find(' ') + start # for slicing the value value_end = name_end + 1 while value_end < len(names) and names[value_end] == ' ': value_end += 1 # updagte idx idx = value_end # get the slicing for the values value_end -= 2 print(f'CPU {names[start:name_end]}: {values[start:value_end]}') else: idx += 1 def check_gpu_driver(): gpu_driver_info = subprocess.run("wmic path Win32_PnPSignedDriver where \"Description like '%Intel%' and Description like '%Graphics%'\" get DeviceName, DriverVersion", capture_output=True, text=True).stdout """ Example output: DeviceName DriverVersion Intel(R) Graphics System Controller Auxiliary Firmware Interface 2322.4.7.0 Intel(R) Graphics System Controller Firmware Interface 2337.5.3.0 Intel(R) Graphics Command Center 31.0.101.5084 Intel(R) Arc(TM) A770 Graphics 31.0.101.5084 """ gpu_driver_info = gpu_driver_info.split('\n\n') driver_info = [] # filter the information for i in gpu_driver_info[1:]: if i != '': if 'Controller' not in i and 'Command Center' not in i: driver_info.append(i.strip()) # print the gpu driver info gpu_num = 0 for gpu in driver_info: splitted = gpu.split(' ') print(f'GPU {gpu_num}: {splitted[0]} \t Driver Version: {splitted[-1]}') gpu_num += 1 def main(): if check_python_version()!=0: return -1 print("-----------------------------------------------------------------") check_transformer_version() print("-----------------------------------------------------------------") check_torch_version() print("-----------------------------------------------------------------") check_ipex_llm_version() print("-----------------------------------------------------------------") check_ipex_version() print("-----------------------------------------------------------------") check_memory() print("-----------------------------------------------------------------") check_cpu() print("-----------------------------------------------------------------") check_gpu_driver() print("-----------------------------------------------------------------") if __name__ == "__main__": main()