Keywords: DataChallenge1
Following is a summary of the Resource Consumer Pipeline being prepared for
DC1 use. The overall structure is implemented with the exception of invoking
mpi (which has been tested in isolation). Resource setup and consumption
for Flops and File I/O (both text and FITS files) are implemented.
Neither Database I/O nor end-of-test Cleanup are implemented.
The implementation will morph to use the LSST Middleware API as that interface
is developed.
I hope to acquire Jacek's database ingest test files/scenario in order to
rework it into the required characteristics for the DB Resource Consumer.
(OK, Jacek?)
--
Roberta (Robyn) Allsman
Large Synoptic Survey Telescope phone: 520-322-8741
Data Management FAX: 520-881-2627
4703 E. Camp Lowell Dr Suite 253 email: [EMAIL PROTECTED]
Tucson, AZ 85712 USA
============================================================================
Resource Pipeline Overview
============================================================================
The Resource Pipeline is a process which consumes resources based on a
preliminary characterization of a to-be-developed LSST pipeline process.
The characterization includes the files read/written, databases
created/updated/queried, mpi configuration, computer cycles spun during
analysis. File or database resources initially used in an 'input' role
by the to-be-developed LSST pipeline process will be created prior to
invoking the stand-in Consumer pipeline.
Resource consumption will be characterized by the following attributes:
file location: {gpfs, RAMfs}
file type: {text, fits}
file mode: {read, write}
file size: for text/binary: number of bytes; for fits: number of pixels
DB type: {Lsst collection, lsst image metadata}
DB mode: {create, ingest, update, query}
DB size: # attributes, # of rows
memuse: object size, number of objects,
flops: # of floating point operations on 'memuse' objects
mpi nodes: number of nodes to spray the stand-in Consumer
mpi barrier type: {none, completion}
mpi xfer: # of bytes to transfer amongst all nodes
============================================================================
Resource Pipeline Setup
============================================================================
Create and load any file or database resource initially used by the
stand-in Consumer as an input resource. Input is indicated by 'init'
in the resource usage policy defined below:
=====================================================================
Pipeline Characterization
=====================================================================
segment = [segmentPolicy,diskPolicy]
segmentPolicy = policy file defining pipeline processing segments
diskPolicy = policy file defining disk params
=====================================================================
Pipeline Processing: Disk Characterization
=====================================================================
ram = root pathname for all files created on RAMfs
gpfs = root pathname for all files created on gpfs
=====================================================================
Pipeline Processing Segment: MPI Characterization
=====================================================================
nodes = number of Nodes to be used for MPI processes
format = integer; default = 4
type = type of mpi barrier to simulate
type = {completion || none}
format = text string; default = none
xfercnt = number of FLOATs to send between all mpi processes
format = integer; default = 0
=====================================================================
Pipeline Processing Segment: Node Characterization
=====================================================================
PPS Node: File I/O Characterization
------------------------------------------------------------------------
file = [name,init,location,type,mode,size,loops]
name = root for local name for Consumer
init = {init,noinit}: init resource before sim run
location = {gpfs,ram}
type = {text,binary,fits}
mode = {read,write}
size = for 'text'&'binary': number of bytes to in/out-put;
for 'fits': number of bytes of pixel data
loops = number of times the file operation will occur
eg 2 -> activity processed twice during simulation
------------------------------------------------------------------------
PPS Node: FLOP Characterization
------------------------------------------------------------------------
memobj = [size, dim, ops,loops]
size = # of FLOATs per memory object
dim = # of memory objects per array
ops = # of MULT operations to perform on each MemObj
loops = # of times to repeat the ops
------------------------------------------------------------------------
PPS Node: DB Characterization
------------------------------------------------------------------------
db = [name,init,location,type,complexity,mode,cnt,aux]
name = root for local name for Consumer
init = {init,noinit}: init resource before Sim run
location = {gpfs,ram}
type = {collection(op: member-in-region),md(op: joins)}
mode = {create,ingest,query,update}
for mode=create:
cnt = total number of attributes
aux = not used
for mode=update:
cnt = number of attributes altered per row
aux = number of rows being altered
for mode=ingest:
cnt = total number of rows being added
aux = not used
for mode=query:
cnt = number of rows returned
aux = names of tables to be joined (comma separated)
============================================================================
Resource Pipeline Consumer
============================================================================
Consume the resources characterized in the Consumer resource usage policy.
if mpi, spray the specified Resource Pipeline process across nodes:
if file, perform specified disk I/O
read
write
if db, perform specified DB I/O
create:
ingest:
query:
update:
if memobj, perform specified computation
============================================================================
Software Requirements
============================================================================
Current software requirements are minimal:
python and standard distribution modules
mysql
additional python modules:
numarray
mysql
mpi
Installing the existing prototype pipeline infrastructure would provide
the complete environment required for the Consumer.
============================================================================
Command line interface
============================================================================
# initialize required pre-existing objects
python Consumer.py --pipeline=./pipeWcsConsumer.policy --op=setup
# consume the resource indicated in the pipeline policy
python Consumer.py --pipeline=./pipeWcsConsumer.policy --op=consume
# cleaup the residual resources
python Consumer.py --pipeline=./pipeWcsConsumer.policy --op=clean
============================================================================
Sample Policy Statements
============================================================================
The following policy statements have the current structure of the
existing WCS prototype pipeline. However, the resource consumption values
are place holders until the computational expense of the pipeline is properly
estimated.
pipeWcsConsumer.policy
------------------------
# Define the individual mpi segments within a Resource Consumer pipeline
segment = mpiAssembleImage.policy,diskRoot.policy
segment = mpiXtalk.policy,diskRoot.policy
segment = mpiPixelProcessing.policy,diskRoot.policy
#segment = mpiAssociation.policy,diskRoot.policy
-------------------------------------------------------------------------
diskRoot.policy
-----------------------
# Root pathnames on various devices for Consumer R/W operations
gpfs = /gpfs_sanscratch/rallsman/Consumer
ram = /dev/shm/Consumer
-------------------------------------------------------------------------
mpiAssembleImage.policy
-----------------------
# Define MPI organization
nodes = 4
type = completion
xfercnt = 100
# Simulate 'Assemble Image' processing on each node
# write Raw CCD Image to disk
file = FOne,noinit,gpfs,fits,write,100000,1
# copying CCD pixel data into memory
memobj = 20,1,2,1
# query the Mountain RawImageMetadata DB Table
db = DBOne,init,gpfs,md,query,1,0
# create Base RawImageMetadata DB Table
db = DBTwo,noinit,gpfs,md,create,100,0
# write metadata to Base RawImageMetadata DB Table
db = DBTwo,noinit,gpfs,md,ingest,1,0
-----------------------------------------------------------------------
mpiXtalk.policy
-----------------
# Define MPI organization
nodes = 4
type = completion
xfercnt = 100000
# Simulate 'Xtalk' processing on each node
# read Raw CCD Image from disk
file = FOne,init,gpfs,fits,read,100000,1
# read crosstalk matrix from disk
file = FTwo,init,gpfs,fits,read,100,5
# perform the crosstalk calculation
memobj = 20,1,2,1
# write xtalked Image to disk (in prep for next pipeline stage)
file = FThree,noinit,gpfs,fits,write,100000,1
# create Base CalImageMetadata DB Table
db = DBOne,init,gpfs,md,create,100,0
# write metadata to Base CalImageMetadata DB Table
db = DBOne,noinit,gpfs,md,ingest,1,0
# * * T H I S * * Policy File's Characterization
clientPolicyName = mpiXtalk
clientPolicyVersion = '1.0'
serverPolicyVersion = '1.0'
logFile = Consumer.log
diagnose = 2
#------------------------------------------------------
mpiPixelProcessing.policy
-------------------------
# Simulate 'Pixel Processing' on each node
# Define MPI organization
nodes = 4
type = completion
xfercnt = 10
# ------------------Calibration
# read Xtalk'ed Image from disk
file = FOne,init,gpfs,fits,read,100000,1
# read bad pixel image from disk
file = FTwo,init,ram,fits,read,10000,1
# read flat image from disk
file = FThree,init,gpfs,text,read,10,25
# read dark image from disk
file = FFour,init,gpfs,fits,read,100,5
# read bias image from disk
file = FFive,init,gpfs,fits,read,10000,1
# read fringe image from disk
file = FSix,init,gpfs,fits,read,10000,1
# perform the various calibration operations
# bad pixel
memobj = 20,1,2,1
# flat
memobj = 20,1,2,1
# dark
memobj = 20,1,2,1
# bias
memobj = 20,1,2,1
# fringe
memobj = 20,1,2,1
# write Calibrated Image to disk (in prep for next pipeline stage)
file = FSeven,noinit,gpfs,fits,write,100000,1
# ------------------WCS
# calculate crude WCS from in-core RawImageMetadata.Geometry
memobj = 20,1,2,1
# use sextractor to build the in-core image source collection
memobj = 20,1,2,1
# acquire the reference sources from the Base referenceSourceCatalog DB
db = DBOne,init,gpfs,md,query,50000,0
# calculate the 'adequateWCS' from: refSources, imgSources, telGeom, calImage
memobj = 20,1,2,1
# ------------------PSF
# acquire PSF reference source from Base referenceSourcecatalog DB
db = DBOne,noinit,gpfs,md,query,50000,0
# use WCSlib to calculate adequatePSF from: PSF refSources, imageSources,
# rawImageMetadata.wavefront, calImage, adequateWCS
memobj = 20,1,2,1
# ------------------PhotoZ
# acquire photometric reference source from Base referenceSourcecatalog DB
db = DBOne,noinit,gpfs,collection,query,50000,0
# use zero-point fitting algorithm to calculate photZ from in-core:
# imageSourceCatalog, photometric refSources, rawImageMetadata.?,
# adequateWCS
memobj = 20,1,2,1
# ------------------Image Subtraction
# read reference Image from disk
file = FEight,init,gpfs,fits,read,100000,1
# read CalImage from disk
file = FSeven,noinit,gpfs,fits,read,100000,1
# use Alard/Lupton image subtraction algorithm utilzing: refImage, calImage,
# refImage.adequatePsf, calImage.adequateWCS
memobj = 20,1,2,1
# write Subtracted Image to disk (in prep for next pipeline stage)
file = FNine,noinit,gpfs,fits,write,100000,1
# ------------------Source Detection
# read (calibrated or subtracted) image from disk
file = FNine,noinit,gpfs,fits,read,100000,1
# acquire 'interesting objects' from referenceSourceCatalog DB
db = DBOne,noinit,gpfs,collection,query,50000,0
# create sky image
memobj = 20,1,2,1
# write sky image to disk
file = FTen,noinit,gpfs,fits,write,100000,1
# create Base imageSourceCatalog DB
db = DBTwo,noinit,gpfs,collection,create,15,0
# ingest each source's photometric, astrometric & shape in imageSourceCatalog DB
db = DBTwo,noinit,gpfs,collection,ingest,50000,0
# ------------------Astrometric Calibration
# create refined WCS
memobj = 20,1,2,1
# Photometric Calibration
# create refined photo-Z
memobj = 20,1,2,1
# Save Metadata Permanently
# update flat/dark/bias/fringe/bad pixel to Base CalImageMetadata DB
# update refinedWCS to Base CalImageMetadata DB
# update refinedPSF matrix to Base CalImageMetadata DB
# update photoZ to CalImageMetadata DB -or- ImageSourceCatalog DB
db = DBThree,init,gpfs,md,update,20,1,0
# ------------------Object Detection
...TBD...
_______________________________________________
LSST-data mailing list
[email protected]
http://www.lsstmail.org/mailman/listinfo/lsst-data