📄 readme
字号:
cg2
---
Author: John Merlin, University of Southampton.
Date: HPF-90 version: Oct 1995.
Sequential & message-passing F77 versions: March 1989.
This benchmarks the conjugate gradient iteration kernel of an
SU(2) lattice guage theory simulation with dynamical Kogut-Susskind
fermions. The HPF-90 version was developed by converting a previous
sequential Fortran 77 version, which was originally written for the
Genesis benchmark suite.
The program starts by initialising the lattice (i.e. various large
data arrays). This is an inherently sequential operation, because
it uses a sequential random number generator. The program then
performs 'nsweep' updates of the lattice (where parameter 'nsweep'
is defined in file "consts.inc" and is currently set to 2).
Each sweep requires the solution of a large set of linear equations,
which is done by the conjugate gradient algorithm, which is
iterated until convergence is achieved. This benchmark times
the conjugate gradient iteration part of each sweep.
In practice it was found that if the initialisation part is
included in the HPF program, and is thus performed over distributed
arrays, its runtime dominates the total runtime of the program.
This is particularly true since only 2 update sweeps (which are timed)
are performed; a real application would involve tens of thousands
of such sweeps.
It was therefore decided to extract the initialisation phase
into a separate program (in file "init/init.f90") which is compiled
and run as a sequential Fortran 90 program. This generates
2 data files, "gauge.dat" and "sites.dat". The conjugate gradient
iteration phase is then performed by a separate HPF program
("cg2.h90") which inputs the contents of the data files, and this
phase is performed in a data-parallel fashion on distributed data arrays.
The important program parameters are contained in 'INCLUDE' files
and thus can be easily modified:
"consts.inc": nt, nx -- the lattice size (nt * nx**3)
nsweep -- the number of sweeps of the lattice.
"procs.inc": (nprocs1, nprocs2, nprocs3) -- the size of the
3 dimensional processor array over which the
lattice is distributed.
The release directory contains sample data files ("gauge.dat"
and "sites.dat") that are appropriate for a lattice of size
(nt = 16, nx = 8). If a different lattice size is used then "init.f90"
must be compiled and run to generate the required data.
If command 'shpfrun' is available, then the script 'Run-all' will
compile and run the program for a range of processor array sizes:
sequential, (1,1,1), (1,1,2), (1,1,4), (1,2,2), (1,2,4), (2,2,2).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -