Repository navigation
feat(saddle): opt-in partitioned rational function optimization (P-RFO) refinement after a dimer or climbing image band - #867
Merged
Conversation
…ction optimization [Saddle Search] gains prfo_refine, prfo_refine_force and prfo_refine_max_iterations. They are off by default, and a job without them takes the same path as before. After a dimer or Lanczos search ends with status good and a negative curvature, the saddle, its lowest mode and that curvature go to the rgsaddle Sella order-1 session. The session steps with partitioned rational function optimization (P-RFO) and the TS-BFGS update (a Broyden-Fletcher-Goldfarb-Shanno variant for transition states) until the max-atom force reaches prfo_refine_force. Only free atoms move, on an empty constraint chart, so a periodic cell or a slab with fixed atoms keeps every coordinate. The host caches the last evaluation on the session's own unwrapped vector, because Matter wraps positions into the cell. If the last point has a larger max-atom force than the start, the start is kept. After a refinement the min mode is estimated once more, so mode.dat and the eigenvalue test belong to the refined point. The refinement needs rgsaddle application binary interface (ABI) 1.15, which adds the mode seed. A client without it refuses the option. The keys go to the server allowlist, the configuration schema and the published JSON (JavaScript Object Notation) schema.
With [Saddle Search] prfo_refine on, a converged nudged elastic band (NEB) hands a copy of its climbing image to the partitioned rational function optimization (P-RFO) refinement. Its mode is the band tangent, and one forward difference of the forces gives its curvature. A band without a climbing image, or with a curvature that is not negative, logs a warning and skips the refinement. The band, neb.con and sp.con stay as the band left them. The refined saddle goes to sp_refined.con. results.dat gains force_calls_prfo_refine, prfo_refine_converged, prfo_refine_max_force and prfo_refine_energy, and total_force_calls counts the refinement.
…imer and band The LJ13 dimer and climbing image band converge at 0.01 eV/Angstrom and refine to 1e-5 eV/Angstrom. The refined saddles are checked for a smaller max-atom force, the same energy and a negative final eigenvalue. The band test also checks that neb.con matches the run without refinement and that the force calls add up. A third case checks that prfo_refine = false writes the same results.dat, saddle.con, mode.dat and neb.con as a configuration without the keys.
The saddle search page gains a section on refining a converged saddle with partitioned rational function optimization (P-RFO). It has a how-to for a dimer saddle, a reference list of the rules, and the measured force calls, forces and wall times with and without refinement. The measurements cover the pinned rgsaddle 0.2.2 and rgsaddle 0.3.2 with its proposed P-RFO eigensolve series. Both the dimer searches and the cost of each refinement step depend on the rgsaddle version. The reference names the eigensolver that dominates the time per step on a large band. It also explains the overflow notice that the rgsaddle eigensolvers can raise. The nudged elastic band (NEB) page describes the climbing image refinement, sp_refined.con and the new results.dat keys, and compares its cost with converging the band itself. The pages cite the eOn papers of Goswami and coworkers first, then Baker (1986) and Hermes, Sargsyan, Najm and Zador (2022). The newsfragment records the option and the measurements.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This adds opt-in partitioned rational function optimization (P-RFO) refinement of a converged saddle, through the rgsaddle Sella session.
It closes gap 5 of section 4 of the eOn audit.
[Saddle Search] prfo_refine,prfo_refine_forceandprfo_refine_max_iterationsare off by default.The session seeds that mode, steps with the transition-state Broyden-Fletcher-Goldfarb-Shanno (TS-BFGS) update, and stops at
prfo_refine_forcein max-atom force.It writes
sp_refined.con, adds fourresults.datkeys and leaves the band unchanged.If the refinement ends at a larger force, the starting saddle is kept.
The pin is unchanged.
Measurements
One run per configuration on one machine, one thread per run.
Each cell gives force calls, the max-atom force in eV/Å of the written saddle (evaluated again with a
pointjob) and the wall time."Tightened" converges the search itself to 1e-5 eV/Å.
The table gives the search, refined and tightened runs with rgsaddle 0.3.2 and the proposed rgsaddle P-RFO eigensolve series (7987cfb, eda59ac).
That series builds on main at 276a984 and is not in an rgsaddle release.
benchmarks/data/one_pt_saddle_searchbenchmarks/data/neb_morse_ptexamples/neb-alAt the pinned rgsaddle the dimer searches take more calls, 180 for the heptamer and 836 for LJ13.
Refinement there reaches the target on the three dimers.
Neither band refinement finished.
The 175-atom one was stopped unfinished after 8074 s of wall time.
A run capped at 3 steps takes 41 s on the 175-atom band and 1583 s on the 401-atom band.
With 7 and 13 free atoms, tightening the dimer is cheaper.
The time per step is set by the TS-BFGS update, which diagonalizes the whole Hessian model with a cyclic Jacobi solver in rgmin after every force call.
The eigensolve series does not change that path: plain 276a984 takes the same steps and calls, with 1295 s on the 175-atom band.
At the pin it comes from an rgmin Jacobi rotation parameter too large to square, and at 0.3.2 also from faer's norm, which overflows a discarded accumulator by design.
With the series library, outputs with the trap turned off are the same.
Default path
At defaults the develop and tip clients write identical
results.dat(apart from timing and build identity),saddle.con,mode.dat,neb.con,neb.datandsp.conon all five cases, at the pin and with the 0.3.2 series library.A unit test also checks that
prfo_refine = falsematches a configuration without the keys.Checks
meson test --suite eonwith the pinned rgsaddle: 76 passed, 0 failed, including the newtest_prfo_refine.The failure is the plain band case
NEB LJ matches SVN referenceintest_jobs, which develop fails the same way against rgsaddle 0.3.2, with or without the series.Docs
The saddle search page has a how-to, a reference list and the measurements at both rgsaddle versions, and the NEB page describes the climbing image refinement and its cost on bands.
They cite the eOn papers of Goswami and coworkers first, then Baker (1986) and Hermes, Sargsyan, Najm and Zádor (2022).
A newsfragment records the option.