Where to Run Things?

Salvus scales from small toy experiments to very large HPC simulations and it is sometimes not exactly clear where to best run things. This document attempts to clarify that by describing the most common scenarios. Other configurations are of course possible for advanced users.

The various modules of the Salvus suite SalvusCompute, SalvusMesh, SalvusOpt and SalvusFlow are color coded in text as well as the illustrations.

This laptop represents either your actual laptop or your desktop workstation. It is where you sit and steer all components of Salvus.

Small-Scale & Prototyping: Run Everything on the Same Computer

For smaller problems (and larger problems in the prototyping stage) we recommend to run everything on the same machine, usually your laptop or workstation. This enables a very fast turn-around time due to quick feedback.

For this setup install all components of Salvus on your local machine and use the local site in SalvusFlow.

Parallel and physical scalability are inherent features of Salvus and the wave equation respectively. This means that, in in almost every case, one can design a prototype simulation at low frequencies before scaling up. Since the resolved frequency of a simulation is directly proprtional to its computational cost, this approach allows for rapid feeback when experimenting with simulation geometries and model building, among other things. Once everything is set, one can just up the frequency and move the expensive computations to a more powerful computer or cluster as described below.

Mid- to Large-Scale & Production: Run on Cluster

At a certain point your laptop or workstation will no longer be powerful enough and the computations will have to be performed on a remote cluster or HPC. The most common scenario in this case is to still run SalvusFlow, SalvusMesh, and SalvusOpt locally, and SalvusComputeon the remote cluster.

The choice of SalvusFlow site in this case depends on the job scheduling software running on the remote machine.

Note that, aside from choosing a different site, the user experience of running simulations is identical to running everything locally.

Alternative: Run Jupyter Remotely

Another option is to run all compontents and the Jupyter notebooks remotely. This could either be in the cloud in which case the Jupyter notebooks can be accessed via HTTPS or on a cluster. In the later case a simple way to access them is via port forwarding over SSH.