From 5f8336e2aeec48af029f19c3631cd3bd0dd2fada Mon Sep 17 00:00:00 2001 From: sam Date: Thu, 16 Jan 2025 12:40:09 +0100 Subject: [PATCH 1/6] common ondemand section (wip) --- source/access/access_methods.rst | 3 +- source/access/mfa_login.rst | 4 +- source/access/ondemand/active-jobs.rst | 15 + source/access/ondemand/clusters.rst | 9 + source/access/ondemand/clusters_ood.rst | 24 + source/access/ondemand/code-server.rst | 83 +++ source/access/ondemand/files.rst | 19 + source/access/ondemand/index.rst | 59 ++ source/access/ondemand/interactive-apps.rst | 89 +++ source/access/ondemand/interactive-shell.rst | 30 + .../ondemand/job-composer-about-leuven.rst | 6 + .../ondemand/job-composer-jobs-leuven.rst | 35 ++ .../job-composer-templates-leuven.rst | 30 + source/access/ondemand/job-composer.rst | 52 ++ source/access/ondemand/jobs.rst | 13 + source/access/ondemand/jupyterlab.rst | 144 +++++ source/access/ondemand/links_ood.rst | 20 + source/access/ondemand/matlab.rst | 22 + source/access/ondemand/paraview.rst | 12 + source/access/ondemand/rstudio-server.rst | 42 ++ source/access/ondemand/tensorboard.rst | 16 + source/leuven/genius_quick_start.rst | 2 +- ...st_student_accounts_ku_leuven_uhasselt.rst | 2 +- source/leuven/services/openondemand.rst | 594 ------------------ .../tier2_hardware/tier2_login_nodes.rst | 2 +- source/leuven/wice_quick_start.rst | 2 +- 26 files changed, 728 insertions(+), 601 deletions(-) create mode 100644 source/access/ondemand/active-jobs.rst create mode 100644 source/access/ondemand/clusters.rst create mode 100644 source/access/ondemand/clusters_ood.rst create mode 100644 source/access/ondemand/code-server.rst create mode 100644 source/access/ondemand/files.rst create mode 100644 source/access/ondemand/index.rst create mode 100644 source/access/ondemand/interactive-apps.rst create mode 100644 source/access/ondemand/interactive-shell.rst create mode 100644 source/access/ondemand/job-composer-about-leuven.rst create mode 100644 source/access/ondemand/job-composer-jobs-leuven.rst create mode 100644 source/access/ondemand/job-composer-templates-leuven.rst create mode 100644 source/access/ondemand/job-composer.rst create mode 100644 source/access/ondemand/jobs.rst create mode 100644 source/access/ondemand/jupyterlab.rst create mode 100644 source/access/ondemand/links_ood.rst create mode 100644 source/access/ondemand/matlab.rst create mode 100644 source/access/ondemand/paraview.rst create mode 100644 source/access/ondemand/rstudio-server.rst create mode 100644 source/access/ondemand/tensorboard.rst delete mode 100644 source/leuven/services/openondemand.rst diff --git a/source/access/access_methods.rst b/source/access/access_methods.rst index 512acbf74..26e2ee644 100644 --- a/source/access/access_methods.rst +++ b/source/access/access_methods.rst @@ -10,6 +10,7 @@ windows_client macos_client linux_client + ondemand/index We provide multiple methods to access the VSC clusters and use their computational resources. Not all options may be equally supported across all @@ -108,7 +109,7 @@ clusters. See below for guides on available solutions: :maxdepth: 1 nx_start_guide - ../leuven/services/openondemand + VPN === diff --git a/source/access/mfa_login.rst b/source/access/mfa_login.rst index ec10653e0..a1308a8ae 100644 --- a/source/access/mfa_login.rst +++ b/source/access/mfa_login.rst @@ -8,7 +8,7 @@ As the name suggests, MFA requires additional steps with human intervention when authenticating. MFA is mandatory for accessing KU Leuven infrastructures. In this page, we explain how to login to the -:ref:`KU Leuven Open OnDemand portal `, and how to use SSH clients +:ref:`KU Leuven Open OnDemand portal `, and how to use SSH clients (such as PuTTY, terminal etc) with and without using an SSH agent. .. note:: @@ -20,7 +20,7 @@ Login to Open OnDemand ---------------------- Users from all VSC sites can access the Open OnDemand portal at KU Leuven site. -For that, proceed to the :ref:`Open OnDemand portal `. +For that, proceed to the :ref:`Open OnDemand portal `. If you are affiliated with KU Leuven, click on the KU Leuven logo. Otherwise, click on the VSC logo to choose your institute. You will be then forwarded to the Identity Provider (IdP) of your institute to diff --git a/source/access/ondemand/active-jobs.rst b/source/access/ondemand/active-jobs.rst new file mode 100644 index 000000000..64284290f --- /dev/null +++ b/source/access/ondemand/active-jobs.rst @@ -0,0 +1,15 @@ +Active jobs +----------- + +The 'Active Jobs' page lists all your running, queued and completed jobs. +Depending on the cluster, completed jobs will be removed from this view within a +timeframe ranging from a few minutes to one day. A handy overview of multiple job +details is shown by clicking the large arrow at the left side of the job id, +including the node list, the account you used, the status of the job, and more. +It also gives you the option to open the job script directory in the file +manager or in the terminal, and thus inspect the created output and error files. + +If your job is still running, you can also delete it by clicking the bin under 'Actions'. +The 'Active jobs' page does not support re-submission of your job; How to +(re-)submit jobs will be made clear in the next chapters. + diff --git a/source/access/ondemand/clusters.rst b/source/access/ondemand/clusters.rst new file mode 100644 index 000000000..0617a1b98 --- /dev/null +++ b/source/access/ondemand/clusters.rst @@ -0,0 +1,9 @@ +Clusters +======== + +When selecting 'Login Server Shell Access' from the 'Clusters menu, you will get +a terminal window in a new browser tab. You will arrive on one of the login +nodes, which you can use in the same way as with terminal-based SSH access. +Remember, however, that login nodes are not meant for any compute-intensive +calculation. If you would like to perform calculations in an interactive job, +you should use the :ref:`interactive_shell` app. diff --git a/source/access/ondemand/clusters_ood.rst b/source/access/ondemand/clusters_ood.rst new file mode 100644 index 000000000..dec68adf3 --- /dev/null +++ b/source/access/ondemand/clusters_ood.rst @@ -0,0 +1,24 @@ +.. grid:: 3 + :gutter: 4 + + .. grid-item-card:: UAntwerp (AUHA) + :columns: 12 4 4 4 + + (coming soon) + + .. * Tier-2 :ref:`Vaughan ` + .. * Tier-2 :ref:`Leibniz ` + .. * Tier-2 :ref:`Breniac ` + + .. grid-item-card:: KU Leuven/UHasselt + :columns: 12 4 4 4 + + * Tier-2 :ref:`Genius ` + * Tier-2 :ref:`wICE ` + + .. grid-item-card:: VUB + :columns: 12 4 4 4 + + * Tier-2 :ref:`Hydra ` + * Tier-2 Anansi + diff --git a/source/access/ondemand/code-server.rst b/source/access/ondemand/code-server.rst new file mode 100644 index 000000000..52d872aa1 --- /dev/null +++ b/source/access/ondemand/code-server.rst @@ -0,0 +1,83 @@ +Code Server +----------- + +This is the browser version of Visual Studio Code. +For more information, check out `VSCode official guidelines `_. +As a default, a Python and a Git module are already loaded, which means you can use both Python and git +from a terminal window within code-server. + +How to open a terminal window is probably one of the first things you should know: click on the three +horizontal lines in the upper left corner, select 'Terminal - New Terminal' +This will open a shell on the node you are running your session on. +Notice that you are starting in your ``$VSC_DATA`` directory. +You can use this as a regular shell, meaning that you can submit jobs, load modules and so on. + +Code-server contains many different options and menus, but only a few will be discussed here. +Feel free to explore them. +We will however discuss how to set up code-server to use any of the compatible languages, +and use code-server as an IDE. +For each of the languages you want to use you need two things: an installation of +the specific interpreter, and an extension in code-server that allows you to connect to it. +The extensions can be found in the 'extensions' menu. +In what follows, the steps for both Python and R are described. + +Setup Python in Code Server +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are multiple Python extensions available, so feel free to try and install the extension that suits you the best. +This comes with the warning that only the Microsoft Python extension has been tested by our team. +To install this extension, go to 'Extensions' and search for 'Python'. +Install the one with as developer 'ms-python'. +If you now open a script, you can now use code-server as an IDE and run the lines of code from within +the script (the shortkey is shift+enter). +Code-server will start a Python session with the currently selected Python interpreter. +If you did not specify another one, this should default to the loaded Python module. +This Python extension gives you the possibility to choose other interpreters as well. +In the right down corner, you can see right next to 'Python'. +If you click that, a window will appear where you can select your Python version. +Next to the module version, you should see at least some system Python versions (e.g. ``/bin/python``). +You can also load other modules, or you can also use Conda environments here (if you have any Conda environments +already, you should see them here as well). + +If you need more information about creating your customized Python environments, have a look :ref:`here `. + +**Remarks:** + +- Whenever loading a new Python interpreter, you will have to kill your current Python terminal before + you will be able to use this new interpreter. + + +Setup R in Code Server +~~~~~~~~~~~~~~~~~~~~~~ + +For full functionality, it is recommended to work with Conda environments. +For the time being, there are some issues with using modules together with functionalities, like plotting. + +There are some package requirements if you want to use R in code-server. +The following command creates a functional environment (of course, add any other packages you need): + + .. code-block:: bash + + conda create -n -c conda-forge r-base r-remotes r-languageserver r-httpgd r-jsonlite + +Once you've created your environment, go ahead and start a code-server session on Open Ondemand. +On the lefthand side, go to the extension menu and search for 'R'. +You should install the 'R' extension of 'REditorSupport'. + +Now there are two ways to use the R installation inside your Conda environment: + +- Open a terminal (three horizontal lines in the upper left corner - Terminal - New Terminal), + and activate your Conda environment. + Now type ``R`` in the terminal and you will be able to use your scripts interactively + (R gets attached as soon as you start it). +- You can also set the path to the R version that needs to be attached (better if you always + use the same Conda environment). + Go to 'Extensions', and click the settings wheel next to the R extension. + Select 'Extension Settings' and search for the 'R > RTerm: Linux' setting. + Paste the path to your Conda env there (``/path/to/miniconda/envs//lib/R``) + +**Remarks:** + +- To run your script line-by-line, place your cursor on a desired line, and press the key combination of + 'ctrl+enter' on your keyboard. + diff --git a/source/access/ondemand/files.rst b/source/access/ondemand/files.rst new file mode 100644 index 000000000..3807e7818 --- /dev/null +++ b/source/access/ondemand/files.rst @@ -0,0 +1,19 @@ +Files +===== + +This menu provides a file explorer that allows you to navigate through your +files and folders. You can access your ``$VSC_HOME`` and ``$VSC_DATA`` folders. +Depending on the institution, other storages may also be available. General +file explorer options like moving, deleting, modifying and creating files or +directories are available as well. You can also use this interface to download +and upload files to and from your local machine. Be aware that this is not +recommended for very large files. + +For large files we recommend the :ref:`globus platform`. The ``Globus`` button +takes you directly to the Globus login page, and upon a successful login to your +Globus account (using your institution credentials), you will land on the same +sub-directory from which you clicked on the Globus button. + +**Good to know:** the standard 'ctrl+s' does not save your edited files on Open +OnDemand, but will trigger a save on your local machine. Luckily, there is a +``Save`` button in the upper left corner on the editor page. diff --git a/source/access/ondemand/index.rst b/source/access/ondemand/index.rst new file mode 100644 index 000000000..b879be5b8 --- /dev/null +++ b/source/access/ondemand/index.rst @@ -0,0 +1,59 @@ +.. _ood_t2: + +################################ +:fas:`circle-play` Open OnDemand +################################ + +About +===== + +Open OnDemand provides a user interface to HPC clusters from within a web browser. +This tool supports a range of different apps and features that not only allow the +user to easily submit jobs from within the browser, but also provide different +coding GUIs, tools for plotting and more. + +Availability and access +======================= + +Links to the Open OnDemand portals: + +.. include:: links_ood.rst + +:fas:`server` VSC clusters available via OnDemand: + +.. include:: clusters_ood.rst + +You can log in using the credentials of your home institution or your VSC +credentials. + +General features +================ + +The VSC Open OnDemand portals provide a range of functions: + +- Browsing, creating, transferring, viewing and/or editing files +- Submitting and monitoring jobs, creating job templates +- Opening a shell on one of the login nodes +- Using interactive apps + +All of these functionalities can be used by accessing them through the tabs at +the top of the page. In the following sections, we will describe these in some more +detail. + +.. toctree:: + :maxdepth: 1 + + files + jobs + job-composer + active-jobs + clusters + interactive-apps + interactive-shell + jupyterlab + rstudio-server + tensorboard + code-server + matlab + paraview + diff --git a/source/access/ondemand/interactive-apps.rst b/source/access/ondemand/interactive-apps.rst new file mode 100644 index 000000000..f0b2b89b2 --- /dev/null +++ b/source/access/ondemand/interactive-apps.rst @@ -0,0 +1,89 @@ +.. _interactive-apps: + +Interactive apps +================ + +The 'Interactive Apps' menu shows a range of different apps that provide a GUI. +In the background this means that you are submitting an interactive job to the cluster, in which the app will be running. + +To launch any of the interactive apps, you need to fill in the resources form. +Most of the options in the resource forms are similar across all apps, but some apps require additional input from the user. +These will be explained in the specific paragraph about the apps. +A more detailed guide on how to choose your resources is available in the +:ref:`next section `. +Beware that by launching any app you will end up in a regular queue, so requesting a large amount of resources might result in a long queue time. + +- Cluster: allows choosing between one of our :ref:`Tier-2 clusters ` in production, namely Genius or wICE +- Account: the credit account you want to deduct the credits from. + The accounts associated with your VSC number will be displayed in a dropdown menu. +- Partition: you can choose any of the existing partitions on both clusters. + The partition names depend on your choice of cluster. + We recommend using the ``interactive`` partition for most interactive work. +- Numbers of hours: your walltime (min 1h). +- Number of cores: the amount of cores per node. This defaults to 1. +- Required memory per core in megabytes. This defaults to 3400 MB. +- Number of GPUs. Depending on the GPU partition you have requested, you get a different device type. + The default is 0. + The acquired GPU will be the same as the type specified in the partition (e.g. a NVidia H100 for ``gpu_h100`` on wICE). + For wICE, you can also request a GPU from the ``interactive`` partition. + One GPU here is a virtual GPU slice of the available A100 GPUs. + One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. + The interactive partition only allows you to request max 1 GPU (slice) though. +- Reservation: if you are part of a reservation, you can also use these nodes with Open Ondemand by specifying your reservation name here. +- Pre-run scriptlet: this allows you to add bash commands to your job before launching the app. + This can be used for example for loading extra modules that you need within the app, sourcing a specific script + or defining specific environment variable(s). + + .. warning:: + + Be careful in using this feature, because you will be modifying the behavior of your session. + +- Screen resolution: for apps which run inside a remote `noVNC`_ desktop (e.g. MATLAB, ParaView, etc), one + may choose a resolution between 'FullHD', '2K' or '4K'. + After launching the app, one may still change the compression level and the image quality of the + transferred noVNC frames. + E.g. opting for the lowest compression level and highest image quality can give you a crisp noVNC desktop. +- View Only (Share-able Link): for `noVNC`_ apps, you can provide a view-only access to other VSC users. + For that, click on the 'View Only (Share-able Link)' button to copy the URL into your clipboard, + and be able to share it with others. + + .. warning:: + + As the end-user, you are responsible for all consequences of sharing your application with other + VSC users. + So, think twice before sharing your sensitive data, sources and information by all means. + +Once you've specified all your resources, just press 'Launch' and your job will be queued. + +.. _choosing_your_resources: + +Choosing your resources +----------------------- + +Choosing the correct resources for your interactive session is mostly the same as selecting them when +launching regular batch jobs. +For this reason, we strongly recommend you to have a look at how to specify your resources for using +both :ref:`Genius ` and :ref:`wICE `. + +As mentioned above, in most cases we recommend using the 'interactive' partition on wICE for the interactive apps. +This partition is meant for lighter work, like code development, testing, debugging, visualisations, +pre- and post-processing. +Using this partition is also free, mainly to encourage you to request these resources for such work, instead +of using any of the other partitions. There are however some limitations on the amount of resources you can request here: + +- Max 1 node +- Max 8 cores +- Max 1 virtual GPU slice +- Max 16h of walltime + +This is put in place to ensure that these resources are kept for their original purpose, namely the interactive work. + +If for some reason some of these limitations are too strict for you, or you need resources that are not available on +the interactive nodes (e.g. a full GPU, big memory nodes), you can always request nodes from another partition. +Remember however that these interactive apps are not meant for running full jobs. +If you indeed need multiple nodes or full GPUs to test your code/program, go ahead and request the resources for +your interactive app from a more suitable partition. +In the case that you have passed the testing phase, and you want to start conducting experiments, +we recommend that you make the switch to batch jobs instead, as they will not require your presence to start your code. + +.. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/interactive-shell.rst b/source/access/ondemand/interactive-shell.rst new file mode 100644 index 000000000..50a0b0227 --- /dev/null +++ b/source/access/ondemand/interactive-shell.rst @@ -0,0 +1,30 @@ +.. _interactive_shell: + +Interactive shell +----------------- + +This app will launch a shell on (one of) the requested node(s), allowing you to +use these compute resources from within a Linux terminal. This is different +from the shell you get in the "Clusters - Login Server Shell Access" menu, which +directs you to one of the login nodes. + +Shell environment: + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + Currently, the :ref:`cluster modules ` are not automatically + loaded when your session starts. In order to use modules, one needs to + explicitly load the cluster module that adheres to the choice of cluster and + partition for his or her job. For instance, if your job starts on wICE + interactive partition, one needs to execute the following command:: + + module load cluster/wice/interactive + + The same applies for other choices of partitions on Genius or wICE clusters. + + .. tab-item:: VUB + + By default, the environment of your interactive shell is the same as when + launching an interactive job from the terminal with ``srun --pty bash -l``. diff --git a/source/access/ondemand/job-composer-about-leuven.rst b/source/access/ondemand/job-composer-about-leuven.rst new file mode 100644 index 000000000..806ec7db4 --- /dev/null +++ b/source/access/ondemand/job-composer-about-leuven.rst @@ -0,0 +1,6 @@ +The Job Composer contains all the tools that allow you to launch your jobs. This +goes from basic job script building, adding necessary files, to building and +using templates for easier job creation. Under the job composer tab you can find +two other menus, namely ‘Jobs’ and ‘Templates’. As templates are the backbone of +job creation in Open OnDemand, we will start by explaining these. The ‘Jobs’ +menu is pretty much self-explanatory once understanding this. diff --git a/source/access/ondemand/job-composer-jobs-leuven.rst b/source/access/ondemand/job-composer-jobs-leuven.rst new file mode 100644 index 000000000..a1a420886 --- /dev/null +++ b/source/access/ondemand/job-composer-jobs-leuven.rst @@ -0,0 +1,35 @@ +The functioning of creating jobs is a bit similar to how you create new templates. +Whatever method you choose, you will always create a new directory for each job, this time +located at ``$VSC_DATA/ondemand/data/projects/default/``. +The job directories will be numbered in the order you have created them. + +.. warning:: + + Do not change this folder name as long as you plan on using it from the job menus, + as this will break the linking. + When removing a job, the directory will be deleted as well. + +To create a job, press the 'New Job' button and choose the option that best suits +your needs. +You will get a new item in your job list for each job you've created. +Again, you can edit, remove and add files like you want to create a custom job by +going to the File Explorer (click 'Edit Files' or 'Open Dir') or by directly clicking +the file names. +The 'Open Editor' button in the 'Submit Script' overview also allows you to edit +the job script directly. + +Using the 'Job Options' button, you can add some more specifications to your job: + +- Name: this will specify a name in the job composer list. + This will not be your job name. + The actual job name is the one that will be specified in the job script. + If you do not specify a name there, you will see that that job gets the name + ``sbatch`` in the 'Active Jobs' menu. +- Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. +- Specify job script: if you have multiple job scripts in the directory, you can specify which one to run. +- Account: here you can specify which account to use. Be aware that this will overwrite the account you might have specified in your job script. +- Job array: we do not recommend using this. If you would like to use job arrays, have a look at :ref:`the worker framework`. + +Everything should now be set up to start a job. Any job can be started by clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You cannot use the +'Submit' job to start the exact same job multiple times. You can use the 'New Job - From Selected Job' option for this. If you delete any of the jobs, you also remove +the folder that it is associated with. diff --git a/source/access/ondemand/job-composer-templates-leuven.rst b/source/access/ondemand/job-composer-templates-leuven.rst new file mode 100644 index 000000000..af977508b --- /dev/null +++ b/source/access/ondemand/job-composer-templates-leuven.rst @@ -0,0 +1,30 @@ +To enter the Templates menu, you can click on 'Templates' at the top once you are in the 'Job Composer' menu. You can also access this menu by clicking the button 'New +Job'-'From Template'. Once in this menu, you should see a table with three System Templates. The resources that are requested in these scripts are the default settings. +The templates: + +- CPU job template: a template for jobs on the thin nodes (the default ``batch`` partition). This is also the default template (which you will get when clicking 'From Default Template' under the 'New Job' button in the 'Jobs' menu). +- GPU job template: a template for jobs with GPU resources (``gpu`` partition) +- Big memory CPU jobs: a template for jobs with large memory requirements (``bigmem`` partition) + +You can create your own templates from scratch or by copying one of the existing templates. +In both cases you will be redirected to a page where you can provide a +name, the cluster and add some notes. +To save this, you will need to provide a path to store it in. Ondemand will create a new subdirectory +with the name of your template here. + +A ``manifest.yml`` file will always be present in a template directory, It contains all the info you provided in the set-up step. +Which other files will be present in this directory depends on how you created your new template. +When using the 'New Template' button, and you don't provide a path, a copy of the default template will be created. +You can also provide a path to an existing template or job directory. In that case that directory and its contents will be copied. +This works for **any** directory on your system, so be sure to provide the correct path! + +The 'Copy Template' button basically does the same, but with this button, Ondemand will automatically fill in the path of the +selected template in the template overview. +Once you use this more often, you can also use your own templates to create new ones. +Any file that is present in that folder, will be copied to your new one as well. + +Once you've created the new template directory, you can start customizing it. You can view the content in +the directory using the Folder Explorer (click 'View Files' on top or 'Open Dir' at the bottom). As explained above, you can edit or remove any file, create new files +or upload new files. +These files will be present in each job you create from this template. + diff --git a/source/access/ondemand/job-composer.rst b/source/access/ondemand/job-composer.rst new file mode 100644 index 000000000..bf59f6b7e --- /dev/null +++ b/source/access/ondemand/job-composer.rst @@ -0,0 +1,52 @@ +Job Composer +------------ + +About +~~~~~ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + .. container:: + + .. include:: job-composer-about-leuven.rst + + + .. tab-item:: VUB + + (not available at this time) + + +Templates +~~~~~~~~~ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + .. container:: + + .. include:: job-composer-templates-leuven.rst + + + .. tab-item:: VUB + + (not available at this time) + +Jobs +~~~~ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + .. container:: + + .. include:: job-composer-jobs-leuven.rst + + + .. tab-item:: VUB + + (not available at this time) + diff --git a/source/access/ondemand/jobs.rst b/source/access/ondemand/jobs.rst new file mode 100644 index 000000000..17d7141cf --- /dev/null +++ b/source/access/ondemand/jobs.rst @@ -0,0 +1,13 @@ +Jobs +==== + +All jobs submitted from Open OnDemand can run on the available clusters. +This also means that all your jobs should be submitted as **Slurm** jobs. +For more details on how to run jobs on the different VSC clusters, check out +their respective documentation. + +Depending on the institution, the 'Jobs' menu may have one or two items: 'Active Jobs', +and optionally 'Job Composer'. + +.. and 'Projects' (which we skip here, because at the time of this writing, it is still in development by the upstream). + diff --git a/source/access/ondemand/jupyterlab.rst b/source/access/ondemand/jupyterlab.rst new file mode 100644 index 000000000..018628ed4 --- /dev/null +++ b/source/access/ondemand/jupyterlab.rst @@ -0,0 +1,144 @@ +JupyterLab +----------- + +With this app you can write and run +`Jupyter `_ notebooks containing +annotated Python, R or Julia code (among other languages). IPython consoles are +available as well. One of the benefits of JupyterLab is that it supports +different types of user-defined environments, as will become clear below. + +**Remarks:** + +- The top-level notebook directory is by default ``$VSC_DATA``. +- At the moment, we do not support installing extensions in JupyterLab. + +Pure module environment +~~~~~~~~~~~~~~~~~~~~~~~ + +In the app resource form, besides the normal choices (:ref:`listed above `), +you can also choose from different 'Toolchain and Python versions' from a drop-down menu. +An example would be '2023a and ``Python/3.11.3-GCCcore-12.3.0``'. +Based on that choice, the corresponding JupyterLab module will be loaded together with its +dependencies (such as the listed Python module). + +Furthermore, you may choose to load ``SciPy-bundle`` (for widely used packages like ``scipy``, +``numpy``, ``pandas`` and more) and/or ``matplotlib`` modules from the same toolchain. + +Once you launch a JupyterLab session, a default kernel called ``Python 3 (ipykernel)`` is already available in your session. +This kernel, in addition to the Python standard library, would enable using extra packages from +``SciPy-bundle`` and/or ``matplotlib``, if you selected them in the resource form. + +.. warning:: + + If you use JupyterLab in this way, remember to be consistent in your choice of toolchain version + as this e.g. determines the version of Python that will be used. + +User-defined kernels +~~~~~~~~~~~~~~~~~~~~ + +If the pure module environment does not provide all Python packages that you need, +then you can locally install these extra packages, followed by installing the corresponding +Jupyter kernel either from a :ref:`Python Conda environment`, or from a +:ref:`Python virtual environment`. +For R, you may create your customized environment using :ref:`Conda environments for R`. + +.. note:: + + User kernels are stored by default in ``${VSC_HOME}/.local/share/jupyter/kernels``. + To override this and store your kernel specifications in a non-default location, + you may drop the following line in your ``${VSC_HOME}/.bashrc``:: + + export XDG_DATA_HOME=${VSC_DATA}/.local/share + + When the ``${XDG_DATA_HOME}`` variable is set, subsequent kernel installations + (for both Python and R) will reside in ``${XDG_DATA_HOME}/jupyter/kernels``. + To remove a kernel, find and delete the corresponding folder inside the ``kernels`` + subdirectory. + We strongly advice you to stay away from modifying the contents of this folder, + unless you are aware of the consequences. + +.. _py-conda-kernel: + +Conda environments for Python +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you have not installed Conda in your account yet, please refer to the +:ref:`install Miniconda ` page. + +Assuming you have created a Conda environment for :ref:`Python `, +the corresponding kernel needs to be installed for use with JupyterLab. +Note that the minimum supported version for Python for our JupyterLab setup is Python 3.7. +First activate the Conda environment, install the ``ipykernel`` package (which should be at +least version 6.19.2) and finally the kernel itself:: + + source activate + conda install ipykernel + python -m ipykernel install --user --env PYTHONPATH "" --name --display-name + +These commands should be excecuted from a shell (e.g. using 'Login Server Shell Access'), +and only need to be done once for a given environment. +When launching a new JupyterLab session, this kernel should then show up in the overview +of available kernels. +In case you encounter issues such as freezing or crashing JupyterLab sessions with a previously +existing kernel, then reinstalling that kernel may help. + +.. _py-venv-kernel: + +Python virtual environments +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A similar procedure applies for Python virtual environments associated with +a centrally installed Python module. Note that the chosen Python module needs +to be in the list of 'Toolchain and Python versions' of the JupyterLab form +(e.g. ``2023a and Python/3.11.3-GCCcore-12.3.0``). The commands below show +how creating such a virtual environment and installing the corresponding kernel +would typically look like (to be done from a shell, e.g. using 'Login Server Shell Access'): + +.. code-block :: bash + + cd ${VSC_DATA} + # the line below is needed if you use the 'Interactive Shell' app + module use /apps/leuven/${VSC_OS_LOCAL}/${VSC_ARCH_LOCAL}${VSC_ARCH_SUFFIX}/2023a/modules/all + module load Python/3.11.3-GCCcore-12.3.0 + python -m venv + source /bin/activate + pip install ipykernel + # note that unlike for Conda environments the "--env ..." argument is not needed below + python -m ipykernel install --user --name --display-name + +On the JupyterLab form, choose a partition to your liking and select the same +toolchain as above. Once you connect to your session, your new kernel will be +ready to use. To verify your setup, you can execute ``import sys; sys.executable`` +in your notebook, and the resulting path should point to the location of your +virtual environment. + +**Remarks:** + +- The above example assumes that your virtual environment can be used on + different CPU and/or GPU architectures than the ones present on the node + on which you created the environment and installed the extra packages. + This is normally the case for typical ``pip`` usage where precompiled 'wheels' + get downloaded and installed and which can therefore be used on any + architecture. +- If however one your package installation steps involves compiling source code, + then you might only be able to use your virtual environment on the same + architecture where the compilation was carried out. If this is the case we + recommend to consider the suggestions in the + :ref:`wICE advanced guide`. + +.. _r-conda-kernel: + +Conda environments for R +~~~~~~~~~~~~~~~~~~~~~~~~ + +For R, you need both the ``jupyter_client`` and the ``irkernel`` Conda packages installed. +With the following command you can create the kernel:: + + Rscript -e 'IRkernel::installspec(name="", displayname="")' + +Once the kernel is created, you will see it in the 'Launcher' menu. +You can now start working in your own customized environment. + +For more general information, please refer to the `official JupyterLab documentation`_. + +.. _official JupyterLab documentation: https://docs.jupyter.org/en/latest/ diff --git a/source/access/ondemand/links_ood.rst b/source/access/ondemand/links_ood.rst new file mode 100644 index 000000000..4e4a25ea7 --- /dev/null +++ b/source/access/ondemand/links_ood.rst @@ -0,0 +1,20 @@ +.. grid:: 3 + :gutter: 4 + + .. grid-item-card:: UAntwerp (AUHA) + :columns: 12 4 4 4 + + (coming soon) + + .. grid-item-card:: KU Leuven/UHasselt + :columns: 12 4 4 4 + + `KU Leuven OnDemand`_ + + .. grid-item-card:: VUB + :columns: 12 4 4 4 + + `VUB OnDemand`_ + +.. _KU Leuven OnDemand: https://ondemand.hpc.kuleuven.be/ +.. _VUB OnDemand: https://portal.hpc.vub.be/ diff --git a/source/access/ondemand/matlab.rst b/source/access/ondemand/matlab.rst new file mode 100644 index 000000000..a9f4b9280 --- /dev/null +++ b/source/access/ondemand/matlab.rst @@ -0,0 +1,22 @@ +.. _ood_matlab_app: + +MATLAB +------ + +To launch MATLAB via OnDemand, you need to additionally specify your desired version of the software +from the drop-down menu on the resource form. +Given that our current MATLAB installations automatically detect GPU devices and CUDA libraries, +you may also request GPU(s) as resources, if needed. + +Once you launch the session, a remote `noVNC`_ desktop will start on a compute node. +Once the session starts, the selected MATLAB module will be loaded, and eventually the MATLAB GUI +will pop up (after waiting for few seconds). + +.. note:: + + Only vsc3* users (affiliated with KU Leuven) who are members of the ``lli_matlab`` group + have rights to use the MATLAB module (hence the MATLAB app). If you are not already member + of the group, contact the :ref:`KU Leuven supprt team` for an invitation, + or :ref:`request joining this group` via your VSC account page. + +.. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/paraview.rst b/source/access/ondemand/paraview.rst new file mode 100644 index 000000000..733145f7d --- /dev/null +++ b/source/access/ondemand/paraview.rst @@ -0,0 +1,12 @@ +ParaView +-------- + +For visualization purposes, you may use the `ParaView app `_. +Similar to the :ref:`MATLAB app `, ParaView also runs inside a `noVNC`_ +desktop as a compute job. + +**Remarks:** + +- Currently, using GPUs in ParaView is not supported yet, and just the CPU-only modules are offered. + +.. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/rstudio-server.rst b/source/access/ondemand/rstudio-server.rst new file mode 100644 index 000000000..419a33885 --- /dev/null +++ b/source/access/ondemand/rstudio-server.rst @@ -0,0 +1,42 @@ +RStudio Server +-------------- + +This interactive app allows you to run an RStudio session on the cluster. +In the 'Toolchain year and R version' drop-down menu, you can choose the version +of R module that would be loaded for your session (such as `R/4.2.2-foss-2022b`). +Additionally, the `R-bundle-CRAN` and `R-bundle-Bioconductor` modules can be loaded +on top of the base R module to provide easy access to hundreds of preinstalled packages. + +It is also possible to use locally installed R packages with RStudio, see :ref:`R package management`. +RStudio furthermore allows to create RStudio projects to manage your +R environments. When doing so, we recommend to select the +`renv `_ option +to ensure a completely independent R environment. Without `renv`, +loading an RStudio project may lead to incomplete R library paths. + +For more information on how to use RStudio, check out the `official documentation `__. + +**Remarks:** + +- Navigating between your different directories is possible using the file explorer. + If you are navigating by clicking the folder, you will notice that you can see all user folders. + You do not have access to these, and you will receive an error when you try to open them. + You will also notice that you cannot use the same way of navigating after this. + Another solution is to click the three dots on the right (...) and enter your path. +- The 'Tools-Install packages' interface does not allow you to select any other path than the default in your ``$VSC_HOME``. + It is recommended to use the ``install.packages()`` function instead. +- RStudioServer will by default store the RStudio cache in ``$VSC_HOME/.local/share/rstudio``. + This cache can get very large, and cause you to exceed the quota of your home directory. + To avoid this, you can redirect this cache to your data directory by setting the ``$XDG_DATA_HOME`` + variable in your ``~/.bashrc``: + + .. code-block:: bash + + echo "export XDG_DATA_HOME=$VSC_DATA/.local/share" >> ~/.bashrc + +- Additionally, it is advised to change the default behaviour of RStudio to not restore .RData + into the workspace on start up and to never Save the workspace to .RData on exit. + You can do this via the RStudio interface: + Tools > Global Options > General > Workspace + +.. _RStudio official documentation: https://docs.rstudio.com/ diff --git a/source/access/ondemand/tensorboard.rst b/source/access/ondemand/tensorboard.rst new file mode 100644 index 000000000..3b582e6df --- /dev/null +++ b/source/access/ondemand/tensorboard.rst @@ -0,0 +1,16 @@ +Tensorboard +----------- + +Tensorboard is an interactive app that allows you to visualize and measure different aspects of +your machine learning workflow. +Have a look at the `official guidelines `_ +for more detailed information. + +The Tensorboard interactive session requires you to specify a project (or log) directory in +your submission options. +This is a relative directory starting from your ``$VSC_DATA``. +Beware that you cannot change this directory, once the session is launched. +If you redirect Tensorboard to a wrong folder (typo in path name or missing log files), +Tensorboard fails to start, and your session lands on an error page starting with the message: +'No dashboards are active for the current data set.'. + diff --git a/source/leuven/genius_quick_start.rst b/source/leuven/genius_quick_start.rst index 05b6c6815..563d1c061 100644 --- a/source/leuven/genius_quick_start.rst +++ b/source/leuven/genius_quick_start.rst @@ -10,7 +10,7 @@ for most HPC workloads. Access to the cluster --------------------- -Genius can be accessed from the :ref:`Genius login nodes `, or from your web browser via the :ref:`Open On-Demand ` service. +Genius can be accessed from the :ref:`Genius login nodes `, or from your web browser via the :ref:`Open On-Demand ` service. For example, you can log in to any of the login node using SSH:: diff --git a/source/leuven/lecturer_s_procedure_to_request_student_accounts_ku_leuven_uhasselt.rst b/source/leuven/lecturer_s_procedure_to_request_student_accounts_ku_leuven_uhasselt.rst index 2bef47bf9..71dcefed2 100644 --- a/source/leuven/lecturer_s_procedure_to_request_student_accounts_ku_leuven_uhasselt.rst +++ b/source/leuven/lecturer_s_procedure_to_request_student_accounts_ku_leuven_uhasselt.rst @@ -29,7 +29,7 @@ take the following actions: to track the use of the Tier-2 clusters by individual users during the course. For more information about the procedure of requesting the project please refer to the page :ref:`Slurm accounting `. -#. We advise to use :ref:`Open OnDemand ` service for the student to get access to the +#. We advise to use :ref:`Open OnDemand ` service for the student to get access to the login nodes, file browser and the job submission. The student will only need to use a browser and does not need to install any other software. Students will login through the KU Leuven :ref:`Multi Factor Authentication (MFA) `, no additional ssh-agent is required. #. To ensure that students jobs do not wait in the queue during the hands-on sessions, we offer diff --git a/source/leuven/services/openondemand.rst b/source/leuven/services/openondemand.rst deleted file mode 100644 index e476308ff..000000000 --- a/source/leuven/services/openondemand.rst +++ /dev/null @@ -1,594 +0,0 @@ -.. _ood_t2_leuven: - -Open OnDemand on the KULeuven Tier2 cluster -=========================================== - -.. sectnum:: - :depth: 3 - -About -===== - -Open OnDemand provides a user interface to HPC clusters from within a web browser. -This tool supports a range of different apps and features that not only allow the -user to easily submit jobs from within the browser, but also provide different -coding GUIs, tools for plotting and more. -Open OnDemand is available for the Tier-2 Genius and wICE clusters. - -You can use this interface by navigating to the `KU Leuven Open OnDemand page`_. -You can log in using your KU Leuven or VSC credentials. - -General features -================ - -The KU Leuven Open OnDemand page provides a range of functions: - -- Browsing, creating, transferring, viewing and/or editing files -- Submitting and monitoring jobs, creating job templates -- Opening a shell on one of the login nodes -- Using interactive apps - -All of these functionalities can be used by accessing them through the tabs at the top of the page. -In the following, we will describe these in some more detail. - -Files -===== - -This menu provides a file explorer that allows you to navigate through your files and folders. -You can access your ``$VSC_HOME`` and ``$VSC_DATA`` folders. Other storages are not available here. -General file explorer options like moving, deleting, modifying and creating files or directories are available as well. -You can also use this interface to download and upload files to and from your local machine. Be aware that this is not recommended for very large files. - -**Good to know:** the standard 'ctrl+s' does not save your edited files on Open OnDemand, but will trigger a save on your local machine. Luckily, there is a -save button in the upper left corner on the editor page. - -The 'Globus' button takes you directly to the Globus login page, and upon a successful login to your Globus account -(using your KU Leuven credentials), you will land on the same sub-directory from which you clicked on the Globus button. -For more information about Globus, please refer to our documentation about the :ref:`Globus Platform`. - -Jobs -==== - -All jobs submitted from Open OnDemand can run on Genius and wICE. -This also means that all your jobs should be submitted as **Slurm** jobs. -For more detail on how to run jobs on wICE, check out the -:ref:`wICE quick start guide`. - -The jobs tab has three menus, 'Active Jobs', 'Job Composer' and 'Projects' (which we skip here, because at the time -of this writing, it is still in development by the upstream). - -Active jobs ------------ - -This lists all your running, queued and completed jobs. -Completed jobs will disappear from this view after a couple of minutes. -You have a handy overview of multiple job details by clicking the large arrow next -to the job id, including things like the node list, the account you used, and -the status of the job. -It also gives you the option to open the job script directory in the file -manager, and thus inspect the created output and error files. - -If your job is still running, you can also delete it by clicking the bin under 'Actions'. -The 'Active jobs' menu does not allow re-submission of your job. -How to (re-)submit jobs will be made clear in the next chapter. - -Job Composer ------------- - -The Job Composer contains all the tools that allow you to launch your jobs. This goes from basic job script building, adding necessary files, -to building and using templates for easier job creation. Under the job composer tab you can find two other menus, namely 'Jobs' and 'Templates'. -As templates are the backbone of job creation in Open OnDemand, we will start by explaining these. -The 'Jobs' menu is pretty much self-explanatory once understanding this. - -Templates -~~~~~~~~~ - -To enter the Templates menu, you can click on 'Templates' at the top once you are in the 'Job Composer' menu. You can also access this menu by clicking the button 'New -Job'-'From Template'. Once in this menu, you should see a table with three System Templates. The resources that are requested in these scripts are the default settings. -The templates: - -- CPU job template: a template for jobs on the thin nodes (the default ``batch`` partition). This is also the default template (which you will get when clicking 'From Default Template' under the 'New Job' button in the 'Jobs' menu). -- GPU job template: a template for jobs with GPU resources (``gpu`` partition) -- Big memory CPU jobs: a template for jobs with large memory requirements (``bigmem`` partition) - -You can create your own templates from scratch or by copying one of the existing templates. -In both cases you will be redirected to a page where you can provide a -name, the cluster and add some notes. -To save this, you will need to provide a path to store it in. Ondemand will create a new subdirectory -with the name of your template here. - -A ``manifest.yml`` file will always be present in a template directory, It contains all the info you provided in the set-up step. -Which other files will be present in this directory depends on how you created your new template. -When using the 'New Template' button, and you don't provide a path, a copy of the default template will be created. -You can also provide a path to an existing template or job directory. In that case that directory and its contents will be copied. -This works for **any** directory on your system, so be sure to provide the correct path! - -The 'Copy Template' button basically does the same, but with this button, Ondemand will automatically fill in the path of the -selected template in the template overview. -Once you use this more often, you can also use your own templates to create new ones. -Any file that is present in that folder, will be copied to your new one as well. - -Once you've created the new template directory, you can start customizing it. You can view the content in -the directory using the Folder Explorer (click 'View Files' on top or 'Open Dir' at the bottom). As explained above, you can edit or remove any file, create new files -or upload new files. -These files will be present in each job you create from this template. - -Jobs -~~~~ - -The functioning of creating jobs is a bit similar to how you create new templates. -Whatever method you choose, you will always create a new directory for each job, this time -located at ``$VSC_DATA/ondemand/data/projects/default/``. -The job directories will be numbered in the order you have created them. - -.. warning:: - - Do not change this folder name as long as you plan on using it from the job menus, - as this will break the linking. - When removing a job, the directory will be deleted as well. - -To create a job, press the 'New Job' button and choose the option that best suits -your needs. -You will get a new item in your job list for each job you've created. -Again, you can edit, remove and add files like you want to create a custom job by -going to the File Explorer (click 'Edit Files' or 'Open Dir') or by directly clicking -the file names. -The 'Open Editor' button in the 'Submit Script' overview also allows you to edit -the job script directly. - -Using the 'Job Options' button, you can add some more specifications to your job: - -- Name: this will specify a name in the job composer list. - This will not be your job name. - The actual job name is the one that will be specified in the job script. - If you do not specify a name there, you will see that that job gets the name - ``sbatch`` in the 'Active Jobs' menu. -- Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. -- Specify job script: if you have multiple job scripts in the directory, you can specify which one to run. -- Account: here you can specify which account to use. Be aware that this will overwrite the account you might have specified in your job script. -- Job array: we do not recommend using this. If you would like to use job arrays, have a look at :ref:`the worker framework`. - -Everything should now be set up to start a job. Any job can be started by clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You cannot use the -'Submit' job to start the exact same job multiple times. You can use the 'New Job - From Selected Job' option for this. If you delete any of the jobs, you also remove -the folder that it is associated with. - -Clusters -======== - -When selecting 'Clusters - Login Server Shell Access' you will get a terminal window in a new browser tab. -You will arrive on one of the Genius login nodes, which -you can use as you are used to, including the option to submit jobs to Genius or wICE. -As with the Genius login nodes, this means that this shell is not meant for any -calculation. -If you would like to perform calculations in an interactive job, you should be -using the :ref:`interactive shell` app. - -.. _interactive-apps: - -Interactive apps -================ - -This menu provides a range of different apps that provide a GUI. -In the background this means that you are submitting an interactive job to the cluster, in which the app will be running. - -To launch any of the interactive apps, you need to fill in the resources form. -Most of the options in the resource forms are similar across all apps, but some apps require additional input from the user. -These will be explained in the specific paragraph about the apps. -A more detailed guide on how to choose your resources is available in the -:ref:`next section `. -Beware that by launching any app you will end up in a regular queue, so requesting a large amount of resources might result in a long queue time. - -- Cluster: allows choosing between one of our :ref:`Tier-2 clusters ` in production, namely Genius or wICE -- Account: the credit account you want to deduct the credits from. - The accounts associated with your VSC number will be displayed in a dropdown menu. -- Partition: you can choose any of the existing partitions on both clusters. - The partition names depend on your choice of cluster. - We recommend using the ``interactive`` partition for most interactive work. -- Numbers of hours: your walltime (min 1h). -- Number of cores: the amount of cores per node. This defaults to 1. -- Required memory per core in megabytes. This defaults to 3400 MB. -- Number of GPUs. Depending on the GPU partition you have requested, you get a different device type. - The default is 0. - The acquired GPU will be the same as the type specified in the partition (e.g. a NVidia H100 for ``gpu_h100`` on wICE). - For wICE, you can also request a GPU from the ``interactive`` partition. - One GPU here is a virtual GPU slice of the available A100 GPUs. - One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. - The interactive partition only allows you to request max 1 GPU (slice) though. -- Reservation: if you are part of a reservation, you can also use these nodes with Open Ondemand by specifying your reservation name here. -- Pre-run scriptlet: this allows you to add bash commands to your job before launching the app. - This can be used for example for loading extra modules that you need within the app, sourcing a specific script - or defining specific environment variable(s). - - .. warning:: - - Be careful in using this feature, because you will be modifying the behavior of your session. - -- Screen resolution: for apps which run inside a remote `noVNC`_ desktop (e.g. MATLAB, ParaView, etc), one - may choose a resolution between 'FullHD', '2K' or '4K'. - After launching the app, one may still change the compression level and the image quality of the - transferred noVNC frames. - E.g. opting for the lowest compression level and highest image quality can give you a crisp noVNC desktop. -- View Only (Share-able Link): for `noVNC`_ apps, you can provide a view-only access to other VSC users. - For that, click on the 'View Only (Share-able Link)' button to copy the URL into your clipboard, - and be able to share it with others. - - .. warning:: - - As the end-user, you are responsible for all consequences of sharing your application with other - VSC users. - So, think twice before sharing your sensitive data, sources and information by all means. - -Once you've specified all your resources, just press 'Launch' and your job will be queued. - -.. _choosing_your_resources: - -Choosing your resources ------------------------ - -Choosing the correct resources for your interactive session is mostly the same as selecting them when -launching regular batch jobs. -For this reason, we strongly recommend you to have a look at how to specify your resources for using -both :ref:`Genius ` and :ref:`wICE `. - -As mentioned above, in most cases we recommend using the 'interactive' partition on wICE for the interactive apps. -This partition is meant for lighter work, like code development, testing, debugging, visualisations, -pre- and post-processing. -Using this partition is also free, mainly to encourage you to request these resources for such work, instead -of using any of the other partitions. There are however some limitations on the amount of resources you can request here: - -- Max 1 node -- Max 8 cores -- Max 1 virtual GPU slice -- Max 16h of walltime - -This is put in place to ensure that these resources are kept for their original purpose, namely the interactive work. - -If for some reason some of these limitations are too strict for you, or you need resources that are not available on -the interactive nodes (e.g. a full GPU, big memory nodes), you can always request nodes from another partition. -Remember however that these interactive apps are not meant for running full jobs. -If you indeed need multiple nodes or full GPUs to test your code/program, go ahead and request the resources for -your interactive app from a more suitable partition. -In the case that you have passed the testing phase, and you want to start conducting experiments, -we recommend that you make the switch to batch jobs instead, as they will not require your presence to start your code. - -.. _interactive_shell: - -Interactive shell ------------------ - -This app will launch a shell on (one of) the requested node(s), allowing you to use these compute resources -from within a Linux terminal. -This is different than the shell you get in the "Clusters - Login Server Shell Access" menu, -which directs you towards one of the login nodes. - -Currently, the :ref:`cluster modules ` are not automatically loaded when your session starts. -In order to use modules, one needs to explicitly load the cluster module that adheres to the choice of -cluster and partition for his or her job. -For instance, if your job starts on wICE interactive partition, one needs to execute the following command:: - - module load cluster/wice/interactive - -The same applies for other choices of partitions on Genius or wICE clusters. - -JupyterLab ------------ - -With this app you can write and run -`Jupyter `_ notebooks containing -annotated Python, R or Julia code (among other languages). IPython consoles are -available as well. One of the benefits of JupyterLab is that it supports -different types of user-defined environments, as will become clear below. - -**Remarks:** - -- The top-level notebook directory is by default ``$VSC_DATA``. -- At the moment, we do not support installing extensions in JupyterLab. - -Pure module environment -~~~~~~~~~~~~~~~~~~~~~~~ - -In the app resource form, besides the normal choices (:ref:`listed above `), -you can also choose from different 'Toolchain and Python versions' from a drop-down menu. -An example would be '2023a and ``Python/3.11.3-GCCcore-12.3.0``'. -Based on that choice, the corresponding JupyterLab module will be loaded together with its -dependencies (such as the listed Python module). - -Furthermore, you may choose to load ``SciPy-bundle`` (for widely used packages like ``scipy``, -``numpy``, ``pandas`` and more) and/or ``matplotlib`` modules from the same toolchain. - -Once you launch a JupyterLab session, a default kernel called ``Python 3 (ipykernel)`` is already available in your session. -This kernel, in addition to the Python standard library, would enable using extra packages from -``SciPy-bundle`` and/or ``matplotlib``, if you selected them in the resource form. - -.. warning:: - - If you use JupyterLab in this way, remember to be consistent in your choice of toolchain version - as this e.g. determines the version of Python that will be used. - -User-defined kernels -~~~~~~~~~~~~~~~~~~~~ - -If the pure module environment does not provide all Python packages that you need, -then you can locally install these extra packages, followed by installing the corresponding -Jupyter kernel either from a :ref:`Python Conda environment`, or from a -:ref:`Python virtual environment`. -For R, you may create your customized environment using :ref:`Conda environments for R`. - -.. note:: - - User kernels are stored by default in ``${VSC_HOME}/.local/share/jupyter/kernels``. - To override this and store your kernel specifications in a non-default location, - you may drop the following line in your ``${VSC_HOME}/.bashrc``:: - - export XDG_DATA_HOME=${VSC_DATA}/.local/share - - When the ``${XDG_DATA_HOME}`` variable is set, subsequent kernel installations - (for both Python and R) will reside in ``${XDG_DATA_HOME}/jupyter/kernels``. - To remove a kernel, find and delete the corresponding folder inside the ``kernels`` - subdirectory. - We strongly advice you to stay away from modifying the contents of this folder, - unless you are aware of the consequences. - -.. _py-conda-kernel: - -Conda environments for Python -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you have not installed Conda in your account yet, please refer to the -:ref:`install Miniconda ` page. - -Assuming you have created a Conda environment for :ref:`Python `, -the corresponding kernel needs to be installed for use with JupyterLab. -Note that the minimum supported version for Python for our JupyterLab setup is Python 3.7. -First activate the Conda environment, install the ``ipykernel`` package (which should be at -least version 6.19.2) and finally the kernel itself:: - - source activate - conda install ipykernel - python -m ipykernel install --user --env PYTHONPATH "" --name --display-name - -These commands should be excecuted from a shell (e.g. using 'Login Server Shell Access'), -and only need to be done once for a given environment. -When launching a new JupyterLab session, this kernel should then show up in the overview -of available kernels. -In case you encounter issues such as freezing or crashing JupyterLab sessions with a previously -existing kernel, then reinstalling that kernel may help. - -.. _py-venv-kernel: - -Python virtual environments -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A similar procedure applies for Python virtual environments associated with -a centrally installed Python module. Note that the chosen Python module needs -to be in the list of 'Toolchain and Python versions' of the JupyterLab form -(e.g. ``2023a and Python/3.11.3-GCCcore-12.3.0``). The commands below show -how creating such a virtual environment and installing the corresponding kernel -would typically look like (to be done from a shell, e.g. using 'Login Server Shell Access'): - -.. code-block :: bash - - cd ${VSC_DATA} - # the line below is needed if you use the 'Interactive Shell' app - module use /apps/leuven/${VSC_OS_LOCAL}/${VSC_ARCH_LOCAL}${VSC_ARCH_SUFFIX}/2023a/modules/all - module load Python/3.11.3-GCCcore-12.3.0 - python -m venv - source /bin/activate - pip install ipykernel - # note that unlike for Conda environments the "--env ..." argument is not needed below - python -m ipykernel install --user --name --display-name - -On the JupyterLab form, choose a partition to your liking and select the same -toolchain as above. Once you connect to your session, your new kernel will be -ready to use. To verify your setup, you can execute ``import sys; sys.executable`` -in your notebook, and the resulting path should point to the location of your -virtual environment. - -**Remarks:** - -- The above example assumes that your virtual environment can be used on - different CPU and/or GPU architectures than the ones present on the node - on which you created the environment and installed the extra packages. - This is normally the case for typical ``pip`` usage where precompiled 'wheels' - get downloaded and installed and which can therefore be used on any - architecture. -- If however one your package installation steps involves compiling source code, - then you might only be able to use your virtual environment on the same - architecture where the compilation was carried out. If this is the case we - recommend to consider the suggestions in the - :ref:`wICE advanced guide`. - -.. _r-conda-kernel: - -Conda environments for R -~~~~~~~~~~~~~~~~~~~~~~~~ - -For R, you need both the ``jupyter_client`` and the ``irkernel`` Conda packages installed. -With the following command you can create the kernel:: - - Rscript -e 'IRkernel::installspec(name="", displayname="")' - -Once the kernel is created, you will see it in the 'Launcher' menu. -You can now start working in your own customized environment. - -For more general information, please refer to the `official JupyterLab documentation`_. - -RStudio Server --------------- - -This interactive app allows you to run an RStudio session on the cluster. -In the 'Toolchain year and R version' drop-down menu, you can choose the version -of R module that would be loaded for your session (such as `R/4.2.2-foss-2022b`). -Additionally, the `R-bundle-CRAN` and `R-bundle-Bioconductor` modules can be loaded -on top of the base R module to provide easy access to hundreds of preinstalled packages. - -It is also possible to use locally installed R packages with RStudio, see :ref:`R package management`. -RStudio furthermore allows to create RStudio projects to manage your -R environments. When doing so, we recommend to select the -`renv `_ option -to ensure a completely independent R environment. Without `renv`, -loading an RStudio project may lead to incomplete R library paths. - -For more information on how to use RStudio, check out the `official documentation `__. - -**Remarks:** - -- Navigating between your different directories is possible using the file explorer. - If you are navigating by clicking the folder, you will notice that you can see all user folders. - You do not have access to these, and you will receive an error when you try to open them. - You will also notice that you cannot use the same way of navigating after this. - Another solution is to click the three dots on the right (...) and enter your path. -- The 'Tools-Install packages' interface does not allow you to select any other path than the default in your ``$VSC_HOME``. - It is recommended to use the ``install.packages()`` function instead. -- RStudioServer will by default store the RStudio cache in ``$VSC_HOME/.local/share/rstudio``. - This cache can get very large, and cause you to exceed the quota of your home directory. - To avoid this, you can redirect this cache to your data directory by setting the ``$XDG_DATA_HOME`` - variable in your ``~/.bashrc``: - - .. code-block:: bash - - echo "export XDG_DATA_HOME=$VSC_DATA/.local/share" >> ~/.bashrc - -- Additionally, it is advised to change the default behaviour of RStudio to not restore .RData - into the workspace on start up and to never Save the workspace to .RData on exit. - You can do this via the RStudio interface: - Tools > Global Options > General > Workspace - -Tensorboard ------------ - -Tensorboard is an interactive app that allows you to visualize and measure different aspects of -your machine learning workflow. -Have a look at the `official guidelines `_ -for more detailed information. - -The Tensorboard interactive session requires you to specify a project (or log) directory in -your submission options. -This is a relative directory starting from your ``$VSC_DATA``. -Beware that you cannot change this directory, once the session is launched. -If you redirect Tensorboard to a wrong folder (typo in path name or missing log files), -Tensorboard fails to start, and your session lands on an error page starting with the message: -'No dashboards are active for the current data set.'. - -Code Server ------------ - -This is the browser version of Visual Studio Code. -For more information, check out `VSCode official guidelines `_. -As a default, a Python and a Git module are already loaded, which means you can use both Python and git -from a terminal window within code-server. - -How to open a terminal window is probably one of the first things you should know: click on the three -horizontal lines in the upper left corner, select 'Terminal - New Terminal' -This will open a shell on the node you are running your session on. -Notice that you are starting in your ``$VSC_DATA`` directory. -You can use this as a regular shell, meaning that you can submit jobs, load modules and so on. - -Code-server contains many different options and menus, but only a few will be discussed here. -Feel free to explore them. -We will however discuss how to set up code-server to use any of the compatible languages, -and use code-server as an IDE. -For each of the languages you want to use you need two things: an installation of -the specific interpreter, and an extension in code-server that allows you to connect to it. -The extensions can be found in the 'extensions' menu. -In what follows, the steps for both Python and R are described. - -Setup Python in Code Server -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are multiple Python extensions available, so feel free to try and install the extension that suits you the best. -This comes with the warning that only the Microsoft Python extension has been tested by our team. -To install this extension, go to 'Extensions' and search for 'Python'. -Install the one with as developer 'ms-python'. -If you now open a script, you can now use code-server as an IDE and run the lines of code from within -the script (the shortkey is shift+enter). -Code-server will start a Python session with the currently selected Python interpreter. -If you did not specify another one, this should default to the loaded Python module. -This Python extension gives you the possibility to choose other interpreters as well. -In the right down corner, you can see right next to 'Python'. -If you click that, a window will appear where you can select your Python version. -Next to the module version, you should see at least some system Python versions (e.g. ``/bin/python``). -You can also load other modules, or you can also use Conda environments here (if you have any Conda environments -already, you should see them here as well). - -If you need more information about creating your customized Python environments, have a look :ref:`here `. - -**Remarks:** - -- Whenever loading a new Python interpreter, you will have to kill your current Python terminal before - you will be able to use this new interpreter. - - -Setup R in Code Server -~~~~~~~~~~~~~~~~~~~~~~ - -For full functionality, it is recommended to work with Conda environments. -For the time being, there are some issues with using modules together with functionalities, like plotting. - -There are some package requirements if you want to use R in code-server. -The following command creates a functional environment (of course, add any other packages you need): - - .. code-block:: bash - - conda create -n -c conda-forge r-base r-remotes r-languageserver r-httpgd r-jsonlite - -Once you've created your environment, go ahead and start a code-server session on Open Ondemand. -On the lefthand side, go to the extension menu and search for 'R'. -You should install the 'R' extension of 'REditorSupport'. - -Now there are two ways to use the R installation inside your Conda environment: - -- Open a terminal (three horizontal lines in the upper left corner - Terminal - New Terminal), - and activate your Conda environment. - Now type ``R`` in the terminal and you will be able to use your scripts interactively - (R gets attached as soon as you start it). -- You can also set the path to the R version that needs to be attached (better if you always - use the same Conda environment). - Go to 'Extensions', and click the settings wheel next to the R extension. - Select 'Extension Settings' and search for the 'R > RTerm: Linux' setting. - Paste the path to your Conda env there (``/path/to/miniconda/envs//lib/R``) - -**Remarks:** - -- To run your script line-by-line, place your cursor on a desired line, and press the key combination of - 'ctrl+enter' on your keyboard. - - -.. _ood_matlab_app: - -MATLAB ------- - -To launch MATLAB via OnDemand, you need to additionally specify your desired version of the software -from the drop-down menu on the resource form. -Given that our current MATLAB installations automatically detect GPU devices and CUDA libraries, -you may also request GPU(s) as resources, if needed. - -Once you launch the session, a remote `noVNC`_ desktop will start on a compute node. -Once the session starts, the selected MATLAB module will be loaded, and eventually the MATLAB GUI -will pop up (after waiting for few seconds). - -.. note:: - - Only vsc3* users (affiliated with KU Leuven) who are members of the ``lli_matlab`` group - have rights to use the MATLAB module (hence the MATLAB app). If you are not already member - of the group, contact the :ref:`KU Leuven supprt team` for an invitation, - or :ref:`request joining this group` via your VSC account page. - -ParaView --------- - -For visualization purposes, you may use the `ParaView app `_. -Similar to the :ref:`MATLAB app `, ParaView also runs inside a `noVNC`_ -desktop as a compute job. - -**Remarks:** - -- Currently, using GPUs in ParaView is not supported yet, and just the CPU-only modules are offered. - - -.. _KU Leuven Open OnDemand page: https://ondemand.hpc.kuleuven.be/ -.. _official JupyterLab documentation: https://docs.jupyter.org/en/latest/ -.. _RStudio official documentation: https://docs.rstudio.com/ -.. _noVNC: https://novnc.com/ - diff --git a/source/leuven/tier2_hardware/tier2_login_nodes.rst b/source/leuven/tier2_hardware/tier2_login_nodes.rst index e72e63b5f..8505a0917 100644 --- a/source/leuven/tier2_hardware/tier2_login_nodes.rst +++ b/source/leuven/tier2_hardware/tier2_login_nodes.rst @@ -9,7 +9,7 @@ The access to both machines is possible - either via the Genius login nodes (see below), as wICE itself has no dedicated login node -- or via the :ref:`Open On-Demand ` on your web browser +- or via the :ref:`Open On-Demand ` on your web browser Login infrastructure -------------------- diff --git a/source/leuven/wice_quick_start.rst b/source/leuven/wice_quick_start.rst index b570de36d..f4aeb6f1d 100644 --- a/source/leuven/wice_quick_start.rst +++ b/source/leuven/wice_quick_start.rst @@ -10,7 +10,7 @@ nodes with GPUs. wICE does not have separate login nodes and can be accessed either from the :ref:`Genius login nodes `, or from your web browser via the -:ref:`Open On-Demand ` service. +:ref:`Open On-Demand ` service. .. _running jobs on wice: From c5b11440fa4149bf1a006d9689c4de01f33e6f7c Mon Sep 17 00:00:00 2001 From: sam Date: Thu, 16 Jan 2025 18:18:37 +0100 Subject: [PATCH 2/6] more updates --- .../{active-jobs.rst => active-jobs.rest} | 2 + source/access/ondemand/clusters.rst | 4 +- source/access/ondemand/files.rst | 23 ++- source/access/ondemand/index.rst | 2 - source/access/ondemand/interactive-apps.rst | 163 +++++++++++------- ...ser-about-leuven.rst => job-composer.rest} | 39 +++++ source/access/ondemand/job-composer.rst | 52 ------ source/access/ondemand/jobs.rst | 25 ++- 8 files changed, 182 insertions(+), 128 deletions(-) rename source/access/ondemand/{active-jobs.rst => active-jobs.rest} (97%) rename source/access/ondemand/{job-composer-about-leuven.rst => job-composer.rest} (50%) delete mode 100644 source/access/ondemand/job-composer.rst diff --git a/source/access/ondemand/active-jobs.rst b/source/access/ondemand/active-jobs.rest similarity index 97% rename from source/access/ondemand/active-jobs.rst rename to source/access/ondemand/active-jobs.rest index 64284290f..7c8208f29 100644 --- a/source/access/ondemand/active-jobs.rst +++ b/source/access/ondemand/active-jobs.rest @@ -1,3 +1,5 @@ +.. _ood_active_jobs: + Active jobs ----------- diff --git a/source/access/ondemand/clusters.rst b/source/access/ondemand/clusters.rst index 0617a1b98..63663bb76 100644 --- a/source/access/ondemand/clusters.rst +++ b/source/access/ondemand/clusters.rst @@ -1,8 +1,8 @@ Clusters ======== -When selecting 'Login Server Shell Access' from the 'Clusters menu, you will get -a terminal window in a new browser tab. You will arrive on one of the login +When selecting 'Login Server Shell Access' from the 'Clusters' menu, you will +get a terminal window in a new browser tab. You will arrive on one of the login nodes, which you can use in the same way as with terminal-based SSH access. Remember, however, that login nodes are not meant for any compute-intensive calculation. If you would like to perform calculations in an interactive job, diff --git a/source/access/ondemand/files.rst b/source/access/ondemand/files.rst index 3807e7818..6bc70ba7f 100644 --- a/source/access/ondemand/files.rst +++ b/source/access/ondemand/files.rst @@ -5,15 +5,26 @@ This menu provides a file explorer that allows you to navigate through your files and folders. You can access your ``$VSC_HOME`` and ``$VSC_DATA`` folders. Depending on the institution, other storages may also be available. General file explorer options like moving, deleting, modifying and creating files or -directories are available as well. You can also use this interface to download -and upload files to and from your local machine. Be aware that this is not -recommended for very large files. +directories are available as well. + +Download/upload +--------------- + +You can also use the Files interface to download and upload to and from +your local machine. Be aware that this is not recommended for very large files. For large files we recommend the :ref:`globus platform`. The ``Globus`` button takes you directly to the Globus login page, and upon a successful login to your Globus account (using your institution credentials), you will land on the same sub-directory from which you clicked on the Globus button. -**Good to know:** the standard 'ctrl+s' does not save your edited files on Open -OnDemand, but will trigger a save on your local machine. Luckily, there is a -``Save`` button in the upper left corner on the editor page. +File editing +------------ + +You can edit a file via the button with 3 dots and a down arrow on the right +side of the file. + +.. tip:: The standard ``ctrl+s`` keyboard shortcut does **not** save your edited + files on Open OnDemand, but will trigger a save on your local machine. + Luckily, there is a ``Save`` button in the upper left corner on the editor + page. diff --git a/source/access/ondemand/index.rst b/source/access/ondemand/index.rst index b879be5b8..d66aef333 100644 --- a/source/access/ondemand/index.rst +++ b/source/access/ondemand/index.rst @@ -45,8 +45,6 @@ detail. files jobs - job-composer - active-jobs clusters interactive-apps interactive-shell diff --git a/source/access/ondemand/interactive-apps.rst b/source/access/ondemand/interactive-apps.rst index f0b2b89b2..2db3af94d 100644 --- a/source/access/ondemand/interactive-apps.rst +++ b/source/access/ondemand/interactive-apps.rst @@ -4,86 +4,127 @@ Interactive apps ================ The 'Interactive Apps' menu shows a range of different apps that provide a GUI. -In the background this means that you are submitting an interactive job to the cluster, in which the app will be running. - -To launch any of the interactive apps, you need to fill in the resources form. -Most of the options in the resource forms are similar across all apps, but some apps require additional input from the user. -These will be explained in the specific paragraph about the apps. -A more detailed guide on how to choose your resources is available in the -:ref:`next section `. -Beware that by launching any app you will end up in a regular queue, so requesting a large amount of resources might result in a long queue time. - -- Cluster: allows choosing between one of our :ref:`Tier-2 clusters ` in production, namely Genius or wICE -- Account: the credit account you want to deduct the credits from. - The accounts associated with your VSC number will be displayed in a dropdown menu. +When you launch an interactive app, Open Ondemand uses your account to submit an +interactive job to the cluster, in which the app will be running. + +To launch any of the interactive apps, you need to fill out the resources form. +Most of the options in the resource forms are similar across all apps, but some +apps require additional input from the user. These will be explained in the +app-specific sections. See also the section on :ref:`choosing your resources +` for more details. Beware that by launching any app +your interactive job will end up in a regular queue, so requesting a large +amount of resources might result in a long queue time. + +Once you've specified all your resources, press the ``Launch`` button and your +job will be queued. + +*Resources common to all institutions*: + +- Cluster: allows choosing between one of the supported clusters. - Partition: you can choose any of the existing partitions on both clusters. The partition names depend on your choice of cluster. - We recommend using the ``interactive`` partition for most interactive work. -- Numbers of hours: your walltime (min 1h). -- Number of cores: the amount of cores per node. This defaults to 1. -- Required memory per core in megabytes. This defaults to 3400 MB. + + |KUL| We recommend using the ``interactive`` partition for most interactive work. + +- Numbers of hours: the time limit of your interactive app (min 1h). +- Number of nodes: the amount of nodes (default = 1). +- Number of cores: the amount of cores per node (default = 1). - Number of GPUs. Depending on the GPU partition you have requested, you get a different device type. The default is 0. - The acquired GPU will be the same as the type specified in the partition (e.g. a NVidia H100 for ``gpu_h100`` on wICE). - For wICE, you can also request a GPU from the ``interactive`` partition. - One GPU here is a virtual GPU slice of the available A100 GPUs. - One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. - The interactive partition only allows you to request max 1 GPU (slice) though. -- Reservation: if you are part of a reservation, you can also use these nodes with Open Ondemand by specifying your reservation name here. - Pre-run scriptlet: this allows you to add bash commands to your job before launching the app. This can be used for example for loading extra modules that you need within the app, sourcing a specific script or defining specific environment variable(s). .. warning:: - Be careful in using this feature, because you will be modifying the behavior of your session. + Be careful when using this feature, because you will be modifying the behavior of your session. -- Screen resolution: for apps which run inside a remote `noVNC`_ desktop (e.g. MATLAB, ParaView, etc), one - may choose a resolution between 'FullHD', '2K' or '4K'. - After launching the app, one may still change the compression level and the image quality of the - transferred noVNC frames. - E.g. opting for the lowest compression level and highest image quality can give you a crisp noVNC desktop. -- View Only (Share-able Link): for `noVNC`_ apps, you can provide a view-only access to other VSC users. - For that, click on the 'View Only (Share-able Link)' button to copy the URL into your clipboard, - and be able to share it with others. +*Resources specific for each institution*: - .. warning:: +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + - Account: the credit account you want to deduct the credits from. + The accounts associated with your VSC number will be displayed in a dropdown menu. + - Required memory per core in megabytes. This defaults to 3400 MB. + - The acquired GPU will be the same as the type specified in the partition (e.g. a NVidia H100 for ``gpu_h100`` on wICE). + For wICE, you can also request a GPU from the ``interactive`` partition. + One GPU here is a virtual GPU slice of the available A100 GPUs. + One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. + The interactive partition only allows you to request max 1 GPU (slice) though. + - Reservation: if you are part of a reservation, you can also use these nodes with Open Ondemand by specifying your reservation name here. + - Screen resolution: for apps which run inside a remote `noVNC`_ desktop (e.g. MATLAB, ParaView, etc), one + may choose a resolution between 'FullHD', '2K' or '4K'. + After launching the app, one may still change the compression level and the image quality of the + transferred noVNC frames. + E.g. opting for the lowest compression level and highest image quality can give you a crisp noVNC desktop. + - View Only (Share-able Link): for `noVNC`_ apps, you can provide a view-only access to other VSC users. + For that, click on the 'View Only (Share-able Link)' button to copy the URL into your clipboard, + and be able to share it with others. + + .. warning:: + + As the end-user, you are responsible for all consequences of sharing your application with other + VSC users. + So, think twice before sharing your sensitive data, sources and information by all means. + + .. tab-item:: VUB - As the end-user, you are responsible for all consequences of sharing your application with other - VSC users. - So, think twice before sharing your sensitive data, sources and information by all means. + (no specific resources) -Once you've specified all your resources, just press 'Launch' and your job will be queued. .. _choosing_your_resources: Choosing your resources ----------------------- -Choosing the correct resources for your interactive session is mostly the same as selecting them when -launching regular batch jobs. -For this reason, we strongly recommend you to have a look at how to specify your resources for using -both :ref:`Genius ` and :ref:`wICE `. - -As mentioned above, in most cases we recommend using the 'interactive' partition on wICE for the interactive apps. -This partition is meant for lighter work, like code development, testing, debugging, visualisations, -pre- and post-processing. -Using this partition is also free, mainly to encourage you to request these resources for such work, instead -of using any of the other partitions. There are however some limitations on the amount of resources you can request here: - -- Max 1 node -- Max 8 cores -- Max 1 virtual GPU slice -- Max 16h of walltime - -This is put in place to ensure that these resources are kept for their original purpose, namely the interactive work. - -If for some reason some of these limitations are too strict for you, or you need resources that are not available on -the interactive nodes (e.g. a full GPU, big memory nodes), you can always request nodes from another partition. -Remember however that these interactive apps are not meant for running full jobs. -If you indeed need multiple nodes or full GPUs to test your code/program, go ahead and request the resources for -your interactive app from a more suitable partition. -In the case that you have passed the testing phase, and you want to start conducting experiments, -we recommend that you make the switch to batch jobs instead, as they will not require your presence to start your code. +Choosing the correct resources for your interactive session is mostly the same +as selecting them when launching regular batch jobs. For this reason, we +strongly recommend you to have a look at how to specify your resources. + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + Documentation on resources is available for both :ref:`Genius + ` and :ref:`wICE `. + + As mentioned above, in most cases we recommend using the 'interactive' + partition on wICE for the interactive apps. This partition is meant for + lighter work, like code development, testing, debugging, visualisations, + pre- and post-processing. Using this partition is also free, mainly to + encourage you to request these resources for such work, instead of using + any of the other partitions. There are however some limitations on the + amount of resources you can request here: + + - Max 1 node + - Max 8 cores + - Max 1 virtual GPU slice + - Max 16h of walltime + + This is put in place to ensure that these resources are kept for their + original purpose, namely the interactive work. + + If for some reason some of these limitations are too strict for you, or + you need resources that are not available on the interactive nodes (e.g. a + full GPU, big memory nodes), you can always request nodes from another + partition. Remember however that these interactive apps are not meant for + running full jobs. If you indeed need multiple nodes or full GPUs to test + your code/program, go ahead and request the resources for your interactive + app from a more suitable partition. + + .. tab-item:: VUB + + Documentation on resources is available in the section on `job submission + `_. + + For light-weight (testing) work, we recommend using the ``Anansi`` + cluster, which also contains 4 shared GeForce GTX 1080 Ti GPUs for + improved rendering performance. + +In the case that you have passed the testing phase, and you want to start +conducting experiments, we recommend that you make the switch to batch jobs +instead, as they will not require your presence to start your code. .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/job-composer-about-leuven.rst b/source/access/ondemand/job-composer.rest similarity index 50% rename from source/access/ondemand/job-composer-about-leuven.rst rename to source/access/ondemand/job-composer.rest index 806ec7db4..7a3c8cc26 100644 --- a/source/access/ondemand/job-composer-about-leuven.rst +++ b/source/access/ondemand/job-composer.rest @@ -1,6 +1,45 @@ +.. _ood_job_composer: + +Job Composer +------------ + +About +~~~~~ + The Job Composer contains all the tools that allow you to launch your jobs. This goes from basic job script building, adding necessary files, to building and using templates for easier job creation. Under the job composer tab you can find two other menus, namely ‘Jobs’ and ‘Templates’. As templates are the backbone of job creation in Open OnDemand, we will start by explaining these. The ‘Jobs’ menu is pretty much self-explanatory once understanding this. + +Templates +~~~~~~~~~ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + .. include:: job-composer-templates-leuven.rst + + + .. tab-item:: VUB + + (not available at this time) + +Creating jobs +~~~~~~~~~~~~~ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + .. container:: + + .. include:: job-composer-jobs-leuven.rst + + + .. tab-item:: VUB + + (not available at this time) + diff --git a/source/access/ondemand/job-composer.rst b/source/access/ondemand/job-composer.rst deleted file mode 100644 index bf59f6b7e..000000000 --- a/source/access/ondemand/job-composer.rst +++ /dev/null @@ -1,52 +0,0 @@ -Job Composer ------------- - -About -~~~~~ - -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - .. container:: - - .. include:: job-composer-about-leuven.rst - - - .. tab-item:: VUB - - (not available at this time) - - -Templates -~~~~~~~~~ - -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - .. container:: - - .. include:: job-composer-templates-leuven.rst - - - .. tab-item:: VUB - - (not available at this time) - -Jobs -~~~~ - -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - .. container:: - - .. include:: job-composer-jobs-leuven.rst - - - .. tab-item:: VUB - - (not available at this time) - diff --git a/source/access/ondemand/jobs.rst b/source/access/ondemand/jobs.rst index 17d7141cf..4aa3f413a 100644 --- a/source/access/ondemand/jobs.rst +++ b/source/access/ondemand/jobs.rst @@ -1,13 +1,28 @@ Jobs ==== -All jobs submitted from Open OnDemand can run on the available clusters. -This also means that all your jobs should be submitted as **Slurm** jobs. +All jobs submitted from Open OnDemand will run on any the supported clusters. +This means that all your jobs should be submitted as *Slurm* jobs. For more details on how to run jobs on the different VSC clusters, check out -their respective documentation. +the corresponding documentation: -Depending on the institution, the 'Jobs' menu may have one or two items: 'Active Jobs', -and optionally 'Job Composer'. +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + + :ref:`wICE quick start guide` + + + .. tab-item:: VUB + + `Job submission documentation `_ + +Depending on the institution, the 'Jobs' menu may have one or two items: :ref:`Active Jobs`, +and possibly :ref:`Job Composer`. .. and 'Projects' (which we skip here, because at the time of this writing, it is still in development by the upstream). +.. include:: active-jobs.rest + +.. include:: job-composer.rest From 8e80a8327043411927427dd64cbb05bd6668253d Mon Sep 17 00:00:00 2001 From: sam Date: Fri, 17 Jan 2025 16:08:41 +0100 Subject: [PATCH 3/6] more updates 2 --- source/access/ondemand/clusters_ood.rst | 24 --- source/access/ondemand/index.rst | 13 +- source/access/ondemand/interactive-apps.rst | 159 ++++++++++++------- source/access/ondemand/interactive-shell.rst | 13 +- source/access/ondemand/links_ood.rst | 14 +- source/access/ondemand/tensorboard.rst | 31 +++- 6 files changed, 144 insertions(+), 110 deletions(-) delete mode 100644 source/access/ondemand/clusters_ood.rst diff --git a/source/access/ondemand/clusters_ood.rst b/source/access/ondemand/clusters_ood.rst deleted file mode 100644 index dec68adf3..000000000 --- a/source/access/ondemand/clusters_ood.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. grid:: 3 - :gutter: 4 - - .. grid-item-card:: UAntwerp (AUHA) - :columns: 12 4 4 4 - - (coming soon) - - .. * Tier-2 :ref:`Vaughan ` - .. * Tier-2 :ref:`Leibniz ` - .. * Tier-2 :ref:`Breniac ` - - .. grid-item-card:: KU Leuven/UHasselt - :columns: 12 4 4 4 - - * Tier-2 :ref:`Genius ` - * Tier-2 :ref:`wICE ` - - .. grid-item-card:: VUB - :columns: 12 4 4 4 - - * Tier-2 :ref:`Hydra ` - * Tier-2 Anansi - diff --git a/source/access/ondemand/index.rst b/source/access/ondemand/index.rst index d66aef333..dac277c51 100644 --- a/source/access/ondemand/index.rst +++ b/source/access/ondemand/index.rst @@ -4,25 +4,16 @@ :fas:`circle-play` Open OnDemand ################################ -About -===== - Open OnDemand provides a user interface to HPC clusters from within a web browser. This tool supports a range of different apps and features that not only allow the user to easily submit jobs from within the browser, but also provide different coding GUIs, tools for plotting and more. -Availability and access -======================= - -Links to the Open OnDemand portals: +Portals +======= .. include:: links_ood.rst -:fas:`server` VSC clusters available via OnDemand: - -.. include:: clusters_ood.rst - You can log in using the credentials of your home institution or your VSC credentials. diff --git a/source/access/ondemand/interactive-apps.rst b/source/access/ondemand/interactive-apps.rst index 2db3af94d..a7608799e 100644 --- a/source/access/ondemand/interactive-apps.rst +++ b/source/access/ondemand/interactive-apps.rst @@ -8,70 +8,103 @@ When you launch an interactive app, Open Ondemand uses your account to submit an interactive job to the cluster, in which the app will be running. To launch any of the interactive apps, you need to fill out the resources form. -Most of the options in the resource forms are similar across all apps, but some +Most of the options in the resources form are similar across all apps, but some apps require additional input from the user. These will be explained in the app-specific sections. See also the section on :ref:`choosing your resources -` for more details. Beware that by launching any app +` for recommendations. Beware that by launching any app your interactive job will end up in a regular queue, so requesting a large amount of resources might result in a long queue time. Once you've specified all your resources, press the ``Launch`` button and your job will be queued. -*Resources common to all institutions*: - -- Cluster: allows choosing between one of the supported clusters. -- Partition: you can choose any of the existing partitions on both clusters. - The partition names depend on your choice of cluster. - - |KUL| We recommend using the ``interactive`` partition for most interactive work. - -- Numbers of hours: the time limit of your interactive app (min 1h). -- Number of nodes: the amount of nodes (default = 1). -- Number of cores: the amount of cores per node (default = 1). -- Number of GPUs. Depending on the GPU partition you have requested, you get a different device type. - The default is 0. -- Pre-run scriptlet: this allows you to add bash commands to your job before launching the app. - This can be used for example for loading extra modules that you need within the app, sourcing a specific script - or defining specific environment variable(s). - - .. warning:: - - Be careful when using this feature, because you will be modifying the behavior of your session. - -*Resources specific for each institution*: +.. list-table:: Common resources + :header-rows: 1 + + * - Resource + - Description + * - Cluster + - Select one of the supported clusters. + * - Partition + - Select a supported partition in the selected cluster. + * - Number of hours + - Select the time limit (in hours) for your interactive app session. + * - Number of nodes + - Select the amount of nodes. We recommend 1 node in most cases, unless you + are sure your app *can and will* use more than 1 node effectively. + * - Number of cores + - Select the amount of cores per node. + * - Number of GPUs + - Select the amount of GPUs per node. Check the :ref:`hardware` section for + the device type that corresponds to the selected cluster/partition. + * - Pre-run scriptlet + - Optionally add shell commands to your job before launching the app. + Examples: loading extra modules that you need within the app, sourcing a + specific script, or defining specific environment variable(s). + +.. warning:: + + Be careful when using the Pre-run scriptlet, because you will be modifying + the behavior of your session. .. tab-set:: .. tab-item:: KU Leuven/UHasselt - - Account: the credit account you want to deduct the credits from. - The accounts associated with your VSC number will be displayed in a dropdown menu. - - Required memory per core in megabytes. This defaults to 3400 MB. - - The acquired GPU will be the same as the type specified in the partition (e.g. a NVidia H100 for ``gpu_h100`` on wICE). - For wICE, you can also request a GPU from the ``interactive`` partition. - One GPU here is a virtual GPU slice of the available A100 GPUs. - One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. - The interactive partition only allows you to request max 1 GPU (slice) though. - - Reservation: if you are part of a reservation, you can also use these nodes with Open Ondemand by specifying your reservation name here. - - Screen resolution: for apps which run inside a remote `noVNC`_ desktop (e.g. MATLAB, ParaView, etc), one - may choose a resolution between 'FullHD', '2K' or '4K'. - After launching the app, one may still change the compression level and the image quality of the - transferred noVNC frames. - E.g. opting for the lowest compression level and highest image quality can give you a crisp noVNC desktop. - - View Only (Share-able Link): for `noVNC`_ apps, you can provide a view-only access to other VSC users. - For that, click on the 'View Only (Share-able Link)' button to copy the URL into your clipboard, - and be able to share it with others. - - .. warning:: - - As the end-user, you are responsible for all consequences of sharing your application with other - VSC users. - So, think twice before sharing your sensitive data, sources and information by all means. + .. rubric:: Notes on the number of GPUs + + The acquired GPU will be the same as the type specified in the partition + (e.g. a NVidia H100 for ``gpu_h100`` on wICE). For wICE, you can also + request a GPU from the ``interactive`` partition. + One GPU here is a virtual GPU slice of the available A100 GPUs. + One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. + The interactive partition only allows you to request max 1 GPU (slice) though. + + .. list-table:: Site-specific resources + :header-rows: 1 + + * - Resource + - Description + * - Account + - Select the credit account you want to deduct the credits from. The + accounts associated with your VSC number will be displayed in a + dropdown menu. + * - Required memory per core in megabytes + - This defaults to 3400 MB. + * - Reservation + - If you are part of a reservation, you can also use these nodes with + Open Ondemand by specifying your reservation name here. + * - Screen resolution + - For apps which run inside a remote `noVNC`_ desktop (e.g. MATLAB, + ParaView, etc), one may choose a resolution between 'FullHD', '2K' + or '4K'. After launching the app, one may still change the + compression level and the image quality of the transferred noVNC + frames. E.g. opting for the lowest compression level and highest + image quality can give you a crisp noVNC desktop. + * - View Only (Share-able Link) + - For `noVNC`_ apps, you can provide a view-only access to other VSC + users. For that, click on the 'View Only (Share-able Link)' button + to copy the URL into your clipboard, and be able to share it with + others. + + .. warning:: + + As the end-user, you are responsible for all consequences of sharing + your application with other VSC users. So, think twice before + sharing your sensitive data, sources and information by all means. + .. tab-item:: VUB - (no specific resources) + .. list-table:: Site-specific resources + :header-rows: 1 + + * - Resource + - Description + * - Working Directory + - Specify the working directory for your app, or use the handy + ``Select Path`` button below the text field to select it from a + file browser. .. _choosing_your_resources: @@ -81,7 +114,8 @@ Choosing your resources Choosing the correct resources for your interactive session is mostly the same as selecting them when launching regular batch jobs. For this reason, we -strongly recommend you to have a look at how to specify your resources. +strongly recommend consulting the documentation on how to effectively choose +your job resources: .. tab-set:: @@ -90,13 +124,20 @@ strongly recommend you to have a look at how to specify your resources. Documentation on resources is available for both :ref:`Genius ` and :ref:`wICE `. - As mentioned above, in most cases we recommend using the 'interactive' - partition on wICE for the interactive apps. This partition is meant for - lighter work, like code development, testing, debugging, visualisations, - pre- and post-processing. Using this partition is also free, mainly to - encourage you to request these resources for such work, instead of using - any of the other partitions. There are however some limitations on the - amount of resources you can request here: + If requesting a GPU, it will be the same as the type specified in the + partition (e.g. a NVidia H100 for ``gpu_h100`` on wICE). For wICE, you + can also request a GPU from the ``interactive`` partition. One GPU here + is a virtual GPU slice of the available A100 GPUs. One GPU slice is the + same as 1/7th of CUDA cores and memory of an A100 GPU. The interactive + partition only allows you to request max 1 GPU (slice) though. + + In most cases we recommend using the ``interactive`` partition on wICE for + the interactive apps. This partition is meant for lighter work, like code + development, testing, debugging, visualisations, pre- and post-processing. + Using this partition is also free, mainly to encourage you to request + these resources for such work, instead of using any of the other + partitions. There are however some limitations on the amount of resources + you can request here: - Max 1 node - Max 8 cores @@ -123,8 +164,8 @@ strongly recommend you to have a look at how to specify your resources. cluster, which also contains 4 shared GeForce GTX 1080 Ti GPUs for improved rendering performance. -In the case that you have passed the testing phase, and you want to start -conducting experiments, we recommend that you make the switch to batch jobs -instead, as they will not require your presence to start your code. +Once you have passed the testing phase, and you want to start conducting +experiments, we recommend that you make the switch to batch jobs instead, as +they will not require your presence to start your code. .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/interactive-shell.rst b/source/access/ondemand/interactive-shell.rst index 50a0b0227..2db9a3a5b 100644 --- a/source/access/ondemand/interactive-shell.rst +++ b/source/access/ondemand/interactive-shell.rst @@ -3,12 +3,13 @@ Interactive shell ----------------- -This app will launch a shell on (one of) the requested node(s), allowing you to -use these compute resources from within a Linux terminal. This is different -from the shell you get in the "Clusters - Login Server Shell Access" menu, which -directs you to one of the login nodes. +This app will launch a shell on a compute node in the requested partition, +allowing you to use the requested resources within a Linux terminal. This +differs from the shell accessed via the "Clusters - Login Server Shell Access" +menu item, which connects you to one of the login nodes. -Shell environment: +Shell environment +~~~~~~~~~~~~~~~~~ .. tab-set:: @@ -26,5 +27,5 @@ Shell environment: .. tab-item:: VUB - By default, the environment of your interactive shell is the same as when + The default environment of your interactive shell is the same as when launching an interactive job from the terminal with ``srun --pty bash -l``. diff --git a/source/access/ondemand/links_ood.rst b/source/access/ondemand/links_ood.rst index 4e4a25ea7..4445908e6 100644 --- a/source/access/ondemand/links_ood.rst +++ b/source/access/ondemand/links_ood.rst @@ -6,15 +6,25 @@ (coming soon) + .. * Tier-2 :ref:`Vaughan ` + .. * Tier-2 :ref:`Leibniz ` + .. * Tier-2 :ref:`Breniac ` + .. grid-item-card:: KU Leuven/UHasselt :columns: 12 4 4 4 - `KU Leuven OnDemand`_ + :fas:`circle-play` `KU Leuven OnDemand`_ + + * Tier-2 :ref:`Genius ` + * Tier-2 :ref:`wICE ` .. grid-item-card:: VUB :columns: 12 4 4 4 - `VUB OnDemand`_ + :fas:`circle-play` `VUB OnDemand`_ + + * Tier-2 :ref:`Hydra ` + * Tier-2 Anansi .. _KU Leuven OnDemand: https://ondemand.hpc.kuleuven.be/ .. _VUB OnDemand: https://portal.hpc.vub.be/ diff --git a/source/access/ondemand/tensorboard.rst b/source/access/ondemand/tensorboard.rst index 3b582e6df..5c4697182 100644 --- a/source/access/ondemand/tensorboard.rst +++ b/source/access/ondemand/tensorboard.rst @@ -1,4 +1,4 @@ -Tensorboard +TensorBoard ----------- Tensorboard is an interactive app that allows you to visualize and measure different aspects of @@ -6,11 +6,26 @@ your machine learning workflow. Have a look at the `official guidelines `_ for more detailed information. -The Tensorboard interactive session requires you to specify a project (or log) directory in -your submission options. -This is a relative directory starting from your ``$VSC_DATA``. -Beware that you cannot change this directory, once the session is launched. -If you redirect Tensorboard to a wrong folder (typo in path name or missing log files), -Tensorboard fails to start, and your session lands on an error page starting with the message: -'No dashboards are active for the current data set.'. +TensorBoard log directory +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The TensorBoard interactive session requires you to specify a log (or project) +directory in your resource options. + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + This is a relative directory starting from your ``$VSC_DATA``. + + .. tab-item:: VUB + + This is an absolute path. + +Beware that, once the session is launched, you cannot change this directory. If +you redirect TensorBoard to a wrong folder (typo in path name or missing log +files), TensorBoard fails to start, and your session lands on an error page +starting with the message: + + No dashboards are active for the current data set. From 9a8364405500086512bb5551601f4b0fd4960a5b Mon Sep 17 00:00:00 2001 From: sam Date: Sat, 18 Jan 2025 20:11:23 +0100 Subject: [PATCH 4/6] more updates 3 --- .../{active-jobs.rest => active-jobs.rst} | 8 +- source/access/ondemand/desktop.rst | 25 ++++ source/access/ondemand/index.rst | 12 +- source/access/ondemand/interactive-apps.rst | 58 ++++----- source/access/ondemand/interactive-shell.rst | 2 +- .../ondemand/job-composer-jobs-leuven.rst | 35 ------ .../job-composer-templates-leuven.rst | 30 ----- source/access/ondemand/job-composer.rest | 45 ------- source/access/ondemand/job-composer.rst | 113 ++++++++++++++++++ source/access/ondemand/jobs.rst | 28 ----- source/access/ondemand/jupyterlab.rst | 6 +- .../{clusters.rst => login-shell.rst} | 6 +- source/access/ondemand/matlab.rst | 51 ++++++-- source/access/ondemand/paraview.rst | 18 ++- source/access/ondemand/rstudio-server.rst | 38 +++--- .../{code-server.rst => vscode-server.rst} | 6 +- 16 files changed, 260 insertions(+), 221 deletions(-) rename source/access/ondemand/{active-jobs.rest => active-jobs.rst} (71%) create mode 100644 source/access/ondemand/desktop.rst delete mode 100644 source/access/ondemand/job-composer-jobs-leuven.rst delete mode 100644 source/access/ondemand/job-composer-templates-leuven.rst delete mode 100644 source/access/ondemand/job-composer.rest create mode 100644 source/access/ondemand/job-composer.rst delete mode 100644 source/access/ondemand/jobs.rst rename source/access/ondemand/{clusters.rst => login-shell.rst} (84%) rename source/access/ondemand/{code-server.rst => vscode-server.rst} (97%) diff --git a/source/access/ondemand/active-jobs.rest b/source/access/ondemand/active-jobs.rst similarity index 71% rename from source/access/ondemand/active-jobs.rest rename to source/access/ondemand/active-jobs.rst index 7c8208f29..64beeebf8 100644 --- a/source/access/ondemand/active-jobs.rest +++ b/source/access/ondemand/active-jobs.rst @@ -3,7 +3,7 @@ Active jobs ----------- -The 'Active Jobs' page lists all your running, queued and completed jobs. +The 'Jobs - Active Jobs' menu item lists all your running, queued and completed jobs. Depending on the cluster, completed jobs will be removed from this view within a timeframe ranging from a few minutes to one day. A handy overview of multiple job details is shown by clicking the large arrow at the left side of the job id, @@ -11,7 +11,7 @@ including the node list, the account you used, the status of the job, and more. It also gives you the option to open the job script directory in the file manager or in the terminal, and thus inspect the created output and error files. -If your job is still running, you can also delete it by clicking the bin under 'Actions'. -The 'Active jobs' page does not support re-submission of your job; How to -(re-)submit jobs will be made clear in the next chapters. +If your job is still running, you can also delete it by clicking the bin under +'Actions'. Re-submitting a previous job can be done via the 'My Interactive +Sessions' menu or in the :ref:`ood_job_composer`. diff --git a/source/access/ondemand/desktop.rst b/source/access/ondemand/desktop.rst new file mode 100644 index 000000000..b44628ac9 --- /dev/null +++ b/source/access/ondemand/desktop.rst @@ -0,0 +1,25 @@ +Desktop +------- + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + (not available at this time) + + .. tab-item:: VUB + + The Desktop app will launch a light-weight (Xfce) desktop environment in + an interactive job. Its main purpose is to run graphical software for + which there isn’t (yet) an app available. + + For optimal performance, we recommend the following workflow: + + #. Launch the app in the ``Anansi`` cluster and request a GPU. + #. In the desktop environment, open a terminal window and load the module of your graphical software + #. Launch the executable with ``vglrun`` to enable hardware acceleration: + + .. code-block:: bash + + vglrun + diff --git a/source/access/ondemand/index.rst b/source/access/ondemand/index.rst index dac277c51..33377a8df 100644 --- a/source/access/ondemand/index.rst +++ b/source/access/ondemand/index.rst @@ -35,14 +35,16 @@ detail. :maxdepth: 1 files - jobs - clusters + login-shell + active-jobs + job-composer interactive-apps + desktop interactive-shell jupyterlab - rstudio-server - tensorboard - code-server matlab paraview + rstudio-server + tensorboard + vscode-server diff --git a/source/access/ondemand/interactive-apps.rst b/source/access/ondemand/interactive-apps.rst index a7608799e..692f8c572 100644 --- a/source/access/ondemand/interactive-apps.rst +++ b/source/access/ondemand/interactive-apps.rst @@ -1,24 +1,27 @@ -.. _interactive-apps: +.. _ood_interactive_apps: -Interactive apps -================ +Launching interactive apps +========================== The 'Interactive Apps' menu shows a range of different apps that provide a GUI. -When you launch an interactive app, Open Ondemand uses your account to submit an -interactive job to the cluster, in which the app will be running. - -To launch any of the interactive apps, you need to fill out the resources form. -Most of the options in the resources form are similar across all apps, but some -apps require additional input from the user. These will be explained in the -app-specific sections. See also the section on :ref:`choosing your resources -` for recommendations. Beware that by launching any app -your interactive job will end up in a regular queue, so requesting a large -amount of resources might result in a long queue time. +When you launch an interactive app, Open Ondemand first submits an interactive +job to the cluster in your account. Once the interactive job starts, the app is +automatically launched inside the interactive session. + +To launch an interactive app, you need to fill out the resources form. +Most of the options in the resources form are shared across all apps and are +explained below. The app-specific options will be detailed in their respective +sections. See also the section on :ref:`choosing your resources +` for resources recommendations. Beware that by +launching any app your interactive job will end up in a regular queue, so +requesting a large amount of resources might result in a long queue time. Once you've specified all your resources, press the ``Launch`` button and your job will be queued. -.. list-table:: Common resources +.. _shared_resources: + +.. list-table:: Shared resources (part 1) :header-rows: 1 * - Resource @@ -30,8 +33,9 @@ job will be queued. * - Number of hours - Select the time limit (in hours) for your interactive app session. * - Number of nodes - - Select the amount of nodes. We recommend 1 node in most cases, unless you - are sure your app *can and will* use more than 1 node effectively. + - Select the amount of nodes. Only 1 node should be used in most cases, + unless you are sure your app *can and will* use more than 1 node + effectively. * - Number of cores - Select the amount of cores per node. * - Number of GPUs @@ -51,16 +55,7 @@ job will be queued. .. tab-item:: KU Leuven/UHasselt - .. rubric:: Notes on the number of GPUs - - The acquired GPU will be the same as the type specified in the partition - (e.g. a NVidia H100 for ``gpu_h100`` on wICE). For wICE, you can also - request a GPU from the ``interactive`` partition. - One GPU here is a virtual GPU slice of the available A100 GPUs. - One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. - The interactive partition only allows you to request max 1 GPU (slice) though. - - .. list-table:: Site-specific resources + .. list-table:: Common resources (part 2) :header-rows: 1 * - Resource @@ -87,6 +82,15 @@ job will be queued. to copy the URL into your clipboard, and be able to share it with others. + .. note:: + + The acquired GPU will be the same as the type specified in the partition + (e.g. a NVidia H100 for ``gpu_h100`` on wICE). For wICE, you can also + request a GPU from the ``interactive`` partition. + One GPU here is a virtual GPU slice of the available A100 GPUs. + One GPU slice is the same as 1/7th of CUDA cores and memory of an A100 GPU. + The interactive partition only allows you to request max 1 GPU (slice) though. + .. warning:: As the end-user, you are responsible for all consequences of sharing @@ -96,7 +100,7 @@ job will be queued. .. tab-item:: VUB - .. list-table:: Site-specific resources + .. list-table:: Common resources (part 2) :header-rows: 1 * - Resource diff --git a/source/access/ondemand/interactive-shell.rst b/source/access/ondemand/interactive-shell.rst index 2db9a3a5b..1b37fc30a 100644 --- a/source/access/ondemand/interactive-shell.rst +++ b/source/access/ondemand/interactive-shell.rst @@ -1,4 +1,4 @@ -.. _interactive_shell: +.. _ood_interactive_shell: Interactive shell ----------------- diff --git a/source/access/ondemand/job-composer-jobs-leuven.rst b/source/access/ondemand/job-composer-jobs-leuven.rst deleted file mode 100644 index a1a420886..000000000 --- a/source/access/ondemand/job-composer-jobs-leuven.rst +++ /dev/null @@ -1,35 +0,0 @@ -The functioning of creating jobs is a bit similar to how you create new templates. -Whatever method you choose, you will always create a new directory for each job, this time -located at ``$VSC_DATA/ondemand/data/projects/default/``. -The job directories will be numbered in the order you have created them. - -.. warning:: - - Do not change this folder name as long as you plan on using it from the job menus, - as this will break the linking. - When removing a job, the directory will be deleted as well. - -To create a job, press the 'New Job' button and choose the option that best suits -your needs. -You will get a new item in your job list for each job you've created. -Again, you can edit, remove and add files like you want to create a custom job by -going to the File Explorer (click 'Edit Files' or 'Open Dir') or by directly clicking -the file names. -The 'Open Editor' button in the 'Submit Script' overview also allows you to edit -the job script directly. - -Using the 'Job Options' button, you can add some more specifications to your job: - -- Name: this will specify a name in the job composer list. - This will not be your job name. - The actual job name is the one that will be specified in the job script. - If you do not specify a name there, you will see that that job gets the name - ``sbatch`` in the 'Active Jobs' menu. -- Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. -- Specify job script: if you have multiple job scripts in the directory, you can specify which one to run. -- Account: here you can specify which account to use. Be aware that this will overwrite the account you might have specified in your job script. -- Job array: we do not recommend using this. If you would like to use job arrays, have a look at :ref:`the worker framework`. - -Everything should now be set up to start a job. Any job can be started by clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You cannot use the -'Submit' job to start the exact same job multiple times. You can use the 'New Job - From Selected Job' option for this. If you delete any of the jobs, you also remove -the folder that it is associated with. diff --git a/source/access/ondemand/job-composer-templates-leuven.rst b/source/access/ondemand/job-composer-templates-leuven.rst deleted file mode 100644 index af977508b..000000000 --- a/source/access/ondemand/job-composer-templates-leuven.rst +++ /dev/null @@ -1,30 +0,0 @@ -To enter the Templates menu, you can click on 'Templates' at the top once you are in the 'Job Composer' menu. You can also access this menu by clicking the button 'New -Job'-'From Template'. Once in this menu, you should see a table with three System Templates. The resources that are requested in these scripts are the default settings. -The templates: - -- CPU job template: a template for jobs on the thin nodes (the default ``batch`` partition). This is also the default template (which you will get when clicking 'From Default Template' under the 'New Job' button in the 'Jobs' menu). -- GPU job template: a template for jobs with GPU resources (``gpu`` partition) -- Big memory CPU jobs: a template for jobs with large memory requirements (``bigmem`` partition) - -You can create your own templates from scratch or by copying one of the existing templates. -In both cases you will be redirected to a page where you can provide a -name, the cluster and add some notes. -To save this, you will need to provide a path to store it in. Ondemand will create a new subdirectory -with the name of your template here. - -A ``manifest.yml`` file will always be present in a template directory, It contains all the info you provided in the set-up step. -Which other files will be present in this directory depends on how you created your new template. -When using the 'New Template' button, and you don't provide a path, a copy of the default template will be created. -You can also provide a path to an existing template or job directory. In that case that directory and its contents will be copied. -This works for **any** directory on your system, so be sure to provide the correct path! - -The 'Copy Template' button basically does the same, but with this button, Ondemand will automatically fill in the path of the -selected template in the template overview. -Once you use this more often, you can also use your own templates to create new ones. -Any file that is present in that folder, will be copied to your new one as well. - -Once you've created the new template directory, you can start customizing it. You can view the content in -the directory using the Folder Explorer (click 'View Files' on top or 'Open Dir' at the bottom). As explained above, you can edit or remove any file, create new files -or upload new files. -These files will be present in each job you create from this template. - diff --git a/source/access/ondemand/job-composer.rest b/source/access/ondemand/job-composer.rest deleted file mode 100644 index 7a3c8cc26..000000000 --- a/source/access/ondemand/job-composer.rest +++ /dev/null @@ -1,45 +0,0 @@ -.. _ood_job_composer: - -Job Composer ------------- - -About -~~~~~ - -The Job Composer contains all the tools that allow you to launch your jobs. This -goes from basic job script building, adding necessary files, to building and -using templates for easier job creation. Under the job composer tab you can find -two other menus, namely ‘Jobs’ and ‘Templates’. As templates are the backbone of -job creation in Open OnDemand, we will start by explaining these. The ‘Jobs’ -menu is pretty much self-explanatory once understanding this. - -Templates -~~~~~~~~~ - -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - .. include:: job-composer-templates-leuven.rst - - - .. tab-item:: VUB - - (not available at this time) - -Creating jobs -~~~~~~~~~~~~~ - -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - .. container:: - - .. include:: job-composer-jobs-leuven.rst - - - .. tab-item:: VUB - - (not available at this time) - diff --git a/source/access/ondemand/job-composer.rst b/source/access/ondemand/job-composer.rst new file mode 100644 index 000000000..ded5596b9 --- /dev/null +++ b/source/access/ondemand/job-composer.rst @@ -0,0 +1,113 @@ +.. _ood_job_composer: + +Job Composer +------------ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + As an alternative to creating job scripts with a text editor and launching + your job from the command line, the 'Jobs - Job Composer' menu item provides + a web GUI for creating and submitting batch jobs. + + The Job Composer contains all the tools that allow you to launch your jobs. + This goes from basic job script building, adding necessary files, to + building and using templates for easier job creation. Under the job composer + tab you can find two other menus, namely ‘Jobs’ and ‘Templates’. As + templates are the backbone of job creation in Open OnDemand, we will start + by explaining these. The ‘Jobs’ menu is pretty much self-explanatory once + understanding this. + + .. rubric:: Templates + + To enter the Templates menu, you can click on 'Templates' at the top once + you are in the 'Job Composer' menu. You can also access this menu by + clicking the button 'New Job'-'From Template'. Once in this menu, you should + see a table with three System Templates. The resources that are requested in + these scripts are the default settings. The templates: + + - CPU job template: a template for jobs on the thin nodes (the default + ``batch`` partition). This is also the default template (which you will + get when clicking 'From Default Template' under the 'New Job' button in + the 'Jobs' menu). + - GPU job template: a template for jobs with GPU resources (``gpu`` + partition) + - Big memory CPU jobs: a template for jobs with large memory requirements + (``bigmem`` partition) + + You can create your own templates from scratch or by copying one of the + existing templates. In both cases you will be redirected to a page where + you can provide a name, the cluster and add some notes. To save this, you + will need to provide a path to store it in. Ondemand will create a new + subdirectory with the name of your template here. + + A ``manifest.yml`` file will always be present in a template directory, It + contains all the info you provided in the set-up step. Which other files + will be present in this directory depends on how you created your new + template. When using the 'New Template' button, and you don't provide a + path, a copy of the default template will be created. You can also provide + a path to an existing template or job directory. In that case that directory + and its contents will be copied. This works for **any** directory on your + system, so be sure to provide the correct path! + + The 'Copy Template' button basically does the same, but with this button, + Ondemand will automatically fill in the path of the selected template in the + template overview. Once you use this more often, you can also use your own + templates to create new ones. Any file that is present in that folder, will + be copied to your new one as well. + + Once you've created the new template directory, you can start customizing + it. You can view the content in the directory using the Folder Explorer + (click 'View Files' on top or 'Open Dir' at the bottom). As explained above, + you can edit or remove any file, create new files or upload new files. + These files will be present in each job you create from this template. + + .. rubric:: Creating and launching jobs + + The functioning of creating jobs is a bit similar to how you create new + templates. Whatever method you choose, you will always create a new + directory for each job, this time located at + ``$VSC_DATA/ondemand/data/projects/default/``. The job directories will be + numbered in the order you have created them. + + .. warning:: + + Do not change this folder name as long as you plan on using it from the + job menus, as this will break the linking. When removing a job, the + directory will be deleted as well. + + To create a job, press the 'New Job' button and choose the option that best + suits your needs. You will get a new item in your job list for each job + you've created. Again, you can edit, remove and add files like you want to + create a custom job by going to the File Explorer (click 'Edit Files' or + 'Open Dir') or by directly clicking the file names. The 'Open Editor' + button in the 'Submit Script' overview also allows you to edit the job + script directly. + + Using the 'Job Options' button, you can add some more specifications to your + job: + + - Name: this will specify a name in the job composer list. + This will not be your job name. + The actual job name is the one that will be specified in the job script. + If you do not specify a name there, you will see that that job gets the name + ``sbatch`` in the 'Active Jobs' menu. + - Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. + - Specify job script: if you have multiple job scripts in the directory, you + can specify which one to run. + - Account: here you can specify which account to use. Be aware that this + will overwrite the account you might have specified in your job script. + - Job array: we do not recommend using this. If you would like to use job + arrays, have a look at :ref:`the worker framework`. + + Everything should now be set up to start a job. Any job can be started by + clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You + cannot use the 'Submit' job to start the exact same job multiple times. You + can use the 'New Job - From Selected Job' option for this. If you delete any + of the jobs, you also remove the folder that it is associated with. + + .. tab-item:: VUB + + (not available at this time) + diff --git a/source/access/ondemand/jobs.rst b/source/access/ondemand/jobs.rst deleted file mode 100644 index 4aa3f413a..000000000 --- a/source/access/ondemand/jobs.rst +++ /dev/null @@ -1,28 +0,0 @@ -Jobs -==== - -All jobs submitted from Open OnDemand will run on any the supported clusters. -This means that all your jobs should be submitted as *Slurm* jobs. -For more details on how to run jobs on the different VSC clusters, check out -the corresponding documentation: - -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - - :ref:`wICE quick start guide` - - - .. tab-item:: VUB - - `Job submission documentation `_ - -Depending on the institution, the 'Jobs' menu may have one or two items: :ref:`Active Jobs`, -and possibly :ref:`Job Composer`. - -.. and 'Projects' (which we skip here, because at the time of this writing, it is still in development by the upstream). - -.. include:: active-jobs.rest - -.. include:: job-composer.rest diff --git a/source/access/ondemand/jupyterlab.rst b/source/access/ondemand/jupyterlab.rst index 018628ed4..114cdec96 100644 --- a/source/access/ondemand/jupyterlab.rst +++ b/source/access/ondemand/jupyterlab.rst @@ -1,5 +1,5 @@ JupyterLab ------------ +---------- With this app you can write and run `Jupyter `_ notebooks containing @@ -15,8 +15,8 @@ different types of user-defined environments, as will become clear below. Pure module environment ~~~~~~~~~~~~~~~~~~~~~~~ -In the app resource form, besides the normal choices (:ref:`listed above `), -you can also choose from different 'Toolchain and Python versions' from a drop-down menu. +In the app resource form, besides the :ref:`shared resources `, +you can also choose between different 'Toolchain and Python versions' from a drop-down menu. An example would be '2023a and ``Python/3.11.3-GCCcore-12.3.0``'. Based on that choice, the corresponding JupyterLab module will be loaded together with its dependencies (such as the listed Python module). diff --git a/source/access/ondemand/clusters.rst b/source/access/ondemand/login-shell.rst similarity index 84% rename from source/access/ondemand/clusters.rst rename to source/access/ondemand/login-shell.rst index 63663bb76..e0e26d97e 100644 --- a/source/access/ondemand/clusters.rst +++ b/source/access/ondemand/login-shell.rst @@ -1,9 +1,9 @@ -Clusters -======== +Login shell +=========== When selecting 'Login Server Shell Access' from the 'Clusters' menu, you will get a terminal window in a new browser tab. You will arrive on one of the login nodes, which you can use in the same way as with terminal-based SSH access. Remember, however, that login nodes are not meant for any compute-intensive calculation. If you would like to perform calculations in an interactive job, -you should use the :ref:`interactive_shell` app. +you should use the :ref:`ood_interactive_shell`. diff --git a/source/access/ondemand/matlab.rst b/source/access/ondemand/matlab.rst index a9f4b9280..c066f0106 100644 --- a/source/access/ondemand/matlab.rst +++ b/source/access/ondemand/matlab.rst @@ -1,22 +1,47 @@ -.. _ood_matlab_app: +.. _ood_matlab: MATLAB ------ -To launch MATLAB via OnDemand, you need to additionally specify your desired version of the software -from the drop-down menu on the resource form. -Given that our current MATLAB installations automatically detect GPU devices and CUDA libraries, -you may also request GPU(s) as resources, if needed. +Who can use MATLAB +~~~~~~~~~~~~~~~~~~ -Once you launch the session, a remote `noVNC`_ desktop will start on a compute node. -Once the session starts, the selected MATLAB module will be loaded, and eventually the MATLAB GUI -will pop up (after waiting for few seconds). +.. tab-set:: -.. note:: + .. tab-item:: KU Leuven/UHasselt - Only vsc3* users (affiliated with KU Leuven) who are members of the ``lli_matlab`` group - have rights to use the MATLAB module (hence the MATLAB app). If you are not already member - of the group, contact the :ref:`KU Leuven supprt team` for an invitation, - or :ref:`request joining this group` via your VSC account page. + Only vsc3* users (affiliated with KU Leuven) who are members of the ``lli_matlab`` group + have rights to use the MATLAB module (hence the MATLAB app). If you are not already member + of the group, contact the :ref:`KU Leuven supprt team` for an invitation, + or :ref:`request joining this group` via your VSC account page. + + .. tab-item:: VUB + + Only vsc1* users (affiliated with VUB) who are members of the + ``brusselall`` group have rights to use the MATLAB module (hence the + MATLAB app). For more info, please contact the VUB HPC team: hpc@vub.be + +Launching the MATLAB app +~~~~~~~~~~~~~~~~~~~~~~~~ + +To launch MATLAB via OnDemand, select your desired MATLAB version from the +drop-down menu on the resource form. Given that our current MATLAB +installations automatically detect GPU devices and CUDA libraries, you may also +request GPU(s) as resources, if needed. + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + Once you launch the session, a remote `noVNC`_ desktop will start on a + compute node. Once the session starts, the selected MATLAB module will be + loaded, and eventually the MATLAB GUI will pop up (after waiting for a few + seconds). + + .. tab-item:: VUB + + Once you launch the session, the selected MATLAB module is loaded, + and the matlab-proxy-app is executed, which launches MATLAB and provides + web-based access to it (after waiting for a few minutes). .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/paraview.rst b/source/access/ondemand/paraview.rst index 733145f7d..ae8f48459 100644 --- a/source/access/ondemand/paraview.rst +++ b/source/access/ondemand/paraview.rst @@ -1,12 +1,20 @@ ParaView -------- -For visualization purposes, you may use the `ParaView app `_. -Similar to the :ref:`MATLAB app `, ParaView also runs inside a `noVNC`_ -desktop as a compute job. +.. tab-set:: -**Remarks:** + .. tab-item:: KU Leuven/UHasselt -- Currently, using GPUs in ParaView is not supported yet, and just the CPU-only modules are offered. + For visualization purposes, you may use the `ParaView app `_. + Similar to the :ref:`MATLAB app `, ParaView also runs inside a `noVNC`_ + desktop as a compute job. + + .. note:: + + Currently, using GPUs in ParaView is not supported yet, and just the CPU-only modules are offered. + + .. tab-item:: VUB + + (not available at this time) .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/rstudio-server.rst b/source/access/ondemand/rstudio-server.rst index 419a33885..c7f600dc6 100644 --- a/source/access/ondemand/rstudio-server.rst +++ b/source/access/ondemand/rstudio-server.rst @@ -9,34 +9,34 @@ on top of the base R module to provide easy access to hundreds of preinstalled p It is also possible to use locally installed R packages with RStudio, see :ref:`R package management`. RStudio furthermore allows to create RStudio projects to manage your -R environments. When doing so, we recommend to select the +R environments. When doing so, we recommend selecting the `renv `_ option to ensure a completely independent R environment. Without `renv`, loading an RStudio project may lead to incomplete R library paths. For more information on how to use RStudio, check out the `official documentation `__. -**Remarks:** +.. note:: -- Navigating between your different directories is possible using the file explorer. - If you are navigating by clicking the folder, you will notice that you can see all user folders. - You do not have access to these, and you will receive an error when you try to open them. - You will also notice that you cannot use the same way of navigating after this. - Another solution is to click the three dots on the right (...) and enter your path. -- The 'Tools-Install packages' interface does not allow you to select any other path than the default in your ``$VSC_HOME``. - It is recommended to use the ``install.packages()`` function instead. -- RStudioServer will by default store the RStudio cache in ``$VSC_HOME/.local/share/rstudio``. - This cache can get very large, and cause you to exceed the quota of your home directory. - To avoid this, you can redirect this cache to your data directory by setting the ``$XDG_DATA_HOME`` - variable in your ``~/.bashrc``: + - Navigating between your different directories is possible using the file explorer. + If you are navigating by clicking the folder, you will notice that you can see all user folders. + You do not have access to these, and you will receive an error when you try to open them. + You will also notice that you cannot use the same way of navigating after this. + Another solution is to click the three dots on the right (...) and enter your path. + - The 'Tools-Install packages' interface does not allow you to select any other path than the default in your ``$VSC_HOME``. + It is recommended to use the ``install.packages()`` function instead. + - RStudio Server will by default store the RStudio cache in ``$VSC_HOME/.local/share/rstudio``. + This cache can get very large, and cause you to exceed the quota of your home directory. + To avoid this, you can redirect this cache to your data directory by setting the ``$XDG_DATA_HOME`` + variable in your ``~/.bashrc``: - .. code-block:: bash + .. code-block:: bash - echo "export XDG_DATA_HOME=$VSC_DATA/.local/share" >> ~/.bashrc + echo "export XDG_DATA_HOME=$VSC_DATA/.local/share" >> ~/.bashrc -- Additionally, it is advised to change the default behaviour of RStudio to not restore .RData - into the workspace on start up and to never Save the workspace to .RData on exit. - You can do this via the RStudio interface: - Tools > Global Options > General > Workspace + - Additionally, it is advised to change the default behaviour of RStudio to not restore .RData + into the workspace on startup and to never Save the workspace to .RData on exit. + You can do this via the RStudio interface: + Tools > Global Options > General > Workspace .. _RStudio official documentation: https://docs.rstudio.com/ diff --git a/source/access/ondemand/code-server.rst b/source/access/ondemand/vscode-server.rst similarity index 97% rename from source/access/ondemand/code-server.rst rename to source/access/ondemand/vscode-server.rst index 52d872aa1..417131aa5 100644 --- a/source/access/ondemand/code-server.rst +++ b/source/access/ondemand/vscode-server.rst @@ -1,9 +1,9 @@ -Code Server ------------ +VS Code Server +-------------- This is the browser version of Visual Studio Code. For more information, check out `VSCode official guidelines `_. -As a default, a Python and a Git module are already loaded, which means you can use both Python and git +By default, a Python and a Git module are already loaded, which means you can use both Python and git from a terminal window within code-server. How to open a terminal window is probably one of the first things you should know: click on the three From 1bebd49c22ca1fd6f18add69284dd7a57c110292 Mon Sep 17 00:00:00 2001 From: sam Date: Sun, 26 Jan 2025 19:27:03 +0100 Subject: [PATCH 5/6] updates 4 --- source/access/ondemand/desktop.rst | 12 +- source/access/ondemand/files.rst | 20 +- source/access/ondemand/index.rst | 6 +- source/access/ondemand/interactive-apps.rst | 9 +- .../access/ondemand/job-composer-leuven.rst | 107 +++++++++ source/access/ondemand/job-composer.rst | 112 ++-------- source/access/ondemand/matlab.rst | 17 +- source/access/ondemand/paraview.rst | 2 +- source/access/ondemand/rstudio-server.rst | 60 ++--- source/access/ondemand/vscode-server.rst | 206 +++++++++++------- .../access/ondemand/vscode-tunnel-brussel.rst | 85 ++++++++ source/access/ondemand/vscode-tunnel.rst | 28 +++ 12 files changed, 436 insertions(+), 228 deletions(-) create mode 100644 source/access/ondemand/job-composer-leuven.rst create mode 100644 source/access/ondemand/vscode-tunnel-brussel.rst create mode 100644 source/access/ondemand/vscode-tunnel.rst diff --git a/source/access/ondemand/desktop.rst b/source/access/ondemand/desktop.rst index b44628ac9..f36e19f2a 100644 --- a/source/access/ondemand/desktop.rst +++ b/source/access/ondemand/desktop.rst @@ -5,7 +5,7 @@ Desktop .. tab-item:: KU Leuven/UHasselt - (not available at this time) + (not available now) .. tab-item:: VUB @@ -16,10 +16,18 @@ Desktop For optimal performance, we recommend the following workflow: #. Launch the app in the ``Anansi`` cluster and request a GPU. - #. In the desktop environment, open a terminal window and load the module of your graphical software + #. In the desktop environment, open a terminal window and load the module + of your graphical software #. Launch the executable with ``vglrun`` to enable hardware acceleration: .. code-block:: bash vglrun + .. tip:: + + Once the Desktop app is running, you can provide view-only access to + other VSC users. In the 'My Interactive Sessions' menu, right-click the + 'View Only (Share-able Link)' button to copy the link and share it with + others. This feature can be very useful for tasks like troubleshooting, + pair programming, and trainings. diff --git a/source/access/ondemand/files.rst b/source/access/ondemand/files.rst index 6bc70ba7f..3eb354aa3 100644 --- a/source/access/ondemand/files.rst +++ b/source/access/ondemand/files.rst @@ -1,11 +1,21 @@ Files ===== -This menu provides a file explorer that allows you to navigate through your -files and folders. You can access your ``$VSC_HOME`` and ``$VSC_DATA`` folders. -Depending on the institution, other storages may also be available. General -file explorer options like moving, deleting, modifying and creating files or -directories are available as well. +The 'Files' menu provides a file explorer that allows you to navigate through +your files and folders. General file explorer options like moving, deleting, +modifying and creating files or directories are available as well. + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + From the 'Files' menu, you can access your ``$VSC_HOME`` and ``$VSC_DATA`` + folders. + + .. tab-item:: VUB + + From the 'Files' menu, you can access all ``$VSC_*`` folders available to + you. Download/upload --------------- diff --git a/source/access/ondemand/index.rst b/source/access/ondemand/index.rst index 33377a8df..79feafe13 100644 --- a/source/access/ondemand/index.rst +++ b/source/access/ondemand/index.rst @@ -27,9 +27,8 @@ The VSC Open OnDemand portals provide a range of functions: - Opening a shell on one of the login nodes - Using interactive apps -All of these functionalities can be used by accessing them through the tabs at -the top of the page. In the following sections, we will describe these in some more -detail. +All of these functionalities can be accessed via the menu bar at the top of the +page. In the following sections, we will describe them in more detail. .. toctree:: :maxdepth: 1 @@ -47,4 +46,5 @@ detail. rstudio-server tensorboard vscode-server + vscode-tunnel diff --git a/source/access/ondemand/interactive-apps.rst b/source/access/ondemand/interactive-apps.rst index 692f8c572..1b06d1c3b 100644 --- a/source/access/ondemand/interactive-apps.rst +++ b/source/access/ondemand/interactive-apps.rst @@ -23,6 +23,7 @@ job will be queued. .. list-table:: Shared resources (part 1) :header-rows: 1 + :widths: 20 80 * - Resource - Description @@ -34,13 +35,15 @@ job will be queued. - Select the time limit (in hours) for your interactive app session. * - Number of nodes - Select the amount of nodes. Only 1 node should be used in most cases, - unless you are sure your app *can and will* use more than 1 node + unless you are sure the app *can and will* use more than 1 node effectively. * - Number of cores - Select the amount of cores per node. * - Number of GPUs - Select the amount of GPUs per node. Check the :ref:`hardware` section for - the device type that corresponds to the selected cluster/partition. + the device type that corresponds to the selected cluster/partition. Only + request a GPU if you are sure the app *can and will* use the GPU + effectively. * - Pre-run scriptlet - Optionally add shell commands to your job before launching the app. Examples: loading extra modules that you need within the app, sourcing a @@ -57,6 +60,7 @@ job will be queued. .. list-table:: Common resources (part 2) :header-rows: 1 + :widths: 20 80 * - Resource - Description @@ -102,6 +106,7 @@ job will be queued. .. list-table:: Common resources (part 2) :header-rows: 1 + :widths: 20 80 * - Resource - Description diff --git a/source/access/ondemand/job-composer-leuven.rst b/source/access/ondemand/job-composer-leuven.rst new file mode 100644 index 000000000..9afbb3b3b --- /dev/null +++ b/source/access/ondemand/job-composer-leuven.rst @@ -0,0 +1,107 @@ +.. _ood_job_composer: + +Job Composer (KU Leuven/UHasselt) +--------------------------------- + +As an alternative to creating job scripts with a text editor and launching +your job from the command line, the 'Jobs - Job Composer' menu item provides +a web GUI for creating and submitting batch jobs. + +The Job Composer contains all the tools that allow you to launch your jobs. +This goes from basic job script building, adding necessary files, to +building and using templates for easier job creation. Under the job composer +tab you can find two other menus, namely ‘Jobs’ and ‘Templates’. As +templates are the backbone of job creation in Open OnDemand, we will start +by explaining these. The ‘Jobs’ menu is pretty much self-explanatory once +understanding this. + +Templates +~~~~~~~~~ + +To enter the Templates menu, you can click on 'Templates' at the top once +you are in the 'Job Composer' menu. You can also access this menu by +clicking the button 'New Job'-'From Template'. Once in this menu, you should +see a table with three System Templates. The resources that are requested in +these scripts are the default settings. The templates: + +- CPU job template: a template for jobs on the thin nodes (the default + ``batch`` partition). This is also the default template (which you will + get when clicking 'From Default Template' under the 'New Job' button in + the 'Jobs' menu). +- GPU job template: a template for jobs with GPU resources (``gpu`` + partition) +- Big memory CPU jobs: a template for jobs with large memory requirements + (``bigmem`` partition) + +You can create your own templates from scratch or by copying one of the +existing templates. In both cases you will be redirected to a page where +you can provide a name, the cluster and add some notes. To save this, you +will need to provide a path to store it in. Ondemand will create a new +subdirectory with the name of your template here. + +A ``manifest.yml`` file will always be present in a template directory, It +contains all the info you provided in the set-up step. Which other files +will be present in this directory depends on how you created your new +template. When using the 'New Template' button, and you don't provide a +path, a copy of the default template will be created. You can also provide +a path to an existing template or job directory. In that case that directory +and its contents will be copied. This works for **any** directory on your +system, so be sure to provide the correct path! + +The 'Copy Template' button basically does the same, but with this button, +Ondemand will automatically fill in the path of the selected template in the +template overview. Once you use this more often, you can also use your own +templates to create new ones. Any file that is present in that folder, will +be copied to your new one as well. + +Once you've created the new template directory, you can start customizing +it. You can view the content in the directory using the Folder Explorer +(click 'View Files' on top or 'Open Dir' at the bottom). As explained above, +you can edit or remove any file, create new files or upload new files. +These files will be present in each job you create from this template. + +Creating and launching jobs +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The functioning of creating jobs is a bit similar to how you create new +templates. Whatever method you choose, you will always create a new +directory for each job, this time located at +``$VSC_DATA/ondemand/data/projects/default/``. The job directories will be +numbered in the order you have created them. + +.. warning:: + + Do not change this folder name as long as you plan on using it from the + job menus, as this will break the linking. When removing a job, the + directory will be deleted as well. + +To create a job, press the 'New Job' button and choose the option that best +suits your needs. You will get a new item in your job list for each job +you've created. Again, you can edit, remove and add files like you want to +create a custom job by going to the File Explorer (click 'Edit Files' or +'Open Dir') or by directly clicking the file names. The 'Open Editor' +button in the 'Submit Script' overview also allows you to edit the job +script directly. + +Using the 'Job Options' button, you can add some more specifications to your +job: + +- Name: this will specify a name in the job composer list. + This will not be your job name. + The actual job name is the one that will be specified in the job script. + If you do not specify a name there, you will see that that job gets the name + ``sbatch`` in the 'Active Jobs' menu. +- Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. +- Specify job script: if you have multiple job scripts in the directory, you + can specify which one to run. +- Account: here you can specify which account to use. Be aware that this + will overwrite the account you might have specified in your job script. +- Job array: we do not recommend using this. If you would like to use job + arrays, have a look at :ref:`the worker framework`. + +Everything should now be set up to start a job. Any job can be started by +clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You +cannot use the 'Submit' job to start the exact same job multiple times. You +can use the 'New Job - From Selected Job' option for this. If you delete any +of the jobs, you also remove the folder that it is associated with. + diff --git a/source/access/ondemand/job-composer.rst b/source/access/ondemand/job-composer.rst index ded5596b9..5f4b6bf90 100644 --- a/source/access/ondemand/job-composer.rst +++ b/source/access/ondemand/job-composer.rst @@ -1,113 +1,27 @@ -.. _ood_job_composer: - Job Composer ------------ -.. tab-set:: - - .. tab-item:: KU Leuven/UHasselt - - As an alternative to creating job scripts with a text editor and launching - your job from the command line, the 'Jobs - Job Composer' menu item provides - a web GUI for creating and submitting batch jobs. - - The Job Composer contains all the tools that allow you to launch your jobs. - This goes from basic job script building, adding necessary files, to - building and using templates for easier job creation. Under the job composer - tab you can find two other menus, namely ‘Jobs’ and ‘Templates’. As - templates are the backbone of job creation in Open OnDemand, we will start - by explaining these. The ‘Jobs’ menu is pretty much self-explanatory once - understanding this. - - .. rubric:: Templates - - To enter the Templates menu, you can click on 'Templates' at the top once - you are in the 'Job Composer' menu. You can also access this menu by - clicking the button 'New Job'-'From Template'. Once in this menu, you should - see a table with three System Templates. The resources that are requested in - these scripts are the default settings. The templates: - - - CPU job template: a template for jobs on the thin nodes (the default - ``batch`` partition). This is also the default template (which you will - get when clicking 'From Default Template' under the 'New Job' button in - the 'Jobs' menu). - - GPU job template: a template for jobs with GPU resources (``gpu`` - partition) - - Big memory CPU jobs: a template for jobs with large memory requirements - (``bigmem`` partition) - - You can create your own templates from scratch or by copying one of the - existing templates. In both cases you will be redirected to a page where - you can provide a name, the cluster and add some notes. To save this, you - will need to provide a path to store it in. Ondemand will create a new - subdirectory with the name of your template here. - - A ``manifest.yml`` file will always be present in a template directory, It - contains all the info you provided in the set-up step. Which other files - will be present in this directory depends on how you created your new - template. When using the 'New Template' button, and you don't provide a - path, a copy of the default template will be created. You can also provide - a path to an existing template or job directory. In that case that directory - and its contents will be copied. This works for **any** directory on your - system, so be sure to provide the correct path! - - The 'Copy Template' button basically does the same, but with this button, - Ondemand will automatically fill in the path of the selected template in the - template overview. Once you use this more often, you can also use your own - templates to create new ones. Any file that is present in that folder, will - be copied to your new one as well. - - Once you've created the new template directory, you can start customizing - it. You can view the content in the directory using the Folder Explorer - (click 'View Files' on top or 'Open Dir' at the bottom). As explained above, - you can edit or remove any file, create new files or upload new files. - These files will be present in each job you create from this template. +.. grid:: 3 + :gutter: 4 - .. rubric:: Creating and launching jobs + .. grid-item-card:: UAntwerp (AUHA) + :columns: 12 4 4 4 - The functioning of creating jobs is a bit similar to how you create new - templates. Whatever method you choose, you will always create a new - directory for each job, this time located at - ``$VSC_DATA/ondemand/data/projects/default/``. The job directories will be - numbered in the order you have created them. + (not available now) - .. warning:: + .. grid-item-card:: KU Leuven/UHasselt + :columns: 12 4 4 4 - Do not change this folder name as long as you plan on using it from the - job menus, as this will break the linking. When removing a job, the - directory will be deleted as well. + .. toctree:: + :maxdepth: 1 - To create a job, press the 'New Job' button and choose the option that best - suits your needs. You will get a new item in your job list for each job - you've created. Again, you can edit, remove and add files like you want to - create a custom job by going to the File Explorer (click 'Edit Files' or - 'Open Dir') or by directly clicking the file names. The 'Open Editor' - button in the 'Submit Script' overview also allows you to edit the job - script directly. + job-composer-leuven - Using the 'Job Options' button, you can add some more specifications to your - job: - - Name: this will specify a name in the job composer list. - This will not be your job name. - The actual job name is the one that will be specified in the job script. - If you do not specify a name there, you will see that that job gets the name - ``sbatch`` in the 'Active Jobs' menu. - - Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. - - Specify job script: if you have multiple job scripts in the directory, you - can specify which one to run. - - Account: here you can specify which account to use. Be aware that this - will overwrite the account you might have specified in your job script. - - Job array: we do not recommend using this. If you would like to use job - arrays, have a look at :ref:`the worker framework`. + .. grid-item-card:: VUB + :columns: 12 4 4 4 - Everything should now be set up to start a job. Any job can be started by - clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You - cannot use the 'Submit' job to start the exact same job multiple times. You - can use the 'New Job - From Selected Job' option for this. If you delete any - of the jobs, you also remove the folder that it is associated with. + (not available now) - .. tab-item:: VUB - (not available at this time) diff --git a/source/access/ondemand/matlab.rst b/source/access/ondemand/matlab.rst index c066f0106..1326dad45 100644 --- a/source/access/ondemand/matlab.rst +++ b/source/access/ondemand/matlab.rst @@ -10,16 +10,17 @@ Who can use MATLAB .. tab-item:: KU Leuven/UHasselt - Only vsc3* users (affiliated with KU Leuven) who are members of the ``lli_matlab`` group - have rights to use the MATLAB module (hence the MATLAB app). If you are not already member - of the group, contact the :ref:`KU Leuven supprt team` for an invitation, - or :ref:`request joining this group` via your VSC account page. + Only vsc3* users (affiliated with KU Leuven) who are members of the + ``lli_matlab`` group have rights to use the MATLAB module (hence the + MATLAB app). If you are not already member of the group, contact the + :ref:`KU Leuven supprt team` for an invitation, or + :ref:`request joining this group` via your VSC account page. .. tab-item:: VUB Only vsc1* users (affiliated with VUB) who are members of the ``brusselall`` group have rights to use the MATLAB module (hence the - MATLAB app). For more info, please contact the VUB HPC team: hpc@vub.be + MATLAB app). For more info, please contact the VUB HPC team at hpc@vub.be. Launching the MATLAB app ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -40,8 +41,8 @@ request GPU(s) as resources, if needed. .. tab-item:: VUB - Once you launch the session, the selected MATLAB module is loaded, - and the matlab-proxy-app is executed, which launches MATLAB and provides - web-based access to it (after waiting for a few minutes). + Upon launching the session, the selected MATLAB module is loaded and the + MATLAB Proxy starts, which then launches MATLAB and provides web-based + access to it (after waiting for a few minutes). .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/paraview.rst b/source/access/ondemand/paraview.rst index ae8f48459..d1b230ced 100644 --- a/source/access/ondemand/paraview.rst +++ b/source/access/ondemand/paraview.rst @@ -15,6 +15,6 @@ ParaView .. tab-item:: VUB - (not available at this time) + (not available now) .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/rstudio-server.rst b/source/access/ondemand/rstudio-server.rst index c7f600dc6..52ff09445 100644 --- a/source/access/ondemand/rstudio-server.rst +++ b/source/access/ondemand/rstudio-server.rst @@ -1,42 +1,48 @@ RStudio Server -------------- -This interactive app allows you to run an RStudio session on the cluster. +The 'RStudio Server' app allows you to run an RStudio session on the cluster. In the 'Toolchain year and R version' drop-down menu, you can choose the version -of R module that would be loaded for your session (such as `R/4.2.2-foss-2022b`). -Additionally, the `R-bundle-CRAN` and `R-bundle-Bioconductor` modules can be loaded -on top of the base R module to provide easy access to hundreds of preinstalled packages. - -It is also possible to use locally installed R packages with RStudio, see :ref:`R package management`. -RStudio furthermore allows to create RStudio projects to manage your -R environments. When doing so, we recommend selecting the -`renv `_ option -to ensure a completely independent R environment. Without `renv`, -loading an RStudio project may lead to incomplete R library paths. - -For more information on how to use RStudio, check out the `official documentation `__. +of R module that would be loaded for your session (such as +`R/4.2.2-foss-2022b`). Additionally, the `R-bundle-CRAN` and +`R-bundle-Bioconductor` modules can be loaded on top of the base R module to +provide easy access to hundreds of preinstalled packages. + +It is also possible to use locally installed R packages with RStudio, see +:ref:`R package management`. RStudio +furthermore allows to create RStudio projects to manage your R environments. +When doing so, we recommend selecting the `renv +`_ option to ensure a +completely independent R environment. Without `renv`, loading an RStudio project +may lead to incomplete R library paths. + +For more information on how to use RStudio, check out the `official +documentation `__. .. note:: - - Navigating between your different directories is possible using the file explorer. - If you are navigating by clicking the folder, you will notice that you can see all user folders. - You do not have access to these, and you will receive an error when you try to open them. - You will also notice that you cannot use the same way of navigating after this. - Another solution is to click the three dots on the right (...) and enter your path. - - The 'Tools-Install packages' interface does not allow you to select any other path than the default in your ``$VSC_HOME``. - It is recommended to use the ``install.packages()`` function instead. - - RStudio Server will by default store the RStudio cache in ``$VSC_HOME/.local/share/rstudio``. - This cache can get very large, and cause you to exceed the quota of your home directory. - To avoid this, you can redirect this cache to your data directory by setting the ``$XDG_DATA_HOME`` - variable in your ``~/.bashrc``: + - Navigating between your different directories is possible using the file + explorer. If you are navigating by clicking the folder, you will notice + that you can see all user folders. You do not have access to these, and + you will receive an error when you try to open them. You will also notice + that you cannot use the same way of navigating after this. Another + solution is to click the three dots on the right (...) and enter your path. + - The 'Tools-Install packages' interface does not allow you to select any + other path than the default in your ``$VSC_HOME``. It is recommended to + use the ``install.packages()`` function instead. + - RStudio Server will by default store the RStudio cache in + ``$VSC_HOME/.local/share/rstudio``. This cache can get very large, and + cause you to exceed the quota of your home directory. To avoid this, you + can redirect this cache to your data directory by setting the + ``$XDG_DATA_HOME`` variable in your ``~/.bashrc``: .. code-block:: bash echo "export XDG_DATA_HOME=$VSC_DATA/.local/share" >> ~/.bashrc - - Additionally, it is advised to change the default behaviour of RStudio to not restore .RData - into the workspace on startup and to never Save the workspace to .RData on exit. - You can do this via the RStudio interface: + - Additionally, it is advised to change the default behaviour of RStudio to + not restore ``.RData`` into the workspace on startup and to never Save the + workspace to .RData on exit. You can do this via the RStudio interface: Tools > Global Options > General > Workspace .. _RStudio official documentation: https://docs.rstudio.com/ diff --git a/source/access/ondemand/vscode-server.rst b/source/access/ondemand/vscode-server.rst index 417131aa5..82f3d0584 100644 --- a/source/access/ondemand/vscode-server.rst +++ b/source/access/ondemand/vscode-server.rst @@ -1,83 +1,127 @@ VS Code Server --------------- - -This is the browser version of Visual Studio Code. -For more information, check out `VSCode official guidelines `_. -By default, a Python and a Git module are already loaded, which means you can use both Python and git -from a terminal window within code-server. - -How to open a terminal window is probably one of the first things you should know: click on the three -horizontal lines in the upper left corner, select 'Terminal - New Terminal' -This will open a shell on the node you are running your session on. -Notice that you are starting in your ``$VSC_DATA`` directory. -You can use this as a regular shell, meaning that you can submit jobs, load modules and so on. - -Code-server contains many different options and menus, but only a few will be discussed here. -Feel free to explore them. -We will however discuss how to set up code-server to use any of the compatible languages, -and use code-server as an IDE. -For each of the languages you want to use you need two things: an installation of -the specific interpreter, and an extension in code-server that allows you to connect to it. -The extensions can be found in the 'extensions' menu. -In what follows, the steps for both Python and R are described. - -Setup Python in Code Server -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are multiple Python extensions available, so feel free to try and install the extension that suits you the best. -This comes with the warning that only the Microsoft Python extension has been tested by our team. -To install this extension, go to 'Extensions' and search for 'Python'. -Install the one with as developer 'ms-python'. -If you now open a script, you can now use code-server as an IDE and run the lines of code from within -the script (the shortkey is shift+enter). -Code-server will start a Python session with the currently selected Python interpreter. -If you did not specify another one, this should default to the loaded Python module. -This Python extension gives you the possibility to choose other interpreters as well. -In the right down corner, you can see right next to 'Python'. -If you click that, a window will appear where you can select your Python version. -Next to the module version, you should see at least some system Python versions (e.g. ``/bin/python``). -You can also load other modules, or you can also use Conda environments here (if you have any Conda environments -already, you should see them here as well). - -If you need more information about creating your customized Python environments, have a look :ref:`here `. - -**Remarks:** - -- Whenever loading a new Python interpreter, you will have to kill your current Python terminal before - you will be able to use this new interpreter. - - -Setup R in Code Server -~~~~~~~~~~~~~~~~~~~~~~ - -For full functionality, it is recommended to work with Conda environments. -For the time being, there are some issues with using modules together with functionalities, like plotting. - -There are some package requirements if you want to use R in code-server. -The following command creates a functional environment (of course, add any other packages you need): - - .. code-block:: bash - - conda create -n -c conda-forge r-base r-remotes r-languageserver r-httpgd r-jsonlite - -Once you've created your environment, go ahead and start a code-server session on Open Ondemand. -On the lefthand side, go to the extension menu and search for 'R'. -You should install the 'R' extension of 'REditorSupport'. - -Now there are two ways to use the R installation inside your Conda environment: - -- Open a terminal (three horizontal lines in the upper left corner - Terminal - New Terminal), - and activate your Conda environment. - Now type ``R`` in the terminal and you will be able to use your scripts interactively - (R gets attached as soon as you start it). -- You can also set the path to the R version that needs to be attached (better if you always - use the same Conda environment). - Go to 'Extensions', and click the settings wheel next to the R extension. - Select 'Extension Settings' and search for the 'R > RTerm: Linux' setting. - Paste the path to your Conda env there (``/path/to/miniconda/envs//lib/R``) - -**Remarks:** - -- To run your script line-by-line, place your cursor on a desired line, and press the key combination of - 'ctrl+enter' on your keyboard. +============== + +This is the browser version of Visual Studio Code (VS Code). +For more information on VS Code, check out the official `VSCode guidelines +`_. + +Terminal in VS Code +------------------- + +To open a terminal window in VS Code, click the three horizontal lines in the +top left corner and select 'Terminal - New Terminal'. This will open a shell on +the node you are running your session on. You can use this as a regular shell, +meaning that you can submit jobs, load modules and so on. Notice that, by +default, you are starting in your ``$VSC_HOME`` directory. + +VS Code as an IDE +----------------- + +VS Code contains many different options and menus, but we will only discuss how +to set it up as an integrated development environment (IDE) for your favorite +coding language. For any language you want to use you need two things: an +installation of the specific interpreter or compiler, and a VS Code extension +that allows you to connect to it. The extensions can be found in the +'extensions' menu. In what follows, the steps for both Python and R are +described. + +Python IDE +~~~~~~~~~~ + +There are multiple Python extensions available, but only the Microsoft 'Python' +extension has been tested by VSC support. To install this extension, go to +'Extensions', search for 'Python', and install the one developed by 'ms-python'. + +Once installed, if you open a script, you can use VS Code as an IDE and run the +lines of code from within the script (the shortkey is shift+enter). VS Code +will start a Python session with the currently selected Python interpreter. If +you did not specify another one, this should default to the loaded Python +module. The 'Python' extension gives you the possibility to choose other +interpreters as well. In the right bottom corner, you can see + right next to 'Python'. If you click that, a window +will appear where you can select your Python version. Next to the module +version, you should see at least some system Python versions (e.g. +``/bin/python``). You can also load other modules, or you can also use Conda +environments here (if you have any Conda environments already, you should see +them here as well). + +Python modules and environments +............................... + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + By default, a Python module is already loaded, which means you can use + both Python and git from a terminal window within VS Code. + + For more information about creating customized Python environments, + have a look at the documentation on :ref:`python packages `. + + .. note:: + + When loading a new Python interpreter, you have to kill your current Python + terminal before you will be able to use this new interpreter. + + + .. tab-item:: VUB + + The following steps are required to use Python and packages from :ref:`the + software modules ` in the Python IDE: + + #. In 'Pre-run Scriptlet' of the resources form, ``module load`` the + modules that you need. + + #. In the VS Code interface, select the corresponding Python version + + path as outlined above. + + The Steps for using `virtual environments + `_ + on top of loaded software modules are exactly the same. Note that + activating the virtual environment is not needed, just make sure to select + the Python binary that is located in the virtual environment as + ``/bin/python``. + + +R IDE +~~~~~ + +.. tab-set:: + + .. tab-item:: KU Leuven/UHasselt + + For full functionality, it is recommended to work with Conda environments. + For the time being, there are some issues with using modules together with functionalities, like plotting. + + There are some package requirements if you want to use R in VS Code. + The following command creates a functional environment (of course, add any other packages you need): + + .. code-block:: bash + + conda create -n -c conda-forge r-base r-remotes r-languageserver r-httpgd r-jsonlite + + Once you've created your environment, go ahead and start a VS Code session on + Open Ondemand. On the lefthand side, click the extension menu and search for + 'R'. You should install the 'R' extension of 'REditorSupport'. + + Now there are two ways to use the R installation inside your Conda environment: + + - Open a terminal (three horizontal lines in the upper left corner - Terminal - New Terminal), + and activate your Conda environment. + Now type ``R`` in the terminal and you will be able to use your scripts interactively + (R gets attached as soon as you start it). + - You can also set the path to the R version that needs to be attached (better if you always + use the same Conda environment). + Go to 'Extensions', and click the settings wheel next to the R extension. + Select 'Extension Settings' and search for the 'R > RTerm: Linux' setting. + Paste the path to your Conda env there (``/path/to/miniconda/envs//lib/R``) + + .. note:: + + To run your script line-by-line, place your cursor on a desired line, and + press the key combination 'ctrl+enter' on your keyboard. + + .. tab-item:: VUB + + (documentation not yet available) diff --git a/source/access/ondemand/vscode-tunnel-brussel.rst b/source/access/ondemand/vscode-tunnel-brussel.rst new file mode 100644 index 000000000..84fbd7858 --- /dev/null +++ b/source/access/ondemand/vscode-tunnel-brussel.rst @@ -0,0 +1,85 @@ +.. _vscode_tunnel_brussel: + +VS Code Tunnel (VUB) +-------------------- + +The VS Code Tunnel provides tunnel access to an interactive job from your +*locally installed* VS Code application. This is handy if you already have many +extensions installed locally, or if you want to easily switch between local and +remote work within a single application. The downside is the number of steps +involved to connect (although mostly point-and-click). + +For more information on VS Code, check out the official `VSCode guidelines +`_. + +Before you connect +~~~~~~~~~~~~~~~~~~ + +VS Code automatically creates folders ``.vscode`` and ``.vscode-server`` in your +``$VSC_HOME``, which tend to become rather big quickly, especially if you use a +lot of extensions. To avoid filling up your ``$VSC_HOME``, we highly recommend +replacing those folders with symlinks to your ``$VSC_DATA``: + +.. code-block:: bash + + mkdir $VSC_DATA/.vscode $VSC_DATA/.vscode-server + ln -s $VSC_DATA/.vscode ~/.vscode + ln -s $VSC_DATA/.vscode-server ~/.vscode-server + +If you already have folders ``~/.vscode`` and ``~/.vscode-server``, you can move +them to ``$VSC_DATA`` before symlinking. + +How to connect +~~~~~~~~~~~~~~ + +#. In the web portal, under the 'Interactive Apps' menu, choose 'VS Code + Tunnel', select the resources and launch your job by clicking the ``Launch`` + button. Once your job has started, connect by clicking the ``Connect`` + button. + +#. A first browser tab or window opens, showing a terminal session, and you are + asked 'How would you like to log in to Visual Studio Code?'. Select 'Microsoft + Account' using the arrow keys on your keyboard and click Enter. + +#. An URL and an authentication code are shown, which you will need to sign in + to VS Code. Copy the code by holding the Shift key while selecting it, and + click the URL to open it. + +#. A second browser tab or window opens. Enter the copied code, select your + Microsoft account, and click the ``continue`` button. The tunnel is now ready + to be used. + +#. Launch VS Code on your local computer, and click the blue button in the + bottom left of the window that says 'Open a Remote Window'. + +#. In the command palette, you are asked to 'Select an option to open a Remote + Window'. Select 'Tunnel', which will automatically install the 'Remote - + Tunnels' extension. If the extension was already installed, click 'Connect to + Tunnel..'. + +#. Again in the command palette, you are asked 'What type of account did you use + to start this tunnel?'. Select 'Microsoft Account'. + +#. In the pop-up that says "The extension 'Remote - Tunnels' wants to sign in + using Microsoft", click ``Allow``. + +#. A third browser tab or window opens. Again, select your Microsoft account. + +#. Again in the command palette, select the tunnel with the format + ``vsc--``, where ```` is your VSC-id, and + ```` is the cluster that you selected in the resources form. + +#. That’s it, you are now connected to your VS Code Tunnel session! + +.. note:: + + - In case of authentication problems, it may be necessary to tick the + 'Cleanup previous VS Code Tunnel login data' checkbox in the resources + form. + - To close the remote connection, click again the blue button in the bottom + left, and select 'Close Remote Connection' in the command palette. + - To use Python software modules in your VS Code Tunnel session, make sure to + load them in the 'Pre-run Scriptlet' in the resources form. Similarly, to + use a Python virtual environment, make sure to activate it in the 'Pre-run + Scriptlet'. + diff --git a/source/access/ondemand/vscode-tunnel.rst b/source/access/ondemand/vscode-tunnel.rst new file mode 100644 index 000000000..842223978 --- /dev/null +++ b/source/access/ondemand/vscode-tunnel.rst @@ -0,0 +1,28 @@ +VS Code Tunnel +-------------- + +.. grid:: 3 + :gutter: 4 + + .. grid-item-card:: UAntwerp (AUHA) + :columns: 12 4 4 4 + + (not available now) + + + .. grid-item-card:: KU Leuven/UHasselt + :columns: 12 4 4 4 + + (not available now) + + .. grid-item-card:: VUB + :columns: 12 4 4 4 + + .. toctree:: + :maxdepth: 1 + + vscode-tunnel-brussel + + + + From 5ac5325aabde26370f60f8e9a1902db42cd08168 Mon Sep 17 00:00:00 2001 From: sam Date: Fri, 31 Jan 2025 23:20:50 +0100 Subject: [PATCH 6/6] updates 5 --- source/access/ondemand/desktop.rst | 46 +-- .../img/jupyterlab-custom-launcher.png | Bin 0 -> 8045 bytes .../ondemand/img/jupyterlab-kernel-reload.png | Bin 0 -> 6099 bytes .../img/jupyterlab-lmod-load-2023a.webp | Bin 0 -> 23484 bytes .../img/jupyterlab-lmod-tab-2023a.webp | Bin 0 -> 16718 bytes source/access/ondemand/index.rst | 26 +- source/access/ondemand/interactive-apps.rst | 4 +- .../access/ondemand/job-composer-leuven.rst | 107 ------- source/access/ondemand/job-composer.rst | 111 ++++++- source/access/ondemand/jupyterlab.rst | 284 +++++++++++++----- source/access/ondemand/links_ood.rst | 30 -- source/access/ondemand/paraview.rst | 23 +- .../vscode-python-modules-brussel.rst | 17 ++ source/access/ondemand/vscode-server.rst | 17 +- .../access/ondemand/vscode-tunnel-brussel.rst | 85 ------ source/access/ondemand/vscode-tunnel.rst | 91 +++++- source/jobs/job_submission.rst | 2 + source/software/python_package_management.rst | 248 ++++++++------- 18 files changed, 631 insertions(+), 460 deletions(-) create mode 100644 source/access/ondemand/img/jupyterlab-custom-launcher.png create mode 100644 source/access/ondemand/img/jupyterlab-kernel-reload.png create mode 100644 source/access/ondemand/img/jupyterlab-lmod-load-2023a.webp create mode 100644 source/access/ondemand/img/jupyterlab-lmod-tab-2023a.webp delete mode 100644 source/access/ondemand/job-composer-leuven.rst delete mode 100644 source/access/ondemand/links_ood.rst create mode 100644 source/access/ondemand/vscode-python-modules-brussel.rst delete mode 100644 source/access/ondemand/vscode-tunnel-brussel.rst diff --git a/source/access/ondemand/desktop.rst b/source/access/ondemand/desktop.rst index f36e19f2a..97db5ebc7 100644 --- a/source/access/ondemand/desktop.rst +++ b/source/access/ondemand/desktop.rst @@ -1,33 +1,39 @@ Desktop ------- -.. tab-set:: +The Desktop app will launch a light-weight (Xfce) desktop environment in an +interactive job. Its main purpose is to run graphical software for which there +isn’t (yet) an app available. - .. tab-item:: KU Leuven/UHasselt +VSC clusters that support the Desktop app: - (not available now) +.. grid:: 3 + :gutter: 4 - .. tab-item:: VUB + .. grid-item-card:: |VUB| + :columns: 12 4 4 4 - The Desktop app will launch a light-weight (Xfce) desktop environment in - an interactive job. Its main purpose is to run graphical software for - which there isn’t (yet) an app available. + .. TODO use links - For optimal performance, we recommend the following workflow: + * Tier-2 Hydra + * Tier-2 Anansi - #. Launch the app in the ``Anansi`` cluster and request a GPU. - #. In the desktop environment, open a terminal window and load the module - of your graphical software - #. Launch the executable with ``vglrun`` to enable hardware acceleration: - .. code-block:: bash +For optimal performance, we recommend the following workflow: - vglrun +#. Launch the app in the ``Anansi`` cluster and request a GPU. +#. In the desktop environment, open a terminal window and load the module of + your graphical software +#. Launch the executable with ``vglrun`` to enable hardware acceleration: - .. tip:: + .. code-block:: bash - Once the Desktop app is running, you can provide view-only access to - other VSC users. In the 'My Interactive Sessions' menu, right-click the - 'View Only (Share-able Link)' button to copy the link and share it with - others. This feature can be very useful for tasks like troubleshooting, - pair programming, and trainings. + vglrun + +.. tip:: + + Once the Desktop app is running, you can provide view-only access to other + VSC users. In the 'My Interactive Sessions' menu, right-click the 'View Only + (Share-able Link)' button to copy the link and share it with others. This + feature can be very useful for tasks like troubleshooting, pair programming, + and trainings. diff --git a/source/access/ondemand/img/jupyterlab-custom-launcher.png b/source/access/ondemand/img/jupyterlab-custom-launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3f4b7c056b110bd81be505619fdd687aeb2a922e GIT binary patch literal 8045 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 EFDXQZYybcN literal 0 HcmV?d00001 diff --git a/source/access/ondemand/img/jupyterlab-kernel-reload.png b/source/access/ondemand/img/jupyterlab-kernel-reload.png new file mode 100644 index 0000000000000000000000000000000000000000..72d6d15731d02ca36fa5ff49d5ef5600375307a3 GIT binary patch literal 6099 zcmZ8lWmJ?=w?=YkhHeF#c%LplV8?v`$(8 zbojT7=bJIwOOJa?zkR1hf{c&G@MkPPdZQC~B5 z*jYPh+EgD)a^OQF@MvGB5`9?+E=*#m>-2doxQ11}Ik|1G(oHCr73lFgFR9R0)8^e( zg}5vm+wGdCZcFTjm%9Af z{jgvqyepI{33LG6QC`Od0RgA)-|s~tI}QZ`0x`xLsPub}rQez8uGo8z0|svt=o)Ea z)$G;nL$qJlCup0ZTdM?vmUQtO`Z@$k8jxj)AojDGoCQMjp@8qh ztcWk3v)Ve>GDO@@sDy5RF$i5eQ4XX&j*W<&whdqUWV!!JwTh+`Q47VB0YNa}wHP2s zFrEzqaL7b407pqIaL7YUDz86JNTX?Du)=)L+6EM8gL$GkKE3BKnybnCkJ4r>AdQHQwqV4QA(g`iE}fAFj$rcAzS-GN-GL|<2|;MMHUeoC6mS&}|! z$;n|+Gc)fgGveatl$Df~+5F(1>NW}c#ajh952+Q3EI}a0?Q0W1~+Vk z{atH47ZKtvqcq-{DVX|RJ)*`TB-E6XLu+JYBqsLb{&H`5d3l&%)EV7#4EX-=H{_`< zmog3GX76$2GZ%jy@67uuon3#(4@`FP|=olC>@S%8S3L%F!>uIL@Af?QR@hpkU zi;F<3{=UBBnX<9lKj?aIe%!iYFo}X@kw})i-T}{dr)+u&dgV50d6B8pNF-;ZZlNBUAJw0vbtBCrwn;fW2HN#DRxc!c?cXf50uQG7|y);Wp zQ!^uPnd;)=5*txoUOtEnv2b>F{=L+osF!RrSFt#e`+C0G=$n1;g$(UE!GB7Z3nNB= zhM6LjX->FQ8~jMh$}-G{VY5~s#|RZPIjoW+vQDk8uFeWx6eb%wySNZ6tLVs^sj0=~ z=jS&y3DGH9ZQuM}e!M-cHnh;w(}Tp&#RDyd#H*FW#tC4g5>nvF$I62sg|F!=?F3%# zT>c$Zd4=H>A0JPzJTx}OrPs)TtRyZLEJ(D}kx;i=E-} zJ^ELq%PiD^J$(1ml>k7pBtG9n5HRDB!v!@Y2>g|lS{g{+FtNr2$KWdjWXoYNvOH#M zm2pcN_`C^B+)6(jm@n7jhCrmV@M&m_nj8#lZTW-0UmwjYD=B%Otq0t-_&xhVeHR?v z+@d2RUn{XrDQAinW+`iGCe@E@A1~G^XNgOr*Ze*>xIf$IJ(w;Q`uMBuU8d+^>IVx8 z!!{39IC7Q$;6GZho*ZmzYfC0~FFT)QOc$-1s}>gH5YwtEEry?)4MazM`9dyeLl}$! z2UAkE*)8%}XGVU(U+eJEt4LOTV>ef!Gn~Zvcy$n@!pFzwJd(nzB3FP*DU8<>5y`~J z7!nfVb2%zB#ro>cS#O8WV}ceI2;{FMGX}n*^{&t;*G&C$pgy<_V04?HlI`yCF`oe# zI~bF%uP+>zB!RlXGG=qJU=E*J2E+;`6i%tLpYF^%J?48(*P2<-co-iEUs;~NqB`B( zb-UW1Y;oDU*`GwZ*xlT$H6JD}Nqf*h#Uk}r$LoEYCh$hW3BX%GK!8E3YfWwK#r1Uv zDt!&m^~uRedAUFH-%Wa>D1>mx1>`9^P5UvJnTt?Qz-f ztUb{NCkzTt{VXkgNOpDXihM6fMn)D95s{ml3o=|(#VQ5{TY)p!aA|STgybj;@50ok zprxbV#`=AwZiD@DBit2KP+VM`oUB#)MDFh-h4~3J(pw}BPi>Q>OP?Jgi?FAQ4oO0K z_Wgfi0TPS@v?LeykNagK1>eoNpt+s|1{;FE`)b~u(Y(au-M(%sbNz< zCXf0#Ha2$b7aQXQT(|F!s8cItmOC_(#rf|x*JXW8#PqM^ZvY`tp+|=V#{_l>iZS{x zEGz(8VcI)B{>`r_1y2TRZ~WDBo7->lzXLb6)$O~-$6udIW0yV=l8}T&%~k4=l(@~b zcwHZsX_RM)d*-do0>gzXdDoRNGM*_$LPW%vXhcY%!0LePda{!0XJ3{uQE#p8=l9&z zC8gPq>0e#_vD&cx;r7(%n2}7{6^IRH(d@h0`L zh!CkZ6H7}i7V;K{RnZ|O+w;TnYTt*0VpPLs78K{P3=tNJ#$3^bq+td&r}NEzzo+Zu z^75k;UNelc*b?`d2IpieTy=m^!RD~V0_Z+3C0%SZ(pvc~=X8B=aPVlp`Wv-GtIFvWF!3838_SLMKRz8LwYU335_2*sXC1Gv=ZHJ6 zG&=$E1q>nx8@r*lmd(kYoPq)~pNg1Rvr1p&x@f?JheX%!f@%ZpJ(fhbR0G?0m<(<1 zHr(nslDorSP%d?ZF-@jfn%*A!2qB z(!$e@M+X4DDjtLv|4Y&aKVG6#47Os2wtSDvD^Fout}^)XE?ZK9o*ron6jWm~TejNz zY1(reAlQkA5TA6GA>jSFXaE|4a-?OC0~}qC6B!ZlMoEcqE}sE|!D_l_bayme$Zmnh zv=5ZnyN+eD-jRs1$Vz=Kt+lp2VH#rybkq(O%EdXXLyFB78#rG7>9YY>cRombVX zI!h*&7ebqjg00*jKq_IFYLztaZ_EwAg4qL$Q?F6LtRII;^u1+kgetcK*(&)h4!b{f z_!8`XayT~p%_Z-7x$RaJL}lLwULuCSbOixD_7!(93V@*Kzn$IoOO^X;Md zM0PEJ@ot&3z3BwG-eV8E^8M2+9fS%(22f?hrDP*tvdw_rnCNzRx~TJZxVSHsm>Y-9)-ZP`^i>$| zO4G-+&gZ|86msKorO@5xVXyCe14^Mi?PI{4kdMsFBcTEUzE(TpnqxwN!YltwBvENpn|)z%7_P&w82 z`cR|pJNg_!#Z;bkE(**&b^QFV*=w{O?{0AUt`=O^MEyp@;tFE|jl1>E|eA3zu^ zNT}p=W~9oQLX6Kzqivp-wD&ypfcpz^fXMg16d+X-b=g${zX~6Lv;t-@(JQ<|Ot;mw zv_pwusnH%&`FyHSv8t*{^b}=_q$3~x1^c+?h468UPgjcjD;4l-BJB!$S)!3t{s9ph zmb`G+5GCDRq?tT4H!`HHyYnsL$0>m&%&OKovzvtlZ2}ZE#8i4}S>v)eQ%d*KUvGiD zpp>%`vW}X?!68$wS(%ZMkrT3CuA(5!6^_6I=lOaxSNX&1+NRXNc+0U%%gAT8L^Z$Z zmlviRGany*bReSu-nI(4&XhRzCcewPOHuRj8FMg7SE%Qc2h`WGJC`zixz+8r*U=p3 zKEYI7Z7m+e)5~k~OAIU=BahMPlmFS^^70Q@6gf3DwUq*vloQ4S|K>2$+q5oaatSYi z%@%_nZf}aEs_NgV@>xyLvS0^xy8T{)j7%+k-hmS#8}7e<=t1`oX+{oI49Cl$<}Ivf zV;$lL$hDtT`WTZ0?}@B16XF+$@0W5OeG$@wPG^a;ig86Aovrtz{o3jWaMMyU~ z6fb#M5>u8YMI_W|>FDV4^7A(uq=sniGDSbh&|Mv@cL#kxoxl&4e#kOyyWdTpYHV+p z;Om9~R^Gv(Dn*~Dxw#qSH0AyUzc1&kCdVecSLInTi6i#3-DM9akePxaeJ=^4l8Nbk zuFZqPAs}GF7WWrB;llm2Ap<nHEiS=#|SQ@B9zR z@Ege|n(7_;Cjs+-au2?M1=YL8*~?hvR(w6Zc-VFap4fv3_k8@_;H4x6J7rNt2iu{g6#2nfajrMxHohAXsJUKC@=%L~U;;6k`1bZW~y>X0++tbo; z!hD^2EAUTm;6t~zwoX@npefe7?7bu9_PC;#i_Q@D z@I38{0CCxFs$ht{x-E~$+_ZYifS|9h4+@3mR0DcIQdR6~4UjcT-{syo!0L~{Dqu1j z2wHWn2WnTAcW=U13&To7%{-V&lvkn^UIEJn!A-i%U4u4Ri*;smr8L`+GY}QmuYrq0 zt9F`$<71BF(i9TDoy>RI0dao|DL#MxEF8qR$pu8Om*#N7dRjy=0hXmBAjSf|(Uh!- z6^0$i;C_+7$`rVM3J4+$_v-vS;DyZJD00EW*>aK*frqT`Uva6${jWtl&T>*rb?Yof z0oN-oF1{{3o*|;%A@E-OZ-82lzo@XVcF&$}!tT&lqdLBRk)&PSexBsher19^-Rnuf z`=4(OW!NCC+7uP;&X!XmmR!UJ=q2bWxb;+u(7rjj{TSBIpnT0Y1cxgqCi$A00H?Kin$J+$Wff;8!nd9e7Jx2+!& zmq+75xi)p@k$d+c6yYL(pKe}0a}AHjJb?WWy0ePAmE~3TiW@wxt5mT^vQB}B@=!#` z8bV9lU6QQFtj(#7^jcG-u&|KKssHO&EUS&5Q54{xIz`p!-73CU1M~Aufco8aLRV%0 zBNG%9w4u&cY|@WNH)Lw%6Zy`&P;u1(DkqmtC`adhV6T5AeqL!`i8P{ySyY}+_d_e_P21Yl4vNEHjHHx zSVI(WzogG%pE2(O3}=JweCVxpDiNRKdY5b@G33L0u2fZ>EDLKPB4Xm*t*y(IuuRjq zQkT6k5L;i5nwFLpGBrxt9*ZNT4!(3B6$J(RRV|N2fM%s`;Wejd1h8NrW4^ign06Gr zCcs>v!fHhsv8Ar2hKPiOgot>B@*$}Ua06f*95OyAd-TkGzawT_>D`?N@=GA8Ot*+@ zQ_GQuX;SL23DklnZlOtQl}rT*Rt4GFM$XQ)O-;86tm>{EVB4Yn=|OyV^?ysr8fX*) zcL6NPJQIkc_>n$DUkJ_PRe^X3MRRj=OBjk{j0vd;A5Rlh1VI!G;bGS*a1+XZ5tNiz z&PJl@KikpgLg4K!EiJ^4?#TawX^&L?q_&)>C-|B!ww|4I2l@Q=y=m3}IJQ2&SO|KVRH{NwST`ltO5^gkcJ z%Xvui|KI<_`Vss$>JQETuztkU@HJgZ>NrH@FY+Pv;-rKe~Ua|2O@| z|M&fW#6Qr#!+&}IH~$0tFaQ7iKMB7g{5{BQb?`2XKO|NrIv1^zGmqx--1U-7@~ zzqwor_{|~vR>mU4I&*VY;I+%O&BFnhr954%dUbBz=c+RB@c#az?&=oe2(deJSp8 zaYM_Y)O<&2-Q(ciA-*ZHaNOdb^^?k*;wj#%nnCJKLLs7REwa9}pKTSJAD44HVWkC5 z%Lcj~ra%h1QtwCI2NeAxMpbRoiHu2rK$e_0Z$k>! zz@u*@iKMc9( zXM#d2ko9N$u6BiO%C1R`PTUO?MijA+d!JiRpnQ_%p7hCus8mIw=xQyAc8#QmE{6!k zo4d;_+_vuhl()_!u5pO`QmT}-wx9lvxy~`zfxq?&|H2h5?SF_XUFeo=NYVRL&ca@< zC0W71qC_KkLvXs}`aebG=lQ4rR3e9;18ce1?}Tj&vB2I_Jf>>A@FRQdrRtJ$Gd)8= z#pbbBmbX=yT|TEc^0zFz8gZ?N*qjg)5_hK_%|clJ;8P)6<;mShkf-NXGtKhb>T^GD z8d0_~$!UhEoIBcjFDkSCQv>wjcj=s;;^Rze*7f(jojquOp+AX%6LaA#+`3%`Ll|B z<1bm{S-5REIH2Mv374_9t5epn;DFt){1V2#Rs?;tHC z%{EUk2s)Bo!5FTGGVXGr{*?yswt&--6^#YK*M`zGxn}Gtvj9haj=a!##$sQCfMSc9 zt$G0xUIis$P)WT5^+p-li=u^%b>=;T>zIv$Z>g~AFF4A=@g1qtgCNn#_}`&@sBg?y zboAC&&*YE1Fs89P7}!?+7{bD8jQ#p+&599{ zLxUxnaL}7|H#0^lQl~xO%PGa}Zmz@F;gTN{H4V+c0x_v%gb&=p0hkH30mi2{gSzn& zW6(&9#`PVHHiGKy5Z(^**m#Untv2%n92f7aVV*&y96H1LnEJ+)r!`TR?|>9u>7uJ} zYh&}O-dm5a9`0u@3XSdyr`kA6#)y0HXK#sx z+PpZ%G&rZPu=h1Gf~F)0XJ2@p-W4YPi;OBOQPsl;TNR*Y)Z?(C4mtX)TXP*8(P0zu ztWn>lv2U&Zhy=sEeGge*Aj1O@Q5Kd)xQJ#5g(c6Ni^Lv>{3~(*MI;sbDlNB0~+&3Rtp4Rg9K@PK+Ky!7 zF&yS&VmlLwrKK03mnQ?OU)rJZ7RM4^0CLJ%Qc zWGRkdBrL~~bwzLvpKrs`9nkT&2geWermS)u+1bH~f@7pxoK)CMoy>S-= zdo=8X12Bgxahar*(LJ=&4AAVsN^$(!o!WV7(0&@1`dllhXF;_PjhRG@008+XXWa-x zXbMS_@>@beRRUyI=b4tM@ZDy~*W@BHzXunKW^plq1;dO&82!)k&+d-5_zFr70=q`R zIDK?FMicY@RL^6B&TBo52*H2&o5WFGsl_U(FtxO{{l=#Lq4u`XXZ_Y+6X!TGV3j2x z*rYZrVCOXL5^wvNbt6)4*_!uFY9ppT&BZYRVpGw+D%%|C;kloX&{S`9^=%TXPf$d& zBaW9*V>;NXW%z8xSbW<|_m0%c;c?_m9u5#wB!Bv59k$$l>8Q94{O4d1*)IgWAyNye zi3@*5XBoBOmC;4R_jJExb5?KPrUywn?FkLy!p*U13?t!_N${rbsP3c+`{E1z+jx%h zRF{?v#<&Jlp}7Tv-m(j~;^vZ7{1ObSVTqsbNEP=3E|N^8@lJB7KE0HFQcG!O{;fA) zYC&0Ylv=>+okFJQN9i2y)9_vib_q6JZ9damrG2<#O+S`-&tm)K#&XuOQO$qR_G-$&Z{KqArw;gfDycz;5EXxw_wn-x8I5ALjLN^Z_BBK%MM6&DW4)r{F4 zKLG;?KsPXH2n<7#Ut1fwb|W!)!6vbxC?#D8%;T<%Vvrjcl~__bDg>=F*OrMXLMh?* zt{?$6#m?d0A%xg=M1d7B4V*dI$GsM}4Z-IG*lHn%XHJ*V%x>`4^abQp z>OoPl9C5ozW(L&cwPbC#JiwEfMGQR*Na>P5q>n4lN5{+h|Mn~EOIu(0xmFovO8Ru^6l^P0hIAF45E!cQdIQ1UWCAhl@%yLF+7Ss z5rrIN3N5${wWfUpRD7wKIV_W(1<@P{wRrd#?=ORuf; z8L>r!^lun&LR~HOUdAuBhy48g!#&N5v*;;W|4Rj9)Y3JoN4;|h0|HG*3hjx4H>U)h zi?u=3<(Uw@Q08@g(ly7cJT~4UQHG`Fv`KAEIY-jD7)K+tg~bdop`1KhtIp4184P%3 zLdnJac#;=yD*KTl7keOZO_zy#A?lyhfDipkCbq{`y$`2^$}t?#?t73)8u@VLe4f3* z-uk=~7*qcpfp5Ee+Vb3@26N4OEa4_cVByaKETG!g7lf;sF6z^eAOvt~EpR29CWdkl zkkws9qi}8ZTYLlCwUNt3crWGaLS=61oyWQHN;z>HquqATf$(&u=5L(8hH3J zskP#npf^BESLEl>ci%NuX)7Lm#Bno*6ZSrruLkUFfBuO*`cX?$!7cVT6YK1~in4SG zL70-4HlM0wYWdpwCqF9B>b6|&9`nJRA!$>;#!=NzGD4_vwfakv8m*RU`nOcXUE~dv z+vcmIj#}gi?)zEW!~A?7;{_sGV5($ncnyTUgs>$>W?XSpX<^Q&dv=5%+^wUQEr1cj z5nERp_%fFngQa1PzdWa!3Xz#uUmpJUVn3T2W61AX^>#QkjM98ytvM}Tq7fQ18bn) zy#TWM0|9ngWfhma7RmVh&NGu5fkfp4d7CF~5E`R#H!0zES62?=HT3AXoa_I?9;p(Z zcM&*#G)j&pb{;XB3GF=jKo0MWyZJ0=r~Q8brs=_0?Jm%Iw`P&E+p;~U-AlUOSdGHE z#zM(le;JvoGFXwmG`o5=m2;9G{9FdkAgg&%&w!N_5R7l%EbE3k+(ooEf+`$X`8EXypUci8xN?Z7oRw zAb5+lw}r90BA_AODA%M-Niqamm4j?k)@&yIjh`!iz${w6tU|g0*87kOoV1$$S$tY^ z6a9OE7u_00SB;+Y$A)}7E1l|hCgm`6wg*CpmM*3Eq%0ycBkQAI+vyuT&w@Fw%mX7} z+KPO;{c7p6!Tx@pFNNlq^&nR@njwUs3a}8DBr30`N0l21Rs+YCy*{}}!iWf*DaJvXVWcOFk5}mm*6@=|=t~;q8 z=P?yBA_ZnItD$!Y;$(5)U*x_O(<)V1%iS#W5Jmy<6+8c5*eHK`ioBcY;n9)ODeCgfw?!F}if0Tcub(f`q-Gsc^=5tf72Az$GE>UTg>ean%Y4PREKc6!5!Nt8LGjtFGS6_3c>F{0gdx_>(O6|HU!j=_{|y{HwL(wu|msq zd|zZOK%?IivJg7pyjX83aD)rxNm;UgiNHsW7a8N&dlJ5QT$PjR4QV{yc_h6MnvX@U zjD@~-X=fherpUBeE}D_f46$h5tR#B&$>#wT*b;EG8Y4m?k}rg8k^m~b%lM=cpoSY7 z2YWoJ-v?rm6q@B7*Fr`cB~IiB>j7f;*iMqrS?I|o|D%p(e8(XiBo`7&{Q#1>^!zA# zU_{WkFO)X1PA&cIrVK4fSBp$BTP?0T*X~M(jS6wE`zTWt##}ZZbG33k;2w&#Y>`4K z|6{W&f?h*QxTky?KkiWYG`ys`D8~@v2O}A@GyUMJ+q@HKMW(J^`UAzam-B?eXS;v` z{zGP>YASw~YP-z47DBT~-ywxFQhG~Jx8hzLgwj>LO{<^v8IOf$t;t<*)5?U5)>FAv zOTPxZ@7MIEu3NS9ael%0zEvp_w{pOMHWzbj=(wd{nLfZ5>Ksz4g5*DOzf>bj6uW#Q zxupM-HG5If^%j(4sg_H$8HowW*=dQzH(g}=s0*NJD#V6GUQIm}H1uDRe=4FG0bQRu zWTts8qf=cRXqGYpZevFNeM=}Ns$kJV?2>JmB+QAG6JNgUQ0j>yPVXR~d-H6!MaCg{ zyabe%cSjrBhj@LH-|tC;pAI$!3k!9e34JI5vVdRMG!c0uJs+Bc~3aeKhk%{EjYGl{zin(@W(VU4KAdd zhO$(DD!8-n9r)BclcXYl!pyn!v!P0C$B=9S(=s9=i32$vh0=Usu;;klKA#fESb)gP z0(r}8I2%D*FRGyX{7MnS%Zf1#MvnWWFM3q7dCHNFfjI&WV+ENtXv|YHm?M5@%Z2JJ z1iy!>Pcqv;%qe?RD53ZF@Qdnpq0TcBX_+AA7t#x~ZppicNxY|Iu(CH~iXpuFZPbP7 zte!D8^6{h`;;Yx$qiHt2CGM-&5vcx#qQy^^FOG$J2$BPD1_sHH_TrMuCXt0f%6x^i zW@3O$fV(>8wsZfF|KLU|XIG$s5UVshZT>qI6w2)7?-gDQ7=Jp{|MHqFON~5>Pnflf z0y~0vzo87aT=|w<+(s~K$gp#0@u8LT1oWi=a}N~}#+lT?f{vvxO+@=y`4f9oKw90E z9%V#@!=d6CzSmR(z^gZWvaBN<285-=6n}=I zXVbkY6EEk!zbH+GoX?y4M}u0<%7iR}Wn9?$la0J83y^isWWKJ$uMU8ESzKZ9I5-1+ z=IpPRaVKE7Reyb)E5Y_Y$_J#6kC7`?1sZq*LSx(t{=Ub_(4*-lkk1n!*1? zf8Sg=R##Uj#SrJ1G~2nOKVfj_!PX$4f7k``@dA`-EkOsz*k(R=!rYpGaTEZzJ*iFG zo>ojWuOOy}Sq?Un`ME0Zi&Vq}WRG|ziUb04L`OPn6`+|3cl85y_N_;h<=gzlQ72ov zufl|N=3ElF>)RT$mh~wW9d+yza(XW;X36XQ=OKN245JqJ z5=RDK|MoYRVjR6g-3Sdng1$TTV$<;L8!omZK2NODiR(?cRh;qPVpLCS%+_V8sWIC` zy;2nQd=3+qIP&5MGEd|+nSql#;1U}^*xGLTtRY>e|D~)BYBPV@R}>WqPKuOjqOrdm z1bQ-^WZgBy%5MhJn?4-@3cUY+%lJ3?woFSZGLeMVfc^m7m5Cl}#wPqkukl@IJ_#i^ zh$|1!b-jIkD=-l1If|Fd4w!d@CHG{DRBzM5HtgH3PBEy&BjAV=i3gQ7K*zQD;6wh>aEYoMZvvExuLNT zT(~qbk#4mGKFK5^_~zKjWYJR<;f?F5=c!B!S3n%J*&*tt2IVto2}RZxxiZu%R!$}} zUD|u=^(=#(+M+*SZ7z_;4Hq1TAJl%kkTG5^QgM$bL$;5bmzx2$@zY$G_ zvKg`sCvy8>fR}^In#y-7sdwPlC{C_^_ALs|^K2>F-3dMie1j>cw&8`d)q%p*Qj~*R z&HZ8&)M9QRZGd3L9kj99VhuJykYn0L!(sazy(a$0M|XpBwB$~y(A0r#MEVw5hN(ZV zf0^GAm1zB5#(Om8%H97Pakkz4$Ap&}b?~W`oxCH3@1t9zSMLPGNa+YJ{_Y@?Q}9R~ zV2o~nZG(YidNB#?NkGcSNPZS6)4KUbFrDnw~IK;^)aD9LAfP|5IsyH1E;cz+JYjYKym(DtCAbqsH8!XN*)H9oI z82m|CPB#D{R}6=FZ@%ggB2(id`$~yT7Bi?^q@ov2x*=gBlbWDdsL1O_CVyT9_R*fg z^$Qi*QRDcAJ2yyX<~Az-?Q}h8h!qm&Wxb*Y#J`~ps=8;plp3@Jx+9k1!7Gl{gG}@5A~)@Pnn)wp#f%W1 zWGl!!_1;~2ns&x?!o+e7T|`vp$qGv0Zf8h-r=38OQ-&MqsqI~c6sGI<3#^S z-@FU@l1N%*Mhay_r>h|f#UnEMx?xcvjhTbXBdH# z#M4b0|GPz|FJIn$&&M#w9G4g!^8TxXCMwa1k`CPPP25ie&U9CRZz;Sbiq(Oo??|)* zBrn&XGc=x^B3jZ0ZkJ_pX|yE zYf}v$o&ZAcMGLrw#Ur6R+734m);J>f9HTHBT5<~A^Q!6(e6x@kybNXz_$6w&~ z>=nnm=dEeW?hD(sTOi_RBwMdC?7tT48lpOfL~Lj~K?ZsKn1Dinns4852A9%K+!CY* zf{MT9Rq$Pz(o=$`XC$ZVE;ZknXGCyWJILH!SaRR!AlN}T(UB7tiAL>Swc2gB4AUor zqRLO@DC#ZLI7dx~sMV}=ln?~H_!)gIr$YbgY5mRI;=jK}Udy7FqPBoLQYIfI)Hl+gu$(+fV`~xi<%U zNGhUSG^PvQGEfuh60}CGx4HF>vnAI{= zRDqn(r5-(o`o?;)M@f0qu{zlqsn?{Sw0qrs@s3rAO{Y*1!HZA7U6n;wuU{vOF5i$s zeTP|(2uOjNRbE=CnHJ5ytQbdY1zz^Y4t`O4EsQIn0?L;UNV&i0m_qZ3o>#4Ty9S6Xda9pCq>769CfCHDHAGqDm(e-sl_+U+bV;lTfBBKvxo>rfiJ|Ozz%Biaf z1lb2F+Jj(6?uWH$PBE|M#)|)42$Cs1UkBEPV3SXjQr-L)Ne~*D^{|FL$H;Ij!>gYghl6qo#Lodp0_a~>wf4v?ln;6}Axh%~J)Dz^>|3XG1YJyCAg%9w$hT$G;sfX7e+;t zuQCH|ZeK6<&`OR}58*1z!!^na$qDZqDovr=v86EUzaB)_k+lBFXZoqpI;V!!rrBCl`65=;EbKFMf zfzBqc+*+}K^|n{BE5B)vF$rjCC^-KTPlD(nJGC9ofHD%~c0m39vvd^vDntsI24Mc* zGIhLkS8M+4QMK+?;$oBDsY#Fl()qH>D3XuBxQA^fN)Yr#TnZUY@wC&B+P;hfQgCo0^ zj1e`wZt9%jd@@ZquAKgyuljAGEqsE)P*GpG$17CXmqvvKF(z$lcHzp#m)>f5bf%!> zxa!WTA_zoFf!aN5o&sW$JKkXXpnMCuu!1nl2831?$BUXfM6DN+z)#~au#bopJ%b1h zu)%y18p8}fNPI}nr`29|z?4qe|kffsz0CTmsFqYHAd*~j%z2KZpC!3H3z{Zn$FUE$ZuF3*bdY3d3ZnFMk63r3c=)cm6McYe7^!0&L&xL$l4W`bY-SOETMqh7=Y* zj&PGjv8-=dyHC-Lnk%+Wg1?-PL2I3msw@(u0Om||Kfu}s0eyj?ZHuAGR*jA}Dmd;~ zHo2Y8mC6XZ{YLqHDj4q&Kq|$~H2epj0j4!)W;_I`TlVd+jM20OCK0)k&oLNOjFY{Y zd6gQ2oc~eU7JgFYpnvMR7xt<8qyV1ld2)@(M9 z-2?L$Pmau}0yqJ=jDUj8o9(}Mv_>-aB)HYlO~i9d95`g4y_K3|VqPX*xTV;r8{Z-C z3p}kfk(h#^5bW+-toPU)Ec~T&Sa4)>4uS8_MUB~G% z9Ebg?j>ySg+#fG&Yd+ZdvKvI%72$Si)JX$tEH7Ai@F=$KQ3;nS@9h$WEMrL_s)Qq# z#9t9qgG@MJDnpE#^fku4*RR}X3m$8(pRBxMXrSyh>u@m^UF`7VGmhu-P|iQrtwc2U z<;H2W`YCr6P1zL$c3A@a_e9z62*yM%r@0TmUq{z~lz8r=QE|oX_!5yJn-MYTBs`8k zjVHdbQ^x~Tt$obZs9M*wyqfr(>82bh{#K!HfDjA);k3^jwE^EUO=LZ7G$VW}SuV6hKS#*2B@OD~kW;`1wsOSKwohL322HBf7F!0C*C; zB;kUh$c9TOXG$$~nAQ8UgXiEEB8;#9D@g0twf-jLCMQ8CzNg$UX59)6ADA#GHe^M~ zyr3Mq(#N^32an3PQ$^aj%(9#)F|);;F$J2{i;+3TW-jC z$MeU+wA3gC{^ms2Och}2A9Q919!S7sbu#vhF@OXTkLgn6m0V|5CC2sxl^cX`GqjV$ zcA9YHO!C_I_OD4&c8%KoNlKFQTq(e$TR!9*F`yP10F@d;ZYZW~wC~~JRGA9#i-xK|S1Eu~f5~cC#{lhgi}vKY zF~%iZ1C6|6Qf%wPHEISrywc+{N)#pifUxDbYzksSb8UIyKT(r;=y zc;u#fV1S`##u|@{m&1&j$lyNjo^6&CF~g0q(CF=f9g16ywAgkHde6arj;e8)P__;I z^uWsmJljFPqV-~bM-d#Fec*z-Pm9)PtclXmBFuVNZO&OeyBif{?2anR)vyv@qz=lI z9-nvX`2O3KnAMdz+=Cm|!Wm@1+_gh-_M|TYCEV{HrBcsTXuyE{v9w`)$i6T9{EXVD z1O0fvl^AI{;I3>aIVBCsekVw*s)fVuU@dF}bs>f5LY$t{%z_LWj6L*=$ffepO?PmX zS}TFsg*De6f-tlX+Z(S=&o{4LAIR&Bgwin5-S~127@qfceuw`0OQ0zGo2;~cg zIA5;&5&!|JBR~k|ASY6E0g!)tr)CZ_;Mb%||M+bflfw^5_pTVe>0hqH53S4}tC@_2 zTw`7b92D~$U#rXlTV8%EKfc{-0FV^xV$~P*8m*haPk|E8A7HpMK=NDG@sVuh7YtDL z;c1KEG2`_Rsb`+}2D9Nrk7(~4KsOO2aDPjc|I`9~8mU*y`k+gxXeyOnz=1?#g|DX! zW7KGfIf`1f2v)Wx2pSyg%bu+tMMuR4_u_3g{#ZR5fEfd>-#>&C{KzAl1K7;3KQ@3d zHlI{>LJ&+m6YTILTMG;p6_IBgY&=mQ1u)${X)3syl}EUr6WS*0wxL)4o=K>lL`BSr zxZ#F~{=|(S!RFb}gH#nKFA_(WMrHjGuA1!2VCn4|7c}>NCMC&Pw zS&W|t>5imMivdU_X1C=T_Qz1)KdD95Gy;QQTR1?f0^}7=gddP`L#7|?3;0( z^o@j&Wx=zC9roVwZqi#mEWSgEgDPJ$d*RL z>H8<?3oJk&302?}BBkXQ;8^#L$a07$AKd zbiQcUH*@YldkpTcrX4De4}9du)2rMIV&x_ke-{^29#c=a@tbI_D5)&jTsT^S3Ry*d z8w;M<07}ai&_xDp?V~<-!i8LI*og4Xb1tII0heVuA2|DE3YF}3I1k-&&oCEc4+=YM zkTSDfb3cSa4$~;wvKM=AP`IgD{LniXt~>S~?L`MsO*2`momsKso+ssSg9J94hwpdU2$}>uX@_dtW9?4zB{-6A4T|BvKY`So0u_^Z`UQ^T3z0DsF6Ilo!1&>z1=0R zyi6GR1(2-WVd5*O)HP+iT2xknK-_+s$Z0XW4e2W)8p1f%GjPSulT}2Y6^4eTK;w+V z%;JRRKw*Rv&fH#V=n{mmXjc|VnRv&^p6v|PUvIwjR_J8c<_VIdyjT|iSYIh$2$`le z|HwmhST}gIouk3(&#U@96!PE@gDJ|KA+0wvK=2Z%C4zglG`M{@wwgy&1m4o&^=;T% z(V^`lu(l%!Oyvd$MM38k+2C1150uW)NLdO^&oNQ12$LAHxgv3O{E6hU(ifz93D}&g zr9ebJi6rU`{whtYl`(_If%-k4)Q;IqJ*PKSODM+6QlS$5paIZJ9H;ydpeK6wV;k1O z9D)EU9$PrZ8&9HZ>R%&b6Xw1~(EG?Je3 zz!s z#S;ZK4QOW>@)P8{W{ZoT*i$E#ac*|`HO;Dr8T>b3I-WgFt{0mbbE>d@NTHgw0u#R8 zqyM)vcArczt-qly>FNvk;APrijc{3n%~cP?Jnv+W`XrOY~<+7+#dL%RR{Q}lKGU<;i(5MR*v zxylR;&9#e$>)iCHH|DSz7QdYq(f?$$>T8(|mZ}q^iPXNXsyP1B0cD5CqZ!}or74p1mTugwLOKf#u|s_|HYMDW06zsuEO}(jw7*5M*&oLB z+RW8cXTsAyovm@OJBhxLteOq>b{^uf2DzJxPHr>B)kZ5IHH<{M)l0FZ+VWy7$7oK2 z%;S7z35vy20|yI_7CrSc1Z1B_;(#PNLzo&?Z+rh$QvaW#wOi90gxE^1O|V$Ax9bsr ze`u=s?T0ZR#ItpFt-X;`!m^4ZDT_~%gQQrq`QDWZDYus8*$tF3d9i5@5v5c)>mvxt z24+4d`NZ&}v@MFGKu&^4DzK&pM-7QWrK+97ER`WmygYRHRGe&%@H`J>XI`p_BdhSF z^!qzNsGrgPNl&K&>c`OHh1Q!kWT?GayLAX23RNOZ@iK-7ZrKitm{ek8XI3q0(qo$Q z*WCMr#I#v5j){viXB@6jJBXlpTC9Z;NN`#^Rc-pub$Sfn<~Y%4mfE}&9gP?@iaZCd zL@s++h5u-+Mw5r>$1iXPlIb1}db*zZAGju8!-ciNaM-mi*4ZeY$S zCXFj&8G~d=wdcCFwR}nzq!NTsB_rug5>-uAVRCf0veTlzY)1B30LI z-#Gnmk>N_xto-jH-R*pEsevrrTC=Opf24$Par-Jc7la5wlwTG zuWmx)k^S6E-l>oY6tm0kHca=%rE3cDT6GN*vNGD0=K2AR=s0UGs z4D$+F16B@yIy0tNv$q5@;{m>Q<2JYrv?0kF)YsYe;F-X9dB@^;f#~M{4@8>=Fc)ed znzGk-LovNL-Q_s%&dEfTsZH$D#<$0;dCn=h=)%{%Iz#R_a`rr7HuDi)I7$JBcN-=8 z*+5)WbfLE^{=}YE^p0@EW&-X~Y5fF>rbk%S(^WXY-bTF1fuv<){qSKUcK!#M^8~%E zVrJ42lxPjfc}6mO-b=>iEwb3{atEnn9){BUNH43?co%;yL-2$@4v66@^TIpEzpXVl z$L=OBBHNkQGw ze?V$N-&pe5tp3LHOZGN+(=hZr?1nFWknC5&_!09qZ%U78J@U{5$8~4nl>C$U+D(Ik z4+bIsXy@9ABx(DGP1*tFNI~g@a5d-9&V44P{y!LJsB^^+Qmg zG*@e}Ba)+&m+j9^&T zGqhtj*3!!=g+`L!NO5F}EW%P78}=)hqiObJEm8#_;gCbj#XZUG4Q=@R;8#IyOHPyO zTNF&|K$9cm4t(4#c2s%TdpG<3Wk9z-cnmHP%z`x?z%tUWgqeXFN*vrYHT_ui5`!|s zgc201sh>aa56d##gurl1N(_HC5MkyQ7fM6}%-qIW8N+Jg4iOESZT8SWpA*m?B#5hD zTaqm{pBT`)AHY)M*n}5j)pXcogs?qw*LZO6!D&H(_B(;Q?-3S+TWIApQBlp~c-R}G zI?=$IIo-+I5Lbz8UmduW;Kf+>KqKfQoQvhiVqxkiL!kSp8Zqoy$h_z`)n$^sLWb?? z%bTfX8~SaP?0Z)rP}5zB*|naDv%E7i&;B!kT&t)y=6*9T^El7r z9Y(Gpjhm-MIEv=pTm5`DnvZl5(jMF7TJ(!Fze{4JYDA5Ym!UDsI0sD>zx3?Hk9xAl zlm^?*xz0M2+`q-8LdG`!a}6h470rbQB%#7_5{jmtb4(c&(ke9O`Q>?x>bN@E=fGJ_ zNgh~K@&n1gV)U(jo3V+GxZTVTU!n&a3Zr-B_`1X|$YVQlO%ZL8E2+b-uwSEA?4g>^ zHXh7L$t8GLi+2gtQ$>I?v%<1dCzD|hwPO!HF&YRg&VE0ZavsB|szv%+@m6SQmgcz9?$qX~=3pu4`z6j1@ z{?qUqTrG*4Iz1R8CYNaV=M-kt4uhXHW(ydv7pt_9X}`3vNVBwvc-JfBK-Sn5^L;+u z)H4^sKG7^~J%$_AZ(cDVgE=nvX_Q7;{pV|;LZwLgO>)Z+p=&@42T7$1Vv;`)1HM57 zE~|ZAJ;!SzGfaIzyu!MjA8@@>g@A5Ii?p11#mPzGkElUrLcaixHmE#y%iT7j5n{5? zSms}plw67rt;)x8N~1Y6Bb;RX5R+bl<)%IZZJ4vI&xd+)`+9}!#$T&J&kS|ZOOKQG zqW>CvrzEjsqA&G63u_c;xRMmsOGuE;t0e+*MRP*=UPLK>X!n0l=EoXLjRHxMTWOU! z+*K1N4OIQ$DBJjl7Dd+IR$Hi&fZ^}&V{9gyO(YG~hxZ(c_uNPWpeD^Llj$9ikb(hQ zr=aOr;E#kjyhx=)HL;}0T&F<(GqiInrCk;xZI?-%EtMP8Km*j;Q+3vL5b?o0d;pf> zB!eRF1ny>_O_zSV5z=wOIg${gL)u1-gW`aR^4X<@gFwfcZR}n2HZF!k(Q-=w+kjF7 zQ&?lE*^f#%ed9`YeMf9@*S|xuwy1GF0XuuvlAmr$&K=%!^LM+7ZH#oPo)5xN`QVl` z@2k%m=a-`8uR8ERI4WFknuA#FThlf;m;n)XhV>9|0dZT%)*H!eClimmORi)OzZ0Pus%}ACo zkuM)E7ROg|R+021Hw33a&kM$|*A;=Cge5WH;x>1oBp^!TGNz%lV4E%Vj1AA-DWwYj zswB?&pI=>CH`+y_1w8cIB~}@H|5yJcnLpQ`Uzy<8mQ{de5i+qu@aHZfC&fff{qH)w ziQSBTgi1y1T=+Vt1`3PNOnlqR?0t6HK^UR=+PyD8Q)^T3;5-Bkj7S(2h6y2nW&zw4F zMDsMd_9H=&SpL3zDbMa)FKd-3u2+2PIv`XAzPuFboiACT$NbfrlEOErAbhQi^*U7n z{5-?iu-up^nz<@L9e9qEu!T-P2T*o)k0$gTC|q^lHgA@5vG?!Zo%;xtL_+4*2h_Gv5TZ1O zjD9p8iN$w7C0trG)H@&`K!!XicmJ?Isnt;BQW^6%&Bez3I3DhGT+*gOq5Rc{j2nyO zcaOL0}3mcJ;t@ek7)2>Xjq){=#a7Q8^8jV#LcEG)_shl(SX3ofkXlb1h5EkIWmcO z2|%r1a9K>TvWI^Snf33_v}vGw&-IImw^xFTnjD9mD2=m-{DAs4@1MhD~K{+0vHe@N~A3OuIk%q%mcE!gAp5(fdpofFVbPE!`fFLbIhzW7@b2d0mN;>A!6hUFf@O27R@&MXGZJQP3OFruygQ;#1HfY z)%qV|yTxCaI+syrILh!84Kh!%9I0EhwxIHrmVS#wpIeNMQs7{%h{c{BFL-gj(WZg# zKj2oTtC&=^Bc`QUh}|Dq85b-UA(D?dCX%y=__h?l1FN*TsndVnb&Ej~UR{BzrDE{7 zKtY-!rD^-;`R)Ux`kQB`=2#ZOG3Y#&yr8kQK`1ZjAPbj7DfMjQLjBE68IlVn6^{lP zT>fK57V+PbYE#u@we0S!r$t?FeRro% z`%U<2-E@Xi#`COnV(!1|@8WIAipNM!KDKdSL%GAZRzE5=+7wzq@@Cw%?~joE9&Me; zJn_I>XvY2)tQ8b~*kFR@HJCQXlJ@f1``+~#%u=>bj<64-PJK|TmCb{HyRf%TtcSnr zQ*EExGavN~dJCKNRw<VK1_9AdJx|AQHe6W_PMc zlonTyB=TkRjXfnnl!8lO-Xv#!%w{`F6&y+m)*9STqeMPG5nZ zA_q>*C3_Mi_Y%qWoCbZLgUDc2aXrt8>hkLC{dDF+LqLg!dM!f(gfRrK!>CHoQMmX; z$07o>P_2+=VcXSq|SLp$r zX;^Z9;zuzQ&pm6cQuH+?#onHsW4$EU(Sm~Z;gX99MSjR+rJUtc91L)Wkwb#JJHZLA zhlb!B?k>Td!vn$na1ZVd!8L~y+%>qny9N4IX4+{#bf*0a_T%oe&;C{=FHWXBGT=w( z1DGsV{LksLct8;hZ5^ciZ}QnCl-hui<&cX>9!_5Iol(u)XrgMl^&@s%ZeTKgB_fD8 z*&;rUY4Le|xWh^$9@wZU8AuyPLWbu16?@K)rv9NuK4vXif1dL6v%vRLUnhG}^q+)j z)cZxdZplbFl((PP8VeIznnXWgCqs)Rfn6{#xl~R0{AvA?o0Z)tdfQJC?@pGl`{4jlUIq+kamUD|%SEHr5B1v??k%J7Jw= z_SfBEoQ)Kd9PM80bK5mP=s58$inC?5Q(-_HEoFjc27Mp>C?8U_TVC*1X*yqF+I~Lm z(eeWVsKOb8_u7Tb(ho3j9tDYhCh2^>OLoy#M*6f{y)Rt(+TR$^I;BYlzQXVYd30pm z^!ULsWhSvOj|D0YnjK;iUQUmN)CfC55=Zw!qRXMhyTtIguCxQE;qoeE1pX}n$Yrss z8=Jn<#7)fV<6o?$@j3-w>q{+JB$yf%IgA3vn?EC&sxFJGXnz;%oM0564rzlo@w*P$ zB`(NQiqz~B*n#kQMYvWy-okYHG5qL(~k2_Z+jry`fdvUZRk6B1o~ikeBem!dlhN!S#ZM> zWbW~LFYdD}w@bkK7?bfXTk5b9&lwI8z)e)~>TMcjr#u&!4G}qZlvJ;SLg*+GiUIU2 zYw_Xbhj80X)JE^{dq8dMA>l-d`Tr+KC&Zui$SAQEzDxu`8DCwP++LrJC)2=oG}i8x zM}Q;Y!QsI@UYKLf&pDQ3Q4P69V-vQ3sW!WRD3Be|*>nRWdTd7-u+ zq_|)_W~N&p3}3Uf8%gg2*o<1{?md8_2`$j{ZV+JWs9_F(Ttl&VBNoSErp3uU0^s=1 zwBLezKiZco<)kb(MSX#O{Ju3x8v-Px;xZ9X;O+2A5JqUo%>TBKxiTH2;qAzzr*q#w z-#a#x-VHv~2QP{yZ9-w?^2_fN_>?36=`t*^SxP2|!O}^@-Vm%K^p@vXa-Kj3&wl5b zqF*fqmT1IqYmnW9DyW>yc+VdipkO{`J1(L|P1G-Z7Lx2v9Nl#Ds;iwMOB}-#yR4 zeq00G@MaVC-Q3oC2-qIV0ggH6VI=d6kBpQ48)iAZFSS5+OK=Wo{f9WK#Mo+- zJCdxVSRVl24z@2k7Ff2d>Z+wS9JloCG<6CRct>RM;p%?}P+kRhD6d!8{MBl-05A7uZUSfsthG0X2H`Gn~o?z7YoXDH~b_1gi+;Td|7>S$1>>W+z#e* z6c`)uVzw8x=Dt8_zkQS<5?EAkMs=YjxV(jQyB`k%w>e5In^H?(l$w<}%!CBE91wsy zKNm%pLpl)<67!vjTRr6RxrG%fit3stCFKsIowq;yP=C%lxLCqCPF0A>C_;&v0-mZg zlcy7J*Prk)q?7v~!?z>TjYmm(2@kR!|L*GT0RciCZF;Kp+1U37CSl)3`@w+7?>Dhb z+X$52^mfJRGIPW=HsetNRlOzI#yJp?5Y($)Hg)%Iuta0*-A|hJofPH=#Ek zbHO%QZ+LK7TJn0zbGL0HT{0X*!&D3r4&k$k@E#=TbPoZ8 z2!*t{%wC$fx=c=n$EgqYN%H2a55n&AXsZhK9DacE)}Z!GDC(jEeUxBhQQL3kmw%q? z6fRIeE;B}>w?RiA4ftj2HgXe~j{ab~F>P7TOcLqERCT2^WMRXu1VA^4GviNqjb6d- zi_8x&dp{8`nLDcFR!_+&PS97vN%cLhKv$g6u<-iX=Y~7$SktQw5Yz&+(B)GbKb=yX zxv%UFzwk5n$VmMwMUmBC56;>#!_pDoeo&AA_Td+;B>}dIM~T_`AO>|srnVM ztgm+mFN4;i`)Ycz74<($a+eSG@<8DqMxrpxQmZBKENOF%;cwd&ESHq60V zY-l0cg0=s}z0|LhHBhpw#4{H`9AzsXd~6N%hKs!U>7kmOnXg{yjg5CcrONv$sUR7) z?6QaM=byu-PU53uY8JSo&SGdVc>NbTJZtE$xZ-=yUrq(hzR3utyrl4Gb+B=`SDd!) z2!}2&RMNEE))6SUYxG}et8FSGn@G<4%z6AmxRrZoo+#aV&WerT_9Ok&u9w|C4Eo-! z)K612EwV!}{KmXH=TEHLdORs74>u>U-8C%Ibc<;4# zH#=iYJi3}jGPd{T>*y95wR2;H3qy1)4Ez>=)_<<=o(`Zc(pkMuHArvpr9(}u8BDu!a zA|&5rdYtt=kbcs9VNP&}Ze6C0EIQ>_I7cmhh_4doBfCG#56+EY(o>$XeL#XChu!gSC!J@z|~7B6Od5ej?5=ZVj_)lv)%K zzXy^;14M$s=NtBix_ACE1vv(ASf-z$)5OY=eK>%58mUL<#*%#o{s3qL8Hrbnuqtc7 zKT>EbfT*o*8LYxeS-K15!`@GuQX*2Riwx*q$agv}_#slIhLT_OD-ray+E98OL;A0) zdj%{a!iuFWYG0U-K1oxT?YS4z;wOx*8fm?|RN@u)>o;;0g=`%y%aD;{Evdz%gggZ$ zN4byn?aHD^l8;Oi1r-aTP6?n5u_`|m`=IagvQ1x{=S?FYN=!m_62yao1v8)(YjHAr8r^?`>p5+M= zOMl5M)rIoFd)bc?l{_onh@bi<3F~lru_aCRC%}~JHH7am-*@T_PnI>lP1v%>Q`}uD z&D;KoMz&&)j1G`H=hPY!^)A5tUuL8NfqK6%8?!|W!ypjN+OQdum_QEcy z64*I3fZqN-Xr}|nGd{7Spnod!I761@medD}*{Ams|#o%6U9 zy&okhWz@uwaH1mJ`EFa2ZMT{}mWtu}^W2XeWm;N^LYQWc^U?aLxO&mhH(g#Jz>`b% zR9+9M)cAflg0rqYoiHy$LrvHwOy7DJ{!X3q+=G$9bLgo?q`8{B`~U*|9e6_@F+FqO z5zTofn;Y6FpPA~ygfwlSvVCw4UrkBF%5(7H*~TyB(e3Tz9_&UBFw8E&5v6&zFzMwX z2MCEHu3}?zur+-VDz|{X^8dbS=5PGvs%3B$c>x^raq$a$^~=#{!;%gbMDv<9!49s! zk+YJ`x7h1IzK;>?!d)x09p*Ua%fR-KEm4^@Va)r$t1z=AQK%$p!rGwi{3OSvBl80D z`=;xRvW96+p`F3rdkcRKA)~Bz1K20GNXPql@Y*yx@EUi0J$@bcjdoYQskH@Rl0oqV z*zfxvw~MngK&>HIwFPBsiVgcMb&PsUY-9knSMcc<TPN_&OZ!<74`ilOSitWt?OPqMKg2VDRYkf;Lf~#{hO7_~ zpXogG|0}g_%z~4=g5=2(+7_~e;UL-WTtX1yg&z6+nXezGJZbl;>B#N8fSE3xte<6T z+0g9FRWXGQ8qIOk27It8SqPS%nlT++6yI4Y>&Uw`e_oU2VgbT$so~N;4edA{t3&s* z_vKGr*huuuxCMA?%CXF0&EBg91LG(TRQR~Bl(uGfoE3T1mc>S0HDC975G3#Sf<$EncbgF-Nuv5@)NiJ4ZgRZ+HF&cDe1blJi9IoP3Um@C z^=F#RcEoRsr4IpCI)Fh52YuO$!}Gy%EoP=(8u)KtF90&eJlna&Oz3zEz^#j=%Y)(&5 z7?3z5`E~2FoA7g}z)Nq3ee;RJu*~!?hn=c9?0ApIaCMKXVO=cw1l5I!vDu=zhpK|g z{>!34p;gW}{NVQcU9K5KjQXis{r^9_&YgE=3ghzKvd%W0_2^X|AQ!c;ilEoMqhdeX zp`yUtYSmxbfE^8_>+KQ!ookl@o%nCk%~~#SrMhnX7cUBLS54M9l%9%=&QwJYL=jw$>6mUkT6oAB!ojoZx~Nk& z{k}v_*dVA(?*yt)kk%kQ(R4d8+8uZ?$XA9DY9rUQ`^%QC?sYrs{<05`jU`9~=ke)3 z;k6I}!_>2qoN+Lu=3s+tG@1ZhF330AeI5J1!E2*@M^a}Wfr&O@jFr1{+WVnU)OYPVyGMCWSQMy*2_sghNy%UQR==AR|Y@IuME zyll~&_}%!D7MnQMeNE(JG3Qv`dmt2Te4*6x$auT%mJK742>ze2Ej zPyGIXhy5B6Ufhj6%;)EE(N~{G2*T;NzdAVW-53__D^2{y_t#7(`*W&dg`3&nrqg(> z2;ZNV!yxV*{LXQzauegeHLret9K1LMOWHvjgqGsD_MXXrYp)C2u1+}tx-8{LpfZ-Hvzl>^pSz;5x@icue1LWgv z(kh3l5^CnWL6tM4b-bTG!Uc1IPz@DoG379Hx}3b7b5X{P?Lil|e9fWpkNsM#8;|7m z$>C@X+9FP7l;%*T%w4Mdbl+WHhC7IP)2MEEwS8_VZC6t;zaH|yHB}=deU=pYe}p#HQT|r)xZq_> zTyd`^tNOB_&m(pi%rRoy>V>FKfK&{Pyx`@t2@9YJ;n`1Yi0UpyWU->pISi>3fl1$N zGzmTn!SV?gq^UAY)W6EGo4H1NpPW~Y&l+O~l01x|b^lLD^n~*mX8Wc7 z)!Ggj;JtgMsW&EmJze2e%FI^aNAQUiTsR}fq$Yc#uA)0*>zPoZ#UkaT4c9rP5AR58 zcW1GI>#DIpb~#bc-cB!nUK0QqNtET7_y=ySe68gAB&5>DJKuRwJZNp_jSZ{qcTUJ( zs0Y*gFO{TDv*; zSjHwiVg_my1nLzHY}oo0ETX;SUcF}Y#%mPDF1eJKb93KR7{G^{MFD+_KqWamh!V!T zyLG68CaFAU(D2GYm1$e&I{&cc5D?lw8i!exy}Q^}+GReAa}UYGtSFuz_@ss4D99ZA{z)#^gjOx+UXktFlp zl;L?2edMNLyQKyMxUPu(xHMuVDtrLaUrf%ls7l!DW#D1>sSvnQ$w?Vc^ z7AkpLp18cmA~=P0C~!NpVP@9TsTJO|H>n>OPQ#RqGkCS-3qz_L-p$bVp@Yo?gTFh1 zeH=ks{=hn?9tpQg?VB`fS$~Qs{3oV(A3L@{IVIyQ61ciB)%tlRC7Xzoi{!jmRyJNY z38t?Zkr^EsIJ+7aGT(4H>$+BmH4D@!;G(8&8HnPd&|TFd6+d{S=XIcU8{t!RAvDD! zjXyHxvw; zmKld{FAVcz#*Q}3e1T32D%t79D-q>n;1p6v{9S77)_<)43+e*KMd_{eD~jbx1Z0Ts zzk^d;#Q=zr=t4`I4Dp%Pli( z8dVQvw=o&dW9;$^sjyn{f5iS-AG%yuVgavW*v@tjNF23xqXL$+$+=Dfm#G+jOqpCn ba_Y69?B`GdfD&6>JS`SvAVQHV7?^(ntIg~u literal 0 HcmV?d00001 diff --git a/source/access/ondemand/img/jupyterlab-lmod-tab-2023a.webp b/source/access/ondemand/img/jupyterlab-lmod-tab-2023a.webp new file mode 100644 index 0000000000000000000000000000000000000000..4bcfe21f4cb6e3bdbfcbdc60c7557bf7ac2da23e GIT binary patch literal 16718 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 literal 0 HcmV?d00001 diff --git a/source/access/ondemand/index.rst b/source/access/ondemand/index.rst index 79feafe13..5443823ea 100644 --- a/source/access/ondemand/index.rst +++ b/source/access/ondemand/index.rst @@ -12,7 +12,31 @@ coding GUIs, tools for plotting and more. Portals ======= -.. include:: links_ood.rst +VSC clusters that support an Open OnDemand web portal: + +.. grid:: 3 + :gutter: 4 + + .. grid-item-card:: |KUL| + :columns: 12 4 4 4 + + :fas:`circle-play` `KU Leuven OnDemand`_ + + * Tier-2 :ref:`Genius ` + * Tier-2 :ref:`wICE ` + + .. grid-item-card:: |VUB| + :columns: 12 4 4 4 + + :fas:`circle-play` `VUB OnDemand`_ + + .. TODO fix links + + * Tier-2 :ref:`Hydra ` + * Tier-2 Anansi + +.. _KU Leuven OnDemand: https://ondemand.hpc.kuleuven.be/ +.. _VUB OnDemand: https://portal.hpc.vub.be/ You can log in using the credentials of your home institution or your VSC credentials. diff --git a/source/access/ondemand/interactive-apps.rst b/source/access/ondemand/interactive-apps.rst index 1b06d1c3b..f879b676f 100644 --- a/source/access/ondemand/interactive-apps.rst +++ b/source/access/ondemand/interactive-apps.rst @@ -58,7 +58,7 @@ job will be queued. .. tab-item:: KU Leuven/UHasselt - .. list-table:: Common resources (part 2) + .. list-table:: Shared resources (part 2) :header-rows: 1 :widths: 20 80 @@ -104,7 +104,7 @@ job will be queued. .. tab-item:: VUB - .. list-table:: Common resources (part 2) + .. list-table:: Shared resources (part 2) :header-rows: 1 :widths: 20 80 diff --git a/source/access/ondemand/job-composer-leuven.rst b/source/access/ondemand/job-composer-leuven.rst deleted file mode 100644 index 9afbb3b3b..000000000 --- a/source/access/ondemand/job-composer-leuven.rst +++ /dev/null @@ -1,107 +0,0 @@ -.. _ood_job_composer: - -Job Composer (KU Leuven/UHasselt) ---------------------------------- - -As an alternative to creating job scripts with a text editor and launching -your job from the command line, the 'Jobs - Job Composer' menu item provides -a web GUI for creating and submitting batch jobs. - -The Job Composer contains all the tools that allow you to launch your jobs. -This goes from basic job script building, adding necessary files, to -building and using templates for easier job creation. Under the job composer -tab you can find two other menus, namely ‘Jobs’ and ‘Templates’. As -templates are the backbone of job creation in Open OnDemand, we will start -by explaining these. The ‘Jobs’ menu is pretty much self-explanatory once -understanding this. - -Templates -~~~~~~~~~ - -To enter the Templates menu, you can click on 'Templates' at the top once -you are in the 'Job Composer' menu. You can also access this menu by -clicking the button 'New Job'-'From Template'. Once in this menu, you should -see a table with three System Templates. The resources that are requested in -these scripts are the default settings. The templates: - -- CPU job template: a template for jobs on the thin nodes (the default - ``batch`` partition). This is also the default template (which you will - get when clicking 'From Default Template' under the 'New Job' button in - the 'Jobs' menu). -- GPU job template: a template for jobs with GPU resources (``gpu`` - partition) -- Big memory CPU jobs: a template for jobs with large memory requirements - (``bigmem`` partition) - -You can create your own templates from scratch or by copying one of the -existing templates. In both cases you will be redirected to a page where -you can provide a name, the cluster and add some notes. To save this, you -will need to provide a path to store it in. Ondemand will create a new -subdirectory with the name of your template here. - -A ``manifest.yml`` file will always be present in a template directory, It -contains all the info you provided in the set-up step. Which other files -will be present in this directory depends on how you created your new -template. When using the 'New Template' button, and you don't provide a -path, a copy of the default template will be created. You can also provide -a path to an existing template or job directory. In that case that directory -and its contents will be copied. This works for **any** directory on your -system, so be sure to provide the correct path! - -The 'Copy Template' button basically does the same, but with this button, -Ondemand will automatically fill in the path of the selected template in the -template overview. Once you use this more often, you can also use your own -templates to create new ones. Any file that is present in that folder, will -be copied to your new one as well. - -Once you've created the new template directory, you can start customizing -it. You can view the content in the directory using the Folder Explorer -(click 'View Files' on top or 'Open Dir' at the bottom). As explained above, -you can edit or remove any file, create new files or upload new files. -These files will be present in each job you create from this template. - -Creating and launching jobs -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The functioning of creating jobs is a bit similar to how you create new -templates. Whatever method you choose, you will always create a new -directory for each job, this time located at -``$VSC_DATA/ondemand/data/projects/default/``. The job directories will be -numbered in the order you have created them. - -.. warning:: - - Do not change this folder name as long as you plan on using it from the - job menus, as this will break the linking. When removing a job, the - directory will be deleted as well. - -To create a job, press the 'New Job' button and choose the option that best -suits your needs. You will get a new item in your job list for each job -you've created. Again, you can edit, remove and add files like you want to -create a custom job by going to the File Explorer (click 'Edit Files' or -'Open Dir') or by directly clicking the file names. The 'Open Editor' -button in the 'Submit Script' overview also allows you to edit the job -script directly. - -Using the 'Job Options' button, you can add some more specifications to your -job: - -- Name: this will specify a name in the job composer list. - This will not be your job name. - The actual job name is the one that will be specified in the job script. - If you do not specify a name there, you will see that that job gets the name - ``sbatch`` in the 'Active Jobs' menu. -- Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. -- Specify job script: if you have multiple job scripts in the directory, you - can specify which one to run. -- Account: here you can specify which account to use. Be aware that this - will overwrite the account you might have specified in your job script. -- Job array: we do not recommend using this. If you would like to use job - arrays, have a look at :ref:`the worker framework`. - -Everything should now be set up to start a job. Any job can be started by -clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You -cannot use the 'Submit' job to start the exact same job multiple times. You -can use the 'New Job - From Selected Job' option for this. If you delete any -of the jobs, you also remove the folder that it is associated with. - diff --git a/source/access/ondemand/job-composer.rst b/source/access/ondemand/job-composer.rst index 5f4b6bf90..471087935 100644 --- a/source/access/ondemand/job-composer.rst +++ b/source/access/ondemand/job-composer.rst @@ -1,27 +1,118 @@ +.. _ood_job_composer: + Job Composer ------------ +As an alternative to creating job scripts with a text editor and launching +your job from the command line, the 'Jobs - Job Composer' menu item provides +a web GUI for creating and submitting batch jobs. + +VSC clusters that support the Job Composer: + .. grid:: 3 :gutter: 4 - .. grid-item-card:: UAntwerp (AUHA) + .. grid-item-card:: |KUL| :columns: 12 4 4 4 - (not available now) + * Tier-2 :ref:`Genius ` + * Tier-2 :ref:`wICE ` - .. grid-item-card:: KU Leuven/UHasselt - :columns: 12 4 4 4 +The Job Composer contains all the tools that allow you to launch your jobs. +This goes from basic job script building, adding necessary files, to +building and using templates for easier job creation. Under the job composer +tab you can find two other menus, namely ‘Jobs’ and ‘Templates’. As +templates are the backbone of job creation in Open OnDemand, we will start +by explaining these. The ‘Jobs’ menu is pretty much self-explanatory once +understanding this. - .. toctree:: - :maxdepth: 1 +Templates +~~~~~~~~~ - job-composer-leuven +To enter the Templates menu, you can click on 'Templates' at the top once +you are in the 'Job Composer' menu. You can also access this menu by +clicking the button 'New Job'-'From Template'. Once in this menu, you should +see a table with three System Templates. The resources that are requested in +these scripts are the default settings. The templates: +- CPU job template: a template for jobs on the thin nodes (the default + ``batch`` partition). This is also the default template (which you will + get when clicking 'From Default Template' under the 'New Job' button in + the 'Jobs' menu). +- GPU job template: a template for jobs with GPU resources (``gpu`` + partition) +- Big memory CPU jobs: a template for jobs with large memory requirements + (``bigmem`` partition) - .. grid-item-card:: VUB - :columns: 12 4 4 4 +You can create your own templates from scratch or by copying one of the +existing templates. In both cases you will be redirected to a page where +you can provide a name, the cluster and add some notes. To save this, you +will need to provide a path to store it in. Ondemand will create a new +subdirectory with the name of your template here. + +A ``manifest.yml`` file will always be present in a template directory, It +contains all the info you provided in the set-up step. Which other files +will be present in this directory depends on how you created your new +template. When using the 'New Template' button, and you don't provide a +path, a copy of the default template will be created. You can also provide +a path to an existing template or job directory. In that case that directory +and its contents will be copied. This works for **any** directory on your +system, so be sure to provide the correct path! + +The 'Copy Template' button basically does the same, but with this button, +Ondemand will automatically fill in the path of the selected template in the +template overview. Once you use this more often, you can also use your own +templates to create new ones. Any file that is present in that folder, will +be copied to your new one as well. + +Once you've created the new template directory, you can start customizing +it. You can view the content in the directory using the Folder Explorer +(click 'View Files' on top or 'Open Dir' at the bottom). As explained above, +you can edit or remove any file, create new files or upload new files. +These files will be present in each job you create from this template. + +Creating and launching jobs +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The functioning of creating jobs is a bit similar to how you create new +templates. Whatever method you choose, you will always create a new +directory for each job, this time located at +``$VSC_DATA/ondemand/data/projects/default/``. The job directories will be +numbered in the order you have created them. + +.. warning:: + + Do not change this folder name as long as you plan on using it from the + job menus, as this will break the linking. When removing a job, the + directory will be deleted as well. + +To create a job, press the 'New Job' button and choose the option that best +suits your needs. You will get a new item in your job list for each job +you've created. Again, you can edit, remove and add files like you want to +create a custom job by going to the File Explorer (click 'Edit Files' or +'Open Dir') or by directly clicking the file names. The 'Open Editor' +button in the 'Submit Script' overview also allows you to edit the job +script directly. - (not available now) +Using the 'Job Options' button, you can add some more specifications to your +job: +- Name: this will specify a name in the job composer list. + This will not be your job name. + The actual job name is the one that will be specified in the job script. + If you do not specify a name there, you will see that that job gets the name + ``sbatch`` in the 'Active Jobs' menu. +- Cluster: You can choose between ``Genius`` and ``wICE`` as a target cluster. +- Specify job script: if you have multiple job scripts in the directory, you + can specify which one to run. +- Account: here you can specify which account to use. Be aware that this + will overwrite the account you might have specified in your job script. +- Job array: we do not recommend using this. If you would like to use job + arrays, have a look at :ref:`the worker framework`. +Everything should now be set up to start a job. Any job can be started by +clicking 'Submit'. You can stop it at any time by clicking 'Stop'. You +cannot use the 'Submit' job to start the exact same job multiple times. You +can use the 'New Job - From Selected Job' option for this. If you delete any +of the jobs, you also remove the folder that it is associated with. diff --git a/source/access/ondemand/jupyterlab.rst b/source/access/ondemand/jupyterlab.rst index 114cdec96..efca3b24b 100644 --- a/source/access/ondemand/jupyterlab.rst +++ b/source/access/ondemand/jupyterlab.rst @@ -1,46 +1,87 @@ JupyterLab ----------- +========== -With this app you can write and run -`Jupyter `_ notebooks containing -annotated Python, R or Julia code (among other languages). IPython consoles are -available as well. One of the benefits of JupyterLab is that it supports -different types of user-defined environments, as will become clear below. +With this app you can write and run `Jupyter `_ notebooks containing annotated Python, R or Julia code (among +other languages). IPython consoles are available as well. One of the benefits of +JupyterLab is that it supports different types of user-defined environments, as +will become clear below. -**Remarks:** +.. tab-set:: -- The top-level notebook directory is by default ``$VSC_DATA``. -- At the moment, we do not support installing extensions in JupyterLab. + .. tab-item:: KU Leuven/UHasselt + + The top-level notebook directory is by default ``$VSC_DATA``. + + .. tab-item:: VUB + + The top-level notebook directory is the selected working directory in the + resources form. + +Jupyter kernels +--------------- + +The following table shows the kernels available in JupyterLab and the +corresponding modules that have to be loaded to enable them: + +.. list-table:: Jupyter kernels provided by software modules + :header-rows: 1 + :align: left + + * - Kernel + - Software Module + * - Python + - *(loaded by default)* + * - R + - IRkernel + * - Julia + - IJulia + +The default lab environment only loads the Python kernel upon launch. You can +activate any other kernel by loading its corresponding :ref:`software module +`. Once a module providing a new kernel is loaded, a +new icon will automatically appear on your lab launcher to start a notebook with +that kernel. Pure module environment ~~~~~~~~~~~~~~~~~~~~~~~ -In the app resource form, besides the :ref:`shared resources `, -you can also choose between different 'Toolchain and Python versions' from a drop-down menu. -An example would be '2023a and ``Python/3.11.3-GCCcore-12.3.0``'. -Based on that choice, the corresponding JupyterLab module will be loaded together with its -dependencies (such as the listed Python module). +In the app resource form, besides the :ref:`shared resources +`, you can also choose between different 'Toolchain and Python +versions' from a drop-down menu. An example would be '2023a and +``Python/3.11.3-GCCcore-12.3.0``'. Based on that choice, the corresponding +JupyterLab module will be loaded together with its dependencies (such as the +listed Python module). -Furthermore, you may choose to load ``SciPy-bundle`` (for widely used packages like ``scipy``, -``numpy``, ``pandas`` and more) and/or ``matplotlib`` modules from the same toolchain. +Furthermore, you may choose to tick one of the checkboxes to load popular +modules from the same toolchain, such as ``SciPy-bundle`` (for widely used +packages like ``scipy``, ``numpy``, ``pandas`` and more) and/or ``matplotlib``. -Once you launch a JupyterLab session, a default kernel called ``Python 3 (ipykernel)`` is already available in your session. -This kernel, in addition to the Python standard library, would enable using extra packages from -``SciPy-bundle`` and/or ``matplotlib``, if you selected them in the resource form. +Once you launch a JupyterLab session, a default kernel called ``Python 3 +(ipykernel)`` is already available in your session. This kernel, in addition to +the Python standard library, would enable using extra packages from +``SciPy-bundle`` and/or ``matplotlib``, if you selected them in the resource +form. + +If the selected modules do not provide all Python packages that you need, you +can load extra modules with Python packages via ``module load`` commands in the +'Pre-run Scriptlet' of the resources form. .. warning:: - If you use JupyterLab in this way, remember to be consistent in your choice of toolchain version - as this e.g. determines the version of Python that will be used. + If you use JupyterLab in the pure module environment, remember to be + consistent in your choice of toolchain version as this determines the + versions of Python and Python packages that will be used. User-defined kernels ~~~~~~~~~~~~~~~~~~~~ -If the pure module environment does not provide all Python packages that you need, -then you can locally install these extra packages, followed by installing the corresponding -Jupyter kernel either from a :ref:`Python Conda environment`, or from a -:ref:`Python virtual environment`. -For R, you may create your customized environment using :ref:`Conda environments for R`. +If the available modules in the pure module environment do not provide all +Python packages that you need, then you can locally install these extra +packages, followed by installing the corresponding Jupyter kernel either from a +:ref:`Python Conda environment`, or from a :ref:`Python virtual +environment`. For R, you may create your customized environment +using :ref:`Conda environments for R`. .. note:: @@ -54,8 +95,8 @@ For R, you may create your customized environment using :ref:`Conda environments (for both Python and R) will reside in ``${XDG_DATA_HOME}/jupyter/kernels``. To remove a kernel, find and delete the corresponding folder inside the ``kernels`` subdirectory. - We strongly advice you to stay away from modifying the contents of this folder, - unless you are aware of the consequences. + We strongly advice against modifying the contents of this folder, unless you + are aware of the consequences. .. _py-conda-kernel: @@ -78,53 +119,75 @@ least version 6.19.2) and finally the kernel itself:: These commands should be excecuted from a shell (e.g. using 'Login Server Shell Access'), and only need to be done once for a given environment. When launching a new JupyterLab session, this kernel should then show up in the overview -of available kernels. +of available kernels, and as a tile under the 'Notebook' section when opening a new launcher. + In case you encounter issues such as freezing or crashing JupyterLab sessions with a previously existing kernel, then reinstalling that kernel may help. .. _py-venv-kernel: -Python virtual environments -~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A similar procedure applies for Python virtual environments associated with -a centrally installed Python module. Note that the chosen Python module needs -to be in the list of 'Toolchain and Python versions' of the JupyterLab form -(e.g. ``2023a and Python/3.11.3-GCCcore-12.3.0``). The commands below show -how creating such a virtual environment and installing the corresponding kernel -would typically look like (to be done from a shell, e.g. using 'Login Server Shell Access'): - -.. code-block :: bash - - cd ${VSC_DATA} - # the line below is needed if you use the 'Interactive Shell' app - module use /apps/leuven/${VSC_OS_LOCAL}/${VSC_ARCH_LOCAL}${VSC_ARCH_SUFFIX}/2023a/modules/all - module load Python/3.11.3-GCCcore-12.3.0 - python -m venv - source /bin/activate - pip install ipykernel - # note that unlike for Conda environments the "--env ..." argument is not needed below - python -m ipykernel install --user --name --display-name - -On the JupyterLab form, choose a partition to your liking and select the same -toolchain as above. Once you connect to your session, your new kernel will be -ready to use. To verify your setup, you can execute ``import sys; sys.executable`` -in your notebook, and the resulting path should point to the location of your -virtual environment. +Virtual environments for Python +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can use :ref:`Python virtual environments ` to generate custom kernels for your +notebooks. Virtual environments provide a layer of isolation allowing users to +install additional Python packages on top of the software modules without +conflicts. + +Before using a virtual environment from the lab interface, consider the +following requirements: + +- The chosen Python module needs to be in the list of 'Toolchain and + Python versions' of the JupyterLab form (e.g. ``2023a and + Python/3.11.3-GCCcore-12.3.0``). + +- When using a virtual environment, the same software modules must be + loaded as those that were loaded when creating it. -**Remarks:** +- A virtual environment is only guaranteed to work in the same :ref:`CPU + microarchitecture ` as the one it was created on. + + |KUL| We recommend to consider the suggestions in the :ref:`wICE advanced + guide `. + + +#. Open the *Terminal* from your lab interface, ensuring that the requirements + listed above requirements are met. + +#. Follow the instructions in :ref:`venv_python` to create a new virtual + environment and install any Python packages in it. Keep in mind that loading + the Python module is not necessary as that is already done by the JupyterLab + session. This new virtual environment can be placed anywhere you like in the + storage of the cluster. + + .. code-block:: shell + :caption: Example sequence of commands to create a new virtual + environment in the directory ``venv-zen4`` + + $ python3 -m venv venv-zen4 --system-site-packages + $ source venv-zen4/bin/activate + (venv-zen4) $ python3 -m pip install --upgrade pip + (venv-zen4) $ python3 -m pip install + +#. Add your new virtual environment as a new Jupyter kernel (from the same + terminal shell) + + .. code-block:: shell + + $ python3 -m ipykernel install --user --name=venv-zen4 + +#. A new launcher will appear in the lab interface to start notebooks using + this new virtual environment + + .. figure:: img/jupyterlab-custom-launcher.png + + Launchers for default Python kernel and custom Python kernel from + virtual environment + +To verify your setup, you can execute ``import sys; sys.executable`` in the new +kernel notebook, and the resulting path should point to the location of your +virtual environment. -- The above example assumes that your virtual environment can be used on - different CPU and/or GPU architectures than the ones present on the node - on which you created the environment and installed the extra packages. - This is normally the case for typical ``pip`` usage where precompiled 'wheels' - get downloaded and installed and which can therefore be used on any - architecture. -- If however one your package installation steps involves compiling source code, - then you might only be able to use your virtual environment on the same - architecture where the compilation was carried out. If this is the case we - recommend to consider the suggestions in the - :ref:`wICE advanced guide`. .. _r-conda-kernel: @@ -141,4 +204,87 @@ You can now start working in your own customized environment. For more general information, please refer to the `official JupyterLab documentation`_. -.. _official JupyterLab documentation: https://docs.jupyter.org/en/latest/ +.. _official JupyterLab documentation: https://jupyterlab.readthedocs.io + + +JupyterLab extensions +--------------------- + +Extensions enhance or customize to your JupyterLab session. You can find the +list of available extensions in the extension tab on the left panel (*puzzle +piece icon*) and you can enable or disable any of them. + +.. note:: + + The store of Jupyter extensions is disabled on the notebook platform as the + available extensions for download on the store are unreviewed and they can + contain malicious or malfunctioning software. If you need any Jupyter + extension that is not yet available, please contact the site admins. + +.. _software_modules_extension: + +Software modules extension +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The 'Software Modules' extension allows you to load additional software modules +within JupyterLab without relaunching your JupyterLab session. This provides a +more flexible alternative to loading modules via the 'Pre-run Scriptlet' in the +resources form. + +VSC clusters that support the 'Software Modules' extension: + +.. grid:: 3 + :gutter: 4 + + .. grid-item-card:: |VUB| + :columns: 12 4 4 4 + + .. TODO use links + + * Tier-2 Hydra + * Tier-2 Anansi + +You can load software modules from the tab with a *hexagon* icon on the left +panel of JupyterLab. This tab opens a list of loaded modules followed by a +list of available modules. + +.. figure:: img/jupyterlab-lmod-tab-2023a.webp + + Software Modules extension in JupyterLab. + +Upon launch, the list of loaded modules will already show some modules loaded by +JupyterLab itself. For example, you will always see a Python module loaded, +which determines the version of Python of the kernel used by your Python +notebooks on this session. + +.. warning:: + + Modules already loaded when your JupyterLab environment starts are necessary + for the correct function of the lab and notebooks. They should not be unloaded. + +Below the loaded modules, you will find the list of available modules that can +be loaded on-demand. Point your cursor to the right of the module name and a +*Load* button will appear (see screenshot on the right). All modules shown in +the list are compatible with each other, so you can load any combination of +modules. + +.. figure:: img/jupyterlab-lmod-load-2023a.webp + + Loading a module Software Modules extension JupyterLab. + +.. note:: + + Any change to the list of loaded modules requires rebooting the kernel of + your open notebooks. After loading/unloading modules, click the kernel at the top-right + of the notebook toolbar, (default = *Python 3 (ipykernel)*) in the + screenshot below, and re-select your notebook kernel from the menu. + +.. figure:: img/jupyterlab-kernel-reload.png + + Notebook toolbar with default Python kernel + +jupyter-matplotlib extension +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +dask-labextension +~~~~~~~~~~~~~~~~~ diff --git a/source/access/ondemand/links_ood.rst b/source/access/ondemand/links_ood.rst deleted file mode 100644 index 4445908e6..000000000 --- a/source/access/ondemand/links_ood.rst +++ /dev/null @@ -1,30 +0,0 @@ -.. grid:: 3 - :gutter: 4 - - .. grid-item-card:: UAntwerp (AUHA) - :columns: 12 4 4 4 - - (coming soon) - - .. * Tier-2 :ref:`Vaughan ` - .. * Tier-2 :ref:`Leibniz ` - .. * Tier-2 :ref:`Breniac ` - - .. grid-item-card:: KU Leuven/UHasselt - :columns: 12 4 4 4 - - :fas:`circle-play` `KU Leuven OnDemand`_ - - * Tier-2 :ref:`Genius ` - * Tier-2 :ref:`wICE ` - - .. grid-item-card:: VUB - :columns: 12 4 4 4 - - :fas:`circle-play` `VUB OnDemand`_ - - * Tier-2 :ref:`Hydra ` - * Tier-2 Anansi - -.. _KU Leuven OnDemand: https://ondemand.hpc.kuleuven.be/ -.. _VUB OnDemand: https://portal.hpc.vub.be/ diff --git a/source/access/ondemand/paraview.rst b/source/access/ondemand/paraview.rst index d1b230ced..8783ac2bb 100644 --- a/source/access/ondemand/paraview.rst +++ b/source/access/ondemand/paraview.rst @@ -1,20 +1,25 @@ ParaView -------- -.. tab-set:: +`ParaView `_ is an open-source application for interactive, scientific +visualization. It supports various simulation packages, including OpenFAOM. - .. tab-item:: KU Leuven/UHasselt +VSC clusters that support the ParaView app: - For visualization purposes, you may use the `ParaView app `_. - Similar to the :ref:`MATLAB app `, ParaView also runs inside a `noVNC`_ - desktop as a compute job. +.. grid:: 3 + :gutter: 4 - .. note:: + .. grid-item-card:: |KUL| + :columns: 12 4 4 4 - Currently, using GPUs in ParaView is not supported yet, and just the CPU-only modules are offered. + * Tier-2 :ref:`Genius ` + * Tier-2 :ref:`wICE ` - .. tab-item:: VUB +Similar to the :ref:`MATLAB app `, ParaView also runs inside a `noVNC`_ +desktop as a compute job. - (not available now) +.. note:: + + Currently, using GPUs in ParaView is not supported yet, and just the CPU-only modules are offered. .. _noVNC: https://novnc.com/ diff --git a/source/access/ondemand/vscode-python-modules-brussel.rst b/source/access/ondemand/vscode-python-modules-brussel.rst new file mode 100644 index 000000000..29c5d3091 --- /dev/null +++ b/source/access/ondemand/vscode-python-modules-brussel.rst @@ -0,0 +1,17 @@ +The following steps are required to use Python and packages from :ref:`the +software modules ` in the Python IDE: + +#. In 'Pre-run Scriptlet' of the resources form, ``module load`` the + modules that you need. A common software module is ``SciPy-bundle``, a + bundle of data science packages such as ``numpy``, ``pandas``, and + ``scipy``. + +#. In the VS Code interface, select the corresponding Python version + + path as outlined above. + +The Steps for using `virtual environments +`_ +on top of loaded software modules are exactly the same. Note that +activating the virtual environment is not required if you select +the Python version + path located in the virtual environment at +``/bin/python3.x``. diff --git a/source/access/ondemand/vscode-server.rst b/source/access/ondemand/vscode-server.rst index 82f3d0584..9f6b2a963 100644 --- a/source/access/ondemand/vscode-server.rst +++ b/source/access/ondemand/vscode-server.rst @@ -66,22 +66,7 @@ Python modules and environments .. tab-item:: VUB - The following steps are required to use Python and packages from :ref:`the - software modules ` in the Python IDE: - - #. In 'Pre-run Scriptlet' of the resources form, ``module load`` the - modules that you need. - - #. In the VS Code interface, select the corresponding Python version + - path as outlined above. - - The Steps for using `virtual environments - `_ - on top of loaded software modules are exactly the same. Note that - activating the virtual environment is not needed, just make sure to select - the Python binary that is located in the virtual environment as - ``/bin/python``. - + .. include:: vscode-python-modules-brussel.rst R IDE ~~~~~ diff --git a/source/access/ondemand/vscode-tunnel-brussel.rst b/source/access/ondemand/vscode-tunnel-brussel.rst deleted file mode 100644 index 84fbd7858..000000000 --- a/source/access/ondemand/vscode-tunnel-brussel.rst +++ /dev/null @@ -1,85 +0,0 @@ -.. _vscode_tunnel_brussel: - -VS Code Tunnel (VUB) --------------------- - -The VS Code Tunnel provides tunnel access to an interactive job from your -*locally installed* VS Code application. This is handy if you already have many -extensions installed locally, or if you want to easily switch between local and -remote work within a single application. The downside is the number of steps -involved to connect (although mostly point-and-click). - -For more information on VS Code, check out the official `VSCode guidelines -`_. - -Before you connect -~~~~~~~~~~~~~~~~~~ - -VS Code automatically creates folders ``.vscode`` and ``.vscode-server`` in your -``$VSC_HOME``, which tend to become rather big quickly, especially if you use a -lot of extensions. To avoid filling up your ``$VSC_HOME``, we highly recommend -replacing those folders with symlinks to your ``$VSC_DATA``: - -.. code-block:: bash - - mkdir $VSC_DATA/.vscode $VSC_DATA/.vscode-server - ln -s $VSC_DATA/.vscode ~/.vscode - ln -s $VSC_DATA/.vscode-server ~/.vscode-server - -If you already have folders ``~/.vscode`` and ``~/.vscode-server``, you can move -them to ``$VSC_DATA`` before symlinking. - -How to connect -~~~~~~~~~~~~~~ - -#. In the web portal, under the 'Interactive Apps' menu, choose 'VS Code - Tunnel', select the resources and launch your job by clicking the ``Launch`` - button. Once your job has started, connect by clicking the ``Connect`` - button. - -#. A first browser tab or window opens, showing a terminal session, and you are - asked 'How would you like to log in to Visual Studio Code?'. Select 'Microsoft - Account' using the arrow keys on your keyboard and click Enter. - -#. An URL and an authentication code are shown, which you will need to sign in - to VS Code. Copy the code by holding the Shift key while selecting it, and - click the URL to open it. - -#. A second browser tab or window opens. Enter the copied code, select your - Microsoft account, and click the ``continue`` button. The tunnel is now ready - to be used. - -#. Launch VS Code on your local computer, and click the blue button in the - bottom left of the window that says 'Open a Remote Window'. - -#. In the command palette, you are asked to 'Select an option to open a Remote - Window'. Select 'Tunnel', which will automatically install the 'Remote - - Tunnels' extension. If the extension was already installed, click 'Connect to - Tunnel..'. - -#. Again in the command palette, you are asked 'What type of account did you use - to start this tunnel?'. Select 'Microsoft Account'. - -#. In the pop-up that says "The extension 'Remote - Tunnels' wants to sign in - using Microsoft", click ``Allow``. - -#. A third browser tab or window opens. Again, select your Microsoft account. - -#. Again in the command palette, select the tunnel with the format - ``vsc--``, where ```` is your VSC-id, and - ```` is the cluster that you selected in the resources form. - -#. That’s it, you are now connected to your VS Code Tunnel session! - -.. note:: - - - In case of authentication problems, it may be necessary to tick the - 'Cleanup previous VS Code Tunnel login data' checkbox in the resources - form. - - To close the remote connection, click again the blue button in the bottom - left, and select 'Close Remote Connection' in the command palette. - - To use Python software modules in your VS Code Tunnel session, make sure to - load them in the 'Pre-run Scriptlet' in the resources form. Similarly, to - use a Python virtual environment, make sure to activate it in the 'Pre-run - Scriptlet'. - diff --git a/source/access/ondemand/vscode-tunnel.rst b/source/access/ondemand/vscode-tunnel.rst index 842223978..92197c599 100644 --- a/source/access/ondemand/vscode-tunnel.rst +++ b/source/access/ondemand/vscode-tunnel.rst @@ -1,28 +1,99 @@ VS Code Tunnel -------------- +The VS Code Tunnel app provides tunnel access to an interactive job from your +*locally installed* VS Code application. This is handy if you already have many +extensions installed locally, or if you want to easily switch between local and +remote work within a single application. The downside is the number of steps +involved to connect (although mostly point-and-click). + +For more information on VS Code, check out the official `VSCode guidelines +`_. + +VSC clusters that support the VS Code Tunnel app: + .. grid:: 3 :gutter: 4 - .. grid-item-card:: UAntwerp (AUHA) + .. grid-item-card:: |VUB| :columns: 12 4 4 4 - (not available now) + .. TODO use links + * Tier-2 Hydra + * Tier-2 Anansi - .. grid-item-card:: KU Leuven/UHasselt - :columns: 12 4 4 4 +Before you connect +~~~~~~~~~~~~~~~~~~ - (not available now) +VS Code automatically creates folders ``.vscode`` and ``.vscode-server`` in your +``$VSC_HOME``, which tend to become rather big quickly, especially if you use a +lot of extensions. To avoid filling up your ``$VSC_HOME``, we recommend +replacing those folders with symlinks to your ``$VSC_DATA``: - .. grid-item-card:: VUB - :columns: 12 4 4 4 +.. code-block:: bash + + mkdir $VSC_DATA/.vscode $VSC_DATA/.vscode-server + ln -s $VSC_DATA/.vscode ~/.vscode + ln -s $VSC_DATA/.vscode-server ~/.vscode-server + +If you already have folders ``~/.vscode`` and ``~/.vscode-server``, you can move +them to ``$VSC_DATA`` before symlinking. + +How to connect +~~~~~~~~~~~~~~ + +#. In the web portal, under the 'Interactive Apps' menu, choose 'VS Code + Tunnel', select the resources and launch your job by clicking the ``Launch`` + button. Once your job has started, connect by clicking the ``Connect`` + button. + +#. A first browser tab or window opens, showing a terminal session, and you are + asked 'How would you like to log in to Visual Studio Code?'. Select 'Microsoft + Account' using the arrow keys on your keyboard and click Enter. + +#. An URL and an authentication code are shown, which you will need to sign in + to VS Code. Copy the code by holding the Shift key while selecting it, and + click the URL to open it. + +#. A second browser tab or window opens. Enter the copied code, select your + Microsoft account, and click the ``continue`` button. The tunnel is now ready + to be used. + +#. Launch VS Code on your local computer, and click the blue button in the + bottom left of the window that says 'Open a Remote Window'. + +#. In the command palette, you are asked to 'Select an option to open a Remote + Window'. Select 'Tunnel', which will automatically install the 'Remote - + Tunnels' extension. If the extension was already installed, click 'Connect to + Tunnel..'. + +#. Again in the command palette, you are asked 'What type of account did you use + to start this tunnel?'. Select 'Microsoft Account'. + +#. In the pop-up that says "The extension 'Remote - Tunnels' wants to sign in + using Microsoft", click ``Allow``. + +#. A third browser tab or window opens. Again, select your Microsoft account. + +#. Again in the command palette, select the tunnel with the format + ``vsc--``, where ```` is your VSC-id, and + ```` is the cluster that you selected in the resources form. + +#. That’s it, you are now connected to your VS Code Tunnel session! + +.. note:: - .. toctree:: - :maxdepth: 1 + - In case of authentication problems, it may be necessary to tick the + 'Cleanup previous VS Code Tunnel login data' checkbox in the resources + form. + - To close the remote connection, click again the blue button in the bottom + left, and select 'Close Remote Connection' in the command palette. - vscode-tunnel-brussel +Python modules and environments +............................... +.. include:: vscode-python-modules-brussel.rst diff --git a/source/jobs/job_submission.rst b/source/jobs/job_submission.rst index d97def5d1..a320d804b 100644 --- a/source/jobs/job_submission.rst +++ b/source/jobs/job_submission.rst @@ -110,6 +110,8 @@ or d-hh\:mm\:ss (days, hours, minutes and seconds) format. The ``-`` is not a ty If not set, a default wall time of 1 hour will be assigned. +.. _slurm_partition: + Specifying a partition ---------------------- diff --git a/source/software/python_package_management.rst b/source/software/python_package_management.rst index 3be2c5f0c..a352bfbb8 100644 --- a/source/software/python_package_management.rst +++ b/source/software/python_package_management.rst @@ -10,16 +10,15 @@ Python comes with an extensive standard library, and you are strongly encouraged to use those packages as much as possible, since this will ensure that your code can be run on any platform that supports Python. -However, many useful extensions to and libraries for Python come in the -form of packages that can be installed separately. Some of those are part -of the default installation on VSC infrastructure, others have been made -available through the module system and must be loaded explicitly. -Given the astounding number of packages, it is not sustainable to -install each and everyone system wide. Since it is very easy for a user -to install them just for himself, or for his research group, that is not -a problem though. Do not hesitate to contact support whenever you -encounter trouble doing so. +However, many useful extensions to and libraries for Python come in the form of +packages that can be installed separately. Many Python packages have been made +available through the module system, but must be loaded explicitly. + +Given the astounding number of packages, it is not sustainable to install each +and everyone system wide. Since it is relatively easy for a user to install them +just for himself, or for his research group, that is not a problem though. Do +not hesitate to contact support whenever you encounter trouble doing so. Checking for installed packages ------------------------------- @@ -27,23 +26,152 @@ Checking for installed packages To check which Python packages are installed, the ``pip`` utility is useful. It will list all packages that are installed for the Python distribution you are using, including those installed by you, i.e., -those in your ``PYTHONPATH`` environment variable. +in your account. #. Load the module for the Python version you wish to use, e.g.,:: - $ module load Python/3.7.0-foss-2018b + $ module load Python/3.11.3-GCCcore-12.3.0 #. Run ``pip``:: - - $ pip freeze -Note that some packages, e.g., ``mpi4py``, ``pyh5``, ``pytables``,..., -are available through the module system, and have to be loaded -separately. These packages will not be listed by ``pip`` unless you -loaded the corresponding module. In recent toolchains, many of the -packages you need for scientific computing have been bundled into the -``SciPy-bundle`` module. + $ pip list -v + +Note that many packages, e.g., ``mpi4py``, ``pyh5``, ``pytables``,..., are +available through the module system, and have to be loaded separately. These +packages will not be listed by ``pip`` unless you loaded the corresponding +module. In recent toolchains, many of the packages you need for scientific +computing have been bundled into the ``SciPy-bundle`` module. + +.. _venv_python: + +Python virtual environments +--------------------------- + +A `Python virtual environment `_ +is an isolated environment in which you can safely install Python packages, +independent from those installed in the system or in other virtual environments. +For example, using virtual environments is very convenient for Python developers +as it allows working on multiple software projects at the same time. + +It is recommended to use the software modules already installed in the cluster +as much as possible. They provide a robust and performant base to build your +virtual environments. + +In this section, we show how you can combine modules with virtual environments +in the HPC to get the best of two worlds. + +#. |Warning| Virtual environments are closely linked to the :ref:`CPU + microarchitecture ` of the node on which they were created. + This is especially important for heterogeneous clusters, where architecture + may differ across login nodes and cluster partitions. To get the + architecture of the current node, you can use the ``$VSC_ARCH_LOCAL`` + environment variable. + + Start by launching an :ref:`interactive shell ` in the + :ref:`cluster partition` of choice: + + .. code-block:: shell + :caption: Example command to start an interactive shell in the + *zen4* partition + + srun --partition=zen4 --pty bash -l + +#. Load a Python module as base of the virtual environment. Choose a Python + version that is suitable for the additional Python packages that will be + installed in the virtual environment: + + .. code-block:: shell + + module load Python/3.11.3-GCCcore-12.3.0 + +#. |Optional| Load other modules with additional Python packages: + + .. code-block:: shell + + module load SciPy-bundle/2023.07-gfbf-2023a + + The *Python* software modules in the HPC include a very limited list of + Python packages, but many other modules are also available. A common + software module is ``SciPy-bundle``, a bundle of data science packages such + as ``numpy``, ``pandas``, and ``scipy``. + +#. Create your virtual environment. + + |Warning| Avoid making your virtual environments in your home directory. The + :ref:`storage space of your home ` is very small and can + quickly become filled up with installation files. Use a folder in your + personal ``$VSC_SCRATCH`` or ``$VSC_DATA`` storage; or in your VO if you are + part of one. + + .. code-block:: shell + :caption: Example command to create a new virtual environment in the + directory ``venv-zen4`` + + python3 -m venv venv-zen4 --system-site-packages + + Option ``--system-site-packages`` ensures using the Python packages already + available via the loaded modules instead of installing them in the virtual + environment. + +#. Before we can use the virtual environment, we must `activate` it: + .. code-block:: shell + + source venv-zen4/bin/activate + + Once the virtual environment is active, its name will be displayed in front + of the shell prompt (``(venv-zen4)`` in this example). Make sure to keep this + virtual environment activated when executing the following steps. + +#. We recommend to always upgrade ``pip`` to the latest version: + + .. code-block:: shell + + (venv-zen4) $ python3 -m pip install pip --upgrade + +#. Now we can install additional Python packages inside this virtual + environment: + + .. code-block:: shell + :caption: Example command to install the ``icecream`` package in the + active virtual environment + + (venv-zen4) $ python3 -m pip install icecream --no-cache-dir --no-build-isolation + + Option ``--no-cache-dir`` ensures installing the most recent compatible + versions of the dependencies, ignoring the versions available in your cache. + + Option ``--no-build-isolation`` ensures using the Cython compiler and other + (build) dependencies from loaded modules instead of building in an isolated + environment. + +#. Once you finish your work in the virtual environment, use the command + ``deactivate`` to exit it: + + .. code-block:: shell + :caption: The command ``deactivate`` will bring you back to the standard shell + + (venv-zen4) $ deactivate + +Reactivating your virtual environment +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Whenever you want to go back to any of your virtual environments make sure to: + +#. Launch an interactive job in the same partition you used when creating the + virtual environment (or add the sbatch ``--partition`` option to your job + script):: + + srun --partition=zen4 --pty bash -l + +#. Load the same software modules that you used in the creation of the virtual + environment:: + + module load Python/3.11.3-GCCcore-12.3.0 SciPy-bundle/2023.07-gfbf-2023a + +#. Reactivate the virtual environment:: + + venv-zen4/bin/activate .. _conda for Python: @@ -215,88 +343,6 @@ More information Additional information about conda can be found on its `documentation site `_. - -Alternatives to conda ---------------------- - -Setting up your own package repository for Python is straightforward. -`PyPi, the Python Package Index `_ is a web repository of -Python packages and you can easily install packages from it using either -``easy_install`` or ``pip``. In both cases, you'll have to create a -subdirectory for Python in your ``${VSC_DATA}`` directory, add this directory -to your ``PYTHONPATH`` after loading a suitable Python module, and then -point ``easy_install`` or ``pip`` to that directory as the install target -rather then the default (which of course is write-protected on a multi-user -system). Both commands will take care of dependencies also. - - -Installing packages using easy_install -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you prefer to use ``easy_install``, you can follow these instructions: - -#. Load the appropriate Python module, i.e., the one you want the python - package to be available for:: - - $ module load Python/3.7.0-foss-2018b - -#. Create a directory to hold the packages you install, the last three - directory names are mandatory:: - - $ mkdir -p "${VSC_DATA}/python_lib/lib/python3.7/site-packages/" - -#. Add that directory to the ``PYTHONPATH`` environment variable for the - current shell to do the installation:: - - $ export PYTHONPATH="${VSC_DATA}/python_lib/lib/python3.7/site-packages/:${PYTHONPATH}" - -#. Add the following to your ``.bashrc`` so that Python knows where to - look next time you use it:: - - export PYTHONPATH="${VSC_DATA}/python_lib/lib/python3.7/site-packages/:${PYTHONPATH}" - -#. Install the package, using the ``--prefix`` option to specify the - install path (this would install the sphinx package):: - - $ easy_install --prefix="${VSC_DATA}/python_lib" sphinx - - -Installing packages using pip -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you prefer using ``pip``, you can perform an install in your own -directories as well by providing an install option. - -#. Load the appropriate Python module, i.e., the one you want the python - package to be available for:: - - $ module load Python/3.7.0-foss-2018b - -#. Create a directory to hold the packages you install, the last three - directory names are mandatory:: - - $ mkdir -p "${VSC_DATA}/python_lib/lib/python3.7/site-packages/" - -#. Add that directory to the ``PYTHONPATH`` environment variable for the - current shell to do the installation:: - - $ export PYTHONPATH="${VSC_DATA}/python_lib/lib/python3.7/site-packages/:${PYTHONPATH}" - -#. Add the following to your ``.bashrc`` so that Python knows where to - look next time you use it:: - - export PYTHONPATH="${VSC_DATA}/python_lib/lib/python3.7/site-packages/:${PYTHONPATH}" - -#. Install the package, using the ``--prefix`` install option to specify - the install path (this would install the sphinx package):: - - $ pip install --install-option="--prefix=${VSC_DATA}/python_lib" sphinx - - For newer version of ``pip``, you would use:: - - $ pip install --prefix="${VSC_DATA}/python_lib" sphinx - - Installing Anaconda on NX node (KU Leuven Genius) -------------------------------------------------