final first commit
This commit is contained in:
101
qibojit-benchmarks/plots/evolution.py
Normal file
101
qibojit-benchmarks/plots/evolution.py
Normal file
@@ -0,0 +1,101 @@
|
||||
import numpy as np
|
||||
import matplotlib
|
||||
import matplotlib.pyplot as plt
|
||||
import seaborn as sns
|
||||
from matplotlib.patches import Patch
|
||||
matplotlib.rcParams['mathtext.fontset'] = 'cm'
|
||||
matplotlib.rcParams['font.family'] = 'STIXGeneral'
|
||||
|
||||
|
||||
def plot_dense(data, quantity, nqubits, fontsize=30, legend=True, save=False):
|
||||
matplotlib.rcParams["font.size"] = fontsize
|
||||
|
||||
cpu_cp = sns.color_palette("Oranges", 4)
|
||||
gpu_cp = sns.color_palette("Purples", 4)
|
||||
|
||||
data["is_gpu"] = data["device"].apply(lambda x: "GPU" in x)
|
||||
base_condition = (data["nqubits"] == nqubits) & (data["dense"] == True)
|
||||
|
||||
plt.figure(figsize=(16, 9))
|
||||
condition = base_condition & (data["backend"] == "numpy")
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="^", markersize=10,
|
||||
color=cpu_cp[3], linewidth=3.0, label="numpy")
|
||||
condition = base_condition & (data["backend"] == "tensorflow") & (data["is_gpu"] == False)
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="o", markersize=10,
|
||||
color=cpu_cp[1], linewidth=3.0, label="tensorflow cpu")
|
||||
|
||||
condition = base_condition & (data["backend"] == "qibojit") & (data["platform"] == "cuquantum")
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="^", markersize=10,
|
||||
color=gpu_cp[3], linewidth=3.0, label="cupy")
|
||||
condition = base_condition & (data["backend"] == "tensorflow") & (data["is_gpu"] == True)
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="o", markersize=10,
|
||||
color=gpu_cp[1], linewidth=3.0, label="tensorflow gpu")
|
||||
|
||||
plt.title(f"Dense adiabatic evolution, {nqubits} qubits, double precision")
|
||||
plt.xlabel("$\delta t$")
|
||||
if quantity == "total_dry_time":
|
||||
plt.ylabel("Total dry run time (sec)")
|
||||
elif quantity == "total_simulation_time":
|
||||
plt.ylabel("Total simulation time (sec)")
|
||||
|
||||
if legend:
|
||||
plt.legend()
|
||||
|
||||
if save:
|
||||
plt.savefig(f"evolution_dense_{nqubits}qubits_{quantity}.pdf", bbox_inches="tight")
|
||||
else:
|
||||
plt.show()
|
||||
|
||||
|
||||
def plot_trotter(data, quantity, nqubits, fontsize=30, yticks=None, legend=False, save=False):
|
||||
matplotlib.rcParams["font.size"] = fontsize
|
||||
|
||||
cpu_cp = sns.color_palette("Oranges", 4)
|
||||
gpu_cp = sns.color_palette("Purples", 4)
|
||||
|
||||
data["is_gpu"] = data["device"].apply(lambda x: "GPU" in x)
|
||||
base_condition = (data["nqubits"] == nqubits) & (data["dense"] == False)
|
||||
|
||||
plt.figure(figsize=(16, 9))
|
||||
condition = base_condition & (data["backend"] == "numpy")
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="s", markersize=10,
|
||||
color=cpu_cp[0], linewidth=3.0, label="numpy")
|
||||
condition = base_condition & (data["backend"] == "tensorflow") & (data["is_gpu"] == False)
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="o", markersize=10,
|
||||
color=cpu_cp[1], linewidth=3.0, label="tensorflow cpu")
|
||||
condition = base_condition & (data["backend"] == "qibotf") & (data["is_gpu"] == False)
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="D", markersize=10,
|
||||
color=cpu_cp[2], linewidth=3.0, label="qibotf cpu")
|
||||
condition = base_condition & (data["backend"] == "qibojit") & (data["platform"] == "numba")
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="^", markersize=10,
|
||||
color=cpu_cp[3], linewidth=3.0, label="qibojit (numba) cpu")
|
||||
|
||||
condition = base_condition & (data["backend"] == "tensorflow") & (data["is_gpu"] == True)
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="o", markersize=10,
|
||||
color=gpu_cp[1], linewidth=3.0, label="tensorflow gpu")
|
||||
condition = base_condition & (data["backend"] == "qibotf") & (data["is_gpu"] == True)
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="D", markersize=10,
|
||||
color=gpu_cp[2], linewidth=3.0, label="qibotf gpu")
|
||||
condition = base_condition & (data["backend"] == "qibojit") & (data["platform"] == "cupy")
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="^", markersize=10,
|
||||
color=gpu_cp[3], linewidth=3.0, label="qibojit (cupy) gpu")
|
||||
condition = base_condition & (data["backend"] == "qibojit") & (data["platform"] == "cuquantum")
|
||||
plt.semilogy(data[condition]["dt"], data[condition][quantity], marker="v", markersize=10, linestyle="--",
|
||||
color=gpu_cp[3], linewidth=3.0, label="qibojit (cuquantum) gpu")
|
||||
|
||||
plt.title(f"Trotter adiabatic evolution, {nqubits} qubits, double precision")
|
||||
plt.xlabel("$\delta t$")
|
||||
if quantity == "total_dry_time":
|
||||
plt.ylabel("Total dry run time (sec)")
|
||||
elif quantity == "total_simulation_time":
|
||||
plt.ylabel("Total simulation time (sec)")
|
||||
|
||||
if legend:
|
||||
plt.legend(fontsize="small")
|
||||
if yticks is not None:
|
||||
plt.minorticks_off()
|
||||
plt.yticks(yticks)
|
||||
if save:
|
||||
plt.savefig(f"evolution_trotter_{nqubits}qubits_{quantity}.pdf", bbox_inches="tight")
|
||||
else:
|
||||
plt.show()
|
||||
Reference in New Issue
Block a user