Benchmarks/NVIDIA/NVBandwidth.py (54 lines of code) (raw):

import json import subprocess import os from Infra import tools class NVBandwidth: def __init__(self, path:str, machine: str): self.name='NVBandwidth' self.machine_name = machine config = self.get_config(path) self.num_runs, self.interval = self.config_conversion(config) self.buffer = [] def get_config(self, path: str): file = open(path) data = json.load(file) file.close() try: return data[self.name] except KeyError: raise KeyError("no value found") def parse_json(self, config): return config['inputs']['num_runs'], config['inputs']['interval'] def config_conversion(self, config)->tuple[list, list, list]: return self.parse_json(config) def build(self): current = os.getcwd() path ='nvbandwidth' isdir = os.path.isdir(path) if not isdir: results = subprocess.run(['git', 'clone', 'https://github.com/NVIDIA/nvbandwidth', path], stdout=subprocess.PIPE, stderr=subprocess.PIPE) build_path = os.path.join(current, 'nvbandwidth') os.chdir(build_path) results = subprocess.run(['sed', '-i', '2i\set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)', 'CMakeLists.txt'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) if os.path.exists("/.dockerenv"): results = subprocess.run('apt update && ./debian_install.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) else: results = subprocess.run('sudo apt update && sudo ./debian_install.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) tools.write_log(tools.check_error(results)) os.chdir(current) def run(self): current = os.getcwd() os.chdir(os.path.join(current, 'nvbandwidth')) print("Running NVBandwidth...") buffer=[] results = subprocess.run('./nvbandwidth -t device_to_host_memcpy_ce host_to_device_memcpy_ce device_to_device_bidirectional_memcpy_read_ce', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) tools.write_log(tools.check_error(results)) log = results.stdout.decode('utf-8') buffer.append(log) os.chdir(current) file = open("Outputs/NVBandwidth_" + self.machine_name + ".txt", "w") for item in buffer: file.write(item) print(item) self.buffer=buffer os.chdir(current)