Skip to content
Snippets Groups Projects
Verified Commit dec60b25 authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

Do not write bytecode for discretionary optimal policy models

Those models do not have as many variables as equations, and this case is not
supported by bytecode.

The present commit is an improvement over commit
a8ea57dd, which had already removed bytecode
for the planner objective model.
parent ef57a28b
Branches
Tags
No related merge requests found
Pipeline #9223 passed
...@@ -2453,6 +2453,9 @@ DynamicModel::writeDynamicFile(const string &basename, bool use_dll, const strin ...@@ -2453,6 +2453,9 @@ DynamicModel::writeDynamicFile(const string &basename, bool use_dll, const strin
writeDynamicMFile(basename); writeDynamicMFile(basename);
// The legacy representation is no longer produced for Julia // The legacy representation is no longer produced for Julia
/* Discretionary optimal policy models don’t have as many variables as
equations; bytecode does not support that case */
if (static_cast<int>(equations.size()) == symbol_table.endo_nbr())
writeDynamicBytecode(basename); writeDynamicBytecode(basename);
if (block_decomposed) if (block_decomposed)
writeDynamicBlockBytecode(basename); writeDynamicBlockBytecode(basename);
......
...@@ -37,12 +37,6 @@ PlannerObjective::computingPassBlock([[maybe_unused]] const eval_context_t &eval ...@@ -37,12 +37,6 @@ PlannerObjective::computingPassBlock([[maybe_unused]] const eval_context_t &eval
// Disable block decomposition on planner objective // Disable block decomposition on planner objective
} }
void
PlannerObjective::writeStaticBytecode([[maybe_unused]] const string &basename) const
{
// Disable bytecode output, because there are not as many variables as equations
}
OrigRamseyDynamicModel::OrigRamseyDynamicModel(SymbolTable &symbol_table_arg, OrigRamseyDynamicModel::OrigRamseyDynamicModel(SymbolTable &symbol_table_arg,
NumericalConstants &num_constants_arg, NumericalConstants &num_constants_arg,
ExternalFunctionsTable &external_functions_table_arg, ExternalFunctionsTable &external_functions_table_arg,
......
...@@ -41,7 +41,6 @@ protected: ...@@ -41,7 +41,6 @@ protected:
private: private:
void computingPassBlock(const eval_context_t &eval_context, bool no_tmp_terms) override; void computingPassBlock(const eval_context_t &eval_context, bool no_tmp_terms) override;
void writeStaticBytecode(const string &basename) const override;
}; };
class OrigRamseyDynamicModel : public DynamicModel class OrigRamseyDynamicModel : public DynamicModel
......
...@@ -475,6 +475,10 @@ StaticModel::writeStaticFile(const string &basename, bool use_dll, const string ...@@ -475,6 +475,10 @@ StaticModel::writeStaticFile(const string &basename, bool use_dll, const string
writeStaticMFile(basename); writeStaticMFile(basename);
// The legacy representation is no longer produced for Julia // The legacy representation is no longer produced for Julia
/* PlannerObjective subclass or discretionary optimal policy models don’t
have as many variables as equations; bytecode does not support that
case */
if (static_cast<int>(equations.size()) == symbol_table.endo_nbr())
writeStaticBytecode(basename); writeStaticBytecode(basename);
if (block_decomposed) if (block_decomposed)
writeStaticBlockBytecode(basename); writeStaticBlockBytecode(basename);
......
...@@ -60,7 +60,7 @@ private: ...@@ -60,7 +60,7 @@ private:
void writeStaticBlockBytecode(const string &basename) const; void writeStaticBlockBytecode(const string &basename) const;
//! Writes the code of the model in virtual machine bytecode //! Writes the code of the model in virtual machine bytecode
virtual void writeStaticBytecode(const string &basename) const; void writeStaticBytecode(const string &basename) const;
//! Computes jacobian and prepares for equation normalization //! Computes jacobian and prepares for equation normalization
/*! Using values from initval/endval blocks and parameter initializations: /*! Using values from initval/endval blocks and parameter initializations:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment