\relax \citation{Bala} \citation{Owen} \@writefile{toc}{\contentsline {section}{\numberline {9}GRASP Routines: Template Bank Generation \& Searching}{279}{section.9}} \newlabel{s:template}{{9}{279}{GRASP Routines: Template Bank Generation \& Searching\relax }{section.9}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Structure: {\tt struct Template}}{279}{subsection.9.1}} \@writefile{brf}{\backcite{Bala,Owen}{{280}{9.1}{subsection.9.1}}} \newlabel{e:tau0}{{9.1.1}{280}{Structure: {\tt struct Template}\relax }{equation.9.1.1}{}} \newlabel{e:tau1}{{9.1.2}{280}{Structure: {\tt struct Template}\relax }{equation.9.1.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {58}{\ignorespaces The set of binary stars with masses lying between set minimum and maximum values defines the interior of a triangle in parameter space}}{281}{figure.58}} \newlabel{f:massrange}{{58}{281}{Structure: {\tt struct Template}\relax }{figure.58}{}} \@writefile{lof}{\contentsline {figure}{\numberline {59}{\ignorespaces The triangular region of the previous figure is mapped into a distorted triangle in the $(\tau _0,\tau _1)$ plane. Here $f_0$ is 120 Hz.}}{281}{figure.59}} \newlabel{f:taurange}{{59}{281}{Structure: {\tt struct Template}\relax }{figure.59}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Structure: {\tt struct Scope}}{282}{subsection.9.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.3}Function: {\tt tau\_of\_mass()}}{283}{subsection.9.3}} \newlabel{ss:tau_of_mass}{{9.3}{283}{Function: {\tt tau\_of\_mass()}\relax }{subsection.9.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.4}Function: {\tt m\_and\_eta()}}{284}{subsection.9.4}} \newlabel{ss:m_and_eta}{{9.4}{284}{Function: {\tt m\_and\_eta()}\relax }{subsection.9.4}{}} \newlabel{e:rooteqn}{{9.4.1}{284}{Function: {\tt m\_and\_eta()}\relax }{equation.9.4.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.5}Function: {\tt template\_area()}}{286}{subsection.9.5}} \newlabel{ss:area}{{9.5}{286}{Function: {\tt template\_area()}\relax }{subsection.9.5}{}} \newlabel{e:area}{{9.5.1}{286}{Function: {\tt template\_area()}\relax }{equation.9.5.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.6}Example: {\tt area} program}{287}{subsection.9.6}} \citation{Owen} \@writefile{toc}{\contentsline {subsection}{\numberline {9.7}The match between two templates}{288}{subsection.9.7}} \newlabel{ss:match}{{9.7}{288}{The match between two templates\relax }{subsection.9.7}{}} \newlabel{e:match1}{{9.7.1}{288}{The match between two templates\relax }{equation.9.7.1}{}} \newlabel{e:definprod2}{{9.7.2}{288}{The match between two templates\relax }{equation.9.7.2}{}} \@writefile{brf}{\backcite{Owen}{{288}{9.7}{equation.9.7.4}}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.8}Function: \tt {compute\_match()}}{289}{subsection.9.8}} \newlabel{ss:compute_match}{{9.8}{289}{Function: \tt {compute\_match()}\relax }{subsection.9.8}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.9}Function: \tt {match\_parab()}}{290}{subsection.9.9}} \newlabel{ss:match_parab}{{9.9}{290}{Function: \tt {match\_parab()}\relax }{subsection.9.9}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.10}Function: \tt {match\_cubic()}}{292}{subsection.9.10}} \newlabel{ss:match_cubic}{{9.10}{292}{Function: \tt {match\_cubic()}\relax }{subsection.9.10}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.11}Example: {\tt match\_fit} program}{293}{subsection.9.11}} \newlabel{ss:match_fit}{{9.11}{293}{Example: {\tt match\_fit} program\relax }{subsection.9.11}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.12}Structure: {\tt struct cubic\_grid}}{295}{subsection.9.12}} \newlabel{ss:cubic_grid}{{9.12}{295}{Structure: {\tt struct cubic\_grid}\relax }{subsection.9.12}{}} \newlabel{e:cubicmatch}{{9.12.1}{295}{Structure: {\tt struct cubic\_grid}\relax }{equation.9.12.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.13}Function: {\tt generate\_cubic}}{296}{subsection.9.13}} \newlabel{ss:generate_cubic}{{9.13}{296}{Function: {\tt generate\_cubic}\relax }{subsection.9.13}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.14}Function: {\tt regenerate\_cubic}}{297}{subsection.9.14}} \newlabel{ss:regenerate_cubic}{{9.14}{297}{Function: {\tt regenerate\_cubic}\relax }{subsection.9.14}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.15}Function: {\tt read\_cubic}}{298}{subsection.9.15}} \newlabel{ss:read_cubic}{{9.15}{298}{Function: {\tt read\_cubic}\relax }{subsection.9.15}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.16}Function: {\tt get\_cubic}}{299}{subsection.9.16}} \newlabel{ss:get_cubic}{{9.16}{299}{Function: {\tt get\_cubic}\relax }{subsection.9.16}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.17}Function: {\tt free\_cubic}}{300}{subsection.9.17}} \newlabel{ss:free_cubic}{{9.17}{300}{Function: {\tt free\_cubic}\relax }{subsection.9.17}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.18}Function: {\tt transform\_cubic}}{301}{subsection.9.18}} \newlabel{ss:transform_cubic}{{9.18}{301}{Function: {\tt transform\_cubic}\relax }{subsection.9.18}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.19}Example: {\tt make\_grid} program}{302}{subsection.9.19}} \newlabel{ss:make_grid}{{9.19}{302}{Example: {\tt make\_grid} program\relax }{subsection.9.19}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.20}Example: {\tt read\_grid} program}{304}{subsection.9.20}} \newlabel{ss:read_grid}{{9.20}{304}{Example: {\tt read\_grid} program\relax }{subsection.9.20}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.21}Function: {\tt template\_grid()}}{306}{subsection.9.21}} \@writefile{lof}{\contentsline {figure}{\numberline {60}{\ignorespaces Covering a plane with a square lattice of pennies (or templates) leaves 21\% of the area exposed}}{306}{figure.60}} \newlabel{f:pennies}{{60}{306}{Function: {\tt template\_grid()}\relax }{figure.60}{}} \citation{Owen} \citation{Owen} \@writefile{lof}{\contentsline {figure}{\numberline {61}{\ignorespaces Staggering the pennies (or templates) decreases the uncovered fraction of the plane to 9.3\%}}{307}{figure.61}} \newlabel{f:pennies2}{{61}{307}{Function: {\tt template\_grid()}\relax }{figure.61}{}} \@writefile{lof}{\contentsline {figure}{\numberline {62}{\ignorespaces Decreasing the spacings of the pennies (or templates) by a factor of $(5/4)^{1/2}=1.118\mathinner {\cdotp \cdotp \cdotp }$ then covers the entire plane.}}{307}{figure.62}} \newlabel{f:pennies3}{{62}{307}{Function: {\tt template\_grid()}\relax }{figure.62}{}} \@writefile{lot}{\contentsline {table}{\numberline {8}{\ignorespaces Orientation and dimensions of 0.97 ambiguity templates.}}{308}{table.8}} \newlabel{t:ellipse}{{8}{308}{Function: {\tt template\_grid()}\relax }{table.8}{}} \@writefile{brf}{\backcite{Owen}{{308}{9.21}{table.8}}} \@writefile{brf}{\backcite{Owen}{{308}{9.21}{table.8}}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.22}Function: {\tt plot\_template()}}{309}{subsection.9.22}} \@writefile{lof}{\contentsline {figure}{\numberline {63}{\ignorespaces Part of some sample output from {\tt plot\_template()}. }}{309}{figure.63}} \newlabel{f:plotexample}{{63}{309}{Function: {\tt plot\_template()}\relax }{figure.63}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.23}Example: {\tt template} program}{311}{subsection.9.23}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.24}Example: {\tt multifilter} program}{312}{subsection.9.24}} \@writefile{lof}{\contentsline {figure}{\numberline {64}{\ignorespaces Output of the {\tt nupshot} profiling tool, showing the behavior of the {\tt multifilter} program running on a workstation network of 8 machines (the fastest of these are Sparc-20 class processors). This shows the first 8 seconds of operation (time on the horizontal axis). The gray segments show the slave processes receiving the template list. During the orange segments, the slave processes are waiting for data; the blue segments show the master transmitting data to each slave. During the light gray segments, the slaves are computing the templates, during the green segments they are computing the FFT's of those templates, and during the purple segments they are correlating the data against the templates. During the brown segment, the master is waiting to receive data back from the slaves. }}{313}{figure.64}} \newlabel{f:nupshot1}{{64}{313}{Example: {\tt multifilter} program\relax }{figure.64}{}} \@writefile{lot}{\contentsline {table}{\numberline {9}{\ignorespaces Approximate computation times for different elements of the optimal-filtering process.}}{313}{table.9}} \newlabel{t:compute}{{9}{313}{Example: {\tt multifilter} program\relax }{table.9}{}} \@writefile{lof}{\contentsline {figure}{\numberline {65}{\ignorespaces This is a continutation of the previous figure. Slave number 1 has completed its computation of the templates, and during the orange segment, waits to make a connection with the master. This is followed by a (very small) yellow segment, during which the slave transmits data back to the master, and a blue segment during which the master transmits new data to slave number 1. Immediately after this, slave number 1 begins a new (purple) sequence of correlation calculations on the newly received block of data. Notice that because slave 1 has already computed the templates, the light gray and green operations are no longer needed. }}{314}{figure.65}} \newlabel{f:nupshot2}{{65}{314}{Example: {\tt multifilter} program\relax }{figure.65}{}} \@writefile{lof}{\contentsline {figure}{\numberline {66}{\ignorespaces This is a continutation of the previous figure, and represents the ``long-term" or ``steady-state" behavior of the multiprocessing system. In this state, the different processors are spending all of their time doing correlation measurements of the data, as indicated by the purple segments, and the master is waiting for the results of the analysis (brown segments).}}{314}{figure.66}} \newlabel{f:nupshot3}{{66}{314}{Example: {\tt multifilter} program\relax }{figure.66}{}} \@writefile{lof}{\contentsline {figure}{\numberline {67}{\ignorespaces This is a continuation of the previous figure, and shows the termination of some of the slave processes (all the data has been analyzed, and there is no new data remaining). The blue segments (data being sent to slaves) are actually termination messages being sent to the different processes 2,3,4 and 6. Processes 5 and 7 are still computing. In the case of process 7, the data being analyzed contains a non-stationary ``spurion" which triggered most of the filters beyond a pre-set threshold level. As a result, process 7 is performing some additional computations (the split-up likelihood test, shown as light blue segments) on the data.}}{315}{figure.67}} \newlabel{f:nupshot4}{{67}{315}{Example: {\tt multifilter} program\relax }{figure.67}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.25}Optimization and computation-speed considerations}{325}{subsection.9.25}} \@writefile{lof}{\contentsline {figure}{\numberline {68}{\ignorespaces This shows the performance of an ``on the fly" template search on the Intel Paragon, with different levels of optimization. The top diagram uses the {\it Numerical Recipes} FFT routine {\tt realft()}, and takes about 4.2 seconds to process 6 seconds of data. The middle diagram shows identical code using the {\it CLASSPACK} optimized FFT routine, and takes about 2.1 seconds. Note that the template generation process is now becoming expensive. The bottom diagram shows identical code which includes inline functions for cube-root and sine/cosine functions to speed up the template generation process. The template generation takes about 325 msec, and the entire search procedure (including template generation) takes 780 msec per template per processor per 6-second stretch of data. Relative to the top diagram, this represents a speed-up factor of more than 5. Running on 256 nodes, it is possible to filter 5 hours of data through 66 templates (representing the mass range from 1.2 to 1.6 solar masses) in 5x3600x66x(0.780)/(256x6) seconds = 10.1 minutes. }}{326}{figure.68}} \newlabel{f:paragon}{{68}{326}{Optimization and computation-speed considerations\relax }{figure.68}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.26}Template Placement}{327}{subsection.9.26}} \newlabel{ss:placement}{{9.26}{327}{Template Placement\relax }{subsection.9.26}{}} \@writefile{lof}{\contentsline {figure}{\numberline {69}{\ignorespaces Some aspects of template placement using rectangular tiling: (a) By applying a coordinate rotation, the axes of the equimatch ellipse can be alligned with the axes of the rectanglular tiles, maximizing the tile area. (b) Rectangular tiles can easily be stacked into columns, even when the match contours are varying. (c) At the ends of a column, extra overlapping tiles may be required to cover the edges of the parameter space. }}{327}{figure.69}} \newlabel{f:tiling}{{69}{327}{Template Placement\relax }{figure.69}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.27}Structure: {\tt struct tile}}{329}{subsection.9.27}} \newlabel{ss:tile}{{9.27}{329}{Structure: {\tt struct tile}\relax }{subsection.9.27}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.28}Function: {\tt tiling\_2d}}{330}{subsection.9.28}} \newlabel{ss:tiling_2d}{{9.28}{330}{Function: {\tt tiling\_2d}\relax }{subsection.9.28}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.29}Function: {\tt plot\_list}}{332}{subsection.9.29}} \newlabel{ss:plot_list}{{9.29}{332}{Function: {\tt plot\_list}\relax }{subsection.9.29}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.30}Constants in {\tt tiling\_2d.c}}{333}{subsection.9.30}} \newlabel{ss:tileconst}{{9.30}{333}{Constants in {\tt tiling\_2d.c}\relax }{subsection.9.30}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.31}Structure: {\tt struct chirp\_space}}{334}{subsection.9.31}} \newlabel{ss:chirp_space}{{9.31}{334}{Structure: {\tt struct chirp\_space}\relax }{subsection.9.31}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.32}Structure: {\tt struct chirp\_template}}{335}{subsection.9.32}} \newlabel{ss:chirp_template}{{9.32}{335}{Structure: {\tt struct chirp\_template}\relax }{subsection.9.32}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.33}Function: {\tt set\_chirp\_space}}{337}{subsection.9.33}} \newlabel{ss:set_chirp_space}{{9.33}{337}{Function: {\tt set\_chirp\_space}\relax }{subsection.9.33}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.34}Function: {\tt chirp\_metric}}{338}{subsection.9.34}} \newlabel{ss:chirp_metric}{{9.34}{338}{Function: {\tt chirp\_metric}\relax }{subsection.9.34}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.35}Function: {\tt get\_chirp\_boundary}}{339}{subsection.9.35}} \newlabel{ss:get_chirp_boundary}{{9.35}{339}{Function: {\tt get\_chirp\_boundary}\relax }{subsection.9.35}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.36}Function: {\tt get\_chirp\_grid}}{340}{subsection.9.36}} \newlabel{ss:get_chirp_grid}{{9.36}{340}{Function: {\tt get\_chirp\_grid}\relax }{subsection.9.36}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.37}Function: {\tt get\_chirp\_templates}}{341}{subsection.9.37}} \newlabel{ss:get_chirp_templates}{{9.37}{341}{Function: {\tt get\_chirp\_templates}\relax }{subsection.9.37}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.38}Function: {\tt plot\_chirp\_templates}}{342}{subsection.9.38}} \newlabel{ss:plot_chirp_templates}{{9.38}{342}{Function: {\tt plot\_chirp\_templates}\relax }{subsection.9.38}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {9.39}Example: {\tt make\_mesh} program}{343}{subsection.9.39}} \newlabel{ss:make_mesh}{{9.39}{343}{Example: {\tt make\_mesh} program\relax }{subsection.9.39}{}} \@writefile{lof}{\contentsline {figure}{\numberline {70}{\ignorespaces A portion of the chirp template parameter space generated by the program {\tt make\_mesh}, showing the template patches which cover the space to a match level of 0.98. This figure illustrates how the templates are stacked in columns, with additional overlapping patches along the boundary. Less obvious is the fact that the rectangles are not of uniform size, reflecting the changing behaviour of the match function over the space. }}{344}{figure.70}} \newlabel{f:template_mesh}{{70}{344}{Example: {\tt make\_mesh} program\relax }{figure.70}{}} \@setckpt{man_template}{ \setcounter{page}{346} \setcounter{equation}{0} \setcounter{enumi}{11} \setcounter{enumii}{0} \setcounter{enumiii}{0} \setcounter{enumiv}{0} \setcounter{footnote}{1} \setcounter{mpfootnote}{0} \setcounter{part}{0} \setcounter{section}{9} \setcounter{subsection}{39} \setcounter{subsubsection}{0} \setcounter{paragraph}{0} \setcounter{subparagraph}{0} \setcounter{figure}{70} \setcounter{table}{9} \setcounter{Item}{84} \setcounter{Hfootnote}{1} \setcounter{section@level}{2} }