From def70a32e4e97f67975191632f00d9f02f106ce6 Mon Sep 17 00:00:00 2001 From: Aniket Sen Date: Wed, 25 Oct 2023 12:03:18 +0200 Subject: [PATCH 1/2] default quda_input.mg_mu_factor is set to _default_quda_mg_mu_factor on all levels --- read_input.l | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/read_input.l b/read_input.l index da6143e9a..4bebf2790 100644 --- a/read_input.l +++ b/read_input.l @@ -3886,7 +3886,7 @@ int read_input(char * conf_file){ quda_input.mg_smoother_tol[level] = _default_quda_mg_smoother_tol; quda_input.mg_n_vec[level] = _default_quda_mg_n_vec; - quda_input.mg_mu_factor[level] = 1.0; + quda_input.mg_mu_factor[level] = _default_quda_mg_mu_factor; quda_input.mg_coarse_solver_type[level] = QUDA_GCR_INVERTER; quda_input.mg_smoother_type[level] = QUDA_CA_GCR_INVERTER; From 5a2eba14951e8f1edfbfd3a81e3a6a917c3be64b Mon Sep 17 00:00:00 2001 From: Aniket Sen Date: Wed, 25 Oct 2023 12:06:33 +0200 Subject: [PATCH 2/2] addition and correction to quda documentation --- doc/quda.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/quda.tex b/doc/quda.tex index b034b1a16..1eab42b36 100644 --- a/doc/quda.tex +++ b/doc/quda.tex @@ -121,8 +121,8 @@ \subsubsection{General settings} \begin{itemize} \item \texttt{FermionBC} Forces twisted ({\ttfamily theta}), periodic ({\ttfamily pbc}) or antiperiodic ({\ttfamily apbc}) temporal quark field boundary conditions irrespective of what has been set for \texttt{ThetaT}. This setting exists because at the time of writing (2017.12.28), there seems to be a bug or incompatibility in QUDA which causes (anti-)periodic boundary conditions with gauge compression to produce incorrect propagators. Use with care as the residual check using tmLQCD operators will suggest a non-converged residual. \item \texttt{Pipeline} The pipeline length for fused operations in some solvers (for the tmLQCD QUDA interface, at the time of writing in May 2023, this is just GCR). (positive integer, default: $0$) - \item \texttt{gcrNkrylov} - \item \texttt{ReliableDelta} + \item \texttt{gcrNkrylov} Maximum size of Krylov space used by the solver. (positive integer, default: 10) + \item \texttt{ReliableDelta} Reliable update tolerance. (positive float, default: 0.001) \end{itemize} \subsubsection{More advanced settings} @@ -251,7 +251,7 @@ \subsubsection{QUDA-MG interface} \item{ \texttt{MGSmootherPreIterations}: number of smoothing steps before coarse grid correction on a per-level basis. (comma-separated list of zero or positive integers, default: $0$ on all levels)} \item{ \texttt{MGSmootherPostIterations}: number of smoothing steps after prolongation on a per-level basis. (comma-separated list of zero or positive integers, default: $4$ on all levels)} \item{ \texttt{MGOverUnderRelaxationFactor}: Over- or under-relaxation factor on a per-level basis. (comma-separated list of positive floats, default: $0.85$ on all levels)} - \item{ \texttt{MGCoarseMuFactor}: Scaling factor for twisted mass on a per-level basis, accelerates convergence and reduces condition numer of coarse grid solves. From experience it seems that it's reasonable to set this $>1.0$ only on the coarsest level, but sometimes it might also help on intermediate levels. If running with twisted mass, this should always be set and tuned for maximum efficiency. When using coarse-grid deflation (see \texttt{MGEigSolverRequireConvergence}), this should usually be set to $1.0$ on all levels. (comma-separated list of positive floats, usually $ > 1.0$, default $8.0$ from the second level upwards).} + \item{ \texttt{MGCoarseMuFactor}: Scaling factor for twisted mass on a per-level basis, accelerates convergence and reduces condition number of coarse grid solves. From experience it seems that it's reasonable to set this $>1.0$ only on the coarsest level, but sometimes it might also help on intermediate levels. If running with twisted mass, this should always be set and tuned for maximum efficiency. When using coarse-grid deflation (see \texttt{MGEigSolverRequireConvergence}), this should usually be set to $1.0$ on all levels. (comma-separated list of positive floats, usually $ > 1.0$, default: $1.0$ on all levels).} \item{ \texttt{MGSetup2KappaMu}: The value of $2\kappa\mu$ which should be used during the MG setup process. This is important in the HMC for standard twisted mass fermions, for example, because the setup should always be performed with the smallest quark mass to be employed in a simulation and it might be that a monomial with a heavier twisted quark mass is the first to call to MG and to thus trigger the setup. Generally this is set to the target light twisted quark mass. Setting this to $0.0$ implies that it is ignored. (float, default: $0.0$) } \item{ \texttt{MGReuseSetupMuThreshold}: When the twisted quark mass is changed between solves using the MG solver, the MG setup is usually \emph{updated} for this new $\mu$ value. One can attempt to reuse the MG setup for solves with different $\mu$ values up to this threshold, i.e., when the condition $x < 2\kappa\cdot|\mu_\mathrm{old} - \mu_\mathrm{new}|$ holds. (positive float, default: \texttt{2*DBL\_EPSILON})} \item{ \texttt{MGRefreshSetupMDUThreshold}: When the MG is used in the HMC, the MG setup must be regularly refreshed by running a few iterations of the setup solver on the current set of approximate null vectors in order to evolve these with the changing gauge field. A good rule of thumb is to perform this setup refresh about twice per coarsest time step. In other words: for a trajectory length $\tau$ and $N$ integration steps on the coarsest time scale, the refresh should be performed at intervals of $(\tau/(2N)-\epsilon)$ MDUs, where $\epsilon$ is a small number to make sure that the threshold is hit at every half-step of the integrator. (positive float, default: \texttt{2*DBL\_EPSILON})}