KITPC Lattice Workshop 2009: ILDG and MILC Code


In this tutorial you will learn how to use the MILC code to make measurements with gauge configuration files downloaded from the International Lattice Data Grid (ILDG).

The USQCD web site gives a useful explanation of the ILDG. See also In order to download files, you need a personal grid certificate, which takes some time to obtain, and you will need to join the ILDG VO (virtual organization). So in these exercises we provide an example lattice obtained from the ILDG. In order to be able to read an ILDG lattice, you will need to build the MILC code with the QIO and QMP SciDAC packages. These exercises assume that you already have a precompiled, installed version of those SciDAC packages. In his lectures James Osborn explains how to install them.


Exercise: Browsing for a set of lattices in the ILDG

In this exercise you search the ILDG metadata catalog (MDC) to find the lattice you need. For this purpose you need to access an ILDG portal. The Center for Computational Science at the University of Tsukuba, Japan, is developing a very nice MDC interface at Bring this link up in your browser.

In the left panel, click on "MILC collaboration" and then on the lattice size $16^3 \times 48$. Finally, select mass 0.0097. This is the mass of the light sea quark. If you did this correctly, you should be left with only one selection with the Markov chain number (MC)

This Universal Resource Identifier (URI) is unique for this ensemble of lattices. To get more information about the ensemble, you need a more detailed listing. When the Tsukuba tool is fully developed it should be able to point you to the details. For now try the DESY site site: Look for the MC you found above (it should be close to the top) and click on it. The page you see should give lattice action parameters for this ensemble.

Normally, you would then want to download a whole set of lattices from the selected ensemble. But let's see how to get just one of them. Click on "List Config" on the left side of the window. Sometimes the response is rather slow. This page should list all 581 lattices in this ensemble. Each of them has a "logical file number" (LFN). Click on the one ending in 1040. Its LFN is

The LFN identifies the file, but it doesn't say where it is. It could be in more than one location. You need the LFN to obtain the lattice using ILDG downloading tools.

Notice that the average plaquette for this lattice is 0.548080. We will need this later.

A particularly nice set of ILDG downloading tools has been developed by DESY. Instructions for installing them are given in Included in the package is a self-contained set of globus tools for managing grid proxy authentication. Once you have installed them, you use grid-proxy-init to set up your grid credentials, and then you download the selected file using the simple command

ildg-get <fileLFN>
This command consults a "replica catalog" to locate the file and then it runs a globus process to download it. The file in our example is located at Fermilab.

Exercise: Building su3_clov with QIO and QMP

Next we will compute the eta and J/psi propagators on this lattice. We will build the hadrons from clover quarks. The code that does that is in the subdirectory clover_invert2 and the executable is called su3_clov. To read ILDG-style lattices in the MILC code, you need to build the code with the SciDAC packages QIO and QMP. It is assumed that you have already installed those packages. To cause them to be linked with the code, you need to edit the Makefile.

   cd /opt/localhomes/lab/milc/v7.6.3/clover_invert2
   cp ../Makefile .

(Mind the current-directory dot . at the end of this command!) Find the lines in the Makefile beginning with WANT. Edit them so they read

   WANTQIO = true
   WANTQMP = true

This is the way to call for the QIO message passing package. Note that QIO requires QMP, so if you don't say WANTQMP = true you'll get it anyway without asking. The other packages will not be included unless you ask.

You also need to set the path in the Makefile to the installed SciDAC libraries.

  # Parallel versions
  QMPPAR = ${SCIDAC}/qmp
  QIOPAR = $(SCIDAC)/qio
  # Single processor versions
  QMPSNG = ${SCIDAC}/qmp-single
  QIOSNG = $(SCIDAC)/qio-single

Then compile the code as usual:

   make su3_clov

In this case the code is linked against the single-processor version of the QMP (message passing) package, which does essentially nothing, since no messages are being passed.

If you had also uncommented MPP = true in the Makefile before running make, the code would instead be linked with the MPP version of the QMP package. The installed version of the QMP package implements message passing with MPI.

Exercise: Computing the etac and J/psi propagators with su3_clov

In this exercise you will process the file l1648f21b6572m0097m0484.1040 and measure the hadron correlators for the etac and J/psi using clover fermions. In an actual project you would do this for each lattice in the ensemble. Here we work with a single lattice.

Copy the sample input parameter file to in.test.su3_clov so you can edit it. This file already has most of the parameter settings needed for this exercise. First, check the setting of the lattice size at the top of the file.

   nx 16
   ny 16
   nz 16
   nt 48

Then check the setting of the input lattice file name

  reload_serial l1648f21b6572m0097m0484.1040

You should set the "tadpole" factor u0 on the next line. We will take it to be the fourth root of the average plaquette. From the lattice metadata we have 0.5480801/4 = 0.8604. In proper practice we should average the plaquette values over the entire ensemble before taking the fourth root, but this single-lattice estimate is, in fact, good to four figures.

   u0 0.8604

For the J/psi and etac we need only one charm quark propagator. We need to set its mass via the hopping parameter.

   kappa 0.122

In this example we are computing from a point source at the origin and a zero-momentum point sink. The hadron channels are specified on the lines

  number_of_correlators 4
  correlator ETAC     p000  1 * 1 G5  G5  0 0 0 E E E
  correlator JPSI     p000  1 * 1 GX  GX  0 0 0 E E E
  correlator JPSI     p000  1 * 1 GY  GY  0 0 0 E E E
  correlator JPSI     p000  1 * 1 GZ  GZ  0 0 0 E E E

The parameters on each of the correlator lines give the label for the correlator, a phase factor, a normalization factor (both 1 in this case), the gamma matrices for source and sink, the integer momentum indices (all zero here) and the reflection parity of the momentum component (all even here). For the J/psi the correlator label JPSI is repeated for each choice of the vector current component. By convention, when it is repeated, the code averages the result for each of the components.

The output hadron correlators are written to the file specified on the line

   save_corr_fnal out.test.corr

Once you have edited the input file, run the job using

   ./su3_clov < in.test.su3_clov

When it has finished, look at the result in the file out.test.corr. The numeric values give the value of the correlator as a function of Euclidean time, where the source is at t = 0.

In a complete calculation we would repeat this process for each gauge configuration file in the ensemble and average the resulting correlators. But this result from a single gauge configuration file is already enough to get an impression.

If you have a plot utility available, try plotting this correlator in a semilog plot.