1
0
mirror of https://github.com/paboyle/Grid.git synced 2024-11-15 02:05:37 +00:00
Grid/TODO

313 lines
11 KiB
Plaintext
Raw Normal View History

TODO:
---------------
2017-06-20 18:46:01 +01:00
Large item work list:
2017-06-21 14:02:58 +01:00
2017-06-23 23:10:24 +01:00
1)- BG/Q port and check ; Andrew says ok.
2017-06-21 09:22:20 +01:00
2)- Christoph's local basis expansion Lanczos
2017-06-23 09:42:21 +01:00
--
3a)- RNG I/O in ILDG/SciDAC (minor)
3b)- Precision conversion and sort out localConvert <-- partial/easy
3c)- Consistent linear solver flop count/rate -- PARTIAL, time but no flop/s yet
4)- Physical propagator interface
5)- Conserved currents
6)- Multigrid Wilson and DWF, compare to other Multigrid implementations
7)- HDCR resume
2017-04-18 11:22:17 +01:00
Recent DONE
2017-06-23 09:42:21 +01:00
-- MultiRHS with spread out extra dim -- Go through filesystem with SciDAC I/O ; <-- DONE ; bmark cori
2017-06-21 09:22:20 +01:00
-- Lanczos Remove DenseVector, DenseMatrix; Use Eigen instead. <-- DONE
2017-06-20 18:46:01 +01:00
-- GaugeFix into central location <-- DONE
-- Scidac and Ildg metadata handling <-- DONE
-- Binary I/O MPI2 IO <-- DONE
2017-05-25 13:41:26 +01:00
-- Binary I/O speed up & x-strips <-- DONE
2017-04-24 17:06:15 +01:00
-- Cut down the exterior overhead <-- DONE
-- Interior legs from SHM comms <-- DONE
-- Half-precision comms <-- DONE
2017-06-20 18:46:01 +01:00
-- Merge high precision reduction into develop <-- DONE
-- BlockCG, BCGrQ <-- DONE
-- multiRHS DWF; benchmark on Cori/BNL for comms elimination <-- DONE
2017-04-18 11:22:17 +01:00
-- slice* linalg routines for multiRHS, BlockCG
-----
* Forces; the UdSdU term in gauge force term is half of what I think it should
be. This is a consequence of taking ONLY the first term in:
dSg/dt = dU/dt dSdU + dUdag/dt dSdUdag
in the fermion force.
Now, S_mom = - tr Pmu Pmu ; Pmu anti-herm
.
d Smom/dt = - 2.0 tr Pmu Pmu = - dSg/dt = - tr Pmu [Umu dSdUmu + UmuDag dSdUmuDag]
.
=> Pmu = Umu dSdUmu
Where the norm is half expected.
This means we must double the force in the Test_xxx_force routines, and is the origin of the factor of two.
This 2x is applied by hand in the fermion routines and in the Test_rect_force routine.
2015-08-30 12:23:08 +01:00
* Support different boundary conditions (finite temp, chem. potential ... )
2015-12-10 23:34:03 +00:00
2015-09-08 17:45:30 +01:00
- Sign of force term.
- Reversibility test.
2015-08-18 10:43:32 +01:00
2015-09-08 17:45:30 +01:00
- Rename "Ta" as too unclear
- Lanczos
- Audit oIndex usage for cb behaviour
2015-09-08 17:45:30 +01:00
- Prepare multigrid for HMC. - Alternate setup schemes.
- Support for ILDG --- ugly, not done
- Flavour matrices?
- FFTnD ?
2015-12-10 23:34:03 +00:00
- Gparity; hand opt use template specialisation elegance to enable the optimised paths ?
2015-12-10 23:34:03 +00:00
- Gparity force term; Gparity (R)HMC.
2015-12-10 23:34:03 +00:00
- Mobius implementation clean up to rmove #if 0 stale code sequences
2015-12-10 23:34:03 +00:00
- CG -- profile carefully, kernel fusion, whole CG performance measurements.
================================================================
* 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
* const audit
2015-05-11 09:44:50 +01:00
2015-05-13 10:59:22 +01:00
Insert/Extract
* 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.
- 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
- Reductions that contract indices on a site should always demote the tensor structure.
norm2(), innerProduct.
2015-05-13 10:59:22 +01:00
- Result of Sum(), SliceSum // spatial sums
trace, traceIndex etc.. do not.
2015-05-13 10:59:22 +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-12-10 23:34:03 +00:00
RECENT
---------------
- Support different fermion representations? -- DONE
- contained entirely within the integrator presently
2015-12-10 23:34:03 +00:00
- Clean up HMC -- DONE
- LorentzScalar<GaugeField> gets Gauge link type (cleaner). -- DONE
- Simplified the integrators a bit. -- DONE
- Multi-timescale looks broken and operating on single timescale for now. -- DONE
- pass GaugeField as template param. -- DONE
- Reunitarise -- DONE
- Force Gradient -- DONE
- Prefer "RefreshInternal" or such like to "init" in naming -- DONE
- Parallel io improvements -- DONE
- Plaquette and link trace checks into nersc reader from the Grid_nersc_io.cc test. -- DONE
DONE:
- MultiArray -- MultiRHS done
- ConjugateGradientMultiShift -- DONE
- MCR -- DONE
- Remez -- Mike or Boost? -- DONE
- Proto (ET) -- DONE
- uBlas -- DONE ; Eigen
- Potentially Useful Boost libraries -- DONE ; Eigen
- Aligned allocator; memory pool -- DONE
- Multiprecision -- DONE
- Serialization -- DONE
- Regex -- Not needed
- Tokenize -- Why?
- Random number state save restore -- DONE
- Rectangle gauge actions. -- DONE
Iwasaki,
Symanzik,
... etc...
2015-08-20 17:19:48 +01:00
Done: Cayley, Partial , ContFrac force terms.
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
* Fermion
- Wilson
- Clover
- DomainWall
- Mobius
- z-Mobius
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
* Adef2
* DeflCG
2015-04-25 13:04:26 +01:00
* fPcg
* MCR
* 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-05-13 09:24:10 +01:00
FUNCTIONALITY: it pleases me to keep track of things I have done (keeps me arguably sane)
======================================================================================================
* Link smearing/boundary conds; Policy class based implementation ; framework more in place -- DONE
* Command line args for geometry, simd, etc. layout. Is it necessary to have -- DONE
user pass these? Is this a QCD specific?
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
* 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
* 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
* 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
* 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