Merge branch 'remove-prop-type' into 'main'

refactor: remove DHT prop type from input script

See merge request naaice/poet!17
This commit is contained in:
Max Lübke 2023-07-21 17:25:12 +02:00
commit 751da30399
10 changed files with 12 additions and 117 deletions

View File

@ -264,9 +264,9 @@ StoreSetup <- function(setup) {
if (dht_enabled) { if (dht_enabled) {
to_store$DHT <- list( to_store$DHT <- list(
enabled = dht_enabled, enabled = dht_enabled,
log = dht_log, log = dht_log
signif = dht_final_signif, #signif = dht_final_signif,
proptype = dht_final_proptype #proptype = dht_final_proptype
) )
} else { } else {
to_store$DHT <- FALSE to_store$DHT <- FALSE

View File

@ -141,9 +141,6 @@ inline double RunMasterLoop(SimParams &params, RInside &R,
if (!chem_params.dht_signif.empty()) { if (!chem_params.dht_signif.empty()) {
chem.SetDHTSignifVector(chem_params.dht_signif); chem.SetDHTSignifVector(chem_params.dht_signif);
} }
if (!params.getDHTPropTypeVector().empty()) {
chem.SetDHTPropTypeVector(params.getDHTPropTypeVector());
}
if (!params.getDHTFile().empty()) { if (!params.getDHTFile().empty()) {
chem.ReadDHTFile(params.getDHTFile()); chem.ReadDHTFile(params.getDHTFile());
} }

View File

@ -1,4 +1,4 @@
// Time-stamp: "Last modified 2023-07-21 12:35:23 mluebke" // Time-stamp: "Last modified 2023-07-21 17:20:10 mluebke"
#ifndef CHEMISTRYMODULE_H_ #ifndef CHEMISTRYMODULE_H_
#define CHEMISTRYMODULE_H_ #define CHEMISTRYMODULE_H_
@ -162,13 +162,7 @@ public:
* is defined by prop_type vector (ChemistryModule::GetPropNames). * is defined by prop_type vector (ChemistryModule::GetPropNames).
*/ */
void SetDHTSignifVector(std::vector<uint32_t> &signif_vec); void SetDHTSignifVector(std::vector<uint32_t> &signif_vec);
/**
* **Master only** Set the DHT rounding type of each species. See
* DHT_PROP_TYPES enumemartion for explanation.
*
* \param proptype_vec Vector defining DHT prop type for each species.
*/
void SetDHTPropTypeVector(std::vector<uint32_t> proptype_vec);
/** /**
* **Master only** Load the state of the DHT from given file. * **Master only** Load the state of the DHT from given file.
* *
@ -272,7 +266,6 @@ protected:
CHEM_INIT_SPECIES, CHEM_INIT_SPECIES,
CHEM_DHT_ENABLE, CHEM_DHT_ENABLE,
CHEM_DHT_SIGNIF_VEC, CHEM_DHT_SIGNIF_VEC,
CHEM_DHT_PROP_TYPE_VEC,
CHEM_DHT_SNAPS, CHEM_DHT_SNAPS,
CHEM_DHT_READ_FILE, CHEM_DHT_READ_FILE,
CHEM_WORK_LOOP, CHEM_WORK_LOOP,

View File

@ -2,7 +2,7 @@
#define DHT_TYPES_H_ #define DHT_TYPES_H_
namespace poet { namespace poet {
enum DHT_PROP_TYPES { DHT_TYPE_DEFAULT, DHT_TYPE_CHARGE, DHT_TYPE_IGNORE, DHT_TYPE_TOTAL }; enum DHT_PROP_TYPES { DHT_TYPE_DEFAULT, DHT_TYPE_CHARGE, DHT_TYPE_TOTAL };
} }
#endif // DHT_TYPES_H_ #endif // DHT_TYPES_H_

View File

@ -198,7 +198,6 @@ public:
auto getEvictions() { return this->dht_evictions; }; auto getEvictions() { return this->dht_evictions; };
void SetSignifVector(std::vector<uint32_t> signif_vec); void SetSignifVector(std::vector<uint32_t> signif_vec);
void SetPropTypeVector(std::vector<uint32_t> prop_type_vec);
void setBaseTotals(const std::array<double, 2> &bt) { void setBaseTotals(const std::array<double, 2> &bt) {
this->base_totals = bt; this->base_totals = bt;

View File

@ -193,16 +193,6 @@ public:
*/ */
auto getDHTSignifVector() const { return this->dht_signif_vector; }; auto getDHTSignifVector() const { return this->dht_signif_vector; };
/**
* @brief Get the DHT_Prop_Type_Vector
*
* Returns a vector indicating of which type a variable of a grid cell is.
*
* @return std::vector<std::string> Vector if strings defining a type of a
* variable
*/
auto getDHTPropTypeVector() const { return this->dht_prop_type_vector; };
/** /**
* @brief Return name of DHT snapshot. * @brief Return name of DHT snapshot.
* *
@ -245,7 +235,6 @@ private:
t_simparams simparams; t_simparams simparams;
std::vector<uint32_t> dht_signif_vector; std::vector<uint32_t> dht_signif_vector;
std::vector<uint32_t> dht_prop_type_vector;
std::string dht_file; std::string dht_file;
std::string filesim; std::string filesim;

View File

@ -274,23 +274,6 @@ void poet::ChemistryModule::SetDHTSignifVector(
this->dht->SetSignifVector(signif_vec); this->dht->SetSignifVector(signif_vec);
} }
void poet::ChemistryModule::SetDHTPropTypeVector(
std::vector<uint32_t> proptype_vec) {
if (this->is_master) {
if (proptype_vec.size() != this->prop_count) {
throw std::runtime_error("Prop type vector sizes mismatches prop count.");
}
int ftype = CHEM_DHT_PROP_TYPE_VEC;
PropagateFunctionType(ftype);
ChemBCast(proptype_vec.data(), proptype_vec.size(), MPI_UINT32_T);
return;
}
this->dht->SetPropTypeVector(proptype_vec);
}
void poet::ChemistryModule::ReadDHTFile(const std::string &input_file) { void poet::ChemistryModule::ReadDHTFile(const std::string &input_file) {
if (this->is_master) { if (this->is_master) {
int ftype = CHEM_DHT_READ_FILE; int ftype = CHEM_DHT_READ_FILE;

View File

@ -1,3 +1,5 @@
// Time-stamp: "Last modified 2023-07-21 17:22:00 mluebke"
/* /*
** Copyright (C) 2018-2021 Alexander Lindemann, Max Luebke (University of ** Copyright (C) 2018-2021 Alexander Lindemann, Max Luebke (University of
** Potsdam) ** Potsdam)
@ -61,9 +63,6 @@ DHT_Wrapper::DHT_Wrapper(MPI_Comm dht_comm, uint32_t dht_size,
&poet::Murmur2_64A); &poet::Murmur2_64A);
this->dht_signif_vector.resize(key_size, DHT_KEY_SIGNIF_DEFAULT); this->dht_signif_vector.resize(key_size, DHT_KEY_SIGNIF_DEFAULT);
this->dht_signif_vector[0] = DHT_KEY_SIGNIF_TOTALS;
this->dht_signif_vector[1] = DHT_KEY_SIGNIF_TOTALS;
this->dht_signif_vector[2] = DHT_KEY_SIGNIF_CHARGE;
this->dht_prop_type_vector.resize(key_count, DHT_TYPE_DEFAULT); this->dht_prop_type_vector.resize(key_count, DHT_TYPE_DEFAULT);
this->dht_prop_type_vector[0] = DHT_TYPE_TOTAL; this->dht_prop_type_vector[0] = DHT_TYPE_TOTAL;
@ -192,13 +191,11 @@ std::vector<DHT_Keyelement> DHT_Wrapper::fuzzForDHT(int var_count, void *key,
this->dht_prop_type_vector[i] == DHT_TYPE_DEFAULT) { this->dht_prop_type_vector[i] == DHT_TYPE_DEFAULT) {
continue; continue;
} }
if (this->dht_prop_type_vector[i] == DHT_TYPE_IGNORE) {
continue;
}
if (this->dht_prop_type_vector[i] == DHT_TYPE_TOTAL) { if (this->dht_prop_type_vector[i] == DHT_TYPE_TOTAL) {
curr_key -= base_totals[totals_i++]; curr_key -= base_totals[totals_i++];
} }
vecFuzz[i].sc_notation = round_key_element(curr_key, dht_signif_vector[i]); vecFuzz[i].sc_notation =
round_key_element(curr_key, dht_signif_vector[i]);
} }
} }
// if timestep differs over iterations set current current time step at the // if timestep differs over iterations set current current time step at the
@ -216,11 +213,3 @@ void poet::DHT_Wrapper::SetSignifVector(std::vector<uint32_t> signif_vec) {
this->dht_signif_vector = signif_vec; this->dht_signif_vector = signif_vec;
} }
void poet::DHT_Wrapper::SetPropTypeVector(std::vector<uint32_t> prop_type_vec) {
if (prop_type_vec.size() != this->key_count) {
throw std::runtime_error(
"Prop type vector size mismatches count of key elements.");
}
this->dht_prop_type_vector = prop_type_vec;
}

View File

@ -1,4 +1,4 @@
// Time-stamp: "Last modified 2023-07-12 12:56:17 mluebke" // Time-stamp: "Last modified 2023-07-21 17:22:19 mluebke"
#include "IrmResult.h" #include "IrmResult.h"
#include "poet/ChemistryModule.hpp" #include "poet/ChemistryModule.hpp"
@ -70,13 +70,6 @@ void poet::ChemistryModule::WorkerLoop() {
SetDHTSignifVector(input_vec); SetDHTSignifVector(input_vec);
break; break;
} }
case CHEM_DHT_PROP_TYPE_VEC: {
std::vector<uint32_t> input_vec(this->prop_count);
ChemBCast(input_vec.data(), this->prop_count, MPI_UINT32_T);
SetDHTPropTypeVector(input_vec);
break;
}
case CHEM_DHT_SNAPS: { case CHEM_DHT_SNAPS: {
int type; int type;
ChemBCast(&type, 1, MPI_INT); ChemBCast(&type, 1, MPI_INT);

View File

@ -220,55 +220,7 @@ int SimParams::parseFromCmdl(char *argv[], RInside &R) {
return poet::PARSER_OK; return poet::PARSER_OK;
} }
void SimParams::initVectorParams(RInside &R) { void SimParams::initVectorParams(RInside &R) {}
if (simparams.dht_enabled) {
/*Load significance vector from R setup file (or set default)*/
bool signif_vector_exists = R.parseEval("exists('signif_vector')");
if (signif_vector_exists) {
dht_signif_vector = as<std::vector<uint32_t>>(R["signif_vector"]);
}
/*Load property type vector from R setup file (or set default)*/
bool prop_type_vector_exists = R.parseEval("exists('prop_type')");
if (prop_type_vector_exists) {
std::vector<std::string> prop_type_R =
as<std::vector<string>>(R["prop_type"]);
this->dht_prop_type_vector.clear();
this->dht_prop_type_vector.reserve(prop_type_R.size());
for (const auto &type : prop_type_R) {
if (type == "act") {
this->dht_prop_type_vector.push_back(DHT_TYPE_CHARGE);
continue;
}
if (type == "ignore") {
this->dht_prop_type_vector.push_back(DHT_TYPE_IGNORE);
continue;
}
this->dht_prop_type_vector.push_back(DHT_TYPE_DEFAULT);
}
}
if (simparams.world_rank == 0) {
// MDL: new output on signif_vector and prop_type
if (signif_vector_exists) {
cout << "CPP: using problem-specific rounding digits: " << endl;
R.parseEval("print(data.frame(prop=prop, type=prop_type, "
"digits=signif_vector))");
} else {
cout << "CPP: using DHT default rounding digits = "
<< simparams.dht_significant_digits << endl;
}
// MDL: pass to R the DHT stuff. These variables exist
// only if dht_enabled is true
R["dht_final_signif"] = dht_signif_vector;
R["dht_final_proptype"] = dht_prop_type_vector;
}
}
}
std::list<std::string> SimParams::validateOptions(argh::parser cmdl) { std::list<std::string> SimParams::validateOptions(argh::parser cmdl) {
/* store all unknown parameters here */ /* store all unknown parameters here */