Sébastien Villemot
651fed87be
Bytecode: remove warnings about narrowing (-Wnarrowing)
2023-10-16 17:58:36 -04:00
Sébastien Villemot
7c9e261355
Bytecode: fix treatment of maxit option
...
It would do one extra iteration.
2023-06-13 16:59:08 +02:00
Sébastien Villemot
dcf56b89cd
Bytecode: rework message verbosity
...
Now uses options_.verbosity to decide what to print:
– if options_.verbosity == 0, prints nothing
– if options_.verbosity >= 1, prints iteration counter and duration, and fatal errors
– if options_.verbosity >= 2, additionally print floating point exceptions and
details about algorithmic decisions
2023-06-13 16:59:07 +02:00
Sébastien Villemot
08d378c244
Bytecode: in evaluate+dynamic mode, return residuals with as many columns as periods
...
Previously it would also include initial and terminal conditions (i.e.
residuals would have periods+maximum_lag+maximum_lead columns). But we do not
care about residuals at the initial and terminal conditions.
This change is for consistency with the perfect_foresight_problem MEX.
2023-06-12 19:18:44 +02:00
Sébastien Villemot
030316f2d8
Bytecode: misc simplifications
2023-04-18 22:25:58 +02:00
Sébastien Villemot
afe147d88d
Bytecode: the class dynSparseMatrix is no longer derived from Evaluate
2023-04-18 18:10:45 +02:00
Sébastien Villemot
e22972849b
Bytecode: make Evaluate::{symbol_table, steady_state} private and const
2023-04-18 17:46:48 +02:00
Sébastien Villemot
d71db85c71
Bytecode: move more cached information about current block out of the Evaluate class
2023-04-18 17:44:55 +02:00
Sébastien Villemot
36e8062e25
Bytecode: remove Evaluate::{EQN_block,EQN_block_number}
2023-04-18 17:37:35 +02:00
Sébastien Villemot
d789e6a4c5
Bytecode: move storage for variable and parameter values out of the Evaluate class
2023-04-18 17:37:33 +02:00
Sébastien Villemot
f27c3abd2f
Bytecode: refactor floating point exception handling
2023-04-07 16:46:32 +02:00
Sébastien Villemot
325e6487d4
Bytecode: move computation routines out of the Evaluate class
2023-02-24 15:18:43 -05:00
Sébastien Villemot
0e1678c13a
Bytecode: no longer have instruction pointer as a member variable of Evaluate class
2023-02-24 14:30:15 -05:00
Sébastien Villemot
13b3208cdb
Bytecode: move all logic for navigating through the .cod file into the Evaluate class
2023-02-23 17:37:08 -05:00
Sébastien Villemot
aaab993ccf
Bytecode: merge CodeLoad class into Evaluate
2023-02-23 11:21:22 -05:00
Sébastien Villemot
895ce96c61
Bytecode: fix memory management for FBEGINBLOCK and FCALL tags
...
FCALL was not properly deallocated, hence leading to a memory leak.
Also simplify the handling of FBEGINBLOCK through a std::unique_ptr.
2023-02-21 16:58:45 -05:00
Sébastien Villemot
1ad6b29936
Bytecode: misc minor simplifications
2023-02-21 16:31:08 -05:00
Sébastien Villemot
05ba2970be
Bytecode: diminish the number of data members in Evaluate class
2023-02-17 13:46:41 -05:00
Sébastien Villemot
4ecc78a931
Preprocessor: drop unused per-block max lead/lag fields
2023-01-17 14:43:56 +01:00
Sébastien Villemot
0c5c96e724
Bytecode w/ block decomposition: no longer output derivatives w.r.t. exogenous and endogenous outside the block
2023-01-17 14:24:02 +01:00
Sébastien Villemot
f84753025d
Bytecode: the block and non-block versions now coexist in parallel
...
As a consequence, a new “block_decomposed” option of the bytecode MEX has been
introduced to explicitly select the block-decomposed version.
Note that we do not always use the “block_decomposed” option even when the
“block” option has been passed to the user, in situations where the block
decomposition brings nothing (e.g. when evaluating the residuals of the whole
model).
2023-01-09 15:20:46 +01:00
Sébastien Villemot
034a981daa
Bytecode MEX: streamline error handling
2022-07-29 13:04:29 +02:00
Sébastien Villemot
6e1635658f
Bytecode MEX: split out code for dealing with variable names into a dedicated BasicSymbolTable class
2022-07-28 16:56:40 +02:00
Sébastien Villemot
1b13bb2e6e
Bytecode MEX: simplify type for storing list of instructions
2022-07-26 18:27:23 +02:00
Sébastien Villemot
8c01912a50
Bytecode MEX: simplify printing of numerical errors in expression
...
In particular, no longer rely on a duplicate implementation of the evaluator to
locate where the NaN or Inf is produced. Rather directly pass the pointer to
the faulty operator.
2022-07-25 18:07:18 +02:00
Sébastien Villemot
b3cff2d34d
Bytecode: remove incomplete/buggy support for exogenous deterministic
2022-07-05 13:02:17 +02:00
Sébastien Villemot
8be6f55bf6
Bytecode MEX: remove unused function parameters
2022-07-05 12:12:08 +02:00
Sébastien Villemot
0107365f6a
Bytecode: stop using unsigned integers where signed ones avoid unnecessary casts
2022-06-20 17:52:01 +02:00
Sébastien Villemot
8bee62fa5e
Bytecode: directly use several enums inside instruction classes
2022-06-20 17:51:59 +02:00
Sébastien Villemot
b4ce69db3a
Remove options_.slowc field
...
There was no user interface, and the feature that it provides has lost
relevance over time.
Note that algorithms for block and/or bytecode still internally use some
equivalent of this parameter, but its initial value will no longer be
modifiable (which could lead to bugs, see commit
e49e7e906f
).
2022-03-31 17:39:43 +02:00
Sébastien Villemot
96fb676be7
Bytecode: fix stack_solve_algo=4 when a “solve backward/forward” block follows a “solve two boundaries” block
...
When solving a “Solve two boundarise” block with stack_solve_algo=4, the
“slowc” variable is modified. This would affect the resolution of further
“solve backward/forward” blocks, which would yield results.
The fix consists in saving and restoring “slowc”.
2022-03-15 17:42:03 +01:00
Sébastien Villemot
65e18fe883
Bytecode: fix stack_solve_algo=4 on linear blocks
...
Only one iteration is performed on linear blocks. But in the case of
stack_solve_algo=4 it is not enough, since it will not find the right optimal
path lenght at the first iteration (even though that optimal path length is
ufnitary).
2022-03-01 11:29:29 +01:00
Sébastien Villemot
803e3721ec
Bytecode: correctly handle M_.{endo_names,exo_names,param_names}, which are now cell arrays
2022-02-14 15:06:07 +01:00
Sébastien Villemot
766fff88f6
Use secure URL for link to GNU licenses
2021-06-09 17:35:05 +02:00
Sébastien Villemot
c9f6d3a626
Bytecode: more simplifications and modernizations
2021-02-09 16:00:53 +01:00
Sébastien Villemot
4a1dbc5ca4
Bytecode: fix bug introduced in previous commit
...
map::at() does bound checking, and throws an exception if out-of-range,
contrary to [] operator which returns a new element.
2021-02-03 19:52:25 +01:00
Sébastien Villemot
4893f0e82c
Bytecode: various simplifications and modernizations
2021-02-03 18:10:31 +01:00
Sébastien Villemot
30cfb0b03c
Bytecode: bugfix in conditional forecast
2021-02-01 17:54:36 +01:00
Sébastien Villemot
eb29dc003a
Bytecode: remove CUDA-specific stuff
2021-02-01 15:26:31 +01:00
Sébastien Villemot
47357bb432
Bytecode: port to C++11 nullptr keyword
...
Performed using modernize-use-nullptr from clang-tidy.
Manual intervention to remove old-style C casts to nullptr.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
2021-02-01 14:50:42 +01:00
Sébastien Villemot
a2186b06b8
Bytecode: port to C++11 syntax for default constructors
...
Performed using modernize-use-equals-default from clang-tidy.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-equals-default.html
2021-02-01 14:50:42 +01:00
Sébastien Villemot
1a4340cb80
Bytecode: port to C++11 auto keyword
...
Performed using modernize-use-auto from clang-tidy.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-auto.html
2021-02-01 14:50:39 +01:00
Sébastien Villemot
7840d1396e
Bytecode: port to C++11 range-based for loops
...
Performed using modernize-loop-convert from clang-tidy.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-loop-convert.html
2021-02-01 14:50:07 +01:00
Sébastien Villemot
c050325e3d
Bytecode: C++17 modernization / convert the remaining enums to enum classes
2021-02-01 12:10:47 +01:00
Sébastien Villemot
8803bc1479
Bytecode: minor improvement to debugging information
2020-09-22 16:42:33 +02:00
Sébastien Villemot
f4f296edd6
Preprocessor update
...
— various refactoring and bugfixes in block decomposition
— small bugfix for PAC models
2020-05-06 18:17:25 +02:00
Sébastien Villemot
fbfff18378
Preprocessor: various refactorings of block decomposition
...
Adapt bytecode MEX accordingly.
2020-03-20 18:51:37 +01:00
Sébastien Villemot
b901b7af86
Global reindentation of MEX sources
2019-12-20 16:30:24 +01:00
Sébastien Villemot
f5e2bfc30a
Ask GCC to warn about C-style casts (-Wold-style-cast)
...
Adapt the code accordingly.
2019-04-23 13:03:20 +02:00
Sébastien Villemot
57848930c6
Use Unicode copyright symbol (in UTF-8 encoding)
...
Do not use it in MATLAB source files, since unfortunately the MATLAB editor
does not support UTF-8.
2019-04-16 11:42:16 +02:00
Sébastien Villemot
932e5f946c
Update preprocessor submodule
...
Adapt bytecode DLL as a consequence.
2018-07-18 17:52:44 +02:00
Sébastien Villemot
b2c554623f
Various fixes related to the new layout of generated files
2018-06-28 18:14:40 +02:00
Sébastien Villemot
a1b8bd39b2
Move the location of various generated files on the filesystem
...
- M and MEX files are now under +${MODELNAME}/
- bytecode, C source and JSON now under ${MODELNAME}/model/
2018-06-27 17:03:39 +02:00
Stéphane Adjemian (Charybdis)
b4448937cc
Fixed indentation of c/h/cc/hh files.
2017-05-16 16:30:27 +02:00
Stéphane Adjemian (Charybdis)
a53636e24e
Fixed copyright notices.
2017-05-16 14:11:15 +02:00
Ferhat Mihoubi
981e31c8c3
Fix issues in bytecode with option extended_path related to the size of endo_simul and exo_simul
...
(cherry picked from commit ab7acc49e30fbcb292d63d58281581a308716b4c)
2017-05-08 18:40:18 +02:00
Ferhat Mihoubi
e248d8bf59
Fix memory and periods issues in bytecode
...
(cherry picked from commit fa5dd681abcb3243a5ee9be1f71fdfc51bced1cd)
2017-05-08 18:39:44 +02:00
Ferhat Mihoubi
857fc3c4f4
Corrects several bugs related to bytecode:
...
- Memory allocation is checked
- The amount of memory allocated for conditional forecast is corrected
2017-04-05 11:48:40 +02:00
ferhat
ac2e5cfd52
- In extended path
...
- fix an error with results print out
- fix an error withe exogenous initialization
2015-11-19 17:03:05 +01:00
ferhat
7c5272d852
Allows to compute the extended path and the conditional forecasts with bytecode
2015-09-22 15:39:49 +02:00
ferhat
24b2993f50
Solves issues in deterministic simulation:
...
- replaces maximum_endo_(lead|lag) by maximum_(lead|lag) to determine the maximum number of lead and lag in deterministic simulation
- allows to use bytecode in solve_perfect_foresight_model.m
- Adds model information in bytecode
2014-12-17 09:37:43 +01:00
Stéphane Adjemian (Charybdis)
5a4399e9b3
Removed openmp pragmas in bytecode.
...
This commit fixes #420 , so that bytecode doesn't crash when Dynare is compiled with --enable-openmp flag.
2013-07-11 15:12:41 +02:00
Sébastien Villemot
61485ab809
Fix copyright notices
2013-06-12 17:04:46 +02:00
Sébastien Villemot
f1c8ec60c7
Remove various compilation warnings
2013-06-12 16:05:35 +02:00
Ferhat Mihoubi
b1da2f2b7d
"slowc" option is now available to solve a simple equation in bytecode
2013-06-10 16:46:54 +02:00
Ferhat Mihoubi
03e487a092
Major update of bytecode:
...
- Iterative linear solvers using CUDA
- interpreter.cc decomposed
2013-03-22 15:44:34 +01:00
Sébastien Villemot
31a13db66a
Remove duplicate information in M_.blocksMFS
2012-11-16 17:39:03 +01:00
Sébastien Villemot
1f9cea669a
Update copyright notices
2012-06-08 18:22:34 +02:00
Sébastien Villemot
f36f76760a
Fix bug where the nth derivative of 0^n evaluated to 0 instead of n!
...
(complement to commit cd0bc28e
)
2012-05-21 18:34:10 +02:00
Ferhat Mihoubi
3730957e9f
Considers both 'inf' and 'nan' results in functions return and improves an error message
2012-03-06 11:09:46 +01:00
Ferhat Mihoubi
3072c6e611
Displays more details in case of singular system
2012-03-06 11:03:13 +01:00
Ferhat
eb567f5202
Cleaning the code: getting rid of unused variables
2012-02-17 10:59:39 +01:00
Stéphane Adjemian (Charybdis)
3ba5a645be
Make verbosity flag effective: do not print informations about perfect foresight solvers if options_.ep.verbosity=0.
2011-12-12 14:20:14 +01:00
Ferhat Mihoubi
567ef44f6d
- Corrects the simulation period for a forward looking system
2011-08-11 14:15:49 +02:00
Ferhat Mihoubi
fe1b241186
Add an option in bytecode to prevent the display of error messages .
2011-06-18 17:15:47 +02:00
Sébastien Villemot
02652f6eb8
Updated copyright notices
2011-02-04 17:27:33 +01:00
Sébastien Villemot
cc2a9d90ac
Global reindentation of MEX source files
2011-02-04 16:53:12 +01:00
Ferhat Mihoubi
6f184371ef
- Correction of temporary terms when bytecode is used and solve_algo <= 4
2011-02-02 00:31:37 +01:00
Ferhat Mihoubi
3393eebf71
When a model is evaluated with bytecode the residual has to be returned in the equations order (not in the variables order)
2011-01-31 12:30:16 +01:00
Ferhat Mihoubi
ce07223628
- The Temporary terms management with bytecode when the model is block decomposed and solve_algo<5 is now compatible with octave
...
- Gets rid of warning message during the compilation of bytecode
2011-01-14 19:24:18 +01:00
Ferhat Mihoubi
206fff0e71
- Corrects the following problem:
...
Octave BiCGStab algorithm involves a 0 division in case of a preconditioner equal to the LU decomposition of the A matrix (in a linear system of the form A.x = b).
- The solution:
Checks if the linear system is solved simply using: x_new = x_old + U \ (L \ x_old)
Ticket #11
2011-01-14 10:39:33 +01:00
Ferhat Mihoubi
313f64e153
- Adds option 'print' to bytecode
...
- Manages global temporary terms when the model is evaluated block by block
- Stores the result of a first order derivative only in case of numerical approximation. Do nothing if an external function is called to compute the first order derivatives (it has already been done during the function call)
- Cleans the code
2010-12-31 16:37:34 +01:00
Ferhat Mihoubi
7a58637932
- Displays an error message and interrupts the execution of bytecode in case of unknown function
2010-12-17 18:54:03 +01:00
Ferhat Mihoubi
129d404eb8
- The binary operator oDerivPower is implemented in bytecode
2010-12-17 18:54:03 +01:00
Ferhat Mihoubi
97664607b2
- external functions are compatible with block decomposition and/or bytecode
2010-12-10 12:06:50 +01:00
Ferhat Mihoubi
bdfa881a96
Reorganization of error handling in bytecode
2010-11-25 16:11:05 +01:00
Ferhat Mihoubi
1aceb504fd
Check command is now compatible with block and bytecode options
2010-10-27 15:34:48 +02:00
Ferhat Mihoubi
1a09426706
- Correction of several bugs with Octave
...
- Add wrapper needed to compute the steady-state using bytecode and solve_algo = 0, ..., 4
2010-10-22 10:09:07 +02:00
Ferhat Mihoubi
8f36437662
- Extends the algorithms compatible with bytecode to compute the steady-state (ticket #11 ). The new values for solve_algo are:
...
* 0: fsolve
* 1: solve1
* 2, 4: solve1 + block decomposition
* 3: csolve
* 5: LU decomposition with UMFPack (method handling sparse matrix in Matlab)
* 6: GMRES
* 7: BiCGStab
* 8: bytecode own solver (use Gaussian elimination + sparse matrix)
- Bytecode can now evaluate a specific block instead of the overall blocks (new bytecode's option 'Block = block_number')
2010-10-11 19:21:32 +02:00
Ferhat Mihoubi
df1b1e4ed0
- In bytecode, the MATLAB function "mexErrMsgTxt" has been replaced by an exception handling see ticket #137
2010-09-24 12:52:58 +02:00
Houtan Bastani
b512a43848
fix file mode
2010-09-23 10:44:10 +02:00
Sébastien Villemot
a3640239ab
Removed all MSVC workarounds, since we can now definitely drop this compiler on
...
Windows/64-bit platform
2010-09-21 15:06:14 +02:00
Ferhat Mihoubi
c7eff4ba60
- Adding the relaxation method for block and/or bytecode options
...
- Changing the the stack_solve_algo option :
Previous version New version
1 : Sparse LU 0 : Sparse LU
2 : GMRES 1 : Relaxation
3 : BiCGStab 2 : GMRES
4 : Sparse LU & Optimal Path 3 : BiCGStab
5 : bytecode own solver 4 : Sparse LU & Optimal Path
5 : bytecode own solver
2010-09-17 12:18:25 +02:00
Ferhat Mihoubi
77b6096962
- extends the mex_interface: bytecode's debuging purpose
...
- correction of memory leaks in bytecode
2010-09-17 12:17:14 +02:00
Ferhat Mihoubi
0a3c8a4b0c
- compute the jacobian matrix for exogenous, det_exogenous and previous blocks endogenous
...
- preprocessor provides informations about the dynamic structure of each block
- extends the algorithms available with bytecode: stack_solve_algo = 1, 2, 3 and 4 is compatible the bytecode. Speed and memory requirement are improved with stack_solve_algo = 1 or 4 for large scale models.
- bytecode can be used to evaluate a model
2010-09-17 12:16:47 +02:00
Sébastien Villemot
81f0cf1bc3
Bytecode DLL: provisions for Microsoft Visual C++
2010-06-09 18:35:35 +02:00
Sébastien Villemot
045e2e21ef
Bytecode DLL: bugfix for erf()
2010-06-09 18:31:39 +02:00
Ferhat Mihoubi
f849b11563
The functions erf, normpdf and normcdf work fine with bytecode option
2010-04-16 17:00:05 +02:00
Sébastien Villemot
3475341ac9
Bytecode DLL: fixed compilation with MSVC
2010-02-23 16:04:32 +01:00
Ferhat Mihoubi
faa5da07dc
Bug correction in error messages and reduction of memory requirement during simulation
2010-02-19 11:03:53 +01:00