From 67a0f0a8dda2da36971c27b9cc26af357a1c017b Mon Sep 17 00:00:00 2001
From: Bine Brank <b.brank@fz-juelich.de>
Date: Sat, 26 Feb 2022 14:27:14 +0100
Subject: [PATCH] add parameter for output_directory

---
 src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp     | 4 ++--
 src/miniFE_sve/openmp-sve/src/main.cpp         | 2 +-
 src/miniFE_sve/openmp-sve/utils/Parameters.hpp | 3 ++-
 src/miniFE_sve/openmp-sve/utils/utils.cpp      | 1 +
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp b/src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp
index 382c8cd..78122a3 100644
--- a/src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp
+++ b/src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp
@@ -81,13 +81,13 @@ string YAML_Doc::generateYAML(){
     filename = destinationFileName;
   filename = filename + string(sdate) + ".yaml";
   if (destinationDirectory!="" && destinationDirectory!=".") {
-    string mkdir_cmd = "mkdir " + destinationDirectory;
+    string mkdir_cmd = "mkdir -p " + destinationDirectory;
 #ifdef REDSTORM
     mkdir(destinationDirectory.c_str(),0755);
 #else
     system(mkdir_cmd.c_str());
 #endif
-    filename = destinationDirectory + "/" + destinationFileName;
+    filename = destinationDirectory + "/" + filename;
   }
   else 
     filename = "./" + filename;
diff --git a/src/miniFE_sve/openmp-sve/src/main.cpp b/src/miniFE_sve/openmp-sve/src/main.cpp
index 5a38b7f..a73fb09 100644
--- a/src/miniFE_sve/openmp-sve/src/main.cpp
+++ b/src/miniFE_sve/openmp-sve/src/main.cpp
@@ -161,7 +161,7 @@ int main(int argc, char** argv) {
   osstr << ".";
   if (params.name != "") osstr << params.name << ".";
 
-  YAML_Doc doc("miniFE", MINIFE_VERSION, ".", osstr.str());
+  YAML_Doc doc("miniFE", MINIFE_VERSION, params.output_dir, osstr.str());
   if (myproc == 0) {
     add_params_to_yaml(doc, params);
     add_configuration_to_yaml(doc, numprocs, params.numthreads);
diff --git a/src/miniFE_sve/openmp-sve/utils/Parameters.hpp b/src/miniFE_sve/openmp-sve/utils/Parameters.hpp
index 44841cf..574a923 100644
--- a/src/miniFE_sve/openmp-sve/utils/Parameters.hpp
+++ b/src/miniFE_sve/openmp-sve/utils/Parameters.hpp
@@ -38,7 +38,7 @@ struct Parameters {
      mv_overlap_comm_comp(0), use_locking(0),
      load_imbalance(0), name(), elem_group_size(1),
      use_elem_mat_fields(1), verify_solution(0),
-     device(0),num_devices(2),skip_device(9999),numa(1)
+     device(0),num_devices(2),skip_device(9999),numa(1),output_dir()
   {}
 
   int nx;
@@ -56,6 +56,7 @@ struct Parameters {
   int num_devices;
   int skip_device;
   int numa;
+  std::string output_dir;
 };//struct Parameters
 
 }//namespace miniFE
diff --git a/src/miniFE_sve/openmp-sve/utils/utils.cpp b/src/miniFE_sve/openmp-sve/utils/utils.cpp
index 29fcc8f..09ca7e1 100644
--- a/src/miniFE_sve/openmp-sve/utils/utils.cpp
+++ b/src/miniFE_sve/openmp-sve/utils/utils.cpp
@@ -79,6 +79,7 @@ void get_parameters(int argc, char** argv, Parameters& params)
   params.num_devices = Mantevo::parse_parameter<int>(argstring, "num_devices", 2);
   params.skip_device = Mantevo::parse_parameter<int>(argstring, "skip_device", 9999);
   params.numa = Mantevo::parse_parameter<int>(argstring, "numa", 1);
+  params.output_dir = Mantevo::parse_parameter<std::string>(argstring, "output_dir","");
 }
 
 //-------------------------------------------------------------
-- 
GitLab