{
    "componentChunkName": "component---src-templates-markdown-doc-tsx",
    "path": "/2025.1.3/installation/where_to_run_things",
    "result": {"data":{"mdx":{"id":"71a516b5-45bd-5f63-9de5-915f5edef789","frontmatter":{"title":"Where to Run Things","images":[{"publicURL":"/static/ff50b3e89e1308acc1c3b26872005a6f/laptop_blank_transparent.png","childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/ff50b3e89e1308acc1c3b26872005a6f/c7240/laptop_blank_transparent.png","srcSet":"/static/ff50b3e89e1308acc1c3b26872005a6f/de3a1/laptop_blank_transparent.png 150w,\n/static/ff50b3e89e1308acc1c3b26872005a6f/30cdc/laptop_blank_transparent.png 300w,\n/static/ff50b3e89e1308acc1c3b26872005a6f/c7240/laptop_blank_transparent.png 600w,\n/static/ff50b3e89e1308acc1c3b26872005a6f/e8b76/laptop_blank_transparent.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/ff50b3e89e1308acc1c3b26872005a6f/c65bc/laptop_blank_transparent.webp 150w,\n/static/ff50b3e89e1308acc1c3b26872005a6f/078c3/laptop_blank_transparent.webp 300w,\n/static/ff50b3e89e1308acc1c3b26872005a6f/6d09e/laptop_blank_transparent.webp 600w,\n/static/ff50b3e89e1308acc1c3b26872005a6f/83805/laptop_blank_transparent.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}},{"publicURL":"/static/b2f65c48c2b30735d3739f754b700931/laptop_all_annotated_transparent.png","childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/b2f65c48c2b30735d3739f754b700931/c7240/laptop_all_annotated_transparent.png","srcSet":"/static/b2f65c48c2b30735d3739f754b700931/de3a1/laptop_all_annotated_transparent.png 150w,\n/static/b2f65c48c2b30735d3739f754b700931/30cdc/laptop_all_annotated_transparent.png 300w,\n/static/b2f65c48c2b30735d3739f754b700931/c7240/laptop_all_annotated_transparent.png 600w,\n/static/b2f65c48c2b30735d3739f754b700931/e8b76/laptop_all_annotated_transparent.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/b2f65c48c2b30735d3739f754b700931/c65bc/laptop_all_annotated_transparent.webp 150w,\n/static/b2f65c48c2b30735d3739f754b700931/078c3/laptop_all_annotated_transparent.webp 300w,\n/static/b2f65c48c2b30735d3739f754b700931/6d09e/laptop_all_annotated_transparent.webp 600w,\n/static/b2f65c48c2b30735d3739f754b700931/83805/laptop_all_annotated_transparent.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":600}}},{"publicURL":"/static/e01555983cd7f42e22fac27c1c300de3/laptop_with_hpc_annotated_transparent.png","childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/e01555983cd7f42e22fac27c1c300de3/2d1a5/laptop_with_hpc_annotated_transparent.png","srcSet":"/static/e01555983cd7f42e22fac27c1c300de3/645cd/laptop_with_hpc_annotated_transparent.png 150w,\n/static/e01555983cd7f42e22fac27c1c300de3/f9ded/laptop_with_hpc_annotated_transparent.png 300w,\n/static/e01555983cd7f42e22fac27c1c300de3/2d1a5/laptop_with_hpc_annotated_transparent.png 600w,\n/static/e01555983cd7f42e22fac27c1c300de3/c4f96/laptop_with_hpc_annotated_transparent.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/e01555983cd7f42e22fac27c1c300de3/bfe8f/laptop_with_hpc_annotated_transparent.webp 150w,\n/static/e01555983cd7f42e22fac27c1c300de3/28fe5/laptop_with_hpc_annotated_transparent.webp 300w,\n/static/e01555983cd7f42e22fac27c1c300de3/2d044/laptop_with_hpc_annotated_transparent.webp 600w,\n/static/e01555983cd7f42e22fac27c1c300de3/71499/laptop_with_hpc_annotated_transparent.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":416}}},{"publicURL":"/static/7f68cde52845b781e82e06de0c570f20/jupyter_in_cloud.png","childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#080808","images":{"fallback":{"src":"/static/7f68cde52845b781e82e06de0c570f20/2d1a5/jupyter_in_cloud.png","srcSet":"/static/7f68cde52845b781e82e06de0c570f20/645cd/jupyter_in_cloud.png 150w,\n/static/7f68cde52845b781e82e06de0c570f20/f9ded/jupyter_in_cloud.png 300w,\n/static/7f68cde52845b781e82e06de0c570f20/2d1a5/jupyter_in_cloud.png 600w,\n/static/7f68cde52845b781e82e06de0c570f20/c4f96/jupyter_in_cloud.png 1200w","sizes":"(min-width: 600px) 600px, 100vw"},"sources":[{"srcSet":"/static/7f68cde52845b781e82e06de0c570f20/bfe8f/jupyter_in_cloud.webp 150w,\n/static/7f68cde52845b781e82e06de0c570f20/28fe5/jupyter_in_cloud.webp 300w,\n/static/7f68cde52845b781e82e06de0c570f20/2d044/jupyter_in_cloud.webp 600w,\n/static/7f68cde52845b781e82e06de0c570f20/71499/jupyter_in_cloud.webp 1200w","type":"image/webp","sizes":"(min-width: 600px) 600px, 100vw"}]},"width":600,"height":416}}}]},"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Where to Run Things\",\n  \"images\": [\"./laptop_blank_transparent.png\", \"./laptop_all_annotated_transparent.png\", \"./laptop_with_hpc_annotated_transparent.png\", \"./jupyter_in_cloud.png\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"Where to Run Things?\"), mdx(\"p\", null, \"Salvus scales from small toy experiments to very large HPC simulations and it\\nis sometimes not exactly clear where to best run things. This document\\nattempts to clarify that by describing the most common scenarios. Other\\nconfigurations are of course possible for advanced users.\"), mdx(\"p\", null, \"The various modules of the Salvus suite \", mdx(SalvusCompute, {\n    mdxType: \"SalvusCompute\"\n  }), \", \", mdx(SalvusMesh, {\n    mdxType: \"SalvusMesh\"\n  }), \",\", ' ', mdx(SalvusOpt, {\n    mdxType: \"SalvusOpt\"\n  }), \" and \", mdx(SalvusFlow, {\n    mdxType: \"SalvusFlow\"\n  }), \" are color coded in text as well as the illustrations.\"), mdx(Grid, {\n    verticalAlign: \"middle\",\n    stackable: true,\n    columns: 2,\n    mdxType: \"Grid\"\n  }, mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, mdx(props.images.Img1, null))), mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, \"This laptop represents either your actual laptop or your desktop workstation. It is where you sit and steer all components of Salvus.\"))), mdx(\"h2\", null, \"Small-Scale & Prototyping: Run Everything on the Same Computer\"), mdx(Grid, {\n    verticalAlign: \"middle\",\n    stackable: true,\n    columns: 2,\n    mdxType: \"Grid\"\n  }, mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, mdx(props.images.Img2, null))), mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, mdx(\"p\", null, \"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.\"), mdx(\"p\", null, \"For this setup install all components of Salvus on your local machine and use the \", mdx(\"i\", null, \"local\"), \" site in \", mdx(SalvusFlow, {\n    mdxType: \"SalvusFlow\"\n  }), \".\"), mdx(\"p\", null, \"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.\")))), mdx(\"h2\", null, \"Mid- to Large-Scale & Production: Run on Cluster\"), mdx(Grid, {\n    verticalAlign: \"middle\",\n    stackable: true,\n    columns: 2,\n    mdxType: \"Grid\"\n  }, mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, mdx(props.images.Img3, null))), mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, mdx(\"p\", null, \"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 \", mdx(SalvusFlow, {\n    mdxType: \"SalvusFlow\"\n  }), \",\", ' ', \" \", mdx(SalvusMesh, {\n    mdxType: \"SalvusMesh\"\n  }), \", and \", mdx(SalvusOpt, {\n    mdxType: \"SalvusOpt\"\n  }), \" locally, and \", mdx(SalvusCompute, {\n    mdxType: \"SalvusCompute\"\n  }), \"on the remote cluster.\"), mdx(\"p\", null, \"The choice of \", mdx(SalvusFlow, {\n    mdxType: \"SalvusFlow\"\n  }), \" site in this case depends on the job scheduling software running on the remote machine.\"), mdx(\"p\", null, \"Note that, aside from choosing a different site, the user experience of running simulations is identical to running everything locally.\")))), mdx(\"h2\", null, \"Alternative: Run Jupyter Remotely\"), mdx(Grid, {\n    verticalAlign: \"middle\",\n    stackable: true,\n    columns: 2,\n    mdxType: \"Grid\"\n  }, mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, mdx(props.images.Img4, null))), mdx(Grid.Column, null, mdx(Segment, {\n    basic: true,\n    mdxType: \"Segment\"\n  }, \"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.\"))));\n}\n;\nMDXContent.isMDXComponent = true;"},"site":{"siteMetadata":{"salvusDocVersions":{"current":"2026.5.0"}}}},"pageContext":{"id":"71a516b5-45bd-5f63-9de5-915f5edef789"}},
    "staticQueryHashes": ["1756726491","1865182279","3419370438","3597190305","4112489441","519097329"]}