import matplotlib import os import matplotlib.pyplot as plt import pandas as pd import numpy as np import json scaling_result_dir = 'scaling_results' result_jsons = [] result_jsons.append(os.path.join(os.path.abspath(scaling_result_dir), 'david-Lenovo-IdeaPad-S340-14IWL_100_systems.json')) fig, ax1 = plt.subplots() ax2 = ax1.twinx() for jsonfile in result_jsons: print(jsonfile) with open(jsonfile, 'r') as f: result_data = json.loads(f.read()) # Get linear data linear_data = result_data['linear'] linear_mean = np.mean(linear_data) linear_stdev = np.std(linear_data) cpus = [] mp_speedups = [] mp_efficiencies = [] stddevs = [] for amt_cpus in result_data['mp']: # Get mp data mp_data = result_data['mp'][amt_cpus] mp_mean = np.mean(mp_data) mp_stdev = np.std(mp_data) # Calc and append info amt_cpus = int(amt_cpus) speedup = linear_mean/mp_mean efficiency = speedup/int(amt_cpus) cpus.append(amt_cpus) mp_speedups.append(speedup) mp_efficiencies.append(efficiency) stddevs.append(mp_stdev) # Plot ax1.errorbar( cpus, mp_speedups, stddevs, linestyle="None", marker="^", label="Speed up & efficiency of {} systems".format(result_data['amt_systems']), ) ax1.set_title( "Speed up ratio vs amount of cores for different amounts of systems on {}".format( 'name_testcase' ) ) ax1.set_xlabel("Amount of cores used") ax1.set_ylabel("Speed up ratio (time_linear/time_parallel)") ax1.set_xlim(0, max(cpus) + 4) # ax1.set_ylim(0, max_speedup + 2) ax2.set_ylim(0, 1) ax1.grid() ax1.legend(loc=4) plt.show()