The first three indices (of a lattice, _dipoles, etc.) now refer to the unit cell. The fourth index specifies the site within the cell.
SU(N) integrators now use StaticArrays when N < 6.
Various other minor optimizations.
@mswwilson Could you try running something that uses WangLandau.jl and ReplicaExchangeMC.jl? I don't think they are tested in the test suite. Note that I changed the name of the SpinSystem in the samplers from system to sys for consistency with the integrators. I updated those to files to account for this, but they should be tested. It would also be good to make sure the new indexing didn't mess anything up with your code.
The re-indexing and addition of @inbounds seems to lead to a general improvement of about 10% in many situations. For SU(N) integration tasks, the use of StaticArrays for N < 6 gives an additional ~2X. The regular dipole energy calculation is maybe 33% faster, but the performance of the FFT accelerated version is unchanged.
PR contains the following changes:
_dipoles
, etc.) now refer to the unit cell. The fourth index specifies the site within the cell.@mswwilson Could you try running something that uses
WangLandau.jl
andReplicaExchangeMC.jl
? I don't think they are tested in the test suite. Note that I changed the name of theSpinSystem
in the samplers fromsystem
tosys
for consistency with the integrators. I updated those to files to account for this, but they should be tested. It would also be good to make sure the new indexing didn't mess anything up with your code.The re-indexing and addition of
@inbounds
seems to lead to a general improvement of about 10% in many situations. For SU(N) integration tasks, the use of StaticArrays for N < 6 gives an additional ~2X. The regular dipole energy calculation is maybe 33% faster, but the performance of the FFT accelerated version is unchanged.