Closed ffreyer closed 1 year ago
JLD2.load
seems to be about 30% faster than loading things on demand for a 4MB file.
Maybe I should add serialize
to BinningAnalysis
The last two commits are performance tweaks for measurements/EachLocalQuadByDistance. For a 4x4 lattice with 4 sites per unit cell the sweep timing stayed consistent at ~0.013s. During measurements the timings with every measurement are:
This leaves the time per iteration of the lattice iterator for pairing susceptibilities at around 7ns if I'm not mistaken. Explicitly optimizing loop order for a given kernel can still give better performance here, but I'm not sure if that's worth it.
Main Goals of this pr are now:
featuredata parity with LatticePhysics (maybe allowing direct conversion back and forth?)enum,symbolsor stringsfor type stability and startup performancehopping_directions maybenot worth optimizingdirections(iter, lattice)
should maybe existFourier transform for measurementsexpensive during simulation, moved elsewhere post simulationAnd since the lattice changes will most likely be breaking I'll get some other breaking stuff done.
General changes/TODO:
EachLocalQuadByDistance
a bitpotentially fix error consistency vs ED(still ~$2\Delta\tau^2$), maybe use jackknife)Use StableRNGs for tests (or use random seeds where applicable)This doesn't really work for us because most of our random's happen inside the libraryRandom.seed!
in tests (remove DQMC checks vs hardcoded values, allow larger errors, don't check random confs)JLD2.load()
at the start instead of loading data piece by pieceremovedoesn't need to happen hereflv
andmodel
from kernel functions. Sincemc
is passed this information is available and usually doesn't do much but bloat the call signaturenearest_neighbor_count
andhopping_directions
directions