Commit messages

April 17, 2014

jpritikin committed r3359 in OpenMx at 11:43:
Remove unused argument from omxResizeMatrix

March 24, 2014

jpritikin committed r3205 in OpenMx at 15:52:
Eliminate a few more memory leaks

March 22, 2014

jpritikin committed r3200 in OpenMx at 18:48:
mxFitFunctionAlgebra derivatives
in /trunk:

March 13, 2014

jpritikin committed r3141 in OpenMx at 16:32:
Re-architect fitfunction derivatives API using Eigen

Why do we need another matrix algebra library? We already have two, that
is, omxMatrix (original) and Matrix (from CSOLNP). For IFA models with
many items, it is essential to perform a sparse matrix-vector product
(Hessian %*% gradient) in Newton-Raphson. I initially wrote bespoke code
for sparse matrix-vector product. This was working well. However, it
came to my attention that inverting the Hessian can also benefit from
sparse matrix algebra. Rather than re-invent the wheel, Eigen looks like
a promising implementation.

Additional changes:

+ Internal derivatives are no longer reported back to R. You need to use
mxComputeReportDeriv to request them. Report derivs by default seemed
like a bad idea if they are so big that we are using a sparse
representation.

+ MxComputeNumericDeriv got a verbose parameter to enable debugging at
runtime.

+ ifa-drm-wide.R is moved to the failing directory temporarily. This
commit does not optimize manipulation of the Hessian but uses a simple
dense representation. dsytrf/dsytri are used to invert the Hessian. This
doesn't scale, but the improved accuracy results in many fewer
Newton-Raphson iterations highlighting the poor accuracy of the replaced
code.

+ Eigen has a great debug mode that NaN initializes memory and does
bounds checking. With these tools to assist debugging, I decided to
never store the lower triangle of a Hessian.
in /trunk:

March 12, 2014

jpritikin committed r3138 in OpenMx at 10:46:
Enable R_NO_REMAP for a cleaner namespace
in /trunk:

March 9, 2014

jpritikin committed r3132 in OpenMx at 15:54:
Remove non-reproducable pointer addresses from logs

For those of us who would like to use diff to examine changes in log
output.

March 7, 2014

jpritikin committed r3124 in OpenMx at 15:02:
Fix various bugs in free.set variable groups
in /trunk:

January 2, 2014

jpritikin committed r3039 in OpenMx at 15:19:
Consolidate reporting of the fit

December 31, 2013

mhunter committed r3035 in OpenMx at 17:38:
Update copyright.
in /trunk:

August 17, 2013

jpritikin committed r2851 in OpenMx at 00:13:
Allow ComputeIterate to test maximum absolute change

+ The adjustStart flag is gone. There is no longer a reason to request
adjustStart=FALSE. It might do something else besides adjust starting
values so the name isn't accurate either.

+ mxComputeOnce no longer has a fit=TRUE default action. By default it
does nothing.

+ Not evaluating the fit helps estimate IFA models. The performance is
about the same. The main advantage is that some bulky caching can be
turned off with no penalty. Here is page fault data for ifa-cai2009.R.
Ignore the difference in runtime because the EM cycle tolerance was not
equated between runs.

With cache:

55.60user 0.07system 0:08.41elapsed 661%CPU (0avgtext+0avgdata 83788maxresident)k
0inputs+0outputs (0major+72249minor)pagefaults 0swaps

Without cache:

60.64user 0.10system 0:09.01elapsed 673%CPU (0avgtext+0avgdata 71276maxresident)k
0inputs+0outputs (0major+61669minor)pagefaults 0swaps
in /trunk:
Syndicate content