CloudRunner

... share your algorithms as a web service

Frequently Asked Questions

Which algorithms can be uploaded and run on CloudRunner?
Which things do currently not work on CloudRunner?
How is the code executed on the server?
What to keep in mind when using figures?
Which resource limits are imposed on the server (disk, memory, runtime)?
How can I use algorithms from CloudRunner in my local MATLAB environment?
What is the difference between public and non-public algorithms?

Which algorithms can be uploaded and run on CloudRunner?

In general, we aim to provide as much compatibility as possible to enable many algorithms to run without any changes before uploading.

Your algorithm should be uploaded as a single .m file or a ZIP archive which contains the "main function" in its root directory (during the upload wizard, you can select which function is the main function). Beside other (helper) function, the ZIP file can also contain arbitrary other helper files (text or binary).

The result of your computation should be returned by the main function as output parameter(s) since information that is written to the standard output will only be available through a rather long log (where most users will possibly not discover it).

Please see Which things do currently not work on CloudRunner?, How is the code executed on the server? and What to keep in mind when using figures? for more information on what type of code can be executed by CloudRunner.

back to top

Which things do currently not work on CloudRunner?

At the moment, you must not use varargin or varargout for your main function (if you try, varargin will be interpreted as a regular parameter with this name by our function signature parser). Of course, you can still use varargin/varargout for every other function which is used only internally by your algorithm.

The OpenGL renderer is not available. This means that certain features like setting an alpha value for semi-transparent drawing cannot be used in CloudRunner.

LaTeX fonts should not be used in CloudRunner at the moment because they seem to cause freezes in MATLAB when a figure is written to an EPS file (the cause of this of unknown). Because CloudRunner automatically tries to export to an EPS file every time drawnow() is called, this will most likely cause your algorithm to freeze when it is executed.

back to top

How is the code executed on the server?

Before execution, a temporary directory is created to which all needed files are written, i.e. the files of the algorithm(s) to execute and some helper functions used by CloudRunner to handle parameter input/output and plot export. This directory also serves as the working directory for the MATLAB process.

Execution of code happens in a sandbox that uses the ptrace() system call to monitor the system calls made by the algorithm. Actions that could pose a security risk or would permanently alter the system state, are disallowed and cause the process to be terminated (CloudRunner will return an error if that happens).

back to top

What to keep in mind when using figures?

CloudRunner overloads the drawnow() function with an own implementation that calls the original drawnow() function and exports the generated plot to an EPS file (from which it is then converted to SVG and PNG files).

Therefore, if you are rendering multiple figures or frames, you need to remember to call drawnow() before switching to another figure or clearing the current figure. If your algorithm only draws a single figure once, this is detected by CloudRunner and you do not need to call drawnow() (although it does not do harm).

Additionally, the limitations described under Which things do currently not work on CloudRunner? apply.

back to top

Which resource limits are imposed on the server (disk, memory, runtime)?

Algorithms run through the web interface have a timeout of 5 minutes, before execution is aborted by the server.

Beside that, no further limitations are applied at the moment. However, we reserve ourselves the option to impose restrictions or disable especially resource-consuming algorithms, should shortages arise.

back to top

How can I use algorithms from CloudRunner in my local MATLAB environment?

To call functions hosted on CloudRunner from your local MATLAB instance, you need to download the CloudRunner client by clicking here.

Place the file in your MATLAB path (like any other MATLAB function) and invoke it by calling the function "CloudRunner". A login dialog will open. There should be no need to change the host (cloudrunner.eu) or the port (27011). If you want, you can fill in your username and your password to authenticate with your CloudRunner account.

If you provided valid login credentials, you are prompted for a workspace to load after connecting. A workspace is basically a named user-defined set of algorithms that can be customized individually to include all functions needed to solve a particular problem. Even after choosing a workspace, you can always switch the workspace later on by calling CloudRunnerSwitchWorkspace('name').

Beside using workspaces, you can enable arbitrary CloudRunner algorithms in your MATLAB client by calling CloudRunnerSelect('identifier'). The identifier can be either the ID of the desired algorithm (if it is public) or the full URL pointing to the algorithm version that should be selected. Selected algorithms can be disabled again by calling CloudRunnerDeselect('identifier').

Because users without valid login credentials cannot use workspaces, CloudRunnerSelect() must be used by them to actually use CloudRunner functions after establishing a connection.

When one of the selected functions is called, CloudRunner transparently encodes the input parameters, sends them to the CloudRunner server and waits for the results to return. At the moment, only output parameters are send back, not figures that might have been plotted.

Note: You can also skip the dialogs used by the CloudRunner client and provide the requested values (e.g. username) as function parameters to create MATLAB scripts that can employ CloudRunner algorithms without requiring any user interaction. For details on this, see the CloudRunner.m source code.

back to top

What is the difference between public and non-public algorithms?

The uploader of an algorithm can select whether the algorithm should be public.

Public algorithms are listed on the CloudRunner page, e.g. on the browse page and in the side bar on the right. They can also be accessed with their ID. For example, http://www.cloudrunner.eu/algorithm/1/ is redirected to http://www.cloudrunner.eu/algorithm/1/matrix-multiplication/.

In contrast, non-public algorithms can only be accessed by persons knowing the full URL (i.e. the URL and the slug generated from the algorithm's title). Thus you can upload non-public algorithms to share their link with a group of people, without allowing other users to them.

back to top

Contact Us

If your question is not answered here or you are experiencing problems with CloudRunner, feel free to contact us.