Closed SteveBronder closed 2 months ago
Name | Old Result | New Result | Ratio | Performance change( 1 - new / old ) |
---|---|---|---|---|
arma/arma.stan | 0.2 | 0.19 | 1.04 | 4.02% faster |
low_dim_corr_gauss/low_dim_corr_gauss.stan | 0.01 | 0.01 | 1.06 | 5.52% faster |
gp_regr/gen_gp_data.stan | 0.02 | 0.02 | 0.99 | -0.7% slower |
gp_regr/gp_regr.stan | 0.12 | 0.11 | 1.17 | 14.5% faster |
sir/sir.stan | 77.59 | 76.34 | 1.02 | 1.62% faster |
irt_2pl/irt_2pl.stan | 3.84 | 3.91 | 0.98 | -1.62% slower |
eight_schools/eight_schools.stan | 0.05 | 0.05 | 1.03 | 2.56% faster |
pkpd/sim_one_comp_mm_elim_abs.stan | 0.25 | 0.25 | 1.0 | -0.23% slower |
pkpd/one_comp_mm_elim_abs.stan | 17.84 | 18.19 | 0.98 | -1.94% slower |
garch/garch.stan | 0.44 | 0.46 | 0.94 | -5.9% slower |
low_dim_gauss_mix/low_dim_gauss_mix.stan | 2.77 | 2.84 | 0.97 | -2.72% slower |
arK/arK.stan | 1.64 | 1.66 | 0.99 | -0.74% slower |
gp_pois_regr/gp_pois_regr.stan | 2.56 | 2.58 | 0.99 | -1.01% slower |
low_dim_gauss_mix_collapse/low_dim_gauss_mix_collapse.stan | 9.0 | 9.42 | 0.95 | -4.73% slower |
performance.compilation | 174.02 | 177.04 | 0.98 | -1.74% slower |
Mean result: 1.0070968703366234
Jenkins Console Log Blue Ocean Commit hash: ffae22a76851e3b49ca43f31234eeada692f1d9b
Name | Old Result | New Result | Ratio | Performance change( 1 - new / old ) |
---|---|---|---|---|
arma/arma.stan | 0.24 | 0.19 | 1.25 | 20.24% faster |
low_dim_corr_gauss/low_dim_corr_gauss.stan | 0.01 | 0.01 | 1.09 | 8.31% faster |
gp_regr/gen_gp_data.stan | 0.02 | 0.02 | 1.1 | 8.78% faster |
gp_regr/gp_regr.stan | 0.11 | 0.1 | 1.06 | 5.55% faster |
sir/sir.stan | 77.81 | 75.65 | 1.03 | 2.77% faster |
irt_2pl/irt_2pl.stan | 3.79 | 3.98 | 0.95 | -5.04% slower |
eight_schools/eight_schools.stan | 0.05 | 0.05 | 1.03 | 3.29% faster |
pkpd/sim_one_comp_mm_elim_abs.stan | 0.24 | 0.25 | 0.98 | -2.48% slower |
pkpd/one_comp_mm_elim_abs.stan | 17.96 | 18.33 | 0.98 | -2.09% slower |
garch/garch.stan | 0.44 | 0.48 | 0.92 | -9.22% slower |
low_dim_gauss_mix/low_dim_gauss_mix.stan | 2.78 | 2.85 | 0.98 | -2.51% slower |
arK/arK.stan | 1.62 | 1.68 | 0.96 | -3.89% slower |
gp_pois_regr/gp_pois_regr.stan | 2.48 | 2.54 | 0.98 | -2.44% slower |
low_dim_gauss_mix_collapse/low_dim_gauss_mix_collapse.stan | 9.06 | 9.3 | 0.97 | -2.72% slower |
performance.compilation | 173.05 | 176.36 | 0.98 | -1.91% slower |
Mean result: 1.0169277909864227
Jenkins Console Log Blue Ocean Commit hash: d8ac1c67d08c8b579e1b20ed5747abacce87c6fc
Summary
Fixes https://github.com/stan-dev/rstanarm/issues/620 and cleans up
csr_matrix_times_vector
.The
csr_matrix_times_vector
function was erroring when linking. @WardBrian and I suspect the issue has something to do with the length of the mangled names of either the vtable elements or the windows debugger in mingw. Either way, this PR cuts down on the number of elements that need to be passed to the lamda in the reverse pass callback ofcsr_matrix_times_vector
which seems to remove the error. The full list of changes are below.csr_matrix_times_vector
, we now always cast to a SoA Sparse Matrix before setting up the reverse pass callback.to_soa_sparse_matrix
for taking objects that are used to represent a sparse matrices CSR format and returning avar_value<SparseMatrix>
.var_value<SparseMatrix/Matrix>
that accepts two arena matrices for pre allocated values and adjoints. This is used into_soa_sparse_matrix
so thatw
's values and adjoints are only shallow copied into thevar_value<SparseMatrix>
value_of()
function for getting the values of aSparseMatrix<var>
promote_scalar_type
for sparse matrix typesvari_value<SparseMatrix>(arena_matrix)
constructor. If an arena matrix was passed in previously it would be shallow copied to the values and adjoints which would share the value pointer between the two. Now the outer index pointer and inner index pointer are shared between the two, but each has their own pointer for the values.Tests
Tests were added for the new
to_soa_matrix function
. Tests for the changed functions can be run withRelease notes
Fixes linker issue with
csr_matrix_times_vector
Checklist
[x] Copyright holder: Steve Bronder
The copyright holder is typically you or your assignee, such as a university or company. By submitting this pull request, the copyright holder is agreeing to the license the submitted work under the following licenses:
[x] the basic tests are passing
./runTests.py test/unit
)make test-headers
)make test-math-dependencies
)make doxygen
)make cpplint
)[x] the code is written in idiomatic C++ and changes are documented in the doxygen
[x] the new changes are tested