#
octave
^{
#3
}

### Description

This charm deploys GNU Octave, which is a high-level interpreted

language, primarily intended for numerical computations. In relation

with the octave-controller charm this service enables user to utilize

machines for numerical computations in Octave using mpi.

**Tags:**- applications ›

Overview

GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments. It also provides extensive graphics capabilities for data visualization and manipulation. Octave is normally used through its interactive command line interface, but it can also be used to write non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable. It is distributed under the terms of the GNU General Public License.

The parallel approach can be used in many numerical algorithms for commonly occuring problems in scientific computing, such as vector and matrix products, matrix factorizations, iterative methods for solving linear systems, eigenvalue problems, nonlinear equations and optimization, numerical integration and derivation, ordinary and partial differential equations, etc. Their solutions are applicable to a wide variety of problems in science and engineering.

In GNU Octave the mpi package for parallel computing is known. It contains an MPI (Message Passing Interface) functions for parallel computing using simple MPI Derived Datatypes. The documentation of the mpi package is found on the web page: http://octave.sourceforge.net/mpi/overview.html.

The user of this charm should follow the two template files, namely script.m and parallel_comput.m. The first file script.m contains the initialization of the MPI communication. This is followed by user's problem settings defining variables and functions used in the computation. Furthermore, the computation is described in two parts. The main process (simulation, optimization, etc.) is implemented in the script.m file and the parallel computation in the separate parallel_comput.m file. The last function is then called in the main computation process. The main script must also include the initialization and the termination of the parallel computation function. Note that the file name script.m must not be changed.

The other file parallel_comput.m contains the function with the same name. Both names may be changed, but they must be equal. This function defines the parallel computation. Initially, a new MPI communication is defined and the computation space is distributed on an approximately equal parts. Furthermore, the exact description of parallel computation on master and slave processors, transfering data between processors with the MPI_Recv and MPI_Send functions and the return values of the function parallel_comput are defined. Also, the initialization and the termination of the parallel computation must be specified by user. Here, only the settings of function's return parameters are required, but their values are meaningless.

In addition to the template files described the user should also examine the parallel optimization example. The gradient of the objective function and the jacobian matrices of constraint functions are computed in parallel and defined in the deriv.m file. All functions and variables defining the optimization problem are determined in the script.m file. The solution is found with a built-in sqp (Sequential Quadratic Programming) method for constrained nonlinear optimization. The results are displayed in the command line and saved in a file.

Usage

For a deploy of the initial unit of the octave service run

juju deploy --to

where "to" is an optional parameter, which defines to which machine the openfoam service should be deployed.

To deploy a web ui version of the octave, which enables submission of jobs via a web browser run

juju deploy octave-controller

and if you previously deployed the octave service add relation between the two services:

juju add-relation octave-controller octave.

Please note that the octave-controller service installs octave in addition to the web ui, which means that the machine, where the octave-controller is deployed will also be used to process jobs.

Scale out Usage

To deploy additional units of the octave service run

juju add-unit --to

where "to" is an optional parameter, which defines to which machine the octave service should be deployed.

Known Limitations and Issues

Octave Charm Contact Information

- For bug reports and questions contact me at: ales.stimec@xlab.si

### Configuration

- network-device
- (string) Specify the network device to be used for mpi communication
- eth0