zdf

ZDF - Run Instructions

Before a fresh filtering run, you’ll need to be clear on:

The filtering output, when run against a data file of length M, is an M x ((U-M).m) array organized as follows: \(\left[\begin{array}{ccccccc} d_{1}^{\mu_1} & d_{1}^{\mu_2} & ... & d_{1}^{\mu_{U-M}} & d_{2}^{\mu_1} & ... & d_{m}^{\mu_{U-M}} \end{array}\right]\)

  1. Retrieve the encoding of the derivatives by concatenating d_1, d_2, ..., d_m, in that order, as an argument to ./zdf -d . For example: ./zdf -d 0,1,2

  2. Armed with the resulting integer D, say 7, similarly retrieve the encoding of the whole ZDF by using flag ./zdf -e N,D,q,K,M,U. For example: ./zdf -e 1024,7,2,0,1,2

  3. Use the resulting integer T to label your initialization file. That should be a binary file with exactly N floats written to it, labeled ${T}.zdft and placed in your data directory. See this example. Double check that the REPO and T constants in zdf.cpp match your data directory and encoding.

  4. If using the executable to filter observations from a file: That file should also be generated as ${T}.zdfi. Ensure that the update line in zdf.cpp reads zdf.update<L>(REPO); where L is at least the number of entries in your .zdfi file. The filtered array is output to ${T}.zdfo.

  5. Build the executable, similarly to the BPPR build instructions

  6. Run the executable against your file(s). For example, for a single MKL thread and to specify that the initialization file should be overwritten with any new update observations:

    ./zdf -t 1 -w