Skip to content
Snippets Groups Projects
Commit 269145ad authored by Cyril Moineau's avatar Cyril Moineau
Browse files

Merge branch 'AddUnitTestExport' into 'dev'

Fix gnuplot detection

See merge request !266
parents 7908d38f da770a7c
No related branches found
No related tags found
2 merge requests!279v0.4.0,!266Fix gnuplot detection
Pipeline #60494 passed
import os import os
import subprocess
import shutil import shutil
from pathlib import Path from pathlib import Path
import aidge_core import aidge_core
...@@ -41,6 +42,18 @@ def compute_default_mem_info(scheduler: aidge_core.Scheduler) -> Tuple[int, List ...@@ -41,6 +42,18 @@ def compute_default_mem_info(scheduler: aidge_core.Scheduler) -> Tuple[int, List
return mem_size, mem_info return mem_size, mem_info
def _gnuplot_installed():
try:
# Run gnuplot with the --version flag and capture the output
subprocess.run(["gnuplot", "--version"])
return True
except FileNotFoundError:
aidge_core.Log.warn("Gnuplot is not installed.")
return False
except subprocess.CalledProcessError:
aidge_core.Log.warn("Gnuplot command found but failed to run.")
return False
def generate_optimized_memory_info(scheduler: aidge_core.Scheduler, stats_folder: Path = None, wrapping: bool = False) -> Tuple[int, List[dict]]: def generate_optimized_memory_info(scheduler: aidge_core.Scheduler, stats_folder: Path = None, wrapping: bool = False) -> Tuple[int, List[dict]]:
"""Generates optimized memory information for a computation graph managed by a scheduler. """Generates optimized memory information for a computation graph managed by a scheduler.
...@@ -73,21 +86,20 @@ def generate_optimized_memory_info(scheduler: aidge_core.Scheduler, stats_folder ...@@ -73,21 +86,20 @@ def generate_optimized_memory_info(scheduler: aidge_core.Scheduler, stats_folder
# List of nodes which are connected at the input of the graph (None if input is not connected) # List of nodes which are connected at the input of the graph (None if input is not connected)
nodes_at_input = [n[0] for n in scheduler.graph_view().inputs()] nodes_at_input = [n[0] for n in scheduler.graph_view().inputs()]
# Return 0 ==> gnuplot installed
if os.system("gnuplot --version > /dev/null 2>&1") == 0: if stats_folder is not None:
# Use gnuplot to generate the log if _gnuplot_installed():
if isinstance(stats_folder, str): # Use gnuplot to generate the log
stats_folder = Path(stats_folder) os.makedirs(str(Path(stats_folder) / "graph"), exist_ok=True)
os.makedirs(str(Path(stats_folder) / "graph"), exist_ok=True) mem_manager.log("memory_info")
mem_manager.log("memory_info") os.chmod("memory_info_plot.gnu", 0o777)
os.chmod("memory_info_plot.gnu", 0o777) os.system("./memory_info_plot.gnu")
os.system("./memory_info_plot.gnu") shutil.move("memory_info", str(Path(stats_folder) / "graph" / "memory_info"))
shutil.move("memory_info", str(Path(stats_folder) / "graph" / "memory_info")) shutil.move("memory_info_plot.png", str(
shutil.move("memory_info_plot.png", str( Path(stats_folder) / "graph" / "memory_info_plot.png"))
Path(stats_folder) / "graph" / "memory_info_plot.png")) os.remove("memory_info_plot.gnu")
os.remove("memory_info_plot.gnu") else:
elif stats_folder is not None: aidge_core.Log.warn("Warning: gnuplot is not installed, could not generate stat folder.")
aidge_core.Log.warn("Warning: gnuplot is not installed, could not generate stat folder.")
# In the export, we currently use an unified memory buffer whose size # In the export, we currently use an unified memory buffer whose size
# is determined by the memory peak usage # is determined by the memory peak usage
mem_size = mem_manager.get_peak_usage() mem_size = mem_manager.get_peak_usage()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment