Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: don't materialize any Hessian estimate #1353

Merged
merged 2 commits into from May 1, 2023
Merged

Conversation

samestep
Copy link
Collaborator

@samestep samestep commented Apr 29, 2023

Description

We use L-BFGS instead of BFGS, so we shouldn't be materializing any $n \times n$ matrices in the optimizer. Previously we were doing so in one place, due to a naive interpretation of a diagonal matrix in the algorithm. This PR gets rid of the diagonal matrix by inlining its one usage. I also added a comment clarifying the source for some of the other reference comments.

Checklist

  • I have commented my code, particularly in hard-to-understand areas
  • I have reviewed any generated registry diagram changes

@cloudflare-pages
Copy link

cloudflare-pages bot commented Apr 29, 2023

Deploying with  Cloudflare Pages  Cloudflare Pages

Latest commit: c61e38c
Status: ✅  Deploy successful!
Preview URL: https://83dbf308.penrose-72l.pages.dev
Branch Preview URL: https://no-dense-hessian.penrose-72l.pages.dev

View logs

@github-actions
Copy link

github-actions bot commented Apr 29, 2023

± Registry diff

📊 Performance

Key

Note that each bar component rounds up to the nearest 100ms, so each full bar is an overestimate by up to 400ms.

     0s   1s   2s   3s   4s   5s   6s   7s   8s   9s
     |    |    |    |    |    |    |    |    |    |
name ▝▀▀▀▀▀▀▀▀▀▀▀▚▄▄▄▄▄▄▄▄▄▞▀▀▀▀▀▀▀▀▀▀▀▀▚▄▄▄▄▄▄▄▄▄▖
      compilation labelling optimization rendering

Data

                                                                  0s   1s   2s   3s   4s   5s   6s   7s
                                                                  |    |    |    |    |    |    |    |
3d-projection-fake-3d-linear-algebra                              ▝▞▖
acquaintanceship-graph-simple-graph                               ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▚
allShapes-allShapes                                               ▝▚▚▄▄▄
arrowheads-arrowheads                                             ▝▞▖
caffeine-structural-formula                                       ▝▀▀▚▚
call-directed-graph-directed-multigraph                           ▝▀▀▀▀▀▀▞▀▖
call-undirected-graph-pseudograph                                 ▝▀▀▀▀▚▀▖
center-shrink-circle-animation                                    ▝▞▖
circle-example-euclidean                                          ▝▀▚▚
closest-point-test-closest-point                                  ▝▀▀▀▀▀▀▀▞▖
collinear-euclidean                                               ▝▀▞▖
communications-network-one-way-links-graph-simple-directed-graph  ▝▀▀▀▀▀▚▀▖
complete-bipartite-graphs-simple-graph                            ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▞▀▀▖
complete-graphs-simple-graph                                      ▝▀▀▀▀▀▀▀▀▀▀▀▞▀▖
computer-network-diagnostic-links-graph-pseudograph               ▝▀▀▀▀▚▚
computer-network-graph-simple-graph                               ▝▀▀▀▚▚
computer-network-multiple-links-graph-pseudograph                 ▝▀▀▀▀▚▀▖
computer-network-multiple-one-way-links-graph-directed-multigraph ▝▀▀▀▀▀▀▀▞▀▖
congruent-triangles-euclidean                                     ▝▀▀▚▚
continuousmap-continuousmap                                       ▝▞▖
cube-graphs-simple-graph                                          ▝▀▀▀▀▀▀▀▀▀▀▀▞▀▚
cubic-bezier-cubic-bezier                                         ▝▀▚▀▚
cycle-graphs-simple-graph                                         ▝▀▀▀▀▀▀▚▀▚
glutamine-molecules-basic                                         ▝▀▚▚
half-adder-distinctive-shape                                      ▝▀▞▖
hybrid-topology-graph-simple-graph                                ▝▀▀▞▖
hypercube-network-graph-simple-graph                              ▝▀▀▀▀▚▚
hypergraph-hypergraph                                             ▝▀▀▀▚▀▀▀▀▀▀▚
incenter-triangle-euclidean                                       ▝▀▚▚
influence-graph-simple-directed-graph                             ▝▀▀▞▖
jobs-trained-matching-graph-simple-graph                          ▝▀▀▀▚▀▖
jobs-trained-no-matching-graph-simple-graph                       ▝▀▀▀▚▀▖
lagrange-bases-lagrange-bases                                     ▝▚▚
linear-array-graph-simple-graph                                   ▝▀▚▚
lines-around-rect-rect-line-dist                                  ▝▚▚
matrix-matrix-addition-matrix-ops                                 ▝▚▚
matrix-matrix-division-elementwise-matrix-ops                     ▝▚▚
matrix-matrix-multiplication-elementwise-matrix-ops               ▝▚▚
matrix-matrix-multiplication-matrix-ops                           ▝▚▚
matrix-matrix-subtraction-matrix-ops                              ▝▚▚
matrix-transpose-matrix-ops                                       ▝▚▚
matrix-vector-left-multiplication-matrix-ops                      ▝▚▚
matrix-vector-right-multiplication-matrix-ops                     ▝▚▚
mesh-network-graph-simple-graph                                   ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▖
midsegment-triangles-euclidean                                    ▝▀▚▚
mobius-mobius                                                     ▝▞▖
module-dependency-graph-simple-directed-graph                     ▝▀▀▀▚▚
niche-overlap-graph-simple-graph                                  ▝▀▀▀▀▀▚▚
nitricacid-lewis                                                  ▝▀▀▞▀▖
non-convex-non-convex                                             ▝▀▞▖
one-water-molecule-atoms-and-bonds                                ▝▞▖
parallel-lines-euclidean                                          ▝▀▞▖
persistent-homology-persistent-homology                           ▝▀▀▀▞▀▀▀▀▀▀▄
points-around-line-shape-distance                                 ▝▀▚▚
points-around-polyline-shape-distance                             ▝▀▀▚▚
points-around-star-shape-distance                                 ▝▀▀▀▚▚
precedence-graph-simple-directed-graph                            ▝▀▀▀▞▖
protein-interaction-graph-simple-graph                            ▝▀▀▀▀▀▀▀▞▀▀▖
quaternion-group-group-theory-cayley-graph                        ▝▀▚▚
quaternion-group-group-theory-multiplication-table                ▝▀▀▀▚▄▚▖
ring-topology-graph-simple-graph                                  ▝▀▚▚
round-robin-graph-simple-directed-graph                           ▝▀▀▀▀▚▚
scalar-vector-division-matrix-ops                                 ▝▚▚
scalar-vector-left-multiplication-matrix-ops                      ▝▚▚
scalar-vector-right-multiplication-matrix-ops                     ▝▚▚
siggraph-teaser-euclidean-teaser                                  ▝▀▚▚
star-topology-graph-simple-graph                                  ▝▀▚▚
tree-tree                                                         ▝▀▞▖
tree-venn                                                         ▝▀▚▚
tree-venn-3d                                                      ▝▀▞▄▄
two-triangles-triangle-mesh-3d                                    ▝▚▚
two-vectors-perp-vectors-dashed                                   ▝▚▚
union-graph-simple-graph                                          ▝▀▀▚▚
vector-vector-addition-matrix-ops                                 ▝▚▚
vector-vector-division-elementwise-matrix-ops                     ▝▚▚
vector-vector-multiplication-elementwise-matrix-ops               ▝▚▚
vector-vector-outerproduct-matrix-ops                             ▝▚▚
vector-vector-subtraction-matrix-ops                              ▝▚▚
vector-wedge-exterior-algebra                                     ▝▞▖
wet-floor-atoms-and-bonds                                         ▝▀▞▚
wheel-graphs-simple-graph                                         ▝▀▀▀▀▀▀▀▀▀▀▞▀▖
word-cloud-example-word-cloud                                     ▝▀▞▖
wos-laplace-estimator-walk-on-spheres                             ▝▀▚▚
wos-nested-estimator-walk-on-spheres                              ▝▀▀▞▚
wos-offcenter-estimator-walk-on-spheres                           ▝▀▚▀▖
wos-poisson-estimator-walk-on-spheres                             ▝▀▚▀▖

@codecov
Copy link

codecov bot commented Apr 29, 2023

Codecov Report

Merging #1353 (c61e38c) into main (499cd21) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1353   +/-   ##
=======================================
  Coverage   62.14%   62.14%           
=======================================
  Files          67       67           
  Lines        8557     8557           
  Branches     2050     2050           
=======================================
  Hits         5318     5318           
  Misses       3101     3101           
  Partials      138      138           

@samestep samestep changed the title refactor: don't materialize any Hessian estimate perf: don't materialize any Hessian estimate Apr 30, 2023
@samestep samestep merged commit 2678139 into main May 1, 2023
10 checks passed
@samestep samestep deleted the no-dense-hessian branch May 1, 2023 14:41
@samestep samestep mentioned this pull request Oct 27, 2023
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant