mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-03 13:34:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			171 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
================================================================
 | 
						|
*** Hacks and bug fixes to clean up and Audits
 | 
						|
================================================================
 | 
						|
* Base class to share common code between vRealF, VComplexF etc... done
 | 
						|
  - Performance check on Guido's reimplementation strategy  - (GUIDO) tested and no difference was found, merged
 | 
						|
 | 
						|
* FIXME audit
 | 
						|
 | 
						|
* const audit
 | 
						|
 | 
						|
Insert/Extract
 | 
						|
* Replace vset with a call to merge.; 
 | 
						|
* care in Gmerge,Gextract over vset .
 | 
						|
* extract / merge extra implementation removal      
 | 
						|
* Optimise the extract/merge SIMD routines; Azusa??
 | 
						|
 - I have collated into single location at least.
 | 
						|
 - Need to use _mm_*insert/extract routines.
 | 
						|
 | 
						|
* Thread scaling tests Xeon, XeonPhi
 | 
						|
 | 
						|
** 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 > > >
 | 
						|
  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.
 | 
						|
 | 
						|
  - Reductions that contract indices on a site should always demote the tensor structure.
 | 
						|
    norm2(), innerProduct.
 | 
						|
 | 
						|
  - Result of Sum(), SliceSum // spatial sums
 | 
						|
              trace, traceIndex etc.. do not.
 | 
						|
 | 
						|
  - 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.
 | 
						|
 | 
						|
*** Expression template engine: -- DONE
 | 
						|
 | 
						|
[   -- 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.
 | 
						|
* Check for missing functionality                    - partially audited against QDP++ layout
 | 
						|
 | 
						|
   // 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
 | 
						|
   // Fourier transform equivalent.]
 | 
						|
 | 
						|
================================================================
 | 
						|
*** New Functionality
 | 
						|
================================================================
 | 
						|
 | 
						|
* - BinaryWriter, TextWriter etc...
 | 
						|
  - use protocol buffers? replace xmlReader/Writer ec..
 | 
						|
  - Binary use htonll, htonl
 | 
						|
 | 
						|
* CovariantShift support                             -----Use a class to store gauge field? (parallel transport?)
 | 
						|
 | 
						|
* Parallel io improvements
 | 
						|
  - optional parallel MPI2 IO
 | 
						|
  - move Plaquette and link trace checks into nersc reader from the Grid_nersc_io.cc test.
 | 
						|
 | 
						|
Actions -- coherent framework for implementing actions and their forces.
 | 
						|
 | 
						|
* Fermion
 | 
						|
  - Wilson
 | 
						|
  - Clover
 | 
						|
  - DomainWall
 | 
						|
  - Mobius
 | 
						|
  - z-Mobius
 | 
						|
 | 
						|
Algorithms (lots of reuse/port from BFM)
 | 
						|
* LinearOperator
 | 
						|
* LinearSolver
 | 
						|
* Polynomial 
 | 
						|
* Eigen
 | 
						|
* CG
 | 
						|
* Pcg
 | 
						|
* Adef2
 | 
						|
* DeflCG
 | 
						|
* fPcg
 | 
						|
* MCR
 | 
						|
* HDCG
 | 
						|
* HMC, 
 | 
						|
* Heatbath
 | 
						|
* Integrators, leapfrog, omelyan, force gradient etc...
 | 
						|
* etc..
 | 
						|
 | 
						|
* Gauge
 | 
						|
  - Wilson, symanzik, iwasaki
 | 
						|
 | 
						|
* rb4d support for 5th dimension in Mobius.
 | 
						|
 | 
						|
* Flavour matrices?
 | 
						|
* Pauli, SU subgroup, etc.. 
 | 
						|
* su3 exponentiation & log etc.. [Jamie's code?]
 | 
						|
* TaProj
 | 
						|
* FFTnD ?
 | 
						|
 | 
						|
 | 
						|
======================================================================================================
 | 
						|
FUNCTIONALITY: it pleases me to keep track of things I have done (keeps me arguably sane)
 | 
						|
======================================================================================================
 | 
						|
 | 
						|
* Command line args for geometry, simd, etc. layout. Is it necessary to have -- DONE
 | 
						|
  user pass these? Is this a QCD specific?
 | 
						|
 | 
						|
* Stencil -- DONE
 | 
						|
* Test infrastructure -- DONE
 | 
						|
* Fourspin, two spin project --- DONE
 | 
						|
* 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
 | 
						|
 | 
						|
* 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
 | 
						|
 | 
						|
* subdirs lib, tests ??                              ----- DONE
 | 
						|
  - lib/math        
 | 
						|
  - lib/cartesian
 | 
						|
  - lib/cshift
 | 
						|
  - lib/stencil
 | 
						|
  - lib/communicator
 | 
						|
  - lib/algorithms
 | 
						|
  - lib/qcd
 | 
						|
 future
 | 
						|
  - 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)
 | 
						|
 | 
						|
* Bug in SeedFixedIntegers gave same output on each site. -- DONE
 | 
						|
  Implement and use lattice IO to verify this.            -- cout for lattice types DONE
 | 
						|
 |