diff --git a/src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp b/src/miniFE_sve/openmp-sve/src/YAML_Doc.cpp
index 382c8cd1f49743b005729222cd79f99eb36227f8..78122a31f5d2b8c3c0ec748a8988bb73c7ae9f9e 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 5a38b7f9c5551b6c020ea4c791745daebe151d01..a73fb0912b4a4ebd8527e3f287659c2754dd74b7 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 44841cfc0dfe89335f3a9f1d512e7404b58e8985..574a923e02eb7cd400e23f5b69727a9be2e6d5e7 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 29fcc8fe2efd4cd01e0f2a638cf9fcfa42b929d1..09ca7e179478020c4480500ce76d463edc2710eb 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","");
 }
 
 //-------------------------------------------------------------