## 5 Limitations of high- and medium-level functions ¶

Note that Function netcellfun, Function netarrayfun, and Single remote function evaluation, but even Function parcellfun and Function pararrayfun, execute code in separate Octave processes. This causes some limitations.

For the function handles passed as arguments to Function parcellfun, Function pararrayfun, Function netcellfun, Function netarrayfun, and Single remote function evaluation, the following limitations may apply:

- In Octave versions before 5.1, anonymous functions may only be passed if they don’t use `varargin` and don’t contain nested anonymous functions.
- If a handle to a named function, written in a function file, is passed, this function must exist on the server machine. This is usually no problem for Function parcellfun and Function pararrayfun.
- Named functions defined in the command line interface or by scripts are not exported to the working sessions used by Function parcellfun or Function pararrayfun, and not automatically to the server for remote parallel execution.
- For handles to subfunctions or to private functions limitations depending on the used Octave version may apply.

Anonymous functions should be usable as usual, since the function specification sent to the server will include the anonymous functions context.

If Function parcellfun or Function pararrayfun (and of course the cluster-related functions, too) are called from within a function with subfunctions, the subfunctions won’t be visible in parallel execution.

There is no way to set global variables for the function called by `parcellun` or `pararrayfun`. For cluster execution, setting global variables is possible, e.g. with Distribute Octave variables; however, `netcellfun` and `netarrayfun` won’t ’see’ global variables if they use `parcellfun` internally (which is the default at remote machines with more than one available processor core).