2015-08-19 10:26:07 +01:00
|
|
|
TODO:
|
2015-08-19 05:49:00 +01:00
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
=> Clean up HMC
|
Binary IO file for generic Grid array parallel I/O.
Number of IO MPI tasks can be varied by selecting which
dimensions use parallel IO and which dimensions use Serial send to boss
I/O.
Thus can neck down from, say 1024 nodes = 4x4x8x8 to {1,8,32,64,128,256,1024} nodes
doing the I/O.
Interpolates nicely between ALL nodes write their data, a single boss per time-plane
in processor space [old UKQCD fortran code did this], and a single node doing all I/O.
Not sure I have the transfer sizes big enough and am not overly convinced fstream
is guaranteed to not give buffer inconsistencies unless I set streambuf size to zero.
Practically it has worked on 8 tasks, 2x1x2x2 writing /cloning NERSC configurations
on my MacOS + OpenMPI and Clang environment.
It is VERY easy to switch to pwrite at a later date, and also easy to send x-strips around from
each node in order to gather bigger chunks at the syscall level.
That would push us up to the circa 8x 18*4*8 == 4KB size write chunk, and by taking, say, x/y non
parallel we get to 16MB contiguous chunks written in multi 4KB transactions
per IOnode in 64^3 lattices for configuration I/O.
I suspect this is fine for system performance.
2015-08-26 13:40:29 +01:00
|
|
|
- Reunitarise
|
2015-08-20 17:19:48 +01:00
|
|
|
- Link smearing/boundary conds; Policy class based implementation
|
2015-08-21 10:06:33 +01:00
|
|
|
* Support different boundary conditions (finite temp, chem. potential ... )
|
|
|
|
* Support different fermion representations?
|
2015-08-20 17:19:48 +01:00
|
|
|
- Integrators
|
2015-08-18 10:43:32 +01:00
|
|
|
- Force Gradient
|
|
|
|
- Multi-timescale looks broken and operating on single timescale for now.
|
|
|
|
Fix/debug/rewrite this
|
2015-08-18 14:40:08 +01:00
|
|
|
- Sign of force term.
|
|
|
|
- Prefer "RefreshInternal" or such like to "init" in naming
|
|
|
|
- Rename "Ta" as too unclear
|
2015-08-18 10:43:32 +01:00
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
=> Lanczos
|
2015-08-01 14:06:07 +01:00
|
|
|
|
|
|
|
- Rectangle gauge actions.
|
|
|
|
Iwasaki,
|
|
|
|
Symanzik,
|
|
|
|
... etc...
|
|
|
|
|
|
|
|
- Prepare multigrid for HMC.
|
|
|
|
Alternate setup schemes.
|
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
* Parallel io improvements
|
|
|
|
- optional parallel MPI2 IO
|
|
|
|
- move Plaquette and link trace checks into nersc reader from the Grid_nersc_io.cc test.
|
|
|
|
* Support for ILDG
|
|
|
|
|
|
|
|
* Flavour matrices?
|
|
|
|
|
|
|
|
* FFTnD ?
|
2015-08-01 14:06:07 +01:00
|
|
|
|
2015-05-12 07:51:41 +01:00
|
|
|
================================================================
|
|
|
|
*** Hacks and bug fixes to clean up and Audits
|
|
|
|
================================================================
|
2015-05-11 09:44:50 +01:00
|
|
|
|
2015-06-14 01:00:46 +01:00
|
|
|
* Extract/merge/set cleanup ; too many variants; rationalise and call simpler ones
|
2015-08-18 10:43:32 +01:00
|
|
|
|
2015-06-14 01:00:46 +01:00
|
|
|
* Rewrite core tensor arithmetic support to be more systematic
|
2015-08-18 10:43:32 +01:00
|
|
|
= Use #define repetitive sequences to minimise code, decrease line count by thousands possible,
|
|
|
|
with more robust and maintainable implementation.
|
|
|
|
|
2015-06-14 01:00:46 +01:00
|
|
|
* Ensure we ET as much as possible; move unop functions into ET framework.
|
|
|
|
- tests with expression args to all functions
|
|
|
|
|
|
|
|
* FIXME audit
|
2015-08-18 10:43:32 +01:00
|
|
|
|
2015-05-12 07:51:41 +01:00
|
|
|
* const audit
|
2015-05-11 09:44:50 +01:00
|
|
|
|
2015-05-13 10:59:22 +01:00
|
|
|
Insert/Extract
|
2015-05-12 07:51:41 +01:00
|
|
|
* Replace vset with a call to merge.;
|
|
|
|
* care in Gmerge,Gextract over vset .
|
|
|
|
* extract / merge extra implementation removal
|
2015-05-13 10:59:22 +01:00
|
|
|
* Optimise the extract/merge SIMD routines; Azusa??
|
|
|
|
- I have collated into single location at least.
|
|
|
|
- Need to use _mm_*insert/extract routines.
|
2015-05-11 09:44:50 +01:00
|
|
|
|
2015-05-13 09:24:10 +01:00
|
|
|
* Thread scaling tests Xeon, XeonPhi
|
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
|
|
|
|
Not sure of status of this -- reverify. Things are working nicely now though.
|
|
|
|
|
2015-08-18 10:43:32 +01:00
|
|
|
* Make the Tensor types and Complex etc... play more nicely.
|
2015-04-26 15:51:09 +01:00
|
|
|
- TensorRemove is a hack, come up with a long term rationalised approach to Complex vs. Scalar<Scalar<Scalar<Complex > > >
|
2015-08-18 10:43:32 +01:00
|
|
|
QDP forces use of "toDouble" to get back to non tensor scalar. This role is presently taken TensorRemove, but I
|
|
|
|
want to introduce a syntax that does not require this.
|
2015-05-13 10:59:22 +01:00
|
|
|
|
2015-04-26 15:51:09 +01:00
|
|
|
- Reductions that contract indices on a site should always demote the tensor structure.
|
|
|
|
norm2(), innerProduct.
|
2015-05-13 10:59:22 +01:00
|
|
|
|
2015-04-26 15:51:09 +01:00
|
|
|
- Result of Sum(), SliceSum // spatial sums
|
|
|
|
trace, traceIndex etc.. do not.
|
2015-05-13 10:59:22 +01:00
|
|
|
|
2015-04-26 15:51:09 +01:00
|
|
|
- problem arises because "trace" returns Lattice<TComplex> moving everything down to Scalar,
|
|
|
|
and then Sum and SliceSum to not remove the Scalars. This would be fixed if we
|
|
|
|
template specialize the scalar scalar scalar sum and SliceSum, on the basis of being
|
|
|
|
pure scalar.
|
2015-04-19 14:55:16 +01:00
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
Done: Cayley, Partial , ContFrac force terms.
|
|
|
|
|
2015-08-21 10:06:33 +01:00
|
|
|
DONE
|
|
|
|
- PseudoFermions
|
|
|
|
=> generalise to non-const EE ; likely defer (??) (NOT DONE)
|
2015-08-20 17:19:48 +01:00
|
|
|
Done:
|
|
|
|
- TwoFlavour
|
|
|
|
- TwoFlavourEvenOdd
|
|
|
|
- TwoFlavourRatio
|
|
|
|
- TwoFlavourRatioEvenOdd
|
|
|
|
|
|
|
|
Done:
|
|
|
|
- OneFlavourRationalEvenOdd
|
|
|
|
- OneFlavourRationalRatioEvenOdd
|
|
|
|
- OneFlavourRationalRatio
|
|
|
|
|
|
|
|
Done
|
|
|
|
=> Test DWF HMC
|
|
|
|
- Fix a threading bug that has been introduced and prevents HMC running hybrid OMP mode
|
|
|
|
|
|
|
|
Done:
|
|
|
|
- RNG filling from sparser grid, lower dim grid.
|
|
|
|
|
|
|
|
|
|
|
|
DONE
|
|
|
|
- MacroMagic -> virtual reader class.
|
|
|
|
|
2015-05-13 10:59:22 +01:00
|
|
|
*** Expression template engine: -- DONE
|
2015-04-18 18:36:48 +01:00
|
|
|
|
2015-05-13 10:59:22 +01:00
|
|
|
[ -- Norm2(expression) problem: introduce norm2 unary op, or Introduce conversion automatic from expression to Lattice<vobj>
|
|
|
|
* Strong test for norm2, conj and all primitive types. -- tests/Grid_simd.cc is almost there
|
|
|
|
* Implement where within expression template scheme.
|
2015-04-25 13:04:26 +01:00
|
|
|
* Check for missing functionality - partially audited against QDP++ layout
|
2015-05-13 10:59:22 +01:00
|
|
|
|
2015-05-10 15:13:50 +01:00
|
|
|
// Unary functions
|
|
|
|
// cos,sin, tan, acos, asin, cosh, acosh, tanh, sinh, // Scalar<vReal> only arg
|
|
|
|
// exp, log, sqrt, fabs
|
|
|
|
// transposeColor, transposeSpin,
|
|
|
|
// adjColor, adjSpin,
|
|
|
|
// copyMask.
|
|
|
|
// localMaxAbs
|
2015-05-13 10:59:22 +01:00
|
|
|
// Fourier transform equivalent.]
|
|
|
|
|
|
|
|
|
|
|
|
* CovariantShift support -----Use a class to store gauge field? (parallel transport?)
|
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
-- coherent framework for implementing actions and their forces.
|
|
|
|
Actions
|
2015-05-13 09:24:10 +01:00
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
DONE
|
2015-05-12 07:51:41 +01:00
|
|
|
* Fermion
|
|
|
|
- Wilson
|
|
|
|
- Clover
|
|
|
|
- DomainWall
|
|
|
|
- Mobius
|
|
|
|
- z-Mobius
|
2015-05-13 00:31:00 +01:00
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
|
2015-05-13 09:24:10 +01:00
|
|
|
Algorithms (lots of reuse/port from BFM)
|
2015-04-25 13:04:26 +01:00
|
|
|
* LinearOperator
|
|
|
|
* LinearSolver
|
|
|
|
* Polynomial
|
|
|
|
* Eigen
|
2015-05-13 09:24:10 +01:00
|
|
|
* CG
|
2015-04-25 13:04:26 +01:00
|
|
|
* Pcg
|
2015-05-12 07:51:41 +01:00
|
|
|
* Adef2
|
|
|
|
* DeflCG
|
2015-04-25 13:04:26 +01:00
|
|
|
* fPcg
|
|
|
|
* MCR
|
2015-04-25 14:33:02 +01:00
|
|
|
* HDCG
|
2015-05-13 09:24:10 +01:00
|
|
|
* HMC,
|
|
|
|
* Heatbath
|
2015-05-13 10:59:22 +01:00
|
|
|
* Integrators, leapfrog, omelyan, force gradient etc...
|
2015-04-25 13:04:26 +01:00
|
|
|
* etc..
|
2015-04-18 18:36:48 +01:00
|
|
|
|
2015-08-20 17:19:48 +01:00
|
|
|
Done
|
2015-05-13 10:59:22 +01:00
|
|
|
* Pauli, SU subgroup, etc..
|
2015-08-18 10:43:32 +01:00
|
|
|
|
2015-05-13 10:59:22 +01:00
|
|
|
* su3 exponentiation & log etc.. [Jamie's code?]
|
2015-08-18 10:43:32 +01:00
|
|
|
|
2015-04-23 20:42:30 +01:00
|
|
|
======================================================================================================
|
2015-05-13 09:24:10 +01:00
|
|
|
FUNCTIONALITY: it pleases me to keep track of things I have done (keeps me arguably sane)
|
2015-05-12 07:51:41 +01:00
|
|
|
======================================================================================================
|
|
|
|
|
|
|
|
* Command line args for geometry, simd, etc. layout. Is it necessary to have -- DONE
|
|
|
|
user pass these? Is this a QCD specific?
|
2015-04-23 20:42:30 +01:00
|
|
|
|
2015-05-10 15:13:50 +01:00
|
|
|
* Stencil -- DONE
|
|
|
|
* Test infrastructure -- DONE
|
|
|
|
* Fourspin, two spin project --- DONE
|
2015-04-24 22:56:37 +01:00
|
|
|
* Dirac Gamma/Dirac structures ---- DONE
|
2015-04-23 20:42:30 +01:00
|
|
|
* Conditional execution, where etc... -----DONE, simple test
|
|
|
|
* Integer relational support -----DONE
|
|
|
|
* Coordinate information, integers etc... -----DONE
|
|
|
|
* Integer type padding/union to vector. -----DONE
|
|
|
|
* LatticeCoordinate[mu] -----DONE
|
|
|
|
* expose traceIndex, peekIndex, transposeIndex etc at the Lattice Level -- DONE
|
|
|
|
* TraceColor, TraceSpin. ----- DONE (traceIndex<1>,traceIndex<2>, transposeIndex<1>,transposeIndex<2>)
|
|
|
|
----- Implement mapping between traceColour and traceSpin and traceIndex<1/2>.
|
|
|
|
* How to do U[mu] ... lorentz part of type structure or not. more like chroma if not. -- DONE
|
|
|
|
|
2015-04-25 13:04:26 +01:00
|
|
|
* Twospin/Fourspin/Gamma/Proj/Recon ----- DONE
|
2015-05-12 07:51:41 +01:00
|
|
|
* norm2l is a hack. figure out syntax error and make this norm2 c.f. tests/Grid_gamma.cc -- DONE
|
2015-04-25 13:04:26 +01:00
|
|
|
|
2015-04-23 20:42:30 +01:00
|
|
|
* subdirs lib, tests ?? ----- DONE
|
|
|
|
- lib/math
|
|
|
|
- lib/cartesian
|
|
|
|
- lib/cshift
|
|
|
|
- lib/stencil
|
|
|
|
- lib/communicator
|
|
|
|
- lib/algorithms
|
|
|
|
- lib/qcd
|
|
|
|
- lib/io/ -- GridLog, GridIn, GridErr, GridDebug, GridMessage
|
|
|
|
- lib/qcd/actions
|
|
|
|
- lib/qcd/measurements
|
|
|
|
|
|
|
|
* Subset support, slice sums etc... -----DONE
|
|
|
|
sliceSum(orthog)
|
|
|
|
sum
|
|
|
|
innerProduct
|
|
|
|
norm2
|
|
|
|
|
|
|
|
* Subgrid Transferral -----DONE
|
|
|
|
subBlock (coarseLattice,fineLattice)
|
|
|
|
projectBlockBasis
|
|
|
|
promoteBlockBasis
|
|
|
|
|
|
|
|
* random number generation ----- DONE
|
|
|
|
|
|
|
|
* Broadcast, reduction tests. innerProduct, localInnerProduct --- DONE
|
|
|
|
|
|
|
|
* I/O support
|
|
|
|
* NERSC Lattice loading, plaquette test ------- DONE single node
|
|
|
|
|
|
|
|
* Controling std::cout ------- DONE
|
|
|
|
|
2015-05-12 07:51:41 +01:00
|
|
|
* Had to hack assignment to 1.0 in the tests/Grid_gamma test -- DONE
|
|
|
|
* Reduce implemention is poor ; need threaded reductions; OMP isn't able to do it for generic objects. -- DONE
|
|
|
|
* Bug in RNG with complex numbers ; only filling real values; need helper function -- DONE
|
|
|
|
* Conformable test in Cshift routines. -- none needed ; there is only one
|
|
|
|
* Conformable testing in expression templates -- DONE (recursive)
|
|
|
|
|
2015-05-13 09:24:10 +01:00
|
|
|
* Bug in SeedFixedIntegers gave same output on each site. -- DONE
|
|
|
|
Implement and use lattice IO to verify this. -- cout for lattice types DONE
|
2015-05-12 07:51:41 +01:00
|
|
|
|