Changeset 2114 for trunk/doc/design/ippSDRS.tex
- Timestamp:
- Oct 13, 2004, 7:06:32 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/doc/design/ippSDRS.tex (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/design/ippSDRS.tex
r1399 r2114 1 %%% $Id: ippSDRS.tex,v 1. 4 2004-08-06 19:06:01 eugene Exp $1 %%% $Id: ippSDRS.tex,v 1.5 2004-10-14 05:06:31 eugene Exp $ 2 2 \documentclass[panstarrs]{panstarrs} 3 3 … … 36 36 \pagenumbering{arabic} 37 37 38 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%39 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%41 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%42 43 38 \section{Scope} 44 45 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%46 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%47 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%48 39 49 40 \subsection{Identification} … … 54 45 Pan-STARRS 1 (PS-1), the initial demonstration telescope to be 55 46 constructed on Haleakala by Jan 2006. 56 57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%58 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%60 47 61 48 \subsection{System Overview} … … 72 59 roughly 2 years. 73 60 74 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%75 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%76 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%77 78 61 \subsection{Document Overview} 79 62 … … 85 68 Open Issues and TBDs in this document are marked \tbd{in bold, red 86 69 type with surrounding square brackets}. 87 88 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%89 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%90 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%91 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%92 70 93 71 \DocumentsInternalSection … … 100 78 \DocumentsEnd 101 79 102 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 103 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 104 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 105 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 106 107 \section{System Design Decisions} 80 \section{Subsystem Overview} 81 82 The Pan-STARRS Image Processing Pipeline (IPP) performs the image 83 processing and data analysis tasks needed to enable the scientific use 84 of the images obtained by the Pan-STARRS telescopes. The primary 85 goals of the IPP are to process the science images from the Pan-STARRS 86 telescopes and make the results available to other systems within 87 Pan-STARRS. It also is responsible for combining all of the science 88 images in a given filter into a single representation of the 89 non-variable component of the night sky called the ``Static Sky''. To 90 achieve these goals, the IPP also performs other analysis functions to 91 generate the calibrations needed in the science image processing and 92 to occasionally use the derived data to generate improved astrometric 93 and photometric reference catalogs. It also provides the 94 infrastructure needed to store the incoming data and the resulting 95 data products. 96 97 The IPP inherits lessons learned, and in some cases code and prototype 98 code, from several other astronomy image analysis systems, including 99 Imcat (Kaiser), the Sloan Digital Sky Survey (REF), the Elixir system 100 (Magnier \& Cuillandre), and Vista (Tonry). Imcat and Vista have a 101 large number of robust image processing functions. SDSS has 102 demonstrated a working analysis pipeline and large-scale database 103 system for a dedicated project. The Elixir system has demonstrated an 104 automatic image processing system and an object database system for 105 operational usage. 106 107 The users of the IPP output are all systems internal to the Pan-STARRS 108 project. They consist of the Transient Science Client, which will 109 receive the detections of transient objects on short time-scales; the 110 Moving Object Processing System (MOPS), which will receive the 111 detections of non-stationary transient objects on day-to-week 112 timescales; and the Published Science Products Subsystem (PSPS), which 113 will receive all data products of interest to the outside world, and 114 will act as the long-term archive and publishing clearinghouse. 115 116 An important operational choice for the IPP is the decision not to 117 attempt to save all raw data. Once the IPP is running in a standard 118 operational mode, data will be processed by the pipeline and deleted 119 when it is no longer needed. Raw images will only be saved for a 120 short period to allow tests and quality assurance, and potentially to 121 allow systems which study transient phenomena to return to recent data 122 for closer inspection. In general, during normal operations, raw 123 science images will be deleted after $\sim$1 month. 124 125 The primary IPP hardware system on which the software operates will 126 not be located at the summit. Instead, because of thermal, power, and 127 space constraints, the hardware will likely be located in a facility 128 off the mountain. A subset of processing tasks may eventually be 129 assigned to machines at the summit if justified by the savings in data 130 transfer time and cost. 131 132 \subsection{Analysis Tasks and Stages} 133 134 Specific programs are required to perform the processing steps listed 135 above. These can be divided into well-defined analysis stages, each 136 of which operates on a particular unit of data, such as a single OTA 137 image or a collection of astronomical objects. Analysis tasks 138 representing the different analysis stages are performed on the IPP 139 computer cluster. Note the distinction between the generic analysis 140 {\em stage} and a specific analysis {\em task}. An analysis stage 141 represents a type of analysis which is performed, such as the basic 142 image calibration and object detection analysis. An analysis task is 143 a particular realization of an analysis stage, e.g., the analysis of 144 OTA number 61 from exposure 654321 to produce a specific set of output 145 data products. The analysis stages are discussed in detail in 146 Section~\ref{IPP:AnalysisStages}. 147 148 Depending on the particular stage, it may process individual images, 149 collections of images, or on derived data products. Because of the 150 nature of the image data, many of the analysis stages can be run in 151 parallel because, for example, the analysis of a chip in one image 152 does not depend on the results from another chip. 153 154 \subsection{Architectural Components} 155 156 In order to achieve the required functionality, the IPP provides an 157 infrastructure within which the Analysis Stages above are exectuted. 158 We have divided the IPP software infrastructure into a number of 159 clearly-defined architectural software units, listed as follows: 160 161 \begin{itemize} 162 163 \item {\bf Image Server:} This component is a large data store for all 164 images used by the IPP, including the raw images from the telescope, 165 the master calibration images, the reference static-sky images, and 166 any temporary image data products produced by the IPP. The Image 167 Server accepts the incoming data and stores it until it is no longer 168 needed by other portions of the IPP. The Image Server is not 169 restricted to imaging data: it is capable of storing any large data 170 files which are not well-suited for inclusion in a more structured 171 relational database and for which access needs to be widely 172 available beyond the individual process which created the file. 173 174 \item {\bf Astrometry \& Photometry Database (AP DB):} This component 175 stores and manipulates astronomical objects detected in various 176 images, as identified above, including individual measurements of 177 objects on the images, the summary information about those objects, 178 and reference object data. It also provides mechanisms for users to 179 query and manipulate the objects and detections. 180 181 \item {\bf Metadata Database:} This component stores the data which is 182 not directly related to images or astronomical objects, but which is 183 needed to perform the IPP analyses. The metadata may include the 184 summary weather information for each night, or details about the 185 filters, camera, telescopes, etc. 186 187 \item {\bf IPP Controller:} In order to perform the analysis stages 188 required by the IPP, it is necessary to use distributed computing 189 processes on a large number of computers. The IPP Controller 190 manages the collection of analysis tasks performed on these 191 machines. 192 193 \item {\bf IPP Scheduler:} This component is a decision-making 194 mechanism which guides the operation of the IPP. It evaluates the 195 currently available collection of data, identifies the necessary 196 analysis, and assigns the analysis tasks to the IPP Controller. 197 198 \end{itemize} 199 200 The relationship between these software units is shown in 201 Figure~\ref{overview}. This figure also shows the interactions 202 between the IPP and other Pan-STARRS systems. The architectural 203 components are discussed in detail in 204 Section~\ref{IPP:ArchComponents}. 205 206 \begin{figure} 207 \begin{center} 208 \resizebox{6in}{!}{\includegraphics{pics/IPPoverview}} 209 \caption{ \label{overview} IPP System Overview} 210 \end{center} 211 \end{figure} 212 213 \subsection{IPP Hardware Organization} 214 215 \begin{figure} 216 \begin{center} 217 \resizebox{4.5in}{!}{\includegraphics{pics/IPPhardware}} 218 \caption{ \label{hardware} IPP Hardware Organization} 219 \end{center} 220 \end{figure} 221 222 The IPP needs substantial computer resources, both in terms of 223 computational power and in terms of data storage and network 224 bandwidth. The IPP requires relatively large amounts of data storage 225 space, primarily for the image data. Image data is organized in two 226 categories. First, there is the per-OTA data -- data associated with 227 specific OTAs, including the raw images, the calibration images, and 228 temporary processed images at various stages. Second, there is the 229 data associated with the static sky imagery, which is in turn 230 organized into smaller sky-cell units. In addition to image data, 231 there are the somewhat smaller data entities of the Metadata Database 232 and AP Database. 233 234 The computer hardware is organized into nodes which provide both data 235 storage and computational resources. The data storage nodes are 236 divided into three classes: those which deal with the per-OTA image 237 data, those that provide the storage for the static sky images, and 238 those that provide the storage for the other data systems, the 239 Metadata Database and the AP Database. In addition, the computational 240 tasks related to Phase 2 take place on the per-OTA storage nodes and 241 the Phase 4 computation takes place on the static sky storage nodes. 242 243 Figure~\ref{hardware} shows our basic concept for the hardware 244 organization for the IPP. This diagram shows the two types of compute 245 nodes: OTA-level processing and storage nodes (dominated by Phase 2) 246 and static sky processing and storage nodes (mostly Phase 4). Also 247 shown are two switches which divide the network into OTA and 248 Static-Sky portions. In such an organization, the interswitch 249 communication must meet the throughput needs between these network 250 portions. The additional data systems (Metadata Database and AP 251 Database) are also shown. 252 253 %%% needs some work / move around elsewhere 254 \subsection{System Interfaces} 255 256 \paragraph{MOPS and other Client Science Pipelines} 257 258 The Client Science Programs (CSPs) and the Moving Object Processing 259 System (MOPS) are not a part of the IPP, but are external systems. We 260 include them here to show the required interfaces. 261 262 The CSPs and MOPS may query the Pixel DB, the Metadata DB and the 263 Object DB. In addition, they may write certain fields to the object 264 DB (e.g., the external identifiers and class of object) as they 265 process objects, and they may retrieve pixel data from the Nodes. 266 267 Since ``CSPs'' is a vague term, we now give some examples which may 268 help to illustrate the functionality. 269 270 One example of a CSP is a web front-end to retrieve (published) images 271 and objects from the Pixel DB and Object DB. 272 273 Another example would be a program interested in searching for 274 transiting extrasolar planets. Such a program may periodically poll 275 the Metadata DB for new processed observations in its region of 276 interest (such as the Galactic Plane), retrieve the object photometry 277 of all high signal-to-noise stars in the processed observations, and 278 attempt to identify a planetary transit in progress. 279 280 Yet another example would be a Stationary Transient Object Pipeline, 281 which would periodically poll the Metadata DB for new processed 282 observations, and query the Object DB for variable sources which were 283 identified twice (so that they are not moving objects). 284 285 \subsection{System Design Decisions} 108 286 109 287 Since \PS{} is a survey project, all data from the telescopes will be … … 128 306 System (MOPS), and potentially other client science pipelines. 129 307 130 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 131 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 132 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 133 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 134 135 \subsection{System Overview} 136 137 The \PS{} Image Processing Pipeline (IPP) consists of a collection of 138 computer hardware and software organized to perform the tasks required 139 to process images from the \PS{} telescopes. The primary goal of the 140 IPP is to process the science images from the \PS{} telescopes and 141 make the results available to other systems within \PS{}. To achieve 142 this goal, the IPP must also perform other analysis functions to 143 generate the calibrations needed in the science image processing and 144 to occasionally use the derived data to generate improved astrometric 145 and photometric reference catalogs. 146 147 In order to meet these broad goals, the IPP must have the following 148 capabilities: 308 \section{System Design : Architectural Components} 309 310 \subsection{IPP Image Server} 311 312 \begin{figure} 313 \psfig{file=pics/ImageServer,width=15cm,angle=0} 314 \caption{The components of the IPP Image Server.} 315 \label{fig:ImageServer} 316 \end{figure} 317 318 The IPP Image Server is a repository for all images and other large 319 data files required by the IPP. In addition, it provides tools for 320 managing the distribution of these large data files and for accessing 321 the files. Data files stored by the IPP Image Server include the raw 322 images, the calibration images, intermediate processing stage images 323 as needed, final processed images, difference images, image 324 subsections, and any large non-imaging datafiles needed by the IPP. 325 The IPP Image Server must retain the files for as long as they are 326 needed by the IPP. 327 328 The IPP Image Server is a parallel storage system. It stores data 329 across a collection of computer nodes, each with their own data 330 storage resources. Any single file is stored on only a single 331 computer and storage system. In order to achieve the data throughput 332 requirements, the IPP Image Server may distribute the images across 333 the processor nodes in an organized fashion, i.e.\ associating 334 specific machines with specific detectors. It is not the 335 responsibility of the IPP Image Server to determine which computer 336 should be associated with a specific data concept (Chip / region of 337 sky), but it must enable the association of a particular file with a 338 particular machine. 339 340 There are three data concepts relevant to the IPP Image Server: 149 341 \begin{itemize} 150 \item Store a large amount of image data, and other derived data 151 products (metadata and extracted objects); 152 \item Provide access mechanisms to these data products (both to the 153 subsystems of the IPP and in some cases to external users); 154 \item Continuously accept new image data and metadata from the 155 telescope system; 156 \item Execute various analysis processes using these data products; 157 and 158 \item Provide the decision-making logic needed to guide the data 159 processing, and to automatically launch the data processing tasks on 160 an appropriate timescale. 342 \item {\bf storage object} This represents a single, unique data 343 entity the Image Server. 344 345 \item {\bf instance} A single copy of the storage object in the Image 346 Server. In general, given storage object may have several instances 347 in the Image Server, normally on different computer nodes. 348 349 \item {\bf file ID} This is the identifier of a particular storage 350 object in the Image Server. The file ID is simply a unique string, 351 equivalent to the filename in a UNIX file system. 161 352 \end{itemize} 162 The IPP therefore includes subsystems which provide the data storage 163 framework, the data analysis framework, and the scheduling of the 164 analysis processes. The data storage subsystems also provide 165 interface mechanisms to the external \PS{} systems. 166 167 The IPP architecture can be viewed in several possible ways. We first 168 consider the software architecture components needed by the IPP. 169 These subsystems provide the infrastructure for the data storage and 170 the data processing. Next, we consider the analysis pipelines which 171 make up the major processing tasks that must be performed by the IPP. 172 Finally, we consider the hardware organization required to efficiently 173 and cost-effectively achieve the necessary computing and storage 174 requirements. 175 176 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 177 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 178 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 179 180 \subsection{System Architecture} 181 182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 183 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 184 185 \subsubsection{Architectural Components} 186 187 In Figure~\ref{fig:functionalities} we show the functionality of the 188 IPP. 189 190 The Observatory and Telescope System (\textbf{OATS}) system at the 191 summit periodically produces metadata (e.g.\ weather measurements, 192 observations completed) and pixel data (the image pixels from the 193 cameras). The \textbf{Pollster} regularly (e.g., twice per minute) 194 polls OATS for the existence of new data. If new data exists, the 195 Pollster writes it to the \textbf{Metadata DB}, which maintains a 196 table of observations that have been obtained and whether these 197 observations are reduced, not reduced, or being reduced. The 198 \textbf{Scheduler} regularly (e.g., twice per minute) polls the 199 Metadata DB for observations that match predefined criteria that are 200 required to run reduction processes. For example, the Phase 1 201 processing requires that Phase 0 has been run on a focal plane 202 metadata, and also requires that the observations are available and 203 have not yet been processed. If the criteria are met, the appropriate 204 stage is passed to the \textbf{Localiser} which, checks the 205 \textbf{Pixel DB} to determine if the stage should be performed on a 206 particular node. The Localiser passes the reduction stage to be 207 processed, along with the preferred (or mandatory) node that should 208 execute the reduction stage, to the \textbf{Controller}. It is the 209 Controller's responsibility to maintain the list of reduction stages 210 to be processed and execute these stages on the \textbf{Nodes}. The 211 Nodes may retrieve the pixel data from OATS, they write to the Pixel 212 DB the location of the products of the reduction and report their 213 completion to the Controller. 214 215 External systems, such as the Moving Object Processing System 216 (\textbf{MOPS}) and other Client Science Pipelines (\textbf{CSPs}) 217 read the Metadata DB and the Object DB. They may also write to the 218 Object DB the classification of particular objects (e.g., identify an 219 object as an asteroid). Also, the MOPS and CSPs may also query the 220 Pixel DB for the location of pixel data and copies data from the 221 Nodes. 222 223 \begin{figure} 224 \psfig{file=pics/IPPfunctionalities,width=15cm,angle=0} 225 \caption{The functionalities of the architectural design. See the text 226 for further explanation.} 227 \label{fig:functionalities} 228 \end{figure} 229 230 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 231 232 \paragraph{OATS} 233 234 The Observatory And Telescope System (OATS) is not a part of the IPP, 235 but interfaces are required with it in order to allow the Pollster to 236 get the list of observations not in the Metadata DB, and the nodes to 237 retrieve pixel data. Also, the Scheduler may report the need for new 238 calibration data. 239 240 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 241 242 \paragraph{Pollster} 243 244 The Pollster is a program that polls OATS at regular intervals for the 245 existence of observations not contained in the Metadata DB. New 246 weather and image metadata are written to the Metadata DB. 247 248 There is no reason why this architectural component cannot be 249 contained within another (such as the Scheduler), but it is shown here 250 as separate for simplicity. 251 252 A polling model is adopted so that OATS' interface may be kept as 253 simple as possible --- OATS should not be concerned with whether the 254 IPP has received notifications. Under this polling model, it is 255 specifically the responsibility of the IPP to retrieve from OATS the 256 metadata that is not not already in the Metadata DB. 257 258 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 259 260 \paragraph{Metadata DB} 261 262 The Metadata DB stores and maintains the metadata\footnote{Note that 263 metadata is any data which is not pixel data or object data.}, 264 including the list of images taken by the telescope system and whether 265 these images have been processed. The Metadata DB is regularly polled 266 by the Scheduler to determine what images are ready to be processed. 267 268 Both the Scheduler and the Pollster update the status of the Metadata 269 DB --- the Pollster as new images become available at the Summit, and 270 the Scheduler as images are processed. 271 272 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 273 274 \paragraph{Scheduler} 275 276 The Scheduler is responsible for determining the processing stages 277 that are required to be run on any data. Examples of these processing 278 stages are ``Copy the pixels from the summit'' and ``Run Phase 2 279 processing on chip 12 of exposure 123''. 280 281 Processing stages to be executed are passed to the Localiser, which 282 returns to the Scheduler the list of processing stages with node 283 assignments to each of the stages. This list of processing stages 284 with node assignments is passed to the Controller for execution. 285 286 Processing stages which have executed are reported by the Controller, 287 which updates the Metadata DB appropriately. 288 289 The Scheduler may also interact with OATS to inform it of the need 290 for new calibration data. 291 292 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 293 294 \paragraph{Localiser} 295 \label{sec:localiser} 296 297 It is the duty of the Localiser to assign processing stages to 298 particular nodes. This may be in order to optimise performance by 299 distributing the stages across the nodes, or in the simplest possible 300 case, it may make no recommendation upon the node which performs a 301 particular stage. 302 303 The Localiser may query the Pixel DB in order to identify the location 304 of calibration data that may be needed for the processing stage to run 305 (and in all likelihood, assign the processing stage to the same node as 306 that which holds the calibration data). 307 308 The Localiser may either demand or request that a stage is performed on 309 a particular node, or make no recommendation, and passes the processing 310 stage back to the Scheduler. 311 312 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 313 314 \paragraph{Controller} 315 316 The Controller's job is to control the execution of the processing 317 stages on the nodes. It is passed stages by the Localiser, and 318 executes them on the appropriate nodes. It must detect whether a node 319 executing a processing stage has died, and re-execute the stage on an 320 alternate node. 321 322 The completed stages are reported back to the Scheduler. 323 324 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 325 326 \paragraph{Pixel DB} 327 \label{sec:pixeldb} 328 329 The Pixel DB is responsible for storing and maintaining the location 330 of pixel data in the IPP, including the raw images from the telescope, 331 the master calibration images, the reference static-sky images, and 332 any temporary image data products produced by the IPP. It provides 333 this information upon request to the Localiser. 334 335 Note that this design assumes that the pixel data will be stored on 336 the same nodes that will be doing the processing. 337 338 The Pixel DB will be periodically ``published'' as the quality of the 339 data is assured. The external world will only have access to the 340 published version of the Pixel DB. 341 342 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 343 344 \paragraph{Nodes} 345 346 The Nodes perform the grunt work of executing the processing stages as 347 directed by the Controller. When the processing stage has completed, 348 they report back to the Controller. 349 350 They may retrieve pixel data from OATS (the Summit) and write it to 351 local disk when directed to do so by the Controller. They also may 352 access the Metadata DB to read configurations, weather information 353 etc, and to write summary statistics etc. They may also access the 354 Object DB to read objects of interest, and to write objects from the 355 processing stage. 356 357 As they write products, the Nodes register with the Pixel DB that they 358 have written the requested output (so that the Pixel DB is aware that 359 the data has been written and is not merely scheduled to be written). 360 The Nodes do not need to read from the Pixel DB, since everything 361 (where to read input pixels from, where to write output pixels to) is 362 specified by the Localiser. 363 364 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 365 366 \paragraph{Object DB} 367 368 The Object DB is a facility to store all of the information about 369 astronomical objects, including individual measurements of objects on 370 the images, the summary information about those objects, and reference 371 object data\footnote{Note that this is (possibly) a separate entity 372 from the object database being developed by SAIC.}. 373 374 The Nodes, CSPs and MOPS may read objects from the Object DB, and the 375 Nodes may write objects (either new objects or updates), and the CSPs 376 and MOPS may write certain fields of objects (e.g., the external 377 identifiers and class of object). 378 379 The Object DB will be periodically ``published'' as the quality of the 380 data is assured. The external world will only have access to the 381 published version of the Object DB. The published version of the 382 Object DB will likely be the DB being developed by SAIC. 383 384 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 385 386 \paragraph{CSPs and MOPS} 387 388 The Client Science Programs (CSPs) and the Moving Object Processing 389 System (MOPS) are not a part of the IPP, but are external systems. We 390 include them here to show the required interfaces. 391 392 The CSPs and MOPS may query the Pixel DB, the Metadata DB and the 393 Object DB. In addition, they may write certain fields to the object 394 DB (e.g., the external identifiers and class of object) as they 395 process objects, and they may retrieve pixel data from the Nodes. 396 397 Since ``CSPs'' is a vague term, we now give some examples which may 398 help to illustrate the functionality. 399 400 One example of a CSP is a web front-end to retrieve (published) images 401 and objects from the Pixel DB and Object DB. 402 403 Another example would be a program interested in searching for 404 transiting extrasolar planets. Such a program may periodically poll 405 the Metadata DB for new processed observations in its region of 406 interest (such as the Galactic Plane), retrieve the object photometry 407 of all high signal-to-noise stars in the processed observations, and 408 attempt to identify a planetary transit in progress. 409 410 Yet another example would be a Stationary Transient Object Pipeline, 411 which would periodically poll the Metadata DB for new processed 412 observations, and query the Object DB for variable sources which were 413 identified twice (so that they are not moving objects). 414 415 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 416 417 \paragraph{Related/Connected components} 418 419 The Pollster may be contained within the Scheduler (i.e., the 420 Scheduler may initiate and/or schedule as a processing stage the 421 Pollster), but this is not assumed to be so in this document; this 422 decision is left to the implementation. 423 424 The Localiser is strongly coupled to the Pixel DB, and throughout this 425 document, these are both referred to as components of the ``IPP Pixel 426 Server''. 427 428 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 429 430 \paragraph{Responsibility} 431 432 The IPP team will develop and have responsibility for maintaining 433 these systems. 434 435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 437 438 \subsubsection{Processing Stages} 439 \label{sec:processingStages} 440 441 We now consider the collection of IPP processing stages which are 442 executed by the Controller on the Nodes. We define a ``stage'' to be 443 the largest complete task which may be performed in serial without 444 interation between parallel threads. 445 446 Depending on the particular stage, it may process individual images, 447 collections of images, or on derived data products. Because of the 448 nature of the image data, many of the analysis stages can be run in 449 parallel because, for example, the analysis of a chip in one image 450 does not depend on the results from another chip. 451 452 The data analysis stages are divided into several categories as follows: 453 454 \begin{enumerate} 455 \item Retrieval Stage --- pixel data are retrieved from OATS (the 456 Summit). 457 \item Science Image Processing Stages 458 \begin{enumerate} 459 \item Phase 1: image processing preparation --- estimates 460 first-order astrometric and photometric solutions required to 461 process each major frame. 462 \item Phase 2: image reduction --- produces calibrated chips from 463 raw chips. 464 \item Phase 3: exposure analysis --- processes an FPA to produce 465 unified and consistent backgrounds, photometry and astrometry for 466 the component chips. 467 \item Phase 4: image combination --- processes sky cells overlapped 468 by a major frame. 469 \end{enumerate} 470 \item Calibration Image Processing Stages 471 \begin{enumerate} 472 \item Cal 1: Basic master-detrend creation --- combination of simple 473 detrend images (e.g., bias, dome flat etc). 474 \item Cal 2: Sky-model/fringe-mode generation --- combination of 475 more-complicated detrend images (e.g., fringe, scattered light 476 etc). 477 \item Cal 3: Flat-field correction image creation --- analysis of 478 photometry from multiple dithered FPAs. 479 \end{enumerate} 480 \item Calibration Test Processing Stage 481 \begin{enumerate} 482 \item CalTest 1: Detrend frame testing --- tests whether new 483 calibration frames are required. 484 \item CalTest 2: Photometric float correction testing --- tests 485 whether a new photometric flat correction is required. 486 \end{enumerate} 487 \item Reference Catalog Processing Stages 488 \begin{enumerate} 489 \item Astrometry reference catalog generation --- processing of the 490 astrometric data to determine and apply a consistent global 491 solution. 492 \item Photometry reference catalog generation --- processing of the 493 photometric data to determine and apply a consistent global 494 solution. 495 \end{enumerate} 496 \end{enumerate} 497 498 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 499 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 500 501 \subsubsection{Hardware Systems} 502 503 The basic IPP hardware organization is shown in Figure~\ref{hardware}. 504 The overall hardware organization, with a Detector subcluster and a 505 Static Sky subcluster, is largely chosen to reduce the I/O load during 506 the pre-reduction analysis of the raw science images. In addition, we 507 have specified distinct machines to maintain the object and metadata 508 databases. \tbd{This last aspect is largely theoretical until we have 509 defined the details of these databases; it may be more appropriate 510 depending on the eventual solutions to distribute these database 511 elements across the Detector and Static Sky subclusters.} 512 513 \begin{figure} 353 354 The Image Server provides file pointers (in C), handles (in Perl), or 355 file names corresponding to the instances of the storage objects. 356 Image Server requires a file system which provides files in the local 357 file system. This may be done over many machines with a network file 358 system such as NFS or GFS. \tbd{select file system for IPP / test NFS 359 vs GFS vs Mogile, etc}. 360 361 The IPP Image Server provides the storage and access mechanisms, but 362 it does not include any logic or information about the data. The 363 Image Server does not, e.g., monitor the age of images and delete them 364 on some schedule. 365 366 The IPP Image Server consists of the following components: 367 368 \begin{itemize} 369 \item Image Server storage hardware 370 \item Image Server database 371 \item Image Server daemon 372 \item Image Server client APIs 373 \end{itemize} 374 375 \paragraph{IPP Image Server Client APIs} 376 377 Clients interact with the IPP Image Server with a small number of C 378 APIs (Bindings are also provided for Perl \tbr{and Python}). The 379 client commands are: 380 381 \begin{itemize} 382 \item {\tt new object}: create a new storage object in the Image 383 Server. This function takes as input the file ID and returns a 384 C-style file pointer or a Perl file handle to the instance of the 385 storage object. The arguments to the function include an optional 386 node name on which the new storage object must be located. If this 387 target is not given, the Image Server places the new storage object 388 on an appropriate machine from the pool (least filled? most data? 389 randomized? the details need to be decided). 390 391 \item {\tt open object}: open an instance of an existing storage 392 object, as identified by the file ID. This function may also 393 specify the node on which the object should be opened (if an 394 instance of the object is not stored on that node, the function 395 returns an error). On success, the function returns a file pointer. 396 397 \item {\tt find object}: return a list of filenames in the UNIX name 398 space associated with the storage object identified by the given 399 file ID. Since there are in general multiple instances for a given 400 storage object, this function returns the collection of all 401 available instances. These may be freely opened by the client 402 server using the standard \code{fopen} functions. 403 404 \item {\tt stat object}: returns status information about the 405 specified storage object, including the number of instances of the object. 406 407 \item {\tt increment object count}: adds a new instance of the given 408 storage object. The target node may be optionally specified, 409 otherwise an appropriate node is selected. 410 411 \item {\tt decrement object count}: removes one of the instances of 412 the storage object. The input parameters may optionally specify the 413 target machine to delete. 414 415 \item {\tt delete object}: deletes all instances of the storage object 416 and sets the storage object status to {\tt deleted}. 417 \end{itemize} 418 419 \subsubsection{IPP Image Server Daemon} 420 421 The Image Server client requests are mediated via the Image Server 422 daemon. Communication between the clients and the server is via 423 \tbr{SOAP (or flat text commands)} implementing the commands above. 424 425 \subsubsection{IPP Image Server Database} 426 427 The IPP Image Server daemon uses a database to store the information 428 about the data storage objects, their instances, and the available 429 hardware resources. A \tt{mysql} database engine is used to manage 430 the database. The database tables defined for the Image Server are 431 listed in Table~\ref{ImageServerTables}, and their current contents 432 are listed in Appendix A. This database engine need not the same one 433 as used for the IPP Metadata Database. 434 % 435 \begin{table} 514 436 \begin{center} 515 \resizebox{8cm}{!}{\includegraphics{pics/hardware}} 516 \caption{ \label{hardware} IPP Hardware Organization} 437 \caption{Image Server Database Tables\label{ImageServerTables}} 438 \begin{tabular}{ll} 439 \hline 440 \hline 441 {\bf Table Name} & {\bf Description} \\ 442 \hline 443 \code{storage_object} & all storage objects known to Image Server \\ 444 \code{instance} & all instances of all storage objects \\ 445 \code{volume} & data storage devices known to Image Server \\ 446 \hline 447 \end{tabular} 517 448 \end{center} 518 \end{figure} 519 520 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 521 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 522 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 523 524 \subsection{Software Hierarchy} 525 526 In order to facilitate testing and development, and to encourage 527 flexibility, the IPP will be built in a layered fashion. The lowest 528 level functions will be written in C and collected together into a 529 \PS{} library. These library functions will be used to write more 530 complex modules. The modules will be written in C but will make use 531 of the SWIG tool to make their functionality available within other 532 frameworks. In particular, the modules can be tied together with a 533 simple framework (an `engine') or with detailed flow-control through 534 the use of a high-level language such as Perl, Python, or Tcl 535 employing the SWIG interfaces. For the high-level functions in the 536 operational system, the IPP will make use of \tbd{Python} as the 537 scripting language to provide the required flow-control to tie the 538 modules together. 539 540 This approach satisfies the requirement that complicated low-level 541 analysis steps run fast, while preserving flexibility for coding the 542 high-level wrappers for which the speed requirements are not so 543 stringent. 544 545 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 546 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 547 548 \subsubsection{External Libraries} 549 550 \PS{} will employ several external libraries to save duplicating 551 functionality that is already available. These external libraries 552 will be wrapped by the \PS{} Library, insulating the project from the 553 implementation details of the external libraries. Examples of the 554 external libraries are FFTW and SLALib. 555 556 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 558 559 \subsubsection{\PS{} Library} 560 561 The \PS{} Library will consist of C structures describing the basic 562 data types needed by the IPP and C functions which perform the basic 563 data manipulation operations. Note that a subset of the library 564 functions will be provided with SWIG interfaces as well to allow for 565 their use in the creation of the processing stages. Examples of the 566 \PS{} Library are fourier transforms and transforming between pixel 567 and celestial coordinates. 568 569 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 570 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 571 572 \subsubsection{Modules} 573 574 The IPP analysis stages are broken down into modules which represent 575 specific functional operations. The modules will be written in C 576 using the \PS{} Library functions and will be grouped into a \PS{} 577 Module Library. The modules will be provided with SWIG interfaces to 578 all public APIs for their use in processing stages. Examples of 579 modules are overscan subtraction and image combination. Some modules 580 (e.g.\ find objects on an image) will be used by multiple stages. 581 582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 583 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 584 585 \subsubsection{Stages} 586 587 The major IPP processing tasks are organized into stages, which 588 consist of multiple modules. Each stage represents a collection of 589 complex operations performed on a single data entity. Each stage 590 therefore represents the maximum amount of effort which can be 591 performed in serial without interaction between parallel threads. The 592 stages will be written in \tbd{Python}, linking the modules together. 593 Examples of stages are Phase 2 (detrend images) and Phase 4 (combine 594 images from multiple telescopes and search for transients). 595 596 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 597 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 598 599 \subsubsection{Orchestration} 600 601 High-level components such as the Scheduler, the Controller and the 602 Localiser are for process control. As such, they shall be written in 603 \tbd{Python} in order to maintain flexibility. 604 605 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 606 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 607 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 608 609 \subsection{System Interfaces} 610 611 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 612 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 613 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 614 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 615 616 \section{System Architectural Design} 617 618 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 619 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 620 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 621 622 \subsection{Architectural Components} 623 624 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 625 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 626 627 \subsubsection{Pollster} 628 629 The Pollster simply polls OATS on a regular basis for metadata 630 (including telescope exposures) which is not known by the IPP (i.e., 631 already written in the Metadata DB). On the discovery of such metadata, 632 it is written to the Metadata DB. 633 634 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 636 637 \subsubsection{Pixel Server} 638 639 The IPP Pixel Server (IPS) is a repository for all image pixel data 640 required by the IPP, and fulfills the roles of the Pixel DB 641 (\S\ref{sec:pixeldb}) and the Localiser (\S\ref{sec:localiser}). In 642 addition, it also provides components for managing the distribution of 643 data, and accessing the data. 644 645 Images may reside in the IPS for different periods depending on their 646 use and type. Data stored by the IPS include the raw images, the 647 calibration images, intermediate processing stage images as needed, 648 final processed images, difference images, and image subsections, 649 \tbd{along with the associated metadata}. The IPS must retain images 650 as long as they are needed, up to the lifetime of the project. In 651 order to achieve the I/O requirements, the IPS may maintain the pixel 652 data distributed across the processor nodes in an organized fashion, 653 i.e.\ associating specific machines with specific detectors. The IPS 654 interacts with the IPP Metadata Database to allow other systems or 655 subsystems to identify the available images meeting specified 656 criteria. IPS specifications are described in the IPS subsystem 657 specification. 658 659 In addition to storing the pixel data, the IPS is responsible for 660 acquiring new image data and metadata from the Summit Pixel Server and 661 making it available for processing by the IPP System. 662 663 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 664 665 \paragraph{IPP Pixel Server Components} 666 667 The IPP Pixel Server (IPS) fulfills the roles of the Pixel DB 668 (\S\ref{sec:pixeldb}) and the Localiser (\S\ref{sec:localiser}), and 669 consists of the following components: 670 671 \begin{enumerate} 672 \item IPP Pixel Server Data Locality Optimizer (IPSDLO) 673 \item IPP Pixel Server Database (IPSD) 674 \item IPP Pixel Server Maintainance (IPSM) 675 \item IPP Pixel Server I/O Library (IPSIOL) 676 \end{enumerate} 677 678 This assumes that the pixel data will be stored on the nodes. Each 679 image shall have a unique Universal Resource Identifier (URI) which 680 specifies the location of the pixel data. As an example, consider a 681 cluster with cross-mounted disks --- in this case, the filename 682 incorporating the full path would serve as the URI. 683 684 The components of the IPS and their relation to other components (both 685 within the IPS and without) are showin in Figure~\ref{fig:ips}. 686 687 \begin{figure} 688 \psfig{file=pics/IPS,width=15cm,angle=0} 689 \caption{The components of the IPS. In addition to the IPSDLO, IPSD 690 and IPSM, the IPSIOL is also a component of the IPS; use of the IPSIOL 691 is shown as dotted arrows in the interactions. Note that the nodes use 692 the IPSIOL to pass pixel data between each other.} 693 \label{fig:ips} 694 \end{figure} 695 696 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 697 698 \subparagraph{IPP Pixel Server Data Locality Optimizer (IPPDLO)} 699 700 Processing stages generated by the Scheduler are passed through the 701 IPSDLO which does the following: 702 \begin{enumerate} 703 \item assigns tasks to specific nodes; 704 \item identifies the URI of the required input data; and 705 \item identifies the URI the output data should be written to. 706 \end{enumerate} 707 708 This allows the choice of processing node to be optimized so that it 709 resides on the node which will process it, as well as allowing the 710 output to be written to the node which requires it for the next 711 processing stage. 712 713 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 714 715 \subparagraph{IPP Pixel Server Database (IPSD)} 716 \label{sec:ipsd} 717 718 The IPSD maintains a database of URIs for the pixel data on the nodes. 719 It should be able to return the URI of the pixel data given one of: 720 \begin{enumerate} 721 \item an exposure identifier and a chip identifier (raw and processed 722 pixel data from the telescope); 723 \item a calibration identifier (detrend pixel data); and 724 \item a sky cell identifier (summed static sky, reduced and difference 725 pixel data). 726 \end{enumerate} 727 728 The IPSD will also contain a history of data management commands and 729 actions. 730 731 \tbd{Is there a reason why this is not a part of the Metadata DB?} 732 733 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 734 735 \subparagraph{IPP Pixel Server Maintenance (IPSM)} 736 737 The IPSM initiates the execution of bulk data management processing 738 stages. It may have an automated component which, e.g., monitors the 739 disk space on each of the nodes and redistributes them if they become 740 unbalanced. However, the main intent is that it is used by a human 741 operator to reorgainise the data, e.g., after a new data optimisation 742 plan has been formulated, or to delete old data. 743 744 The IPSM passes processing stages to the Controller which executes 745 them on the specified nodes. 746 747 The IPSM allows four types of operation: 748 \begin{itemize} 749 \item Retrieve external data --- to manually trigger the copying of 750 external data (routine copying of the pixel data from OATS is 751 handled by the Scheduler). The IPSM generates {\em retrieve data} 752 stages which are passed to the Controller for execution. 753 \item Delete data --- to delete old data. The IPSM looks up the 754 location of the data in the IPSD and generates {\em delete data} 755 stages which are passed to the Controller for execution. 756 \item Replicate data --- to backup and rearrange data. The IPSM 757 generates {\em copy data} stages which are passed to the Controller 758 for execution. Note that this mode differs from the ``copy external 759 data'' mode in that it copies data already within the IPS. 760 \item Move data --- to reorganise storage. The IPSM executes a 761 replication followed by a deletion. 762 \end{itemize} 763 764 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 765 766 \subparagraph{IPP Pixel Server I/O Library (IPSIOL)} 767 768 The IPSIOL provides a mechanism for reading and writing pixel data to 769 the IPS. The existence of the IPSIOL insulates the processing stages 770 from the details of how the pixel data are stored (i.e., the 771 processing stages need not worry whether the data is stored locally or 772 remotely). It will generally be used on the nodes and the IPSDLO, 773 although other components will also make use of it. 774 775 The IPSIOL will be able to: 776 \begin{itemize} 777 \item Open a file specified by a URI --- it may simply open the file 778 if it exists on the particular node, or it may retrieve the file 779 over the network. 780 \item Write a file specified by a URI --- it may simply write the file 781 if it exists on the particular node, or it may copy the file over 782 the network. It should also register with the IPSD that a file 783 specified by a URI has been written. 784 \item Delete a file specified by a URI --- it may simply delete the 785 file if it exists on the particular node, or it may delete the file 786 over the network. 787 \item Interface with the IPSD to return a URI given one of the 788 identifiers in \S\ref{sec:ipsd}. 789 \end{itemize} 790 791 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 792 793 \paragraph{Pixel Data Flow Examples} 794 795 For examples of the operation of the IPS, below we sketch out the 796 intended sequence of events for common operations. 797 798 Reads during processing: 799 \begin{enumerate} 800 \item A processing stage has been passed (from the Scheduler) the URI 801 for an image that it needs to load into memory. 802 \item The processing stage uses the IPSIOL to open the image. 803 \item The processing stage reads the image into local memory in the 804 usual manner. 805 \item The processing stage closes the image using the IPSIOL. 806 \end{enumerate} 807 808 Writes during processing: 809 \begin{enumerate} 810 \item A processing stage has been passed (from the Scheduler) the URI 811 for an image that needs to be saved, e.g., a subtracted image. 812 \item The processing stage uses the IPSIOL to open the image. 813 \item The processing stage writes the image in the usual manner. 814 \item The processing stage closes the image using the IPSIOL. 815 \end{enumerate} 816 817 Note how the IPSIOL has insulated the processing stage from the details 818 of the reading and writing. 819 820 Maintenance: 821 \begin{enumerate} 822 \item A human operator decides that all the pixel data for chip 12 823 should be stored on node 3. 824 \item Operator plugs this into the IPSM. 825 \item The IPSM queries the IPSD using the IPSIOL. 826 \item The IPSD returns the URIs for all the pixel data for chip 12. 827 \item The IPSM generates processing tasks to be executed on the nodes 828 that will copy the data from the old URIs to a new URI which 829 specifies node 3. 830 \item The IPSM generates processing tasks to be executed on the nodes 831 that deletes the data pointed to by the old URIs. 832 \item The IPSM reports success to the operator. 833 \end{enumerate} 834 835 Client Science Pipelines: 836 \begin{enumerate} 837 \item A CSP wants some pixel data. 838 \item The CSP queries the IPSD using the IPSIOL (e.g., asking for a 839 particular exposure or sky cell). 840 \item The IPSD returns the URI for the pixel data. 841 \item The CSP opens the image using the IPSIOL and the URI. 842 \item The CSP reads the pixel data into memory in the usual manner. 843 \item The CSP closes the image using the IPSIOL. 844 \end{enumerate} 845 846 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 449 \end{table} 450 451 \subsubsection{IPP Image Server Storage Hardware} 452 453 The IPP Image Server manages data across a collection of computers and 454 possibly on multiple storage devices on those computer nodes. The 455 Image Server maintains a table of the available data volumes. The 456 Image Server tracks information about each volume such as the total 457 capacity, the current capacity, the association between computer and 458 data volume. 459 460 \paragraph{IPP Image Server Maintenance Tools} 461 462 The IPP Image Server provides a collection of administration tools 463 which allow for maintainence. These are operations which may be 464 automatically scheduled for the IPP or which may be initiated by a 465 human via a command-shell interface. The maintainence functions 466 include migrating data between nodes to rebalance the available space 467 (this would only occur for instances which have not been placed on a 468 specific node by the client API). Other functions include checking 469 for file corruption, which involves sweeping all files on a data 470 volume and comparing the calculated file checksum to the currently 471 recorded value. 472 847 473 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 848 474 … … 1477 1103 manner given the capabilities of the science pipelines. 1478 1104 1105 \paragraph{Pollster} 1106 1107 The Pollster is a program that polls OATS at regular intervals for the 1108 existence of observations not contained in the Metadata DB. New 1109 weather and image metadata are written to the Metadata DB. 1110 1111 There is no reason why this architectural component cannot be 1112 contained within another (such as the Scheduler), but it is shown here 1113 as separate for simplicity. 1114 1115 A polling model is adopted so that OATS' interface may be kept as 1116 simple as possible --- OATS should not be concerned with whether the 1117 IPP has received notifications. Under this polling model, it is 1118 specifically the responsibility of the IPP to retrieve from OATS the 1119 metadata that is not not already in the Metadata DB. 1120 1121 \subsubsection{Pollster} 1122 1123 The Pollster simply polls OATS on a regular basis for metadata 1124 (including telescope exposures) which is not known by the IPP (i.e., 1125 already written in the Metadata DB). On the discovery of such metadata, 1126 it is written to the Metadata DB. 1127 1479 1128 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1480 1129 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 1525 1174 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1526 1175 1527 \subsection{ ProcessingStages}1176 \subsection{Analysis Tasks and Stages} 1528 1177 1529 1178 In this section, we review the processing stages which are executed on … … 2326 1975 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2327 1976 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1977 1978 \subsection{Software Hierarchy} 1979 1980 In order to facilitate testing and development, and to encourage 1981 flexibility, the IPP will be built in a layered fashion. The lowest 1982 level functions will be written in C and collected together into a 1983 \PS{} library. These library functions will be used to write more 1984 complex modules. The modules will be written in C but will make use 1985 of the SWIG tool to make their functionality available within other 1986 frameworks. In particular, the modules can be tied together with a 1987 simple framework (an `engine') or with detailed flow-control through 1988 the use of a high-level language such as Perl, Python, or Tcl 1989 employing the SWIG interfaces. For the high-level functions in the 1990 operational system, the IPP will make use of \tbd{Python} as the 1991 scripting language to provide the required flow-control to tie the 1992 modules together. 1993 1994 This approach satisfies the requirement that complicated low-level 1995 analysis steps run fast, while preserving flexibility for coding the 1996 high-level wrappers for which the speed requirements are not so 1997 stringent. 1998 1999 \subsubsection{External Libraries} 2000 2001 \PS{} will employ several external libraries to save duplicating 2002 functionality that is already available. These external libraries 2003 will be wrapped by the \PS{} Library, insulating the project from the 2004 implementation details of the external libraries. Examples of the 2005 external libraries are FFTW and SLALib. 2006 2007 \subsubsection{\PS{} Library} 2008 2009 The \PS{} Library will consist of C structures describing the basic 2010 data types needed by the IPP and C functions which perform the basic 2011 data manipulation operations. Note that a subset of the library 2012 functions will be provided with SWIG interfaces as well to allow for 2013 their use in the creation of the processing stages. Examples of the 2014 \PS{} Library are fourier transforms and transforming between pixel 2015 and celestial coordinates. 2016 2017 \subsubsection{Modules} 2018 2019 The IPP analysis stages are broken down into modules which represent 2020 specific functional operations. The modules will be written in C 2021 using the \PS{} Library functions and will be grouped into a \PS{} 2022 Module Library. The modules will be provided with SWIG interfaces to 2023 all public APIs for their use in processing stages. Examples of 2024 modules are overscan subtraction and image combination. Some modules 2025 (e.g.\ find objects on an image) will be used by multiple stages. 2026 2027 \subsubsection{Stages} 2028 2029 The major IPP processing tasks are organized into stages, which 2030 consist of multiple modules. Each stage represents a collection of 2031 complex operations performed on a single data entity. Each stage 2032 therefore represents the maximum amount of effort which can be 2033 performed in serial without interaction between parallel threads. The 2034 stages will be written in \tbd{Python}, linking the modules together. 2035 Examples of stages are Phase 2 (detrend images) and Phase 4 (combine 2036 images from multiple telescopes and search for transients). 2328 2037 2329 2038 \subsection{Modules} … … 3265 2974 \section{Appendices} 3266 2975 2976 \subsection{Image Server Database Tables} 2977 2978 \begin{table} 2979 \begin{center} 2980 \caption{Storage Object Table Contents\label{ImageServerTables:SO}} 2981 \begin{tabular}{ll} 2982 \hline 2983 \hline 2984 {\bf Column Name} & {\bf Datatype} & {\bf Description} \\ 2985 \hline 2986 \code{so_id} & integer & internal storage object identifier \\ 2987 \code{ext_id} & string & external storage object identifier (file ID) \\ 2988 \code{comment} & string & user description of object \\ 2989 \code{epoch} & time/date & last date of access \\ 2990 \hline 2991 \end{tabular} 2992 \end{center} 2993 \end{table} 2994 2995 \begin{table} 2996 \begin{center} 2997 \caption{Instance Table Contents\label{ImageServerTables:INT}} 2998 \begin{tabular}{ll} 2999 \hline 3000 \hline 3001 {\bf Column Name} & {\bf Datatype} & {\bf Description} \\ 3002 \hline 3003 \code{ins_id} & integer & internal instance identifier \\ 3004 \code{so_id} & integer & key to storage object table \\ 3005 \code{uri} & string & location in hardware collection \\ 3006 \code{sha1sum} & string & checksum information \\ 3007 \code{assigned_location} & boolean & is location user-specified? \\ 3008 \code{epoch} & time/date & last date of access \\ 3009 \code{atime} & time/date & last date of access \\ 3010 \hline 3011 \end{tabular} 3012 \end{center} 3013 \end{table} 3014 3015 \begin{table} 3016 \begin{center} 3017 \caption{Volume Table Contents\label{ImageServerTables:VOL}} 3018 \begin{tabular}{ll} 3019 \hline 3020 \hline 3021 {\bf Column Name} & {\bf Datatype} & {\bf Description} \\ 3022 \hline 3023 \code{vol_id} & integer & internal volume identifier \\ 3024 \code{uri} & string & node name? \\ 3025 \hline 3026 \end{tabular} 3027 \end{center} 3028 \end{table} 3267 3029 3268 3030 \bibliographystyle{plain}
Note:
See TracChangeset
for help on using the changeset viewer.
