From adc0cffe3e443e37dd9330e55565bbbd7835cdeb Mon Sep 17 00:00:00 2001 From: Jan Siwiec <jan.siwiec@vsb.cz> Date: Mon, 25 Jan 2021 08:50:50 +0100 Subject: [PATCH] Anselm removal from doc --- docs.it4i/environment-and-modules.md | 1 - docs.it4i/general/capacity-computing.md | 32 ----- .../general/job-submission-and-execution.md | 65 ++-------- .../general/resources-allocation-policy.md | 30 ++--- docs.it4i/general/shell-and-data-access.md | 32 ----- docs.it4i/img/barbora_cluster_usage.png | Bin 0 -> 60452 bytes docs.it4i/index.md | 3 +- docs.it4i/job-features.md | 4 +- docs.it4i/prace.md | 116 +----------------- .../cae/comsol/comsol-multiphysics.md | 6 +- docs.it4i/software/chemistry/gaussian.md | 22 ++-- docs.it4i/software/chemistry/molpro.md | 6 +- docs.it4i/software/debuggers/allinea-ddt.md | 12 -- docs.it4i/software/debuggers/cube.md | 2 +- .../intel-performance-counter-monitor.md | 7 +- docs.it4i/software/debuggers/introduction.md | 2 +- docs.it4i/software/debuggers/scalasca.md | 7 +- docs.it4i/software/debuggers/score-p.md | 7 +- docs.it4i/software/debuggers/total-view.md | 19 +-- docs.it4i/software/debuggers/valgrind.md | 6 - .../intel/intel-suite/intel-compilers.md | 2 +- .../intel/intel-suite/intel-debugger.md | 2 +- .../software/intel/intel-suite/intel-mkl.md | 2 +- .../software/intel/intel-suite/intel-tbb.md | 2 +- docs.it4i/software/isv_licenses.md | 39 +----- docs.it4i/software/lang/csc.md | 4 +- docs.it4i/software/lang/java.md | 2 +- .../software/machine-learning/tensorflow.md | 23 ---- docs.it4i/software/mpi/running-mpich2.md | 2 +- docs.it4i/software/mpi/running_openmpi.md | 2 +- .../software/numerical-languages/matlab.md | 9 +- .../numerical-languages/matlab_1314.md | 10 +- .../software/numerical-languages/octave.md | 6 +- docs.it4i/software/numerical-languages/r.md | 10 +- .../software/numerical-libraries/fftw.md | 2 +- docs.it4i/software/numerical-libraries/gsl.md | 11 +- .../software/numerical-libraries/hdf5.md | 2 +- .../software/numerical-libraries/petsc.md | 6 +- .../software/numerical-libraries/trilinos.md | 10 +- docs.it4i/software/nvidia-cuda.md | 4 +- docs.it4i/software/tools/ansys/ansys.md | 8 +- docs.it4i/software/tools/ansys/ls-dyna.md | 2 +- docs.it4i/software/tools/easybuild.md | 4 +- docs.it4i/software/tools/singularity-it4i.md | 20 +-- docs.it4i/software/tools/virtualization.md | 18 +-- docs.it4i/software/viz/openfoam.md | 2 +- docs.it4i/software/viz/paraview.md | 13 +- mkdocs.yml | 16 ++- snippets/resource_accounting.md | 4 +- 49 files changed, 141 insertions(+), 475 deletions(-) create mode 100644 docs.it4i/img/barbora_cluster_usage.png diff --git a/docs.it4i/environment-and-modules.md b/docs.it4i/environment-and-modules.md index 4c97af502..1a7b590b9 100644 --- a/docs.it4i/environment-and-modules.md +++ b/docs.it4i/environment-and-modules.md @@ -6,7 +6,6 @@ The table shows which shells are supported on the IT4Innovations clusters. | Cluster Name | bash | tcsh | zsh | ksh | | --------------- | ---- | ---- | --- | --- | -| Anselm Cluster | yes | yes | yes | yes | | Salomon Cluster | yes | yes | yes | yes | | Barbora Cluster | yes | yes | yes | yes | | DGX-2 Cluster | yes | no | no | no | diff --git a/docs.it4i/general/capacity-computing.md b/docs.it4i/general/capacity-computing.md index 5eb4c5d49..f5ae72e06 100644 --- a/docs.it4i/general/capacity-computing.md +++ b/docs.it4i/general/capacity-computing.md @@ -47,31 +47,6 @@ $ find . -name 'file*' > tasklist Then we create a jobscript: -#### Anselm - -```bash -#!/bin/bash -#PBS -A PROJECT_ID -#PBS -q qprod -#PBS -l select=1:ncpus=16,walltime=02:00:00 - -# change to local scratch directory -SCR=/lscratch/$PBS_JOBID -mkdir -p $SCR ; cd $SCR || exit - -# get individual tasks from tasklist with index from PBS JOB ARRAY -TASK=$(sed -n "${PBS_ARRAY_INDEX}p" $PBS_O_WORKDIR/tasklist) - -# copy input file and executable to scratch -cp $PBS_O_WORKDIR/$TASK input ; cp $PBS_O_WORKDIR/myprog.x . - -# execute the calculation -./myprog.x < input > output - -# copy output file to submit directory -cp output $PBS_O_WORKDIR/$TASK.out -``` - #### Salomon ```bash @@ -105,13 +80,6 @@ If running a huge number of parallel multicore (in means of multinode multithrea To submit the job array, use the `qsub -J` command. The 900 jobs of the [example above][5] may be submitted like this: -#### Anselm - -```console -$ qsub -N JOBNAME -J 1-900 jobscript -12345[].dm2 -``` - #### Salomon ```console diff --git a/docs.it4i/general/job-submission-and-execution.md b/docs.it4i/general/job-submission-and-execution.md index 3b31dde75..bc436a2aa 100644 --- a/docs.it4i/general/job-submission-and-execution.md +++ b/docs.it4i/general/job-submission-and-execution.md @@ -19,39 +19,34 @@ $ qsub -A Project_ID -q queue -l select=x:ncpus=y,walltime=[[hh:]mm:]ss[.ms] job The qsub command submits the job to the queue, i.e. the qsub command creates a request to the PBS Job manager for allocation of specified resources. The resources will be allocated when available, subject to the above described policies and constraints. **After the resources are allocated, the jobscript or interactive shell is executed on the first of the allocated nodes.** -!!! note - PBS statement nodes (qsub -l nodes=nodespec) are not supported on Anselm. - ### Job Submission Examples !!! note - Anselm: ncpus=16\ - Salomon: ncpus=24\ Barbora: ncpus=36, or ncpus=24 for accelerate node ```console -$ qsub -A OPEN-0-0 -q qprod -l select=64:ncpus=16,walltime=03:00:00 ./myjob +$ qsub -A OPEN-0-0 -q qprod -l select=64:ncpus=24,walltime=03:00:00 ./myjob ``` -In this example, we allocate 64 nodes, 16 cores per node, for 3 hours. We allocate these resources via the qprod queue, consumed resources will be accounted to the Project identified by Project ID OPEN-0-0. The jobscript 'myjob' will be executed on the first node in the allocation. +In this example, we allocate 64 nodes, 24 cores per node, for 3 hours. We allocate these resources via the qprod queue, consumed resources will be accounted to the Project identified by Project ID OPEN-0-0. The jobscript 'myjob' will be executed on the first node in the allocation. ```console -$ qsub -q qexp -l select=4:ncpus=16 -I +$ qsub -q qexp -l select=4:ncpus=24 -I ``` -In this example, we allocate 4 nodes, 16 cores per node, for 1 hour. We allocate these resources via the qexp queue. The resources will be available interactively. +In this example, we allocate 4 nodes, 24 cores per node, for 1 hour. We allocate these resources via the qexp queue. The resources will be available interactively. ```console -$ qsub -A OPEN-0-0 -q qnvidia -l select=10:ncpus=16 ./myjob +$ qsub -A OPEN-0-0 -q qnvidia -l select=10:ncpus=24 ./myjob ``` -In this example, we allocate 10 NVIDIA accelerated nodes, 16 cores per node, for 24 hours. We allocate these resources via the qnvidia queue. The jobscript 'myjob' will be executed on the first node in the allocation. +In this example, we allocate 10 NVIDIA accelerated nodes, 24 cores per node, for 24 hours. We allocate these resources via the qnvidia queue. The jobscript 'myjob' will be executed on the first node in the allocation. ```console -$ qsub -A OPEN-0-0 -q qfree -l select=10:ncpus=16 ./myjob +$ qsub -A OPEN-0-0 -q qfree -l select=10:ncpus=24 ./myjob ``` -In this example, we allocate 10 nodes, 16 cores per node, for 12 hours. We allocate these resources via the qfree queue. It is not required that the project OPEN-0-0 has any available resources left. Consumed resources are still accounted for. The jobscript myjob will be executed on the first node in the allocation. +In this example, we allocate 10 nodes, 24 cores per node, for 12 hours. We allocate these resources via the qfree queue. It is not required that the project OPEN-0-0 has any available resources left. Consumed resources are still accounted for. The jobscript myjob will be executed on the first node in the allocation. All qsub options may be [saved directly into the jobscript][1]. In such cases, it is not necessary to specify any options for qsub. @@ -156,48 +151,11 @@ $ qsub -m n Specific nodes may be allocated via PBS: -```console -$ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16:host=cn171+1:ncpus=16:host=cn172 -I -``` - ```console $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=24:host=r24u35n680+1:ncpus=24:host=r24u36n681 -I ``` -In the first example, we allocate on Anselm nodes cn171 and cn172, all 16 cores per node, for 24 hours. Consumed resources will be accounted to the Project identified by Project ID OPEN-0-0. The resources will be available interactively. - -The second example shows similar job placement for Salomon. - -### Anselm - Placement by CPU Type - -Nodes equipped with an Intel Xeon E5-2665 CPU have a base clock frequency of 2.4GHz; nodes equipped with an Intel Xeon E5-2470 CPU have a base frequency of 2.3 GHz (for details, see the Compute Nodes section). Nodes may be selected via the PBS resource attribute `cpu_freq`. - -#### Anselm - -| CPU Type | base freq. | Nodes | cpu_freq attribute | -| ------------------ | ---------- | ---------------------- | ------------------ | -| Intel Xeon E5-2665 | 2.4GHz | cn[1-180], cn[208-209] | 24 | -| Intel Xeon E5-2470 | 2.3GHz | cn[181-207] | 23 | - -```console -$ qsub -A OPEN-0-0 -q qprod -l select=4:ncpus=16:cpu_freq=24 -I -``` - -In this example, we allocate 4 nodes, 16 cores per node, selecting only the nodes with the Intel Xeon E5-2665 CPU. - -### Anselm - Placement by IB Switch - -Groups of computational nodes are connected to chassis integrated InfiniBand switches. These switches form the leaf switch layer of the [Infiniband network][3] fat tree topology. Nodes sharing the leaf switch can communicate most efficiently. Sharing the same switch prevents hops in the network and facilitates unbiased, highly efficient network communication. - -Nodes sharing the same switch may be selected via the PBS resource attribute `ibswitch`. Values of this attribute are `iswXX`, where `XX` is the switch number. The node-switch mapping can be seen in the [Hardware Overview][4] section. - -We recommend allocating compute nodes to a single switch when best possible computational network performance is required to run the job efficiently: - -```console -$ qsub -A OPEN-0-0 -q qprod -l select=18:ncpus=16:ibswitch=isw11 ./myjob -``` - -In this example, we request all of the 18 nodes sharing the isw11 switch for 24 hours. A full chassis will be allocated. +In this example, we allocate on Salomon nodes r24u35n680 and r24u36n681, all 24 cores per node, for 24 hours. Consumed resources will be accounted to the Project identified by Project ID OPEN-0-0. The resources will be available interactively. ### Salomon - Placement by Network Location @@ -610,10 +568,9 @@ Further jobscript examples may be found in the software section and the [Capacit [1]: #example-jobscript-for-mpi-calculation-with-preloaded-inputs [2]: resources-allocation-policy.md -[3]: ../anselm/network.md -[4]: ../anselm/hardware-overview.md +[3]: ../salomon/network.md [5]: ../salomon/7d-enhanced-hypercube.md -[6]: ../anselm/storage.md +[6]: ../salomon/storage.md [7]: ../software/mpi/running_openmpi.md [8]: ../software/mpi/running-mpich2.md [9]: capacity-computing.md diff --git a/docs.it4i/general/resources-allocation-policy.md b/docs.it4i/general/resources-allocation-policy.md index 1adf4793e..c90ff3bb7 100644 --- a/docs.it4i/general/resources-allocation-policy.md +++ b/docs.it4i/general/resources-allocation-policy.md @@ -2,7 +2,7 @@ ## Job Queue Policies -Resources are allocated to jobs in a fair-share fashion, subject to constraints set by the queue and the resources available to the project. Anselm's fair-share system ensures that individual users may consume approximately equal amounts of resources per week. Detailed information can be found in the [Job scheduling][1] section. Resources are accessible via several queues for queueing the jobs. The queues provide prioritized and exclusive access to the computational resources. The following table provides the queue partitioning overview: +Resources are allocated to jobs in a fair-share fashion, subject to constraints set by the queue and the resources available to the project. The fair-share system ensures that individual users may consume approximately equal amounts of resources per week. Detailed information can be found in the [Job scheduling][1] section. Resources are accessible via several queues for queueing the jobs. The queues provide prioritized and exclusive access to the computational resources. The following table provides the queue partitioning overview: !!! hint The qexp queue is configured to run one job and accept five jobs in a queue per user. @@ -13,23 +13,6 @@ Resources are allocated to jobs in a fair-share fashion, subject to constraints !!! note **The qexp queue is equipped with nodes that do not have exactly the same CPU clock speed.** Should you need the nodes to have exactly the same CPU speed, you have to select the proper nodes during the PSB job submission. -### Anselm - -| queue | active project | project resources | nodes | min ncpus | priority | authorization | walltime | -| ------------------- | -------------- | -------------------- | ---------------------------------------------------- | --------- | -------- | ------------- | -------- | -| qexp | no | none required | 209 nodes | 1 | 150 | no | 1 h | -| qprod | yes | > 0 | 180 nodes w/o accelerator | 16 | 0 | no | 24/48 h | -| qlong | yes | > 0 | 180 nodes w/o accelerator | 16 | 0 | no | 72/144 h | -| qnvidia | yes | > 0 | 23 NVIDIA nodes | 16 | 200 | yes | 24/48 h | -| qfat | yes | > 0 | 2 fat nodes | 16 | 200 | yes | 24/144 h | -| qfree | yes | < 120% of allocation | 180 w/o accelerator | 16 | -1024 | no | 12 h | - -* **qexp**, the Express queue: This queue is dedicated to testing and running very small jobs. It is not required to specify a project to enter the qexp. There are always 2 nodes reserved for this queue (w/o accelerators), a maximum 8 nodes are available via the qexp for a particular user, from a pool of nodes containing Nvidia accelerated nodes (cn181-203), MIC accelerated nodes (cn204-207) and Fat nodes with 512GB of RAM (cn208-209). This enables us to test and tune accelerated code and code with higher RAM requirements. The nodes may be allocated on a per core basis. No special authorization is required to use qexp. The maximum runtime in qexp is 1 hour. -* **qprod**, the Production queue: This queue is intended for normal production runs. It is required that an active project with nonzero remaining resources is specified to enter the qprod. All nodes may be accessed via the qprod queue, except the reserved ones. Included are 178 nodes without accelerators. Full nodes, 16 cores per node, are allocated. The queue runs with medium priority and no special authorization is required to use it. The maximum runtime in qprod is 48 hours. -* **qlong**, the Long queue: This queue is intended for long production runs. It is required that an active project with nonzero remaining resources is specified to enter the qlong. Only 60 nodes without acceleration may be accessed via the qlong queue. Full nodes, 16 cores per node, are allocated. The queue runs with medium priority and no special authorization is required to use it. The maximum runtime in qlong is 144 hours (three times that of the standard qprod time - 3 x 48 h). -* **qnvidia**, **qmic**, **qfat**, the Dedicated queues: The queue qnvidia is dedicated to accessing the NVIDIA-accelerated nodes, the qmic to accessing MIC nodes and qfat the Fat nodes. It is required that an active project with nonzero remaining resources is specified to enter these queues. Included are 23 NVIDIA, 4 mic, and 2 fat nodes. Full nodes, 16 cores per node, are allocated. The queues run with very high priority, the jobs will be scheduled before the jobs coming from the qexp queue. The PI needs to explicitly ask [support][a] for authorization to enter the dedicated queues for all users associated with their project. -* **qfree**, The Free resource queue: The queue qfree is intended for utilization of free resources, after a project has exhausted all of its allocated computational resources (Does not apply to DD projects by default; DD projects have to request permission to use qfree after exhaustion of computational resources). It is required that active project is specified to enter the queue. Consumed resources will be accounted to the Project. Access to the qfree queue is automatically removed if consumed resources exceed 120% of the resources allocated to the Project. Only 180 nodes without accelerators may be accessed from this queue. Full nodes, 16 cores per node, are allocated. The queue runs with a very low priority and no special authorization is required to use it. The maximum runtime in qfree is 12 hours. - ### Salomon | queue | active project | project resources | nodes | min ncpus | priority | authorization | walltime | @@ -80,16 +63,16 @@ The job wall clock time defaults to **half the maximum time**, see the table abo Jobs that exceed the reserved wall clock time (Req'd Time) get killed automatically. The wall clock time limit can be changed for queuing jobs (state Q) using the `qalter` command, however it cannot be changed for a running job (state R). -Anselm users may check the current queue configuration [here][b]. +You can check the current queue configuration on rsweb: [Barbora][b] or [Salomon][d]. ## Queue Status !!! tip Check the status of jobs, queues and compute nodes [here][c]. - + -Display the queue status on Anselm: +Display the queue status: ```console $ qstat -q @@ -207,5 +190,6 @@ Options: [3]: job-submission-and-execution.md [a]: https://support.it4i.cz/rt/ -[b]: https://extranet.it4i.cz/rsweb/anselm/queues -[c]: https://extranet.it4i.cz/rsweb/anselm/ +[b]: https://extranet.it4i.cz/rsweb/barbora/queues +[c]: https://extranet.it4i.cz/rsweb +[d]: https://extranet.it4i.cz/rsweb/salomon/queues diff --git a/docs.it4i/general/shell-and-data-access.md b/docs.it4i/general/shell-and-data-access.md index c03eb892c..9ae75538f 100644 --- a/docs.it4i/general/shell-and-data-access.md +++ b/docs.it4i/general/shell-and-data-access.md @@ -7,14 +7,6 @@ All IT4Innovations clusters are accessed by the SSH protocol via login nodes at !!! note The **cluster-name.it4i.cz** alias is currently not available through VPN connection. Use **loginX.cluster-name.it4i.cz** when connected to VPN. -### Anselm Cluster - -| Login address | Port | Protocol | Login node | -| --------------------- | ---- | -------- | --------------------------------------| -| anselm.it4i.cz | 22 | SSH | round-robin DNS record for login[1-2] | -| login1.anselm.it4i.cz | 22 | SSH | login1 | -| login2.anselm.it4i.cz | 22 | SSH | login2 | - ### Barbora Cluster | Login address | Port | Protocol | Login node | @@ -37,22 +29,6 @@ All IT4Innovations clusters are accessed by the SSH protocol via login nodes at Authentication is available by [private key][1] only. Verify SSH fingerprints during the first logon: -Anselm: - -```console - md5: - 29:b3:f4:64:b0:73:f5:6f:a7:85:0f:e0:0d:be:76:bf (DSA) - d4:6f:5c:18:f4:3f:70:ef:bc:fc:cc:2b:fd:13:36:b7 (RSA) - 1a:19:75:31:ab:53:45:53:ce:35:82:13:29:e4:0d:d5 (ECDSA) - db:c7:5e:f6:31:be:80:9f:25:79:20:60:ad:93:f4:3b (ED25519) - - sha256: - LX2034TYy6Lf0Q7Zf3zOIZuFlG09DaSGROGBz6LBUy4 (DSA) - +DcED3GDoA9piuyvQOho+ltNvwB9SJSYXbB639hbejY (RSA) - 2Keuu9gzrcs1K8pu7ljm2wDdUXU6f+QGGSs8pyrMM3M (ECDSA) - C2ppGEk5QyB2ov+/9yPMqXpQvv1xu2UupoHFnwsLLWs (ED25519) -``` - Barbora: ```console @@ -125,14 +101,6 @@ Last login: Tue Jul 9 15:57:38 2013 from your-host.example.com Data in and out of the system may be transferred by SCP and SFTP protocols. -### Anselm Cluster - -| Address | Port | Protocol | -| --------------------- | ---- | --------- | -| anselm.it4i.cz | 22 | SCP | -| login1.anselm.it4i.cz | 22 | SCP | -| login2.anselm.it4i.cz | 22 | SCP | - ### Barbora Cluster | Address | Port | Protocol | diff --git a/docs.it4i/img/barbora_cluster_usage.png b/docs.it4i/img/barbora_cluster_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..a076ad5569cd40469a51d53b5d40ebdf8c143b26 GIT binary patch literal 60452 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 R#L$7?U-gZzl<T4*{tiz>%M1Vj literal 0 HcmV?d00001 diff --git a/docs.it4i/index.md b/docs.it4i/index.md index 9e1b5fb2f..b540a1f37 100644 --- a/docs.it4i/index.md +++ b/docs.it4i/index.md @@ -1,6 +1,6 @@ # Documentation -Welcome to the IT4Innovations documentation. The IT4Innovations National Supercomputing Center operates the [Anselm][2], [Barbora][3], and [Salomon][1] supercomputers. The supercomputers are [available][4] to the academic community within the Czech Republic and Europe, and the industrial community worldwide. The purpose of these pages is to provide comprehensive documentation of the hardware, software, and usage of the computers. +Welcome to the IT4Innovations documentation. The IT4Innovations National Supercomputing Center operates the [Barbora][3] and [Salomon][1] supercomputers. The supercomputers are [available][4] to the academic community within the Czech Republic and Europe, and the industrial community worldwide. The purpose of these pages is to provide comprehensive documentation of the hardware, software, and usage of the computers. ## How to Read the Documentation @@ -64,7 +64,6 @@ If you find an inconsistency or error, report it by visiting [support][b], creat By doing so, you can save other readers from frustration and help us improve. [1]: salomon/introduction.md -[2]: anselm/introduction.md [3]: barbora/introduction.md [4]: general/applying-for-resources.md [5]: general/resources-allocation-policy.md#normalized-core-hours-nch diff --git a/docs.it4i/job-features.md b/docs.it4i/job-features.md index 025a9601c..27ae4adc8 100644 --- a/docs.it4i/job-features.md +++ b/docs.it4i/job-features.md @@ -36,7 +36,7 @@ $ qsub ... -l virt_network=true ``` !!! Warning - Available on Anselm and Salomon nodes only. + Available on Salomon nodes only. [See Tap Interconnect][1] @@ -81,7 +81,7 @@ $ qsub ... -l cpu_turbo_boost=false ``` !!! Warning - Available on Anselm and Salomon nodes only. + Available on Salomon nodes only. ## Offlining CPU Cores diff --git a/docs.it4i/prace.md b/docs.it4i/prace.md index c1e0c5998..fe75096f3 100644 --- a/docs.it4i/prace.md +++ b/docs.it4i/prace.md @@ -10,7 +10,7 @@ All general [PRACE User Documentation][a] should be read before continuing readi If you need any information, request support, or want to install additional software, use PRACE Helpdesk. -Information about the local services are provided in the [introduction of general user documentation Salomon][2] and [introduction of general user documentation Anselm][3]. Keep in mind, that standard PRACE accounts don't have a password to access the web interface of the local (IT4Innovations) request tracker and thus a new ticket should be created by sending an email to support[at]it4i.cz. +Information about the local services are provided in the [introduction of general user documentation Salomon][2] and [introduction of general user documentation Barbora][3]. Keep in mind, that standard PRACE accounts don't have a password to access the web interface of the local (IT4Innovations) request tracker and thus a new ticket should be created by sending an email to support[at]it4i.cz. ## Obtaining Login Credentials @@ -60,28 +60,12 @@ Salomon cluster: $ gsissh -p 2222 salomon-prace.it4i.cz ``` -Anselm cluster: - -| Login address | Port | Protocol | Login node | -| --------------------------- | ---- | -------- | ---------------- | -| anselm-prace.it4i.cz | 2222 | gsissh | login1 or login2 | -| login1-prace.anselm.it4i.cz | 2222 | gsissh | login1 | -| login2-prace.anselm.it4i.cz | 2222 | gsissh | login2 | - -```console -$ gsissh -p 2222 anselm-prace.it4i.cz -``` - When logging from other PRACE system, the prace_service script can be used: ```console $ gsissh `prace_service -i -s salomon` ``` -```console -$ gsissh `prace_service -i -s anselm` -``` - #### Access From Public Internet: It is recommended to use the single DNS name **name-cluster**.it4i.cz which is distributed between the four login nodes. If needed, the user can login directly to one of the login nodes. The addresses are: @@ -100,28 +84,12 @@ Salomon cluster: $ gsissh -p 2222 salomon.it4i.cz ``` -Anselm cluster: - -| Login address | Port | Protocol | Login node | -| --------------------- | ---- | -------- | ---------------- | -| anselm.it4i.cz | 2222 | gsissh | login1 or login2 | -| login1.anselm.it4i.cz | 2222 | gsissh | login1 | -| login2.anselm.it4i.cz | 2222 | gsissh | login2 | - -```console -$ gsissh -p 2222 anselm.it4i.cz -``` - When logging from other PRACE system, the prace_service script can be used: ```console $ gsissh `prace_service -e -s salomon` ``` -```console -$ gsissh `prace_service -e -s anselm` -``` - Although the preferred and recommended file transfer mechanism is [using GridFTP][5], the GSI SSH implementation also supports SCP, so for small files transfer, gsiscp can be used: ```console @@ -131,13 +99,6 @@ $ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ salomon-prace.it4i.cz:_SALOMON_PATH_T $ gsiscp -P 2222 salomon-prace.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ ``` -```console -$ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ anselm.it4i.cz:_ANSELM_PATH_TO_YOUR_FILE_ -$ gsiscp -P 2222 anselm.it4i.cz:_ANSELM_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ -$ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ anselm-prace.it4i.cz:_ANSELM_PATH_TO_YOUR_FILE_ -$ gsiscp -P 2222 anselm-prace.it4i.cz:_ANSELM_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ -``` - ### Access to X11 Applications (VNC) If the user needs to run X11 based graphical application and does not have a X11 server, the applications can be run using VNC service. If the user is using a regular SSH based access, see this [section in general documentation][6]. @@ -177,53 +138,24 @@ Copy files **to** Salomon by running the following commands on your local machin $ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://gridftp-prace.salomon.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ ``` -Anselm cluster: - -| Login address | Port | Node role | -| ---------------------------- | ---- | --------------------------- | -| gridftp-prace.anselm.it4i.cz | 2812 | Front end /control server | -| login1-prace.anselm.it4i.cz | 2813 | Backend / data mover server | -| login2-prace.anselm.it4i.cz | 2813 | Backend / data mover server | -| dm1-prace.anselm.it4i.cz | 2813 | Backend / data mover server | - -Copy files **to** Anselm by running the following commands on your local machine: - -```console -$ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://gridftp-prace.anselm.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ -``` - Or by using prace_service script: ```console $ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://`prace_service -i -f salomon`/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ ``` -```console -$ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://`prace_service -i -f anselm`/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ -``` - Copy files **from** Salomon: ```console $ globus-url-copy gsiftp://gridftp-prace.salomon.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ ``` -Copy files **from** Anselm: - -```console -$ globus-url-copy gsiftp://gridftp-prace.anselm.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ -``` - Or by using the prace_service script: ```console $ globus-url-copy gsiftp://`prace_service -i -f salomon`/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ ``` -```console -$ globus-url-copy gsiftp://`prace_service -i -f anselm`/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ -``` - ### Access From Public Internet Salomon cluster: @@ -241,53 +173,24 @@ Copy files **to** Salomon by running the following commands on your local machin $ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://gridftp.salomon.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ ``` -Anselm cluster: - -| Login address | Port | Node role | -| ---------------------- | ---- | --------------------------- | -| gridftp.anselm.it4i.cz | 2812 | Front end /control server | -| login1.anselm.it4i.cz | 2813 | Backend / data mover server | -| login2.anselm.it4i.cz | 2813 | Backend / data mover server | -| dm1.anselm.it4i.cz | 2813 | Backend / data mover server | - -Copy files **to** Anselm by running the following commands on your local machine: - -```console -$ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://gridftp.anselm.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ -``` - Or by using the prace_service script: ```console $ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://`prace_service -e -f salomon`/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ ``` -```console -$ globus-url-copy file://_LOCAL_PATH_TO_YOUR_FILE_ gsiftp://`prace_service -e -f anselm`/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ -``` - Copy files **from** Salomon: ```console $ globus-url-copy gsiftp://gridftp.salomon.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ ``` -Copy files **from** Anselm: - -```console -$ globus-url-copy gsiftp://gridftp.anselm.it4i.cz:2812/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ -``` - Or by using the prace_service script: ```console $ globus-url-copy gsiftp://`prace_service -e -f salomon`/home/prace/_YOUR_ACCOUNT_ON_SALOMON_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ ``` -```console -$ globus-url-copy gsiftp://`prace_service -e -f anselm`/home/prace/_YOUR_ACCOUNT_ON_ANSELM_/_PATH_TO_YOUR_FILE_ file://_LOCAL_PATH_TO_YOUR_FILE_ -``` - Generally, both shared file systems are available through GridFTP: | File system mount point | Filesystem | Comment | @@ -295,12 +198,12 @@ Generally, both shared file systems are available through GridFTP: | /home | Lustre | Default HOME directories of users in format /home/prace/login/ | | /scratch | Lustre | Shared SCRATCH mounted on the whole cluster | -More information about the shared file systems is available [for Salomon here][10] and [for Anselm here][11]. +More information about the shared file systems on Salomon is available [here][10]. !!! hint The `prace` directory is used for PRACE users on the SCRATCH file system. -Only Salomon cluster /scratch: +Salomon cluster /scratch: | Data type | Default path | | ---------------------------- | ------------------------------- | @@ -311,7 +214,7 @@ Only Salomon cluster /scratch: There are some limitations for PRACE users when using the cluster. By default, PRACE users are not allowed to access special queues in the PBS Pro to have high priority or exclusive access to some special equipment like accelerated nodes and high memory (fat) nodes. There may also be restrictions on obtaining a working license for the commercial software installed on the cluster, mostly because of the license agreement or because of insufficient amount of licenses. -For production runs, always use scratch file systems. The available file systems are described [for Salomon here][10] and [for Anselm here][11]. +For production runs, always use scratch file systems. The available file systems on Salomon is described [here][10]. ### Software, Modules and PRACE Common Production Environment @@ -337,14 +240,6 @@ Salomon: | **qprace** Production queue | yes | >0 | 1006 nodes, max 86 per job | 0 | no | 24 / 48 h | | **qfree** Free resource queue | yes | none required | 752 nodes, max 86 per job | -1024 | no | 12 / 12 h | -Anselm: - -| queue | Active project | Project resources | Nodes | priority | authorization | walltime | -| ----------------------------- | -------------- | ----------------- | ------------------- | -------- | ------------- | --------- | -| **qexp** Express queue | no | none required | 2 reserved, 8 total | high | no | 1 / 1h | -| **qprace** Production queue | yes | > 0 | 178 w/o accelerator | medium | no | 24 / 48 h | -| **qfree** Free resource queue | yes | none required | 178 w/o accelerator | very low | no | 12 / 12 h | - **qprace**, the PRACE queue is intended for normal production runs. It is required that active project with nonzero remaining resources is specified to enter the qprace. The queue runs with medium priority and no special authorization is required to use it. The maximum runtime in qprace is 48 hours. If the job needs longer time, it must use the checkpoint/restart functionality. ### Accounting & Quota @@ -392,12 +287,11 @@ If the quota is insufficient, contact the [support][15] and request an increase. [1]: general/obtaining-login-credentials/obtaining-login-credentials.md [2]: salomon/introduction.md -[3]: anselm/introduction.md +[3]: barbora/introduction.md [5]: #file-transfers [6]: general/accessing-the-clusters/graphical-user-interface/x-window-system.md [9]: general/shell-and-data-access.md [10]: salomon/storage.md -[11]: anselm/storage.md [12]: environment-and-modules.md [13]: general/resources-allocation-policy.md [15]: #help-and-support diff --git a/docs.it4i/software/cae/comsol/comsol-multiphysics.md b/docs.it4i/software/cae/comsol/comsol-multiphysics.md index 72c7ac243..0ef8b15cd 100644 --- a/docs.it4i/software/cae/comsol/comsol-multiphysics.md +++ b/docs.it4i/software/cae/comsol/comsol-multiphysics.md @@ -52,7 +52,7 @@ To run COMSOL in batch mode without the COMSOL Desktop GUI environment, utilize #PBS -N JOB_NAME #PBS -A PROJECT_ID -cd /scratch/work/user/$USER/ || exit # on Anselm use: /scratch/$USER +cd /scratch/work/user/$USER/ || exit echo Time is `date` echo Directory is `pwd` @@ -76,7 +76,7 @@ A working directory has to be created before sending the (comsol.pbs) job script COMSOL is a software package for the numerical solution of partial differential equations. LiveLink for MATLAB allows connection to the COMSOL API (Application Programming Interface) with the benefits of the programming language and computing environment of the MATLAB. -LiveLink for MATLAB is available in both **EDU** and **COM** **variant** of the COMSOL release. On the clusters there is 1 commercial (**COM**) and 5 educational (**EDU**) licenses of LiveLink for MATLAB (see the [ISV Licenses][3]). The following example shows how to start COMSOL model from MATLAB via LiveLink in the interactive mode (on Anselm, use 16 threads). +LiveLink for MATLAB is available in both **EDU** and **COM** **variant** of the COMSOL release. On the clusters there is 1 commercial (**COM**) and 5 educational (**EDU**) licenses of LiveLink for MATLAB (see the [ISV Licenses][3]). The following example shows how to start COMSOL model from MATLAB via LiveLink in the interactive mode. ```console $ xhost + @@ -97,7 +97,7 @@ To run LiveLink for MATLAB in batch mode with (comsol_matlab.pbs) job script, yo #PBS -N JOB_NAME #PBS -A PROJECT_ID -cd /scratch/work/user/$USER || exit # on Anselm use: /scratch/$USER +cd /scratch/work/user/$USER || exit echo Time is `date` echo Directory is `pwd` diff --git a/docs.it4i/software/chemistry/gaussian.md b/docs.it4i/software/chemistry/gaussian.md index eab5b67d5..fd6caa539 100644 --- a/docs.it4i/software/chemistry/gaussian.md +++ b/docs.it4i/software/chemistry/gaussian.md @@ -27,17 +27,17 @@ uid=1000(user) gid=1000(user) groups=1000(user),1234(open-0-0),7310(gaussian) ## Installed Version -Gaussian is available on Anselm, Salomon, Barbora, and DGX-2 systems in the latest version Gaussian 16 rev. c0. - -| Module | CPU support | GPU support | Parallelization | Note | Anselm | Barbora | Salomon | DGX-2 | -|--------------------------------------|-------------|--------------|-----------------|---------------------|---------|---------|---------|-------| -| Gaussian/16_rev_c0-binary | AVX2 | Yes | SMP | Binary distribution | No | Yes | Yes | Yes | -| Gaussian/16_rev_c0-binary-Linda | AVX2 | Yes | SMP + Linda | Binary distribution | No | Yes | Yes | No | -| Gaussian/16_rev_c0-CascadeLake | AVX-512 | No | SMP | IT4I compiled | No | Yes | No | No | -| Gaussian/16_rev_c0-CascadeLake-Linda | AVX-512 | No | SMP + Linda | IT4I compiled | No | Yes | No | No | -| Gaussian/16_rev_c0-GPU-Linda | AVX-512 | Yes | SMP + Linda | IT4I compiled | No | Yes | No | No | -| Gaussian/16_rev_c0-GPU | AVX-512 | Yes | SMP | IT4I compiled | No | No | No | Yes | -| Gaussian/16_rev_c0-Linda | AVX | No | SMP + Linda | IT4I compiled | Yes | No | No | No | +Gaussian is available on Salomon, Barbora, and DGX-2 systems in the latest version Gaussian 16 rev. c0. + +| Module | CPU support | GPU support | Parallelization | Note | Barbora | Salomon | DGX-2 | +|--------------------------------------|-------------|--------------|-----------------|---------------------|---------|---------|-------| +| Gaussian/16_rev_c0-binary | AVX2 | Yes | SMP | Binary distribution | Yes | Yes | Yes | +| Gaussian/16_rev_c0-binary-Linda | AVX2 | Yes | SMP + Linda | Binary distribution | Yes | Yes | No | +| Gaussian/16_rev_c0-CascadeLake | AVX-512 | No | SMP | IT4I compiled | Yes | No | No | +| Gaussian/16_rev_c0-CascadeLake-Linda | AVX-512 | No | SMP + Linda | IT4I compiled | Yes | No | No | +| Gaussian/16_rev_c0-GPU-Linda | AVX-512 | Yes | SMP + Linda | IT4I compiled | Yes | No | No | +| Gaussian/16_rev_c0-GPU | AVX-512 | Yes | SMP | IT4I compiled | No | No | Yes | +| Gaussian/16_rev_c0-Linda | AVX | No | SMP + Linda | IT4I compiled | No | No | No | Speedup may be observed on Barbora and DGX-2 systems when using the `CascadeLake` and `GPU` modules compared to the `binary` module. diff --git a/docs.it4i/software/chemistry/molpro.md b/docs.it4i/software/chemistry/molpro.md index 829bc0af5..d88715f17 100644 --- a/docs.it4i/software/chemistry/molpro.md +++ b/docs.it4i/software/chemistry/molpro.md @@ -12,7 +12,11 @@ To run MOLPRO, you need to have a valid license token present in `HOME/.molpro/t ## Installed Version -On Anselm, the current version is 2010.1, patch level 45, parallel version compiled with Intel compilers and Intel MPI. +For the current list of installed versions, use: + +```console +$ ml av Molpro +``` Compilation parameters are default: diff --git a/docs.it4i/software/debuggers/allinea-ddt.md b/docs.it4i/software/debuggers/allinea-ddt.md index df7cba384..15a7375ab 100644 --- a/docs.it4i/software/debuggers/allinea-ddt.md +++ b/docs.it4i/software/debuggers/allinea-ddt.md @@ -8,18 +8,6 @@ Allinea DDT is a commercial debugger primarily for debugging parallel MPI or Ope Allinea MAP is a profiler for C/C++/Fortran HPC codes. It is designed for profiling parallel code, which uses pthreads, OpenMP, or MPI. -## License and Limitations for Anselm Users - -On Anselm users can debug OpenMP or MPI code that runs up to 64 parallel processes. In case of debugging GPU or Xeon Phi accelerated codes, the limit is 8 accelerators. This limitation means that: - -* 1 user can debug up to 64 processes, or -* 32 users can debug 2 processes, etc. - -In case of debugging on accelerators: - -* 1 user can debug on up to 8 accelerators, or -* 8 users can debug on single accelerator. - ## Compiling Code to Run With DDT ### Modules diff --git a/docs.it4i/software/debuggers/cube.md b/docs.it4i/software/debuggers/cube.md index f6a4ddb06..8d10a3925 100644 --- a/docs.it4i/software/debuggers/cube.md +++ b/docs.it4i/software/debuggers/cube.md @@ -25,7 +25,7 @@ Currently, there are two versions of CUBE 4.2.3 available as [modules][1]: ## Usage -CUBE is a graphical application. Refer to the Graphical User Interface documentation for a list of methods to launch graphical applications on Anselm. +CUBE is a graphical application. Refer to the Graphical User Interface documentation for a list of methods to launch graphical applications clusters. !!! note Analyzing large data sets can consume large amount of CPU and RAM. Do not perform large analysis on login nodes. diff --git a/docs.it4i/software/debuggers/intel-performance-counter-monitor.md b/docs.it4i/software/debuggers/intel-performance-counter-monitor.md index 59efd3c08..fa67a568f 100644 --- a/docs.it4i/software/debuggers/intel-performance-counter-monitor.md +++ b/docs.it4i/software/debuggers/intel-performance-counter-monitor.md @@ -61,7 +61,7 @@ The `pcm-msr.x` command can be used to read/write model specific registers of th ### PCM-Numa -NUMA monitoring utility does not work on Anselm. +Monitors local and remote memory accesses. ### PCM-Pcie @@ -186,15 +186,12 @@ Sample output: ### PCM-Sensor -Can be used as a sensor for the ksysguard GUI, which is currently not installed on Anselm. +Can be used as a sensor for the ksysguard GUI. ## API In a similar fashion to PAPI, PCM provides a C++ API to access the performance counter from within your application. Refer to the [Doxygen documentation][a] for details of the API. -!!! note - Due to security limitations, using PCM API to monitor your applications is currently not possible on Anselm. (The application must be run as root user) - Sample program using the API : ```cpp diff --git a/docs.it4i/software/debuggers/introduction.md b/docs.it4i/software/debuggers/introduction.md index 1f5847fe0..e74d87bf6 100644 --- a/docs.it4i/software/debuggers/introduction.md +++ b/docs.it4i/software/debuggers/introduction.md @@ -2,7 +2,7 @@ ## Introduction -We provide state of the art programs and tools to develop, profile, and debug HPC codes at IT4Innovations. On these pages, we provide an overview of the profiling and debugging tools available on Anslem at IT4I. +We provide state of the art programs and tools to develop, profile, and debug HPC codes at IT4Innovations. In this cestion, we provide an overview of the profiling and debugging tools available on IT4I clusters. ## Intel Debugger diff --git a/docs.it4i/software/debuggers/scalasca.md b/docs.it4i/software/debuggers/scalasca.md index cbf22e09a..c800343d0 100644 --- a/docs.it4i/software/debuggers/scalasca.md +++ b/docs.it4i/software/debuggers/scalasca.md @@ -8,10 +8,11 @@ Scalasca supports profiling of MPI, OpenMP and hybrid MPI+OpenMP applications. ## Installed Versions -There are currently two versions of Scalasca 2.0 [modules][1] installed on Anselm: +For the current list of installed versions, use: -* scalasca2/2.0-gcc-openmpi, for usage with [GNU Compiler][2] and [OpenMPI][3], -* scalasca2/2.0-icc-impi, for usage with [Intel Compiler][2] and [Intel MPI][4]. +```console +$ ml av Scalasca +``` ## Usage diff --git a/docs.it4i/software/debuggers/score-p.md b/docs.it4i/software/debuggers/score-p.md index 501a8ee81..658d5ba6f 100644 --- a/docs.it4i/software/debuggers/score-p.md +++ b/docs.it4i/software/debuggers/score-p.md @@ -8,10 +8,11 @@ Score-P can be used as an instrumentation tool for [Scalasca][1]. ## Installed Versions -There are currently two versions of Score-P version 1.2.6 [modules][2] installed on Anselm: +For the current list of installed versions, use: -* scorep/1.2.3-gcc-openmpi, for usage with [GNU Compiler][3] and [OpenMPI][4] -* scorep/1.2.3-icc-impi, for usage with [Intel Compiler][3] and [Intel MPI][5] +```console +$ ml av Score-P +``` ## Instrumentation diff --git a/docs.it4i/software/debuggers/total-view.md b/docs.it4i/software/debuggers/total-view.md index 2322d42a4..594583247 100644 --- a/docs.it4i/software/debuggers/total-view.md +++ b/docs.it4i/software/debuggers/total-view.md @@ -6,16 +6,11 @@ TotalView is a GUI-based source code multi-process, multi-thread debugger. ## License and Limitations for Cluster Users -On the cluster, users can debug OpenMP or MPI code that runs up to 64 parallel processes. This limitation means that: - -```console - 1 user can debug up 64 processes, or - 32 users can debug 2 processes, etc. -``` +On the cluster, users can debug OpenMP or MPI code that runs up to 64 parallel processes. This limitation means that 1 user can debug up 64 processes, or 32 users can debug 2 processes, etc. Debugging of GPU accelerated codes is also supported. -You can check the status of the licenses [Salomon][a] or [Anselm][b]: +You can check the status of the licenses for [Salomon][a] or [Barbora][b]: ```console $ cat /apps/user/licenses/totalview_features_state.txt @@ -70,9 +65,9 @@ Be sure to log in with an X window forwarding enabled. This could mean using the ssh -X username@salomon.it4i.cz ``` -Another option is to access the login node using VNC. See the detailed information on how to use the GUI on Anselm. +Another option is to access the login node using VNC. -From the login node an interactive session with X windows forwarding (`-X` option) can be started by the following command (for Anselm use 16 threads): +From the login node an interactive session with X windows forwarding (`-X` option) can be started by the following command: ```console $ qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=24:mpiprocs=24,walltime=01:00:00 @@ -119,8 +114,6 @@ The source code of this function can be also found in ```console $ /apps/all/OpenMPI/1.10.1-GNU-4.9.3-2.25/etc/openmpi-totalview.tcl #Salomon - -$ /apps/mpi/openmpi/intel/1.6.5/etc/openmpi-totalview.tcl #Anselm ``` You can also add only following line to your ~/.tvdrc file instead of @@ -128,8 +121,6 @@ the entire function: ```console $ source /apps/all/OpenMPI/1.10.1-GNU-4.9.3-2.25/etc/openmpi-totalview.tcl #Salomon - -$ source /apps/mpi/openmpi/intel/1.6.5/etc/openmpi-totalview.tcl #Anselm ``` You need to do this step only once. See also [OpenMPI FAQ entry][c]. @@ -169,6 +160,6 @@ More information regarding the command line parameters of the TotalView can be f [1] The [TotalView documentation][d] web page is a good source for learning more about some of the advanced TotalView features. [a]: https://extranet.it4i.cz/rsweb/salomon/license/Totalview -[b]: https://extranet.it4i.cz/rsweb/anselm/license/Totalview +[b]: https://extranet.it4i.cz/rsweb/barbora/license/Totalview [c]: https://www.open-mpi.org/faq/?category=running#run-with-tv [d]: http://www.roguewave.com/support/product-documentation/totalview-family.aspx#totalview diff --git a/docs.it4i/software/debuggers/valgrind.md b/docs.it4i/software/debuggers/valgrind.md index 8ba893e97..9837c89c0 100644 --- a/docs.it4i/software/debuggers/valgrind.md +++ b/docs.it4i/software/debuggers/valgrind.md @@ -17,11 +17,6 @@ The main tools available in Valgrind are: ## Installed Versions -There are two versions of Valgrind available on Anselm. - -* Version 3.6.0, installed by operating system vendor in /usr/bin/valgrind. This version is available by default, without the need to load any module. This version however does not provide additional MPI support. -* Version 3.9.0 with support for Intel MPI, available in the `valgrind/3.9.0-impi` [module][1]. After loading the module, this version replaces the default Valgrind. - There are two versions of Valgrind available on the Salomon. * Version 3.8.1, installed by operating system vendor in /usr/bin/valgrind. This version is available by default, without the need to load any module. However, this version does not provide additional MPI support. Also, it does not support AVX2 instructions - debugging of an AVX2-enabled executable with this version will fail @@ -162,7 +157,6 @@ The default version without MPI support will however report a large number of fa So it is better to use the MPI-enabled Valgrind from the module. The MPI version requires the library: -* Anselm: /apps/tools/valgrind/3.9.0/impi/lib/valgrind/libmpiwrap-amd64-linux.so * Salomon: $EBROOTVALGRIND/lib/valgrind/libmpiwrap-amd64-linux.so which must be included in the `LD_PRELOAD` environment variable. diff --git a/docs.it4i/software/intel/intel-suite/intel-compilers.md b/docs.it4i/software/intel/intel-suite/intel-compilers.md index 8614e2df3..3182f7b05 100644 --- a/docs.it4i/software/intel/intel-suite/intel-compilers.md +++ b/docs.it4i/software/intel/intel-suite/intel-compilers.md @@ -32,7 +32,7 @@ Read more [here][a]. ## Sandy Bridge/Ivy Bridge/Haswell Binary Compatibility - Anselm nodes are currently equipped with the Sandy Bridge CPUs, while Salomon compute nodes are equipped with the Haswell-based architecture. The UV1 SMP compute server has Ivy Bridge CPUs, which are equivalent to Sandy Bridge (only smaller manufacturing technology). The new processors are backward compatible with the Sandy Bridge nodes, so all programs that run on the Sandy Bridge processors should also run on the new Haswell nodes. To get the optimal performance out of the Haswell processors, a program should make use of the special AVX2 instructions for this processor. This can be done by recompiling codes with the compiler flags designated to invoke these instructions. For the Intel compiler suite, there are two options: +Salomon compute nodes are equipped with the Haswell-based architecture while the UV1 SMP compute server has Ivy Bridge CPUs, which are equivalent to Sandy Bridge (only smaller manufacturing technology). The new processors are backward compatible with the Sandy Bridge nodes, so all programs that run on the Sandy Bridge processors should also run on the new Haswell nodes. To get the optimal performance out of the Haswell processors, a program should make use of the special AVX2 instructions for this processor. This can be done by recompiling codes with the compiler flags designated to invoke these instructions. For the Intel compiler suite, there are two options: * Using compiler flag (both for Fortran and C): `-xCORE-AVX2`. This will create a binary with AVX2 instructions, specifically for the Haswell processors. Note that the executable will not run on Sandy Bridge/Ivy Bridge nodes. * Using compiler flags (both for Fortran and C): `-xAVX -axCORE-AVX2`. This will generate multiple, feature specific auto-dispatch code paths for Intel® processors, if there is a performance benefit. Therefore, this binary will run both on Sandy Bridge/Ivy Bridge and Haswell processors. During runtime, it will be decided which path to follow, dependent on which processor you are running on. In general, this will result in larger binaries. diff --git a/docs.it4i/software/intel/intel-suite/intel-debugger.md b/docs.it4i/software/intel/intel-suite/intel-debugger.md index 3fcbed984..310b118be 100644 --- a/docs.it4i/software/intel/intel-suite/intel-debugger.md +++ b/docs.it4i/software/intel/intel-suite/intel-debugger.md @@ -26,7 +26,7 @@ To debug on compute nodes, the `intel` module must be loaded. The GUI on compute Example: ```console -$ qsub -q qexp -l select=1:ncpus=24 -X -I # use 16 threads for Anselm +$ qsub -q qexp -l select=1:ncpus=24 -X -I qsub: waiting for job 19654.srv11 to start qsub: job 19654.srv11 ready $ ml intel diff --git a/docs.it4i/software/intel/intel-suite/intel-mkl.md b/docs.it4i/software/intel/intel-suite/intel-mkl.md index 3c2ce2b0c..5ef538234 100644 --- a/docs.it4i/software/intel/intel-suite/intel-mkl.md +++ b/docs.it4i/software/intel/intel-suite/intel-mkl.md @@ -52,7 +52,7 @@ Advantage in using the Intel MKL library is that it brings threaded parallelizat For this to work, the application must link the threaded MKL library (default). Number and behavior of MKL threads may be controlled via the OpenMP environment variables, such as `OMP_NUM_THREADS` and `KMP_AFFINITY`. `MKL_NUM_THREADS` takes precedence over `OMP_NUM_THREADS`. ```console -$ export OMP_NUM_THREADS=24 # 16 for Anselm +$ export OMP_NUM_THREADS=24 $ export KMP_AFFINITY=granularity=fine,compact,1,0 ``` diff --git a/docs.it4i/software/intel/intel-suite/intel-tbb.md b/docs.it4i/software/intel/intel-suite/intel-tbb.md index efba337ef..09a385c50 100644 --- a/docs.it4i/software/intel/intel-suite/intel-tbb.md +++ b/docs.it4i/software/intel/intel-suite/intel-tbb.md @@ -16,7 +16,7 @@ Link the TBB library using `-ltbb`. ## Examples -A number of examples demonstrating use of TBB and its built-in scheduler is available on Anselm, in the $TBB_EXAMPLES directory. +A number of examples demonstrating use of TBB and its built-in scheduler is available in the $TBB_EXAMPLES directory. ```console $ ml intel diff --git a/docs.it4i/software/isv_licenses.md b/docs.it4i/software/isv_licenses.md index 1450d7e73..e1f46514b 100644 --- a/docs.it4i/software/isv_licenses.md +++ b/docs.it4i/software/isv_licenses.md @@ -17,46 +17,9 @@ If an ISV application was purchased for educational (research) purposes and also For each license, there is a [table][a] providing the information about the name, number of available (purchased/licensed), number of used and number of free license features. -### Text Interface - -(Anselm only, obsolete) - -For each license, there is a unique text file, which provides the information about the name, number of available (purchased/licensed), number of used and number of free license features. The text files are accessible from the Anselm command prompt. - -| Product | File with license state | Note | -| ---------- | ------------------------------------------------- | ------------------- | -| ansys | /apps/user/licenses/ansys_features_state.txt | Commercial | -| comsol | /apps/user/licenses/comsol_features_state.txt | Commercial | -| comsol-edu | /apps/user/licenses/comsol-edu_features_state.txt | Non-commercial only | -| matlab | /apps/user/licenses/matlab_features_state.txt | Commercial | -| matlab-edu | /apps/user/licenses/matlab-edu_features_state.txt | Non-commercial only | - -The file has a header which serves as a legend. All the info in the legend starts with a hash (#), so it can be easily filtered when parsing the file via a script. - -Example of the Commercial Matlab license state: - -```console -$ cat /apps/user/licenses/matlab_features_state.txt - # matlab - # ------------------------------------------------- - # FEATURE TOTAL USED AVAIL - # ------------------------------------------------- - MATLAB 1 1 0 - SIMULINK 1 0 1 - Curve_Fitting_Toolbox 1 0 1 - Signal_Blocks 1 0 1 - GADS_Toolbox 1 0 1 - Image_Toolbox 1 0 1 - Compiler 1 0 1 - Neural_Network_Toolbox 1 0 1 - Optimization_Toolbox 1 0 1 - Signal_Toolbox 1 0 1 - Statistics_Toolbox 1 0 1 -``` - ## License Aware Job Scheduling -Anselm, Salomon and Barbora clusters provide license aware job scheduling. +Salomon and Barbora clusters provide license aware job scheduling. Selected licenses are accounted and checked by the scheduler of PBS Pro. If you ask for certain licenses, the scheduler won't start the job until the asked licenses are free (available). This prevents batch jobs crashes due to unavailability of the needed licenses. diff --git a/docs.it4i/software/lang/csc.md b/docs.it4i/software/lang/csc.md index cc99c4093..85fb078c1 100644 --- a/docs.it4i/software/lang/csc.md +++ b/docs.it4i/software/lang/csc.md @@ -103,10 +103,10 @@ class MPIHello } ``` -Compile and run the program on Anselm: +Compile and run the program: ```console -$ qsub -I -A DD-13-5 -q qexp -l select=2:ncpus=16,walltime=00:30:00 +$ qsub -I -A DD-13-5 -q qexp -l select=2:ncpus=24,walltime=00:30:00 $ ml mpi.net diff --git a/docs.it4i/software/lang/java.md b/docs.it4i/software/lang/java.md index 1acded495..f2be76b9b 100644 --- a/docs.it4i/software/lang/java.md +++ b/docs.it4i/software/lang/java.md @@ -22,7 +22,7 @@ $ javac -version $ which javac ``` -Java applications may use MPI for inter-process communication, in conjunction with OpenMPI. Read more [here][a]. This functionality is currently not supported on Anselm cluster. In case you require the Java interface to MPI, contact [cluster support][b]. +Java applications may use MPI for inter-process communication, in conjunction with OpenMPI. Read more [here][a]. This functionality is currently not supported. In case you require the Java interface to MPI, contact [support][b]. ## Java With OpenMPI diff --git a/docs.it4i/software/machine-learning/tensorflow.md b/docs.it4i/software/machine-learning/tensorflow.md index 5caabe25f..5868d02fc 100644 --- a/docs.it4i/software/machine-learning/tensorflow.md +++ b/docs.it4i/software/machine-learning/tensorflow.md @@ -7,29 +7,6 @@ For searching available modules type: $ ml av Tensorflow ``` -## Anselm Modules - -Anselm provides these three TensorFlow modules: - -**Tensorflow/1.1.0** (CPU only, not recommended), module built with: - -* GCC/4.9.3 -* Python/3.6.1 - -**Tensorflow/1.1.0-CUDA-7.5.18-Python-3.6.1** (GPU enabled), module built with: - -* GCC/4.9.3 -* Python/3.6.1 -* CUDA/7.5.18 -* cuDNN/5.1-CUDA-7.5.18 - -**Tensorflow/1.1.0-CUDA-8.0.44-Python-3.6.1** (GPU enabled), module built with: - -* GCC/4.9.3 -* Python/3.6.1 -* CUDA/8.0.44 -* cuDNN/5.1-CUDA-8.0.44 - ## Salomon Modules Salomon provides beside others these three different TensorFlow modules: diff --git a/docs.it4i/software/mpi/running-mpich2.md b/docs.it4i/software/mpi/running-mpich2.md index 93265124e..3f01006dd 100644 --- a/docs.it4i/software/mpi/running-mpich2.md +++ b/docs.it4i/software/mpi/running-mpich2.md @@ -2,7 +2,7 @@ ## MPICH2 Program Execution -The MPICH2 programs use MPD daemon or SSH connection to spawn processes, no PBS support is needed. However, the PBS allocation is required to access compute nodes. On Anselm, the **Intel MPI** and **mpich2 1.9** are MPICH2 based MPI implementations. +The MPICH2 programs use MPD daemon or SSH connection to spawn processes, no PBS support is needed. However, the PBS allocation is required to access compute nodes. ### Basic Usage diff --git a/docs.it4i/software/mpi/running_openmpi.md b/docs.it4i/software/mpi/running_openmpi.md index 4a96af8c1..c8448b66b 100644 --- a/docs.it4i/software/mpi/running_openmpi.md +++ b/docs.it4i/software/mpi/running_openmpi.md @@ -2,7 +2,7 @@ ## OpenMPI Program Execution -The OpenMPI programs may be executed only via the PBS Workload manager, by entering an appropriate queue. On Anselm, the **bullxmpi-1.2.4.1** and **OpenMPI 1.6.5** are OpenMPI-based MPI implementations. On Salomon, the **OpenMPI 1.8.6** is an OpenMPI-based MPI implementation. +The OpenMPI programs may be executed only via the PBS Workload manager, by entering an appropriate queue. On Salomon, the **OpenMPI 1.8.6** is an OpenMPI-based MPI implementation. ### Basic Usage diff --git a/docs.it4i/software/numerical-languages/matlab.md b/docs.it4i/software/numerical-languages/matlab.md index 8e98ffc87..fb3aa387c 100644 --- a/docs.it4i/software/numerical-languages/matlab.md +++ b/docs.it4i/software/numerical-languages/matlab.md @@ -63,12 +63,9 @@ or in the GUI, go to tab *HOME -> Parallel -> Manage Cluster Profiles...*, click With the new mode, MATLAB itself launches the workers via PBS, so you can use either an interactive mode or a batch mode on one node, but the actual parallel processing will be done in a separate job started by MATLAB itself. Alternatively, you can use a "local" mode to run parallel code on just a single node. -!!! note - The profile is confusingly named Salomon, but you can use it on Anselm, as well. - ### Parallel MATLAB Interactive Session -The following example shows how to start the interactive session with support for MATLAB GUI. For more information about GUI based applications on Anselm, see [this page][1]. +The following example shows how to start the interactive session with support for MATLAB GUI. For more information about GUI based applications, see [this page][1]. ```console $ xhost + @@ -94,7 +91,7 @@ To run MATLAB in a batch mode, write a MATLAB script, then write a bash jobscrip #!/bin/bash #PBS -A PROJECT ID #PBS -q qprod -#PBS -l select=1:ncpus=24:mpiprocs=24:ompthreads=1 # Anselm: ncpus=16:mpiprocs=16 +#PBS -l select=1:ncpus=24:mpiprocs=24:ompthreads=1 # change to shared scratch directory SCR=/scratch/.../$USER/$PBS_JOBID # change path in according to the cluster @@ -137,7 +134,7 @@ This script creates the scheduler object *cluster* of the type *local* that star The last step is to start `matlabpool` with the *cluster* object and a correct number of workers. We have 24 cores per node, so we start 24 workers. ```console -parpool(cluster,24); # Anselm: parpool(cluster,24) +parpool(cluster,24); ... parallel code ... diff --git a/docs.it4i/software/numerical-languages/matlab_1314.md b/docs.it4i/software/numerical-languages/matlab_1314.md index 518f87b50..c0408ae57 100644 --- a/docs.it4i/software/numerical-languages/matlab_1314.md +++ b/docs.it4i/software/numerical-languages/matlab_1314.md @@ -44,11 +44,11 @@ plots, images, etc. will be still available. ## Running Parallel MATLAB Using Distributed Computing Toolbox / Engine -A recommended parallel mode for running parallel MATLAB on Anselm is MPIEXEC mode. In this mode, the user allocates resources through PBS prior to starting MATLAB. Once resources are granted, the main MATLAB instance is started on the first compute node assigned to job by PBS and workers are started on all remaining nodes. The user can use both interactive and non-interactive PBS sessions. This mode guarantees that the data processing is not performed on login nodes, but all processing is on compute nodes. +A recommended parallel mode for running parallel MATLAB is the MPIEXEC mode. In this mode, the user allocates resources through PBS prior to starting MATLAB. Once resources are granted, the main MATLAB instance is started on the first compute node assigned to job by PBS and workers are started on all remaining nodes. The user can use both interactive and non-interactive PBS sessions. This mode guarantees that the data processing is not performed on login nodes, but all processing is on compute nodes.  -For performance reasons, MATLAB should use system MPI. On Anselm, the supported MPI implementation for MATLAB is Intel MPI. To switch to system MPI, the user has to override default MATLAB setting by creating a new configuration file in its home directory. The path and file name has to be the same as in the following listing: +For performance reasons, MATLAB should use system MPI. On our clusters, the supported MPI implementation for MATLAB is Intel MPI. To switch to system MPI, the user has to override default MATLAB setting by creating a new configuration file in its home directory. The path and file name has to be the same as in the following listing: ```matlab $ vim ~/matlab/mpiLibConf.m @@ -74,14 +74,14 @@ The system MPI library allows MATLAB to communicate through 40 Gbit/s InfiniBand ### Parallel MATLAB Interactive Session -Once this file is in place, the user can request resources from PBS. The following example shows how to start an interactive session with support for MATLAB GUI. For more information about GUI-based applications on Anselm, see: +Once this file is in place, the user can request resources from PBS. The following example shows how to start an interactive session with support for MATLAB GUI. For more information about GUI-based applications, see: ```console $ xhost + -$ qsub -I -v DISPLAY=$(uname -n):$(echo $DISPLAY | cut -d ':' -f 2) -A NONE-0-0 -q qexp -l select=4:ncpus=16:mpiprocs=16 -l walltime=00:30:00 -l license__matlab-edu__MATLAB=1 +$ qsub -I -v DISPLAY=$(uname -n):$(echo $DISPLAY | cut -d ':' -f 2) -A NONE-0-0 -q qexp -l select=2:ncpus=16:mpiprocs=16 -l walltime=00:30:00 -l license__matlab-edu__MATLAB=1 ``` -This qsub command example shows how to run MATLAB with 32 workers in the following configuration: 2 nodes (use all 16 cores per node) and 16 workers = `mpiprocs` per node (`-l select=2:ncpus=16:mpiprocs=16`). If the user requires to run smaller number of workers per node then the `mpiprocs` parameter has to be changed. +This qsub command example shows how to run MATLAB with 32 workers in the following configuration: 2 nodes (use 16 cores per node) and 16 workers = `mpiprocs` per node (`-l select=2:ncpus=16:mpiprocs=16`). If the user requires to run smaller number of workers per node then the `mpiprocs` parameter has to be changed. The second part of the command shows how to request all necessary licenses. In this case, 1 MATLAB-EDU license and 32 Distributed Computing Engines licenses. diff --git a/docs.it4i/software/numerical-languages/octave.md b/docs.it4i/software/numerical-languages/octave.md index 4c325e0b4..56af395c7 100644 --- a/docs.it4i/software/numerical-languages/octave.md +++ b/docs.it4i/software/numerical-languages/octave.md @@ -16,7 +16,7 @@ $ ml av octave $ ml Octave ``` -Octave on clusters is linked to a highly optimized MKL mathematical library. This provides threaded parallelization to many Octave kernels, notably the linear algebra subroutines. Octave runs these heavy calculation kernels without any penalty. By default, Octave would parallelize to 16 (Anselm) or 24 (Salomon) threads. You may control the threads by setting the `OMP_NUM_THREADS` environment variable. +Octave on clusters is linked to a highly optimized MKL mathematical library. This provides threaded parallelization to many Octave kernels, notably the linear algebra subroutines. Octave runs these heavy calculation kernels without any penalty. By default, Octave would parallelize to 24 threads on Salomon. You may control the threads by setting the `OMP_NUM_THREADS` environment variable. To run Octave interactively, log in with the `ssh -X` parameter for X11 forwarding. Run Octave: @@ -24,7 +24,7 @@ To run Octave interactively, log in with the `ssh -X` parameter for X11 forwardi $ octave ``` -To run Octave in batch mode, write an Octave script, then write a bash jobscript and execute via the `qsub` command. By default, Octave will use 16 (Anselm) or 24 (Salomon) threads when running MKL kernels. +To run Octave in batch mode, write an Octave script, then write a bash jobscript and execute via the `qsub` command. By default, Octave will use 24 threads on Salomon when running MKL kernels. ```bash #!/bin/bash @@ -56,7 +56,7 @@ The Octave c compiler `mkoctfile` calls the GNU GCC 4.8.1 for compiling native C $ mkoctfile -v ``` -Octave may use MPI for interprocess communication This functionality is currently not supported on the Anselm cluster. In case you require the Octave interface to MPI, contact [Anselm support][b]. +Octave may use MPI for interprocess communication This functionality is currently not supported on the clusters. In case you require the Octave interface to MPI, contact [support][b]. ## Xeon Phi Support diff --git a/docs.it4i/software/numerical-languages/r.md b/docs.it4i/software/numerical-languages/r.md index 3ed903540..10f79da41 100644 --- a/docs.it4i/software/numerical-languages/r.md +++ b/docs.it4i/software/numerical-languages/r.md @@ -27,7 +27,7 @@ $ ml R ## Execution -R on cluster is linked to a highly optimized MKL mathematical library. This provides threaded parallelization to many R kernels, notably the linear algebra subroutines. R runs these heavy calculation kernels without any penalty. By default, R would parallelize to 24 (Salomon) or 16 (Anselm) threads. You may control the threads by setting the `OMP_NUM_THREADS` environment variable. +R on cluster is linked to a highly optimized MKL mathematical library. This provides threaded parallelization to many R kernels, notably the linear algebra subroutines. R runs these heavy calculation kernels without any penalty. By default, R would parallelize to 24 threads on Salomon. You may control the threads by setting the `OMP_NUM_THREADS` environment variable. ### Interactive Execution @@ -40,7 +40,7 @@ $ rstudio ### Batch Execution -To run R in batch mode, write an R script, then write a bash jobscript and execute via the `qsub` command. By default, R will use 24 (Salomon) or 16 (Anselm) threads when running MKL kernels. +To run R in batch mode, write an R script, then write a bash jobscript and execute via the `qsub` command. By default, R will use 24 threads on Salomon when running MKL kernels. Example jobscript: @@ -66,7 +66,7 @@ cp routput.out $PBS_O_WORKDIR/. exit ``` -This script may be submitted directly to the PBS workload manager via the `qsub` command. The inputs are in the rscript.R file, the outputs in the routput.out file. See the single node jobscript example in the [Job execution section - Anselm][1]. +This script may be submitted directly to the PBS workload manager via the `qsub` command. The inputs are in the rscript.R file, the outputs in the routput.out file. See the single node jobscript example in the [Job execution section][1]. ## Parallel R @@ -367,10 +367,10 @@ An example jobscript for [static Rmpi][4] parallel R execution, running 1 proces #!/bin/bash #PBS -q qprod #PBS -N Rjob -#PBS -l select=100:ncpus=24:mpiprocs=24:ompthreads=1 # Anselm: ncpus=16:mpiprocs=16 +#PBS -l select=100:ncpus=24:mpiprocs=24:ompthreads=1 # change to scratch directory -SCRDIR=/scratch/work/user/$USER/myjob # Anselm: SCRDIR=/scratch/$USER/myjob +SCRDIR=/scratch/work/user/$USER/myjob cd $SCRDIR || exit # copy input file to scratch diff --git a/docs.it4i/software/numerical-libraries/fftw.md b/docs.it4i/software/numerical-libraries/fftw.md index 37820b712..23d33bdb0 100644 --- a/docs.it4i/software/numerical-libraries/fftw.md +++ b/docs.it4i/software/numerical-libraries/fftw.md @@ -4,7 +4,7 @@ The discrete Fourier transform in one or more dimensions, MPI parallel FFTW is a C subroutine library for computing the discrete Fourier transform in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, e.g. the discrete cosine/sine transforms or DCT/DST). The FFTW library allows for MPI parallel, in-place discrete Fourier transform, with data distributed over number of nodes. -Two versions, **3.3.3** and **2.1.5** of FFTW are available on Anselm, each compiled for **Intel MPI** and **OpenMPI** using **Intel** and **gnu** compilers. These are available via modules: +Two versions, **3.3.x** and **2.1.5** of FFTW are available, each compiled for **Intel MPI** and **OpenMPI** using **Intel** and **gnu** compilers. These are available via modules: | Version | Parallelization | module | linker options | | -------------- | --------------- | ------------------- | ----------------------------------- | diff --git a/docs.it4i/software/numerical-libraries/gsl.md b/docs.it4i/software/numerical-libraries/gsl.md index c80126767..2154200ad 100644 --- a/docs.it4i/software/numerical-libraries/gsl.md +++ b/docs.it4i/software/numerical-libraries/gsl.md @@ -44,19 +44,12 @@ Basis Splines Wavelets ## Modules -The GSL 1.16 is available on Anselm, compiled for GNU and Intel compiler. These variants are available via modules: - -| Module | Compiler | -| --------------------- | --------- | -| gsl/1.16-gcc | gcc 4.8.6 | -| gsl/1.16-icc(default) | icc | +For the list of available gsl modules, use the command: ```console -$ ml gsl +$ ml av gsl ``` -The module sets up environment variables, required for linking and running GSL enabled applications. This particular command loads the default module, which is `gsl/1.16-icc`. - ## Linking Load an appropriate `gsl` module. Use the `-lgsl` switch to link your code against GSL. The GSL depends on cblas API to BLAS library, which must be supplied for linking. The BLAS may be provided, for example from the MKL library, as well as from the BLAS GSL library (`-lgslcblas`). Using the MKL is recommended. diff --git a/docs.it4i/software/numerical-libraries/hdf5.md b/docs.it4i/software/numerical-libraries/hdf5.md index 0d5b48668..88b217453 100644 --- a/docs.it4i/software/numerical-libraries/hdf5.md +++ b/docs.it4i/software/numerical-libraries/hdf5.md @@ -4,7 +4,7 @@ Hierarchical Data Format library. Serial and MPI parallel version. [HDF5 (Hierarchical Data Format)][a] is a general purpose library and file format for storing scientific data. HDF5 can store two primary objects: datasets and groups. A dataset is essentially a multidimensional array of data elements, and a group is a structure for organizing objects in an HDF5 file. Using these two basic objects, one can create and store almost any kind of scientific data structure, such as images, arrays of vectors, and structured and unstructured grids. You can also mix and match them in HDF5 files according to your needs. -Versions **1.8.11** and **1.8.13** of HDF5 library are available on Anselm, compiled for **Intel MPI** and **OpenMPI** using **Intel** and **gnu** compilers. These are available via modules: +Versions **1.8.11** and **1.8.13** of HDF5 library are available on our clusters, compiled for **Intel MPI** and **OpenMPI** using **Intel** and **gnu** compilers. These are available via modules: | Version | Parallelization | module | C linker options | C++ linker options | Fortran linker options | | --------------------- | --------------------------------- | -------------------------- | --------------------- | ----------------------- | ----------------------- | diff --git a/docs.it4i/software/numerical-libraries/petsc.md b/docs.it4i/software/numerical-libraries/petsc.md index 5adfff6e2..9352e7b62 100644 --- a/docs.it4i/software/numerical-libraries/petsc.md +++ b/docs.it4i/software/numerical-libraries/petsc.md @@ -16,7 +16,7 @@ PETSc (Portable, Extensible Toolkit for Scientific Computation) is a suite of bu ## Modules -You can start using PETSc on Anselm by loading the `petsc` module. Module names follox the pattern `petsc/version-compiler-mpi-blas-variant` where `variant` is replaced by one of `{dbg, opt, threads-dbg, threads-opt}`, for example: +You can start using PETSc by loading the `petsc` module. Module names follox the pattern `petsc/version-compiler-mpi-blas-variant` where `variant` is replaced by one of `{dbg, opt, threads-dbg, threads-opt}`, for example: ```console $ ml petsc/3.4.4-icc-impi-mkl-opt @@ -26,9 +26,9 @@ $ ml petsc/3.4.4-icc-impi-mkl-opt ## External Libraries -PETSc needs at least MPI, BLAS, and LAPACK. These dependencies are currently satisfied with Intel MPI and Intel MKL in Anselm `petsc` modules. +PETSc needs at least MPI, BLAS, and LAPACK. These dependencies are currently satisfied with Intel MPI and Intel MKL in `petsc` modules. -PETSc can be linked with a plethora of [external numerical libraries][k], extending PETSc functionality, e.g. direct linear system solvers, preconditioners, or partitioners. See below the list of libraries currently included in Anselm `petsc` modules. +PETSc can be linked with a plethora of [external numerical libraries][k], extending PETSc functionality, e.g. direct linear system solvers, preconditioners, or partitioners. See below the list of libraries currently included in `petsc` modules. All these libraries can also be used alone, without PETSc. Their static or shared program libraries are available in `$PETSC_DIR/$PETSC_ARCH/lib` and header files in `$PETSC_DIR/$PETSC_ARCH/include`. `PETSC_DIR` and `PETSC_ARCH` are environment variables pointing to a specific PETSc instance based on the PETSc module loaded. diff --git a/docs.it4i/software/numerical-libraries/trilinos.md b/docs.it4i/software/numerical-libraries/trilinos.md index 6d678267c..61ca1759a 100644 --- a/docs.it4i/software/numerical-libraries/trilinos.md +++ b/docs.it4i/software/numerical-libraries/trilinos.md @@ -8,9 +8,9 @@ Trilinos is a collection of software packages for the numerical solution of larg ## Installed Packages -Current Trilinos installation on ANSELM contains (among others) the following main packages: +Current Trilinos installation contains (among others) the following main packages: -* **Epetra** - core linear algebra package containing classes for manipulation with serial and distributed vectors, matrices, and graphs. Dense linear solvers are supported via interface to BLAS and LAPACK (Intel MKL on ANSELM). Its extension **EpetraExt** contains, for example, methods for matrix-matrix multiplication. +* **Epetra** - core linear algebra package containing classes for manipulation with serial and distributed vectors, matrices, and graphs. Dense linear solvers are supported via interface to BLAS and LAPACK (Intel MKL). Its extension **EpetraExt** contains, for example, methods for matrix-matrix multiplication. * **Tpetra** - next-generation linear algebra package. Supports 64-bit indexing and arbitrary data type using C++ templates. * **Belos** - library of various iterative solvers (CG, block CG, GMRES, block GMRES, etc.). * **Amesos** - interface to direct sparse solvers. @@ -22,7 +22,11 @@ For the full list of Trilinos packages, descriptions of their capabilities, and ## Installed Version -Currently, Trilinos in version 11.2.3 compiled with Intel Compiler is installed on Anselm. +For the list of available versions, use the command: + +```console +$ ml av trilinos +``` ## Compiling Against Trilinos diff --git a/docs.it4i/software/nvidia-cuda.md b/docs.it4i/software/nvidia-cuda.md index 17dd2edb1..3bef7e836 100644 --- a/docs.it4i/software/nvidia-cuda.md +++ b/docs.it4i/software/nvidia-cuda.md @@ -2,9 +2,9 @@ Guide to NVIDIA CUDA Programming and GPU Usage. -## CUDA Programming on Anselm +## CUDA Programming -The default programming model for GPU accelerators on Anselm is NVIDIA CUDA. To set up the environment for CUDA, use: +The default programming model for GPU accelerators is NVIDIA CUDA. To set up the environment for CUDA, use: ```console $ ml av cuda diff --git a/docs.it4i/software/tools/ansys/ansys.md b/docs.it4i/software/tools/ansys/ansys.md index 69ebb9706..fe49e40d1 100644 --- a/docs.it4i/software/tools/ansys/ansys.md +++ b/docs.it4i/software/tools/ansys/ansys.md @@ -1,8 +1,8 @@ # Overview of ANSYS Products -[SVS FEM][a] as [ANSYS Channel partner][b] for the Czech Republic provided all ANSYS licenses for ANSELM cluster and supports all ANSYS Products (Multiphysics, Mechanical, MAPDL, CFX, Fluent, Maxwell, LS-DYNA, etc.) to IT staff and ANSYS users. In case of a problem with ANSYS functionality, contact [hotline@svsfem.cz][c]. +[SVS FEM][a] as [ANSYS Channel partner][b] for the Czech Republic provided all ANSYS licenses for our clusters and supports all ANSYS Products (Multiphysics, Mechanical, MAPDL, CFX, Fluent, Maxwell, LS-DYNA, etc.) to IT staff and ANSYS users. In case of a problem with ANSYS functionality, contact [hotline@svsfem.cz][c]. -Anselm provides commercial as well as academic variants. Academic variants are distinguished by the "**Academic...**" word in the license name or by the two letter preposition "**aa\_**" in the license feature name. Change of license is realized on command line or directly in the user's PBS file (see individual products). +We provides commercial as well as academic variants. Academic variants are distinguished by the "**Academic...**" word in the license name or by the two letter preposition "**aa\_**" in the license feature name. Change of license is realized on command line or directly in the user's PBS file (see individual products). To load the latest version of any ANSYS product (Mechanical, Fluent, CFX, MAPDL, etc.) load the module: @@ -12,8 +12,8 @@ $ ml ANSYS ANSYS supports interactive mode, but due to assumed solution of extremely difficult tasks it is not recommended. -If the user needs to work in the interactive mode, we recommend to configure the RSM service on the client machine which allows to forward the solution to the Anselm directly from the client's Workbench project (see ANSYS RSM service). +If the user needs to work in the interactive mode, we recommend to configure the RSM service on the client machine which allows to forward the solution to the cluster directly from the client's Workbench project (see ANSYS RSM service). [a]: http://www.svsfem.cz/ [b]: http://www.ansys.com/ -[c]: mailto:hotline@svsfem.cz?subject=Ostrava%20-%20ANSELM +[c]: mailto:hotline@svsfem.cz diff --git a/docs.it4i/software/tools/ansys/ls-dyna.md b/docs.it4i/software/tools/ansys/ls-dyna.md index 081505388..5ed660201 100644 --- a/docs.it4i/software/tools/ansys/ls-dyna.md +++ b/docs.it4i/software/tools/ansys/ls-dyna.md @@ -3,7 +3,7 @@ [LS-DYNA][a] is a multi-purpose, explicit and implicit finite element program used to analyze the nonlinear dynamic response of structures. Its fully automated contact analysis capability, a wide range of constitutive models to simulate a whole range of engineering materials (steels, composites, foams, concrete, etc.), error-checking features, and the high scalability have enabled users worldwide to solve successfully many complex problems. Additionally LS-DYNA is extensively used to simulate impacts on structures from drop tests, underwater shock, explosions or high-velocity impacts. Explosive forming, process engineering, accident reconstruction, vehicle dynamics, thermal brake disc analysis, or nuclear safety are further areas in the broad range of possible applications. In leading-edge research, LS-DYNA is used to investigate the behavior of materials like composites, ceramics, concrete, or wood. Moreover, it is used in biomechanics, human modeling, molecular structures, casting, forging, or virtual testing. !!! Info - Anselm provides **1 commercial license of LS-DYNA without HPC** support now. + We provide **1 commercial license of LS-DYNA without HPC** support, now. To run LS-DYNA in batch mode, you can utilize/modify the default lsdyna.pbs script and execute it via the qsub command: diff --git a/docs.it4i/software/tools/easybuild.md b/docs.it4i/software/tools/easybuild.md index c13f9dede..4cdb4db76 100644 --- a/docs.it4i/software/tools/easybuild.md +++ b/docs.it4i/software/tools/easybuild.md @@ -428,14 +428,12 @@ $ eb git-2.11.0-GNU-4.9.3-2.25.eb -r --job !!! note "" Salomon jobs ... XXXXX.isrv5 - Anselm jobs ... XXXXX.dm2 - ```console $ qstat -u username -w Req'd Req'd Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time ------------------------------ --------------- --------------- --------------- -------- ---- ----- ------ ----- - ----- -1319314.dm2 username qprod git-2.11.0-GNU- 85605 1 16 -- 24:00 R 00:00:17 +1319314.isrv5 username qprod git-2.11.0-GNU- 85605 1 16 -- 24:00 R 00:00:17 ``` [a]: https://code.it4i.cz/sccs/easyconfigs-it4i diff --git a/docs.it4i/software/tools/singularity-it4i.md b/docs.it4i/software/tools/singularity-it4i.md index 49fb88e3e..24f9aeac8 100644 --- a/docs.it4i/software/tools/singularity-it4i.md +++ b/docs.it4i/software/tools/singularity-it4i.md @@ -3,16 +3,16 @@ On our clusters, the Singularity images of main Linux distributions are prepared. ```console - Salomon Anselm Barbora - ├── CentOS ├── CentOS ├── CentOS - │ ├── 6 │ ├── 6 │ ├── 6 - │ └── 7 │ └── 7 │ └── 7 - ├── Debian ├── Debian ├── Debian - │ └── latest │ └── latest │ └── latest - ├── Fedora ├── Fedora ├── Fedora - │ └── latest │ └── latest │ └── latest - └── Ubuntu └── Ubuntu └── Ubuntu - └── latest └── latest └── latest + Salomon Barbora + ├── CentOS ├── CentOS + │ ├── 6 │ ├── 6 + │ └── 7 │ └── 7 + ├── Debian ├── Debian + │ └── latest │ └── latest + ├── Fedora ├── Fedora + │ └── latest │ └── latest + └── Ubuntu └── Ubuntu + └── latest └── latest ``` !!! info diff --git a/docs.it4i/software/tools/virtualization.md b/docs.it4i/software/tools/virtualization.md index 86ca241f7..3ce3432c2 100644 --- a/docs.it4i/software/tools/virtualization.md +++ b/docs.it4i/software/tools/virtualization.md @@ -4,7 +4,7 @@ Running virtual machines on compute nodes. ## Introduction -There are situations when Anselm's environment is not suitable for user's needs: +There are situations when our clusters' environment is not suitable for user's needs: * Application requires a different operating system (e.g. Windows) or it is not available for Linux; * Application requires a different versions of base system libraries and tools; @@ -12,15 +12,15 @@ There are situations when Anselm's environment is not suitable for user's needs: * Application requires privileged access to the operating system; * ... and combinations of the above cases. -The solution for these cases is **virtualization**. Anselm's environment gives the possibility to run virtual machines on compute nodes. Users can create their own images of the operating system with a specific software stack and run instances of these images as virtual machines on compute nodes. Run of virtual machines is provided by the standard mechanism of [Resource Allocation and Job Execution][1]. +The solution for these cases is **virtualization**. Clusters' environment allows to run virtual machines on compute nodes. Users can create their own images of the operating system with a specific software stack and run instances of these images as virtual machines on compute nodes. Run of virtual machines is provided by the standard mechanism of [Resource Allocation and Job Execution][1]. Solution is based on QEMU-KVM software stack and provides hardware-assisted x86 virtualization. ## Limitations -Anselm's infrastructure was not designed for virtualization. Anselm's environment is not intended primarily for virtualization. Compute nodes, storages, and all infrastructure of Anselm is intended and optimized for running HPC jobs. This implies suboptimal configuration of virtualization and limitations. +Clusters' infrastructure and environment were s not designed for virtualization. Compute nodes, storages, and infrastructure is intended and optimized for running HPC jobs. This implies suboptimal configuration of virtualization and limitations. -Anselm's virtualization does not provide the performance and all features of a native environment. There is significant a performance hit (degradation) in I/O performance (storage, network). Anselm's virtualization is not suitable for I/O (disk, network) intensive workloads. +Clusters' virtualization does not provide the performance and all features of a native environment. There is significant a performance hit (degradation) in I/O performance (storage, network). The virtualization is not suitable for I/O (disk, network) intensive workloads. Virtualization has some drawbacks, as well. It is not so easy to set up an efficient solution. @@ -36,7 +36,7 @@ For running a Windows application (when the source code and Linux native applica ## Licensing -IT4Innovations does not provide any licenses for operating systems and software of virtual machines. Users are (in accordance with [Acceptable use policy document][a]) fully responsible for licensing all software running on virtual machines on Anselm. Be aware of complex conditions of licensing software in virtual environments. +IT4Innovations does not provide any licenses for operating systems and software of virtual machines. Users are (in accordance with [Acceptable use policy document][a]) fully responsible for licensing all software running on virtual machines on clusters. Be aware of complex conditions of licensing software in virtual environments. !!! note Users are responsible for licensing OS (e.g. MS Windows) and all software running on their virtual machines. @@ -49,12 +49,12 @@ We propose this job workflow:  -Our recommended solution is that the job script creates a distinct shared job directory, which makes a central point for data exchange between Anselm's environment, compute node (host) (e.g. HOME, SCRATCH, local scratch, and other local or cluster file systems), and virtual machine (guest). The job script links or copies input data and instructions on what to do (run script) for the virtual machine to the job directory and the virtual machine process input data according to the instructions in the job directory and store output back to the job directory. We recommend that the virtual machine is running in a so called [snapshot mode][3], the image is immutable - it does not change, so one image can be used for many concurrent jobs. +Our recommended solution is that the job script creates a distinct shared job directory, which makes a central point for data exchange between cluster's environment, compute node (host) (e.g. HOME, SCRATCH, local scratch, and other local or cluster file systems), and virtual machine (guest). The job script links or copies input data and instructions on what to do (run script) for the virtual machine to the job directory and the virtual machine process input data according to the instructions in the job directory and store output back to the job directory. We recommend that the virtual machine is running in a so called [snapshot mode][3], the image is immutable - it does not change, so one image can be used for many concurrent jobs. ### Procedure 1. Prepare the image of your virtual machine -1. Optimize the image of your virtual machine for Anselm's virtualization +1. Optimize the image of your virtual machine for cluster's virtualization 1. Modify your image for running jobs 1. Create a job script for executing the virtual machine 1. Run jobs @@ -251,7 +251,7 @@ Port forwarding allows you to access the virtual machine via SSH (Linux) or RDP For a networking virtual machine, we suggest using a (default) user network back-end (sometimes called slirp). This network back-end NATs virtual machines and provides useful services for virtual machines as DHCP, DNS, SMB sharing, port forwarding. -In default configuration, IP network 10.0.2.0/24 is used, host has IP address 10.0.2.2, DNS server 10.0.2.3, SMB server 10.0.2.4 and virtual machines obtain address from range 10.0.2.15-10.0.2.31. Virtual machines have access to Anselm's network via NAT on the compute node (host). +In default configuration, IP network 10.0.2.0/24 is used, host has IP address 10.0.2.2, DNS server 10.0.2.3, SMB server 10.0.2.4 and virtual machines obtain address from range 10.0.2.15-10.0.2.31. Virtual machines have access to cluster's network via NAT on the compute node (host). Simple network setup: @@ -321,7 +321,7 @@ $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net0 -netdev vde,id=net0, Both the user and the VDE network back-end have low performance. For fast interconnect (10 Gbit/s and more) of the compute node (host) and the virtual machine (guest), we suggest using the Linux kernel TAP device. -Anselm provides the TAP device tap0 for your job. TAP interconnect does not provide any services (like NAT, DHCP, DNS, SMB, etc.) just raw networking, so you should provide your services if you need them. +Clusters provide the TAP device tap0 for your job. TAP interconnect does not provide any services (like NAT, DHCP, DNS, SMB, etc.) just raw networking, so you should provide your services if you need them. To enable the TAP interconect feature, you need to specify the `virt_network=True` PBS resource at job submit. diff --git a/docs.it4i/software/viz/openfoam.md b/docs.it4i/software/viz/openfoam.md index 06a2610d3..0edc16498 100644 --- a/docs.it4i/software/viz/openfoam.md +++ b/docs.it4i/software/viz/openfoam.md @@ -8,7 +8,7 @@ A free, open source CFD software package. ### Installed Version -Currently, several versions compiled by GCC/ICC compilers in single/double precision with several versions of OpenMPI are available on Anselm. +Currently, several versions are available compiled by GCC/ICC compilers in single/double precision with several versions of OpenMPI. The naming convention of the installed versions is: diff --git a/docs.it4i/software/viz/paraview.md b/docs.it4i/software/viz/paraview.md index 7036545ed..23488f372 100644 --- a/docs.it4i/software/viz/paraview.md +++ b/docs.it4i/software/viz/paraview.md @@ -29,25 +29,19 @@ $ qsub -I -q qprod -A OPEN-0-0 -l select=2 to launch an interactive session on 2 nodes. For details, refer to [Job Submission and Execution][1] section. -After the interactive session is opened, load the ParaView module (following are examples for Salomon, Anselm instructions in comments): +After the interactive session is opened, load the ParaView module: ```console $ ml ParaView/5.1.2-intel-2017a-mpi ``` -Now launch the parallel server, with the number of processes equal to the number of nodes times 24 (16 on Anselm): +Now launch the parallel server, with the number of processes equal to the number of nodes times 24: ```console $ mpirun -np 48 pvserver --use-offscreen-rendering Waiting for client... Connection URL: cs://r37u29n1006:11111 Accepting connection(s): r37u29n1006:11111i - -Anselm: -$ mpirun -np 32 pvserver --use-offscreen-rendering - Waiting for client... - Connection URL: cs://cn77:11111 - Accepting connection(s): cn77:11111 ``` Note that in this case, the server is listening on the compute node r37u29n1006, we will use this information later. @@ -58,10 +52,9 @@ Because a direct connection is not allowed to compute nodes on Salomon, you must ```console Salomon: $ ssh -TN -L 12345:r37u29n1006:11111 username@salomon.it4i.cz -Anselm: $ ssh -TN -L 12345:cn77:11111 username@anselm.it4i.cz ``` -replace username with your login and r37u29n1006 (cn77) with the name of the compute node on which your ParaView server is running (see the previous step). +Replace username with your login and r37u29n1006 with the name of the compute node on which your ParaView server is running (see the previous step). If you use PuTTY on Windows, load Salomon connection configuration, then go to *Connection* -> *SSH* -> *Tunnels* to set up the port forwarding. diff --git a/mkdocs.yml b/mkdocs.yml index 85566d3bf..6a0110eeb 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -82,12 +82,6 @@ nav: - Accessing the DGX-2: dgx2/accessing.md - Resource Allocation and Job Execution: dgx2/job_execution.md - Software deployment: dgx2/software.md - - Anselm: - - Introduction: anselm/introduction.md - - Hardware Overview: anselm/hardware-overview.md - - Compute Nodes: anselm/compute-nodes.md - - Storage: anselm/storage.md - - Network: anselm/network.md - Salomon: - Introduction: salomon/introduction.md - Hardware Overview: salomon/hardware-overview.md @@ -98,6 +92,13 @@ nav: - 7D Enhanced Hypercube: salomon/7d-enhanced-hypercube.md - Storage: salomon/storage.md - Visualization Servers: salomon/visualization.md + - Archive: + - Anselm: + - Introduction: anselm/introduction.md + - Hardware Overview: anselm/hardware-overview.md + - Compute Nodes: anselm/compute-nodes.md + - Storage: anselm/storage.md + - Network: anselm/network.md - Software: - Environment and Modules: environment-and-modules.md - Modules: @@ -106,7 +107,6 @@ nav: - Intel Xeon Phi Environment: software/mic/mic_environment.md - Modules Matrix: modules-matrix.md - Job Features: job-features.md - - Available Anselm Modules: modules-anselm.md - Available Barbora Modules: modules-barbora.md - Available Salomon Modules: modules-salomon.md - Available Salomon Modules on UV: modules-salomon-uv.md @@ -154,7 +154,6 @@ nav: - Intel Trace Analyzer and Collector: software/intel/intel-suite/intel-trace-analyzer-and-collector.md - Intel Xeon Phi: - Intel Xeon Phi Salomon: software/intel/intel-xeon-phi-salomon.md - - Intel Xeon Phi Anselm: software/intel/intel-xeon-phi-anselm.md - Machine Learning: - Introduction: software/machine-learning/introduction.md - TensorFlow: software/machine-learning/tensorflow.md @@ -177,7 +176,6 @@ nav: - GSL: software/numerical-libraries/gsl.md - HDF5: software/numerical-libraries/hdf5.md - Intel Numerical Libraries: software/numerical-libraries/intel-numerical-libraries.md - - MAGMA for Intel Xeon Phi: software/numerical-libraries/magma-for-intel-xeon-phi.md - PETSc: software/numerical-libraries/petsc.md - Trilinos: software/numerical-libraries/trilinos.md - Languages: diff --git a/snippets/resource_accounting.md b/snippets/resource_accounting.md index d2f7d3901..1e5c52a0c 100644 --- a/snippets/resource_accounting.md +++ b/snippets/resource_accounting.md @@ -3,8 +3,7 @@ ### Wall-Clock Core-Hours WCH The wall-clock core-hours (WCH) are the basic metric of computer utilization time. -1 wall-clock core-hour is defined as 1 processor core allocated for 1 hour of wall-clock time. Allocating a full node (16 cores Anselm, 24 cores Salomon) -for 1 hour amounts to 16 wall-clock core-hours (Anselm) or 24 wall-clock core-hours (Salomon). +1 wall-clock core-hour is defined as 1 processor core allocated for 1 hour of wall-clock time. For example, allocating a full node (i.e. 24 cores) on Salomon for 1 hour amounts to 24 wall-clock core-hours. ### Normalized Core-Hours NCH @@ -19,7 +18,6 @@ All jobs are accounted in normalized core-hours, using factor F valid at the tim | System | F | Validity | | --------------| ---: | -------- | -| Anselm | 0.65 | 2017-09-11 to 2021-03-31 | | Barbora CPU | 1.40 | 2020-02-01 to 2021-03-31 | | Barbora GPU | 4.50 | 2020-04-01 to 2021-03-31 | | DGX-2 |11.00 | 2020-04-01 to 2021-03-31 | -- GitLab