Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

ABACUS_version_history.md 7.7KB

Previous versions

Development of ABACUS was started by J.-S. Caux around 2004 and has known an embarrassingly large number of versions.

Here under are some notes on major versions and overhauls of the codebase.

ABACUS++G_8

[started 2015 02 20] [published 2015 04 04]

Building up on ++G_7.

Objectives:

  • facilitate use of OpenMP, by removing the recursive aspect of descending. DONE.

  • improve memory use. DONE. Replace in-memory Scan_Thread_Set by on-disk Scan_Thread_Data. Uses Scan_Thread structure.

Features:

  • OpenMP is implemented.
  • Scanning on spin chains is now implemented.
  • Scan_Info’s Nfull now contains the sub-Hilbert space dimension (for spin chains; type == double)
  • Added the .stat file in General_Scan, containing info about expected data value and actually obtained one
  • Timing is more strictly enforced, using OpenMP wtime().

Notes:

  • a first implementation using OpenMP is archived as ABACUS++G_8_v1.tar.gz package.

ABACUS++G_7

[published 2015 01 17]

Building up on ++G_6.

  • Now using 15 types of descendents, enabling fixed iK scanning with increasing ph nrs.
  • Scan_Thread_List replaced by Scan_Thread_Set (to optimize performance and threads storage)

Works well for LiebLin, including at finite T.

TODO:

  • implement scanning for spin chains (scanning over bases still missing for generic AveragingState)

ABACUS++G_6

[started 2015 01]

Simple scanning: iK stepped up, iK stepped down (from ++G_5). Fixed momentum scanning is thus implemented.

Version 6.0: [published 2015 01 16]
  • uses 8 types of descendents
  • Works well for LiebLin, including finite T.
Version 6.1: proto version of ++G_7
  • uses greater nr of descendents, 15, enforcing strict ph nr increase

ABACUS++G_5

[started 2014 12 11] [abandoned 2015 01, except for version 5.0 (great for GS of LiebLin)]

Fundamental rewriting of scanning protocol.

Version 5.0 works very well for ground state correlations of Lieb-Liniger. Heis: still bugged.

ABACUS++G_4

[started 2014 12 08] [abandoned 2014 12 11]

Nontrivial bug: descending with inner and outer skeletons does not always preserve number of p-h excitations. Fatal for large c in LiebLin.

  • Descending with type 2: instead of summing over all new p and h positions, just put p and h as close to each other as possible. To implement this, added a new type of desc (4), where this distance is increased.

TODO:

  • For XXX: inclusion of infinite rapidities as genuine particle type

ABACUS++G_3

[started 2014 11 10] [closed 2014 12 08]

  • Change of naming convention: LiebLin instead of Bose or 1DBG.
  • For LiebLin: changed rapidity naming convention: now lambdaoc, to make rescaling lambda/c explicit
  • Improved small c algorithm for LiebLin
  • Fixed momentum scanning implemented using inner and outer skeleton logic

ABACUS++G_2

[closed 2014 11 10] [2013 09 20]

  • Scanning is now automatically over remaining pair of excitations; facilitates fixed iK scans
  • Threads are now over states with NScan-2 particles, intermediate states then include all Nscan states fulfilling the momentum constraints
  • Scanning for spin chains implemented (general states; also parallel). Needs further testing. Seems to work for ground state.

ABACUS++G_1.1

[2013 09 06]

Changed parallel version for Bose:

  • supercycle time is now an argument to functions
  • split the Prepare, Run and Wrapup into separate executables
  • added the filenamesuffix argument to parallel functions

ABACUS++G_1

New labelling and descending implemented for arbitrary states with strings, e.g. spin chains.

Descendents for an arbitrary state are now generated according to the following logic.

TO DO: Include string deviation value in Bethe_State objects and in RAW files. Form factors are always computed.

[2013 08 25] Changed sum rules for LiebLin density-density: now using f-sumrule from iKmin to iKmax.

Earlier notes for ABACUS++T

Notable changes from ABACUS++:

  • The state labelling is now done with a single string label, detailing the base, nr of particle-hole excitations (as compared to a reference scan state) and Ix2 changes. The number of particle-hole excitations is therefore not limited anymore, and (for LiebLin) there is no upper momentum limit. See the src/State_Label.cc file for the implementation details.

  • The state scanning procedure (i.e. the descendents logic) is now implemented solely at the level of the quantum numbers, following a recursive logic in which excitations are created at the right, then left Fermi boundary and allowed to propagate deeper outside/inside as the tree is climbed.

  • Since the labelling and descending are now completely general, dynamical correlations not only on ground states but also on arbitrary excited states can be computed efficiently. This thus allows to deal with finite temperature correlations.

Important conventions:

  • Versions are numbered with two integers, [VERSION].[SUBVERSION]
  • Changes in subversion number indicate internal revisions which do not change any of the external conventions, data file structures, etc. Data produced with version V.S can be polished with version V.S’ with S’ != S.
  • Changes in version number indicate a larger scale revision affecting the conventions. Data produced with earlier versions are then deprecated.

ABACUS++T_9

[in development][abandoned]

Scanning over ensembles.

ABACUS++T_8.0

Changed labels slightly, to avoid identifying empty string with integer 0. All labels with at least one excitation are now strictly nonempty.

ABACUS++T_7.0

[published 1 Dec 2011]

Optimization of runtime memory use and of output files sizes.

Labels: introduction of compressed labels (used in raw and thr files). Removed conv boolean from raw file (all states in this file have converged). Threads: removed omega and iK (changed General_Scan accordingly), use compressed labels.

Scanning function: it’s now possible to give a default file name when invoking General_Scan (and thus Scan_Bose, etc). This is done to avoid stupidly long file names when calculating correlators over AveragingStates which are far from the ground state.

ABACUS++T_6.0

[published 21 Nov 2011]

The scanning is now also done over the hole positions. Upon the creation of a particle-hole, only hole positions at the edges of blocks of contiguous Ix2 in OriginState are used. The holes are then scanned moving towards the center of the blocks.

There are now thus 3 types of scanning: 0: over holes 1: over particles 2: adding a p-h pair

ABACUS++T_5.0

[published 4 Nov 2011]

Introduced two types of threads, separating scanning over fixed particle-hole numbers and adding a p-h.

ABACUS++T_4.0 [published 1 Nov 2011]

Modification to the labeling logic: states are now always labeled using the AveragingState’s quantum numbers, even if their bases are different. The form of the State_Label is thus changed.

ABACUS++T_3.0

[published 1 Nov 2011]

New, simpler logic for descendents: the hole positions are scanned immediately upon creation of a new particle-hole pair; the hole positions are then kept fixed in subsequent descending.

Problems:

  • when scanning for a function such as the one-body function for Lieb-Liniger, the extra particle in the AveragingState is not scanned to. Version 4 will address this problem.

ABACUS++T_2.0

[in progress][abandoned]

Attempt at implementing fixed-momentum-based scanning.

ABACUS++T_1.0

[published 23 June 2011]

First version of new setup and logic for ABACUS. Implementation of all basic new ideas for state labelling and descending.

Earlier versions

Earlier version of ABACUS are not documented here. The whole history is available in J.-S. Caux’s private backfiles.