Production:Getting Started: Difference between revisions

From Grid5000
Jump to navigation Jump to search
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Portal|User}}
{{Portal|User}}
{{TutorialHeader}}
{{TutorialHeader}}
{{Note|text=2025-01-30 - '''A specific documentation Web site for Abaca will go live shortly. In the meantime, specific pages for “Production” use are hosted in the Grid'5000 documentation.'''}}
This tutorial will guide you through your '''first steps on Abaca'''. Before proceeding, make sure you have a Abaca/Grid'5000 account (if not, follow [[Grid5000:Get an account|this procedure]]), and an SSH client.


== Getting support ==
== Getting support ==
The '''[[Support]] page''' describes how to get help during your Production usage (common with Grid'5000 usage)
 
{{Note|text='''Abaca's network and server infrastructure is currently shared with Grid'5000. Support is coordinated by the Abaca and Grid'5000 teams.'''}}
 
The '''[[Support]] page''' describes how to get help during your Production (Abaca) usage (common with Grid'5000 usage)


There's also an '''[[Production:FAQ]] page''' with the most common question related to Production usage.
There's also an '''[[Production:FAQ]] page''' with the most common question related to Production usage.


== Connecting for the first time ==
Before asking for support check if there is an ongoing maintenance or outage:
* Current or future downtime due to maintenance are available from [https://www.grid5000.fr/status/ https://www.grid5000.fr/status/].
 
== Abaca general structure ==
 
 
{{Note|text='''Abaca is the name of Inria's national computing infrastructure dedicated to production applications.'''
Abaca is built using the Grid'5000 platform infrastructure. <br>
Abaca clusters are hosted on Inria sites alongside clusters dedicated to the Grid'5000 platform. Abaca and Grid'5000 use the same technical management tools, and the Abaca and Grid'5000 support teams work together to administer both platforms.<br>
'''In this document, “Production” refers to the use of the Abaca platform.'''}}
 
Abaca provides access to a large-scale computing nodes distributed in serveral sites.


The primary way to move around Grid'5000 is using SSH. A [[SSH|reference page for SSH]] is also maintained with advanced configuration options that frequent users will find useful.
The primary way to move around Abaca (and Grid'5000) is using SSH.


As described in the figure below, when using Grid'5000, you will typically:
As described in the figure below, when using Abaca, you will typically:
# connect, using SSH, to an access machine
# connect, using SSH, to an access machine
# connect from this access machine to a site frontend
# connect from this access machine to a site frontend
# on this site frontend, reserve resources (nodes), and connect to those nodes
# on this site frontend, reserve resources (nodes), and connect to those nodes
The access.grid5000.fr SSH gateway is located in a DMZ network located at the Lille site. <br>
This SSH gateway allows you to jump to the various Abaca and Grid'5000 sites.
<br>
<br>


[[Image:Grid5000_SSH_access.png|950px|center|Grid5000 Access]]
[[Image:Grid5000_SSH_access.png|950px|center|Grid5000 Access]]


=== Connect to a Grid'5000 access machine ===
== Connecting for the first time ==
To enter the Grid'5000 network from Internet, one must use an access machine: <code class="host">access.grid5000.fr</code> (Note that <code class="host">access.grid5000.fr</code> is a round robin alias to either: <code class="host">access-north</code> which is currently hosted in Lille, or <code class="host">access-south</code> currently hosted in Sophia-Antipolis).
 
You must first obtain your account on the Abaca platform: [[Production#Getting_an_account]]
* ''NB: does not concern users from clusters migrated to Abaca (Sophia-Nef, Grenoble...), their account will be initialized by the Abaca technical team (they will receive an e-mail notification).''
 
The primary way to move around Abaca is using SSH. A [[SSH|reference page for SSH]] is also maintained with advanced configuration options that frequent users will find useful.
 
Typically you will :
# connect, using SSH, to an access machine
# connect from this access machine to a site frontend
# on this site frontend, reserve resources (nodes), and connect to those nodes
 
=== Connect to Abaca access machine ===
To enter the Abaca network, one must use an access machine: <code class="host">access.grid5000.fr</code> (Note that <code class="host">access.grid5000.fr</code> is an alias to <code class="host">access-north</code> which is currently hosted in Lille, or exceptionally to <code class="host">access-south</code> currently hosted in Sophia Antipolis) when <code class="host">access-north</code> is unavailable (maintenance or outage).


For all connections, you must use the <code class="replace">login</code> that was provided to you when you created your Grid'5000 account.
For all connections, you must use the <code class="replace">login</code> that was provided to you when you created your Abaca/Grid'5000 account.


{{Term|location=outside|cmd=<code class="command">ssh</code> <code class="replace">login</code><code class="command">@</code><code class="host">access.grid5000.fr</code>}}
{{Term|location=outside|cmd=<code class="command">ssh</code> <code class="replace">login</code><code class="command">@</code><code class="host">access.grid5000.fr</code>}}
You will get authenticated using the SSH public key you provided in the account creation form. Password authentication is disabled.
You will get authenticated using the SSH public key you provided in the account creation form. Password authentication is disabled.


=== Connecting to a Grid'5000 site ===
=== Connecting to a site ===
Grid'5000 is structured in '''<code class="host">sites</code>''' (<code class="host">Grenoble</code>, <code class="host">Rennes</code>, <code class="host">Nancy</code>, ...). Each site hosts one or more clusters (homogeneous sets of machines, usually bought at the same time).
Abaca is structured in '''<code class="host">sites</code>''' (<code class="host">Grenoble</code>, <code class="host">Nancy</code>, <code class="host">Rennes</code>, <code class="host">Sophia</code>...). Each site hosts one or more clusters (homogeneous sets of machines, usually bought at the same time).


To connect to a particular site, do the following (blue and red arrow labeled SSH in the figure above).
To connect to a particular site, do the following


{{Term|location=access|cmd=<code class="command">ssh</code> <code class="replace">site</code>}}
{{Term|location=access|cmd=<code class="command">ssh</code> <code class="replace">site</code>}}


; Home directories
; Home directories
You have a '''different home directory on each Grid'5000 site''', so you will usually use [[Rsync]] or <code class="command">scp</code> to move data around.
You have a '''different home directory on each Abaca site''', so you will usually use [[Rsync]] or <code class="command">scp</code> to move data around.
On <code class="host">access</code> machines, you have direct access to each of those home directories, through NFS mounts (but using that feature to transfer very large volumes of data is inefficient). Typically, to copy a file to your home directory on the Nancy site, you can use:
On <code class="host">access</code> machines, you have direct access to each of those home directories, through NFS mounts (but using that feature to transfer very large volumes of data is inefficient). Typically, to copy a file to your home directory on the Nancy site, you can use:
{{Term|location=outside|cmd=<code class="command">scp</code> <code class="replace">myfile.c</code> <code class="replace">login</code>@<code class=host>access.grid5000.fr</code>:<code class=file>nancy/targetdirectory/mytargetfile.c</code>}}
{{Term|location=outside|cmd=<code class="command">scp</code> <code class="replace">myfile.c</code> <code class="replace">login</code>@<code class=host>access.grid5000.fr</code>:<code class=file>nancy/targetdirectory/mytargetfile.c</code>}}


'''Grid'5000 does NOT have a BACKUP service for users' home directories''': it is '''your responsibility''' to save important data in someplace outside Grid'5000 (or at least to copy data to several Grid'5000 sites in order to increase redundancy).
'''Abaca does NOT have a BACKUP service for users' home directories''': it is '''your responsibility''' to save important data in someplace outside Abaca (or at least to copy data to several Abaca sites in order to increase redundancy).
 
Quotas are applied on home directories -- by default, you get 25 GB per Grid'5000 site. If your usage of Grid'5000 requires more disk space, it is possible to request quota extensions in the account management interface, or to use other storage solutions (see [[Storage]]).
 
=== Alternative Connections  ===
 
==== SSH connection through a web interface ====
 
If you want an out-of-the-box solution which does not require you to setup SSH, you can connect through a web interface.
The interface is available at https://intranet.grid5000.fr/shell/SITE/. For example, to access nancy's site, use: https://intranet.grid5000.fr/shell/nancy/
To connect you will have to type in your credentials twice (first for the HTTP proxy, then for the SSH connection).
 
This solution is probably suitable to follow this tutorial, but is unlikely to be suitable for real Grid'5000 usage. So you should probably read the next sections about how to setup and use SSH at some point.
 
==== VPN ====
A VPN service is also available, allowing to connect directly to any Grid'5000 machines (bypassing the access machines). See [[VPN|the VPN page]] for more information.


==== HTTP reverse proxies ====
Quotas are applied on home directories -- by default, you get 25 GB per site. If your usage requires more disk space, it is possible to request quota extensions in the account management interface, or to use other storage solutions (see [[Storage]]).
If you only require HTTP/HTTPS access to a node, a reverse HTTP proxy is also available, see the [[HTTP/HTTPs_access]] page.


=== Recommended tips and tricks for an efficient use of Grid'5000===
=== SSH configuration ===
 
==== SSH configuration ====


* Configure [[SSH#Using_SSH_ProxyCommand_feature_to_ease_the_access_to_hosts_inside_Grid.275000|SSH aliases using the ProxyCommand option]]. Using this, you can avoid the two-hops connection (access machine, then frontend) but establish connections directly to frontends. This requires using OpenSSH, which is the SSH software available on all GNU/Linux systems, MacOS, and also recent versions of Microsoft Windows.
* Configure [[SSH#Using_SSH_ProxyCommand_feature_to_ease_the_access_to_hosts_inside_Grid.275000|SSH aliases using the ProxyCommand option]]. Using this, you can avoid the two-hops connection (access machine, then frontend) but establish connections directly to frontends. This requires using OpenSSH, which is the SSH software available on all GNU/Linux systems, MacOS, and also recent versions of Microsoft Windows.
Line 79: Line 97:
{{Term|location=outside|cmd=<code class=command>ssh</code> <code class=replace>rennes</code>.<code class=host>g5k</code>}}
{{Term|location=outside|cmd=<code class=command>ssh</code> <code class=replace>rennes</code>.<code class=host>g5k</code>}}
{{Term|location=outside|cmd=<code class=command>scp</code> <code class=file>a_file</code> <code class=replace>lille</code>.<code class=host>g5k</code>:}}
{{Term|location=outside|cmd=<code class=command>scp</code> <code class=file>a_file</code> <code class=replace>lille</code>.<code class=host>g5k</code>:}}
==== Bash prompt ====
It is possible to modify your bash prompt to display useful informations related to your current job, such as its jobid, the reserved nodes and the remaining time.


{{Term|location=fnancy|cmd=<code class="command">jdoe@fnancy:~$ oarsub -C 3241912</code>}}
{{Term|location=grisou-15|cmd=<pre class="command">
Connect to OAR job 3241912 via the node grisou-15.nancy.grid5000.fr
[OAR] OAR_JOB_ID=3241912
[OAR] Your nodes are:
      grisou-15.nancy.grid5000.fr*16


[jdoe@grisou-15 ~](3241912-->57mn)$ sleep 1m
=== VPN access  ===
[jdoe@grisou-15 ~](3241912-->55mn)$
 
</pre>}}
A VPN service is also available, allowing to connect directly to any Abaca machines (bypassing the access machines). See [[VPN|the VPN page]] for more information.
 
== Managing data ==
 
Once you have logged on to Abaca and started your calculations, you need to transfer your data and store them on the platform.


You will find [https://oar.imag.fr/wiki:use_cases_and_user_tips#oar_aware_shell_prompt_for_interactive_jobs here] all the information you need to setup such a prompt if you are interested.
The following table summaries the comparison of different storage resources that are available on Abaca - persistent or non-persistent types:


==== Miscellaneous ====
{| class="wikitable"
|-
! Storage Resource !! Backups? !! Protocol used !! Persistence period !! Provisioning mechanism !! Network connectivity
|-
| [[#.2Fhome|/home]] || No || NFS || long-term || Quota + User Acct mgmt || Variable (1Gb/s - 10 Gb/s - 25 Gb/s)
|-
| [[#Group Storage|Group Storage]] || No || NFS || long-term || Manual || Variable (1Gb/s - 10 Gb/s - 25 Gb/s)
|-
| /tmp || No || - || short-term (job) || OAR job || -
|-
|}


* Use <code class="command">rsync</code> instead of <code class="command">scp</code> for better performance with multiple files.
{{Note|text=Abaca Network is not directly connected to Inria internal servers. You need to use local SSH gateway to access them from Abaca frontend and nodes.If you need to regularly transfer data, it is highly recommanded to configure the SSH client on each Grid'5000 frontends. }}
* For a '''better bandwidth or latency''', you may also be able to connect directly via the '''local access machine of one of the Grid'5000 sites'''. Local accesses use <code class="host">access.</code><code class=replace>site</code><code class=host>.grid5000.fr</code> instead of <code class="host">access.grid5000.fr</code>. However, mind that '''per-site access restrictions are applied''': see [[External access]] for details about local access machines.
* Access your data from your laptop using [[SSH#Mounting_remote_filesystem_.28sshfs.29|SSHFS]]
* Edit files over SSH with your favorite text editor, with e.g.:
{{Term|location=outside|cmd=<code class="command">vim</code> <code class=file>scp://nancy.g5k/my_file.c</code>}}


== Platform usage ==
{{Note|text=Remember that Abaca does NOT have a BACKUP service for its storage resources: it is '''your responsibility''' to save important data in someplace outside Abaca (or at least to copy data to several Abaca sites in order to increase redundancy).}}


=== Submitting jobs with OAR  ===


; Interactive usage
=== Home directories ===


To reserve a single host (one node) for one hour, in interactive mode, do:
This is the principal storage space when logged-in on a Abaca site: <code class=replace>site</code><code class=file>:/home/</code><code class=replace>username</code>.
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code>-I</code>}}


As soon as the resource becomes available, you will be directly connected to the reserved resource with an interactive shell, as indicated by the shell prompt, and you can run commands on the node:
The home directory is a network filesystem (NFS): data in your home directory is not actually stored on the node itself, it is stored on a storage server managed by the Abaca team. In particular, it means that all reserved nodes share the same home directory, and it is also shared with the site frontend. For example, you can compile or install software in your home (possibly using pip, virtualenv), and it will be usable on all your nodes.


{{Term|location=grisou-1|cmd=<code class="command">lscpu</code>}}
The home directory is only shared within a site. Two nodes from different sites will not have access to the same home.


; Reserving only part of a node
; In term of storage size:
Each user has a default quota of 25GB of storage on each site (soft limit), with a reserve of 100GB (hard limit).
* the soft limit is set to what the admins find a reasonable limit for an account on a more or less permanent basis. You can use more disk space temporarily, but you should not try and trick the system to keep that data on the shared file system.
* the hard limit is set so as to preserve usability for other users if one of your scripts produces unexpected amounts of data. You'll not be able to override that limit.


To reserve only one CPU core in interactive mode, run:
We have a '''limitation of 200GB per home dir''', above that threshold you should consider asking for a [[Group_Storage|group storage]] instead, preferably at the team level since it will be usable/shareable by all of your team mates. If your team does not have yet a group storage, talk about this to your Group manager.
{{Term|location=fnancy|cmd=<code class="command">oarsub -l core=1</code> <code>-I</code>}}


{{Note|text= When reserving only a share of the node's cores, you will have a share of the memory with the same ratio as the cores. If you take the whole node, you will have all the memory of the node. If you take half the cores, you will have half the memory, and so on... You cannot reserve a memory size explicitly.}}
Should you need higher quotas, please visit your user account settings page at https://api.grid5000.fr/ui/account (''homedir quotas'' tab) at fill a request.


; Non-interactive usage (scripts)
; In term of files number
Each user has a default inodes hard quota of 10 million.
This means that users aren't able to store more than 10 million files on their home.


You can also simply launch your experiment along with your reservation:
Information on your current inode usage on a site can be obtained with the following command launched on the site's frontend:
{{Term|location=fnancy|cmd=<code class="command">oarsub -l host=1/core=1</code> <code>"my_mono_threaded_script.py --in $HOME/data --out $HOME/results"</code>}}
{{Term|location=frontend|cmd=<code class="command">quota</code>}}


Your program will be executed as soon as the requested resources are available. As this type of job is not interactive, you will have to check for its termination using the <code class="command">oarstat</code> command.
=== Group Storage ===


{{Template:OARscript}}
This service provides large storage spaces, possibly shared between multiple users (members of a research team or a laboratory or a specific project...). Those storage spaces are accessible on Abaca over NFS from all sites.


=== Submission queues ===
For instance, to access the "linkmedia" storage located on storage2 server located at Rennes from Nancy frontend:
{{Term|location=fnancy|cmd=<code class="command">cd /srv/storage/linkmedia@storage2.rennes.grid5000.fr</code>}}


{{Note|text=OAR is the resources and jobs management system (a.k.a batch manager) used in Grid'5000, just like in traditional HPC centers. '''However, settings and rules of OAR that are configured in Grid'5000 slightly differ from traditional batch manager setups in HPC centers, in order to match the requirements for an experimentation testbed'''. Please remember to read again '''Grid'5000 [[Grid5000:UsagePolicy#Resources_reservation|Usage Policy]]''' to understand the expected usage.}}
Please remember that those data are hosted on a NFS server that is not recommended for compute usage.


It exists different submission queues:
=== /tmp ===
* ''default'' used if none are specified
* ''exotic'' to use resources with specific hardware (e.g., PMEM, arm, power, ...)
* ''production'' only available at Nancy for computation usage
* ''besteffort'' to start best-effort jobs


The <code class="file">/tmp/</code> directory is stored on a local disk of the node.  Use this directory if you need to access data locally.
The size of /tmp is different from to node to node. It is equal to the total size of the (first) local disk minus 75 GB (which is reserved for the operating system).


==== Production queue in Nancy ====
=== How to put and retrieve your data ===


* Job submission
You have a '''different home directory on each Abaca site''', so you will usually use [[Rsync]] to move data around.
On <code class="host">access</code> machines, you have direct access to each of those home directories, through NFS mounts (but using that feature to transfer very large volumes of data is inefficient). Typically, to copy a file to your home directory on the Nancy site, you can use:
{{Term|location=outside|cmd=<code class="command">rsync -avuP </code> <code class="replace">myfile.c</code> <code class="replace">login</code>@<code class=host>access.grid5000.fr</code>:<code class=file>nancy/targetdirectory/mytargetfile.c</code>}}


{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code>-I</code> <code>-q production</code>}}
We recommand to use <code class="command">rsync</code> instead of <code class="command">scp</code> for better performance with multiple files.


* Resources restriction per walltime
For a '''better bandwidth or latency''', you may also be able to connect directly via the '''local access machine of one of the Abaca 5000 sites'''. Local accesses use <code class="host">access.</code><code class=replace>site</code><code class=host>.grid5000.fr</code> instead of <code class="host">access.grid5000.fr</code>. However, mind that '''per-site access restrictions are applied''': see [[External access]] for details about local access machines.


To make sure that someone requesting only a few nodes, for a small amount of time will be able to get soon enough, the nodes are split into categories. This depends on each cluster and is visible in the Gantt chart or at the [[Nancy:Hardware#graffiti|Nancy Hardware page]]. An example of split is:
; other methods
* 30% -- 24h (1 day)
* Access your data from your laptop using [[SSH#Mounting_remote_filesystem_.28sshfs.29|'''SSHFS''']]
* 30% -- 48h (2 days)
* Vscode usage is permitted with the following recommendations:
* 40% -- 168h (one week)
** Restrict the workspace to the folder containing your code and not the whole remote homedir or group storage
** Use an updated version of vscode remote extension (including memory leak bug fix)
** Prefer [https://code.visualstudio.com/docs/remote/troubleshooting#_using-sshfs-to-access-files-on-your-remote-host  sshfs access to your remote data]
* Edit files over SSH with your favorite text editor, with e.g.: {{Term|location=outside|cmd=<code class="command">vim</code> <code class=file>scp://nancy.g5k/my_file.c</code>}}


Note that ''best-effort'' jobs are excluded from those limitations.
== Discovering, visualizing and using resources ==


Another OAR feature that could impact the scheduling of your jobs is the OAR scheduling with fair-sharing, which is based on the notion of ''karma'': this feature assigns a dynamic priority to submissions based on the history of submissions by a specific user. With that feature, the jobs from users that rarely submit jobs will be generally scheduled earlier than jobs from heavy users.
At this point, you are connected to Abaca and have transferred your data. You are now ready to use the platform's computing resources.


=== Discovering and visualizing resources ===
=== Exploring resources ===


There are several ways to learn about the site's resources and their status.
There are several ways to learn about the site's resources and their status.


; Site's resources
; Resources Explorer
 
* The '''Resources Explorer Hardware page''' contains a detailed description of the site's hardware and the access level you have based on the group(s) you belong to. For example:
** [https://api.grid5000.fr/explorer/hardware/nancy/  Resources list in Nancy ]
** [https://api.grid5000.fr/explorer/hardware/rennes/  Resources list in Rennes ]
** [https://api.grid5000.fr/explorer/hardware/sophia/  Resources list in Sophia ]
* Grid'5000 resources are also available with option -q default but you have to follow the [[Grid5000:UsagePolicy#Rules_for_the_default_queue | usage rules of Grid'5000]]
 
; MOTD
 
* The site's MOTD (message of the day) on frontend lists all clusters and their features. Additionally, it gives the list of current or future downtimes due to maintenance.
 
 
; Site's resources availability (OAR) status
 
{|
|bgcolor="#aaaaaa" colspan="10"|
'''Drawgantt''' ''(past, current and future OAR jobs scheduling)''
|-
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Grenoble/drawgantt-svg-prod/ '''Grenoble nodes (production)''']<br>
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Nancy/drawgantt-svg-prod/ '''Nancy nodes (production)''']<br>
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Rennes/drawgantt-svg-prod/ '''Rennes nodes (production)''']<br>
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Sophia/drawgantt-svg-prod/ '''Sophia nodes (production)''']<br>
|-
|bgcolor="#aaaaaa" colspan="10"|
'''Monika''' ''(current placement and queued jobs status)''
|-
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Grenoble/monika-prod.cgi '''Grenoble (production)''']
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Nancy/monika-prod.cgi '''Nancy (production)''']
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Rennes/monika-prod.cgi '''Rennes (production)''']
|bgcolor="#ffffff" valign="top" style="border:1px solid #cccccc;padding:1em;padding-top:0.5em;"|
[https://intranet.grid5000.fr/oar/Sophia/monika-prod.cgi '''Sophia (production)''']
|}
 
=== Using resources ===
 
Each job (resource reservation) is assigned a priority level (from P1 - maximum - to P4) according to the resources requested, and the user's affiliation
group to which the user belongs.
 
The job queue is sorted according to job priority: a job with priority P1 will always run before a job with priority P2, even if job P2 entered the queue first. On the other hand, lower-priority jobs are not interrupted if a higher-priority job is submitted (if a P2 job has already started, it is not interrupted when the P1 job enters the queue).<br>
 
These levels P1 to P4 also define the maximum duration of jobs, the possibility (or otherwise) of reserving resources in advance (on a calendar basis), and the possibility of extending jobs.<br>
 
On certain resources, certain groups of users may be restricted to using the use of “best-effort” jobs (“pre-emptible” jobs). These jobs are automatically stopped when a higher-priority job requires the resources in question.
 
Finally, on some resources, certain groups may have no access at all.
 
{| class="wikitable"
|-
! Queue Priority !! Max walltime !! Reservations in advance !! Extension of job duration
|-
| P1 || 168h (seven days) || yes || yes
|-
| P2 || 96h (four days) || no || no
|-
| P3 || 48h (two days) || no || no
|-
| P4 || 24h (one day) || no || no
|-
| besteffort || N/A || no || no
|}
 
 
 
'''You can check your priority level for any cluster using the''' [https://api.grid5000.fr/explorer/browse Resource explorer Browse page]
<br>
 
Moreover, with '''p1''' priority, user can submit advanced reservation. More information about that in the [[Advanced_OAR#Batch_jobs_vs._advance_reservation_jobs|Advanced OAR Page]]. For example, to reserve one week from now: {{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code>-q p1</code> <code>-r "$(date +'%F %T' --date='+1 week')"</code>}}
'''p1''' priority level also allow to extend the duration of a job. The extension is only apply 24h before the end of the job and cannot be longer than 168h. More information about this feature can be found also on the [[Advanced_OAR#Changing_the_walltime_of_a_running_job_(oarwalltime)|Advance Oar Page]].
<br>
 
 
{{Warning|text=These limits '''DO NOT''' replace the [[Production:FAQ#I_submitted_a_job,_there_are_free_resources,_but_my_job_doesn't_start_as_expected!|maximum walltime per node]] which are still in effects.}}
 
 
 
When submitting a job, by default, you will be placed at the '''highest priority level that allows you to maximize resources''':
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code>-q production</code> <code>-I</code>}}
''Using the command above will generally place your job at the lowest priority to allow usage of all clusters, even those where your priority is '''p4'''.''
 
When you specify a cluster, your job will be set to your highest priority level for that cluster:
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code>-q production</code> <code class="replace">-p grele</code> <code>-I</code>}}
 
You can also limit a job submission to a cluster at a specific priority level using <code>-q</code><code class="replace">PRIORITY LEVEL</code>:
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code class="replace">-q p2</code> <code>-l nodes=2,walltime=90</code> <code>'./yourScript.py'</code>}}


* The site's MOTD (message of the day) lists all clusters and their features. Additionally, it gives the list of current or future downtimes due to maintenance.
=== Exclusive use of team-funded resources ===


* [[Hardware|Hardware pages]] contain a detailed description of the site's hardware
For team-funded resources, the resources are either shared with a higher higher priority for the team ('''SHARED'''), or exclusive to the team and only accessible on a “best-effort” basis by others ('''EXCLUSIVE''').
* Site pages on the wiki (e.g. [[Nancy:Home]]) contain a detailed description of the site's hardware and network
* /!\ best-effort jobs can be preempted by other jobs with higher priority
<br>
Teams decide for themselves which access mode to use, which can evolve over time, with a maximum total duration of 5 years in '''EXCLUSIVE''' mode, which the team can spread out as it sees fit.
<br>
This enables the funding team to ensure that the resources will always be available for its users during periods of heavy use, while still allowing a high degree of sharing with other other teams outside these periods.


=== Submitting jobs with OAR  ===


; Site's status
==== Interactive usage ====


* Current or future downtimes due to maintenance are available from [https://www.grid5000.fr/status/ https://www.grid5000.fr/status/].
To reserve a single host (one node) for one hour, in interactive mode, do:
* The [[Status]] page links to the resource status on each site, with two different visualizations available:
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code>-I</code>}}
** Monika, that provides the current status of nodes (see [https://intranet.grid5000.fr/oar/Nancy/monika.cgi Nancy's current status])
** Gantt, that provides current and planned resources reservations (see [https://intranet.grid5000.fr/oar/Nancy/drawgantt-svg/ Nancy's current status]; example in the figure below).


[[Image:nancy-gantt.png|600px|center|Example of Drawgantt in Nancy site]]
As soon as the resource becomes available, you will be directly connected to the reserved resource with an interactive shell, as indicated by the shell prompt, and you can run commands on the node:
 
{{Term|location=grisou-1|cmd=<code class="command">lscpu</code>}}
 
==== Reserving only part of a node ====
 
To reserve only one CPU core in interactive mode, run:
{{Term|location=fnancy|cmd=<code class="command">oarsub -l core=1</code> <code>-I</code>}}
 
{{Note|text= When reserving only a share of the node's cores, you will have a share of the memory with the same ratio as the cores. If you take the whole node, you will have all the memory of the node. If you take half the cores, you will have half the memory, and so on... You cannot reserve a memory size explicitly.}}
 
 
 
==== OAR properties usage ====
 
You can select ressources with specific hardware properties: cpu, memory, gpu model...
 
FIXME : mettre quelques exemples
 
Properties list can be found on [[OAR Properties]] and [[OAR_Syntax_simplification]].
 
==== Non-interactive usage (scripts) ====
 
You can also simply launch your experiment along with your reservation:
{{Term|location=fnancy|cmd=<code class="command">oarsub -l host=1/core=1</code> <code>"my_mono_threaded_script.py --in $HOME/data --out $HOME/results"</code>}}
 
Your program will be executed as soon as the requested resources are available. As this type of job is not interactive, you will have to check for its termination using the <code class="command">oarstat</code> command.
 
{{Template:OARscript}}


=== Change default job specifications ===
=== Change default job specifications ===


In Grid'5000 the smallest unit of resource managed by OAR is the core (cpu core), but by default a OAR job reserves a host (physical computer including all its cpus and cores, and possibly gpus). Hence, what OAR calls ''nodes'' are hosts (physical machines). In the <code class="command">oarsub</code> resource request (<code class="command">-l</code> arguments), ''nodes'' is an alias for ''host'', so both are equivalent. But prefer using ''host'' for consistency with other argumnents and other tools that expose ''host'' not ''nodes''.
In Abaca the smallest unit of resource managed by OAR is the core (cpu core), but by default a OAR job reserves a host (physical computer including all its cpus and cores, and possibly gpus). Hence, what OAR calls ''nodes'' are hosts (physical machines). In the <code class="command">oarsub</code> resource request (<code class="command">-l</code> arguments), ''nodes'' is an alias for ''host'', so both are equivalent. But prefer using ''host'' for consistency with other argumnents and other tools that expose ''host'' not ''nodes''.


; Other types of resources
; Other types of resources


To reserve only one GPU (with the associated CPU cores and share of memory) in interactive mode, run:
To reserve only one GPU (with the associated CPU cores and share of memory) in interactive mode, run:
{{Term|location=flille|cmd=<code class="command">oarsub -l gpu=1</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub -l gpu=1</code> <code>-I</code>}}


{{Note|text=Even if the node has several GPUs, this reservation will only be able to access a single one. It's a good practice if you only need one GPU: other users will be able to run jobs on the same node to access the other GPUs. Of course, if you need all GPUs of a node, you have the option to reserve the entire node which includes all its GPUs.}}
{{Note|text=Even if the node has several GPUs, this reservation will only be able to access a single one. It's a good practice if you only need one GPU: other users will be able to run jobs on the same node to access the other GPUs. Of course, if you need all GPUs of a node, you have the option to reserve the entire node which includes all its GPUs.}}
Line 195: Line 342:
To reserve several GPUs and ensure they are located in a single node, make sure to specify <code class="command">host=1</code>:
To reserve several GPUs and ensure they are located in a single node, make sure to specify <code class="command">host=1</code>:


{{Term|location=flille|cmd=<code class="command">oarsub -l host=1/gpu=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub -l host=1/gpu=2</code> <code>-I</code>}}


; Choosing the job duration
; Choosing the job duration
Line 229: Line 376:
<code class="command">oarsh</code> is a wrapper around <code class="command">ssh</code> that enables the tracking of user jobs inside compute nodes (for example, to enforce the correct sharing of resources when two different jobs share a compute node). If your application does not support choosing a different connector, be sure to reserve nodes entirely (which is the default with <code class="command">oarsub</code>) to be able to use <code class="command">ssh</code>.
<code class="command">oarsh</code> is a wrapper around <code class="command">ssh</code> that enables the tracking of user jobs inside compute nodes (for example, to enforce the correct sharing of resources when two different jobs share a compute node). If your application does not support choosing a different connector, be sure to reserve nodes entirely (which is the default with <code class="command">oarsub</code>) to be able to use <code class="command">ssh</code>.


; Selecting nodes from a specific cluster or cluster type
; Selecting nodes from a specific cluster


* Reserve nodes from a specific cluster
* Reserve nodes from a specific cluster
{{Term|location=fgrenoble|cmd=<code class="command">oarsub</code> <code class="replace">-p dahu</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub</code> <code class="replace">-p roahzon5</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}
* Reserve nodes in the [[Grid5000:UsagePolicy#Rules_for_the_production_queue|'''production''' queue]]
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code class="replace">-q production</code> <code class="replace">-p grappe</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}
* Reserve nodes from an '''exotic''' cluster type
{{Term|location=flyon|cmd=<code class="command">oarsub</code> <code class="replace">-t exotic</code> <code class="replace">-p pyxis</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}
 
Clusters with the '''exotic''' type either have a non-x86 architecture, or are specific enough to warrant this type. Resources with an exotic type are never selected by default by OAR. Using <code class="command">-t exotic</code> is required to obtain such resources.
 
The type of a cluster can be identified on the [[Hardware]] pages, see for instance [[Lyon:Hardware]].
 
{{Warning|text=When using the <code class="command">-t exotic</code> option, you can still obtain non-exotic resources! You should filter on the cluster name or other properties if you want exclusively exotic resources.}}
 


; Selecting specific nodes
; Selecting specific nodes
Line 249: Line 385:
If you know the exact node you want to reserve, you can specify the hostname of the node you require:
If you know the exact node you want to reserve, you can specify the hostname of the node you require:


{{Term|location=fgrenoble|cmd=<code class="command">oarsub</code> <code class="replace">-p dahu-12</code> <code class="command">-l host=1,walltime=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub</code> <code class="replace">-p roahzon5-7</code> <code class="command">-l host=1,walltime=2</code> <code>-I</code>}}


If you want several specific nodes, you can use a list:
If you want several specific nodes, you can use a list:
{{Term|location=fgrenoble|cmd=<code class="command">oarsub</code> <code class="replace">-p "host IN (dahu-5, dahu-12)"</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub</code> <code class="replace">-p "host IN (roahzon5-7, roahzon6-2)"</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}




Line 260: Line 396:
* Nodes with Infiniband FDR interfaces:
* Nodes with Infiniband FDR interfaces:
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code class="replace">-p "ib=FDR"</code> <code class="command">-l host=5,walltime=2 -I</code>}}
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code class="replace">-p "ib=FDR"</code> <code class="command">-l host=5,walltime=2 -I</code>}}
* Nodes with power sensors and GPUs:
{{Term|location=flyon|cmd=<code class="command">oarsub</code> <code class="replace">-p "wattmeter=YES AND gpu_count > 0"</code> <code class="command">-l host=2,walltime=2</code> <code>-I</code>}}
* Nodes with 2 GPUs:
* Nodes with 2 GPUs:
{{Term|location=flille|cmd=<code class="command">oarsub</code> <code class="replace">-p "gpu_count = 2"</code> <code class="command">-l host=3,walltime=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub</code> <code class="replace">-p "gpu_count = 2"</code> <code class="command">-l host=3,walltime=2</code> <code>-I</code>}}
* Nodes with a specific CPU model:
* Nodes with a specific CPU model:
{{Term|location=flille|cmd=<code class="command">oarsub</code> <code class="replace">-p "cputype = 'Intel Xeon E5-2630 v4'"</code> <code class="command">-l host=3,walltime=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub</code> <code class="replace">-p "cputype = 'Intel Xeon E5-2630 v4'"</code> <code class="command">-l host=3,walltime=2</code> <code>-I</code>}}
* Since <code class="command">-p</code> accepts SQL, you can write advanced queries:
* Since <code class="command">-p</code> accepts SQL, you can write advanced queries:
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code class="replace">-p "wattmeter=YES AND host NOT IN (graffiti-41, graffiti-42)"</code> <code class="command">-l host=5,walltime=2</code> <code>-I</code>}}
{{Term|location=fnancy|cmd=<code class="command">oarsub</code> <code class="replace">-p "wattmeter=YES AND host NOT IN (graffiti-41, graffiti-42)"</code> <code class="command">-l host=5,walltime=2</code> <code>-I</code>}}
{{Term|location=flille|cmd=<code class="command">oarsub</code> <code class="replace">-p "cputype LIKE 'AMD%'"</code> <code class="command">-l host=3,walltime=2</code> <code>-I</code>}}
{{Term|location=frennes|cmd=<code class="command">oarsub</code> <code class="replace">-p "cputype LIKE 'AMD%'"</code> <code class="command">-l host=3,walltime=2</code> <code>-I</code>}}


The OAR properties available on each site are listed on the Monika pages linked from [[Status]] ([https://intranet.grid5000.fr/oar/Nancy/monika.cgi example page for Nancy]). The full list of OAR properties is available on [[OAR_Properties|this page]].
The OAR properties available on each site are listed on the Monika pages linked from [[Status]] ([https://intranet.grid5000.fr/oar/Nancy/monika-prod.cgi example page for Nancy]). The full list of OAR properties is available on [[OAR_Properties|this page]].


{{Note|text=Since this is using a SQL syntax, quoting is important! Use double quotes to enclose the whole query, and single quotes to write strings within the query.}}
{{Note|text=Since this is using a SQL syntax, quoting is important! Use double quotes to enclose the whole query, and single quotes to write strings within the query.}}
=== Advanced job management topics (specific to Grid'5000) ===
; Reservations in advance
By default, <code class="command">oarsub</code> will give you resources as soon as possible: once submitted, your request enters a queue. This is good for non-interactive work (when you do not care when exactly it will be scheduled), or when you know that the resources are available immediately.
You can also reserve resources at a specific time in the future, typically to perform large reservations over nights and week-ends, with the <code class="command">-r</code> parameter:
{{Term|location=fnancy|cmd=<code class="command">oarsub</code><code> -l host=3,walltime=3 </code><code class="command">'''-r'''</code><code> '2020-12-23 16:30:00'</code>}}
{{Note|text=Remember that '''all your resource reservations must comply with the [[Grid5000:UsagePolicy#Resources_reservation|Usage Policy]]'''. You can verify your reservations' compliance with the Policy with <code>usagepolicycheck -t</code>.}}
; Extending the duration of a reservation
Provided that the resources are still available after your job, you can extend its duration (walltime) using e.g.:
{{Term|location=fnancy|cmd=<code class="command">oarwalltime</code> <code class="replace">12345</code> <code class="replace">+1:30</code>}}
This will request to add one hour and a half to job 12345.
For more details, see the oarwalltime section of the [[Advanced_OAR#Changing_the_walltime_of_a_running_job_.28oarwalltime.29|Advanced OAR]] tutorial.


== Using nodes in the default environment ==
== Using nodes in the default environment ==


When you run <code class="command">oarsub</code>, you gain access to physical nodes with a default (''standard'') software environment. This is a Debian-based system that is regularly updated by the [[Support|technical team]]. It contains many pre-installed software.
=== Debian std environment ===
 
=== Environment module  ===
 
* `module avail` : list all available modules
* `module load module_name` : load `module_name` and its dependencies
* `module list` : list all loaded modules
* `module purge` : reset all loaded module
 
fgrenoble:~$ oarsub -I
node:~$ python --version
node:~$ module load python/3.8.12_gcc-10.2.0
node:~$ python --version
 
See https://www.grid5000.fr/w/Modules
 
=== Guix ===
 
Guix is available on frontends and nodes (using standard or deployed ''-nfs'' and ''-big'' environments) directly through the <code>guix</code> command.
For example:
 
  $ guix install hello
 
See https://www.grid5000.fr/w/Guix
 
=== Docker ===
 
* To use docker:
 
fgrenoble:~$ oarsub -I
node:~$ g5k-setup-docker
node:~$ docker run hello-world
 
* To use GPU from Docker container using NVIDIA Container Toolkit, use `g5k-setup-nvidia-docker`  instead of `g5k-setup-dock`.


=== Singularity ===
When you run <code class="command">oarsub</code>, you gain access to physical nodes with a default (''standard'') software environment. This is a Debian-based system that is regularly updated by the technical team. It contains many pre-installed software.


* To use Singularity:
The debian std (e.g. debian11-std) environments are the environments used on nodes by default, providing services such as oar-node as well as custom settings that are necessary for the default system but are useless for user-deployed nodes.
fgrenoble:~$ oarsub -I
node:~$ singularity run docker://hello-world


* To use GPU with Singularity:
=== Getting access to the software you need ===
fnancy:~$ oarsub -q production -I -l gpu=1
node:~$ singularity run --nv docker://tensorflow/tensorflow:latest-gpu


=== Conda ===
There are several options to get access to software :
 
* Many software packages are already installed and directly accessible: Git, editors, GCC, Python, Pip, Ruby, Java, ...
 
* Some software (mostly scientific software, such as MatLab) is available through [[Modules|modules]]. For a list, use <code class="command">module avail</code>. Documentation (including how to access license tokens) is available in the [[Modules]] page.
* Load conda module and activate bash completion
* If the software you need is not available through the above options, you can:
 
** Install it manually in your home directory
{{Term|location=fgrenoble|cmd=<code class="command">module load coda</code>}}
** Get root access on your node using the [[sudo-g5k]] command, and then customize the operating system. The node will be reinstalled at the end of your resource reservation, so that it is in a clean state for the next user. It is thus best to avoid running [[sudo-g5k]] in very short jobs, as this has a cost for the platform (see below).
{{Term|location=fgrenoble|cmd=<code class="command">eval "$(conda shell.bash hook)"</code>}}
** Install it using a user-level package manager, such as [[Guix|Guix]] (especially suitable for HPC software) and [[Conda]] (especially suitable for AI software)
 
** Install it using container technology, with [[Docker]] or [[Singularity|Singularity/Apptainer]]
* Create an environment
** Re-install the node using a custom image with Kadeploy, as described in the following section
{{Term|location=fgrenoble|cmd=<code class="command">conda create -y -n tensorflow</code>}}
** Engage in a discussion with the [[Support|support team]] to see if the software you need could be added to the software available by default
 
* Load this environment
{{Term|location=fgrenoble|cmd=<code class="command">conda activate tensorflow</code>}}
 
* Install tensorflow package
{{Term|location=fgrenoble|cmd=<code class="command">conda install -c conda-forge tensorflow-gpu</code>}}
 
See https://www.grid5000.fr/w/Conda


=== Becoming root with sudo-g5k ===
=== Becoming root with sudo-g5k ===


On HPC clusters, users typically don't have root access.  However, Grid'5000 allows more flexibility: if you need to install additional system packages or to customize the system, it is possible to become root.  The tool to do this is called [[sudo-g5k]].
On HPC clusters, users typically don't have root access.  However, Abaca allows more flexibility: if you need to install additional system packages or to customize the system, it is possible to become root.  The tool to do this is called [[sudo-g5k]].


{{Note|text=Using [[sudo-g5k]] has a cost for the platform: at the end of your job, the node needs to be completely reinstalled so that it is clean for the next user. It is best to avoid running [[sudo-g5k]] in very short jobs.}}
{{Note|text=Using [[sudo-g5k]] has a cost for the platform: at the end of your job, the node needs to be completely reinstalled so that it is clean for the next user. It is best to avoid running [[sudo-g5k]] in very short jobs.}}
{{Note|text=Using [[sudo-g5k]] only work on full nodes, not partially reserved ones.}}


 
== (Optional) Deploying your nodes to get root access and create your own experimental environment ==
=== Additional storage ===
 
{| class="wikitable"
|-
! Storage Resource !! Backups? !! Protocol used !! Persistence period !! Provisioning mechanism !! Network connectivity
|-
| [[#.2Fhome|/home]] || No || NFS || long-term || Quota + User Acct mgmt || Variable (1Gb/s - 10 Gb/s)
|-
| [[#Group Storage|Group Storage]] || No || NFS || long-term || Manual || Variable (1Gb/s - 10 Gb/s)
|-
| [[#On_node_local_disks_reservation|On node local disks reservation]] || No || - || medium-term || OAR || -
|-
| /tmp || No || - || short-term (job) || OAR job || -
|-
| [[#Local_disks|Local disks]] || No || - || short-term (job) || OAR job || -
|}
 
More information on storage is available [[Storage|here]].
 
==== Home directory ====
 
The home directory is a network filesystem (NFS): data in your home directory is not actually stored on the node itself, it is stored on a storage server managed by the Grid'5000 team. In particular, it means that all reserved nodes share the same home directory, and it is also shared with the site frontend. For example, you can compile or install software in your home (possibly using pip, virtualenv), and it will be usable on all your nodes.
 
{{Note|text=The home directory is only shared within a site. Two nodes from different sites will not have access to the same home.}}
 
==== Group storage ====
 
This service provides large storage spaces, possibly shared between multiple Grid'5000 users. Those storage spaces are accessible on Grid'5000 over NFS.
 
For instance:
{{Term|location=fnancy|cmd=<code class="command">cd /srv/storage/igrida@storage1.rennes.grid5000.fr</code>}}
 
; Production queue in Nancy
 
The data needed for experiments of the production teams is stored on:
* talc-data (3 volumes - talc, talc2 and talc3 - respectively providing 58T + 58T + 71T = 187T of storage space) is a storage server dedicated to the multispeech research team, but compatible with the Group Storage mechanisms.
* talc-data2 (213T of storage space) is a regular [[Group Storage]] server, and talc-data
 
Please remember that those data are hosted on a NFS server that is not recommended for compute usage.
 
==== Local storage ====
 
Some nodes have additional local disks, see [[Hardware#Storage]] for a list of available disks for each cluster.
 
There are two ways to access these local disks:
 
# On some clusters, '''local disks need to be reserved''' to be accessible. See [[Disk_reservation|Disk reservation]] for a list of these clusters and for documentation on the reservation process.
# On other clusters, '''local disks can be used directly'''. In this case, jump directly to [[Disk_reservation#Using_local_disks_once_connected_on_the_nodes|Using local disks]].
 
In both cases, the disks are simply provided as raw devices, and it is the responsibility of the user to partition them and create a filesystem. Note that there may still be partitions and filesystems present from a previous job.
 
==== /tmp ====
 
The <code class="file">/tmp/</code> directory is stored on a local disk of the node.  Use this directory if you need to access data locally.
The size of /tmp is different from to node to node. It is equal to the total size of the (first) local disk minus 75 GB (which is reserved for the operating system).
 
== Deploying your nodes to get root access and create your own experimental environment ==


{{Note|text=There is a tool, called <code class="command">sudo-g5k</code> (see the [[sudo-g5k]] page for details), that provides root access on the ''standard'' environment. It does not allow deep reconfiguration as Kadeploy does, but could be enough if you just need to install additional software, with e.g. <code class="command">sudo-g5k</code><code> apt-get install your-favorite-editor</code>. The node will be transparently reinstalled using Kadeploy after your reservation. Usage of <code class="command">sudo-g5k</code> is logged.}}
{{Note|text=There is a tool, called <code class="command">sudo-g5k</code> (see the [[sudo-g5k]] page for details), that provides root access on the ''standard'' environment. It does not allow deep reconfiguration as Kadeploy does, but could be enough if you just need to install additional software, with e.g. <code class="command">sudo-g5k</code><code> apt-get install your-favorite-editor</code>. The node will be transparently reinstalled using Kadeploy after your reservation. Usage of <code class="command">sudo-g5k</code> is logged.}}
Line 535: Line 548:


The Grid'5000 reference environments are build from recipes using the '''<code class="command">kameleon</code>''' tool from recipes detailing the whole construction process, and updated on a regular basis (see versions). See the [[Environment creation]] page for details.
The Grid'5000 reference environments are build from recipes using the '''<code class="command">kameleon</code>''' tool from recipes detailing the whole construction process, and updated on a regular basis (see versions). See the [[Environment creation]] page for details.
== Using efficiently Grid'5000 ==
Until now you have been logging, and submitting jobs manually to Grid'5000. This way of doing is convenient for learning, prototyping, and exploring ideas. But it may quickly become tedious when it comes to performing a set of experiments on a daily basis. In order to be more efficient and user-friendly, Grid'5000 also support more convenient ways of submitting jobs, such as [[API|API requests]] and [[Notebooks|computational notebooks]].
=== Notebooks ===
Grid'5000 also supports Jupyter notebooks and Jupyter lab servers.
Jupyter lab servers provide you with a simple web interface to submit jobs on Grid'5000 and run python Notebooks.
Using notebooks will allow you to track your experiment evolution during your exploratory phase while scripting part of your process.
You can find more information about Jupyter Lab and python notebooks on the '''[[Notebooks]]''' page.
=== Scripting libraries ===
Several scripting libraries built on top of the Grid'5000 API is available:
* '''[http://execo.gforge.inria.fr/doc/latest-stable/index.html Execo]''' offers a Python API for asynchronous control of local or remote, standalone or parallel, unix processes. It is especially well suited for quickly and easily scripting workflows of parallel/distributed operations on local or remote hosts: automate a scientific workflow, conduct computer science experiments, perform automated tests, etc. The core python package is execo. The execo_g5k package provides a set of tools and extensions for the Grid5000 testbed. The execo_engine package provides tools to ease the development of computer sciences experiments.
* '''[https://github.com/ruby-cute/ruby-cute Ruby-Cute]''' is a set of Commonly Used Tools for Experiments, or Critically Useful Tools for Experiments, depending on who you ask. It is a library aggregating various Ruby snippets useful in the context of (but not limited to) development of experiment software on distributed systems testbeds such as Grid'5000. Ruby-Cute is structured in different modules. G5K module allows you to communicate with Grid'5000. Net::SSH::Multi module allows the parallel execution of commands in several remote machines using the SSH protocol. TakTuk module is a wrapper of taktuk parallel command executor.
* '''[[Funk]]''' helps you to find resources for your experiments, by:
** giving you the number of nodes available at a date and for walltime
** finding the slots for a combination of resources and a walltime
** finding the slot with the maximum number of nodes for a period and a walltime
** managing the reservation of the resources
* '''[https://discovery.gitlabpages.inria.fr/enoslib/ EnOSlib]''' is a python library that mutualizes common experiment practices especially when dealing with distributed applications deployments. EnOSlib uses different providers to get resources from an infrastructure. For instance, on Grid'5000 one can easily get a physical environment (non-deploy job/deploy job with or without multiple NICs configured) or a virtualized environment (e.g based on kvm virtual machines). Resources are configured using safe parallel actions (based on Ansible Modules) or using on-the-shelf packaged applications (e.g a monitoring stack, a distributed network packets sniffer). 
* '''[https://jobqueue.dask.org/en/latest/index.html Dask-jobqueue]''' is a Python library which makes it easy to deploy Dask on common job queuing systems typically found in high performance supercomputers, academic research institutions, and other clusters. It can be used to facilite the passage between different resource managers, based on OAR and Slurm for example.


== Going further ==
== Going further ==
In this tutorial, you learned the basics of Grid'5000:
In this tutorial, you learned the basics of Abaca:
* The general structure of Grid'5000, and how to move between sites
* The general structure,
* How to connect and move between sites
* How to manage you data (one NFS server per site; remember: it is not backed up)
* How to manage you data (one NFS server per site; remember: it is not backed up)
* How to find and reserve resources using OAR and the <code class="command">oarsub</code> command
* How to find and reserve resources  
* How to submit job using OAR and the <code class="command">oarsub</code> command
* How to get root access on nodes using Kadeploy and the <code class="command">kadeploy3</code> command
* How to get root access on nodes using Kadeploy and the <code class="command">kadeploy3</code> command


You should now be ready to use Grid'5000.
You should now be ready to use Abaca.
 
There are '''many more tutorials available on the [[Users Home]] page'''. Please have a look at the page to continue learning how to use Abaca at :


=== Additional tutorials ===
Most are useful for Grid'5000 experimental usage. Those to be considered for Abaca production usage are :
There are '''many more tutorials available on the [[Users Home]] page'''. Please have a look at the page to continue learning how to use Grid'5000.
* Tools to setup software environment: [[sudo-g5k]] • [[Modules]] • [[Conda]] • [[Guix]] • [[Docker]] • [[Singularity]]

Latest revision as of 18:51, 5 February 2025

Note.png Note

This page is actively maintained by the Grid'5000 team. If you encounter problems, please report them (see the Support page). Additionally, as it is a wiki page, you are free to make minor corrections yourself if needed. If you would like to suggest a more fundamental change, please contact the Grid'5000 team.

Note.png Note

2025-01-30 - A specific documentation Web site for Abaca will go live shortly. In the meantime, specific pages for “Production” use are hosted in the Grid'5000 documentation.

This tutorial will guide you through your first steps on Abaca. Before proceeding, make sure you have a Abaca/Grid'5000 account (if not, follow this procedure), and an SSH client.

Getting support

Note.png Note

Abaca's network and server infrastructure is currently shared with Grid'5000. Support is coordinated by the Abaca and Grid'5000 teams.

The Support page describes how to get help during your Production (Abaca) usage (common with Grid'5000 usage)

There's also an Production:FAQ page with the most common question related to Production usage.

Before asking for support check if there is an ongoing maintenance or outage:

Abaca general structure

Note.png Note

Abaca is the name of Inria's national computing infrastructure dedicated to production applications.

Abaca is built using the Grid'5000 platform infrastructure.
Abaca clusters are hosted on Inria sites alongside clusters dedicated to the Grid'5000 platform. Abaca and Grid'5000 use the same technical management tools, and the Abaca and Grid'5000 support teams work together to administer both platforms.

In this document, “Production” refers to the use of the Abaca platform.

Abaca provides access to a large-scale computing nodes distributed in serveral sites.

The primary way to move around Abaca (and Grid'5000) is using SSH.

As described in the figure below, when using Abaca, you will typically:

  1. connect, using SSH, to an access machine
  2. connect from this access machine to a site frontend
  3. on this site frontend, reserve resources (nodes), and connect to those nodes

The access.grid5000.fr SSH gateway is located in a DMZ network located at the Lille site.

This SSH gateway allows you to jump to the various Abaca and Grid'5000 sites.

Grid5000 Access

Connecting for the first time

You must first obtain your account on the Abaca platform: Production#Getting_an_account

  • NB: does not concern users from clusters migrated to Abaca (Sophia-Nef, Grenoble...), their account will be initialized by the Abaca technical team (they will receive an e-mail notification).

The primary way to move around Abaca is using SSH. A reference page for SSH is also maintained with advanced configuration options that frequent users will find useful.

Typically you will :

  1. connect, using SSH, to an access machine
  2. connect from this access machine to a site frontend
  3. on this site frontend, reserve resources (nodes), and connect to those nodes

Connect to Abaca access machine

To enter the Abaca network, one must use an access machine: access.grid5000.fr (Note that access.grid5000.fr is an alias to access-north which is currently hosted in Lille, or exceptionally to access-south currently hosted in Sophia Antipolis) when access-north is unavailable (maintenance or outage).

For all connections, you must use the login that was provided to you when you created your Abaca/Grid'5000 account.

Terminal.png outside:
ssh login@access.grid5000.fr

You will get authenticated using the SSH public key you provided in the account creation form. Password authentication is disabled.

Connecting to a site

Abaca is structured in sites (Grenoble, Nancy, Rennes, Sophia...). Each site hosts one or more clusters (homogeneous sets of machines, usually bought at the same time).

To connect to a particular site, do the following

Terminal.png access:
ssh site
Home directories

You have a different home directory on each Abaca site, so you will usually use Rsync or scp to move data around. On access machines, you have direct access to each of those home directories, through NFS mounts (but using that feature to transfer very large volumes of data is inefficient). Typically, to copy a file to your home directory on the Nancy site, you can use:

Terminal.png outside:
scp myfile.c login@access.grid5000.fr:nancy/targetdirectory/mytargetfile.c

Abaca does NOT have a BACKUP service for users' home directories: it is your responsibility to save important data in someplace outside Abaca (or at least to copy data to several Abaca sites in order to increase redundancy).

Quotas are applied on home directories -- by default, you get 25 GB per site. If your usage requires more disk space, it is possible to request quota extensions in the account management interface, or to use other storage solutions (see Storage).

SSH configuration

  • Configure SSH aliases using the ProxyCommand option. Using this, you can avoid the two-hops connection (access machine, then frontend) but establish connections directly to frontends. This requires using OpenSSH, which is the SSH software available on all GNU/Linux systems, MacOS, and also recent versions of Microsoft Windows.
Terminal.png outside:
editor ~/.ssh/config
Host g5k
  User login
  Hostname access.grid5000.fr
  ForwardAgent no

Host *.g5k
  User login
  ProxyCommand ssh g5k -W "$(basename %h .g5k):%p"
  ForwardAgent no

Reminder: login is your Grid'5000 username

Once done, you can establish connections to any machine (first of all: frontends) inside Grid'5000 directly, by suffixing .g5k to its hostname (instead of first having to connect to an access machine). E.g.:

Terminal.png outside:
ssh rennes.g5k
Terminal.png outside:
scp a_file lille.g5k:


VPN access

A VPN service is also available, allowing to connect directly to any Abaca machines (bypassing the access machines). See the VPN page for more information.

Managing data

Once you have logged on to Abaca and started your calculations, you need to transfer your data and store them on the platform.

The following table summaries the comparison of different storage resources that are available on Abaca - persistent or non-persistent types:

Storage Resource Backups? Protocol used Persistence period Provisioning mechanism Network connectivity
/home No NFS long-term Quota + User Acct mgmt Variable (1Gb/s - 10 Gb/s - 25 Gb/s)
Group Storage No NFS long-term Manual Variable (1Gb/s - 10 Gb/s - 25 Gb/s)
/tmp No - short-term (job) OAR job -
Note.png Note

Abaca Network is not directly connected to Inria internal servers. You need to use local SSH gateway to access them from Abaca frontend and nodes.If you need to regularly transfer data, it is highly recommanded to configure the SSH client on each Grid'5000 frontends.

Note.png Note

Remember that Abaca does NOT have a BACKUP service for its storage resources: it is your responsibility to save important data in someplace outside Abaca (or at least to copy data to several Abaca sites in order to increase redundancy).


Home directories

This is the principal storage space when logged-in on a Abaca site: site:/home/username.

The home directory is a network filesystem (NFS): data in your home directory is not actually stored on the node itself, it is stored on a storage server managed by the Abaca team. In particular, it means that all reserved nodes share the same home directory, and it is also shared with the site frontend. For example, you can compile or install software in your home (possibly using pip, virtualenv), and it will be usable on all your nodes.

The home directory is only shared within a site. Two nodes from different sites will not have access to the same home.

In term of storage size

Each user has a default quota of 25GB of storage on each site (soft limit), with a reserve of 100GB (hard limit).

  • the soft limit is set to what the admins find a reasonable limit for an account on a more or less permanent basis. You can use more disk space temporarily, but you should not try and trick the system to keep that data on the shared file system.
  • the hard limit is set so as to preserve usability for other users if one of your scripts produces unexpected amounts of data. You'll not be able to override that limit.

We have a limitation of 200GB per home dir, above that threshold you should consider asking for a group storage instead, preferably at the team level since it will be usable/shareable by all of your team mates. If your team does not have yet a group storage, talk about this to your Group manager.

Should you need higher quotas, please visit your user account settings page at https://api.grid5000.fr/ui/account (homedir quotas tab) at fill a request.

In term of files number

Each user has a default inodes hard quota of 10 million. This means that users aren't able to store more than 10 million files on their home.

Information on your current inode usage on a site can be obtained with the following command launched on the site's frontend:

Terminal.png frontend:
quota

Group Storage

This service provides large storage spaces, possibly shared between multiple users (members of a research team or a laboratory or a specific project...). Those storage spaces are accessible on Abaca over NFS from all sites.

For instance, to access the "linkmedia" storage located on storage2 server located at Rennes from Nancy frontend:

Terminal.png fnancy:
cd /srv/storage/linkmedia@storage2.rennes.grid5000.fr

Please remember that those data are hosted on a NFS server that is not recommended for compute usage.

/tmp

The /tmp/ directory is stored on a local disk of the node. Use this directory if you need to access data locally. The size of /tmp is different from to node to node. It is equal to the total size of the (first) local disk minus 75 GB (which is reserved for the operating system).

How to put and retrieve your data

You have a different home directory on each Abaca site, so you will usually use Rsync to move data around. On access machines, you have direct access to each of those home directories, through NFS mounts (but using that feature to transfer very large volumes of data is inefficient). Typically, to copy a file to your home directory on the Nancy site, you can use:

Terminal.png outside:
rsync -avuP myfile.c login@access.grid5000.fr:nancy/targetdirectory/mytargetfile.c

We recommand to use rsync instead of scp for better performance with multiple files.

For a better bandwidth or latency, you may also be able to connect directly via the local access machine of one of the Abaca 5000 sites. Local accesses use access.site.grid5000.fr instead of access.grid5000.fr. However, mind that per-site access restrictions are applied: see External access for details about local access machines.

other methods
  • Access your data from your laptop using SSHFS
  • Vscode usage is permitted with the following recommendations:
    • Restrict the workspace to the folder containing your code and not the whole remote homedir or group storage
    • Use an updated version of vscode remote extension (including memory leak bug fix)
    • Prefer sshfs access to your remote data
  • Edit files over SSH with your favorite text editor, with e.g.:
Terminal.png outside:
vim scp://nancy.g5k/my_file.c

Discovering, visualizing and using resources

At this point, you are connected to Abaca and have transferred your data. You are now ready to use the platform's computing resources.

Exploring resources

There are several ways to learn about the site's resources and their status.

Resources Explorer
MOTD
  • The site's MOTD (message of the day) on frontend lists all clusters and their features. Additionally, it gives the list of current or future downtimes due to maintenance.


Site's resources availability (OAR) status

Drawgantt (past, current and future OAR jobs scheduling)

Grenoble nodes (production)

Nancy nodes (production)

Rennes nodes (production)

Sophia nodes (production)

Monika (current placement and queued jobs status)

Grenoble (production)

Nancy (production)

Rennes (production)

Sophia (production)

Using resources

Each job (resource reservation) is assigned a priority level (from P1 - maximum - to P4) according to the resources requested, and the user's affiliation group to which the user belongs.

The job queue is sorted according to job priority: a job with priority P1 will always run before a job with priority P2, even if job P2 entered the queue first. On the other hand, lower-priority jobs are not interrupted if a higher-priority job is submitted (if a P2 job has already started, it is not interrupted when the P1 job enters the queue).

These levels P1 to P4 also define the maximum duration of jobs, the possibility (or otherwise) of reserving resources in advance (on a calendar basis), and the possibility of extending jobs.

On certain resources, certain groups of users may be restricted to using the use of “best-effort” jobs (“pre-emptible” jobs). These jobs are automatically stopped when a higher-priority job requires the resources in question.

Finally, on some resources, certain groups may have no access at all.

Queue Priority Max walltime Reservations in advance Extension of job duration
P1 168h (seven days) yes yes
P2 96h (four days) no no
P3 48h (two days) no no
P4 24h (one day) no no
besteffort N/A no no


You can check your priority level for any cluster using the Resource explorer Browse page

Moreover, with p1 priority, user can submit advanced reservation. More information about that in the Advanced OAR Page. For example, to reserve one week from now:

Terminal.png fnancy:
oarsub -q p1 -r "$(date +'%F %T' --date='+1 week')"

p1 priority level also allow to extend the duration of a job. The extension is only apply 24h before the end of the job and cannot be longer than 168h. More information about this feature can be found also on the Advance Oar Page.


Warning.png Warning

These limits DO NOT replace the maximum walltime per node which are still in effects.


When submitting a job, by default, you will be placed at the highest priority level that allows you to maximize resources:

Terminal.png fnancy:
oarsub -q production -I

Using the command above will generally place your job at the lowest priority to allow usage of all clusters, even those where your priority is p4.

When you specify a cluster, your job will be set to your highest priority level for that cluster:

Terminal.png fnancy:
oarsub -q production -p grele -I

You can also limit a job submission to a cluster at a specific priority level using -qPRIORITY LEVEL:

Terminal.png fnancy:
oarsub -q p2 -l nodes=2,walltime=90 './yourScript.py'

Exclusive use of team-funded resources

For team-funded resources, the resources are either shared with a higher higher priority for the team (SHARED), or exclusive to the team and only accessible on a “best-effort” basis by others (EXCLUSIVE).

  • /!\ best-effort jobs can be preempted by other jobs with higher priority


Teams decide for themselves which access mode to use, which can evolve over time, with a maximum total duration of 5 years in EXCLUSIVE mode, which the team can spread out as it sees fit.
This enables the funding team to ensure that the resources will always be available for its users during periods of heavy use, while still allowing a high degree of sharing with other other teams outside these periods.

Submitting jobs with OAR

Interactive usage

To reserve a single host (one node) for one hour, in interactive mode, do:

Terminal.png fnancy:
oarsub -I

As soon as the resource becomes available, you will be directly connected to the reserved resource with an interactive shell, as indicated by the shell prompt, and you can run commands on the node:

Terminal.png grisou-1:
lscpu

Reserving only part of a node

To reserve only one CPU core in interactive mode, run:

Terminal.png fnancy:
oarsub -l core=1 -I
Note.png Note

When reserving only a share of the node's cores, you will have a share of the memory with the same ratio as the cores. If you take the whole node, you will have all the memory of the node. If you take half the cores, you will have half the memory, and so on... You cannot reserve a memory size explicitly.


OAR properties usage

You can select ressources with specific hardware properties: cpu, memory, gpu model...

FIXME : mettre quelques exemples

Properties list can be found on OAR Properties and OAR_Syntax_simplification.

Non-interactive usage (scripts)

You can also simply launch your experiment along with your reservation:

Terminal.png fnancy:
oarsub -l host=1/core=1 "my_mono_threaded_script.py --in $HOME/data --out $HOME/results"

Your program will be executed as soon as the requested resources are available. As this type of job is not interactive, you will have to check for its termination using the oarstat command.

Batch job using OAR scripts

Similarly to what it is the standard use for batch scheduler (e.g. SLURM), a good practice is to use a script that include the OAR directives to define the resource submission. Here is a simple example of such script that select a GPU with specific characteristics.

Properties list can be found on OAR Properties and OAR_Syntax_simplification.

#!/bin/bash 

#OAR -q production 
#OAR -l host=1/gpu=1
#OAR -l walltime=3:00:00
#OAR -p gpu-16GB AND gpu_compute_capability_major>=5
#OAR -O OAR_%jobid%.out
#OAR -E OAR_%jobid%.err 

# display some information about attributed resources
hostname 
nvidia-smi 
 
# make use of a python torch environment
module load conda
conda activate pytorch_env
python3 -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))";

The script must be executable

Terminal.png frennes:
chmod u+x ./my_script_oar.sh

and can be called from frontend using

Terminal.png frennes:
oarsub -S ./my_script_oar.sh

and will start when resources will be available.

Change default job specifications

In Abaca the smallest unit of resource managed by OAR is the core (cpu core), but by default a OAR job reserves a host (physical computer including all its cpus and cores, and possibly gpus). Hence, what OAR calls nodes are hosts (physical machines). In the oarsub resource request (-l arguments), nodes is an alias for host, so both are equivalent. But prefer using host for consistency with other argumnents and other tools that expose host not nodes.

Other types of resources

To reserve only one GPU (with the associated CPU cores and share of memory) in interactive mode, run:

Terminal.png frennes:
oarsub -l gpu=1 -I
Note.png Note

Even if the node has several GPUs, this reservation will only be able to access a single one. It's a good practice if you only need one GPU: other users will be able to run jobs on the same node to access the other GPUs. Of course, if you need all GPUs of a node, you have the option to reserve the entire node which includes all its GPUs.

To reserve several GPUs and ensure they are located in a single node, make sure to specify host=1:

Terminal.png frennes:
oarsub -l host=1/gpu=2 -I
Choosing the job duration

Of course, you might want to run a job for a different duration than one hour. The -l option allows you to pass a comma-separated list of parameters specifying the needed resources for the job, and walltime is a special resource defining the duration of your job:

Terminal.png fnancy:
oarsub -l host=1/core=2,walltime=0:30 -I

The walltime is the expected duration you envision to complete your work. Its format is [hour:min:sec|hour:min|hour]. For instance:

  • walltime=5 => 5 hours
  • walltime=1:22 => 1 hour and 22 minutes
  • walltime=0:03:30 => 3 minutes and 30 seconds
Working with more than one node

You will probably want to use more than one node on a given site.

To reserve two hosts (two nodes), in interactive mode, do:

Terminal.png fnancy:
oarsub -l host=2 -I

or equivalently (nodes is an alias for host):

Terminal.png fnancy:
oarsub -l nodes=2 -I

You will obtain a shell on the first node of the reservation. It is up to you to connect to the other nodes and distribute work among them. By default, you can only connect to nodes that are part of your reservation. If you completely own the nodes within one job (or with one job per complete node), you will be able to connect those by using ssh. In the case of nodes that are not completely owned within a job (if you have reserved only a part of the nodes or by having multiple jobs on nodes) you will have to use oarsh connector to go from one node to the other. The connector supports the same options as the classical ssh command, so it can be used as a replacement for software expecting ssh.

Terminal.png gros-49:

uniq $OAR_NODEFILE # list of resources of your reservation
ssh gros-1 # try to connect a node not in the file (should work)
oarsh gros-54 # connect to the other node of your reservation (should work)

ssh gros-54 # connect to the other node of your reservation (should work)
Note.png Note

To take advantage of several nodes and distribute work between them, a good option is GNU_Parallel.

oarsh is a wrapper around ssh that enables the tracking of user jobs inside compute nodes (for example, to enforce the correct sharing of resources when two different jobs share a compute node). If your application does not support choosing a different connector, be sure to reserve nodes entirely (which is the default with oarsub) to be able to use ssh.

Selecting nodes from a specific cluster
  • Reserve nodes from a specific cluster
Terminal.png frennes:
oarsub -p roahzon5 -l host=2,walltime=2 -I
Selecting specific nodes

If you know the exact node you want to reserve, you can specify the hostname of the node you require:

Terminal.png frennes:
oarsub -p roahzon5-7 -l host=1,walltime=2 -I

If you want several specific nodes, you can use a list:

Terminal.png frennes:
oarsub -p "host IN (roahzon5-7, roahzon6-2)" -l host=2,walltime=2 -I


Using OAR properties

The OAR nodes database contains a set of properties for each node, and the -p option actually filters based on these properties:

  • Nodes with Infiniband FDR interfaces:
Terminal.png fnancy:
oarsub -p "ib=FDR" -l host=5,walltime=2 -I
  • Nodes with 2 GPUs:
Terminal.png frennes:
oarsub -p "gpu_count = 2" -l host=3,walltime=2 -I
  • Nodes with a specific CPU model:
Terminal.png frennes:
oarsub -p "cputype = 'Intel Xeon E5-2630 v4'" -l host=3,walltime=2 -I
  • Since -p accepts SQL, you can write advanced queries:
Terminal.png fnancy:
oarsub -p "wattmeter=YES AND host NOT IN (graffiti-41, graffiti-42)" -l host=5,walltime=2 -I
Terminal.png frennes:
oarsub -p "cputype LIKE 'AMD%'" -l host=3,walltime=2 -I

The OAR properties available on each site are listed on the Monika pages linked from Status (example page for Nancy). The full list of OAR properties is available on this page.

Note.png Note

Since this is using a SQL syntax, quoting is important! Use double quotes to enclose the whole query, and single quotes to write strings within the query.

Using nodes in the default environment

Debian std environment

When you run oarsub, you gain access to physical nodes with a default (standard) software environment. This is a Debian-based system that is regularly updated by the technical team. It contains many pre-installed software.

The debian std (e.g. debian11-std) environments are the environments used on nodes by default, providing services such as oar-node as well as custom settings that are necessary for the default system but are useless for user-deployed nodes.

Getting access to the software you need

There are several options to get access to software :

  • Many software packages are already installed and directly accessible: Git, editors, GCC, Python, Pip, Ruby, Java, ...
  • Some software (mostly scientific software, such as MatLab) is available through modules. For a list, use module avail. Documentation (including how to access license tokens) is available in the Modules page.
  • If the software you need is not available through the above options, you can:
    • Install it manually in your home directory
    • Get root access on your node using the sudo-g5k command, and then customize the operating system. The node will be reinstalled at the end of your resource reservation, so that it is in a clean state for the next user. It is thus best to avoid running sudo-g5k in very short jobs, as this has a cost for the platform (see below).
    • Install it using a user-level package manager, such as Guix (especially suitable for HPC software) and Conda (especially suitable for AI software)
    • Install it using container technology, with Docker or Singularity/Apptainer
    • Re-install the node using a custom image with Kadeploy, as described in the following section
    • Engage in a discussion with the support team to see if the software you need could be added to the software available by default

Becoming root with sudo-g5k

On HPC clusters, users typically don't have root access. However, Abaca allows more flexibility: if you need to install additional system packages or to customize the system, it is possible to become root. The tool to do this is called sudo-g5k.

Note.png Note

Using sudo-g5k has a cost for the platform: at the end of your job, the node needs to be completely reinstalled so that it is clean for the next user. It is best to avoid running sudo-g5k in very short jobs.

Note.png Note

Using sudo-g5k only work on full nodes, not partially reserved ones.

(Optional) Deploying your nodes to get root access and create your own experimental environment

Note.png Note

There is a tool, called sudo-g5k (see the sudo-g5k page for details), that provides root access on the standard environment. It does not allow deep reconfiguration as Kadeploy does, but could be enough if you just need to install additional software, with e.g. sudo-g5k apt-get install your-favorite-editor. The node will be transparently reinstalled using Kadeploy after your reservation. Usage of sudo-g5k is logged.

Deploying a system on nodes with Kadeploy

Reserve one node (the deploy job type is required to allow deployment with Kadeploy):

Terminal.png fnancy:
oarsub -I -l host=1,walltime=1:45 -t deploy

Start a deployment of the debian11-base environment on that node (this takes 5 to 10 minutes):

Terminal.png fnancy:
kadeploy3 debian11-base

By default, all the nodes of the reservation are deployed. Alternatively, you can use -m to specify a node (such as -m gros-42.nancy.grid5000.fr).

Kadeploy copy your SSH key from ~/.ssh/authorized_keys to the node's root account after deployment, so that you can connect without password. You may want to use another SSH key with -k (such as -k ~/custom_authorized_keys).

Finally, connect to the node as root:

Terminal.png fnancy:
ssh root@gros-42

On Grid'5000 reference environments

Grid'5000 reference environments are named accordingly to the following scheme: OSversion-architecture-variant.

  • OSversion is the OS distribution name and version, for instance debian11 (Debian 11 "Bullseye", released on 08/2021), ubuntu2004 (Ubuntu 2004 "Focal", released on 04/2020), or centos8 (Centos 8, clone of RHEL 8, released on 09/2019).
  • variant defines the set of features included in the environment, as follows:
Variant OS available Grid'5000-specific tuning
for performance
(e.g., TCP buffers for 10 GbE)
Installed tools Network storage
accessible
Hypervisor
Stantard system
utilities*
Common
utilities**
Scientific software
available via module
Packages available
via Guix
Advanced
packages***
min Debian NoStarted.png Check.png NoStarted.png NoStarted.png NoStarted.png NoStarted.png NoStarted.png NoStarted.png
Ubuntu, CentOS, etc.
base Debian Check.png Check.png Check.png NoStarted.png NoStarted.png NoStarted.png NoStarted.png NoStarted.png
nfs Debian Check.png Check.png Check.png Check.png Check.png NoStarted.png Support for:

- mounting your home, group
storage and Ceph.

- using Grid'5000 user account
on deployed nodes.

NoStarted.png
Ubuntu, CentOS, etc. NoStarted.png NoStarted.png NoStarted.png
big Debian Check.png Check.png Check.png Check.png Check.png Check.png NoStarted.png
xen Debian Check.png Check.png Check.png NoStarted.png NoStarted.png NoStarted.png NoStarted.png Xen hypervisor Dom0

+ minimal DomU

* Including SSH server and network drivers.
** Including among others: Python, Ruby, curl, git, vim, etc.
*** Packages for development, system tools, editors and shells.

The list of all supported environments is available by running kaenv3 on any frontend. Note that environments are versioned: old versions can be listed using the kaenv3 -l -s command and a former version retrieved and used by adding the --env-versionYYYYMMDDHH option to the kaenv3 or kadeploy3 commands (also see the man pages). This can be useful to reproduce experiments months or years later, using a previous version of an environment. On some sites, environments exist on different architectures (x86_64, ppc64le and aarch64). The full list can be found in the Advanced Kadeploy page.

The Grid'5000 reference environments are build from recipes using the kameleon tool from recipes detailing the whole construction process, and updated on a regular basis (see versions). See the Environment creation page for details.

Going further

In this tutorial, you learned the basics of Abaca:

  • The general structure,
  • How to connect and move between sites
  • How to manage you data (one NFS server per site; remember: it is not backed up)
  • How to find and reserve resources
  • How to submit job using OAR and the oarsub command
  • How to get root access on nodes using Kadeploy and the kadeploy3 command

You should now be ready to use Abaca.

There are many more tutorials available on the Users Home page. Please have a look at the page to continue learning how to use Abaca at :

Most are useful for Grid'5000 experimental usage. Those to be considered for Abaca production usage are :