Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

tmLQCD is a freely available software suite providing a set of tools to be used in lattice QCD simulations. This is mainly a HMC (including PHMC and RHMC) implementation for Wilson, Wilson Clover and Wilson twisted mass fermions and inverter for different versions of the Dirac operator. The code is fully parallelised and ships with optimisations…

Fetching latest commit…

Cannot retrieve the latest commit at this time

doc
lapack
linalg
observables
solver
test
util
2mn_integrator.c
2mn_integrator.h
BUGS
HOWTO-benchmark
Hopping_Matrix.c
Hopping_Matrix.h
Hopping_Matrix_nocom.c
Hopping_Matrix_nocom.h
Makefile.global
Makefile.in
NEWS
Nondegenerate_Matrix.c
Nondegenerate_Matrix.h
README
README.bgl
Releases
Todo
benchmark.c
benchmark.input
bgl.h
boundary.c
boundary.h
chebyshev_polynomial.c
chebyshev_polynomial.h
complex.h
config.guess
config.h.in
config.sub
configure
configure.in
default_input_values.h
deriv_Sb.c
deriv_Sb.h
derivative_psf.c
derivative_psf.h
double2single.c
eigenvalues.c
eigenvalues.h
eigenvalues_bi.c
eigenvalues_bi.h
expo.c
expo.h
ext_integrator.c
ext_integrator.h
fixed_volume.h.in
gamma.c
gamma.h
gen_sources.c
geometry_eo.c
geometry_eo.h
get_rectangle_staples.c
get_rectangle_staples.h
get_staples.c
get_staples.h
getopt.c
getopt.h
global.h
gwc2ildg.c
hmc.input
hmc_tm.c
hybrid_nondegenerate_update.c
hybrid_nondegenerate_update.h
hybrid_update.c
hybrid_update.h
ildg2gwc.c
init_bispinor_field.c
init_bispinor_field.h
init_dirac_halfspinor.c
init_dirac_halfspinor.h
init_gauge_field.c
init_gauge_field.h
init_gauge_tmp.c
init_gauge_tmp.h
init_geometry_indices.c
init_geometry_indices.h
init_moment_field.c
init_moment_field.h
init_spinor_field.c
init_spinor_field.h
install-sh
invert.c
invert_eo.c
invert_eo.h
io.c
io.h
linalg_eo.c
linalg_eo.h
linsolve.c
linsolve.h
max_eigenvalues_bi.c
max_eigenvalues_bi.h
measure_rectangles.c
measure_rectangles.h
mpi_init.c
mpi_init.h
observables.c
observables.h
overrelaxation.c
overrelaxation.h
polyakov_loop.c
polyakov_loop.h
ranlxd.c
ranlxd.h
ranlxs.c
ranlxs.h
read_input.c
read_input.h
read_input.l
reducenoise.c
revtest.c
reweight_kappac.c
reweight_kappac.h
reweighting_factor.c
reweighting_factor.h
sighandler.c
sighandler.h
single2double.c
source_generation.c
source_generation.h
sse.h
sse3.h
start.c
start.h
stout_smear.c
stout_smear.h
su3.h
su3adj.h
su3spinor.h
sub_low_ev.c
sub_low_ev.h
testtrace.c
thermal_cycle_tm.c
time_Hopping_Matrix.c
tm_operators.c
tm_operators.h
update_backward_gauge.c
update_backward_gauge.h
update_tm.c
update_tm.h
xchange.h
xchange_deri.c
xchange_deri.h
xchange_field.c
xchange_field.h
xchange_gauge.c
xchange_gauge.h
xchange_halffield.c
xchange_halffield.h
xlc_prefetch.h
README
Here are some remarks collected in order to configure, compile and
test the HMC programme suit. For more information, also about running
the code please read the documentation in the doc sub-directory. 

CONFIGURE and COMPILE

It is recommended to build the code not in the source directory but in
a separate directory.

The lime library (version 1.2.3) is needed to compile the
program. Please download it at

http://www.physics.utah.edu/~detar/scidac/

or use the copy in the GWC scratch directory. Untar it somewhere
configure and compile before doing the same with HMC. Then you should
use the configure option --with-lime=dir for the HMC to set the
correct directory where to find lime (see below). 

Building the HMC code is a two step procedure:

1) configure:

In your build directory type

path-to-the-sources/configure --help

to get an overview of the available options and switches. For
instance, a scalar build on a P4 machine would look like:

path-to-the-sources/configure --disable-mpi --enable-sse2 --enable-p4 \
--enable-gaugecopy --disable-newdiracop --with-limedir=path-to-lime/

Opteron with SSE2:

path-to-the-sources/configure --disable-mpi --enable-sse2 --enable-opteron \
--enable-gaugecopy --disable-newdiracop --with-limedir=path-to-lime/

A MPI parallel (4dims) build on a P4 cluster:

path-to-the-sources/configure --enable-mpi --enable-sse2 --enable-p4 \
--with-mpidimension=4 --enable-gaugecopy --disable-newdiracop

on the Munich Altix machine:

path-to-the-sources/configure --enable-mpi --with-mpidimension=4 \
--without-lapack --with-limedir=path-to-lime/ --enable-newdiracop \
--disable-shmem CC=mpicc CFLAGS="-mcpu=itanium2 -O3 -g -c99 -mtune=itanium2"

on the BG/L:

path-to-the-sources/configure --host=ppc-ibm-blrts --build=ppc64-ibm-linux \
--without-lapack --enable-mpi --with-mpidimension=4 \
--enable-gaugecopy --with-limedir=path-to-lime/  \
--enable-newdiracop CC=/usr/bin/blrts_xlc

*** important ***
for optimal performance on the BG/L use --enable-newdiracop 
with --with-bgldram and link the executables with
/bgl/local/bin/blrts_gcc -Xlinker --script=./elf32ppcblrts.x
See IBM redbook for details regarding rts_get_dram_window()
runtime function.
You should also set
-env "BGLMPI_EAGER=500000000 BGLMPI_PACING=n" as option
to mpirun.
*** important ***

You may enable or disable other configure options as needed.

2) make

type `make` in your build directory.

I there appears not error message during compilation you should end up
with two executable in the build directory, namely `hmc_tm` and
`invert`. 

TESTING

The following numbers might be taken as reference points:

4^4 lattice, beta 6.0, kappa=0.177, 2*kappa*mu=0.177 (this is the input
value), antiperiodic boundary conditions:

Plaquette: 0.62457(7)

4^4 lattice, beta 4.0, kappa=0.1, 2*kappa*mu=0.26795, antiperiodic
boundary conditions:

Plaquette: 0.29164(2)

4^4 lattice, beta 4.0, kappa=0.05, 2*kappa*mu=0.26795, antiperiodic
boundary conditions:

Plaquette: 0.29055(3)

4^3 x 8 lattice, beta = 1, kappa = 0, mu = 0, antiperiodic bc, 
DBW2 gauge action

Plaquette: 0.71771(3) (Carsten serial)
Plaquette: 0.71772(7) (Karl)


4^4 lattice, beta 0.67, kappa=0.125 mu=0.5 2*kappa*mu=0.125 antiperiodic bc
DBW2 gauge action.

Plaquette: 0.56121(13) (HH)
Plaquette: 0.56125(13) (Carsten serial ExtLeapFrog)
Plaquette: 0.56127(10) (Carsten parallel t ExtLeapFrog)
Plaquette: 0.56139(11) (Carsten parallel xt ExtLeapFrog)

You can also have a look to the following numbers:

mu = 0.1 -> 2kappa mu = 0.0354
beta = 5.1
kappa = 0.177
4^4 Lattice

          <P>                tau_int    #       dtau
antiperiodisch
------------------------------------------------------
Carsten   0.5351(4)          3.16       4800    0.05
          0.5345(4)          2.99       4800    0.05
          0.5351(5)          4.10       4800    0.0667
          0.5350(4)          3.97       4800    0.1
          0.5348(5)          4.33       4800    0.1667
------------------------------------------------------

periodisch
------------------------------------------------------
Carsten   0.5339(5)          4.49       4850    0.05
          0.5341(4)          4.08       4800    0.1667
          0.5338(4)          3.02       4800    0.1667
          0.5333(5)          4.18       4800    0.1667
------------------------------------------------------

kappa = 0.177 mu = 0
antiperiodisch
------------------------------------------------------
Carsten   0.5363(4)          3.50       4800    0.1667
          0.5363(4)                     4800    0.1667
------------------------------------------------------

periodisch
------------------------------------------------------
Carsten   0.5356(4)          3.19       4800    0.1667
------------------------------------------------------

mu = 0.05
antiperiodisch
------------------------------------------------------
Carsten   0.5355(4)                     4800    0.1667
------------------------------------------------------

kappa = 0.177, mu = 0.3 (here I see a phase transition)
antiperiodisch
------------------------------------------------------
Carsten   0.513(3)           44         4800    0.1667
------------------------------------------------------

kappa = 0.177, mu = 0.5
antiperiodisch
------------------------------------------------------
Carsten   0.4678(9)          9.09       4800    0.1667
------------------------------------------------------

kappa =0, mu = 0.5
antiperiodisch
------------------------------------------------------
Karl      0.4155(6)          2.31       1200    0.166
------------------------------------------------------
Carsten   0.4150(4)          3.08       4800    0.1667
          0.4151(4)          3.20       4800    0.1667
------------------------------------------------------

beta =6.0, kappa=0.177, mu=0.5, 2 kappa mu = 0.177
antiperiodisch
------------------------------------------------------
Karl      0.6243(3)          1.87       2200    0.166
------------------------------------------------------
Ines      0.6244(2)                     3600
------------------------------------------------------
Carsten   0.6246(2)          1.88       4800    0.1667
------------------------------------------------------

beta =6.0, kappa=0.177, mu=0.1, 2 kappa mu = 0.0354
antiperiodisch
------------------------------------------------------
Karl
------------------------------------------------------
Carsten   0.6310(2)          2.2        4000    0.1667
------------------------------------------------------

beta =6.0, kappa=0.177, mu=0.01, 2 kappa mu = 0.00354
antiperiodisch
------------------------------------------------------
Karl
------------------------------------------------------
Carsten   0.6308(2)          2.3        4000    0.1667
          0.6313(2)          2.2        4000    0.1667
------------------------------------------------------

beta = 6.0, kappa = 0.177, 2 kappa mu = 0.5
------------------------------------------------------
Carsten   0.6095(3)          2.8        4000    0.1667
------------------------------------------------------
Something went wrong with that request. Please try again.