---
name: "wavefront_master"
section: "1"
platform: "linux"
package: "coop-computing-tools"
version: "1:7.14.5-1+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/wavefront_master"
---

# wavefront\_master(1)

executes Wavefront workflow in parallel on distributed systems

## NAME

**wavefront\_master** - executes Wavefront workflow in parallel on distributed systems

## SYNOPSIS

FCwavefront \[options\] *\<command\>* *\<xsize\>* *\<ysize\>* *\<inputdata\>* *\<outputdata\>*FT

## DESCRIPTION

**wavefront\_master** computes a two dimensional recurrence relation. You provide a function F (*\<command\>) that accepts the left (x), right* *(y), and diagonal (d) values and initial values (\<inputdata\>) for* *the edges of the matrix. The output matrix, whose size is determined by* *\<xsize\> and \<ysize\>, will be stored in a file specified* *by \<outputdata\>.*

**wavefront\_master** *uses the Work Queue system to distribute tasks among* *processors. After starting* **wavefront\_master***, you must start a number of* **[work\_queue\_worker(1)](/work_queue_worker/1.md)** *processes on remote machines.  The workers will* *then connect back to the master process and begin executing tasks.*

## OPTIONS

- **-h,--help**

  *Show this help screen*

- **-v,--version**

  *Show version string*

- **-d,--debug=*\<subsystem\>***

  *Enable debugging for this subsystem. (Try -d all to start.)*

- **-N,--project-name=*\<project\>***

  *Set the project name to \<project\>*

- **-N,--project-name=*\<project\>***

  *Set the project name to \<project\>*

- **-o,--debug-file=*\<file\>***

  *Write debugging output to this file. By default, debugging is sent to stderr (":stderr"). You may specify logs to be sent to stdout (":stdout") instead.*

- **-p,--port=*\<port\>***

  *Port number for queue master to listen on.*

- **-P,--priority=*\<num\>***

  *Priority. Higher the value, higher the priority.*

- **-Z,--port-file=*\<file\>***

  *Select port at random and write it to this file.  (default is disabled)*

- **--work-queue-preferred-connection=*\<connection\>***

  *Indicate preferred connection. Chose one of by\_ip or by\_hostname. (default is by\_ip)*

## EXIT STATUS

*On success, returns zero.  On failure, returns non-zero.*

## EXAMPLES

*Suppose you have a program named FCfunctionFT that you want to use in the* *Wavefont workflow computation. The program FCfunctionFT, when invoked as* *FCfunction a b cFT, should do some computations on files FCaFT, FCbFT and* *FCcFT and produce some output on the standard output.*

*Before running* **wavefront\_master***, you need to create a file, say* *FCinput.dataFT, that lists initial values of the matrix (values on the left* *and bottom edges), one per line:*

```

```

-

   *0	0	value.0.0*\
    *0	1	value.0.1*\
    *...*\
    *0	n	value.0.n*\
    *1	0	value.1.0*\
    *2	0	value.2.0*\
    *...*\
    *n	0	value.n.0*

*To run a Wavefront workflow sequentially, start a single* **[work\_queue\_worker(1)](/work_queue_worker/1.md)** *process in the background. Then, invoke* **wavefront\_master***. The following example computes a 10 by 10 Wavefront* *matrix:*

```

```

-

   *% work\_queue\_worker localhost 9123 &*\
    *% wavefront\_master function 10 10 input.data output.data*

*The framework will carry out the computations in the order of dependencies, and* *print the results one by one (note that the first two columns are X and Y* *indices in the resulting matrix) in the specified output file. Below is an* *example of what the output file - FCoutput.dataFT would look like:*

```

```

-

   *1	1	value.1.1*\
    *1	2	value.1.2*\
    *1	3	value.1.3*\
    *...*

*To speed up the process, run more* **[work\_queue\_worker(1)](/work_queue_worker/1.md)** *processes on* *other machines, or use* **[condor\_submit\_workers(1)](/condor_submit_workers/1.md)** *or* **[uge\_submit\_workers(1)](/uge_submit_workers/1.md)** *to start hundreds of workers in your local batch* *system.*

*The following is an example of adding more workers to execute a Wavefront* *workflow. Suppose your* **wavefront\_master** *is running on a machine named* *barney.nd.edu. If you have access to login to other machines, you could simply* *start worker processes on each one, like this:*

```

```

-

   *% work\_queue\_worker barney.nd.edu 9123*

*If you have access to a batch system like Condor, you can submit multiple* *workers at once:*

```

```

-

   *% condor\_submit\_workers barney.nd.edu 9123 10*\
    *Submitting job(s)..........*\
    *Logging submit event(s)..........*\
    *10 job(s) submitted to cluster 298.*

## COPYRIGHT

*The Cooperative Computing Tools are Copyright (C) 2022 The University of Notre Dame.  This software is distributed under the GNU General Public License.  See the file COPYING for details.*

## SEE ALSO

- •

  *The Cooperative Computing Tools (***"http://ccl.cse.nd.edu/software/manuals"***)*

- •

  *Wavefront User Manual (***"http://ccl.cse.nd.edu/software/manuals/wavefront.html"***)*

- •

  *Work Queue User Manual (***"http://ccl.cse.nd.edu/software/manuals/workqueue.html"***)*

- •

  **[work\_queue\_worker(1)](/work_queue_worker/1.md)**

- •

  **[condor\_submit\_workers(1)](/condor_submit_workers/1.md)**

- •

  **[uge\_submit\_workers(1)](/uge_submit_workers/1.md)**
