Commit Graph

216 Commits (4346903c65db6404755e207fab0f4e526cccef01)

Author SHA1 Message Date
Sébastien Villemot 3d6f86c234
Build system: fix detection of SLICOT for MATLAB on RHEL
The MATLAB_CFLAGS variable was not injected when testing for the presence of
libslicot64_pic. In particular, on GNU/Linux system, this means that the -fPIC
flag was not injected when doing the test. This was not a problem on Debian,
where GCC now enables -fPIC by default. But this would fail on RHEL, where
-fPIC is not enabled by default.

By the way:
— rename ac_save_* variables to my_save_*, to avoid conflicts with internal
  autoconf variables;
— do not inject “$(mkoctfile -p LFLAGS)” into LDFLAGS when testing for SLICOT
  under Octave; this is no longer necessary, since those flags are already
  injected at the beginning of mex/build/octave/configure.ac.
2021-09-02 17:14:01 +02:00
Sébastien Villemot 5d5fefca25
Bump version numbers 2021-07-23 15:57:19 +02:00
Normann Rion 3d27672c58
kth-order approximation of conditional welfare
Partially addresses issue #1680:
- unconditional welfare resorts to dynare++ simulation tools, which shall be updated very soon
TO DO:
- implement a function computing kth-order approximation of simulated moments of y
2021-06-15 15:04:31 +02:00
Sébastien Villemot 766fff88f6
Use secure URL for link to GNU licenses 2021-06-09 17:35:05 +02:00
Sébastien Villemot 3bd3c78e0e
A_times_B_kronecker_C MEX: rewrite in Fortran 2021-06-04 12:58:39 +02:00
Sébastien Villemot 2a1183e1fa
Fortran MEX: add -Wimplicit-interface to compiler flags
This warns about hard-to-detect bugs where a function is called with an
implicit interface, thus possibly having mismatches in the calling sequence.
2021-06-04 12:57:39 +02:00
Sébastien Villemot 0741963ca5
Build system: streamline handling of compilation flags for MEX
— allow the user to override compilation flags for MATLAB MEX (it was already
  working for the preprocessor, the MEX for Octave and Dynare++)
— increase the symmetry of MEX build infrastructure between MATLAB and Octave
— when linking MEX for Octave, do not add the output of “mkoctfile -p FLIBS”.
  It is unneeded, and it can create a conflict between the system compiler and
  a user-supplied compiler

By the way:
— restore optimization on macOS for C/C++ MEX (it had been removed in
  5df2392a09)
— remove -fno-omit-frame-pointer on MATLAB/Linux, since it would be cancelled
  by subsequent -O2 and should not be needed anyways
— remove FFLAGS under Octave, unused
2021-05-10 14:39:41 +02:00
Sébastien Villemot 47477e152a
Bump minimal Octave version to 6.2.0 2021-03-12 16:21:57 +01:00
Sébastien Villemot c0ccca26cb
macOS package: drop support for Octave
The current Octave support is utterly broken (both in stable and unstable), it
crashes Octave. It relies on an unofficial Octave app for
macOS (https://octave-app.org), which is infrequently updated.

This commits drop support for Octave in the macOS package. We will now tell our
macOS+octave users to use the Homebrew Dynare package (which is maintained by
the Homebrew team, and is in reasonably good shape).
2021-03-12 16:21:57 +01:00
Stéphane Adjemian (Odysseus) 0e1c9312e2
Merge remote-tracking branch 'Dynare/master' into enterprise 2021-01-11 11:06:55 +01:00
Sébastien Villemot 93a8e60265
Build system: various macOS cleanups
– remove clang support
– we no longer support 32-bit
– simplify Darwin specific hacks for Octave MEX files
2020-12-18 15:40:48 +01:00
Sébastien Villemot e8d01abdca
Build system: remove obsolete comments 2020-12-18 15:40:48 +01:00
Sébastien Villemot d06ae350c5
Build system: add --with-octave configure option to specify non-default install path
(cherry picked from commit bd97fdc1d5)
2020-12-02 18:52:36 +01:00
Sébastien Villemot bd97fdc1d5
Build system: add --with-octave configure option to specify non-default install path 2020-12-02 18:26:49 +01:00
Sébastien Villemot f104b9d517
Windows package: statically link MatIO and GSL in Octave MEX files
Closes: #1750
2020-11-18 15:31:06 +01:00
Sébastien Villemot a922505bbe
Another fix for Fedora, needed for building MEX for Octave 2020-11-13 10:05:40 +01:00
Sébastien Villemot 3a42c234fe
Fix build failures on Fedora
— FCFLAGS needs to contain the compilation flags used when compiling Octave,
  otherwise it fails at configure stage when looking for gfortran
— Explicitly add -L$OCTLIBDIR, because with Octave 5 it is no longer there, and
  on Fedora the Octave libraries are no in the default linker search path
2020-11-05 18:52:11 +01:00
Sébastien Villemot f7ee0b9441
Build system: add missing -fPIC flag for Fortran 2008 MEX files under Octave 2020-11-05 15:40:14 +01:00
Sébastien Villemot 865ab47fa9
Provide block_trust_region MEX under solve_algo 13 and 14
- block trust region solver now available under solve_algo=13
  It is essentially the same as solve_algo=4, except that Jacobian by finite
  difference is not handled. A test file is added for that case
- block trust region solver with shortcut for equations that can be evaluated
  is now available under solve_algo=14 (in replacement of the pure-MATLAB solver)

Closes: Enterprise/dynare#3
2020-09-18 18:01:56 +02:00
Stéphane Adjemian (Odysseus) 248ad18846 Merge remote-tracking branch 'Dynare/master' into enterprise
Fixed conflicts in:

 - .gitlab-ci.yml
 - matlab/dynare_config.m
 - matlab/dynare_solve.m
 - matlab/initvalf.m
 - matlab/perfect-foresight-models/make_ex_.m
 - matlab/perfect-foresight-models/perfect_foresight_setup.m
 - mex/build/matlab/Makefile.am
 - mex/build/matlab/configure.ac
 - mex/build/octave/Makefile.am
 - mex/build/octave/configure.ac
 - mex/sources/Makefile.am
 - preprocessor
 - tests/Makefile.am
2020-09-17 14:53:32 +02:00
Sébastien Villemot f6c2471eef
New MEX for solving discrete Lyapunov equations with doubling algorithm
This is a Fortran 2008 rewrite of disclyap_fast.m.

Closes: #1737
2020-07-30 16:34:35 +02:00
Sébastien Villemot 400979fd44
macOS: fix handling LDFLAGS when building MEX for Octave
If something was already in LDFLAGS, it was concatenated without a whitespace,
leading to failure.
2020-06-15 18:29:42 +02:00
Sébastien Villemot 6e0f104d7e
Bump minimal MATLAB version to R2014a
Ref. #1713
2020-04-07 16:32:32 +02:00
Sébastien Villemot 43ed7b2b69
Merge remote-tracking branch 'community/master' into enterprise 2020-03-27 16:28:41 +01:00
Sébastien Villemot 89dc67eb46
Convert mjdgges MEX to Fortran 2008 2020-01-09 09:23:07 +01:00
Sébastien Villemot dd1e4d238b
Build system: remove useless rules for preprocessed Fortran 2008 files
Automake actually provides such rules.
2020-01-08 18:37:26 +01:00
Sébastien Villemot c0c95e1ceb
Add Fortran 2008 interface for a subset of BLAS/LAPACK functions 2020-01-06 18:29:47 +01:00
Sébastien Villemot ce9eca366d
Add Fortran 2008 interface for a subset of MEX functions 2020-01-06 18:29:47 +01:00
Sébastien Villemot 47e4649026
Add support for Fortran 2008 in MEX files
By the same token, remove unused support for Fortran 77.
2020-01-06 18:29:47 +01:00
Sébastien Villemot 4e314a529b
Bump minimal required Octave version to 4.4 2020-01-06 18:29:47 +01:00
Sébastien Villemot 39ed7c6742
Bump version number to 4.7-unstable 2019-12-20 17:20:07 +01:00
Sébastien Villemot 996bdd6c64 New local_state_space_iteration_k MEX, for nonlinear filters at k-order
It applies the approximated policy function to a set of particles, using
Dynare++ routines.

There is support for parallelization, using Dynare++ multithreading
model (itself based on C++11 threads; we don’t use OpenMP because it is
incompatible with MKL). For the time being, default to a single thread. This
should be later refined through empirical testing.
2019-12-20 11:31:56 +01:00
Houtan Bastani 0c77f7e92f
macOS packaging: compile against the version of Octave distributed via https://octave-app.org (currently 4.4.1) 2019-12-10 15:14:16 +01:00
Sébastien Villemot fe0fdf2ccb
Fix Fortran flags under MEX for MATLAB
There was a typo in fedeeaad9f.

By the way, use the modern Fortran compiler when trying to detect slicot.
2019-12-03 18:48:19 +01:00
Sébastien Villemot 6a26926892
Add new block_trust_region MEX
This MEX solves nonlinear systems of equations using a trust region algorithm.
The problem is subdivided in smaller problems by doing a block
triangularisation of the Jacobian at the guess value, using the
Dulmage-Mendelsohn algorithm.

The interface of the MEX is simply:

  [x, info] = block_trust_region(f, guess_value);

Where f is either a function handle or a string designating a function.
f must take one argument (the evaluation point), and return either one or two
arguments (the residuals and, optionally, the Jacobian).

On success, info=0; on failure, info=1.
2019-12-03 16:17:16 +01:00
Sébastien Villemot 93bd817ccb
Add Fortran 2008 interface for a subset of BLAS/LAPACK functions 2019-12-03 16:17:12 +01:00
Sébastien Villemot ba466d22c8
Add Fortran 2008 interface for a subset of MEX functions 2019-12-03 16:17:08 +01:00
Sébastien Villemot fedeeaad9f
Add support for Fortran 2008 in MEX files
By the same token, remove unused support for Fortran 77.
2019-12-03 16:17:00 +01:00
Sébastien Villemot 5cae192487
Build system: really error out if some dependency is missing
The changes in 8065e9d439 were not working as
intended, because AC_CHECK_PROG expect values and not actions. Hence
AC_MSG_ERROR was not properly executed.

By the way, simplify some test conditions using && instead of if/then/fi
blocks.
2019-11-28 14:43:44 +01:00
Sébastien Villemot 8065e9d439
Build system: by default, error out if some dependency is missing
In particular, if either MATLAB or Octave is missing, one needs to pass either
--disable-matlab or --disable-octave.

Moreover, several new configure flags have been introduced for disabling some
components:
--disable-doc
--disable-dynare++
--disable-mex-dynare++
--disable-mex-ms-sbvar
--disable-mex-kalman-steady-state
2019-11-26 13:53:42 +01:00
Houtan Bastani f8eb982767
octave configure: remove unnecessary library linking for macOS 2019-09-24 15:22:36 +02:00
Sébastien Villemot 0d0a0a9bbb
Bump to C++17
This means we now require GCC 8.

Boost filesystem library is no longer needed.

Ref preprocessor#16
2019-09-11 15:06:12 +02:00
Sébastien Villemot 8b0d5f4b86
Windows: ensure that libgomp is statically linked 2019-09-10 15:17:15 +02:00
Sébastien Villemot 35acc111ff
Windows package: fix random build failure due to race condition
The MEX files are built out-of-tree (because we want to do them in parallel).
This would create a potential race condition if several builds want to create
the symlinks under mex/matlab/ or mex/octave/.

The solution is to disable those symlinks for out-of-tree builds.
2019-09-04 11:39:52 +02:00
Sébastien Villemot bae1fa255a
Add scripts and CI job for building Windows package
The scripts are based the former “dynare-build” project. They have been
overhauled and simplified.

Building a Windows package (both installer and zip archive) is as easy as
running “make -C windows” (provided the right Debian packages are installed,
use the “windows/install-packages.sh” script for that purpose).

The layout of MEX files for Octave in the package has been
changed (mex/octave/win32/ and mex/octave/win64/ instead of mex/octave32/ and
mex/octave/), for consistency with MATLAB MEX.
2019-09-03 21:36:47 +02:00
Sébastien Villemot 9557061fa3
Add new num_procs MEX file for getting number of available processing units 2019-06-27 14:34:09 +02:00
Sébastien Villemot 7c39b12b7b
Always compile MEX files with OpenMP (when they can take advantage of it)
As a consequence, remove the --enable-openmp option of the configure script.
2019-06-25 17:26:17 +02:00
Sébastien Villemot 5b591fac42
New perfect_foresight_problem MEX file
It constructs the stacked residuals and jacobian of the perfect foresight
problem.

It is an almost perfect replacement for the perfect_foresight_problem.m
routine, while being much more efficient.

Note however that the DLL never return complex numbers (it instead puts NaNs at
the place where there would have been complex). This may create problems for
some MOD files; the algorithms will need to be adapted to use a more
line-search method.
2019-06-24 17:53:59 +02:00
Sébastien Villemot 4d17c8b10d
Dynare++: move multithreading abstraction to the "utils" module 2019-05-02 12:38:56 +02:00
Sébastien Villemot de159c0480
mjdgges DLL: convert to C++ (for consistency with other DLLs)
Various modernizations and simplifications.

Also remove a workaround for a LAPACK bug in DGGES (the VSL argument was
apparently referenced even though JOBVSL="N"). Hopefully the bug has been fixed
everywhere now.
2019-04-30 15:54:45 +02:00