Skip to content

Conversation

@sirmarcel
Copy link

@sirmarcel sirmarcel commented Oct 8, 2025

This avoids doing unnecessary work if a full neighborlist is requested -- we don't have to filter for half first, then restore.

With the attached benchmark script (run.py), on my MacBook (M3 Max), with the first number the timing for _compute_single_neighbor_list, and the second for a plain call to vesin:

before

125 atoms 2.089986652135849µs/atom 0.7555699907243252µs/atom 1000 atoms 1.611151669640094µs/atom 0.9999045799486339µs/atom 3375 atoms 1.7297576533423529µs/atom 1.0932425926956866µs/atom 

after

125 atoms 1.4709333702921867µs/atom 0.7579967193305492µs/atom 1000 atoms 1.1619366705417633µs/atom 1.0076149995438755µs/atom 3375 atoms 1.233055185250662µs/atom 1.1272704918627385µs/atom 

This is an about 30% improvement in execution time.

Contributor (creator of pull-request) checklist

  • Tests updated (for new features and bugfixes)?
  • Documentation updated (for new features)?
  • Issue referenced (for PRs that solve an issue?

Maintainer/Reviewer checklist

  • CHANGELOG updated with public API or any other important changes?
  • GPU tests passed (maintainer comment: "cscs-ci run")?
@sirmarcel
Copy link
Author

I don't understand why the GAP test is failing.

@frostedoyster
Copy link
Collaborator

@sirmarcel it's likely that, since GAP is the only architecture using half NLs, the half NL code is somewhat wrong

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

3 participants