Octave on Public Clouds
This description is for installing the latest released stable Octave version and running it on instances on public clouds such as Amazon AWS. The user interacts with a desktop client which connects to the servers running octave over a secure internet connection.
Users often want to preserve code portability between desktop and the servers. Moreover, users may want to preserve the desktop interaction experience.
On Amazon AWS EC2, spot instances (and preemptible VMS on GC) permit use of powerful machines for short periods of time. Many octave computations run much faster on multicore machines. In addition, embarrassing parallelism can be easily exploited using octave packages such as parallel.
Because of network latency over the internet, user interaction that relies on desktop level sub ms latency does not work well. This requires some changes to the standard desktop user interaction experience, relying more on the faster local client response. Jupyter notebook is an example of such an interface.
On AWS EC2, choose the official Ubuntu AMI for EC2 for your region. See Ubuntu cloud image locator
Installing on Ubuntu LTS 16.04 LTS
sudo apt update sudo apt install build-essential
Installing on Ubuntu LTS 18.04 LTS
Connecting to the cloud instance
When you launch the EC2 instance, you can secure access to your instance using a ssh protocol on port 22. You may want to limit the port 22 outbound access on the instance firewall to your IP address.
If you are using X-11 for plotting in octave (gnuplot xterm), you will need to do X-11 forwarding using ssh -Y . You will also need Xquartz installed on your machine and issue
xhost + <your instance public IPV4 address>
For qt graphics, you do not need the X-11 forwarding.
Octave Kernel in Jupyter Notebook Server
Because of network latency between the remote cloud server and the local client, response to user keystrokes is delayed. Running an octave kernel in Jupyter notebook avoids this because the local browser responds to keystrokes during editing.
This only addresses single user Jupyter notebook server not the multi-user Jupyter Hub server.