Skip to content

Releases: stan-dev/math

v3.3.0 (28 July 2020)

28 Jul 09:37
Compare
Choose a tag to compare

Math 3.3.0 Release Notes

  • New functions is_nonnegative and is_positive_finite to parallel check_nonnegative and check_positive_finite. They signal failure by returning false instead of by throwing std::domain_error.(#1798)
  • Functions check_not_nan, check_nonnegative, check_positive, check_finite, check_positive_finite, is_not_nan, is_nonnegative, is_positive, is_scal_finite, and is_positive_finite now operate on nested containers.(#1798)
  • Clearer error messages when csr_u_to_z is called with out of range indices.(#1798)
  • check_positive now throws domain error when given an unsigned 0.(#1798)
  • Adds documentation for the OpenCL modules.(#1804)
  • OpenCL kernel for matrix-vector multiply is replaced with kernel generator.(#1816)
  • Added optional broadcasting to kernel generator.(#1817)
  • Adds additional testing for checking type traits of Eigen objects and modifies type traits for Eigen matrices so detecting an Eigen matrix will only be true if neither rows or columns are equal to 1(#1827)
  • Generalized functions with names starting with letters e-l to accept general Eigen expressions.(#1828)
  • Updates to Eigen 3.3.7(#1832)
  • extended Eigen scalar traits to complex autodiff types to enable complex autodiff matrix operations(#1838)
  • added eigenvalues(), eigenvectors(), pseudo_eigenvalues(), pseudo_eigenvectors(), and complex_schur_decompose() functions(#1838)
  • Added function for more efficient extraction of values and derivatives from Eigen containers of autodiff variables(#1841)
  • Generalized function with names starting with m to p to accept geenral Eigen expressions.(#1845)
  • Generalized functions with names starting with q and r.(#1847)
  • Generalized functions starting with s and t.(#1848)
  • Cleaned up the use of Boost headers.(#1851)
  • Fixed issue where doing nested gradients while there is an ongoing chain would cause segfaults.(#1856)
  • Added support for int add(int,int) and real add(real,real).(#1858)
  • Added OpenCL support for prim versions of add, col, inv, inv_cloglog, inv_logit, inv_sqrt, inv_square, row, dims, cols.(#1859)
  • Added argument checks to OpenCL version of block() and renamed is_valid_expression to is_valid_kernel_expression and require_all_valid_expressions* to require_all_valid_kernel_expressions*.(#1859)
  • Added floating point classification functions (isfinite, isnan, isinf) to kernel generator.(#1860)
  • Added diagonal operation to kernel generator.(#1862)
  • Adds holder operation to kernel generator.(#1865)
  • Added matrix concatenation oprations (append_row and append_col) to kernel generator.(#1867)
  • Add two functions for hmm models that (i) evaluate the marginal posterior probability of each latent state and (ii) sample latent states from their posterior distribution.(#1868)
  • Renamed elewise_multiplication/elewise_division to elt_multiply/elt_divide in the kernel generator and added OpenCL support to /prim functions crossprod, tcrossprod, fabs, log1m_inv_logit, logit, divide(#1869)
  • Updated cpplint to conform to pypi(#1871)
  • value_of and value_of_rec now can now return Eigen expressions.(#1872)
  • Reverse mode differentiation of stan::math::eigenvectors_sym and stan::math::eigenvalues_sym now returns symmetric matrix (previously lower triangular).(#1878)
  • Refactored Jenkins CI stages.(#1881)
  • Implements both branches of the Lambert W function.(#1882)
  • Added -Wno-int-in-bool-context and -Wno-attributes compiler flags to silence warnings due to compiler bugs.(#1885)
  • Fixed bug causing wrong log-probability values to be returned when using the lognormal distribution with an integer argument for sigma.(#1894)
  • Unified EXPECT_MATRIX_* and EXPECT_STD_VECTOR_* macros in the Math unit tests.(#1895)
  • Added Github Actions to CI.(#1898)
  • Generalized GLM functions so they accept arbitrary Eigen expressions.(#1899)
  • Added framework for vectorizing/broadcasting binary scalar functions, and utilities for testing the values and gradients of these(#1907)
  • Fixed a bug where the appropriate specialization for the beta function was not called for forward-mode autodiff variables(#1909)
  • Added holder operation for Eigen expressions. value_of, value_of_rec, as_column_vector_or_scalar and as_array_or_scalar now work with rvalue inputs.(#1914)
  • Generalized functions related to Bernoulli distribution to accept Eigen expressions.(#1916)
  • Vectorized binary functions extended to take complex variables as inputs(#1917)
  • Fixed a bug that resulted in wrong result when constructing matrix_cl from row-major matrix or expression.(#1919)
  • Generalized functions related to Bernoulli distribution to accept Eigen expressions.(#1925)
  • Add log-parametrized multinomial distribution.(#1927)
  • Replaced OpenCL kernels for bernoulli_logit_glm_lpmf and poisson_log_glm_lpmf with kernel generator implementations.(#1929)
  • Generalized functions related to beta distribution to accept general Eigen expressions.(#1930)
  • Fixed one sided checks in test_repeat_as_vector in distribution tests.(#1933)
  • Simplified using operands_and_partials by making broadcast_array sum the argument when assigned to.(#1934)
  • Extended check_matching_dims to handle arbitrary containers.(#1936)
  • Bugfix for require style templates(#1942)
  • Fix segfaults when compiling mix tests for pow on Windows with g++ 4.9.3(#1951)
  • Extends binary vectorisation framework to take combinations of real and int containers as inputs(#1966)
  • Fixed generated OpenCL kernels using colwise reductions to work on OpenCL implementations that require local variables to be declared at the top level of kernel function.(#1975)
  • Added variadic ODE interfaces (ode_bdf, ode_adams, ode_rk45 and ode_bdf_tol,ode_adams_tol,
    ode_rk45_tol) and deprecated the old interfaces (integrate_ode_rk45, integrate_ode_bdf, integrate_ode_adams). It is important to switch to the new interfaces because the deprecated interfaces are much slower (we've seen up to 30%) than they previously were (#1641)

v3.2.0 (22 April 2020)

22 Apr 16:18
Compare
Choose a tag to compare

Math 3.2.0 Release Notes

Feature summary:

  • Added new reduce_sum utility for parallelizing calculations over multiple cores of one computer
  • Sundials upgrade to version 5.2.0
  • Support for size 0 matrices [Ben: This needs checked by someone in release candidate, it might be just a Math-facing feature]
  • discrete_range_lpmf/lcdf/lccdf/rngs/etc. added for uniform discrete random variable
  • Added row vector, array and int_array construction utilities
  • Adds reverse function for vectors, row vectors, and std::vectors
  • Added release notes section to pull request to make assembling release notes easier (this must be filled out for new pulls)
  • Added apply operator (standin for C++17 apply)
  • Added support for complex numbers at all levels of the autodiff library

Bugfix summary:

  • Fixed problems with vectorizing neg_binomial_* functions that lead to wrong answers
  • Improved lbeta to be more numerically stable with one large and one small argument
  • Improved numerical stability with binomial_coefficient_log, neg_binomial_2_lpmf, and neg_binomial_2_log_lpmf computations
  • Fixed problem with wrong gradients for large arguments to log_sum_exp
  • Fixed bug where normal_id_glm did not work with a sigma is not an autodiff type
  • Fixed problem with makefiles on Windows
  • Fix ode gradients with respect to t0

There were also extensive work in various parts of the Math library adding docs, cleaning up distribution functions, adding tests, generalizing functions to work with special Eigen temporary types, working with new template functions (return_type_t, etc.), and otherwise making quality of life improvements.

Thanks to everyone who submitted and reviewed pull requests! The list of pull request submitters for this release are (in no particular order): @t4c1, @mcol, @martinmodrak, @rok-cesnovar, @serban-nicusor-toptal, @SteveBronder, @kedartal, @wds15, @bob-carpenter, @peterwicksstringfield, @andrjohns, @pgree, @IvanYashchuk, and @bbbales2.

Pull request details:

Contributor Title
t4c1 : (#1824) Add unary operations minus and logical negation to kernel generator
wds15 : (#1819) Feature/issue 1818 upgrade sundials 520
SteveBronder : (#1813) adds reduce_sum and tests
t4c1 : (#1802) Add extended kernel generator docs
t4c1 : (#1801) Add support for device functions to kernel generator
SteveBronder : (#1800) Adds auxilary functions needed for reduce_sum
t4c1 : (#1797) Add broadcasting to kernel generator
SteveBronder : (#1791) adds an apply function and cleans adj_jac_apply to use it
peterwicksstringfield : (#1780) Feature/elementwise check
bob-carpenter : (#1774) Feature/0123 complex funs
t4c1 : (#1769) Add transposition to kernel generator
t4c1 : (#1767) avoid redundant buffer allocations in kernel generator
t4c1 : (#1751) Allow kernel generator to calculate multiple outputs in single kernel
t4c1 : (#1740) Add colwise reductions to kernel generator
bob-carpenter : (#1736) Feature/1734 return scalar meta
andrjohns : (#1727) Eigen::Map and elementwise functions
t4c1 : (#1726) Bugfix common subexpression elimination in kernel generator
bob-carpenter : (#1720) Feature/0123 complex spec
mcol : (#1716) Add discrete_range_cdf, discrete_range_lcdf and discrete_range_lccdf
martinmodrak : (#1706) Using local_nested_autodiff for all instances of nested autodiff
mcol : (#1680) Add discrete_range_rng(lower, upper) and discrete_range_lpmf
wds15 : (#1675) avoid vari on chain-stack if var is constructed from an arithmetic type
martinmodrak : (#1657) Improved behavior of expect_near_rel
mcol : (#1650) Add reverse
mcol : (#1636) Add row vector, array and int_array construction utilities
t4c1 : (#1623) Add rowwise reductions to kernel generator
martinmodrak : (#1575) Additional tests for distributions
martinmodrak : (#1830) More stable implementation of neg_binomial_2_log_lpmf

Fixes

Contributor Title
mitzimorris : (#1842) Bugfix/1839 make shell linux
bob-carpenter : (#1837) return value type for complex abs; fixes #1836
bbbales2 : (#1834) Fix ode gradients with respect to t0 (Issue #1833)
rok-cesnovar : (#1825) Add licensing info to log_modified_bessel_first_kind
bbbales2 : (#1810) Added arithmetic version of pow (Fixes: #1809)
t4c1 : (#1807) fixed normal_id_glm for const sigma
rok-cesnovar : (#1795) Makefiles: Add $(strip) to findfiles function
SteveBronder : (#1794...
Read more

v3.1.1 (29 January 2020)

30 Jan 08:38
Compare
Choose a tag to compare

Bugfix to prevent functions from returning Eigen expressions.

v3.1.0 (24 January 2020)

24 Jan 16:56
Compare
Choose a tag to compare

Features

We upgraded the Boost library to version 1.72.0.

SteveBonder put in a ton of effort to refactor the math docs site and clean up the doxygen. Steve also added var specialization for matrix_cl. t4c1 generalized signatures of element-wise matrix functions which now accept and return expressions, added broadcasting to the GLM functions and extended that functionality to GPU GLM function. He also added the JIT compilation for dynamically generating OpenCL kernels that is now able to deal with matrices, scalars, unary and binary element-wise matrix operations and the block() function. This will enable much faster adoptation of GPU support for all remaining Stan Math function. Tadej also optimized the matrix_cl constructor for the case of constructing from rvalue and extened matrix_cl to accept Eigen::Map.
peterwicksstringfield added the specialized derivative for the for matrix/scalar and the matrix power function. wds15 added a change to the makefiles that enables easier building of custom .cpp files that use Stan Math. mcol added implementations of std_normal_cdf, std_normal_lcdf, std_normal_lccdf and std_normal_rng. rok-cesnovar simplified turning on threading in the makefiles.

Developer-aimed features

bob-carpenter extended the autodiff test framework for ternary functions and consolidated most of rev and fwd tests into mix. Bob also improved test coverage for all real-valued functions of two or fewer arguments. rok-cesnovar flattened the arr,scal and mat subfolders to simplify the codebase and renamed the length() and length_mvt() functions to size() and size_mvt(), cleaned up the unit test names and added a restriction to enforce unique test names in the Stan Math codebase.
mcol cleaned up the use of constants in the codebase and added missing documentation for template parameters. SteveBonder extended with require metaprogramming traits for is_container and is_string_convertible.

Fixes

PhilClemson improved numerical precision of normal lcdf. martinmodrak fixed some notable edge cases for neg_binomial_2 and neg_binomial_2_log. SteveBonder fixed a bug with the beta_binomial_lpmf function. rok-cesnovar fixed a bug in poisson_log_glm that caused the sampling statement fails to not fit and resolved include-what-you-use issues in the codebase.

mcol has cleaned up a lot of the codebase: simplifiying and optimizing the exp_mod_normal_*, VectorBuilder, pareto_type_2, poisson_log_lpmf, poisson_lpmf, beta binomial CDF/CCDF functions. Marco also did an amazing job fixing and cleaning the behaviour and adding testing for edge cases in:

  • corr_matrix_transform
  • determinant
  • hypergeometric_lpmf
  • inverse
  • inverse_spd
  • log_determinant
  • log_determinant_spd
  • log_sum_exp
  • matrix_exp_multiply
  • matrix_exp_pade
  • mdivide_left_ldlt
  • mdivide_right_ldlt
  • scale_matrix_exp_multiply
  • singular_values
  • trace_inv_quad_form_ldlt
  • trace_gen_inv_quad_form_ldlt
  • von_mises_lpdf
  • von_mises_rng

Last but not least he cleaned up the use of trailing underscores in our codebase, compiler warnings when building the Kinsol library, removed the use of some boost functions that are now available in C++11, cleaned up some uninitialized variable in tests, fixed the bug that cause overpromotion in muliply functions, cleaned up unnecessary checks in _lpmf/_lpdf functions, renamed dirichlet_lpmf to dirichlet_lpdf and stan::math::domain_error to throw_domain_error, removed uses of boost::promote_args and boost/math/tools/promotion.hpp, removed the unused functions stan::math::sub(), locscale_contrain and locscale_free.

martinmodrak fixed some notable edge cases for neg_binomial_2 and neg_binomial_2_log. wds15 fixed the static init order bug. bgoodri fixed a bug that issued a warning for catching without a constant reference. peterwicksstringfield cleaned up some potentialy misleading docs in negated require template metaprograms and other documentation and also cleaned up the use of ibeta and fixed the loop order in loops dealing with Eigen matrics.seantalts refactored integrate_1d to use std::ostream* instead of std::ostream&. mitzimorris cleaned up the doxygen config file of unneeded directives.

v3.0.0 (18 October 2019)

18 Oct 20:16
Compare
Choose a tag to compare

v3.0.0 (18 October 2019)

Features

PR #1180 brought the Intel TBB into Stan as a dependency, which we will be using in the future for CPU parallelism all across Stan! The TBB is an excellent framework that will let Stan utilize nested parallelism across the algorithms and gradient evaluations. The licensing for the Intel TBB library is under the Apache 2.0 license. This dependency implies an additional restriction as compared to the new BSD license alone. The Apache 2.0 license is incompatible with GPL-2 licensed code if the software if distributing the software as a unitary binary. Refer to the Apache 2.0 evaluation page on the Stan Math wiki.

With @t4c1's large contributions, we now have GPU/OpenCL support for many of our glm functions! @rok-cesnovar added an OpenCL reverse mode specialization for multiplication and mdivide_left_tri while @t4c1 added the OpenCL specialization for gp_exp_quad_cov.

Some other nice features include @andrjohns vectorizing the Dirichlet distribution, @IvanYashchuk implementing a reverse mode specialization for inverse, and @yizhang-yiz with @charlesm93 adding fixed point algebra solvers based on Sundial's KINSOL scheme.

Internally, @bob-carpenter added a new AD testing framework, which both replaced 18,539 of code with 2,500 and simultaneously increased our test coverage! @SteveBronder added a type traits metaprogramming scheme so that we can make use of more generic templating in a lot of our code. Last but not least, @andrjohns standardized a lot of our code to use standard library functions instead of our hand-rolled methods.

We are now using TBB for threading in map_rect. With performance tests on a non-trivial map_rect model we have observed speedups of up to 20% on Windows, 70% on Linux and 30% on MacOS. Speedups were observed for both Intel and AMD CPUs. On MacOS we observed 25-30% speedups even for single threaded models when using tbbmalloc.

Chart

Fixes

@wds15 patched the way we use lgamma so that it's faster in concurrent settings. A speedy patch came in from @t4c1 when @jgabry reported intercept only glm specializations with size zero matrices could give the wrong output. We had several patches and code cleanups in the OpenCL code, mostly testing and improving the type trait system around the OpenCL methods. @nhuurre patched log_sum_exp and log_diff_exp so that the methods respected boundary conditions a bit better. Stan also now uses clang-tidy, which gives us an automated way to keep the code base standardized.

Features List

Contributor Title
bob-carpenter : (#1384) Feature/1382 remove fvar nan checks
wds15 : (#1376) integrate Intel TBB
yizhang-yiz : (#1371) Feature fp solver
t4c1 : (#1366) Gpu ordered_logistic_glm_lpmf and categorical_logit_glm_lpmf
t4c1 : (#1365) Gpu neg_binomial_2_log_glm
andrjohns : (#1363) Issue 1362 - Vectorised Dirichlet distribution
rok-cesnovar : (#1355) Feature/issue 1354 Implement matrix_cl overloads for rep_vector, rep_row_vector and rep_matrix
rok-cesnovar : (#1353) Revert GPU caching
t4c1 : (#1350) Gpu poisson bernoulli glms
SteveBronder : (#1344) Adds require_* template type traits
charlesm93 : (#1339) Feature/issue 1115 newton solver
IvanYashchuk : (#1334) Implemented reverse mode for inverse
t4c1 : (#1333) Implement normal_id_glm_lpdf in OpenCL
rok-cesnovar : (#1329) Feature/Issue 1294 Rewrite the test-math-dependencies script in Python
SteveBronder : (#1323) Adds const ref and ref returns for to_var/fvar methods
andrjohns : (#1318) Issue 1010 - Replace hand-coded math with standard library c++11 functions
rok-cesnovar : (#1303) Feature/issue 1221 Use OpenCL in rev/mdivide_left_tri
andrjohns : (#1296) issue 1279 - Remove deprecated Eigen content from math headers
t4c1 : (#1293) OpenCL matrix multiplication optimizations
andrjohns : (#1283) Refactor rev/mat with eigen plugin methods
SteveBronder : (#1281) Add a double template to matrix_cl
bob-carpenter : (#1262) Feature/1258 ad test core
t4c1 : (#1252) Implement ordinal regression GLM (ordered_logistic_glm_lpmf)
t4c1 : (#1206) opencl prim gp_exp_quad_cov
rok-cesnovar : (#1305) Feature/issue 1221 Use OpenCL in rev/multiply
rok-cesnovar : (#1278) Feature/1221 OpenCL primitive multiply
t4c1 : (#1299) mdivide_right_tri can use OpenCL
wds15 : (#1180) Feature/intel tbb lib

Fixes

Contributor Title
wds15 : (#1401) Bugfix/tbb cleanup
t4c1 : (#1399) bugfix intercept only GLMs
wds15 : (#1395) allow spaces in path leading to stan-directory in makefiles
[SteveBronder...
Read more

v2.20.0 (18 July 2019)

18 Jul 21:25
Compare
Choose a tag to compare

v2.20.0 (18 July 2019)

New Features

  • OpenCL rectangular matrix multiply optimization (#1196)
  • Change name of opencl copy function (#1217)
  • Add better doc for all traits (#377)
  • Math repo runs tests on Windows (#951)

Bug Fixes

  • Length 0 checks should come after checking for mismatched sizes (#336)
  • abs(real) translates to C++ but fails to compile (#907)
  • prim/mat/meta/is_vector_like.hpp weirdness through check_finite.hpp (#79)
  • Clang 4.0.0 fails tests that should fail already (#561)

Other

  • Fix code style in stan/math/rev/mat/fun/multiply.hpp (#598)
  • Remove unnecessary using statements from vectorized functions (#426)
  • factor size zero tests into variadic function (#589)
  • Update cholesky_decompose to use inplace decomposition per Eigen 3.3 (#359)

v2.19.1 (18 Apr 2019)

18 Apr 18:31
Compare
Choose a tag to compare

v2.19.1 (18 Apr 2019)

This is a release out of cycle to address a performance bug in v.2.19 (stan-dev/stan#2748)

New Features

  • GLM Optimizations, especially for small number of attributes. ( #1185 )
  • Simplifies several prim/mat/fun functions using Eigen's vectorisation. (#1092)
    The following functions have been changed to use Eigen under the hood, usage remain the same:
    • add
    • add_diag
    • apply_scalar_unary
    • cholesky_corr_constrain
    • columns_dot_product
    • cumulative_sum
    • diag_post_multiply
    • diag_pre_multiply
    • divide_columns
    • elt_divide
    • elt_multiply
    • log_softmax
    • log_sum_exp
    • max
    • mean
    • min
    • prod
    • quad_form
    • quad_form_diag
    • quad_form_sym
    • rows_dot_product
    • softmax
    • subtract
    • variance
  • Adds two new opencl kernels for operations matrixvector and vectormatrix. (#1192)

Bug Fixes

  • Fixing Missing bounds checks in some lpdfs (#1101)

Other

  • Add option of having device functions shared across opencl kernels. (#1201)
  • New version of to_size_t to get rid of an assert (#1172)

v2.19.0 (20 Mar 2019)

20 Mar 10:07
Compare
Choose a tag to compare

v2.19.0 (20 Mar 2019)

Slow to arrive, but fast to compute: Stan has GPU support!

Stan 2.19 brings GPU-optimized computation to Stan users. The first supported
function is Cholesky decomposition, the main bottleneck of many common
statistical models. Activating GPU support is easy - only a few lines are added
to the configuration and no changes have to be made to the Stan model. Cholesky
decompositions of larger matrices (including their gradients, when dealing with
parameters) are then automatically transferred to the GPU with speedups ranging
from 10 to 30, depending on matrix size and GPU.

Other GPU-optimized matrix algebra primitives and common statistical models are
soon to follow: matrix multiplication, lower triangular inverse,
eigendecomposition, GP covariance functions and several GLMs. The implementation
is based on OpenCL, so it can be used with any GPU and GPU programming-savvy
users can also add their own custom OpenCL kernels.

New Features

  • GPU
    • matrix multiplication (#974)
    • inverse of lower triangular matrix (#1028)
    • Operator overloading for GPU functions (#1056)
    • Cholesky decomposition (#1058)
    • specialized reverse-mode implementation for cholesky decompse (#1117)
  • Host doxygen API doc on https://mc-stan.org/math/ (#500)
  • Makefile completely rewritten (#581, #954, #1041, #1043, #1087)
  • Adding beta_proportion distribution (#1018)
  • adjoint vector-Jacobian product form of precomputed gradients for reverse (#876)
  • Add alternative inv_logit parameterization to prevent underflow (#874)

Bug Fixes

  • Improved derivative for Gamma CDF w.r.t. alpha (#525)
  • value_of incorrectly returned the wrong type (#968)
  • sum incorrectly returned the wrong type (#987)
  • matrix_exp incorrectly passed the argument by values (#769)
  • Unit testing with Windows on Jenkins (#1046)
  • gp_cov_exp_quad was computing the ARD mixing up rows and cols (#984)
  • Fixing GoodGammaP for gcc 7.3 (#1063)

Other

  • Clarity on what's being tested in Math (one compiler per OS) (#943)
  • Updated GitHub templates (#911)
  • Improve ODE speed (#1049)
  • Fix tests for threading (#1058)
  • Upgrade Google Test to v1.8.1 (#1051)
  • Upgrade Sundials to v4.1.0 (#1097)
  • Matrix exponential action:
    • A fast implementation was implemented (#771), but it had errors (#)
    • Currently, a slow implementation is in the codebase.
  • Improve the codebase:
    • Code spacing (#587)
    • Using varidic template parameters for return_type, partials_return_type,
      and include_summands (#977)
    • Fixing math constants definitions for Windows (#986)
    • Avoid ambiguous instantiation of math::sqrt() by implementing for double
      and int (#712)
    • Clean up GPU code:
      • Seperate OpenCL kernel access into it's own class (#973)
      • read_only and write_only decorators in GPU kernels fail in Windows (#1034)
    • Fixing uninitialized values in tests:
      • bernoulli_logit_glm_lpdf test (#995)
      • check_greater test (#819)
      • gp_exponential_cov_test failing (#1150)
    • Updating template parameters of matern32 (#981)
    • Update gp_dot_prod_cov (#979)
    • Deprecating old GP covariance function names (#756)
    • Fixed compiler warnings in test-headers (#1110)
    • Adding required headers (#1106)
    • Turn test-math-dependencies warnings into failures on Jenkins (#1078)
    • Replace boost::type_traits with std:: versions (#1126)
    • Fix doxygen errors (#1139)za
    • Clean up anaonymous namespace usage (#1006)
    • Setting STAN_NUM_THREADS to illegal value should produce an error (#947)

v2.18.1 - Fixes major threading bug in 2.18.0!

24 Dec 19:31
Compare
Choose a tag to compare

v.2.18.1 (22 December 2018)

Bugfix release - fixes major bug in threading where certain thread count and
job size combinations could result in incorrect output. See
https://discourse.mc-stan.org/t/bug-in-map-rect-with-threading-in-stan-2-18-0/7056
for more details.

Bug Fixes

  • Fix threading batch size bug (#1075)

v2.18.0 **Contains threading bug with map_rect**

13 Jul 15:40
Compare
Choose a tag to compare

v.2.18.0 (13 July 2018)

This is our first release with parallelism (through C++11 threads or MPI)!

New Features

  • Support for MPI parallelization with map_rect
  • Support for threaded AD and a threaded map_rect implementation (#809)
  • New periodic covariance function (#921)
  • Integrated Boost's 1 dimensional integrator (#913)
  • Added thin QR decomposition (#900)
  • New add_diag function for adding a real or vector to the diagonal of a matrix (#871)
  • New log_inv_logit_diff function for the log of the difference of two inverse logits (#856)
  • New dot product kernel for GPs (#834)
  • Vectorized many more RNGs (#833, #722, #622)
  • Add matrix_exp_action to calculate exp(At)*B (#830)
  • log_mix vectorized (#751, #664)
  • New integrators from CVODES (integrate_ode_adams, _bdf) (#735)
  • New std_normal (#609)
  • New std_normal_log (#728)
  • New GLM primitive normal_id_glm (#665)
  • New chol2inv that computes a matrix's inverse from its Cholesky factor (#649)
  • New poisson_log_glm poisson regression with log link (#647)
  • New vectorized ordered_probit (#645)
  • New log_modified_bessel_first_kind that expands where Bessel 1 function can be used (#640)
  • New bernoulli logit GLM (#608)

Bug Fixes

  • Rising and falling factorial were not accepting negative arguments (#636)
  • Fix normalizing constant for LKJ distribution (#628)

Other

  • Tweaks to effective_sample_size for performance and upstream compatibility (#865)
  • Switch to sundials package combining CVODES and IDAS, updating versions (#779, #744)
  • Now publishing the Math doxygen (http://mc-stan.org/math/)
  • Faster dirichlet_lpdf accepting more vector types (#788)
  • Upgrade to Boost 1.66 (#766)
  • Improved derivatives for Gamma CDF (#780)
  • Sped up multi_normal_cholesky (#753)
  • More efficient mdivide_right_tri (#715)
  • More efficient integrate_ode_rk45_grad_test (#714)
  • Make algebraic solver easier to use (#703, #697)
  • Begin thinking about internal compatibility for complex numbers (#643)
  • Faster pow (#642)