### Description

In addition to providing GNU OCtave, this charm installs a simple

web gui, which can be used to submit octave jobs to the deployed

octave service. Note that the octave-controller machine is also

utilized for numerical computations in Octave.

**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 (see doc/Template folder), 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.

To submit a job to your deployed services navigate to

http://

and submit a zip file of the job folder, which must contains a script.m file, which is ran in octave to obtain results of your job. After the job is done, the web page will display a download link, which will contain the job folder, hopefully, with results.

For more details see tutorials at xmaas.xlab.si.

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