# MILC

## Description

The benchmark code MILC represents part of a set of codes written by the MIMD Lattice Computation (MILC) collaboration used to study quantum chromodynamics (QCD), the theory of the strong interactions of subatomic physics. It performs simulations of four dimensional SU(3) lattice gauge theory on MIMD parallel machines. "Strong interactions" are responsible for binding quarks into protons and neutrons and holding them all together in the atomic nucleus. QCD discretizes space and evaluates field variables on sites and links of a regular hypercube lattice in four-dimensional space time. Each link between nearest neighbors in this lattice is associated with a 3-dimensional SU(3) complex matrix for a given field.

The MILC collaboration has produced application codes to study several different QCD research areas, only one of which is used here. This code generates lattices using rational function approximations for the fermion determinants using the Rational Hybrid Monte Carlo (RHMC) algorithm and implementing the HISQ action.

## Required Problem Sets

Problems are defined in the ./benchmarks directory. For MILC, small, medium, large and grand challenge problems have been defined. The respective lattice sizes are 18x18x18x36, 36x36x36x72, 72x72x72x144, and 144x144x144x288. The large definition will be used as the reference problem and the grand challenge problem will be the target in the calculation of SSI.

## Source Distribution

Source and problem definitions can be downloaded here. Running the MILC benchmarks requires using pre-generated lattices, which can be found here. These lattices can be very large so they are provided separately.

## How to Build, Run and Verify

Refer to the README.APEX file in the source distribution.

## Authorship

This code was developed by the MILC collaboration.

## Change Log

04/13/2016 |
It was discovered that MILC's random number generator was not thread safe, and hence it was possible for threads to get an improper random number sequence. The source distribution has been updated to fix this problem. To see the updated files, untar the new distribution and use the following commands: |

1/12/2016 | - New timing metrics are reported. - Added new feature that allows reduced run times for profiling and optimization development. (see README.APEX) |

11/9/2015 | Updated link to source distribution and pre-generated lattices |

10/30/2015 | Initial release |