Software Coordinating Committee Conference Call
April 19, 2007 1:00 PM EDT
Recorder: C. DeTar
Present:
DeTar, Levkova, Fowler, Scholz, Pochinski, Brower, Clark,
Zhang, Osborn, Edwards, Jung, Holmgren, Simone, Watson,
Alan Porterfield, Mawhinney
Absent (??):
Khoriaty, Efstathiadis, Gottlieb, Basak, Joo, Renner,
=====================================================================
** Action items
1. Still finishing up the Propagator File Format
(The usual suspects: Carleton, Osborn,Chulwo, Bob M, et al)
We discussed the updated document appended below.
Here are the points we agreed on:
(1) We need a variant of file format 2 that
replaces the source Dirac field with a source
complex field.
(2) The LHPC file format should describe the source
as a propagator field.
(3) The idea of writing records with data restricted to
a hypercube seems useful.
** DeTar: I will make these changes to the file format specification
and circulate it.
2. Back to setting a strategy for Multi-threading/Multi-core plans:
(Robert, Jie, Andrew, Rob et al)
Brower: Wouldn't you want to use threads first for Level 3
software? Would you want to rewrite QMP so it is aware
of global memory?
Pochinski: QMP always treats local memory as global.
Edwards: That would be for the multiprocess model
Holmgren: MPI would do it automatically in that case.
Edwards: So we don't need to bring in Level 3 in this
discussion.
Simone: QMP could be modified to avoid a copy.
Holmgren: Shared memory assignments for the fields would
do it.
Edwards: Currently QMP allocates memory and then opens
a channel for communication.
Pochinski: Actually it is only half a channel. Currently we
allocate only sends. To avoid copies you have to allocate both
send memory and receive memory and add another "I'm done" call
for the receiver to tell the sender it is safe to alter the
values.
DeTar: Better than calls would be locking memory.
Fowler: On the Intels if you could bring all the data
into cache, the copies would be handled efficiently.
Brower: It would be good as an exercise to see how to code
Dslash in threads and see what impact it would have on QMP.
Fowler: Our group is talking about run time systems for multicore
chips. We'd be interested in using a good example,
for our proposal.
Brower: How about QMP?
Committee conference concluded at 3:00 PM EDT.
Next call Apr 26 at 1:00 PM EDT
----------------------------------------------------------------------
USQCD Propagator File Format Proposal
April 17, 2007
DeTar, Edwards, Osborn, Jung, Simone
Currently we have three file formats on the table.
General considerations
We use the DeGrand-Rossi gamma matrix convention with the unimproved
sign for gamma_2.
The binary data is in lexicographic site order (same as with the gauge
field).
We use three fields in these files (and a choice of precision for
each) with the following names. The order of words for a given
lattice site is
USQCD_F_Complex USQCD_D_Complex
re/im
USQCD_F3_DiracFermion USQCD_D3_DiracFermion
sink spin (slower)
sink color (faster)
re/im
USQCD_F3_DiracPropagator USQCD_D3_DiracPropagator
sink spin (slowest)
source spin (faster)
sink color (faster still)
source color (fastest)
re/im
----------------------------------------------------------------------
A twelve-field propagator file with one scalar source:
(13 logical records)
----------------------------------------------------------------------
1. USQCD_DiracFermion_ScalarSource_12Sink
Here the source is given by one complex scalar field and the same
scalar field is used for each source color and spin.
Logical record 1: The complex scalar source
(Do we allow a single-precision source and double precision solutions?)
Logical records 2 - 13: DiracFermion sink fields
Solutions for each choice of source color and spin
Required order: color varies faster than spin.
(spin, color) = (0,0) (0,1) (0,2) (1,0) , ...
----------------------
File metadata
----------------------
1.0 # prop file version
USQCD_DiracFermion_ScalarSource_12Sink # Propagator file format type
# Collaboration discretion
----------------------
Source record metadata
----------------------
(QIO_RecordInfo datatype = USQCD_F_Complex or USQCD_D_Complex)
(QIO_RecordInfo precision = F or D)
1.0
collaboration use
-------------------------------
Propagator/sink record metadata
-------------------------------
(QIO_RecordInfo datatype = USQCD_F3_DiracFermion or USQCD_D3_DiracFermion)
(QIO_RecordInfo precision = F or D)
1.0 # prop file version
collaboration use
----------------------------------------------------------------------
A multiple-field propagator file with the source and sink fields paired.
----------------------------------------------------------------------
2. USQCD_DiracFermion_Source_Sink_Pairs
Here we specify the full source field and its solution field.
There can be any number of such pairs.
Logical record 1: DiracFermion field (source)
Source #1
Logical record 2: DiracFermion field (sink)
Solution #1
Logical record 3: DiracFermion field (source)
Source #2
Logical record 4: DiracFermion field (sink)
Solution #2
etc.
----------------------
File metadata
----------------------
1.0
USQCD_DiracFermion_Source_Sink_Pairs
# Collaboration discretion
----------------------
Source record metadata
----------------------
(QIO_RecordInfo datatype = USQCD_F3_DiracFermion or USQCD_D3_DiracFermion)
(QIO_RecordInfo precision = F or D)
1.0
optional - collaboration use
optional - collaboration use
collaboration use
-------------------------------
Propagator/sink record metadata
-------------------------------
(QIO_RecordInfo datatype = USQCD_F3_DiracFermion or USQCD_D3_DiracFermion)
(QIO_RecordInfo precision = F or D)
1.0 # prop file version
collaboration use
----------------------------------------------------------------------
The LHPC propagator format (modified slightly to make more standard)
(1 logical record)
----------------------------------------------------------------------
3. LHPC_DiracPropagator
Logical record 1:
Here a single record contains the full propagator.
(Should we require a complex scalar field for the source as
we did in type 1?)
-------------
File metadata
-------------
1.0 # prop file version
LHPC_DiracPropagator # Propagator file format type
collaboration use
-------------------------------
Propagator/sink record metadata
-------------------------------
(QIO_RecordInfo datatype = USQCD_F3_DiracPropagator
or USQCD_D3_DiracPropagator)
(QIO_RecordInfo precision = F or D)
1.0 # prop file version
collaboration use