mirror of
https://github.com/paboyle/Grid.git
synced 2024-11-10 07:55:35 +00:00
Committing incomplete work for parameter file I/O.
MacroMagic.h is central. Guido and I plan to move over to generating virtual (XML, JSON, YAML, text, binary) encoding from macro based system.
This commit is contained in:
parent
019f7a802e
commit
4cc2ef84d3
@ -1,6 +1,13 @@
|
|||||||
#ifndef GRID_ALIGNED_ALLOCATOR_H
|
#ifndef GRID_ALIGNED_ALLOCATOR_H
|
||||||
#define GRID_ALIGNED_ALLOCATOR_H
|
#define GRID_ALIGNED_ALLOCATOR_H
|
||||||
|
|
||||||
|
#ifdef HAVE_MALLOC_MALLOC_H
|
||||||
|
#include <malloc/malloc.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_MALLOC_H
|
||||||
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
#ifdef HAVE_MM_MALLOC_H
|
#ifdef HAVE_MM_MALLOC_H
|
||||||
#include <mm_malloc.h>
|
#include <mm_malloc.h>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* lib/GridConfig.h.in. Generated from configure.ac by autoheader. */
|
/* lib/Config.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* AVX Intrinsics */
|
/* AVX Intrinsics */
|
||||||
#undef AVX1
|
#undef AVX1
|
89
lib/Grid.h
89
lib/Grid.h
@ -6,95 +6,48 @@
|
|||||||
// Copyright (c) 2014 University of Edinburgh. All rights reserved.
|
// Copyright (c) 2014 University of Edinburgh. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
#ifndef GRID_H
|
#ifndef GRID_H
|
||||||
#define GRID_H
|
#define GRID_H
|
||||||
|
|
||||||
|
///////////////////
|
||||||
|
// Std C++ dependencies
|
||||||
|
///////////////////
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include <complex>
|
#include <complex>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/time.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <ctime>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
#ifndef MAX
|
///////////////////
|
||||||
#define MAX(x,y) ((x)>(y)?(x):(y))
|
// Grid headers
|
||||||
#define MIN(x,y) ((x)>(y)?(y):(x))
|
///////////////////
|
||||||
#endif
|
#include <MacroMagic.h>
|
||||||
|
#include <Config.h>
|
||||||
#define strong_inline __attribute__((always_inline)) inline
|
#include <Timer.h>
|
||||||
|
#include <Log.h>
|
||||||
#include <GridConfig.h>
|
|
||||||
|
|
||||||
#include <GridTime.h>
|
|
||||||
#include <GridLog.h>
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
// Tunable header includes
|
|
||||||
////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#ifdef HAVE_MALLOC_MALLOC_H
|
|
||||||
#include <malloc/malloc.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_MALLOC_H
|
|
||||||
#include <malloc.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <AlignedAllocator.h>
|
#include <AlignedAllocator.h>
|
||||||
|
|
||||||
#include <Simd.h>
|
#include <Simd.h>
|
||||||
#include <Threads.h>
|
#include <Threads.h>
|
||||||
|
#include <Communicator.h>
|
||||||
#include <Communicator.h> // subdir aggregate
|
#include <Cartesian.h>
|
||||||
#include <Cartesian.h> // subdir aggregate
|
#include <Tensors.h>
|
||||||
#include <Tensors.h> // subdir aggregate
|
#include <Lattice.h>
|
||||||
#include <Lattice.h> // subdir aggregate
|
#include <Cshift.h>
|
||||||
#include <Cshift.h> // subdir aggregate
|
#include <Stencil.h>
|
||||||
#include <Stencil.h> // subdir aggregate
|
#include <Algorithms.h>
|
||||||
#include <Algorithms.h>// subdir aggregate
|
|
||||||
|
|
||||||
#include <qcd/QCD.h>
|
#include <qcd/QCD.h>
|
||||||
#include <parallelIO/NerscIO.h>
|
#include <parallelIO/NerscIO.h>
|
||||||
|
|
||||||
namespace Grid {
|
#include <Init.h>
|
||||||
|
|
||||||
void Grid_init(int *argc,char ***argv);
|
|
||||||
void Grid_finalize(void);
|
|
||||||
// internal, controled with --handle
|
|
||||||
void Grid_sa_signal_handler(int sig,siginfo_t *si,void * ptr);
|
|
||||||
void Grid_debug_handler_init(void);
|
|
||||||
void Grid_quiesce_nodes(void);
|
|
||||||
void Grid_unquiesce_nodes(void);
|
|
||||||
|
|
||||||
// C++11 time facilities better?
|
|
||||||
double usecond(void);
|
|
||||||
|
|
||||||
const std::vector<int> GridDefaultSimd(int dims,int nsimd);
|
|
||||||
const std::vector<int> &GridDefaultLatt(void);
|
|
||||||
const std::vector<int> &GridDefaultMpi(void);
|
|
||||||
const int &GridThreads(void) ;
|
|
||||||
void GridSetThreads(int t) ;
|
|
||||||
|
|
||||||
// Common parsing chores
|
|
||||||
std::string GridCmdOptionPayload(char ** begin, char ** end, const std::string & option);
|
|
||||||
bool GridCmdOptionExists(char** begin, char** end, const std::string& option);
|
|
||||||
std::string GridCmdVectorIntToString(const std::vector<int> & vec);
|
|
||||||
|
|
||||||
void GridParseLayout(char **argv,int argc,
|
|
||||||
std::vector<int> &latt,
|
|
||||||
std::vector<int> &simd,
|
|
||||||
std::vector<int> &mpi);
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
32
lib/Init.h
Normal file
32
lib/Init.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#ifndef GRID_INIT_H
|
||||||
|
#define GRID_INIT_H
|
||||||
|
|
||||||
|
namespace Grid {
|
||||||
|
|
||||||
|
void Grid_init(int *argc,char ***argv);
|
||||||
|
void Grid_finalize(void);
|
||||||
|
// internal, controled with --handle
|
||||||
|
void Grid_sa_signal_handler(int sig,siginfo_t *si,void * ptr);
|
||||||
|
void Grid_debug_handler_init(void);
|
||||||
|
void Grid_quiesce_nodes(void);
|
||||||
|
void Grid_unquiesce_nodes(void);
|
||||||
|
|
||||||
|
const std::vector<int> GridDefaultSimd(int dims,int nsimd);
|
||||||
|
const std::vector<int> &GridDefaultLatt(void);
|
||||||
|
const std::vector<int> &GridDefaultMpi(void);
|
||||||
|
const int &GridThreads(void) ;
|
||||||
|
void GridSetThreads(int t) ;
|
||||||
|
|
||||||
|
// Common parsing chores
|
||||||
|
std::string GridCmdOptionPayload(char ** begin, char ** end, const std::string & option);
|
||||||
|
bool GridCmdOptionExists(char** begin, char** end, const std::string& option);
|
||||||
|
std::string GridCmdVectorIntToString(const std::vector<int> & vec);
|
||||||
|
|
||||||
|
void GridParseLayout(char **argv,int argc,
|
||||||
|
std::vector<int> &latt,
|
||||||
|
std::vector<int> &simd,
|
||||||
|
std::vector<int> &mpi);
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif
|
@ -40,7 +40,7 @@ void Grid_quiesce_nodes(void)
|
|||||||
int me;
|
int me;
|
||||||
MPI_Comm_rank(MPI_COMM_WORLD,&me);
|
MPI_Comm_rank(MPI_COMM_WORLD,&me);
|
||||||
if ( me ) {
|
if ( me ) {
|
||||||
std::cout<<GridLogMessage.setstate(std::ios::badbit);
|
std::cout.setstate(std::ios::badbit);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ void Grid_quiesce_nodes(void)
|
|||||||
void Grid_unquiesce_nodes(void)
|
void Grid_unquiesce_nodes(void)
|
||||||
{
|
{
|
||||||
#ifdef GRID_COMMS_MPI
|
#ifdef GRID_COMMS_MPI
|
||||||
std::cout<<GridLogMessage.clear();
|
std::cout.clear();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
78
lib/MacroMagic.h
Normal file
78
lib/MacroMagic.h
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
#ifndef GRID_MACRO_MAGIC_H
|
||||||
|
#define GRID_MACRO_MAGIC_H
|
||||||
|
|
||||||
|
#define strong_inline __attribute__((always_inline)) inline
|
||||||
|
|
||||||
|
#ifndef MAX
|
||||||
|
#define MAX(x,y) ((x)>(y)?(x):(y))
|
||||||
|
#define MIN(x,y) ((x)>(y)?(y):(x))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define GRID_MACRO_FIRST(a, ...) a
|
||||||
|
#define GRID_MACRO_SECOND(a, b, ...) b
|
||||||
|
|
||||||
|
#define GRID_MACRO_EMPTY()
|
||||||
|
|
||||||
|
#define GRID_MACRO_EVAL(...) GRID_MACRO_EVAL1024(__VA_ARGS__)
|
||||||
|
#define GRID_MACRO_EVAL1024(...) GRID_MACRO_EVAL512(GRID_MACRO_EVAL512(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL512(...) GRID_MACRO_EVAL256(GRID_MACRO_EVAL256(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL256(...) GRID_MACRO_EVAL128(GRID_MACRO_EVAL128(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL128(...) GRID_MACRO_EVAL64(GRID_MACRO_EVAL64(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL64(...) GRID_MACRO_EVAL32(GRID_MACRO_EVAL32(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL32(...) GRID_MACRO_EVAL16(GRID_MACRO_EVAL16(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL16(...) GRID_MACRO_EVAL8(GRID_MACRO_EVAL8(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL8(...) GRID_MACRO_EVAL4(GRID_MACRO_EVAL4(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL4(...) GRID_MACRO_EVAL2(GRID_MACRO_EVAL2(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL2(...) GRID_MACRO_EVAL1(GRID_MACRO_EVAL1(__VA_ARGS__))
|
||||||
|
#define GRID_MACRO_EVAL1(...) __VA_ARGS__
|
||||||
|
|
||||||
|
#define GRID_MACRO_DEFER1(m) m GRID_MACRO_EMPTY()
|
||||||
|
#define GRID_MACRO_DEFER2(m) m GRID_MACRO_EMPTY GRID_MACRO_EMPTY()()
|
||||||
|
#define GRID_MACRO_DEFER3(m) m GRID_MACRO_EMPTY GRID_MACRO_EMPTY GRID_MACRO_EMPTY()()()
|
||||||
|
#define GRID_MACRO_DEFER4(m) m GRID_MACRO_EMPTY GRID_MACRO_EMPTY GRID_MACRO_EMPTY GRID_MACRO_EMPTY()()()()
|
||||||
|
|
||||||
|
#define GRID_MACRO_IS_PROBE(...) GRID_MACRO_SECOND(__VA_ARGS__, 0)
|
||||||
|
#define GRID_MACRO_PROBE() ~, 1
|
||||||
|
|
||||||
|
#define GRID_MACRO_CAT(a,b) a ## b
|
||||||
|
|
||||||
|
#define GRID_MACRO_NOT(x) GRID_MACRO_IS_PROBE(GRID_MACRO_CAT(_GRID_MACRO_NOT_, x))
|
||||||
|
#define _GRID_MACRO_NOT_0 GRID_MACRO_PROBE()
|
||||||
|
|
||||||
|
#define GRID_MACRO_BOOL(x) GRID_MACRO_NOT(GRID_MACRO_NOT(x))
|
||||||
|
|
||||||
|
#define GRID_MACRO_IF_ELSE(condition) _GRID_MACRO_IF_ELSE(GRID_MACRO_BOOL(condition))
|
||||||
|
#define _GRID_MACRO_IF_ELSE(condition) GRID_MACRO_CAT(_GRID_MACRO_IF_, condition)
|
||||||
|
|
||||||
|
#define _GRID_MACRO_IF_1(...) __VA_ARGS__ _GRID_MACRO_IF_1_ELSE
|
||||||
|
#define _GRID_MACRO_IF_0(...) _GRID_MACRO_IF_0_ELSE
|
||||||
|
|
||||||
|
#define _GRID_MACRO_IF_1_ELSE(...)
|
||||||
|
#define _GRID_MACRO_IF_0_ELSE(...) __VA_ARGS__
|
||||||
|
|
||||||
|
#define GRID_MACRO_HAS_ARGS(...) GRID_MACRO_BOOL(GRID_MACRO_FIRST(_GRID_MACRO_END_OF_ARGUMENTS_ __VA_ARGS__)())
|
||||||
|
#define _GRID_MACRO_END_OF_ARGUMENTS_() 0
|
||||||
|
|
||||||
|
#define GRID_MACRO_MAP(m, first, second, ...) \
|
||||||
|
m(first,second) \
|
||||||
|
GRID_MACRO_IF_ELSE(GRID_MACRO_HAS_ARGS(__VA_ARGS__))( \
|
||||||
|
GRID_MACRO_DEFER4(_GRID_MACRO_MAP)()(m, __VA_ARGS__) \
|
||||||
|
)( \
|
||||||
|
/* Do nothing, just terminate */ \
|
||||||
|
)
|
||||||
|
#define _GRID_MACRO_MAP() GRID_MACRO_MAP
|
||||||
|
|
||||||
|
#define GRID_MACRO_MEMBER(A,B) A B;
|
||||||
|
|
||||||
|
#define GRID_MACRO_OS_WRITE_MEMBER(A,B) os<< #A <<" "#B <<" = "<< obj. B <<" ; " <<std::endl;
|
||||||
|
|
||||||
|
#define GRID_DECL_CLASS_MEMBERS(cname,...) \
|
||||||
|
GRID_MACRO_EVAL(GRID_MACRO_MAP(GRID_MACRO_MEMBER,__VA_ARGS__)) \
|
||||||
|
friend std::ostream & operator << (std::ostream &os, const cname &obj ) { \
|
||||||
|
os<<"class "<<#cname<<" {"<<std::endl;\
|
||||||
|
GRID_MACRO_EVAL(GRID_MACRO_MAP(GRID_MACRO_OS_WRITE_MEMBER,__VA_ARGS__)) \
|
||||||
|
os<<"}"; \
|
||||||
|
return os;\
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
HFILES=./algorithms/approx/bigfloat.h ./algorithms/approx/bigfloat_double.h ./algorithms/approx/Chebyshev.h ./algorithms/approx/MultiShiftFunction.h ./algorithms/approx/Remez.h ./algorithms/approx/Zolotarev.h ./algorithms/CoarsenedMatrix.h ./algorithms/iterative/AdefGeneric.h ./algorithms/iterative/BfmHDCG.h ./algorithms/iterative/ConjugateGradient.h ./algorithms/iterative/ConjugateGradientMultiShift.h ./algorithms/iterative/ConjugateResidual.h ./algorithms/iterative/GeneralisedMinimumResidual.h ./algorithms/iterative/gmres.h ./algorithms/iterative/NormalEquations.h ./algorithms/iterative/PrecConjugateResidual.h ./algorithms/iterative/PrecGeneralisedConjugateResidual.h ./algorithms/iterative/SchurRedBlack.h ./algorithms/LinearOperator.h ./algorithms/Preconditioner.h ./algorithms/SparseMatrix.h ./Algorithms.h ./AlignedAllocator.h ./cartesian/Cartesian_base.h ./cartesian/Cartesian_full.h ./cartesian/Cartesian_red_black.h ./Cartesian.h ./communicator/Communicator_base.h ./Communicator.h ./cshift/Cshift_common.h ./cshift/Cshift_mpi.h ./cshift/Cshift_none.h ./Cshift.h ./Grid.h ./GridConfig.h ./GridLog.h ./GridTime.h ./lattice/Lattice_arith.h ./lattice/Lattice_base.h ./lattice/Lattice_comparison.h ./lattice/Lattice_comparison_utils.h ./lattice/Lattice_conformable.h ./lattice/Lattice_coordinate.h ./lattice/Lattice_ET.h ./lattice/Lattice_local.h ./lattice/Lattice_overload.h ./lattice/Lattice_peekpoke.h ./lattice/Lattice_reality.h ./lattice/Lattice_reduction.h ./lattice/Lattice_rng.h ./lattice/Lattice_trace.h ./lattice/Lattice_transfer.h ./lattice/Lattice_transpose.h ./lattice/Lattice_unary.h ./lattice/Lattice_where.h ./Lattice.h ./Old/Tensor_peek.h ./Old/Tensor_poke.h ./parallelIO/NerscIO.h ./qcd/action/ActionBase.h ./qcd/action/Actions.h ./qcd/action/DiffAction.h ./qcd/action/fermion/CayleyFermion5D.h ./qcd/action/fermion/ContinuedFractionFermion5D.h ./qcd/action/fermion/DomainWallFermion.h ./qcd/action/fermion/FermionOperator.h ./qcd/action/fermion/g5HermitianLinop.h ./qcd/action/fermion/MobiusFermion.h ./qcd/action/fermion/MobiusZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h ./qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonContfracTanhFermion.h ./qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h ./qcd/action/fermion/PartialFractionFermion5D.h ./qcd/action/fermion/ScaledShamirFermion.h ./qcd/action/fermion/ShamirZolotarevFermion.h ./qcd/action/fermion/WilsonCompressor.h ./qcd/action/fermion/WilsonFermion.h ./qcd/action/fermion/WilsonFermion5D.h ./qcd/action/fermion/WilsonKernels.h ./qcd/action/gauge/WilsonGaugeAction.h ./qcd/hmc/HMC.h ./qcd/hmc/integrators/Integrator.h ./qcd/hmc/integrators/Integrator_algorithm.h ./qcd/hmc/integrators/Integrator_base.h ./qcd/QCD.h ./qcd/spin/Dirac.h ./qcd/spin/TwoSpinor.h ./qcd/utils/CovariantCshift.h ./qcd/utils/LinalgUtils.h ./qcd/utils/SpaceTimeGrid.h ./qcd/utils/SUn.h ./qcd/utils/WilsonLoops.h ./simd/Grid_avx.h ./simd/Grid_avx512.h ./simd/Grid_empty.h ./simd/Grid_neon.h ./simd/Grid_qpx.h ./simd/Grid_sse4.h ./simd/Grid_vector_types.h ./simd/Grid_vector_unops.h ./Simd.h ./stencil/Lebesgue.h ./Stencil.h ./tensors/Tensor_arith.h ./tensors/Tensor_arith_add.h ./tensors/Tensor_arith_mac.h ./tensors/Tensor_arith_mul.h ./tensors/Tensor_arith_scalar.h ./tensors/Tensor_arith_sub.h ./tensors/Tensor_class.h ./tensors/Tensor_determinant.h ./tensors/Tensor_exp.h ./tensors/Tensor_extract_merge.h ./tensors/Tensor_index.h ./tensors/Tensor_inner.h ./tensors/Tensor_logical.h ./tensors/Tensor_outer.h ./tensors/Tensor_reality.h ./tensors/Tensor_Ta.h ./tensors/Tensor_trace.h ./tensors/Tensor_traits.h ./tensors/Tensor_transpose.h ./tensors/Tensor_unary.h ./Tensors.h ./Threads.h
|
HFILES=./algorithms/approx/bigfloat.h ./algorithms/approx/bigfloat_double.h ./algorithms/approx/Chebyshev.h ./algorithms/approx/MultiShiftFunction.h ./algorithms/approx/Remez.h ./algorithms/approx/Zolotarev.h ./algorithms/CoarsenedMatrix.h ./algorithms/iterative/AdefGeneric.h ./algorithms/iterative/BfmHDCG.h ./algorithms/iterative/ConjugateGradient.h ./algorithms/iterative/ConjugateGradientMultiShift.h ./algorithms/iterative/ConjugateResidual.h ./algorithms/iterative/GeneralisedMinimumResidual.h ./algorithms/iterative/gmres.h ./algorithms/iterative/NormalEquations.h ./algorithms/iterative/PrecConjugateResidual.h ./algorithms/iterative/PrecGeneralisedConjugateResidual.h ./algorithms/iterative/SchurRedBlack.h ./algorithms/LinearOperator.h ./algorithms/Preconditioner.h ./algorithms/SparseMatrix.h ./Algorithms.h ./AlignedAllocator.h ./cartesian/Cartesian_base.h ./cartesian/Cartesian_full.h ./cartesian/Cartesian_red_black.h ./Cartesian.h ./communicator/Communicator_base.h ./Communicator.h ./Config.h ./cshift/Cshift_common.h ./cshift/Cshift_mpi.h ./cshift/Cshift_none.h ./Cshift.h ./Grid.h ./Init.h ./lattice/Lattice_arith.h ./lattice/Lattice_base.h ./lattice/Lattice_comparison.h ./lattice/Lattice_comparison_utils.h ./lattice/Lattice_conformable.h ./lattice/Lattice_coordinate.h ./lattice/Lattice_ET.h ./lattice/Lattice_local.h ./lattice/Lattice_overload.h ./lattice/Lattice_peekpoke.h ./lattice/Lattice_reality.h ./lattice/Lattice_reduction.h ./lattice/Lattice_rng.h ./lattice/Lattice_trace.h ./lattice/Lattice_transfer.h ./lattice/Lattice_transpose.h ./lattice/Lattice_unary.h ./lattice/Lattice_where.h ./Lattice.h ./Log.h ./MacroMagic.h ./Old/Tensor_peek.h ./Old/Tensor_poke.h ./parallelIO/NerscIO.h ./qcd/action/ActionBase.h ./qcd/action/Actions.h ./qcd/action/DiffAction.h ./qcd/action/fermion/CayleyFermion5D.h ./qcd/action/fermion/ContinuedFractionFermion5D.h ./qcd/action/fermion/DomainWallFermion.h ./qcd/action/fermion/FermionOperator.h ./qcd/action/fermion/g5HermitianLinop.h ./qcd/action/fermion/MobiusFermion.h ./qcd/action/fermion/MobiusZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonCayleyTanhFermion.h ./qcd/action/fermion/OverlapWilsonCayleyZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonContfracTanhFermion.h ./qcd/action/fermion/OverlapWilsonContfracZolotarevFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionTanhFermion.h ./qcd/action/fermion/OverlapWilsonPartialFractionZolotarevFermion.h ./qcd/action/fermion/PartialFractionFermion5D.h ./qcd/action/fermion/ScaledShamirFermion.h ./qcd/action/fermion/ShamirZolotarevFermion.h ./qcd/action/fermion/WilsonCompressor.h ./qcd/action/fermion/WilsonFermion.h ./qcd/action/fermion/WilsonFermion5D.h ./qcd/action/fermion/WilsonKernels.h ./qcd/action/gauge/WilsonGaugeAction.h ./qcd/action/pseudofermion/TwoFlavour.h ./qcd/hmc/HMC.h ./qcd/hmc/integrators/Integrator.h ./qcd/hmc/integrators/Integrator_algorithm.h ./qcd/hmc/integrators/Integrator_base.h ./qcd/QCD.h ./qcd/spin/Dirac.h ./qcd/spin/TwoSpinor.h ./qcd/utils/CovariantCshift.h ./qcd/utils/LinalgUtils.h ./qcd/utils/SpaceTimeGrid.h ./qcd/utils/SUn.h ./qcd/utils/WilsonLoops.h ./simd/Grid_avx.h ./simd/Grid_avx512.h ./simd/Grid_empty.h ./simd/Grid_neon.h ./simd/Grid_qpx.h ./simd/Grid_sse4.h ./simd/Grid_vector_types.h ./simd/Grid_vector_unops.h ./Simd.h ./stencil/Lebesgue.h ./Stencil.h ./tensors/Tensor_arith.h ./tensors/Tensor_arith_add.h ./tensors/Tensor_arith_mac.h ./tensors/Tensor_arith_mul.h ./tensors/Tensor_arith_scalar.h ./tensors/Tensor_arith_sub.h ./tensors/Tensor_class.h ./tensors/Tensor_determinant.h ./tensors/Tensor_exp.h ./tensors/Tensor_extract_merge.h ./tensors/Tensor_index.h ./tensors/Tensor_inner.h ./tensors/Tensor_logical.h ./tensors/Tensor_outer.h ./tensors/Tensor_reality.h ./tensors/Tensor_Ta.h ./tensors/Tensor_trace.h ./tensors/Tensor_traits.h ./tensors/Tensor_transpose.h ./tensors/Tensor_unary.h ./Tensors.h ./Threads.h ./Timer.h
|
||||||
|
|
||||||
CCFILES=./algorithms/approx/MultiShiftFunction.cc ./algorithms/approx/Remez.cc ./algorithms/approx/Zolotarev.cc ./GridInit.cc ./GridLog.cc ./qcd/action/fermion/CayleyFermion5D.cc ./qcd/action/fermion/ContinuedFractionFermion5D.cc ./qcd/action/fermion/PartialFractionFermion5D.cc ./qcd/action/fermion/WilsonFermion.cc ./qcd/action/fermion/WilsonFermion5D.cc ./qcd/action/fermion/WilsonKernels.cc ./qcd/action/fermion/WilsonKernelsHand.cc ./qcd/hmc/HMC.cc ./qcd/hmc/integrators/Integrator.cc ./qcd/spin/Dirac.cc ./qcd/utils/SpaceTimeGrid.cc ./stencil/Lebesgue.cc ./stencil/Stencil_common.cc
|
CCFILES=./algorithms/approx/MultiShiftFunction.cc ./algorithms/approx/Remez.cc ./algorithms/approx/Zolotarev.cc ./Init.cc ./Log.cc ./qcd/action/fermion/CayleyFermion5D.cc ./qcd/action/fermion/ContinuedFractionFermion5D.cc ./qcd/action/fermion/PartialFractionFermion5D.cc ./qcd/action/fermion/WilsonFermion.cc ./qcd/action/fermion/WilsonFermion5D.cc ./qcd/action/fermion/WilsonKernels.cc ./qcd/action/fermion/WilsonKernelsHand.cc ./qcd/hmc/HMC.cc ./qcd/hmc/integrators/Integrator.cc ./qcd/spin/Dirac.cc ./qcd/utils/SpaceTimeGrid.cc ./stencil/Lebesgue.cc ./stencil/Stencil_common.cc
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
#ifndef GRID_TIME_H
|
#ifndef GRID_TIME_H
|
||||||
#define GRID_TIME_H
|
#define GRID_TIME_H
|
||||||
namespace Grid {
|
|
||||||
// Dress the output; use std::chrono
|
#include <sys/time.h>
|
||||||
#include <chrono>
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <chrono>
|
||||||
|
|
||||||
|
namespace Grid {
|
||||||
|
|
||||||
|
|
||||||
|
// Dress the output; use std::chrono
|
||||||
|
|
||||||
|
// C++11 time facilities better?
|
||||||
|
double usecond(void);
|
||||||
|
|
||||||
typedef std::chrono::system_clock GridClock;
|
typedef std::chrono::system_clock GridClock;
|
||||||
typedef std::chrono::time_point<GridClock> GridTimePoint;
|
typedef std::chrono::time_point<GridClock> GridTimePoint;
|
@ -1,6 +1,8 @@
|
|||||||
#ifndef MULTI_SHIFT_FUNCTION
|
#ifndef MULTI_SHIFT_FUNCTION
|
||||||
#define MULTI_SHIFT_FUNCTION
|
#define MULTI_SHIFT_FUNCTION
|
||||||
|
|
||||||
namespace Grid {
|
namespace Grid {
|
||||||
|
|
||||||
class MultiShiftFunction {
|
class MultiShiftFunction {
|
||||||
public:
|
public:
|
||||||
int order;
|
int order;
|
||||||
|
44
lib/pugixml/README.md
Normal file
44
lib/pugixml/README.md
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
pugixml [![Build Status](https://travis-ci.org/zeux/pugixml.svg?branch=master)](https://travis-ci.org/zeux/pugixml) [![Build status](https://ci.appveyor.com/api/projects/status/9hdks1doqvq8pwe7/branch/master?svg=true)](https://ci.appveyor.com/project/zeux/pugixml)
|
||||||
|
=======
|
||||||
|
|
||||||
|
pugixml is a C++ XML processing library, which consists of a DOM-like interface with rich traversal/modification
|
||||||
|
capabilities, an extremely fast XML parser which constructs the DOM tree from an XML file/buffer, and an XPath 1.0
|
||||||
|
implementation for complex data-driven tree queries. Full Unicode support is also available, with Unicode interface
|
||||||
|
variants and conversions between different Unicode encodings (which happen automatically during parsing/saving).
|
||||||
|
|
||||||
|
pugixml is used by a lot of projects, both open-source and proprietary, for performance and easy-to-use interface.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Documentation for the current release of pugixml is available on-line as two separate documents:
|
||||||
|
|
||||||
|
* [Quick-start guide](http://pugixml.org/docs/quickstart.html), that aims to provide enough information to start using the library;
|
||||||
|
* [Complete reference manual](http://pugixml.org/docs/manual.html), that describes all features of the library in detail.
|
||||||
|
|
||||||
|
You’re advised to start with the quick-start guide; however, many important library features are either not described in it at all or only mentioned briefly; if you require more information you should read the complete manual.
|
||||||
|
|
||||||
|
## License
|
||||||
|
This library is available to anybody free of charge, under the terms of MIT License:
|
||||||
|
|
||||||
|
Copyright (c) 2006-2015 Arseny Kapoulkine
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
71
lib/pugixml/pugiconfig.hpp
Normal file
71
lib/pugixml/pugiconfig.hpp
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/**
|
||||||
|
* pugixml parser - version 1.6
|
||||||
|
* --------------------------------------------------------
|
||||||
|
* Copyright (C) 2006-2015, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
|
* Report bugs and download new versions at http://pugixml.org/
|
||||||
|
*
|
||||||
|
* This library is distributed under the MIT License. See notice at the end
|
||||||
|
* of this file.
|
||||||
|
*
|
||||||
|
* This work is based on the pugxml parser, which is:
|
||||||
|
* Copyright (C) 2003, by Kristen Wegner (kristen@tima.net)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HEADER_PUGICONFIG_HPP
|
||||||
|
#define HEADER_PUGICONFIG_HPP
|
||||||
|
|
||||||
|
// Uncomment this to enable wchar_t mode
|
||||||
|
// #define PUGIXML_WCHAR_MODE
|
||||||
|
|
||||||
|
// Uncomment this to disable XPath
|
||||||
|
// #define PUGIXML_NO_XPATH
|
||||||
|
|
||||||
|
// Uncomment this to disable STL
|
||||||
|
// #define PUGIXML_NO_STL
|
||||||
|
|
||||||
|
// Uncomment this to disable exceptions
|
||||||
|
// #define PUGIXML_NO_EXCEPTIONS
|
||||||
|
|
||||||
|
// Set this to control attributes for public classes/functions, i.e.:
|
||||||
|
// #define PUGIXML_API __declspec(dllexport) // to export all public symbols from DLL
|
||||||
|
// #define PUGIXML_CLASS __declspec(dllimport) // to import all classes from DLL
|
||||||
|
// #define PUGIXML_FUNCTION __fastcall // to set calling conventions to all public functions to fastcall
|
||||||
|
// In absence of PUGIXML_CLASS/PUGIXML_FUNCTION definitions PUGIXML_API is used instead
|
||||||
|
|
||||||
|
// Tune these constants to adjust memory-related behavior
|
||||||
|
// #define PUGIXML_MEMORY_PAGE_SIZE 32768
|
||||||
|
// #define PUGIXML_MEMORY_OUTPUT_STACK 10240
|
||||||
|
// #define PUGIXML_MEMORY_XPATH_PAGE_SIZE 4096
|
||||||
|
|
||||||
|
// Uncomment this to switch to header-only version
|
||||||
|
// #define PUGIXML_HEADER_ONLY
|
||||||
|
|
||||||
|
// Uncomment this to enable long long support
|
||||||
|
// #define PUGIXML_HAS_LONG_LONG
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2006-2015 Arseny Kapoulkine
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
12485
lib/pugixml/pugixml.cpp
Normal file
12485
lib/pugixml/pugixml.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1400
lib/pugixml/pugixml.hpp
Normal file
1400
lib/pugixml/pugixml.hpp
Normal file
File diff suppressed because it is too large
Load Diff
52
lib/pugixml/readme.txt
Normal file
52
lib/pugixml/readme.txt
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
pugixml 1.6 - an XML processing library
|
||||||
|
|
||||||
|
Copyright (C) 2006-2015, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
|
Report bugs and download new versions at http://pugixml.org/
|
||||||
|
|
||||||
|
This is the distribution of pugixml, which is a C++ XML processing library,
|
||||||
|
which consists of a DOM-like interface with rich traversal/modification
|
||||||
|
capabilities, an extremely fast XML parser which constructs the DOM tree from
|
||||||
|
an XML file/buffer, and an XPath 1.0 implementation for complex data-driven
|
||||||
|
tree queries. Full Unicode support is also available, with Unicode interface
|
||||||
|
variants and conversions between different Unicode encodings (which happen
|
||||||
|
automatically during parsing/saving).
|
||||||
|
|
||||||
|
The distribution contains the following folders:
|
||||||
|
|
||||||
|
contrib/ - various contributions to pugixml
|
||||||
|
|
||||||
|
docs/ - documentation
|
||||||
|
docs/samples - pugixml usage examples
|
||||||
|
docs/quickstart.html - quick start guide
|
||||||
|
docs/manual.html - complete manual
|
||||||
|
|
||||||
|
scripts/ - project files for IDE/build systems
|
||||||
|
|
||||||
|
src/ - header and source files
|
||||||
|
|
||||||
|
readme.txt - this file.
|
||||||
|
|
||||||
|
This library is distributed under the MIT License:
|
||||||
|
|
||||||
|
Copyright (c) 2006-2015 Arseny Kapoulkine
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
@ -7,14 +7,30 @@ template<class GaugeField>
|
|||||||
class Action {
|
class Action {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void init(const GaugeField &U, GridParallelRNG& pRNG) = 0;
|
virtual void init (const GaugeField &U, GridParallelRNG& pRNG) = 0; //
|
||||||
virtual RealD S(const GaugeField &U) = 0; // evaluate the action
|
virtual RealD S (const GaugeField &U) = 0; // evaluate the action
|
||||||
virtual void deriv(const GaugeField &U,GaugeField & dSdU ) = 0; // evaluate the action derivative
|
virtual void deriv(const GaugeField &U,GaugeField & dSdU ) = 0; // evaluate the action derivative
|
||||||
//virtual void refresh(const GaugeField & ) {} ;
|
virtual void refresh(const GaugeField & ) {}; // Default to no-op for actions with no internal fields
|
||||||
// Boundary conditions?
|
// Boundary conditions?
|
||||||
// Heatbath?
|
// Heatbath?
|
||||||
virtual ~Action() {};
|
virtual ~Action() {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Could derive PseudoFermion action with a PF field, FermionField, and a Grid; implement refresh
|
||||||
|
template<class GaugeField, class FermionField>
|
||||||
|
class PseudoFermionAction : public Action<GaugeField> {
|
||||||
|
public:
|
||||||
|
FermionField Phi;
|
||||||
|
GridParallelRNG &pRNG;
|
||||||
|
GridBase &Grid;
|
||||||
|
|
||||||
|
PseudoFermionAction(GridBase &_Grid,GridParallelRNG &_pRNG) : Grid(_Grid), Phi(&_Grid), pRNG(_pRNG) {
|
||||||
|
};
|
||||||
|
|
||||||
|
virtual void refresh(const GaugeField &gauge) {
|
||||||
|
gaussian(Phi,pRNG);
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
}}
|
}}
|
||||||
#endif
|
#endif
|
||||||
|
@ -149,6 +149,7 @@ PARALLEL_FOR_LOOP
|
|||||||
////////////////////////////
|
////////////////////////////
|
||||||
// spin trace outer product
|
// spin trace outer product
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
// FIXME : need to sum over fifth direction.
|
||||||
tmp = TraceIndex<SpinIndex>(outerProduct(Btilde,A)); // ordering here
|
tmp = TraceIndex<SpinIndex>(outerProduct(Btilde,A)); // ordering here
|
||||||
PokeIndex<LorentzIndex>(mat,tmp,mu);
|
PokeIndex<LorentzIndex>(mat,tmp,mu);
|
||||||
|
|
||||||
|
@ -17,8 +17,5 @@ namespace Grid{
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,13 +27,22 @@ namespace Grid{
|
|||||||
|
|
||||||
template <class Algorithm>
|
template <class Algorithm>
|
||||||
class HybridMonteCarlo{
|
class HybridMonteCarlo{
|
||||||
|
|
||||||
const HMCparameters Params;
|
const HMCparameters Params;
|
||||||
GridSerialRNG sRNG;
|
|
||||||
|
GridSerialRNG sRNG; // Fixme: need a RNG management strategy.
|
||||||
|
|
||||||
Integrator<Algorithm>& MD;
|
Integrator<Algorithm>& MD;
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
|
// Metropolis step
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
bool metropolis_test(const RealD DeltaH){
|
bool metropolis_test(const RealD DeltaH){
|
||||||
|
|
||||||
RealD rn_test;
|
RealD rn_test;
|
||||||
|
|
||||||
RealD prob = std::exp(-DeltaH);
|
RealD prob = std::exp(-DeltaH);
|
||||||
|
|
||||||
random(sRNG,rn_test);
|
random(sRNG,rn_test);
|
||||||
|
|
||||||
std::cout<<GridLogMessage<< "--------------------------------------------\n";
|
std::cout<<GridLogMessage<< "--------------------------------------------\n";
|
||||||
@ -47,11 +56,16 @@ namespace Grid{
|
|||||||
std::cout<<GridLogMessage <<"-- REJECTED\n";
|
std::cout<<GridLogMessage <<"-- REJECTED\n";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
|
// Evolution
|
||||||
|
/////////////////////////////////////////////////////////
|
||||||
RealD evolve_step(LatticeLorentzColourMatrix& U){
|
RealD evolve_step(LatticeLorentzColourMatrix& U){
|
||||||
|
|
||||||
MD.init(U); // set U and initialize P and phi's
|
MD.init(U); // set U and initialize P and phi's
|
||||||
|
|
||||||
RealD H0 = MD.S(U); // initial state action
|
RealD H0 = MD.S(U); // initial state action
|
||||||
std::cout<<GridLogMessage<<"Total H before = "<< H0 << "\n";
|
std::cout<<GridLogMessage<<"Total H before = "<< H0 << "\n";
|
||||||
|
|
||||||
@ -64,13 +78,17 @@ namespace Grid{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
HybridMonteCarlo(HMCparameters Pms,
|
|
||||||
Integrator<Algorithm>& MolDyn):
|
/////////////////////////////////////////
|
||||||
Params(Pms),MD(MolDyn){
|
// Constructor
|
||||||
//FIXME
|
/////////////////////////////////////////
|
||||||
// initialize RNGs also with seed
|
HybridMonteCarlo(HMCparameters Pms, Integrator<Algorithm>& MolDyn): Params(Pms),MD(MolDyn) {
|
||||||
|
|
||||||
|
//FIXME... initialize RNGs also with seed ; RNG management strategy
|
||||||
sRNG.SeedRandomDevice();
|
sRNG.SeedRandomDevice();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
~HybridMonteCarlo(){};
|
~HybridMonteCarlo(){};
|
||||||
|
|
||||||
|
|
||||||
@ -95,7 +113,8 @@ namespace Grid{
|
|||||||
DeltaH = evolve_step(Ucopy);
|
DeltaH = evolve_step(Ucopy);
|
||||||
|
|
||||||
if(metropolis_test(DeltaH)) Uin = Ucopy;
|
if(metropolis_test(DeltaH)) Uin = Ucopy;
|
||||||
//need sync?
|
//need sync? // Query Guido on this comment
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
bin_PROGRAMS = Test_GaugeAction Test_cayley_cg Test_cayley_coarsen_support Test_cayley_even_odd Test_cayley_ldop_cr Test_cf_coarsen_support Test_cf_cr_unprec Test_contfrac_cg Test_contfrac_even_odd Test_cshift Test_cshift_red_black Test_dwf_cg_prec Test_dwf_cg_schur Test_dwf_cg_unprec Test_dwf_cr_unprec Test_dwf_even_odd Test_dwf_fpgcr Test_dwf_hdcr Test_gamma Test_hmc_WilsonGauge Test_lie_generators Test_main Test_multishift_sqrt Test_nersc_io Test_quenched_update Test_remez Test_rng Test_rng_fixed Test_simd Test_stencil Test_wilson_cg_prec Test_wilson_cg_schur Test_wilson_cg_unprec Test_wilson_cr_unprec Test_wilson_even_odd Test_wilson_force Test_wilson_force_phiMphi
|
bin_PROGRAMS = Test_GaugeAction Test_cayley_cg Test_cayley_coarsen_support Test_cayley_even_odd Test_cayley_ldop_cr Test_cf_coarsen_support Test_cf_cr_unprec Test_contfrac_cg Test_contfrac_even_odd Test_cshift Test_cshift_red_black Test_dwf_cg_prec Test_dwf_cg_schur Test_dwf_cg_unprec Test_dwf_cr_unprec Test_dwf_even_odd Test_dwf_fpgcr Test_dwf_hdcr Test_gamma Test_hmc_WilsonGauge Test_lie_generators Test_main Test_multishift_sqrt Test_nersc_io Test_quenched_update Test_remez Test_rng Test_rng_fixed Test_simd Test_stencil Test_wilson_cg_prec Test_wilson_cg_schur Test_wilson_cg_unprec Test_wilson_cr_unprec Test_wilson_even_odd Test_wilson_force Test_wilson_force_phiMdagMphi Test_wilson_force_phiMphi
|
||||||
|
|
||||||
|
|
||||||
Test_GaugeAction_SOURCES=Test_GaugeAction.cc
|
Test_GaugeAction_SOURCES=Test_GaugeAction.cc
|
||||||
@ -146,6 +146,10 @@ Test_wilson_force_SOURCES=Test_wilson_force.cc
|
|||||||
Test_wilson_force_LDADD=-lGrid
|
Test_wilson_force_LDADD=-lGrid
|
||||||
|
|
||||||
|
|
||||||
|
Test_wilson_force_phiMdagMphi_SOURCES=Test_wilson_force_phiMdagMphi.cc
|
||||||
|
Test_wilson_force_phiMdagMphi_LDADD=-lGrid
|
||||||
|
|
||||||
|
|
||||||
Test_wilson_force_phiMphi_SOURCES=Test_wilson_force_phiMphi.cc
|
Test_wilson_force_phiMphi_SOURCES=Test_wilson_force_phiMphi.cc
|
||||||
Test_wilson_force_phiMphi_LDADD=-lGrid
|
Test_wilson_force_phiMphi_LDADD=-lGrid
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user