From 6fff8de9b95fac64c2880bd34b561ba448321aca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Krup=C4=8D=C3=ADk?= <lukas.krupcik@vsb.cz> Date: Fri, 5 Aug 2016 07:53:48 +0200 Subject: [PATCH] version 0.46 --- README.md | 8 +- .../outgoing-connections.md | 27 +- .../shell-and-data-access.md | 57 +- .../accessing-the-cluster/vpn-access.md | 38 +- .../compute-nodes.md | 415 +++------ .../environment-and-modules.md | 17 +- .../hardware-overview.md | 121 +-- .../introduction.md | 23 +- .../anselm-cluster-documentation/network.md | 23 +- .../anselm-cluster-documentation/prace.md | 167 ++-- .../remote-visualization.md | 46 +- .../capacity-computing.md | 89 +- .../introduction.md | 25 +- .../job-priority.md | 18 +- .../job-submission-and-execution.md | 108 +-- .../resources-allocation-policy.md | 210 ++--- .../software/ansys.md | 13 +- .../software/ansys/ansys-cfx.md | 11 - .../software/ansys/ansys-fluent.md | 85 +- .../software/ansys/ansys-ls-dyna.md | 11 - .../software/ansys/ansys-mechanical-apdl.md | 12 - .../software/ansys/ls-dyna.md | 11 - .../software/chemistry/molpro.md | 60 +- .../software/chemistry/nwchem.md | 58 +- .../software/compilers.md | 120 ++- .../software/comsol/comsol-multiphysics.md | 79 +- .../software/debuggers.md | 35 +- .../software/debuggers/allinea-ddt.md | 39 +- .../debuggers/allinea-performance-reports.md | 34 +- .../software/debuggers/cube.md | 41 +- .../intel-performance-counter-monitor.md | 389 ++++---- .../debuggers/intel-vtune-amplifier.md | 45 +- .../software/debuggers/papi.md | 246 +++-- .../software/debuggers/scalasca.md | 41 +- .../software/debuggers/score-p.md | 119 ++- .../software/debuggers/summary.md | 35 +- .../software/debuggers/total-view.md | 82 +- .../software/debuggers/valgrind.md | 396 ++++---- .../software/debuggers/vampir.md | 17 +- .../software/gpi2.md | 144 ++- .../software/intel-suite.md | 45 +- .../software/intel-suite/intel-compilers.md | 57 +- .../software/intel-suite/intel-debugger.md | 55 +- ...intel-integrated-performance-primitives.md | 105 +-- .../software/intel-suite/intel-mkl.md | 155 ++-- .../intel-parallel-studio-introduction.md | 45 +- .../software/intel-suite/intel-tbb.md | 31 +- .../software/intel-xeon-phi.md | 824 ++++++++--------- .../software/isv_licenses.md | 192 +--- .../software/java.md | 28 +- .../software/kvirtualization.md | 305 +++---- .../software/mpi-1/Running_OpenMPI.md | 179 ++-- .../software/mpi-1/mpi.md | 144 ++- .../software/mpi-1/mpi4py-mpi-for-python.md | 78 +- .../software/mpi-1/running-mpich2.md | 101 +-- .../numerical-languages/copy_of_matlab.md | 217 +++-- .../numerical-languages/introduction.md | 30 +- .../software/numerical-languages/matlab.md | 171 ++-- .../software/numerical-languages/octave.md | 96 +- .../software/numerical-languages/r.md | 384 ++++---- .../software/numerical-libraries/fftw.md | 164 +--- .../software/numerical-libraries/gsl.md | 187 ++-- .../software/numerical-libraries/hdf5.md | 171 +--- .../intel-numerical-libraries.md | 24 +- .../magma-for-intel-xeon-phi.md | 53 +- .../software/numerical-libraries/petsc.md | 94 +- .../software/numerical-libraries/trilinos.md | 52 +- .../software/nvidia-cuda.md | 419 +++++---- .../diagnostic-component-team.md | 21 +- .../software/omics-master-1/overview.md | 568 +++++------- .../priorization-component-bierapp.md | 14 - .../software/openfoam.md | 228 ++--- .../software/operating-system.md | 18 +- .../software/paraview.md | 34 +- .../storage-1/cesnet-data-storage.md | 39 +- .../storage-1/storage.md | 133 ++- .../cygwin-and-x11-forwarding.md | 61 +- .../graphical-user-interface.md | 21 +- .../graphical-user-interface/vnc.md | 26 +- .../x-window-system.md | 48 +- .../accessing-the-clusters/introduction.md | 11 - .../introduction.md | 11 - .../shell-access-and-data-transfer/pageant.md | 31 +- .../shell-access-and-data-transfer/putty.md | 99 +- .../puttygen.md | 107 +-- .../ssh-keys.md | 163 ++-- .../vpn-connection-fail-in-win-8.1.md | 34 +- .../shell-access-and-data-transfer/vpnuiV.png | Bin 0 -> 49733 bytes .../applying-for-resources.md | 15 +- .../introduction.md | 156 ---- .../certificates-faq.md | 70 +- .../obtaining-login-credentials.md | 180 ++-- converted/docs.it4i.cz/index.md | 93 +- .../salomon/accessing-the-cluster.md | 64 +- .../outgoing-connections.md | 27 +- .../accessing-the-cluster/vpn-access.md | 36 +- .../salomon/environment-and-modules.md | 43 +- .../hardware-overview-1/hardware-overview.md | 62 +- converted/docs.it4i.cz/salomon/index.md | 44 - .../docs.it4i.cz/salomon/introduction.md | 19 +- .../network-1/7d-enhanced-hypercube.md | 37 +- .../network-1/ib-single-plane-topology.md | 32 +- .../docs.it4i.cz/salomon/network-1/network.md | 25 +- converted/docs.it4i.cz/salomon/prace.md | 183 ++-- .../capacity-computing.md | 89 +- .../introduction.md | 27 +- .../job-priority.md | 18 +- .../job-submission-and-execution.md | 119 +-- .../resources-allocation-policy.md | 249 ++---- .../salomon/software/ansys/ansys-cfx.md | 95 +- .../salomon/software/ansys/ansys-fluent.md | 139 ++- .../salomon/software/ansys/ansys-ls-dyna.md | 76 +- .../software/ansys/ansys-mechanical-apdl.md | 98 +- ...ys-products-mechanical-fluent-cfx-mapdl.md | 13 +- .../salomon/software/ansys/ansys.md | 13 +- .../salomon/software/ansys/licensing.md | 37 +- .../ansys/setting-license-preferences.md | 13 +- .../salomon/software/ansys/workbench.md | 77 +- .../salomon/software/chemistry/molpro.md | 60 +- .../salomon/software/chemistry/nwchem.md | 48 +- .../salomon/software/chemistry/phono3py.md | 21 +- .../salomon/software/compilers.md | 148 ++- .../software/comsol/comsol-multiphysics.md | 79 +- .../licensing-and-available-versions.md | 35 +- .../salomon/software/debuggers.md | 35 +- .../salomon/software/debuggers/aislinn.md | 150 ++-- .../salomon/software/debuggers/allinea-ddt.md | 75 +- .../debuggers/allinea-performance-reports.md | 34 +- .../debuggers/intel-vtune-amplifier.md | 63 +- .../salomon/software/debuggers/summary.md | 35 +- .../salomon/software/debuggers/total-view.md | 66 +- .../salomon/software/debuggers/valgrind.md | 407 ++++----- .../salomon/software/debuggers/vampir.md | 17 +- .../software/intel-suite/intel-advisor.md | 31 +- .../software/intel-suite/intel-compilers.md | 59 +- .../software/intel-suite/intel-debugger.md | 57 +- .../software/intel-suite/intel-inspector.md | 31 +- ...intel-integrated-performance-primitives.md | 105 +-- .../salomon/software/intel-suite/intel-mkl.md | 155 ++-- .../intel-parallel-studio-introduction.md | 51 +- .../salomon/software/intel-suite/intel-tbb.md | 31 +- .../intel-trace-analyzer-and-collector.md | 28 +- .../salomon/software/intel-xeon-phi.md | 842 +++++++++--------- .../docs.it4i.cz/salomon/software/java.md | 28 +- .../salomon/software/mpi-1/Running_OpenMPI.md | 179 ++-- .../salomon/software/mpi-1/mpi.md | 123 ++- .../software/mpi-1/mpi4py-mpi-for-python.md | 76 +- .../numerical-languages/introduction.md | 30 +- .../software/numerical-languages/matlab.md | 217 +++-- .../software/numerical-languages/octave.md | 54 +- .../salomon/software/numerical-languages/r.md | 392 ++++---- .../salomon/software/operating-system.md | 18 +- .../salomon/storage/cesnet-data-storage.md | 39 +- .../docs.it4i.cz/salomon/storage/storage.md | 128 ++- html_md.sh | 89 +- source/formatting | 39 + source/list_image_mv.txt | 98 -- source/replace | 39 - source/tab | 34 - source/tabHTML | 9 - source/tabREPLACE | 34 + 161 files changed, 6296 insertions(+), 9730 deletions(-) create mode 100644 converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpnuiV.png delete mode 100644 converted/docs.it4i.cz/get-started-with-it4innovations/introduction.md delete mode 100644 converted/docs.it4i.cz/salomon/index.md create mode 100644 source/formatting delete mode 100644 source/list_image_mv.txt delete mode 100644 source/tabHTML create mode 100644 source/tabREPLACE diff --git a/README.md b/README.md index 86e467e29..884ba6df3 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -PĹ™evod html dokumentace do md formátu (version 0.45) - BETA +PĹ™evod html dokumentace do md formátu (version 0.46) - BETA =========================================================== VĂ˝sledkem projektu by mÄ›l bĂ˝t skript pro staĹľenĂ a pĹ™evod stávajĂcĂ dokumentace na docs.it4i.cz do md formátu @@ -21,9 +21,9 @@ Pro svou práci si naklonujete Gitem repozitář do svĂ©ho pracovnĂho adresář > * doba pĹ™evodu ~24min >**ZmÄ›ny v novĂ© verzi** -> * oprava odkazu na obrázky a vylepšenĂ© filtrovánĂ -> * pĹ™ehled o poÄŤtu souboru a stavu pĹ™evodu -> * formátovánĂ tabulek - nÄ›kterĂ© typy +> * optimalizace + měřenĂ ÄŤasu +> * rozdÄ›lenĂ filtrĹŻ podle kategorie +> * formátovánĂ tabulek, nahrazenĂ tabulek ### Funkce skriptu diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/outgoing-connections.md b/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/outgoing-connections.md index 77868ae93..aa9b5ccae 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/outgoing-connections.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/outgoing-connections.md @@ -1,17 +1,7 @@ Outgoing connections ==================== - - - - - - - - - - - + Connection restrictions ----------------------- @@ -19,12 +9,12 @@ Connection restrictions Outgoing connections, from Anselm Cluster login nodes to the outside world, are restricted to following ports: -Port Protocol ------- ---------- -22 ssh -80 http -443 https -9418 git + Port Protocol + ------ ---------- + 22 ssh + 80 http + 443 https + 9418 git Please use **ssh port forwarding** and proxy servers to connect from Anselm to all other remote ports. @@ -126,6 +116,3 @@ Use port forwarding to access the [proxy server from compute nodes](outgoing-connections.html#port-forwarding-from-compute-nodes) as well . - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/shell-and-data-access/shell-and-data-access.md b/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/shell-and-data-access/shell-and-data-access.md index 8bcf8a55f..54153190f 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/shell-and-data-access/shell-and-data-access.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/shell-and-data-access/shell-and-data-access.md @@ -1,17 +1,7 @@ Shell access and data transfer ============================== - - - - - - - - - - - + Interactive Login ----------------- @@ -20,11 +10,11 @@ The Anselm cluster is accessed by SSH protocol via login nodes login1 and login2 at address anselm.it4i.cz. The login nodes may be addressed specifically, by prepending the login node name to the address. -Login address Port Protocol Login node ------------------------ ------ ---------- ---------------------------------------------- -anselm.it4i.cz 22 ssh round-robin DNS record for login1 and login2 -login1.anselm.it4i.cz 22 ssh login1 -login2.anselm.it4i.cz 22 ssh login2 + Login address Port Protocol Login node + ----------------------- ------ ---------- ---------------------------------------------- + anselm.it4i.cz 22 ssh round-robin DNS record for login1 and login2 + login1.anselm.it4i.cz 22 ssh login1 + login2.anselm.it4i.cz 22 ssh login2 The authentication is by the [private key](../../../get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.html) @@ -56,19 +46,17 @@ client](../../../get-started-with-it4innovations/accessing-the-clusters/shell-ac After logging in, you will see the command prompt: - _ - / | | - / _ __ ___ ___| |_ __ ___ - / / | '_ / __|/ _ | '_ ` _ - / ____ | | | __ __/ | | | | | | - /_/ __| |_|___/___|_|_| |_| |_| - + _ + / | | + / _ __ ___ ___| |_ __ ___ + / / | '_ / __|/ _ | '_ ` _ + / ____ | | | __ __/ | | | | | | + /_/ __| |_|___/___|_|_| |_| |_| -                        http://www.it4i.cz/?lang=en +                        http://www.it4i.cz/?lang=en - - Last login: Tue Jul 9 15:57:38 2013 from your-host.example.com - [username@login2.anselm ~]$ + Last login: Tue Jul 9 15:57:38 2013 from your-host.example.com + [username@login2.anselm ~]$ The environment is **not** shared between login nodes, except for [shared filesystems](../storage-1.html#section-1). @@ -82,12 +70,12 @@ protocols. class="discreet">(Not available yet.) In case large volumes of data are transferred, use dedicated data mover node dm1.anselm.it4i.cz for increased performance. -Address Port Protocol --------------------------------------------------- ---------------------------------- ----------------------------------------- -anselm.it4i.cz 22 scp, sftp -login1.anselm.it4i.cz 22 scp, sftp -login2.anselm.it4i.cz 22 scp, sftp - class="discreet">dm1.anselm.it4i.cz 22 class="discreet">scp, sftp</span> + Address Port Protocol + -------------------------------------------------- ---------------------------------- ----------------------------------------- + anselm.it4i.cz 22 scp, sftp + login1.anselm.it4i.cz 22 scp, sftp + login2.anselm.it4i.cz 22 scp, sftp + class="discreet">dm1.anselm.it4i.cz 22 class="discreet">scp, sftp</span>  The authentication is by the [private key](../../../get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.html) @@ -147,6 +135,3 @@ way to mount the Anselm filesystems directly as an external disc. More information about the shared file systems is available [here](../../storage.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/vpn-access.md b/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/vpn-access.md index 99df6595c..5ed6a2e02 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/vpn-access.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/vpn-access.md @@ -1,17 +1,7 @@ VPN Access ========== - - - - - - - - - - - + Accessing IT4Innovations internal resources via VPN --------------------------------------------------- @@ -28,12 +18,12 @@ local network, it is necessary to VPN connect to this network. We use Cisco AnyConnect Secure Mobility Client, which is supported on the following operating systems: -- >Windows XP -- >Windows Vista -- >Windows 7 -- >Windows 8 -- >Linux -- >MacOS +- >Windows XP +- >Windows Vista +- >Windows 7 +- >Windows 8 +- >Linux +- >MacOS It is impossible to connect to VPN from other operating systems. @@ -50,10 +40,8 @@ automatically installs, or downloads installation file for your operating system. It is necessary to allow start of installation tool for automatic installation. -  - access](../executionaccess.jpg/@@images/4d6e7cb7-9aa7-419c-9583-6dfd92b2c015.jpeg "Execution access") access  @@ -61,18 +49,15 @@ access After successful installation, VPN connection will be established and you can use available resources from IT4I network. -  If your Java setting doesn't allow automatic installation, you can download installation file and install VPN client manually. -  After you click on the link, download of installation file will start. -  After successful download of installation file, you have to execute this @@ -84,8 +69,6 @@ Working with VPN client You can use graphical user interface or command line interface to run VPN client on all supported operating systems. We suggest using GUI. - - Before the first login to VPN, you have to fill URL **https://vpn1.it4i.cz/anselm** into the text field. @@ -99,13 +82,11 @@ credentials. After a successful login, the client will minimize to the system tray. If everything works, you can see a lock in the Cisco tray icon. -  If you right-click on this icon, you will see a context menu in which you can control the VPN connection. -  When you connect to the VPN for the first time, the client downloads the @@ -117,18 +98,13 @@ but just select the corresponding item. Then AnyConnect automatically proceeds like in the case of first logon. -  After a successful logon, you can see a green circle with a tick mark on the lock icon. -  For disconnecting, right-click on the AnyConnect client icon in the system tray and select **VPN Disconnect**. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/compute-nodes.md b/converted/docs.it4i.cz/anselm-cluster-documentation/compute-nodes.md index ae39e5e76..69f7661af 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/compute-nodes.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/compute-nodes.md @@ -1,297 +1,243 @@ Compute Nodes ============= - - - - - - - - - - - + Nodes Configuration ------------------- Anselm is cluster of x86-64 Intel based nodes built on Bull Extreme Computing bullx technology. The cluster contains four types of compute -nodes.**** - -###Compute Nodes Without Accelerator** - - -- +nodes. - 180 nodes +###Compute Nodes Without Accelerator - +- -- + 180 nodes - 2880 cores in total + - +- -- + 2880 cores in total - two Intel Sandy Bridge E5-2665, 8-core, 2.4GHz processors per node + - +- -- + two Intel Sandy Bridge E5-2665, 8-core, 2.4GHz processors per node - 64 GB of physical memory per node + - +- -- one 500GB SATA 2,5” 7,2 krpm HDD per node -- + 64 GB of physical memory per node - bullx B510 blade servers + - +- one 500GB SATA 2,5” 7,2 krpm HDD per node +- -- + bullx B510 blade servers - cn[1-180] + - +- -###Compute Nodes With GPU Accelerator** + cn[1-180] -- + - 23 nodes +###Compute Nodes With GPU Accelerator - +- -- + 23 nodes - 368 cores in total + - +- -- + 368 cores in total - two Intel Sandy Bridge E5-2470, 8-core, 2.3GHz processors per node + - +- -- + two Intel Sandy Bridge E5-2470, 8-core, 2.3GHz processors per node - 96 GB of physical memory per node + - +- -- one 500GB SATA 2,5” 7,2 krpm HDD per node -- + 96 GB of physical memory per node - GPU accelerator 1x NVIDIA Tesla Kepler K20 per node + - +- one 500GB SATA 2,5” 7,2 krpm HDD per node +- -- + GPU accelerator 1x NVIDIA Tesla Kepler K20 per node - bullx B515 blade servers + - +- -- + bullx B515 blade servers - cn[181-203] + - +- -###Compute Nodes With MIC Accelerator** + cn[181-203] -- + - 4 nodes +###Compute Nodes With MIC Accelerator - +- -- + 4 nodes - 64 cores in total + - +- -- + 64 cores in total - two Intel Sandy Bridge E5-2470, 8-core, 2.3GHz processors per node + - +- -- + two Intel Sandy Bridge E5-2470, 8-core, 2.3GHz processors per node - 96 GB of physical memory per node + - +- -- one 500GB SATA 2,5” 7,2 krpm HDD per node -- + 96 GB of physical memory per node - MIC accelerator 1x Intel Phi 5110P per node + - +- one 500GB SATA 2,5” 7,2 krpm HDD per node +- -- + MIC accelerator 1x Intel Phi 5110P per node - bullx B515 blade servers + - +- -- + bullx B515 blade servers - cn[204-207] + - +- -###Fat Compute Nodes** + cn[204-207] -- + - 2 nodes +###Fat Compute Nodes - +- -- + 2 nodes - 32 cores in total + - +- -- + 32 cores in total - 2 Intel Sandy Bridge E5-2665, 8-core, 2.4GHz processors per node + - +- -- + 2 Intel Sandy Bridge E5-2665, 8-core, 2.4GHz processors per node - 512 GB of physical memory per node + - +- -- two 300GB SAS 3,5”15krpm HDD (RAID1) per node -- + 512 GB of physical memory per node - two 100GB SLC SSD per node + - +- two 300GB SAS 3,5”15krpm HDD (RAID1) per node +- -- + two 100GB SLC SSD per node - bullx R423-E3 servers + - +- -- + bullx R423-E3 servers - cn[208-209] + - +- + cn[208-209] +  -  -**Figure Anselm bullx B510 servers**** - -### Compute Nodes Summary******** - -Node type Count Range Memory Cores [Access](resource-allocation-and-job-execution/resources-allocation-policy.html) ----------------------------- ------- --------------- -------- ------------- -------------------------------------------------------------------------------------------------- -Nodes without accelerator 180 cn[1-180] 64GB 16 @ 2.4Ghz qexp, qprod, qlong, qfree -Nodes with GPU accelerator 23 cn[181-203] 96GB 16 @ 2.3Ghz qgpu, qprod -Nodes with MIC accelerator 4 cn[204-207] 96GB 16 @ 2.3GHz qmic, qprod -Fat compute nodes 2 cn[208-209] 512GB 16 @ 2.4GHz qfat, qprod - - - - +**Figure Anselm bullx B510 servers** +### Compute Nodes Summary + |Node type|Count|Range|Memory|Cores|[Access](resource-allocation-and-job-execution/resources-allocation-policy.html)| + |---|---|---|---|---|---| + |Nodes without accelerator|180|cn[1-180]|64GB|16 @ 2.4Ghz|qexp, qprod, qlong, qfree| + |Nodes with GPU accelerator|23|cn[181-203]|96GB|16 @ 2.3Ghz|qgpu, qprod| + |Nodes with MIC accelerator|4|cn[204-207]|96GB|16 @ 2.3GHz|qmic, qprod| + |Fat compute nodes|2|cn[208-209]|512GB|16 @ 2.4GHz|qfat, qprod| Processor Architecture ---------------------- - - - - - - Anselm is equipped with Intel Sandy Bridge processors Intel Xeon E5-2665 (nodes without accelerator and fat nodes) and Intel Xeon E5-2470 (nodes with accelerator). Processors support Advanced Vector Extensions (AVX) 256-bit instruction set. - - - - ### Intel Sandy Bridge E5-2665 Processor +- eight-core +- speed: 2.4 GHz, up to 3.1 GHz using Turbo Boost Technology +- peak performance: 19.2 Gflop/s per + core +- caches: + + - L2: 256 KB per core + - L3: 20 MB per processor + - - - - -- eight-core -- speed: 2.4 GHz, up to 3.1 GHz using Turbo Boost Technology -- peak performance: 19.2 Gflop/s per - core -- caches: - - - - L2: 256 KB per core - - L3: 20 MB per processor - - - -- memory bandwidth at the level of the processor: 51.2 GB/s - - - - - - - - +- memory bandwidth at the level of the processor: 51.2 GB/s ### Intel Sandy Bridge E5-2470 Processor +- eight-core +- speed: 2.3 GHz, up to 3.1 GHz using Turbo Boost Technology +- peak performance: 18.4 Gflop/s per + core +- caches: + + - L2: 256 KB per core + - L3: 20 MB per processor + - - - - -- eight-core -- speed: 2.3 GHz, up to 3.1 GHz using Turbo Boost Technology -- peak performance: 18.4 Gflop/s per - core -- caches: - - - - L2: 256 KB per core - - L3: 20 MB per processor - - - -- memory bandwidth at the level of the processor: 38.4 GB/s - - +- memory bandwidth at the level of the processor: 38.4 GB/s  @@ -299,129 +245,62 @@ Nodes equipped with Intel Xeon E5-2665 CPU have set PBS resource attribute cpu_freq = 24, nodes equipped with Intel Xeon E5-2470 CPU have set PBS resource attribute cpu_freq = 23. - - ``` $ 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 at 2.4GHhz per node. - - - - - - - - Intel Turbo Boost Technology is used by default, you can disable it for all nodes of job by using resource attribute cpu_turbo_boost. - - - $ qsub -A OPEN-0-0 -q qprod -l select=4:ncpus=16 -l cpu_turbo_boost=0 -I + $ qsub -A OPEN-0-0 -q qprod -l select=4:ncpus=16 -l cpu_turbo_boost=0 -I Memory Architecture ------------------- - - - - ### Compute Node Without Accelerator +- 2 sockets +- Memory Controllers are integrated into processors. + + - 8 DDR3 DIMMS per node + - 4 DDR3 DIMMS per CPU + - 1 DDR3 DIMMS per channel + - Data rate support: up to 1600MT/s + - - - - -- 2 sockets -- Memory Controllers are integrated into processors. - - - - 8 DDR3 DIMMS per node - - 4 DDR3 DIMMS per CPU - - 1 DDR3 DIMMS per channel - - Data rate support: up to 1600MT/s - - - -- Populated memory: 8x 8GB DDR3 DIMM 1600Mhz - - - - - - - - +- Populated memory: 8x 8GB DDR3 DIMM 1600Mhz ### Compute Node With GPU or MIC Accelerator +- 2 sockets +- Memory Controllers are integrated into processors. + + - 6 DDR3 DIMMS per node + - 3 DDR3 DIMMS per CPU + - 1 DDR3 DIMMS per channel + - Data rate support: up to 1600MT/s + - - - - -- 2 sockets -- Memory Controllers are integrated into processors. - - - - 6 DDR3 DIMMS per node - - 3 DDR3 DIMMS per CPU - - 1 DDR3 DIMMS per channel - - Data rate support: up to 1600MT/s - - - -- Populated memory: 6x 16GB DDR3 DIMM 1600Mhz - - - - - - - - +- Populated memory: 6x 16GB DDR3 DIMM 1600Mhz ### Fat Compute Node +- 2 sockets +- Memory Controllers are integrated into processors. + + - 16 DDR3 DIMMS per node + - 8 DDR3 DIMMS per CPU + - 2 DDR3 DIMMS per channel + - Data rate support: up to 1600MT/s + - - - - -- 2 sockets -- Memory Controllers are integrated into processors. - - - - 16 DDR3 DIMMS per node - - 8 DDR3 DIMMS per CPU - - 2 DDR3 DIMMS per channel - - Data rate support: up to 1600MT/s - - - -- Populated memory: 16x 32GB DDR3 DIMM 1600Mhz - - - - - - - - - +- Populated memory: 16x 32GB DDR3 DIMM 1600Mhz diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/environment-and-modules.md b/converted/docs.it4i.cz/anselm-cluster-documentation/environment-and-modules.md index c8ee979a4..552b4504d 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/environment-and-modules.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/environment-and-modules.md @@ -1,17 +1,7 @@ Environment and Modules ======================= - - - - - - - - - - - + ### Environment Customization @@ -24,7 +14,7 @@ preferred path definitions, aliases, functions and module loads in the # Source global definitions if [ -f /etc/bashrc ]; then - . /etc/bashrc + . /etc/bashrc fi # User specific aliases and functions @@ -122,6 +112,3 @@ this command to the .bashrc file to expand paths permanently. After this command, you can use same commands to list/add/remove modules as is described above. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/hardware-overview.md b/converted/docs.it4i.cz/anselm-cluster-documentation/hardware-overview.md index e47a9f9f4..4a09c7799 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/hardware-overview.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/hardware-overview.md @@ -1,22 +1,12 @@ Hardware Overview ================= - - - - - - - - - - - + The Anselm cluster consists of 209 computational nodes named cn[1-209] of which 180 are regular compute nodes, 23 GPU Kepler K20 accelerated nodes, 4 MIC Xeon Phi 5110 accelerated nodes and 2 fat nodes. Each node -is a class="WYSIWYG_LINK">powerful x86-64 computer, +is a powerful x86-64 computer, equipped with 16 cores (two eight-core Intel Sandy Bridge processors), at least 64GB RAM, and local hard drive. The user access to the Anselm cluster is provided by two login nodes login[1,2]. The nodes are @@ -34,27 +24,24 @@ request](https://support.it4i.cz/rt) made by a PI. Schematic representation of the Anselm cluster. Each box represents a node (computer) or storage capacity: - User-oriented infrastructure Storage Management infrastructure --------- -login1 -login2 -dm1 --------- + -------- + login1 + login2 + dm1 + -------- Rack 01, Switch isw5 - --------------- -------------- -------------- -------------- -------------- -cn186 cn187 cn188 cn189 -cn181 cn182 cn183 cn184 cn185 --------------- -------------- -------------- -------------- -------------- + -------------- -------------- -------------- -------------- -------------- + cn186 cn187 cn188 cn189 + cn181 cn182 cn183 cn184 cn185 + -------------- -------------- -------------- -------------- -------------- Rack 01, Switch isw4 - cn29 cn30 cn31 @@ -73,27 +60,9 @@ cn25 cn26 cn27 cn28 -<table> -<colgroup> <col width="100%" /> -</colgroup> -<tbody> -<tr class="odd"> -<td align="left"><p> </p> -<p> </p> -<p>Lustre FS</p> -<p>/home<br /> -320TB</p> -<p> </p> -<p> </p></td> -</tr> -<tr class="even"> -<td align="left"><p>Lustre FS</p> -<p>/scratch<br /> -146TB</p></td> -</tr> -</tbody> -</table> + | <p> <p>Lustre FS<p>/home320TB<p> <p> \ | + |Lustre FS<p>/scratch146TB\ | Management nodes @@ -109,7 +78,6 @@ Srv node ... Rack 01, Switch isw0 - cn11 cn12 cn13 @@ -130,7 +98,6 @@ cn9 cn10 Rack 02, Switch isw10 - cn73 cn74 cn75 @@ -146,7 +113,6 @@ cn205 cn206 Rack 02, Switch isw9 - cn65 cn66 cn67 @@ -167,7 +133,6 @@ cn63 cn64 Rack 02, Switch isw6 - cn47 cn48 cn49 @@ -188,7 +153,6 @@ cn45 cn46 Rack 03, Switch isw15 - cn193 cn194 cn195 @@ -205,7 +169,6 @@ cn125 cn126 Rack 03, Switch isw14 - cn109 cn110 cn111 @@ -226,7 +189,6 @@ cn107 cn108 Rack 03, Switch isw11 - cn91 cn92 cn93 @@ -247,7 +209,6 @@ cn89 cn90 Rack 04, Switch isw20 - cn173 cn174 cn175 @@ -268,7 +229,6 @@ cn171 cn172 Rack 04, **Switch** isw19 - cn155 cn156 cn157 @@ -289,7 +249,6 @@ cn153 cn154 Rack 04, Switch isw16 - cn137 cn138 cn139 @@ -310,30 +269,27 @@ cn135 cn136 Rack 05, Switch isw21 + -------------- -------------- -------------- -------------- -------------- + cn201 cn202 cn203 cn204 + cn196 cn197 cn198 cn199 cn200 + -------------- -------------- -------------- -------------- -------------- --------------- -------------- -------------- -------------- -------------- -cn201 cn202 cn203 cn204 -cn196 cn197 cn198 cn199 cn200 --------------- -------------- -------------- -------------- -------------- - ----------------- -Fat node cn208 -Fat node cn209 -... ----------------- - - + ---------------- + Fat node cn208 + Fat node cn209 + ... + ---------------- The cluster compute nodes cn[1-207] are organized within 13 chassis. There are four types of compute nodes: -- 180 compute nodes without the accelerator -- 23 compute nodes with GPU accelerator - equipped with NVIDIA Tesla - Kepler K20 -- 4 compute nodes with MIC accelerator - equipped with Intel Xeon Phi - 5110P -- 2 fat nodes - equipped with 512GB RAM and two 100GB SSD drives +- 180 compute nodes without the accelerator +- 23 compute nodes with GPU accelerator - equipped with NVIDIA Tesla + Kepler K20 +- 4 compute nodes with MIC accelerator - equipped with Intel Xeon Phi + 5110P +- 2 fat nodes - equipped with 512GB RAM and two 100GB SSD drives [More about Compute nodes](compute-nodes.html). @@ -342,9 +298,9 @@ Allocation Policy](resource-allocation-and-job-execution/resources-allocation-policy.html). All these nodes are interconnected by fast -class="WYSIWYG_LINK">InfiniBand class="WYSIWYG_LINK">QDR +InfiniBand class="WYSIWYG_LINK">QDR network and Ethernet network. [More about the -class="WYSIWYG_LINK">Network](network.html). +Network](network.html). Every chassis provides Infiniband switch, marked **isw**, connecting all nodes in the chassis, as well as connecting the chassis to the upper level switches. @@ -354,7 +310,7 @@ shared /scratch storage is available for the scratch data. These file systems are provided by Lustre parallel file system. There is also local disk storage available on all compute nodes /lscratch. [More about -class="WYSIWYG_LINK">Storage](storage.html). +Storage](storage.html). The user access to the Anselm cluster is provided by two login nodes login1, login2, and data mover node dm1. [More about accessing @@ -395,18 +351,15 @@ Total max. LINPACK performance (Rmax) 73 Tflop/s Total amount of RAM 15.136 TB -Node Processor Memory Accelerator ------------------- --------------------------------------- -------- ---------------------- -w/o accelerator 2x Intel Sandy Bridge E5-2665, 2.4GHz 64GB - -GPU accelerated 2x Intel Sandy Bridge E5-2470, 2.3GHz 96GB NVIDIA Kepler K20 -MIC accelerated 2x Intel Sandy Bridge E5-2470, 2.3GHz 96GB Intel Xeon Phi P5110 -Fat compute node 2x Intel Sandy Bridge E5-2665, 2.4GHz 512GB - + |Node|Processor|Memory|Accelerator| + |---|---|---|---| + |w/o accelerator|2x Intel Sandy Bridge E5-2665, 2.4GHz|64GB|-| + |GPU accelerated|2x Intel Sandy Bridge E5-2470, 2.3GHz|96GB|NVIDIA Kepler K20| + |MIC accelerated|2x Intel Sandy Bridge E5-2470, 2.3GHz|96GB|Intel Xeon Phi P5110| + |Fat compute node|2x Intel Sandy Bridge E5-2665, 2.4GHz|512GB|-|  For more details please refer to the [Compute nodes](compute-nodes.html), [Storage](storage.html), and [Network](network.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/introduction.md b/converted/docs.it4i.cz/anselm-cluster-documentation/introduction.md index 8c5f98f71..68a2e10aa 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/introduction.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/introduction.md @@ -1,22 +1,12 @@ Introduction ============ - - - - - - - - - - - + Welcome to Anselm supercomputer cluster. The Anselm cluster consists of 209 compute nodes, totaling 3344 compute cores with 15TB RAM and giving over 94 Tflop/s theoretical peak performance. Each node is a -class="WYSIWYG_LINK">powerful x86-64 computer, equipped with 16 +powerful x86-64 computer, equipped with 16 cores, at least 64GB RAM, and 500GB harddrive. Nodes are interconnected by fully non-blocking fat-tree Infiniband network and equipped with Intel Sandy Bridge processors. A few nodes are also equipped with NVIDIA @@ -24,10 +14,10 @@ Kepler GPU or Intel Xeon Phi MIC accelerators. Read more in [Hardware Overview](hardware-overview.html). The cluster runs bullx Linux [ -class="WYSIWYG_LINK">](http://www.bull.com/bullx-logiciels/systeme-exploitation.html)[operating +](http://www.bull.com/bullx-logiciels/systeme-exploitation.html)[operating system](software/operating-system.html), which is -compatible with the class="WYSIWYG_LINK">RedHat [ -class="WYSIWYG_LINK">Linux +compatible with the RedHat [ +Linux family.](http://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg) We have installed a wide range of [software](software.1.html) packages targeted at @@ -47,6 +37,3 @@ resources](../get-started-with-it4innovations/applying-for-resources.html), credentials,](../get-started-with-it4innovations/obtaining-login-credentials.html) and [access the cluster](accessing-the-cluster.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/network.md b/converted/docs.it4i.cz/anselm-cluster-documentation/network.md index 375b9fd49..bc1478be1 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/network.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/network.md @@ -1,17 +1,7 @@ Network ======= - - - - - - - - - - - + All compute and login nodes of Anselm are interconnected by [Infiniband](http://en.wikipedia.org/wiki/InfiniBand) @@ -53,11 +43,11 @@ Example ``` $ qsub -q qexp -l select=4:ncpus=16 -N Name0 ./myjob $ qstat -n -u username - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -15209.srv11 username qexp Name0 5530 4 64 -- 01:00 R 00:00 - cn17/0*16+cn108/0*16+cn109/0*16+cn110/0*16 +15209.srv11 username qexp Name0 5530 4 64 -- 01:00 R 00:00 + cn17/0*16+cn108/0*16+cn109/0*16+cn110/0*16 $ ssh 10.2.1.110 $ ssh 10.1.1.108 @@ -66,6 +56,3 @@ $ ssh 10.1.1.108 In this example, we access the node cn110 by Infiniband network via the ib0 interface, then from cn110 to cn108 by Ethernet network. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/prace.md b/converted/docs.it4i.cz/anselm-cluster-documentation/prace.md index ba5c31d02..6d73d1df1 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/prace.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/prace.md @@ -1,17 +1,7 @@ PRACE User Support ================== - - - - - - - - - - - + Intro ----- @@ -78,28 +68,28 @@ project for LDAP account creation). Most of the information needed by PRACE users accessing the Anselm TIER-1 system can be found here: -- [General user's - FAQ](http://www.prace-ri.eu/Users-General-FAQs) -- [Certificates - FAQ](http://www.prace-ri.eu/Certificates-FAQ) -- [Interactive access using - GSISSH](http://www.prace-ri.eu/Interactive-Access-Using-gsissh) -- [Data transfer with - GridFTP](http://www.prace-ri.eu/Data-Transfer-with-GridFTP-Details) -- [Data transfer with - gtransfer](http://www.prace-ri.eu/Data-Transfer-with-gtransfer) +- [General user's + FAQ](http://www.prace-ri.eu/Users-General-FAQs) +- [Certificates + FAQ](http://www.prace-ri.eu/Certificates-FAQ) +- [Interactive access using + GSISSH](http://www.prace-ri.eu/Interactive-Access-Using-gsissh) +- [Data transfer with + GridFTP](http://www.prace-ri.eu/Data-Transfer-with-GridFTP-Details) +- [Data transfer with + gtransfer](http://www.prace-ri.eu/Data-Transfer-with-gtransfer)  Before you start to use any of the services don't forget to create a proxy certificate from your certificate: - $ grid-proxy-init + $ grid-proxy-init To check whether your proxy certificate is still valid (by default it's valid 12 hours), use: - $ grid-proxy-info + $ grid-proxy-info  @@ -114,20 +104,20 @@ anselm-prace.it4i.cz which is distributed between the two login nodes. If needed, user can login directly to one of the login nodes. The addresses are: -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 + 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  - $ gsissh -p 2222 anselm-prace.it4i.cz + $ gsissh -p 2222 anselm-prace.it4i.cz When logging from other PRACE system, the prace_service script can be used: - $ gsissh `prace_service -i -s anselm` + $ gsissh `prace_service -i -s anselm`  @@ -138,18 +128,18 @@ anselm.it4i.cz which is distributed between the two login nodes. If needed, user can login directly to one of the login nodes. The addresses are: -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 + 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 - $ gsissh -p 2222 anselm.it4i.cz + $ gsissh -p 2222 anselm.it4i.cz When logging from other PRACE system, the prace_service script can be used: - $ gsissh `prace_service -e -s anselm` + $ gsissh `prace_service -e -s anselm`  @@ -158,13 +148,13 @@ GridFTP](prace.html#file-transfers), the GSI SSH implementation on Anselm supports also SCP, so for small files transfer gsiscp can be used: - $ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ anselm.it4i.cz:_ANSELM_PATH_TO_YOUR_FILE_ + $ 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 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 _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_ + $ gsiscp -P 2222 anselm-prace.it4i.cz:_ANSELM_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ ### Access to X11 applications (VNC) @@ -179,7 +169,7 @@ the SSH based access ([look here](https://docs.it4i.cz/anselm-cluster-documentation/resolveuid/11e53ad0d2fd4c5187537f4baeedff33)), only the port forwarding must be done using GSI SSH: - $ gsissh -p 2222 anselm.it4i.cz -L 5961:localhost:5961 + $ gsissh -p 2222 anselm.it4i.cz -L 5961:localhost:5961 ### Access with SSH @@ -208,66 +198,66 @@ backup in case one of them would fail. Access from PRACE network:** -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 + 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: - $ 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_ + $ 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: - $ 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_ + $ 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** Anselm: - $ 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_ + $ 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 prace_service script: - $ 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_ + $ 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:** -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 + 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: - $ 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_ + $ 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 prace_service script: - $ 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_ + $ 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** Anselm: - $ 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_ + $ 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 prace_service script: - $ 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_ + $ 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 -------------------------- ------------ ---------------------------------------------------------------- -/home Lustre Default HOME directories of users in format /home/prace/login/ -/scratch Lustre Shared SCRATCH mounted on the whole cluster + File system mount point Filesystem Comment + ------------------------- ------------ ---------------------------------------------------------------- + /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 [here](storage.html). @@ -298,7 +288,7 @@ PRACE users can use the "prace" module to use the [PRACE Common Production Environment](http://www.prace-ri.eu/PRACE-common-production). - $ module load prace + $ module load prace  @@ -311,20 +301,20 @@ documentation](resource-allocation-and-job-execution/introduction.html). For PRACE users, the default production run queue is "qprace". PRACE users can also use two other queues "qexp" and "qfree". -------------------------------------------------------------------------------------------------------------------------- -queue Active project Project resources Nodes priority authorization walltime - default/max ---------------------- ---------------- ------------------- --------------------- ---------- --------------- ------------- -qexp** no none required 2 reserved, high no 1 / 1h -Express queue 8 total + ------------------------------------------------------------------------------------------------------------------------- + queue Active project Project resources Nodes priority authorization walltime + default/max + --------------------- -|---|---|---|- ---------- --------------- ------------- + **qexp** no none required 2 reserved, high no 1 / 1h + Express queue 8 total -qprace** yes > 0 178 w/o accelerator medium no 24 / 48h -Production queue - + **qprace** yes > 0 178 w/o accelerator medium no 24 / 48h + Production queue + -qfree** yes none required 178 w/o accelerator very low no 12 / 12h -Free resource queue -------------------------------------------------------------------------------------------------------------------------- + **qfree** yes none required 178 w/o accelerator very low no 12 / 12h + Free resource queue + ------------------------------------------------------------------------------------------------------------------------- qprace**, the PRACE Production queue****: This queue is intended for normal production runs. It is required that active project with nonzero @@ -359,20 +349,20 @@ The **it4ifree** command is a part of it4i.portal.clients package, located here: <https://pypi.python.org/pypi/it4i.portal.clients> - $ it4ifree - Password: -     PID  Total Used ...by me Free -   -------- ------- ------ -------- ------- -   OPEN-0-0 1500000 400644  225265 1099356 -   DD-13-1   10000 2606 2606 7394 + $ it4ifree + Password: +     PID  Total Used ...by me Free +   -------- ------- ------ -------- ------- +   OPEN-0-0 1500000 400644  225265 1099356 +   DD-13-1   10000 2606 2606 7394  By default file system quota is applied. To check the current status of the quota use - $ lfs quota -u USER_LOGIN /home - $ lfs quota -u USER_LOGIN /scratch + $ lfs quota -u USER_LOGIN /home + $ lfs quota -u USER_LOGIN /scratch If the quota is insufficient, please contact the [support](prace.html#help-and-support) and request an @@ -382,6 +372,3 @@ increase.  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/remote-visualization.md b/converted/docs.it4i.cz/anselm-cluster-documentation/remote-visualization.md index 41c9e40ed..9aa01f36a 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/remote-visualization.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/remote-visualization.md @@ -1,14 +1,6 @@ Remote visualization service ============================ - - - - - - - - Introduction ------------ @@ -166,8 +158,6 @@ Access the visualization node To access the node use a dedicated PBS Professional scheduler queue qviz**. The queue has following properties: -<table> -<colgroup> <col width="12%" /> <col width="12%" /> <col width="12%" /> @@ -176,33 +166,9 @@ qviz**. The queue has following properties: <col width="12%" /> <col width="12%" /> <col width="12%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">queue</th> -<th align="left">active project</th> -<th align="left">project resources</th> -<th align="left">nodes</th> -<th align="left">min ncpus*</th> -<th align="left">priority</th> -<th align="left">authorization</th> -<th align="left">walltime<br /> -default/max</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left"><p><strong>qviz              </strong> Visualization queue</p></td> -<td align="left">yes</td> -<td align="left">none required</td> -<td align="left">2</td> -<td align="left">4</td> -<td align="left">><em>150</em></td> -<td align="left">no</td> -<td align="left">1 hour / 2 hours</td> -</tr> -</tbody> -</table> + |queue |active project<th align="left">project resources<th align="left">nodes<th align="left">min ncpus*<th align="left">priority<th align="left">authorization<th align="left">walltimedefault/max | + | --- | --- | + |<strong>qviz              </strong> Visualization queue\<td align="left">yes<td align="left">none required<td align="left">2<td align="left">4<td align="left">><em>150</em><td align="left">no<td align="left">1 hour / 2 hours | Currently when accessing the node, each user gets 4 cores of a CPU allocated, thus approximately 16 GB of RAM and 1/4 of the GPU capacity. @@ -306,9 +272,3 @@ quality three levels of "JPEG image quality" are demonstrated:  - - - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/capacity-computing.md b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/capacity-computing.md index 1c23802df..32786d7e7 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/capacity-computing.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/capacity-computing.md @@ -1,17 +1,7 @@ Capacity computing ================== - - - - - - - - - - - + Introduction ------------ @@ -31,24 +21,24 @@ per user, 1000 per job array** Please follow one of the procedures below, in case you wish to schedule more than >100 jobs at a time. -- Use [Job arrays](capacity-computing.html#job-arrays) - when running huge number of - [multithread](capacity-computing.html#shared-jobscript-on-one-node) - (bound to one node only) or multinode (multithread across - several nodes) jobs -- Use [GNU - parallel](capacity-computing.html#gnu-parallel) when - running single core jobs -- Combine[GNU parallel with Job - arrays](capacity-computing.html#combining-job-arrays-and-gnu-parallel) - when running huge number of single core jobs +- Use [Job arrays](capacity-computing.html#job-arrays) + when running huge number of + [multithread](capacity-computing.html#shared-jobscript-on-one-node) + (bound to one node only) or multinode (multithread across + several nodes) jobs +- Use [GNU + parallel](capacity-computing.html#gnu-parallel) when + running single core jobs +- Combine[GNU parallel with Job + arrays](capacity-computing.html#combining-job-arrays-and-gnu-parallel) + when running huge number of single core jobs Policy ------ -1.A user is allowed to submit at most 100 jobs. Each job may be [a job - array](capacity-computing.html#job-arrays). -2.The array size is at most 1000 subjobs. +1. A user is allowed to submit at most 100 jobs. Each job may be [a job + array](capacity-computing.html#job-arrays). +2. The array size is at most 1000 subjobs. Job arrays -------------- @@ -59,9 +49,9 @@ A job array is a compact representation of many jobs, called subjobs. The subjobs share the same job script, and have the same values for all attributes and resources, with the following exceptions: -- each subjob has a unique index, $PBS_ARRAY_INDEX -- job Identifiers of subjobs only differ by their indices -- the state of subjobs can differ (R,Q,...etc.) +- each subjob has a unique index, $PBS_ARRAY_INDEX +- job Identifiers of subjobs only differ by their indices +- the state of subjobs can differ (R,Q,...etc.) All subjobs within a job array have the same scheduling priority and schedule as independent jobs. @@ -100,7 +90,7 @@ 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) +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 . @@ -165,10 +155,10 @@ Check status of the job array by the qstat command. $ qstat -a 12345[].dm2 dm2: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -12345[].dm2 user2 qprod xx 13516 1 16 -- 00:50 B 00:02 +12345[].dm2 user2 qprod xx 13516 1 16 -- 00:50 B 00:02 ``` The status B means that some subjobs are already running. @@ -179,16 +169,16 @@ Check status of the first 100 subjobs by the qstat command. $ qstat -a 12345[1-100].dm2 dm2: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -12345[1].dm2 user2 qprod xx 13516 1 16 -- 00:50 R 00:02 -12345[2].dm2 user2 qprod xx 13516 1 16 -- 00:50 R 00:02 -12345[3].dm2 user2 qprod xx 13516 1 16 -- 00:50 R 00:01 -12345[4].dm2 user2 qprod xx 13516 1 16 -- 00:50 Q -- - . . . . . . . . . . . - , . . . . . . . . . . -12345[100].dm2user2 qprod xx 13516 1 16 -- 00:50 Q -- +12345[1].dm2 user2 qprod xx 13516 1 16 -- 00:50 R 00:02 +12345[2].dm2 user2 qprod xx 13516 1 16 -- 00:50 R 00:02 +12345[3].dm2 user2 qprod xx 13516 1 16 -- 00:50 R 00:01 +12345[4].dm2 user2 qprod xx 13516 1 16 -- 00:50 Q -- + . . . . . . . . . . . + , . . . . . . . . . . +12345[100].dm2 user2 qprod xx 13516 1 16 -- 00:50 Q -- ``` Delete the entire job array. Running subjobs will be killed, queueing @@ -393,13 +383,13 @@ Select subjob walltime and number of tasks per subjob carefully  When deciding this values, think about following guiding rules : -1.Let n=N/16. Inequality (n+1) * T < W should hold. The N is - number of tasks per subjob, T is expected single task walltime and W - is subjob walltime. Short subjob walltime improves scheduling and - job throughput. -2.Number of tasks should be modulo 16. -3.These rules are valid only when all tasks have similar task - walltimes T. +1. Let n=N/16. Inequality (n+1) * T < W should hold. The N is + number of tasks per subjob, T is expected single task walltime and W + is subjob walltime. Short subjob walltime improves scheduling and + job throughput. +2. Number of tasks should be modulo 16. +3. These rules are valid only when all tasks have similar task + walltimes T. ### Submit the job array @@ -441,6 +431,3 @@ $ cat README  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/introduction.md b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/introduction.md index f914ccf6c..dcd7d9c93 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/introduction.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/introduction.md @@ -1,17 +1,7 @@ Resource Allocation and Job Execution ===================================== - - - - - - - - - - - + To run a [job](../introduction.html), [computational resources](../introduction.html) for this particular job @@ -35,11 +25,11 @@ queueing the jobs. The queues provide prioritized and exclusive access to the computational resources. Following queues are available to Anselm users: -- **qexp**, the Express queue -- **qprod**, the Production queue**** -- **qlong**, the Long queue, regula -- **qnvidia, qmic, qfat**, the Dedicated queues -- **qfree,** the Free resource utilization queue +- **qexp**, the Express queue +- **qprod**, the Production queue**** +- **qlong**, the Long queue, regula +- **qnvidia, qmic, qfat**, the Dedicated queues +- **qfree,** the Free resource utilization queue Check the queue status at <https://extranet.it4i.cz/anselm/> @@ -79,6 +69,3 @@ jobs**. Read more on [Capacity computing](capacity-computing.html) page. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-priority.md b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-priority.md index f51d9e4c5..3af84893f 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-priority.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-priority.md @@ -1,14 +1,6 @@ Job scheduling ============== - - - - - - - - Job execution priority ---------------------- @@ -18,9 +10,9 @@ execution priority to select which job(s) to run. Job execution priority on Anselm is determined by these job properties (in order of importance): -1.queue priority -2.fairshare priority -3.eligible time +1. queue priority +2. fairshare priority +3. eligible time ### Queue priority @@ -63,7 +55,6 @@ Jobs queued in queue qexp are not calculated to project's usage. >Calculated fairshare priority can be also seen as Resource_List.fairshare attribute of a job. - ### >Eligible time Eligible time is amount (in seconds) of eligible time job accrued while @@ -111,6 +102,3 @@ Specifying more accurate walltime enables better schedulling, better execution times and better resource usage. Jobs with suitable (small) walltime could be backfilled - and overtake job(s) with higher priority. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-submission-and-execution.md b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-submission-and-execution.md index f80fb145d..638d6eed2 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-submission-and-execution.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/job-submission-and-execution.md @@ -1,30 +1,20 @@ Job submission and execution ============================ - - - - - - - - - - - + Job Submission -------------- When allocating computational resources for the job, please specify -1.suitable queue for your job (default is qprod) -2.number of computational nodes required -3.number of cores per node required -4.maximum wall time allocated to your calculation, note that jobs - exceeding maximum wall time will be killed -5.Project ID -6.Jobscript or interactive switch +1. suitable queue for your job (default is qprod) +2. number of computational nodes required +3. number of cores per node required +4. maximum wall time allocated to your calculation, note that jobs + exceeding maximum wall time will be killed +5. Project ID +6. Jobscript or interactive switch Use the **qsub** command to submit your job to a queue for allocation of the computational resources. @@ -128,10 +118,10 @@ Nodes equipped with Intel Xeon E5-2665 CPU have base clock frequency via the PBS resource attribute cpu_freq . -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 + 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  @@ -139,16 +129,11 @@ Intel Xeon E5-2470 2.3GHz cn[181-207] 23 $ 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, selecting only the nodes with Intel Xeon E5-2665 CPU. - - ### 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](../network.html) @@ -157,57 +142,33 @@ switch can communicate most efficiently. Sharing the same switch prevents hops in the network and provides for unbiased, most 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 at [Hardware Overview](../hardware-overview.html) section. - - - - We recommend allocating compute nodes of a single switch when best possible computational network performance is required to run the job efficiently: - - - qsub -A OPEN-0-0 -q qprod -l select=18:ncpus=16:ibswitch=isw11 ./myjob - + qsub -A OPEN-0-0 -q qprod -l select=18:ncpus=16:ibswitch=isw11 ./myjob In this example, we request all the 18 nodes sharing the isw11 switch for 24 hours. Full chassis will be allocated. - - Advanced job handling --------------------- ### Selecting Turbo Boost off - Intel Turbo Boost Technology is on by default. We strongly recommend keeping the default. - - - If necessary (such as in case of benchmarking) you can disable the Turbo for all nodes of the job by using the PBS resource attribute cpu_turbo_boost - - - - - - - - $ qsub -A OPEN-0-0 -q qprod -l select=4:ncpus=16 -l cpu_turbo_boost=0 -I + $ qsub -A OPEN-0-0 -q qprod -l select=4:ncpus=16 -l cpu_turbo_boost=0 -I More about the Intel Turbo Boost in the TurboBoost section @@ -218,10 +179,10 @@ very special and demanding MPI program. We request Turbo off, 2 full chassis of compute nodes (nodes sharing the same IB switches) for 30 minutes: - $ qsub -A OPEN-0-0 -q qprod - -l select=18:ncpus=16:ibswitch=isw10:mpiprocs=1:ompthreads=16+18:ncpus=16:ibswitch=isw20:mpiprocs=16:ompthreads=1 - -l cpu_turbo_boost=0,walltime=00:30:00 - -N Benchmark ./mybenchmark + $ qsub -A OPEN-0-0 -q qprod + -l select=18:ncpus=16:ibswitch=isw10:mpiprocs=1:ompthreads=16+18:ncpus=16:ibswitch=isw20:mpiprocs=16:ompthreads=1 + -l cpu_turbo_boost=0,walltime=00:30:00 + -N Benchmark ./mybenchmark The MPI processes will be distributed differently on the nodes connected to the two switches. On the isw10 nodes, we will run 1 MPI process per @@ -250,12 +211,12 @@ Example: $ qstat -a srv11: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -16287.srv11 user1 qlong job1 6183 4 64 -- 144:0 R 38:25 -16468.srv11 user1 qlong job2 8060 4 64 -- 144:0 R 17:44 -16547.srv11 user2 qprod job3x 13516 2 32 -- 48:00 R 00:58 +16287.srv11 user1 qlong job1 6183 4 64 -- 144:0 R 38:25 +16468.srv11 user1 qlong job2 8060 4 64 -- 144:0 R 17:44 +16547.srv11 user2 qprod job3x 13516 2 32 -- 48:00 R 00:58 ``` In this example user1 and user2 are running jobs named job1, job2 and @@ -300,11 +261,11 @@ $ check-pbs-jobs --print-load --print-processes JOB 35141.dm2, session_id 71995, user user2, nodes cn164,cn165 Print load cn164: LOAD: 16.01, 16.01, 16.00 -cn165: LOAD:0.01, 0.00, 0.01 +cn165: LOAD: 0.01, 0.00, 0.01 Print processes - %CPU CMD -cn164:0.0 -bash -cn164:0.0 /bin/bash /var/spool/PBS/mom_priv/jobs/35141.dm2.SC + %CPU CMD +cn164: 0.0 -bash +cn164: 0.0 /bin/bash /var/spool/PBS/mom_priv/jobs/35141.dm2.SC cn164: 99.7 run-task ... ``` @@ -317,7 +278,7 @@ empty, which may indicate an execution error. $ check-pbs-jobs --jobid 35141.dm2 --print-job-out JOB 35141.dm2, session_id 71995, user user2, nodes cn164,cn165 Print job standard output: -======================== Job start========================== +======================== Job start ========================== Started at   : Fri Aug 30 02:47:53 CEST 2013 Script name  : script Run loop 1 @@ -370,11 +331,11 @@ $ qsub -q qexp -l select=4:ncpus=16 -N Name0 ./myjob $ qstat -n -u username srv11: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -15209.srv11 username qexp Name0 5530 4 64 -- 01:00 R 00:00 - cn17/0*16+cn108/0*16+cn109/0*16+cn110/0*16 +15209.srv11 username qexp Name0 5530 4 64 -- 01:00 R 00:00 + cn17/0*16+cn108/0*16+cn109/0*16+cn110/0*16 ```  In this example, the nodes cn17, cn108, cn109 and cn110 were allocated @@ -502,14 +463,12 @@ options for qsub are stored within the script : SCRDIR=/scratch/$USER/myjob cd $SCRDIR || exit - # load the mpi module module load openmpi # execute the calculation mpiexec ./mympiprog.x - #exit exit ``` @@ -569,6 +528,3 @@ computing](capacity-computing.html) section.  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/resources-allocation-policy.md b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/resources-allocation-policy.md index 532ef20fd..659823486 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/resources-allocation-policy.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/resources-allocation-policy.md @@ -1,17 +1,7 @@ Resources Allocation Policy =========================== - - - - - - - - - - - + Resources Allocation Policy --------------------------- @@ -26,8 +16,6 @@ queues provide prioritized and exclusive access to the computational resources. Following table provides the queue partitioning overview:   -<table> -<colgroup> <col width="12%" /> <col width="12%" /> <col width="12%" /> @@ -36,85 +24,13 @@ resources. Following table provides the queue partitioning overview:  <col width="12%" /> <col width="12%" /> <col width="12%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">queue</th> -<th align="left">active project</th> -<th align="left">project resources</th> -<th align="left">nodes</th> -<th align="left">min ncpus*</th> -<th align="left">priority</th> -<th align="left">authorization</th> -<th align="left">walltime<br /> -default/max</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left"><strong>qexp</strong><br /> -Express queue</td> -<td align="left">no</td> -<td align="left">none required</td> -<td align="left">2 reserved, 31 total<br /> -including MIC, GPU and FAT nodes</td> -<td align="left">1</td> -<td align="left">><em>150</em></td> -<td align="left">no</td> -<td align="left">1h</td> -</tr> -<tr class="even"> -<td align="left"><strong>qprod</strong><br /> -Production queue</td> -<td align="left">yes<br /> -<br /> -</td> -<td align="left">> 0</td> -<td align="left"><p>><em>178 nodes w/o accelerator</em><br /> -<br /> -</p></td> -<td align="left">16</td> -<td align="left">0</td> -<td align="left">no</td> -<td align="left">24/48h</td> -</tr> -<tr class="odd"> -<td align="left"><p><strong>qlong</strong><br /> -Long queue</p></td> -<td align="left">yes</td> -<td align="left">> 0</td> -<td align="left">60 nodes w/o accelerator</td> -<td align="left">16</td> -<td align="left">0</td> -<td align="left">no</td> -<td align="left">72/144h</td> -</tr> -<tr class="even"> -<td align="left"><p><strong>qnvidia, qmic, qfat</strong><br /> -Dedicated queues</p></td> -<td align="left">yes</td> -<td align="left"><p>> 0</p></td> -<td align="left">23 total qnvidia<br /> -4 total qmic<br /> -2 total qfat</td> -<td align="left">16</td> -<td align="left">><em>200</em></td> -<td align="left">yes</td> -<td align="left">24/48h</td> -</tr> -<tr class="odd"> -<td align="left"><strong>qfree</strong><br /> -Free resource queue</td> -<td align="left">yes</td> -<td align="left">none required</td> -<td align="left">178 w/o accelerator</td> -<td align="left">16</td> -<td align="left">-1024</td> -<td align="left">no</td> -<td align="left">12h</td> -</tr> -</tbody> -</table> + |queue |active project<th align="left">project resources<th align="left">nodes<th align="left">min ncpus*<th align="left">priority<th align="left">authorization<th align="left">walltimedefault/max | + | --- | --- | + |<strong>qexp</strong>Express queue |no<td align="left">none required<td align="left">2 reserved, 31 totalincluding MIC, GPU and FAT nodes |1<td align="left">><em>150</em><td align="left">no<td align="left">1h | + |<strong>qprod</strong>Production queue |yes |> 0<td align="left">><em>178 nodes w/o accelerator</em>\ |16<td align="left">0<td align="left">no<td align="left">24/48h | + |<strong>qlong</strong>Long queue\ |yes<td align="left">> 0<td align="left">60 nodes w/o accelerator<td align="left">16<td align="left">0<td align="left">no<td align="left">72/144h | + |<strong>qnvidia, qmic, qfat</strong>Dedicated queues\ |yes<td align="left"><p>> 0\<td align="left">23 total qnvidia4 total qmic2 total qfat |16<td align="left">><em>200</em><td align="left">yes<td align="left">24/48h | + |<strong>qfree</strong>Free resource queue |yes<td align="left">none required<td align="left">178 w/o accelerator<td align="left">16<td align="left">-1024<td align="left">no<td align="left">12h | The qfree queue is not free of charge**. [Normal accounting](resources-allocation-policy.html#resources-accounting-policy) @@ -129,61 +45,60 @@ clock speed.** Should you need the very same CPU speed, you have to select the proper nodes during the PSB job submission. ** -- **qexp**, the Express queue: This queue is dedicated for testing and - running very small jobs. It is not required to specify a project to - enter the qexp. >*>There are 2 nodes always reserved for - this queue (w/o accelerator), 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 RAM (cn208-209). This - enables to test and tune also accelerated code or code with higher - RAM requirements.* The nodes may be allocated on per - core basis. No special authorization is required to use it. The - maximum runtime in qexp is 1 hour. -- **qprod**, the Production queue****: This queue is intended for - normal production runs. It is required that 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. - >*>178 nodes without accelerator are - included.* 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 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 of the - standard qprod time - 3 * 48 h).* -- **qnvidia, qmic, qfat**, the Dedicated queues****: The queue qnvidia - is dedicated to access the Nvidia accelerated nodes, the qmic to - access MIC nodes and qfat the Fat nodes. It is required that active - project with nonzero remaining resources is specified to enter - these queues. 23 nvidia, 4 mic and 2 fat nodes are included. 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. An PI> *needs - explicitly* ask - [support](https://support.it4i.cz/rt/) for - authorization to enter the dedicated queues for all users associated - to her/his Project. -- **qfree**, The Free resource queue****: The queue qfree is intended - for utilization of free resources, after a Project exhausted all its - allocated computational resources (Does not apply to DD projects - by default. DD projects have to request for persmission on qfree - after exhaustion of computational resources.). It is required that - active project is specified to enter the queue, however no remaining - resources are required. Consumed resources will be accounted to - the Project. Only 178 nodes without accelerator may be accessed from - this queue. Full nodes, 16 cores per node are allocated. The queue - runs with very low priority and no special authorization is required - to use it. The maximum runtime in qfree is 12 hours. +- **qexp**, the Express queue: This queue is dedicated for testing and + running very small jobs. It is not required to specify a project to + enter the qexp. >*>There are 2 nodes always reserved for + this queue (w/o accelerator), 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 RAM (cn208-209). This + enables to test and tune also accelerated code or code with higher + RAM requirements.* The nodes may be allocated on per + core basis. No special authorization is required to use it. The + maximum runtime in qexp is 1 hour. +- **qprod**, the Production queue****: This queue is intended for + normal production runs. It is required that 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. + >*>178 nodes without accelerator are + included.* 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 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 of the + standard qprod time - 3 * 48 h).* +- **qnvidia, qmic, qfat**, the Dedicated queues****: The queue qnvidia + is dedicated to access the Nvidia accelerated nodes, the qmic to + access MIC nodes and qfat the Fat nodes. It is required that active + project with nonzero remaining resources is specified to enter + these queues. 23 nvidia, 4 mic and 2 fat nodes are included. 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. An PI> *needs + explicitly* ask + [support](https://support.it4i.cz/rt/) for + authorization to enter the dedicated queues for all users associated + to her/his Project. +- **qfree**, The Free resource queue****: The queue qfree is intended + for utilization of free resources, after a Project exhausted all its + allocated computational resources (Does not apply to DD projects + by default. DD projects have to request for persmission on qfree + after exhaustion of computational resources.). It is required that + active project is specified to enter the queue, however no remaining + resources are required. Consumed resources will be accounted to + the Project. Only 178 nodes without accelerator may be accessed from + this queue. Full nodes, 16 cores per node are allocated. The queue + runs with very low priority and no special authorization is required + to use it. The maximum runtime in qfree is 12 hours. ### Notes - The job wall clock time defaults to **half the maximum time**, see table above. Longer wall time limits can be [set manually, see examples](job-submission-and-execution.html). @@ -296,14 +211,11 @@ clusters' login nodes. ``` $ it4ifree Password: -    PID  Total Used ...by me Free +    PID  Total Used ...by me Free   -------- ------- ------ -------- -------   OPEN-0-0 1500000 400644  225265 1099356 -  DD-13-1   10000 2606 2606 7394 +  DD-13-1   10000 2606 2606 7394 ```  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys.md index 1e398688c..2dfb705ee 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys.md @@ -1,14 +1,6 @@ Overview of ANSYS Products ========================== - - - - - - - - [SVS FEM](http://www.svsfem.cz/)** as ***[ANSYS Channel partner](http://www.ansys.com/)*** for Czech Republic provided all ANSYS licenses for ANSELM cluster and supports of @@ -29,7 +21,7 @@ here](ansys/licensing.html) To load the latest version of any ANSYS product (Mechanical, Fluent, CFX, MAPDL,...) load the module: - $ module load ansys + $ module load ansys ANSYS supports interactive regime, but due to assumed solution of extremely difficult tasks it is not recommended. @@ -39,6 +31,3 @@ 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). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-cfx.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-cfx.md index 816d1fa6f..f9d31703a 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-cfx.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-cfx.md @@ -1,14 +1,6 @@ ANSYS CFX ========= - - - - - - - - [ANSYS CFX](http://www.ansys.com/Products/Simulation+Technology/Fluid+Dynamics/Fluid+Dynamics+Products/ANSYS+CFX) software is a high-performance, general purpose fluid dynamics program @@ -93,6 +85,3 @@ here](licensing.html)  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-fluent.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-fluent.md index 95062db4f..2f8a9f488 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-fluent.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-fluent.md @@ -1,14 +1,6 @@ ANSYS Fluent ============ - - - - - - - - [ANSYS Fluent](http://www.ansys.com/Products/Simulation+Technology/Fluid+Dynamics/Fluid+Dynamics+Products/ANSYS+Fluent) software contains the broad physical modeling capabilities needed to @@ -76,13 +68,13 @@ Journal file with definition of the input geometry and boundary conditions and defined process of solution has e.g. the following structure: - /file/read-case aircraft_2m.cas.gz - /solve/init - init - /solve/iterate - 10 - /file/write-case-dat aircraft_2m-solution - /exit yes + /file/read-case aircraft_2m.cas.gz + /solve/init + init + /solve/iterate + 10 + /file/write-case-dat aircraft_2m-solution + /exit yes >The appropriate dimension of the problem has to be set by parameter (2d/3d). @@ -90,12 +82,10 @@ parameter (2d/3d). >2. Fast way to run Fluent from command line -------------------------------------------------------- - ``` fluent solver_version [FLUENT_options] -i journal_file -pbs ``` - This syntax will start the ANSYS FLUENT job under PBS Professional using the qsub command in a batch manner. When resources are available, PBS Professional will start the job and return @@ -111,7 +101,6 @@ fluent.o> 3. Running Fluent via user's config file ---------------------------------------- - The sample script uses a configuration file called pbs_fluent.conf  if no command line arguments are present. This configuration file should be present in the directory @@ -129,8 +118,6 @@ mpp="true" The following is an explanation of the parameters: - - > input is the name of the input file. @@ -154,21 +141,10 @@ the standard output will be sent. mpp="true" will tell the job script to execute the job across multiple processors.         - - - - - - - - - - >To run ANSYS Fluent in batch mode with user's config file you can utilize/modify the following script and execute it via the qsub command. - ``` #!/bin/sh #PBS -l nodes=2:ppn=4 @@ -180,30 +156,30 @@ command. #We assume that if they didn’t specify arguments then they should use the #config file if [ "xx${input}${case}${mpp}${fluent_args}zz" = "xxzz" ]; then - if [ -f pbs_fluent.conf ]; then - . pbs_fluent.conf - else - printf "No command line arguments specified, " - printf "and no configuration file found. Exiting n" - fi + if [ -f pbs_fluent.conf ]; then + . pbs_fluent.conf + else + printf "No command line arguments specified, " + printf "and no configuration file found. Exiting n" + fi fi #Augment the ANSYS FLUENT command line arguments case "$mpp" in - true) - #MPI job execution scenario - num_nodes=â€cat $PBS_NODEFILE | sort -u | wc -l†- cpus=â€expr $num_nodes * $NCPUS†- #Default arguments for mpp jobs, these should be changed to suit your - #needs. - fluent_args="-t${cpus} $fluent_args -cnf=$PBS_NODEFILE" - ;; - *) - #SMP case - #Default arguments for smp jobs, should be adjusted to suit your - #needs. - fluent_args="-t$NCPUS $fluent_args" - ;; + true) + #MPI job execution scenario + num_nodes=â€cat $PBS_NODEFILE | sort -u | wc -l†+ cpus=â€expr $num_nodes * $NCPUS†+ #Default arguments for mpp jobs, these should be changed to suit your + #needs. + fluent_args="-t${cpus} $fluent_args -cnf=$PBS_NODEFILE" + ;; + *) + #SMP case + #Default arguments for smp jobs, should be adjusted to suit your + #needs. + fluent_args="-t$NCPUS $fluent_args" + ;; esac #Default arguments for all jobs fluent_args="-ssh -g -i $input $fluent_args" @@ -215,11 +191,9 @@ command. Fluent arguments: $fluent_args" #run the solver - /ansys_inc/v145/fluent/bin/fluent $fluent_args> $outfile + /ansys_inc/v145/fluent/bin/fluent $fluent_args > $outfile ``` - - >It runs the jobs out of the directory from which they are submitted (PBS_O_WORKDIR). @@ -252,6 +226,3 @@ list.  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-ls-dyna.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-ls-dyna.md index e8b84ab2d..0da653d74 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-ls-dyna.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-ls-dyna.md @@ -1,14 +1,6 @@ ANSYS LS-DYNA ============= - - - - - - - - [ANSYS LS-DYNA](http://www.ansys.com/Products/Simulation+Technology/Structural+Mechanics/Explicit+Dynamics/ANSYS+LS-DYNA) software provides convenient and easy-to-use access to the @@ -92,6 +84,3 @@ file has to be specified. Input file has to be defined by common LS-DYNA >> - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-mechanical-apdl.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-mechanical-apdl.md index 84f086b26..35aa73d29 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-mechanical-apdl.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ansys-mechanical-apdl.md @@ -1,14 +1,6 @@ ANSYS MAPDL =========== - - - - - - - - >**[ANSYS Multiphysics](http://www.ansys.com/Products/Simulation+Technology/Structural+Mechanics/ANSYS+Multiphysics)** software offers a comprehensive product solution for both multiphysics @@ -87,7 +79,3 @@ AUTODYN)> about licensing here](licensing.html) - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ls-dyna.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ls-dyna.md index 66362a0d2..1e3d5ca76 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ls-dyna.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/ansys/ls-dyna.md @@ -1,14 +1,6 @@ LS-DYNA ======= - - - - - - - - [LS-DYNA](http://www.lstc.com/) is a multi-purpose, explicit and implicit finite element program used to analyze the nonlinear dynamic response of structures. Its fully automated contact @@ -71,6 +63,3 @@ queue. Input file should be in working directory or full path to input file has to be specified. Input file has to be defined by common LS-DYNA .k** file which is attached to the LS-DYNA solver via parameter i= - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/molpro.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/molpro.md index b526aaea9..47b17a5f2 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/molpro.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/molpro.md @@ -1,20 +1,9 @@ Molpro ====== - - - - Molpro is a complete system of ab initio programs for molecular electronic structure calculations. - - - - - - - About Molpro ------------ @@ -43,15 +32,15 @@ parallel version compiled with Intel compilers and Intel MPI. Compilation parameters are default : -Parameter Value -------------------------------------------------- ----------------------------- ->max number of atoms 200 ->max number of valence orbitals 300 ->max number of basis functions 4095 ->max number of states per symmmetry 20 ->max number of state symmetries 16 ->max number of records 200 ->max number of primitives >maxbfn x [2] + Parameter Value + ------------------------------------------------- ----------------------------- + >max number of atoms 200 + >max number of valence orbitals 300 + >max number of basis functions 4095 + >max number of states per symmmetry 20 + >max number of state symmetries 16 + >max number of records 200 + >max number of primitives >maxbfn x [2]  @@ -79,27 +68,24 @@ these are placed in the fast scratch filesystem. ### Example jobscript - #PBS -A IT4I-0-0 - #PBS -q qprod - #PBS -l select=1:ncpus=16:mpiprocs=16:ompthreads=1 - - cd $PBS_O_WORKDIR - - # load Molpro module - module add molpro - - # create a directory in the SCRATCH filesystem - mkdir -p /scratch/$USER/$PBS_JOBID + #PBS -A IT4I-0-0 + #PBS -q qprod + #PBS -l select=1:ncpus=16:mpiprocs=16:ompthreads=1 - # copy an example input - cp /apps/chem/molpro/2010.1/molprop_2010_1_Linux_x86_64_i8/examples/caffeine_opt_diis.com . + cd $PBS_O_WORKDIR - # run Molpro with default options - molpro -d /scratch/$USER/$PBS_JOBID caffeine_opt_diis.com + # load Molpro module + module add molpro - # delete scratch directory - rm -rf /scratch/$USER/$PBS_JOBID + # create a directory in the SCRATCH filesystem + mkdir -p /scratch/$USER/$PBS_JOBID + # copy an example input + cp /apps/chem/molpro/2010.1/molprop_2010_1_Linux_x86_64_i8/examples/caffeine_opt_diis.com . + # run Molpro with default options + molpro -d /scratch/$USER/$PBS_JOBID caffeine_opt_diis.com + # delete scratch directory + rm -rf /scratch/$USER/$PBS_JOBID diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/nwchem.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/nwchem.md index c32bc8e5d..2484c2c11 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/nwchem.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/chemistry/nwchem.md @@ -1,19 +1,8 @@ NWChem ====== - - - - High-Performance Computational Chemistry - - - - - - - >Introduction ------------------------- @@ -30,23 +19,23 @@ Installed versions The following versions are currently installed : -- 6.1.1, not recommended, problems have been observed with this - version +- 6.1.1, not recommended, problems have been observed with this + version -- 6.3-rev2-patch1, current release with QMD patch applied. Compiled - with Intel compilers, MKL and Intel MPI +- 6.3-rev2-patch1, current release with QMD patch applied. Compiled + with Intel compilers, MKL and Intel MPI -- 6.3-rev2-patch1-openmpi, same as above, but compiled with OpenMPI - and NWChem provided BLAS instead of MKL. This version is expected to - be slower +- 6.3-rev2-patch1-openmpi, same as above, but compiled with OpenMPI + and NWChem provided BLAS instead of MKL. This version is expected to + be slower -- 6.3-rev2-patch1-venus, this version contains only libraries for - VENUS interface linking. Does not provide standalone NWChem - executable +- 6.3-rev2-patch1-venus, this version contains only libraries for + VENUS interface linking. Does not provide standalone NWChem + executable For a current list of installed versions, execute : - module avail nwchem + module avail nwchem Running ------- @@ -54,12 +43,12 @@ Running NWChem is compiled for parallel MPI execution. Normal procedure for MPI jobs applies. Sample jobscript : - #PBS -A IT4I-0-0 - #PBS -q qprod - #PBS -l select=1:ncpus=16 + #PBS -A IT4I-0-0 + #PBS -q qprod + #PBS -l select=1:ncpus=16 - module add nwchem/6.3-rev2-patch1 - mpirun -np 16 nwchem h2o.nw + module add nwchem/6.3-rev2-patch1 + mpirun -np 16 nwchem h2o.nw >Options -------------------- @@ -68,13 +57,10 @@ Please refer to [the documentation](http://www.nwchem-sw.org/index.php/Release62:Top-level) and in the input file set the following directives : -- >MEMORY : controls the amount of memory NWChem will use -- >SCRATCH_DIR : set this to a directory in [SCRATCH - filesystem](../../storage.html#scratch) (or run the - calculation completely in a scratch directory). For certain - calculations, it might be advisable to reduce I/O by forcing - "direct" mode, eg. "scf direct" - - - +- >MEMORY : controls the amount of memory NWChem will use +- >SCRATCH_DIR : set this to a directory in [SCRATCH + filesystem](../../storage.html#scratch) (or run the + calculation completely in a scratch directory). For certain + calculations, it might be advisable to reduce I/O by forcing + "direct" mode, eg. "scf direct" diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/compilers.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/compilers.md index c088e8fbf..7450d0e14 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/compilers.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/compilers.md @@ -1,31 +1,18 @@ Compilers ========= - - - - Available compilers, including GNU, INTEL and UPC compilers - - - - - - - - - - + Currently there are several compilers for different programming languages available on the Anselm cluster: -- C/C++ -- Fortran 77/90/95 -- Unified Parallel C -- Java -- nVidia CUDA +- C/C++ +- Fortran 77/90/95 +- Unified Parallel C +- Java +- nVidia CUDA  @@ -49,20 +36,20 @@ accessible in the search path by default. It is strongly recommended to use the up to date version (4.8.1) which comes with the module gcc: - $ module load gcc - $ gcc -v - $ g++ -v - $ gfortran -v + $ module load gcc + $ gcc -v + $ g++ -v + $ gfortran -v With the module loaded two environment variables are predefined. One for maximum optimizations on the Anselm cluster architecture, and the other for debugging purposes: - $ echo $OPTFLAGS - -O3 -march=corei7-avx + $ echo $OPTFLAGS + -O3 -march=corei7-avx - $ echo $DEBUGFLAGS - -O0 -g + $ echo $DEBUGFLAGS + -O0 -g For more informations about the possibilities of the compilers, please see the man pages. @@ -72,42 +59,42 @@ Unified Parallel C UPC is supported by two compiler/runtime implementations: -- GNU - SMP/multi-threading support only -- Berkley - multi-node support as well as SMP/multi-threading support +- GNU - SMP/multi-threading support only +- Berkley - multi-node support as well as SMP/multi-threading support ### GNU UPC Compiler To use the GNU UPC compiler and run the compiled binaries use the module gupc - $ module add gupc - $ gupc -v - $ g++ -v + $ module add gupc + $ gupc -v + $ g++ -v Simple program to test the compiler - $ cat count.upc + $ cat count.upc - /* hello.upc - a simple UPC example */ - #include <upc.h> - #include <stdio.h> + /* hello.upc - a simple UPC example */ + #include <upc.h> + #include <stdio.h> - int main() { -  if (MYTHREAD == 0) { -    printf("Welcome to GNU UPC!!!n"); -  } -  upc_barrier; -  printf(" - Hello from thread %in", MYTHREAD); -  return 0; - } + int main() { +  if (MYTHREAD == 0) { +    printf("Welcome to GNU UPC!!!n"); +  } +  upc_barrier; +  printf(" - Hello from thread %in", MYTHREAD); +  return 0; + } To compile the example use - $ gupc -o count.upc.x count.upc + $ gupc -o count.upc.x count.upc To run the example with 5 threads issue - $ ./count.upc.x -fupc-threads-5 + $ ./count.upc.x -fupc-threads-5 For more informations see the man pages. @@ -116,8 +103,8 @@ For more informations see the man pages. To use the Berkley UPC compiler and runtime environment to run the binaries use the module bupc - $ module add bupc - $ upcc -version + $ module add bupc + $ upcc -version As default UPC network the "smp" is used. This is very quick and easy way for testing/debugging, but limited to one node only. @@ -130,35 +117,35 @@ runtime (as expected)! Example UPC code: - $ cat hello.upc + $ cat hello.upc - /* hello.upc - a simple UPC example */ - #include <upc.h> - #include <stdio.h> + /* hello.upc - a simple UPC example */ + #include <upc.h> + #include <stdio.h> - int main() { -  if (MYTHREAD == 0) { -    printf("Welcome to Berkeley UPC!!!n"); -  } -  upc_barrier; -  printf(" - Hello from thread %in", MYTHREAD); -  return 0; - } + int main() { +  if (MYTHREAD == 0) { +    printf("Welcome to Berkeley UPC!!!n"); +  } +  upc_barrier; +  printf(" - Hello from thread %in", MYTHREAD); +  return 0; + } To compile the example with the "ibv" UPC network use - $ upcc -network=ibv -o hello.upc.x hello.upc + $ upcc -network=ibv -o hello.upc.x hello.upc To run the example with 5 threads issue - $ upcrun -n 5 ./hello.upc.x + $ upcrun -n 5 ./hello.upc.x To run the example on two compute nodes using all 32 cores, with 32 threads, issue - $ qsub -I -q qprod -A PROJECT_ID -l select=2:ncpus=16 - $ module add bupc - $ upcrun -n 32 ./hello.upc.x + $ qsub -I -q qprod -A PROJECT_ID -l select=2:ncpus=16 + $ module add bupc + $ upcrun -n 32 ./hello.upc.x  For more informations see the man pages. @@ -174,6 +161,3 @@ nVidia CUDA For information how to work with nVidia CUDA, please read the [nVidia CUDA page](nvidia-cuda.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/comsol/comsol-multiphysics.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/comsol/comsol-multiphysics.md index 0490ce301..6f0cdbc3f 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/comsol/comsol-multiphysics.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/comsol/comsol-multiphysics.md @@ -1,17 +1,7 @@ COMSOL Multiphysics® ==================== - - - - - - - - - - - + >>Introduction @@ -25,24 +15,24 @@ standard engineering problems COMSOL provides add-on products such as electrical, mechanical, fluid flow, and chemical applications. -- >>[Structural Mechanics - Module](http://www.comsol.com/structural-mechanics-module), - +- >>[Structural Mechanics + Module](http://www.comsol.com/structural-mechanics-module), + -- >>[Heat Transfer - Module](http://www.comsol.com/heat-transfer-module), - +- >>[Heat Transfer + Module](http://www.comsol.com/heat-transfer-module), + -- >>[CFD - Module](http://www.comsol.com/cfd-module), - +- >>[CFD + Module](http://www.comsol.com/cfd-module), + -- >>[Acoustics - Module](http://www.comsol.com/acoustics-module), - +- >>[Acoustics + Module](http://www.comsol.com/acoustics-module), + -- >>and [many - others](http://www.comsol.com/products) +- >>and [many + others](http://www.comsol.com/products) >>COMSOL also allows an >>interface support for @@ -57,23 +47,23 @@ equations. >>On the Anselm cluster COMSOL is available in the latest stable version. There are two variants of the release: -- >>**Non commercial** or so - called >>**EDU - variant**>>, which can be used for research - and educational purposes. - -- >>**Commercial** or so called - >>**COM variant**, - which can used also for commercial activities. - >>**COM variant** - has only subset of features compared to the - >>**EDU - variant**>> available. <span - id="result_box" - More about - licensing will be posted here - soon.</span> - +- >>**Non commercial** or so + called >>**EDU + variant**>>, which can be used for research + and educational purposes. + +- >>**Commercial** or so called + >>**COM variant**, + which can used also for commercial activities. + >>**COM variant** + has only subset of features compared to the + >>**EDU + variant**>> available. <span + id="result_box" + More about + licensing will be posted here + soon.</span> + >>To load the of COMSOL load the module @@ -148,7 +138,6 @@ COMSOL>><span><span><span><span><span>**®**</span></span></span></span></span>^ 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** @@ -213,7 +202,3 @@ path to input file has to be specified. The Matlab command option (-r ”mphstart”) created a connection with a COMSOL server using the default port number. - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers.md index 719aee666..f24688bd8 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers.md @@ -1,17 +1,7 @@ Debuggers and profilers summary =============================== - - - - - - - - - - - + Introduction ------------ @@ -31,8 +21,8 @@ environment. Use [X display](https://docs.it4i.cz/anselm-cluster-documentation/software/debuggers/resolveuid/11e53ad0d2fd4c5187537f4baeedff33) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](intel-suite/intel-debugger.html) page. @@ -48,8 +38,8 @@ every thread running as part of your program, or for every process - even if these processes are distributed across a cluster using an MPI implementation. - $ module load Forge - $ forge + $ module load Forge + $ forge Read more at the [Allinea DDT](debuggers/allinea-ddt.html) page. @@ -64,8 +54,8 @@ about several metrics along with clear behavior statements and hints to help you improve the efficiency of your runs. Our license is limited to 64 MPI processes. - $ module load PerformanceReports/6.0 - $ perf-report mpirun -n 64 ./my_application argument01 argument02 + $ module load PerformanceReports/6.0 + $ perf-report mpirun -n 64 ./my_application argument01 argument02 Read more at the [Allinea Performance Reports](debuggers/allinea-performance-reports.html) @@ -80,8 +70,8 @@ analyze, organize, and test programs, making it easy to isolate and identify problems in individual threads and processes in programs of great complexity. - $ module load totalview - $ totalview + $ module load totalview + $ totalview Read more at the [Totalview](debuggers/total-view.html) page. @@ -91,12 +81,9 @@ Vampir trace analyzer Vampir is a GUI trace analyzer for traces in OTF format. - $ module load Vampir/8.5.0 - $ vampir + $ module load Vampir/8.5.0 + $ vampir Read more at the [Vampir](../../salomon/software/debuggers/vampir.html) page. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-ddt.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-ddt.md index 10f994424..405d8c41d 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-ddt.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-ddt.md @@ -1,17 +1,7 @@ Allinea Forge (DDT,MAP) ======================= - - - - - - - - - - - + Allinea Forge consist of two tools - debugger DDT and profiler MAP. @@ -33,13 +23,13 @@ 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. These limitation means that: -- 1 user can debug up 64 processes, or -- 32 users can debug 2 processes, etc. +- 1 user can debug up 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. +- 1 user can debug on up to 8 accelerators, or +- 8 users can debug on single accelerator. Compiling Code to run with DDT ------------------------------ @@ -48,12 +38,12 @@ Compiling Code to run with DDT Load all necessary modules to compile the code. For example: - $ module load intel - $ module load impi ... or ... module load openmpi/X.X.X-icc + $ module load intel + $ module load impi ... or ... module load openmpi/X.X.X-icc Load the Allinea DDT module: - $ module load Forge + $ module load Forge Compile the code: @@ -83,7 +73,7 @@ Starting a Job with DDT Be sure to log in with an X window forwarding enabled. This could mean using the -X in the ssh:  - $ ssh -X username@anselm.it4i.cz + $ ssh -X username@anselm.it4i.cz Other options is to access login node using VNC. Please see the detailed information on how to [use graphic user interface on @@ -93,12 +83,12 @@ Anselm](https://docs.it4i.cz/anselm-cluster-documentation/software/debuggers/res From the login node an interactive session **with X windows forwarding** (-X option) can be started by following command: - $ qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=16:mpiprocs=16,walltime=01:00:00 + $ qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=16:mpiprocs=16,walltime=01:00:00 Then launch the debugger with the ddt command followed by the name of the executable to debug: - $ ddt test_debug + $ ddt test_debug A submission window that appears have a prefilled path to the executable to debug. You can select the number @@ -115,7 +105,7 @@ For example the number of MPI processes is set by option "-np 4". Skipping the dialog is done by "-start" option. To see the list of the "ddt" command line parameters, run "ddt --help".  - ddt -start -np 4 ./hello_debug_impi + ddt -start -np 4 ./hello_debug_impi  @@ -124,7 +114,7 @@ Documentation Users can find original User Guide after loading the DDT module: - $DDTPATH/doc/userguide.pdf + $DDTPATH/doc/userguide.pdf  @@ -137,6 +127,3 @@ Debugging with Allinea DDT, Workshop conducted at LLNL by Allinea on May  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-performance-reports.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-performance-reports.md index 77f9ce557..3c2e3ee64 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-performance-reports.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/allinea-performance-reports.md @@ -1,22 +1,9 @@ Allinea Performance Reports =========================== - - - - quick application profiling - - - - - - - - - - + Introduction ------------ @@ -37,7 +24,7 @@ Modules Allinea Performance Reports version 6.0 is available - $ module load PerformanceReports/6.0 + $ module load PerformanceReports/6.0 The module sets up environment variables, required for using the Allinea Performance Reports. This particular command loads the default module, @@ -51,7 +38,7 @@ Use the the perf-report wrapper on your (MPI) program. Instead of [running your MPI program the usual way](../mpi-1.html), use the the perf report wrapper: - $ perf-report mpirun ./mympiprog.x + $ perf-report mpirun ./mympiprog.x The mpi program will run as usual. The perf-report creates two additional files, in *.txt and *.html format, containing the @@ -68,18 +55,18 @@ compilers and linked against intel MPI library: First, we allocate some nodes via the express queue: - $ qsub -q qexp -l select=2:ncpus=16:mpiprocs=16:ompthreads=1 -I - qsub: waiting for job 262197.dm2 to start - qsub: job 262197.dm2 ready + $ qsub -q qexp -l select=2:ncpus=16:mpiprocs=16:ompthreads=1 -I + qsub: waiting for job 262197.dm2 to start + qsub: job 262197.dm2 ready Then we load the modules and run the program the usual way: - $ module load intel impi allinea-perf-report/4.2 - $ mpirun ./mympiprog.x + $ module load intel impi allinea-perf-report/4.2 + $ mpirun ./mympiprog.x Now lets profile the code: - $ perf-report mpirun ./mympiprog.x + $ perf-report mpirun ./mympiprog.x Performance report files [mympiprog_32p*.txt](mympiprog_32p_2014-10-15_16-56.txt) @@ -88,6 +75,3 @@ and were created. We can see that the code is very efficient on MPI and is CPU bounded. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/cube.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/cube.md index 80a5cdfd4..008d86c04 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/cube.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/cube.md @@ -1,14 +1,6 @@ CUBE ==== - - - - - - - - Introduction ------------ @@ -16,28 +8,18 @@ CUBE is a graphical performance report explorer for displaying data from Score-P and Scalasca (and other compatible tools). The name comes from the fact that it displays performance data in a three-dimensions : -- **performance metric**, where a number of metrics are available, - such as communication time or cache misses, -- **call path**, which contains the call tree of your program -- s**ystem resource**, which contains system's nodes, processes and - threads, depending on the parallel programming model. - +- **performance metric**, where a number of metrics are available, + such as communication time or cache misses, +- **call path**, which contains the call tree of your program +- s**ystem resource**, which contains system's nodes, processes and + threads, depending on the parallel programming model. Each dimension is organized in a tree, for example the time performance metric is divided into Execution time and Overhead time, call path dimension is organized by files and routines in your source code etc. - - - - - - -  - - *Figure 1. Screenshot of CUBE displaying data from Scalasca.* * @@ -53,11 +35,11 @@ Installed versions Currently, there are two versions of CUBE 4.2.3 available as [modules](../../environment-and-modules.html) : -- class="s1"> cube/4.2.3-gcc, - compiled with GCC +- class="s1"> cube/4.2.3-gcc, + compiled with GCC -- class="s1"> cube/4.2.3-icc, - compiled with Intel compiler +- class="s1"> cube/4.2.3-icc, + compiled with Intel compiler Usage ----- @@ -79,8 +61,5 @@ performance data will be available.  >References -1.<http://www.scalasca.org/software/cube-4.x/download.html> - - - +1. <http://www.scalasca.org/software/cube-4.x/download.html> diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-performance-counter-monitor.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-performance-counter-monitor.md index 90174f56f..147678cb0 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-performance-counter-monitor.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-performance-counter-monitor.md @@ -1,14 +1,6 @@ Intel Performance Counter Monitor ================================= - - - - - - - - Introduction ------------ @@ -25,7 +17,7 @@ links. Currently installed version 2.6. To load the [module](../../environment-and-modules.html), issue : - $ module load intelpcm + $ module load intelpcm Command line tools ------------------ @@ -37,7 +29,7 @@ PCM provides a set of tools to monitor system/or application. Measures memory bandwidth of your application or the whole system. Usage: - $ pcm-memory.x <delay>|[external_program parameters] + $ pcm-memory.x <delay>|[external_program parameters] Specify either a delay of updates in seconds or an external program to monitor. If you get an error about PMU in use, respond "y" and relaunch @@ -45,30 +37,30 @@ the program. Sample output: - ---------------------------------------||--------------------------------------- - -- Socket 0 --||-- Socket 1 -- - ---------------------------------------||--------------------------------------- - ---------------------------------------||--------------------------------------- - ---------------------------------------||--------------------------------------- - -- Memory Performance Monitoring --||-- Memory Performance Monitoring -- - ---------------------------------------||--------------------------------------- - -- Mem Ch 0: Reads (MB/s): 2.44 --||-- Mem Ch 0: Reads (MB/s): 0.26 -- - -- Writes(MB/s): 2.16 --||-- Writes(MB/s): 0.08 -- - -- Mem Ch 1: Reads (MB/s): 0.35 --||-- Mem Ch 1: Reads (MB/s): 0.78 -- - -- Writes(MB/s): 0.13 --||-- Writes(MB/s): 0.65 -- - -- Mem Ch 2: Reads (MB/s): 0.32 --||-- Mem Ch 2: Reads (MB/s): 0.21 -- - -- Writes(MB/s): 0.12 --||-- Writes(MB/s): 0.07 -- - -- Mem Ch 3: Reads (MB/s): 0.36 --||-- Mem Ch 3: Reads (MB/s): 0.20 -- - -- Writes(MB/s): 0.13 --||-- Writes(MB/s): 0.07 -- - -- NODE0 Mem Read (MB/s): 3.47 --||-- NODE1 Mem Read (MB/s): 1.45 -- - -- NODE0 Mem Write (MB/s): 2.55 --||-- NODE1 Mem Write (MB/s): 0.88 -- - -- NODE0 P. Write (T/s) : 31506 --||-- NODE1 P. Write (T/s): 9099 -- - -- NODE0 Memory (MB/s): 6.02 --||-- NODE1 Memory (MB/s): 2.33 -- - ---------------------------------------||--------------------------------------- - -- System Read Throughput(MB/s): 4.93 -- - -- System Write Throughput(MB/s): 3.43 -- - -- System Memory Throughput(MB/s): 8.35 -- - ---------------------------------------||--------------------------------------- + ---------------------------------------||--------------------------------------- + -- Socket 0 --||-- Socket 1 -- + ---------------------------------------||--------------------------------------- + ---------------------------------------||--------------------------------------- + ---------------------------------------||--------------------------------------- + -- Memory Performance Monitoring --||-- Memory Performance Monitoring -- + ---------------------------------------||--------------------------------------- + -- Mem Ch 0: Reads (MB/s): 2.44 --||-- Mem Ch 0: Reads (MB/s): 0.26 -- + -- Writes(MB/s): 2.16 --||-- Writes(MB/s): 0.08 -- + -- Mem Ch 1: Reads (MB/s): 0.35 --||-- Mem Ch 1: Reads (MB/s): 0.78 -- + -- Writes(MB/s): 0.13 --||-- Writes(MB/s): 0.65 -- + -- Mem Ch 2: Reads (MB/s): 0.32 --||-- Mem Ch 2: Reads (MB/s): 0.21 -- + -- Writes(MB/s): 0.12 --||-- Writes(MB/s): 0.07 -- + -- Mem Ch 3: Reads (MB/s): 0.36 --||-- Mem Ch 3: Reads (MB/s): 0.20 -- + -- Writes(MB/s): 0.13 --||-- Writes(MB/s): 0.07 -- + -- NODE0 Mem Read (MB/s): 3.47 --||-- NODE1 Mem Read (MB/s): 1.45 -- + -- NODE0 Mem Write (MB/s): 2.55 --||-- NODE1 Mem Write (MB/s): 0.88 -- + -- NODE0 P. Write (T/s) : 31506 --||-- NODE1 P. Write (T/s): 9099 -- + -- NODE0 Memory (MB/s): 6.02 --||-- NODE1 Memory (MB/s): 2.33 -- + ---------------------------------------||--------------------------------------- + -- System Read Throughput(MB/s): 4.93 -- + -- System Write Throughput(MB/s): 3.43 -- + -- System Memory Throughput(MB/s): 8.35 -- + ---------------------------------------||--------------------------------------- ### pcm-msr @@ -98,112 +90,110 @@ usage. >Usage: > <span pcm.x Sample output : - $ pcm.x ./matrix - - Intel(r) Performance Counter Monitor V2.6 (2013-11-04 13:43:31 +0100 ID=db05e43) - - Copyright (c) 2009-2013 Intel Corporation - - Number of physical cores: 16 - Number of logical cores: 16 - Threads (logical cores) per physical core: 1 - Num sockets: 2 - Core PMU (perfmon) version: 3 - Number of core PMU generic (programmable) counters: 8 - Width of generic (programmable) counters: 48 bits - Number of core PMU fixed counters: 3 - Width of fixed counters: 48 bits - Nominal core frequency: 2400000000 Hz - Package thermal spec power: 115 Watt; Package minimum power: 51 Watt; Package maximum power: 180 Watt; - Socket 0: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. - Socket 1: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. - Number of PCM instances: 2 - Max QPI link speed: 16.0 GBytes/second (8.0 GT/second) - - Detected Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz "Intel(r) microarchitecture codename Sandy Bridge-EP/Jaketown" - - Executing "./matrix" command: - - Exit code: 0 - - - EXEC : instructions per nominal CPU cycle - IPC : instructions per CPU cycle - FREQ : relation to nominal CPU frequency='unhalted clock ticks'/'invariant timer ticks' (includes Intel Turbo Boost) - AFREQ : relation to nominal CPU frequency while in active state (not in power-saving C state)='unhalted clock ticks'/'invariant timer ticks while in C0-state' (includes Intel Turbo Boost) - L3MISS: L3 cache misses - L2MISS: L2 cache misses (including other core's L2 cache *hits*) - L3HIT : L3 cache hit ratio (0.00-1.00) - L2HIT : L2 cache hit ratio (0.00-1.00) - L3CLK : ratio of CPU cycles lost due to L3 cache misses (0.00-1.00), in some cases could be >1.0 due to a higher memory latency - L2CLK : ratio of CPU cycles lost due to missing L2 cache but still hitting L3 cache (0.00-1.00) - READ : bytes read from memory controller (in GBytes) - WRITE : bytes written to memory controller (in GBytes) - TEMP : Temperature reading in 1 degree Celsius relative to the TjMax temperature (thermal headroom): 0 corresponds to the max temperature - - - Core (SKT) | EXEC | IPC | FREQ | AFREQ | L3MISS | L2MISS | L3HIT | L2HIT | L3CLK | L2CLK | READ | WRITE | TEMP - - 0 0 0.00 0.64 0.01 0.80 5592 11 K 0.49 0.13 0.32 0.06 N/A N/A 67 - 1 0 0.00 0.18 0.00 0.69 3086 5552 0.44 0.07 0.48 0.08 N/A N/A 68 - 2 0 0.00 0.23 0.00 0.81 300 562 0.47 0.06 0.43 0.08 N/A N/A 67 - 3 0 0.00 0.21 0.00 0.99 437 862 0.49 0.06 0.44 0.09 N/A N/A 73 - 4 0 0.00 0.23 0.00 0.93 293 559 0.48 0.07 0.42 0.09 N/A N/A 73 - 5 0 0.00 0.21 0.00 1.00 423 849 0.50 0.06 0.43 0.10 N/A N/A 69 - 6 0 0.00 0.23 0.00 0.94 285 558 0.49 0.06 0.41 0.09 N/A N/A 71 - 7 0 0.00 0.18 0.00 0.81 674 1130 0.40 0.05 0.53 0.08 N/A N/A 65 - 8 1 0.00 0.47 0.01 1.26 6371 13 K 0.51 0.35 0.31 0.07 N/A N/A 64 - 9 1 2.30 1.80 1.28 1.29 179 K 15 M 0.99 0.59 0.04 0.71 N/A N/A 60 - 10 1 0.00 0.22 0.00 1.26 315 570 0.45 0.06 0.43 0.08 N/A N/A 67 - 11 1 0.00 0.23 0.00 0.74 321 579 0.45 0.05 0.45 0.07 N/A N/A 66 - 12 1 0.00 0.22 0.00 1.25 305 570 0.46 0.05 0.42 0.07 N/A N/A 68 - 13 1 0.00 0.22 0.00 1.26 336 581 0.42 0.04 0.44 0.06 N/A N/A 69 - 14 1 0.00 0.22 0.00 1.25 314 565 0.44 0.06 0.43 0.07 N/A N/A 69 - 15 1 0.00 0.29 0.00 1.19 2815 6926 0.59 0.39 0.29 0.08 N/A N/A 69 - ------------------------------------------------------------------------------------------------------------------- - SKT 0 0.00 0.46 0.00 0.79 11 K 21 K 0.47 0.10 0.38 0.07 0.00 0.00 65 - SKT 1 0.29 1.79 0.16 1.29 190 K 15 M 0.99 0.59 0.05 0.70 0.01 0.01 61 - ------------------------------------------------------------------------------------------------------------------- - TOTAL * 0.14 1.78 0.08 1.28 201 K 15 M 0.99 0.59 0.05 0.70 0.01 0.01 N/A - - Instructions retired: 1345 M ; Active cycles: 755 M ; Time (TSC): 582 Mticks ; C0 (active,non-halted) core residency: 6.30 % - - C1 core residency: 0.14 %; C3 core residency: 0.20 %; C6 core residency: 0.00 %; C7 core residency: 93.36 %; - C2 package residency: 48.81 %; C3 package residency: 0.00 %; C6 package residency: 0.00 %; C7 package residency: 0.00 %; - - PHYSICAL CORE IPC : 1.78 => corresponds to 44.50 % utilization for cores in active state - Instructions per nominal CPU cycle: 0.14 => corresponds to 3.60 % core utilization over time interval - - Intel(r) QPI data traffic estimation in bytes (data traffic coming to CPU/socket through QPI links): - - QPI0 QPI1 | QPI0 QPI1 - ---------------------------------------------------------------------------------------------- - SKT 0 0 0 | 0% 0% - SKT 1 0 0 | 0% 0% - ---------------------------------------------------------------------------------------------- - Total QPI incoming data traffic: 0 QPI data traffic/Memory controller traffic: 0.00 - - Intel(r) QPI traffic estimation in bytes (data and non-data traffic outgoing from CPU/socket through QPI links): - - QPI0 QPI1 | QPI0 QPI1 - ---------------------------------------------------------------------------------------------- - SKT 0 0 0 | 0% 0% - SKT 1 0 0 | 0% 0% - ---------------------------------------------------------------------------------------------- - Total QPI outgoing data and non-data traffic: 0 - - ---------------------------------------------------------------------------------------------- - SKT 0 package consumed 4.06 Joules - SKT 1 package consumed 9.40 Joules - ---------------------------------------------------------------------------------------------- - TOTAL: 13.46 Joules - - ---------------------------------------------------------------------------------------------- - SKT 0 DIMMs consumed 4.18 Joules - SKT 1 DIMMs consumed 4.28 Joules - ---------------------------------------------------------------------------------------------- - TOTAL: 8.47 Joules - Cleaning up + $ pcm.x ./matrix + + Intel(r) Performance Counter Monitor V2.6 (2013-11-04 13:43:31 +0100 ID=db05e43) + + Copyright (c) 2009-2013 Intel Corporation + + Number of physical cores: 16 + Number of logical cores: 16 + Threads (logical cores) per physical core: 1 + Num sockets: 2 + Core PMU (perfmon) version: 3 + Number of core PMU generic (programmable) counters: 8 + Width of generic (programmable) counters: 48 bits + Number of core PMU fixed counters: 3 + Width of fixed counters: 48 bits + Nominal core frequency: 2400000000 Hz + Package thermal spec power: 115 Watt; Package minimum power: 51 Watt; Package maximum power: 180 Watt; + Socket 0: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. + Socket 1: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. + Number of PCM instances: 2 + Max QPI link speed: 16.0 GBytes/second (8.0 GT/second) + + Detected Intel(R) Xeon(R) CPU E5-2665 0 @ 2.40GHz "Intel(r) microarchitecture codename Sandy Bridge-EP/Jaketown" + + Executing "./matrix" command: + + Exit code: 0 + + EXEC : instructions per nominal CPU cycle + IPC : instructions per CPU cycle + FREQ : relation to nominal CPU frequency='unhalted clock ticks'/'invariant timer ticks' (includes Intel Turbo Boost) + AFREQ : relation to nominal CPU frequency while in active state (not in power-saving C state)='unhalted clock ticks'/'invariant timer ticks while in C0-state' (includes Intel Turbo Boost) + L3MISS: L3 cache misses + L2MISS: L2 cache misses (including other core's L2 cache *hits*) + L3HIT : L3 cache hit ratio (0.00-1.00) + L2HIT : L2 cache hit ratio (0.00-1.00) + L3CLK : ratio of CPU cycles lost due to L3 cache misses (0.00-1.00), in some cases could be >1.0 due to a higher memory latency + L2CLK : ratio of CPU cycles lost due to missing L2 cache but still hitting L3 cache (0.00-1.00) + READ : bytes read from memory controller (in GBytes) + WRITE : bytes written to memory controller (in GBytes) + TEMP : Temperature reading in 1 degree Celsius relative to the TjMax temperature (thermal headroom): 0 corresponds to the max temperature + + Core (SKT) | EXEC | IPC | FREQ | AFREQ | L3MISS | L2MISS | L3HIT | L2HIT | L3CLK | L2CLK | READ | WRITE | TEMP + + 0 0 0.00 0.64 0.01 0.80 5592 11 K 0.49 0.13 0.32 0.06 N/A N/A 67 + 1 0 0.00 0.18 0.00 0.69 3086 5552 0.44 0.07 0.48 0.08 N/A N/A 68 + 2 0 0.00 0.23 0.00 0.81 300 562 0.47 0.06 0.43 0.08 N/A N/A 67 + 3 0 0.00 0.21 0.00 0.99 437 862 0.49 0.06 0.44 0.09 N/A N/A 73 + 4 0 0.00 0.23 0.00 0.93 293 559 0.48 0.07 0.42 0.09 N/A N/A 73 + 5 0 0.00 0.21 0.00 1.00 423 849 0.50 0.06 0.43 0.10 N/A N/A 69 + 6 0 0.00 0.23 0.00 0.94 285 558 0.49 0.06 0.41 0.09 N/A N/A 71 + 7 0 0.00 0.18 0.00 0.81 674 1130 0.40 0.05 0.53 0.08 N/A N/A 65 + 8 1 0.00 0.47 0.01 1.26 6371 13 K 0.51 0.35 0.31 0.07 N/A N/A 64 + 9 1 2.30 1.80 1.28 1.29 179 K 15 M 0.99 0.59 0.04 0.71 N/A N/A 60 + 10 1 0.00 0.22 0.00 1.26 315 570 0.45 0.06 0.43 0.08 N/A N/A 67 + 11 1 0.00 0.23 0.00 0.74 321 579 0.45 0.05 0.45 0.07 N/A N/A 66 + 12 1 0.00 0.22 0.00 1.25 305 570 0.46 0.05 0.42 0.07 N/A N/A 68 + 13 1 0.00 0.22 0.00 1.26 336 581 0.42 0.04 0.44 0.06 N/A N/A 69 + 14 1 0.00 0.22 0.00 1.25 314 565 0.44 0.06 0.43 0.07 N/A N/A 69 + 15 1 0.00 0.29 0.00 1.19 2815 6926 0.59 0.39 0.29 0.08 N/A N/A 69 + ------------------------------------------------------------------------------------------------------------------- + SKT 0 0.00 0.46 0.00 0.79 11 K 21 K 0.47 0.10 0.38 0.07 0.00 0.00 65 + SKT 1 0.29 1.79 0.16 1.29 190 K 15 M 0.99 0.59 0.05 0.70 0.01 0.01 61 + ------------------------------------------------------------------------------------------------------------------- + TOTAL * 0.14 1.78 0.08 1.28 201 K 15 M 0.99 0.59 0.05 0.70 0.01 0.01 N/A + + Instructions retired: 1345 M ; Active cycles: 755 M ; Time (TSC): 582 Mticks ; C0 (active,non-halted) core residency: 6.30 % + + C1 core residency: 0.14 %; C3 core residency: 0.20 %; C6 core residency: 0.00 %; C7 core residency: 93.36 %; + C2 package residency: 48.81 %; C3 package residency: 0.00 %; C6 package residency: 0.00 %; C7 package residency: 0.00 %; + + PHYSICAL CORE IPC : 1.78 => corresponds to 44.50 % utilization for cores in active state + Instructions per nominal CPU cycle: 0.14 => corresponds to 3.60 % core utilization over time interval + + Intel(r) QPI data traffic estimation in bytes (data traffic coming to CPU/socket through QPI links): + + QPI0 QPI1 | QPI0 QPI1 + ---------------------------------------------------------------------------------------------- + SKT 0 0 0 | 0% 0% + SKT 1 0 0 | 0% 0% + ---------------------------------------------------------------------------------------------- + Total QPI incoming data traffic: 0 QPI data traffic/Memory controller traffic: 0.00 + + Intel(r) QPI traffic estimation in bytes (data and non-data traffic outgoing from CPU/socket through QPI links): + + QPI0 QPI1 | QPI0 QPI1 + ---------------------------------------------------------------------------------------------- + SKT 0 0 0 | 0% 0% + SKT 1 0 0 | 0% 0% + ---------------------------------------------------------------------------------------------- + Total QPI outgoing data and non-data traffic: 0 + + ---------------------------------------------------------------------------------------------- + SKT 0 package consumed 4.06 Joules + SKT 1 package consumed 9.40 Joules + ---------------------------------------------------------------------------------------------- + TOTAL: 13.46 Joules + + ---------------------------------------------------------------------------------------------- + SKT 0 DIMMs consumed 4.18 Joules + SKT 1 DIMMs consumed 4.28 Joules + ---------------------------------------------------------------------------------------------- + TOTAL: 8.47 Joules + Cleaning up  @@ -226,87 +216,84 @@ root user) Sample program using the API : - #include <stdlib.h> - #include <stdio.h> - #include "cpucounters.h" + #include <stdlib.h> + #include <stdio.h> + #include "cpucounters.h" - #define SIZE 1000 + #define SIZE 1000 - using namespace std; + using namespace std; - int main(int argc, char **argv) { - float matrixa[SIZE][SIZE], matrixb[SIZE][SIZE], mresult[SIZE][SIZE]; - float real_time, proc_time, mflops; - long long flpins; - int retval; - int i,j,k; + int main(int argc, char **argv) { + float matrixa[SIZE][SIZE], matrixb[SIZE][SIZE], mresult[SIZE][SIZE]; + float real_time, proc_time, mflops; + long long flpins; + int retval; + int i,j,k; - PCM * m = PCM::getInstance(); + PCM * m = PCM::getInstance(); - if (m->program() != PCM::Success) return 1; + if (m->program() != PCM::Success) return 1; - SystemCounterState before_sstate = getSystemCounterState(); + SystemCounterState before_sstate = getSystemCounterState(); - /* Initialize the Matrix arrays */ - for ( i=0; i<SIZE*SIZE; i++ ){ - mresult[0][i] = 0.0; - matrixa[0][i] = matrixb[0][i] = rand()*(float)1.1; } + /* Initialize the Matrix arrays */ + for ( i=0; i<SIZE*SIZE; i++ ){ + mresult[0][i] = 0.0; + matrixa[0][i] = matrixb[0][i] = rand()*(float)1.1; } - /* A naive Matrix-Matrix multiplication */ - for (i=0;i<SIZE;i++) - for(j=0;j<SIZE;j++) - for(k=0;k<SIZE;k++) - mresult[i][j]=mresult[i][j] + matrixa[i][k]*matrixb[k][j]; + /* A naive Matrix-Matrix multiplication */ + for (i=0;i<SIZE;i++) + for(j=0;j<SIZE;j++) + for(k=0;k<SIZE;k++) + mresult[i][j]=mresult[i][j] + matrixa[i][k]*matrixb[k][j]; - SystemCounterState after_sstate = getSystemCounterState(); + SystemCounterState after_sstate = getSystemCounterState(); - cout << "Instructions per clock:" << getIPC(before_sstate,after_sstate) - << "L3 cache hit ratio:" << getL3CacheHitRatio(before_sstate,after_sstate) - << "Bytes read:" << getBytesReadFromMC(before_sstate,after_sstate); + cout << "Instructions per clock:" << getIPC(before_sstate,after_sstate) + << "L3 cache hit ratio:" << getL3CacheHitRatio(before_sstate,after_sstate) + << "Bytes read:" << getBytesReadFromMC(before_sstate,after_sstate); - for (i=0; i<SIZE;i++) - for (j=0; j<SIZE; j++) - if (mresult[i][j] == -1) printf("x"); + for (i=0; i<SIZE;i++) + for (j=0; j<SIZE; j++) + if (mresult[i][j] == -1) printf("x"); - return 0; - } + return 0; + } Compile it with : - $ icc matrix.cpp -o matrix -lpthread -lpcm + $ icc matrix.cpp -o matrix -lpthread -lpcm Sample output : - $ ./matrix - Number of physical cores: 16 - Number of logical cores: 16 - Threads (logical cores) per physical core: 1 - Num sockets: 2 - Core PMU (perfmon) version: 3 - Number of core PMU generic (programmable) counters: 8 - Width of generic (programmable) counters: 48 bits - Number of core PMU fixed counters: 3 - Width of fixed counters: 48 bits - Nominal core frequency: 2400000000 Hz - Package thermal spec power: 115 Watt; Package minimum power: 51 Watt; Package maximum power: 180 Watt; - Socket 0: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. - Socket 1: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. - Number of PCM instances: 2 - Max QPI link speed: 16.0 GBytes/second (8.0 GT/second) - Instructions per clock:1.7 - L3 cache hit ratio:1.0 - Bytes read:12513408 + $ ./matrix + Number of physical cores: 16 + Number of logical cores: 16 + Threads (logical cores) per physical core: 1 + Num sockets: 2 + Core PMU (perfmon) version: 3 + Number of core PMU generic (programmable) counters: 8 + Width of generic (programmable) counters: 48 bits + Number of core PMU fixed counters: 3 + Width of fixed counters: 48 bits + Nominal core frequency: 2400000000 Hz + Package thermal spec power: 115 Watt; Package minimum power: 51 Watt; Package maximum power: 180 Watt; + Socket 0: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. + Socket 1: 1 memory controllers detected with total number of 4 channels. 2 QPI ports detected. + Number of PCM instances: 2 + Max QPI link speed: 16.0 GBytes/second (8.0 GT/second) + Instructions per clock:1.7 + L3 cache hit ratio:1.0 + Bytes read:12513408 References ---------- -1.<https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization> -2.<https://software.intel.com/sites/default/files/m/3/2/2/xeon-e5-2600-uncore-guide.pdf> Intel® - Xeon® Processor E5-2600 Product Family Uncore Performance - Monitoring Guide. -3.<http://intel-pcm-api-documentation.github.io/classPCM.html> API - Documentation - - - +1. <https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization> +2. <https://software.intel.com/sites/default/files/m/3/2/2/xeon-e5-2600-uncore-guide.pdf> Intel® + Xeon® Processor E5-2600 Product Family Uncore Performance + Monitoring Guide. +3. <http://intel-pcm-api-documentation.github.io/classPCM.html> API + Documentation diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-vtune-amplifier.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-vtune-amplifier.md index eeffc7a7b..af3f8b699 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-vtune-amplifier.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/intel-vtune-amplifier.md @@ -1,17 +1,7 @@ Intel VTune Amplifier ===================== - - - - - - - - - - - + Introduction ------------ @@ -21,30 +11,24 @@ profiling tool designed for Intel processors. It offers a graphical performance analysis of single core and multithreaded applications. A highlight of the features: -- Hotspot analysis -- Locks and waits analysis -- Low level specific counters, such as branch analysis and memory - bandwidth -- Power usage analysis - frequency and sleep states. - - - - +- Hotspot analysis +- Locks and waits analysis +- Low level specific counters, such as branch analysis and memory + bandwidth +- Power usage analysis - frequency and sleep states.  - - Usage ----- To launch the GUI, first load the module: - $ module add VTune/2016_update1 + $ module add VTune/2016_update1 class="s1">and launch the GUI : - $ amplxe-gui + $ amplxe-gui >To profile an application with VTune Amplifier, special kernel modules need to be loaded. The modules are not loaded on Anselm login @@ -81,7 +65,7 @@ the command line needed to perform the selected analysis. The command line will look like this: - /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -collect advanced-hotspots -knob collection-detail=stack-and-callcount -mrte-mode=native -target-duration-type=veryshort -app-working-dir /home/sta545/test -- /home/sta545/test_pgsesv + /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -collect advanced-hotspots -knob collection-detail=stack-and-callcount -mrte-mode=native -target-duration-type=veryshort -app-working-dir /home/sta545/test -- /home/sta545/test_pgsesv Copy the line to clipboard and then you can paste it in your jobscript or in command line. After the collection is run, open the GUI once @@ -114,15 +98,12 @@ card. You may also use remote analysis to collect data from the MIC and then analyze it in the GUI later : - $ amplxe-cl -collect knc-hotspots -no-auto-finalize -- ssh mic0 - "export LD_LIBRARY_PATH=/apps/intel/composer_xe_2015.2.164/compiler/lib/mic/:/apps/intel/composer_xe_2015.2.164/mkl/lib/mic/; export KMP_AFFINITY=compact; /tmp/app.mic" + $ amplxe-cl -collect knc-hotspots -no-auto-finalize -- ssh mic0 + "export LD_LIBRARY_PATH=/apps/intel/composer_xe_2015.2.164/compiler/lib/mic/:/apps/intel/composer_xe_2015.2.164/mkl/lib/mic/; export KMP_AFFINITY=compact; /tmp/app.mic" References ---------- -1.><https://www.rcac.purdue.edu/tutorials/phi/PerformanceTuningXeonPhi-Tullos.pdf> Performance - Tuning for Intel® Xeon Phi™ Coprocessors - - - +1. ><https://www.rcac.purdue.edu/tutorials/phi/PerformanceTuningXeonPhi-Tullos.pdf> Performance + Tuning for Intel® Xeon Phi™ Coprocessors diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/papi.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/papi.md index 59406fda9..eaeac4a5c 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/papi.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/papi.md @@ -1,17 +1,7 @@ PAPI ==== - - - - - - - - - - - + Introduction ------------ @@ -35,7 +25,7 @@ To use PAPI, load [module](../../environment-and-modules.html) papi : - $ module load papi + $ module load papi This will load the default version. Execute module avail papi for a list of installed @@ -54,37 +44,37 @@ Prints which preset events are available on the current CPU. The third column indicated whether the preset event is available on the current CPU. - $ papi_avail - Available events and hardware information. - -------------------------------------------------------------------------------- - PAPI Version : 5.3.2.0 - Vendor string and code : GenuineIntel (1) - Model string and code : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (45) - CPU Revision : 7.000000 - CPUID Info : Family: 6 Model: 45 Stepping: 7 - CPU Max Megahertz : 2601 - CPU Min Megahertz : 1200 - Hdw Threads per core : 1 - Cores per Socket : 8 - Sockets : 2 - NUMA Nodes : 2 - CPUs per Node : 8 - Total CPUs : 16 - Running in a VM : no - Number Hardware Counters : 11 - Max Multiplex Counters : 32 - -------------------------------------------------------------------------------- - Name Code Avail Deriv Description (Note) - PAPI_L1_DCM 0x80000000 Yes No Level 1 data cache misses - PAPI_L1_ICM 0x80000001 Yes No Level 1 instruction cache misses - PAPI_L2_DCM 0x80000002 Yes Yes Level 2 data cache misses - PAPI_L2_ICM 0x80000003 Yes No Level 2 instruction cache misses - PAPI_L3_DCM 0x80000004 No No Level 3 data cache misses - PAPI_L3_ICM 0x80000005 No No Level 3 instruction cache misses - PAPI_L1_TCM 0x80000006 Yes Yes Level 1 cache misses - PAPI_L2_TCM 0x80000007 Yes No Level 2 cache misses - PAPI_L3_TCM 0x80000008 Yes No Level 3 cache misses - .... + $ papi_avail + Available events and hardware information. + -------------------------------------------------------------------------------- + PAPI Version : 5.3.2.0 + Vendor string and code : GenuineIntel (1) + Model string and code : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz (45) + CPU Revision : 7.000000 + CPUID Info : Family: 6 Model: 45 Stepping: 7 + CPU Max Megahertz : 2601 + CPU Min Megahertz : 1200 + Hdw Threads per core : 1 + Cores per Socket : 8 + Sockets : 2 + NUMA Nodes : 2 + CPUs per Node : 8 + Total CPUs : 16 + Running in a VM : no + Number Hardware Counters : 11 + Max Multiplex Counters : 32 + -------------------------------------------------------------------------------- + Name Code Avail Deriv Description (Note) + PAPI_L1_DCM 0x80000000 Yes No Level 1 data cache misses + PAPI_L1_ICM 0x80000001 Yes No Level 1 instruction cache misses + PAPI_L2_DCM 0x80000002 Yes Yes Level 2 data cache misses + PAPI_L2_ICM 0x80000003 Yes No Level 2 instruction cache misses + PAPI_L3_DCM 0x80000004 No No Level 3 data cache misses + PAPI_L3_ICM 0x80000005 No No Level 3 instruction cache misses + PAPI_L1_TCM 0x80000006 Yes Yes Level 1 cache misses + PAPI_L2_TCM 0x80000007 Yes No Level 2 cache misses + PAPI_L3_TCM 0x80000008 Yes No Level 3 cache misses + .... ### papi_native_avail @@ -105,32 +95,23 @@ PAPI API PAPI provides two kinds of events: -- **Preset events** is a set of predefined common CPU events, - >standardized across platforms. -- **Native events **is a set of all events supported by the - current hardware. This is a larger set of features than preset. For - other components than CPU, only native events are usually available. - - - +- **Preset events** is a set of predefined common CPU events, + >standardized across platforms. +- **Native events **is a set of all events supported by the + current hardware. This is a larger set of features than preset. For + other components than CPU, only native events are usually available. To use PAPI in your application, you need to link the appropriate include file. -- papi.h for C -- f77papi.h for Fortran 77 -- f90papi.h for Fortran 90 -- fpapi.h for Fortran with preprocessor - - - - +- papi.h for C +- f77papi.h for Fortran 77 +- f90papi.h for Fortran 90 +- fpapi.h for Fortran with preprocessor The include path is automatically added by papi module to $INCLUDE. - - ### High level API Please refer @@ -160,60 +141,60 @@ Example The following example prints MFLOPS rate of a naive matrix-matrix multiplication : - #include <stdlib.h> - #include <stdio.h> - #include "papi.h" - #define SIZE 1000 - - int main(int argc, char **argv) { - float matrixa[SIZE][SIZE], matrixb[SIZE][SIZE], mresult[SIZE][SIZE]; - float real_time, proc_time, mflops; - long long flpins; - int retval; - int i,j,k; - - /* Initialize the Matrix arrays */ - for ( i=0; i<SIZE*SIZE; i++ ){ - mresult[0][i] = 0.0; - matrixa[0][i] = matrixb[0][i] = rand()*(float)1.1; - } -  - /* Setup PAPI library and begin collecting data from the counters */ - if((retval=PAPI_flops( &real_time, &proc_time, &flpins, &mflops))<PAPI_OK) - printf("Error!"); - - /* A naive Matrix-Matrix multiplication */ - for (i=0;i<SIZE;i++) - for(j=0;j<SIZE;j++) - for(k=0;k<SIZE;k++) - mresult[i][j]=mresult[i][j] + matrixa[i][k]*matrixb[k][j]; - - /* Collect the data into the variables passed in */ - if((retval=PAPI_flops( &real_time, &proc_time, &flpins, &mflops))<PAPI_OK) - printf("Error!"); - - printf("Real_time:t%fnProc_time:t%fnTotal flpins:t%lldnMFLOPS:tt%fn", real_time, proc_time, flpins, mflops); - PAPI_shutdown(); - return 0; - } + #include <stdlib.h> + #include <stdio.h> + #include "papi.h" + #define SIZE 1000 + + int main(int argc, char **argv) { + float matrixa[SIZE][SIZE], matrixb[SIZE][SIZE], mresult[SIZE][SIZE]; + float real_time, proc_time, mflops; + long long flpins; + int retval; + int i,j,k; + + /* Initialize the Matrix arrays */ + for ( i=0; i<SIZE*SIZE; i++ ){ + mresult[0][i] = 0.0; + matrixa[0][i] = matrixb[0][i] = rand()*(float)1.1; + } +  + /* Setup PAPI library and begin collecting data from the counters */ + if((retval=PAPI_flops( &real_time, &proc_time, &flpins, &mflops))<PAPI_OK) + printf("Error!"); + + /* A naive Matrix-Matrix multiplication */ + for (i=0;i<SIZE;i++) + for(j=0;j<SIZE;j++) + for(k=0;k<SIZE;k++) + mresult[i][j]=mresult[i][j] + matrixa[i][k]*matrixb[k][j]; + + /* Collect the data into the variables passed in */ + if((retval=PAPI_flops( &real_time, &proc_time, &flpins, &mflops))<PAPI_OK) + printf("Error!"); + + printf("Real_time:t%fnProc_time:t%fnTotal flpins:t%lldnMFLOPS:tt%fn", real_time, proc_time, flpins, mflops); + PAPI_shutdown(); + return 0; + }  Now compile and run the example : - $ gcc matrix.c -o matrix -lpapi - $ ./matrix - Real_time: 8.852785 - Proc_time: 8.850000 - Total flpins: 6012390908 - MFLOPS: 679.366211 + $ gcc matrix.c -o matrix -lpapi + $ ./matrix + Real_time: 8.852785 + Proc_time: 8.850000 + Total flpins: 6012390908 + MFLOPS: 679.366211 Let's try with optimizations enabled : - $ gcc -O3 matrix.c -o matrix -lpapi - $ ./matrix - Real_time: 0.000020 - Proc_time: 0.000000 - Total flpins: 6 - MFLOPS: inf + $ gcc -O3 matrix.c -o matrix -lpapi + $ ./matrix + Real_time: 0.000020 + Proc_time: 0.000000 + Total flpins: 6 + MFLOPS: inf Now we see a seemingly strange result - the multiplication took no time and only 6 floating point instructions were issued. This is because the @@ -222,20 +203,20 @@ as the result is actually not used anywhere in the program. We can fix this by adding some "dummy" code at the end of the Matrix-Matrix multiplication routine : - for (i=0; i<SIZE;i++) - for (j=0; j<SIZE; j++) - if (mresult[i][j] == -1.0) printf("x"); + for (i=0; i<SIZE;i++) + for (j=0; j<SIZE; j++) + if (mresult[i][j] == -1.0) printf("x"); Now the compiler won't remove the multiplication loop. (However it is still not that smart to see that the result won't ever be negative). Now run the code again: - $ gcc -O3 matrix.c -o matrix -lpapi - $ ./matrix - Real_time: 8.795956 - Proc_time: 8.790000 - Total flpins: 18700983160 - MFLOPS: 2127.529297 + $ gcc -O3 matrix.c -o matrix -lpapi + $ ./matrix + Real_time: 8.795956 + Proc_time: 8.790000 + Total flpins: 18700983160 + MFLOPS: 2127.529297 ### Intel Xeon Phi @@ -248,20 +229,20 @@ Phi](../intel-xeon-phi.html) native applications, you need to load module with " -mic" suffix, for example " papi/5.3.2-mic" : - $ module load papi/5.3.2-mic + $ module load papi/5.3.2-mic Then, compile your application in the following way: - $ module load intel - $ icc -mmic -Wl,-rpath,/apps/intel/composer_xe_2013.5.192/compiler/lib/mic matrix-mic.c -o matrix-mic -lpapi -lpfm + $ module load intel + $ icc -mmic -Wl,-rpath,/apps/intel/composer_xe_2013.5.192/compiler/lib/mic matrix-mic.c -o matrix-mic -lpapi -lpfm To execute the application on MIC, you need to manually set LD_LIBRARY_PATH : - $ qsub -q qmic -A NONE-0-0 -I - $ ssh mic0 - $ export LD_LIBRARY_PATH=/apps/tools/papi/5.4.0-mic/lib/ - $ ./matrix-mic + $ qsub -q qmic -A NONE-0-0 -I + $ ssh mic0 + $ export LD_LIBRARY_PATH=/apps/tools/papi/5.4.0-mic/lib/ + $ ./matrix-mic Alternatively, you can link PAPI statically ( -static flag), then @@ -269,21 +250,18 @@ LD_LIBRARY_PATH does not need to be set. You can also execute the PAPI tools on MIC : - $ /apps/tools/papi/5.4.0-mic/bin/papi_native_avail + $ /apps/tools/papi/5.4.0-mic/bin/papi_native_avail To use PAPI in offload mode, you need to provide both host and MIC versions of PAPI: - $ module load papi/5.4.0 - $ icc matrix-offload.c -o matrix-offload -offload-option,mic,compiler,"-L$PAPI_HOME-mic/lib -lpapi" -lpapi + $ module load papi/5.4.0 + $ icc matrix-offload.c -o matrix-offload -offload-option,mic,compiler,"-L$PAPI_HOME-mic/lib -lpapi" -lpapi References ---------- -1.<http://icl.cs.utk.edu/papi/> Main project page -2.<http://icl.cs.utk.edu/projects/papi/wiki/Main_Page> Wiki -3.<http://icl.cs.utk.edu/papi/docs/> API Documentation - - - +1. <http://icl.cs.utk.edu/papi/> Main project page +2. <http://icl.cs.utk.edu/projects/papi/wiki/Main_Page> Wiki +3. <http://icl.cs.utk.edu/papi/docs/> API Documentation diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/scalasca.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/scalasca.md index 697152de2..69192c148 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/scalasca.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/scalasca.md @@ -1,14 +1,6 @@ Scalasca ======== - - - - - - - - >Introduction ------------------------- @@ -29,26 +21,26 @@ There are currently two versions of Scalasca 2.0 [modules](../../environment-and-modules.html) installed on Anselm: -- class="s1"> - scalasca2/2.0-gcc-openmpi, for usage with - [GNU Compiler](../compilers.html) and - [OpenMPI](../mpi-1/Running_OpenMPI.html), +- class="s1"> + scalasca2/2.0-gcc-openmpi, for usage with + [GNU Compiler](../compilers.html) and + [OpenMPI](../mpi-1/Running_OpenMPI.html), -- class="s1"> - scalasca2/2.0-icc-impi, for usage with - [Intel Compiler](../compilers.html) and [Intel - MPI](../mpi-1/running-mpich2.html). +- class="s1"> + scalasca2/2.0-icc-impi, for usage with + [Intel Compiler](../compilers.html) and [Intel + MPI](../mpi-1/running-mpich2.html). Usage ----- Profiling a parallel application with Scalasca consists of three steps: -1.Instrumentation, compiling the application such way, that the - profiling data can be generated. -2.Runtime measurement, running the application with the Scalasca - profiler to collect performance data. -3.Analysis of reports +1. Instrumentation, compiling the application such way, that the + profiling data can be generated. +2. Runtime measurement, running the application with the Scalasca + profiler to collect performance data. +3. Analysis of reports ### Instrumentation @@ -67,7 +59,7 @@ command. The syntax is : An example : - $ scalasca -analyze mpirun -np 4 ./mympiprogram + $ scalasca -analyze mpirun -np 4 ./mympiprogram Some notable Scalsca options are: @@ -112,8 +104,5 @@ GUI viewer. References ---------- -1.<http://www.scalasca.org/> - - - +1. <http://www.scalasca.org/> diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/score-p.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/score-p.md index 1a8e7cd84..03e5d0f92 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/score-p.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/score-p.md @@ -1,14 +1,6 @@ Score-P ======= - - - - - - - - Introduction ------------ @@ -27,14 +19,14 @@ There are currently two versions of Score-P version 1.2.6 [modules](../../environment-and-modules.html) installed on Anselm : -- class="s1">scorep/1.2.3-gcc-openmpi>, for usage - with [GNU - Compiler](../compilers.html)> and [OpenMPI](../mpi-1/Running_OpenMPI.html){.internal>,</span> +- class="s1">scorep/1.2.3-gcc-openmpi>, for usage + with [GNU + Compiler](../compilers.html)> and [OpenMPI](../mpi-1/Running_OpenMPI.html){.internal>,</span> -- class="s1">scorep/1.2.3-icc-impi>, for usage - with [Intel - Compiler](../compilers.html)> and [Intel - MPI](../mpi-1/running-mpich2.html)>. +- class="s1">scorep/1.2.3-icc-impi>, for usage + with [Intel + Compiler](../compilers.html)> and [Intel + MPI](../mpi-1/running-mpich2.html)>. Instrumentation --------------- @@ -42,9 +34,9 @@ Instrumentation >There are three ways to instrument your parallel applications in order to enable performance data collection : -1.>Automated instrumentation using compiler -2.>Manual instrumentation using API calls -3.>Manual instrumentation using directives +1. >Automated instrumentation using compiler +2. >Manual instrumentation using API calls +3. >Manual instrumentation using directives ### Automated instrumentation @@ -66,9 +58,9 @@ $ mpif90 -o myapp foo.o bar.o with : ``` -$ scorepmpif90 -c foo.f90 -$ scorepmpif90 -c bar.f90 -$ scorepmpif90 -o myapp foo.o bar.o +$ scorep mpif90 -c foo.f90 +$ scorep mpif90 -c bar.f90 +$ scorep mpif90 -o myapp foo.o bar.o ``` Usually your program is compiled using a Makefile or similar script, so @@ -89,26 +81,26 @@ instrumented by inserting API calls. An example in C/C++ : - #include <scorep/SCOREP_User.h> - void foo() - { - SCOREP_USER_REGION_DEFINE( my_region_handle ) - // more declarations - SCOREP_USER_REGION_BEGIN( my_region_handle, "foo", SCOREP_USER_REGION_TYPE_COMMON ) - // do something - SCOREP_USER_REGION_END( my_region_handle ) - } + #include <scorep/SCOREP_User.h> + void foo() + { + SCOREP_USER_REGION_DEFINE( my_region_handle ) + // more declarations + SCOREP_USER_REGION_BEGIN( my_region_handle, "foo", SCOREP_USER_REGION_TYPE_COMMON ) + // do something + SCOREP_USER_REGION_END( my_region_handle ) + }  and Fortran : - #include "scorep/SCOREP_User.inc" - subroutine foo - SCOREP_USER_REGION_DEFINE( my_region_handle ) - ! more declarations - SCOREP_USER_REGION_BEGIN( my_region_handle, "foo", SCOREP_USER_REGION_TYPE_COMMON ) - ! do something - SCOREP_USER_REGION_END( my_region_handle ) - end subroutine foo + #include "scorep/SCOREP_User.inc" + subroutine foo + SCOREP_USER_REGION_DEFINE( my_region_handle ) + ! more declarations + SCOREP_USER_REGION_BEGIN( my_region_handle, "foo", SCOREP_USER_REGION_TYPE_COMMON ) + ! do something + SCOREP_USER_REGION_END( my_region_handle ) + end subroutine foo Please refer to the [documentation for description of the API](https://silc.zih.tu-dresden.de/scorep-current/pdf/scorep.pdf). @@ -121,39 +113,36 @@ use this method, use command scorep Example directives in C/C++ : - void foo(...) - { - /* declarations */ - #pragma pomp inst begin(foo) - ... - if (<condition>) - { - #pragma pomp inst altend(foo) - return; - } - ... - #pragma pomp inst end(foo) - } + void foo(...) + { + /* declarations */ + #pragma pomp inst begin(foo) + ... + if (<condition>) + { + #pragma pomp inst altend(foo) + return; + } + ... + #pragma pomp inst end(foo) + } >and in Fortran : - subroutine foo(...) - !declarations - !POMP$ INST BEGIN(foo) - ... - if (<condition>) then - !POMP$ INST ALTEND(foo) - return - end if - ... - !POMP$ INST END(foo) - end subroutine foo + subroutine foo(...) + !declarations + !POMP$ INST BEGIN(foo) + ... + if (<condition>) then + !POMP$ INST ALTEND(foo) + return + end if + ... + !POMP$ INST END(foo) + end subroutine foo The directives are ignored if the program is compiled without Score-P. Again, please refer to the [documentation](https://silc.zih.tu-dresden.de/scorep-current/pdf/scorep.pdf) for a more elaborate description. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/summary.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/summary.md index b8bced0e6..2b1f34c23 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/summary.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/summary.md @@ -1,17 +1,7 @@ Debuggers and profilers summary =============================== - - - - - - - - - - - + Introduction ------------ @@ -31,8 +21,8 @@ environment. Use [X display](https://docs.it4i.cz/anselm-cluster-documentation/software/debuggers/resolveuid/11e53ad0d2fd4c5187537f4baeedff33) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](../intel-suite/intel-debugger.html) page. @@ -48,8 +38,8 @@ every thread running as part of your program, or for every process - even if these processes are distributed across a cluster using an MPI implementation. - $ module load Forge - $ forge + $ module load Forge + $ forge Read more at the [Allinea DDT](allinea-ddt.html) page. @@ -63,8 +53,8 @@ about several metrics along with clear behavior statements and hints to help you improve the efficiency of your runs. Our license is limited to 64 MPI processes. - $ module load PerformanceReports/6.0 - $ perf-report mpirun -n 64 ./my_application argument01 argument02 + $ module load PerformanceReports/6.0 + $ perf-report mpirun -n 64 ./my_application argument01 argument02 Read more at the [Allinea Performance Reports](allinea-performance-reports.html) page. @@ -78,8 +68,8 @@ analyze, organize, and test programs, making it easy to isolate and identify problems in individual threads and processes in programs of great complexity. - $ module load totalview - $ totalview + $ module load totalview + $ totalview Read more at the [Totalview](total-view.html) page. @@ -88,12 +78,9 @@ Vampir trace analyzer Vampir is a GUI trace analyzer for traces in OTF format. - $ module load Vampir/8.5.0 - $ vampir + $ module load Vampir/8.5.0 + $ vampir Read more at the [Vampir](../../../salomon/software/debuggers/vampir.html) page. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/total-view.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/total-view.md index 80c232cdc..5effda9bf 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/total-view.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/total-view.md @@ -1,20 +1,9 @@ Total View ========== - - - - TotalView is a GUI-based source code multi-process, multi-thread debugger. - - - - - - - License and Limitations for Anselm Users ---------------------------------------- @@ -28,15 +17,15 @@ Debugging of GPU accelerated codes is also supported. You can check the status of the licenses here: - cat /apps/user/licenses/totalview_features_state.txt + cat /apps/user/licenses/totalview_features_state.txt - # totalview - # ------------------------------------------------- - # FEATURE                      TOTAL  USED AVAIL - # ------------------------------------------------- - TotalView_Team                    64     0    64 - Replay                            64     0    64 - CUDA                              64     0    64 + # totalview + # ------------------------------------------------- + # FEATURE                      TOTAL  USED AVAIL + # ------------------------------------------------- + TotalView_Team                    64     0    64 + Replay                            64     0    64 + CUDA                              64     0    64 Compiling Code to run with TotalView ------------------------------------ @@ -45,19 +34,19 @@ Compiling Code to run with TotalView Load all necessary modules to compile the code. For example: - module load intel + module load intel - module load impi  ... or ... module load openmpi/X.X.X-icc + module load impi  ... or ... module load openmpi/X.X.X-icc Load the TotalView module: - module load totalview/8.12 + module load totalview/8.12 Compile the code: - mpicc -g -O0 -o test_debug test.c + mpicc -g -O0 -o test_debug test.c - mpif90 -g -O0 -o test_debug test.f + mpif90 -g -O0 -o test_debug test.f ### Compiler flags @@ -75,7 +64,7 @@ Starting a Job with TotalView Be sure to log in with an X window forwarding enabled. This could mean using the -X in the ssh: - ssh -X username@anselm.it4i.cz + ssh -X username@anselm.it4i.cz Other options is to access login node using VNC. Please see the detailed information on how to use graphic user interface on Anselm @@ -84,7 +73,7 @@ information on how to use graphic user interface on Anselm From the login node an interactive session with X windows forwarding (-X option) can be started by following command: - qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=16:mpiprocs=16,walltime=01:00:00 + qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=16:mpiprocs=16,walltime=01:00:00 Then launch the debugger with the totalview command followed by the name of the executable to debug. @@ -93,7 +82,7 @@ of the executable to debug. To debug a serial code use: - totalview test_debug + totalview test_debug ### Debugging a parallel code - option 1 @@ -104,27 +93,27 @@ Please note:** To be able to run parallel debugging procedure from the command line without stopping the debugger in the mpiexec source code you have to add the following function to your **~/.tvdrc** file: - proc mpi_auto_run_starter {loaded_id} { -    set starter_programs {mpirun mpiexec orterun} -    set executable_name [TV::symbol get $loaded_id full_pathname] -    set file_component [file tail $executable_name] + proc mpi_auto_run_starter {loaded_id} { +    set starter_programs {mpirun mpiexec orterun} +    set executable_name [TV::symbol get $loaded_id full_pathname] +    set file_component [file tail $executable_name] -    if {[lsearch -exact $starter_programs $file_component] != -1} { -        puts "**************************************" -        puts "Automatically starting $file_component" -        puts "**************************************" -        dgo -    } - } +    if {[lsearch -exact $starter_programs $file_component] != -1} { +        puts "**************************************" +        puts "Automatically starting $file_component" +        puts "**************************************" +        dgo +    } + } - # Append this function to TotalView's image load callbacks so that - # TotalView run this program automatically. + # Append this function to TotalView's image load callbacks so that + # TotalView run this program automatically. - dlappend TV::image_load_callbacks mpi_auto_run_starter + dlappend TV::image_load_callbacks mpi_auto_run_starter The source code of this function can be also found in - /apps/mpi/openmpi/intel/1.6.5/etc/openmpi-totalview.tcl + /apps/mpi/openmpi/intel/1.6.5/etc/openmpi-totalview.tcl You can also add only following line to you ~/.tvdrc file instead of the entire function: @@ -135,7 +124,7 @@ You need to do this step only once. Now you can run the parallel debugger using: - mpirun -tv -n 5 ./test_debug + mpirun -tv -n 5 ./test_debug When following dialog appears click on "Yes" @@ -155,9 +144,9 @@ to specify a MPI implementation used to compile the source code. The following example shows how to start debugging session with Intel MPI: - module load intel/13.5.192 impi/4.1.1.036 totalview/8/13 + module load intel/13.5.192 impi/4.1.1.036 totalview/8/13 - totalview -mpi "Intel MPI-Hydra" -np 8 ./hello_debug_impi + totalview -mpi "Intel MPI-Hydra" -np 8 ./hello_debug_impi After running previous command you will see the same window as shown in the screenshot above. @@ -174,6 +163,3 @@ documentation](http://www.roguewave.com/support/product-documentation/totalview- web page is a good resource for learning more about some of the advanced TotalView features. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/valgrind.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/valgrind.md index 2123bb937..a80314cb9 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/valgrind.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/valgrind.md @@ -1,19 +1,8 @@ Valgrind ======== - - - - Valgrind is a tool for memory debugging and profiling. - - - - - - - About Valgrind -------------- @@ -31,32 +20,32 @@ Valgrind run 5-100 times slower. The main tools available in Valgrind are : -- **Memcheck**, the original, must used and default tool. Verifies - memory access in you program and can detect use of unitialized - memory, out of bounds memory access, memory leaks, double free, etc. -- **Massif**, a heap profiler. -- **Hellgrind** and **DRD** can detect race conditions in - multi-threaded applications. -- **Cachegrind**, a cache profiler. -- **Callgrind**, a callgraph analyzer. -- For a full list and detailed documentation, please refer to the - [official Valgrind - documentation](http://valgrind.org/docs/). +- **Memcheck**, the original, must used and default tool. Verifies + memory access in you program and can detect use of unitialized + memory, out of bounds memory access, memory leaks, double free, etc. +- **Massif**, a heap profiler. +- **Hellgrind** and **DRD** can detect race conditions in + multi-threaded applications. +- **Cachegrind**, a cache profiler. +- **Callgrind**, a callgraph analyzer. +- For a full list and detailed documentation, please refer to the + [official Valgrind + documentation](http://valgrind.org/docs/). 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 - [module](../../environment-and-modules.html) - valgrind/3.9.0-impi. After loading the - module, this version replaces the default valgrind. +- >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 + [module](../../environment-and-modules.html) + valgrind/3.9.0-impi. After loading the + module, this version replaces the default valgrind. Usage ----- @@ -69,24 +58,24 @@ source code lines in the output) and -O0 For example, lets look at this C code, which has two problems : - #include <stdlib.h> + #include <stdlib.h> - void f(void) - { - int* x = malloc(10 * sizeof(int)); - x[10] = 0; // problem 1: heap block overrun - } // problem 2: memory leak -- x not freed + void f(void) + { + int* x = malloc(10 * sizeof(int)); + x[10] = 0; // problem 1: heap block overrun + } // problem 2: memory leak -- x not freed - int main(void) - { - f(); - return 0; - } + int main(void) + { + f(); + return 0; + } Now, compile it with Intel compiler : - $ module add intel - $ icc -g valgrind-example.c -o valgrind-example + $ module add intel + $ icc -g valgrind-example.c -o valgrind-example Now, lets run it with Valgrind. The syntax is : @@ -97,74 +86,74 @@ If no Valgrind options are specified, Valgrind defaults to running Memcheck tool. Please refer to the Valgrind documentation for a full description of command line options. - $ valgrind ./valgrind-example - ==12652== Memcheck, a memory error detector - ==12652== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. - ==12652== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info - ==12652== Command: ./valgrind-example - ==12652== - ==12652== Invalid write of size 4 - ==12652== at 0x40053E: f (valgrind-example.c:6) - ==12652== by 0x40054E: main (valgrind-example.c:11) - ==12652== Address 0x5861068 is 0 bytes after a block of size 40 alloc'd - ==12652== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==12652== by 0x400528: f (valgrind-example.c:5) - ==12652== by 0x40054E: main (valgrind-example.c:11) - ==12652== - ==12652== - ==12652== HEAP SUMMARY: - ==12652== in use at exit: 40 bytes in 1 blocks - ==12652== total heap usage: 1 allocs, 0 frees, 40 bytes allocated - ==12652== - ==12652== LEAK SUMMARY: - ==12652== definitely lost: 40 bytes in 1 blocks - ==12652== indirectly lost: 0 bytes in 0 blocks - ==12652== possibly lost: 0 bytes in 0 blocks - ==12652== still reachable: 0 bytes in 0 blocks - ==12652== suppressed: 0 bytes in 0 blocks - ==12652== Rerun with --leak-check=full to see details of leaked memory - ==12652== - ==12652== For counts of detected and suppressed errors, rerun with: -v - ==12652== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6) + $ valgrind ./valgrind-example + ==12652== Memcheck, a memory error detector + ==12652== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. + ==12652== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info + ==12652== Command: ./valgrind-example + ==12652== + ==12652== Invalid write of size 4 + ==12652== at 0x40053E: f (valgrind-example.c:6) + ==12652== by 0x40054E: main (valgrind-example.c:11) + ==12652== Address 0x5861068 is 0 bytes after a block of size 40 alloc'd + ==12652== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==12652== by 0x400528: f (valgrind-example.c:5) + ==12652== by 0x40054E: main (valgrind-example.c:11) + ==12652== + ==12652== + ==12652== HEAP SUMMARY: + ==12652== in use at exit: 40 bytes in 1 blocks + ==12652== total heap usage: 1 allocs, 0 frees, 40 bytes allocated + ==12652== + ==12652== LEAK SUMMARY: + ==12652== definitely lost: 40 bytes in 1 blocks + ==12652== indirectly lost: 0 bytes in 0 blocks + ==12652== possibly lost: 0 bytes in 0 blocks + ==12652== still reachable: 0 bytes in 0 blocks + ==12652== suppressed: 0 bytes in 0 blocks + ==12652== Rerun with --leak-check=full to see details of leaked memory + ==12652== + ==12652== For counts of detected and suppressed errors, rerun with: -v + ==12652== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6) In the output we can see that Valgrind has detected both errors - the off-by-one memory access at line 5 and a memory leak of 40 bytes. If we want a detailed analysis of the memory leak, we need to run Valgrind with --leak-check=full option : - $ valgrind --leak-check=full ./valgrind-example - ==23856== Memcheck, a memory error detector - ==23856== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. - ==23856== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info - ==23856== Command: ./valgrind-example - ==23856== - ==23856== Invalid write of size 4 - ==23856== at 0x40067E: f (valgrind-example.c:6) - ==23856== by 0x40068E: main (valgrind-example.c:11) - ==23856== Address 0x66e7068 is 0 bytes after a block of size 40 alloc'd - ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) - ==23856== by 0x400668: f (valgrind-example.c:5) - ==23856== by 0x40068E: main (valgrind-example.c:11) - ==23856== - ==23856== - ==23856== HEAP SUMMARY: - ==23856== in use at exit: 40 bytes in 1 blocks - ==23856== total heap usage: 1 allocs, 0 frees, 40 bytes allocated - ==23856== - ==23856== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 - ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) - ==23856== by 0x400668: f (valgrind-example.c:5) - ==23856== by 0x40068E: main (valgrind-example.c:11) - ==23856== - ==23856== LEAK SUMMARY: - ==23856== definitely lost: 40 bytes in 1 blocks - ==23856== indirectly lost: 0 bytes in 0 blocks - ==23856== possibly lost: 0 bytes in 0 blocks - ==23856== still reachable: 0 bytes in 0 blocks - ==23856== suppressed: 0 bytes in 0 blocks - ==23856== - ==23856== For counts of detected and suppressed errors, rerun with: -v - ==23856== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 6 from 6) + $ valgrind --leak-check=full ./valgrind-example + ==23856== Memcheck, a memory error detector + ==23856== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. + ==23856== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info + ==23856== Command: ./valgrind-example + ==23856== + ==23856== Invalid write of size 4 + ==23856== at 0x40067E: f (valgrind-example.c:6) + ==23856== by 0x40068E: main (valgrind-example.c:11) + ==23856== Address 0x66e7068 is 0 bytes after a block of size 40 alloc'd + ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) + ==23856== by 0x400668: f (valgrind-example.c:5) + ==23856== by 0x40068E: main (valgrind-example.c:11) + ==23856== + ==23856== + ==23856== HEAP SUMMARY: + ==23856== in use at exit: 40 bytes in 1 blocks + ==23856== total heap usage: 1 allocs, 0 frees, 40 bytes allocated + ==23856== + ==23856== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 + ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) + ==23856== by 0x400668: f (valgrind-example.c:5) + ==23856== by 0x40068E: main (valgrind-example.c:11) + ==23856== + ==23856== LEAK SUMMARY: + ==23856== definitely lost: 40 bytes in 1 blocks + ==23856== indirectly lost: 0 bytes in 0 blocks + ==23856== possibly lost: 0 bytes in 0 blocks + ==23856== still reachable: 0 bytes in 0 blocks + ==23856== suppressed: 0 bytes in 0 blocks + ==23856== + ==23856== For counts of detected and suppressed errors, rerun with: -v + ==23856== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 6 from 6) Now we can see that the memory leak is due to the malloc() at line 6. @@ -176,23 +165,23 @@ Although Valgrind is not primarily a parallel debugger, it can be used to debug parallel applications as well. When launching your parallel applications, prepend the valgrind command. For example : - $ mpirun -np 4 valgrind myapplication + $ mpirun -np 4 valgrind myapplication The default version without MPI support will however report a large number of false errors in the MPI library, such as : - ==30166== Conditional jump or move depends on uninitialised value(s) - ==30166== at 0x4C287E8: strlen (mc_replace_strmem.c:282) - ==30166== by 0x55443BD: I_MPI_Processor_model_number (init_interface.c:427) - ==30166== by 0x55439E0: I_MPI_Processor_arch_code (init_interface.c:171) - ==30166== by 0x558D5AE: MPID_nem_impi_init_shm_configuration (mpid_nem_impi_extensions.c:1091) - ==30166== by 0x5598F4C: MPID_nem_init_ckpt (mpid_nem_init.c:566) - ==30166== by 0x5598B65: MPID_nem_init (mpid_nem_init.c:489) - ==30166== by 0x539BD75: MPIDI_CH3_Init (ch3_init.c:64) - ==30166== by 0x5578743: MPID_Init (mpid_init.c:193) - ==30166== by 0x554650A: MPIR_Init_thread (initthread.c:539) - ==30166== by 0x553369F: PMPI_Init (init.c:195) - ==30166== by 0x4008BD: main (valgrind-example-mpi.c:18) + ==30166== Conditional jump or move depends on uninitialised value(s) + ==30166== at 0x4C287E8: strlen (mc_replace_strmem.c:282) + ==30166== by 0x55443BD: I_MPI_Processor_model_number (init_interface.c:427) + ==30166== by 0x55439E0: I_MPI_Processor_arch_code (init_interface.c:171) + ==30166== by 0x558D5AE: MPID_nem_impi_init_shm_configuration (mpid_nem_impi_extensions.c:1091) + ==30166== by 0x5598F4C: MPID_nem_init_ckpt (mpid_nem_init.c:566) + ==30166== by 0x5598B65: MPID_nem_init (mpid_nem_init.c:489) + ==30166== by 0x539BD75: MPIDI_CH3_Init (ch3_init.c:64) + ==30166== by 0x5578743: MPID_Init (mpid_init.c:193) + ==30166== by 0x554650A: MPIR_Init_thread (initthread.c:539) + ==30166== by 0x553369F: PMPI_Init (init.c:195) + ==30166== by 0x4008BD: main (valgrind-example-mpi.c:18) so it is better to use the MPI-enabled valgrind from module. The MPI version requires library @@ -202,105 +191,102 @@ environment variable. Lets look at this MPI example : - #include <stdlib.h> - #include <mpi.h> + #include <stdlib.h> + #include <mpi.h> - int main(int argc, char *argv[]) - { -      int *data = malloc(sizeof(int)*99); + int main(int argc, char *argv[]) + { +      int *data = malloc(sizeof(int)*99); -      MPI_Init(&argc, &argv); -     MPI_Bcast(data, 100, MPI_INT, 0, MPI_COMM_WORLD); -      MPI_Finalize(); +      MPI_Init(&argc, &argv); +     MPI_Bcast(data, 100, MPI_INT, 0, MPI_COMM_WORLD); +      MPI_Finalize(); -        return 0; - } +        return 0; + } There are two errors - use of uninitialized memory and invalid length of the buffer. Lets debug it with valgrind : - $ module add intel impi - $ mpicc -g valgrind-example-mpi.c -o valgrind-example-mpi - $ module add valgrind/3.9.0-impi - $ mpirun -np 2 -env LD_PRELOAD /apps/tools/valgrind/3.9.0/impi/lib/valgrind/libmpiwrap-amd64-linux.so valgrind ./valgrind-example-mpi + $ module add intel impi + $ mpicc -g valgrind-example-mpi.c -o valgrind-example-mpi + $ module add valgrind/3.9.0-impi + $ mpirun -np 2 -env LD_PRELOAD /apps/tools/valgrind/3.9.0/impi/lib/valgrind/libmpiwrap-amd64-linux.so valgrind ./valgrind-example-mpi Prints this output : (note that there is output printed for every launched MPI process) - ==31318== Memcheck, a memory error detector - ==31318== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. - ==31318== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info - ==31318== Command: ./valgrind-example-mpi - ==31318== - ==31319== Memcheck, a memory error detector - ==31319== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. - ==31319== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info - ==31319== Command: ./valgrind-example-mpi - ==31319== - valgrind MPI wrappers 31319: Active for pid 31319 - valgrind MPI wrappers 31319: Try MPIWRAP_DEBUG=help for possible options - valgrind MPI wrappers 31318: Active for pid 31318 - valgrind MPI wrappers 31318: Try MPIWRAP_DEBUG=help for possible options - ==31319== Unaddressable byte(s) found during client check request - ==31319== at 0x4E35974: check_mem_is_addressable_untyped (libmpiwrap.c:960) - ==31319== by 0x4E5D0FE: PMPI_Bcast (libmpiwrap.c:908) - ==31319== by 0x400911: main (valgrind-example-mpi.c:20) - ==31319== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd - ==31319== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==31319== by 0x4007BC: main (valgrind-example-mpi.c:8) - ==31319== - ==31318== Uninitialised byte(s) found during client check request - ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) - ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) - ==31318== by 0x400911: main (valgrind-example-mpi.c:20) - ==31318== Address 0x6929040 is 0 bytes inside a block of size 396 alloc'd - ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) - ==31318== - ==31318== Unaddressable byte(s) found during client check request - ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) - ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) - ==31318== by 0x400911: main (valgrind-example-mpi.c:20) - ==31318== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd - ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) - ==31318== - ==31318== - ==31318== HEAP SUMMARY: - ==31318== in use at exit: 3,172 bytes in 67 blocks - ==31318== total heap usage: 191 allocs, 124 frees, 81,203 bytes allocated - ==31318== - ==31319== - ==31319== HEAP SUMMARY: - ==31319== in use at exit: 3,172 bytes in 67 blocks - ==31319== total heap usage: 175 allocs, 108 frees, 48,435 bytes allocated - ==31319== - ==31318== LEAK SUMMARY: - ==31318== definitely lost: 408 bytes in 3 blocks - ==31318== indirectly lost: 256 bytes in 1 blocks - ==31318== possibly lost: 0 bytes in 0 blocks - ==31318== still reachable: 2,508 bytes in 63 blocks - ==31318== suppressed: 0 bytes in 0 blocks - ==31318== Rerun with --leak-check=full to see details of leaked memory - ==31318== - ==31318== For counts of detected and suppressed errors, rerun with: -v - ==31318== Use --track-origins=yes to see where uninitialised values come from - ==31318== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 4 from 4) - ==31319== LEAK SUMMARY: - ==31319== definitely lost: 408 bytes in 3 blocks - ==31319== indirectly lost: 256 bytes in 1 blocks - ==31319== possibly lost: 0 bytes in 0 blocks - ==31319== still reachable: 2,508 bytes in 63 blocks - ==31319== suppressed: 0 bytes in 0 blocks - ==31319== Rerun with --leak-check=full to see details of leaked memory - ==31319== - ==31319== For counts of detected and suppressed errors, rerun with: -v - ==31319== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4) + ==31318== Memcheck, a memory error detector + ==31318== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. + ==31318== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info + ==31318== Command: ./valgrind-example-mpi + ==31318== + ==31319== Memcheck, a memory error detector + ==31319== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. + ==31319== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info + ==31319== Command: ./valgrind-example-mpi + ==31319== + valgrind MPI wrappers 31319: Active for pid 31319 + valgrind MPI wrappers 31319: Try MPIWRAP_DEBUG=help for possible options + valgrind MPI wrappers 31318: Active for pid 31318 + valgrind MPI wrappers 31318: Try MPIWRAP_DEBUG=help for possible options + ==31319== Unaddressable byte(s) found during client check request + ==31319== at 0x4E35974: check_mem_is_addressable_untyped (libmpiwrap.c:960) + ==31319== by 0x4E5D0FE: PMPI_Bcast (libmpiwrap.c:908) + ==31319== by 0x400911: main (valgrind-example-mpi.c:20) + ==31319== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd + ==31319== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==31319== by 0x4007BC: main (valgrind-example-mpi.c:8) + ==31319== + ==31318== Uninitialised byte(s) found during client check request + ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) + ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) + ==31318== by 0x400911: main (valgrind-example-mpi.c:20) + ==31318== Address 0x6929040 is 0 bytes inside a block of size 396 alloc'd + ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) + ==31318== + ==31318== Unaddressable byte(s) found during client check request + ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) + ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) + ==31318== by 0x400911: main (valgrind-example-mpi.c:20) + ==31318== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd + ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) + ==31318== + ==31318== + ==31318== HEAP SUMMARY: + ==31318== in use at exit: 3,172 bytes in 67 blocks + ==31318== total heap usage: 191 allocs, 124 frees, 81,203 bytes allocated + ==31318== + ==31319== + ==31319== HEAP SUMMARY: + ==31319== in use at exit: 3,172 bytes in 67 blocks + ==31319== total heap usage: 175 allocs, 108 frees, 48,435 bytes allocated + ==31319== + ==31318== LEAK SUMMARY: + ==31318== definitely lost: 408 bytes in 3 blocks + ==31318== indirectly lost: 256 bytes in 1 blocks + ==31318== possibly lost: 0 bytes in 0 blocks + ==31318== still reachable: 2,508 bytes in 63 blocks + ==31318== suppressed: 0 bytes in 0 blocks + ==31318== Rerun with --leak-check=full to see details of leaked memory + ==31318== + ==31318== For counts of detected and suppressed errors, rerun with: -v + ==31318== Use --track-origins=yes to see where uninitialised values come from + ==31318== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 4 from 4) + ==31319== LEAK SUMMARY: + ==31319== definitely lost: 408 bytes in 3 blocks + ==31319== indirectly lost: 256 bytes in 1 blocks + ==31319== possibly lost: 0 bytes in 0 blocks + ==31319== still reachable: 2,508 bytes in 63 blocks + ==31319== suppressed: 0 bytes in 0 blocks + ==31319== Rerun with --leak-check=full to see details of leaked memory + ==31319== + ==31319== For counts of detected and suppressed errors, rerun with: -v + ==31319== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4) We can see that Valgrind has reported use of unitialised memory on the master process (which reads the array to be broadcasted) and use of unaddresable memory on both processes. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/vampir.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/vampir.md index c61edbc82..d1dd206c9 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/vampir.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/vampir.md @@ -1,14 +1,6 @@ Vampir ====== - - - - - - - - Vampir is a commercial trace analysis and visualisation tool. It can work with traces in OTF and OTF2 formats. It does not have the functionality to collect traces, you need to use a trace collection tool @@ -25,8 +17,8 @@ Installed versions Version 8.5.0 is currently installed as module Vampir/8.5.0 : - $ module load Vampir/8.5.0 - $ vampir & + $ module load Vampir/8.5.0 + $ vampir & User manual ----------- @@ -37,8 +29,5 @@ $EBROOTVAMPIR/doc/vampir-manual.pdf References ---------- -1.<https://www.vampir.eu> - - - +1. <https://www.vampir.eu> diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/gpi2.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/gpi2.md index c4d0de9ce..d8972caa0 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/gpi2.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/gpi2.md @@ -1,22 +1,9 @@ GPI-2 ===== - - - - A library that implements the GASPI specification - - - - - - - - - - + Introduction ------------ @@ -40,7 +27,7 @@ Modules The GPI-2, version 1.0.2 is available on Anselm via module gpi2: - $ module load gpi2 + $ module load gpi2 The module sets up environment variables, required for linking and running GPI-2 enabled applications. This particular command loads the @@ -57,15 +44,15 @@ infinband communication library ibverbs. ### Compiling and linking with Intel compilers - $ module load intel - $ module load gpi2 - $ icc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -lGPI2 -libverbs + $ module load intel + $ module load gpi2 + $ icc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -lGPI2 -libverbs ### Compiling and linking with GNU compilers - $ module load gcc - $ module load gpi2 - $ gcc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -lGPI2 -libverbs + $ module load gcc + $ module load gpi2 + $ gcc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -lGPI2 -libverbs Running the GPI-2 codes ----------------------- @@ -76,29 +63,29 @@ gaspi_run starts the GPI-2 application The gaspi_run utility is used to start and run GPI-2 applications: - $ gaspi_run -m machinefile ./myprog.x + $ gaspi_run -m machinefile ./myprog.x A machine file (**machinefile**) with the hostnames of nodes where the application will run, must be provided. The**** machinefile lists all nodes on which to run, one entry per node per process. This file may be hand created or obtained from standard $PBS_NODEFILE: - $ cut -f1 -d"." $PBS_NODEFILE > machinefile + $ cut -f1 -d"." $PBS_NODEFILE > machinefile machinefile: - cn79 - cn80 + cn79 + cn80 This machinefile will run 2 GPI-2 processes, one on node cn79 other on node cn80. machinefle: - cn79 - cn79 - cn80 - cn80 + cn79 + cn79 + cn80 + cn80 This machinefile will run 4 GPI-2 processes, 2 on node cn79 o 2 on node cn80. @@ -108,7 +95,7 @@ node Example: - $ qsub -A OPEN-0-0 -q qexp -l select=2:ncpus=16:mpiprocs=16 -I + $ qsub -A OPEN-0-0 -q qexp -l select=2:ncpus=16:mpiprocs=16 -I This example will produce $PBS_NODEFILE with 16 entries per node. @@ -128,63 +115,63 @@ Example Following is an example GPI-2 enabled code: - #include <GASPI.h> - #include <stdlib.h> - - void success_or_exit ( const char* file, const int line, const int ec) - { - if (ec != GASPI_SUCCESS) - { - gaspi_printf ("Assertion failed in %s[%i]:%dn", file, line, ec); - exit (1); - } - } - - #define ASSERT(ec) success_or_exit (__FILE__, __LINE__, ec); - - int main(int argc, char *argv[]) - { - gaspi_rank_t rank, num; - gaspi_return_t ret; - - /* Initialize GPI-2 */ - ASSERT( gaspi_proc_init(GASPI_BLOCK) ); - - /* Get ranks information */ - ASSERT( gaspi_proc_rank(&rank) ); - ASSERT( gaspi_proc_num(&num) ); - - gaspi_printf("Hello from rank %d of %dn", - rank, num); - - /* Terminate */ - ASSERT( gaspi_proc_term(GASPI_BLOCK) ); - - return 0; - } + #include <GASPI.h> + #include <stdlib.h> + + void success_or_exit ( const char* file, const int line, const int ec) + { + if (ec != GASPI_SUCCESS) + { + gaspi_printf ("Assertion failed in %s[%i]:%dn", file, line, ec); + exit (1); + } + } + + #define ASSERT(ec) success_or_exit (__FILE__, __LINE__, ec); + + int main(int argc, char *argv[]) + { + gaspi_rank_t rank, num; + gaspi_return_t ret; + + /* Initialize GPI-2 */ + ASSERT( gaspi_proc_init(GASPI_BLOCK) ); + + /* Get ranks information */ + ASSERT( gaspi_proc_rank(&rank) ); + ASSERT( gaspi_proc_num(&num) ); + + gaspi_printf("Hello from rank %d of %dn", + rank, num); + + /* Terminate */ + ASSERT( gaspi_proc_term(GASPI_BLOCK) ); + + return 0; + } Load modules and compile: - $ module load gcc gpi2 - $ gcc helloworld_gpi.c -o helloworld_gpi.x -Wl,-rpath=$LIBRARY_PATH -lGPI2 -libverbs + $ module load gcc gpi2 + $ gcc helloworld_gpi.c -o helloworld_gpi.x -Wl,-rpath=$LIBRARY_PATH -lGPI2 -libverbs Submit the job and run the GPI-2 application - $ qsub -q qexp -l select=2:ncpus=1:mpiprocs=1,place=scatter,walltime=00:05:00 -I - qsub: waiting for job 171247.dm2 to start - qsub: job 171247.dm2 ready + $ qsub -q qexp -l select=2:ncpus=1:mpiprocs=1,place=scatter,walltime=00:05:00 -I + qsub: waiting for job 171247.dm2 to start + qsub: job 171247.dm2 ready - cn79 $ module load gpi2 - cn79 $ cut -f1 -d"." $PBS_NODEFILE > machinefile - cn79 $ gaspi_run -m machinefile ./helloworld_gpi.x - Hello from rank 0 of 2 + cn79 $ module load gpi2 + cn79 $ cut -f1 -d"." $PBS_NODEFILE > machinefile + cn79 $ gaspi_run -m machinefile ./helloworld_gpi.x + Hello from rank 0 of 2 At the same time, in another session, you may start the gaspi logger: - $ ssh cn79 - cn79 $ gaspi_logger - GASPI Logger (v1.1) - [cn80:0] Hello from rank 1 of 2 + $ ssh cn79 + cn79 $ gaspi_logger + GASPI Logger (v1.1) + [cn80:0] Hello from rank 1 of 2 In this example, we compile the helloworld_gpi.c code using the **gnu compiler** (gcc) and link it to the GPI-2 and ibverbs library. The @@ -193,6 +180,3 @@ queue, 2 nodes 1 core each. The GPI module must be loaded on the master compute node (in this example the cn79), gaspi_logger is used from different session to view the output of the second process. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite.md index 16b07fefd..7c41a4bad 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite.md @@ -1,28 +1,18 @@ Intel Parallel Studio ===================== - - - - - - - - - - - + The Anselm cluster provides following elements of the Intel Parallel Studio XE -Intel Parallel Studio XE -------------------------------------------------- -Intel Compilers -Intel Debugger -Intel MKL Library -Intel Integrated Performance Primitives Library -Intel Threading Building Blocks Library + Intel Parallel Studio XE + ------------------------------------------------- + Intel Compilers + Intel Debugger + Intel MKL Library + Intel Integrated Performance Primitives Library + Intel Threading Building Blocks Library Intel compilers --------------- @@ -31,9 +21,9 @@ The Intel compilers version 13.1.3 are available, via module intel. The compilers include the icc C and C++ compiler and the ifort fortran 77/90/95 compiler. - $ module load intel - $ icc -v - $ ifort -v + $ module load intel + $ icc -v + $ ifort -v Read more at the [Intel Compilers](intel-suite/intel-compilers.html) page. @@ -48,8 +38,8 @@ environment. Use [X display](https://docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/resolveuid/11e53ad0d2fd4c5187537f4baeedff33) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](intel-suite/intel-debugger.html) page. @@ -63,7 +53,7 @@ Intel MKL unites and provides these basic components: BLAS, LAPACK, ScaLapack, PARDISO, FFT, VML, VSL, Data fitting, Feast Eigensolver and many more. - $ module load mkl + $ module load mkl Read more at the [Intel MKL](intel-suite/intel-mkl.html) page. @@ -78,7 +68,7 @@ includes signal, image and frame processing algorithms, such as FFT, FIR, Convolution, Optical Flow, Hough transform, Sum, MinMax and many more. - $ module load ipp + $ module load ipp Read more at the [Intel IPP](intel-suite/intel-integrated-performance-primitives.html) @@ -96,11 +86,8 @@ smaller parallel components. To use the library, you specify tasks, not threads, and let the library map tasks onto threads in an efficient manner. - $ module load tbb + $ module load tbb Read more at the [Intel TBB](intel-suite/intel-tbb.html) page. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-compilers.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-compilers.md index 790c71607..14ce867f6 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-compilers.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-compilers.md @@ -1,25 +1,15 @@ Intel Compilers =============== - - - - - - - - - - - + The Intel compilers version 13.1.1 are available, via module intel. The compilers include the icc C and C++ compiler and the ifort fortran 77/90/95 compiler. - $ module load intel - $ icc -v - $ ifort -v + $ module load intel + $ icc -v + $ ifort -v The intel compilers provide for vectorization of the code, via the AVX instructions and support threading parallelization via OpenMP @@ -28,8 +18,8 @@ For maximum performance on the Anselm cluster, compile your programs using the AVX instructions, with reporting where the vectorization was used. We recommend following compilation options for high performance - $ icc -ipo -O3 -vec -xAVX -vec-report1 myprog.c mysubroutines.c -o myprog.x - $ ifort -ipo -O3 -vec -xAVX -vec-report1 myprog.f mysubroutines.f -o myprog.x + $ icc -ipo -O3 -vec -xAVX -vec-report1 myprog.c mysubroutines.c -o myprog.x + $ ifort -ipo -O3 -vec -xAVX -vec-report1 myprog.f mysubroutines.f -o myprog.x In this example, we compile the program enabling interprocedural optimizations between source files (-ipo), aggresive loop optimizations @@ -39,8 +29,8 @@ The compiler recognizes the omp, simd, vector and ivdep pragmas for OpenMP parallelization and AVX vectorization. Enable the OpenMP parallelization by the **-openmp** compiler switch. - $ icc -ipo -O3 -vec -xAVX -vec-report1 -openmp myprog.c mysubroutines.c -o myprog.x - $ ifort -ipo -O3 -vec -xAVX -vec-report1 -openmp myprog.f mysubroutines.f -o myprog.x + $ icc -ipo -O3 -vec -xAVX -vec-report1 -openmp myprog.c mysubroutines.c -o myprog.x + $ ifort -ipo -O3 -vec -xAVX -vec-report1 -openmp myprog.f mysubroutines.f -o myprog.x Read more at <http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/compiler/cpp-lin/index.htm> @@ -59,21 +49,18 @@ with the compiler flags >designated to invoke these instructions. For the Intel compiler suite, there are two ways of doing >this: -- >Using compiler flag (both for Fortran and C): - -xCORE-AVX2. This will create a - binary class="s1">with AVX2 instructions, specifically - for the Haswell processors. Note that the - executable >will not run on Sandy 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. So this binary will run both on Sandy 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. - - - +- >Using compiler flag (both for Fortran and C): + -xCORE-AVX2. This will create a + binary class="s1">with AVX2 instructions, specifically + for the Haswell processors. Note that the + executable >will not run on Sandy 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. So this binary will run both on Sandy 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/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-debugger.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-debugger.md index 5199e1900..35ba0de03 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-debugger.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-debugger.md @@ -1,17 +1,7 @@ Intel Debugger ============== - - - - - - - - - - - + Debugging serial applications ----------------------------- @@ -23,12 +13,12 @@ environment. Use [X display](https://docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/resolveuid/11e53ad0d2fd4c5187537f4baeedff33) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb The debugger may run in text mode. To debug in text mode, use - $ idbc + $ idbc To debug on the compute nodes, module intel must be loaded. The GUI on compute nodes may be accessed using the same way as in [the @@ -37,14 +27,14 @@ section](https://docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/ Example: - $ qsub -q qexp -l select=1:ncpus=16 -X -I - qsub: waiting for job 19654.srv11 to start - qsub: job 19654.srv11 ready + $ qsub -q qexp -l select=1:ncpus=16 -X -I + qsub: waiting for job 19654.srv11 to start + qsub: job 19654.srv11 ready - $ module load intel - $ module load java - $ icc -O0 -g myprog.c -o myprog.x - $ idb ./myprog.x + $ module load intel + $ module load java + $ icc -O0 -g myprog.c -o myprog.x + $ idb ./myprog.x In this example, we allocate 1 full compute node, compile program myprog.c with debugging options -O0 -g and run the idb debugger @@ -64,12 +54,12 @@ rank in separate xterm terminal (do not forget the [X display](https://docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/resolveuid/11e53ad0d2fd4c5187537f4baeedff33)). Using Intel MPI, this may be done in following way: - $ qsub -q qexp -l select=2:ncpus=16 -X -I - qsub: waiting for job 19654.srv11 to start - qsub: job 19655.srv11 ready + $ qsub -q qexp -l select=2:ncpus=16 -X -I + qsub: waiting for job 19654.srv11 to start + qsub: job 19655.srv11 ready - $ module load intel impi - $ mpirun -ppn 1 -hostfile $PBS_NODEFILE --enable-x xterm -e idbc ./mympiprog.x + $ module load intel impi + $ mpirun -ppn 1 -hostfile $PBS_NODEFILE --enable-x xterm -e idbc ./mympiprog.x In this example, we allocate 2 full compute node, run xterm on each node and start idb debugger in command line mode, debugging two ranks of @@ -83,12 +73,12 @@ the debugger to bind to all ranks and provide aggregated outputs across the ranks, pausing execution automatically just after startup. You may then set break points and step the execution manually. Using Intel MPI: - $ qsub -q qexp -l select=2:ncpus=16 -X -I - qsub: waiting for job 19654.srv11 to start - qsub: job 19655.srv11 ready + $ qsub -q qexp -l select=2:ncpus=16 -X -I + qsub: waiting for job 19654.srv11 to start + qsub: job 19655.srv11 ready - $ module load intel impi - $ mpirun -n 32 -idb ./mympiprog.x + $ module load intel impi + $ mpirun -n 32 -idb ./mympiprog.x ### Debugging multithreaded application @@ -105,6 +95,3 @@ Exhaustive manual on idb features and usage is published at Intel website, <http://software.intel.com/sites/products/documentation/doclib/stdxe/2013/composerxe/debugger/user_guide/index.htm> - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-integrated-performance-primitives.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-integrated-performance-primitives.md index 14d9e68d3..107926c7c 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-integrated-performance-primitives.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-integrated-performance-primitives.md @@ -1,17 +1,7 @@ Intel IPP ========= - - - - - - - - - - - + Intel Integrated Performance Primitives --------------------------------------- @@ -27,7 +17,7 @@ algebra functions and many more. Check out IPP before implementing own math functions for data processing, it is likely already there. - $ module load ipp + $ module load ipp The module sets up environment variables, required for linking and running ipp enabled applications. @@ -35,60 +25,60 @@ running ipp enabled applications. IPP example ----------- - #include "ipp.h" - #include <stdio.h> - int main(int argc, char* argv[]) - { - const IppLibraryVersion *lib; - Ipp64u fm; - IppStatus status; - - status= ippInit(); //IPP initialization with the best optimization layer - if( status != ippStsNoErr ) { - printf("IppInit() Error:n"); - printf("%sn", ippGetStatusString(status) ); - return -1; - } - - //Get version info - lib = ippiGetLibVersion(); - printf("%s %sn", lib->Name, lib->Version); - - //Get CPU features enabled with selected library level - fm=ippGetEnabledCpuFeatures(); - printf("SSE :%cn",(fm>>1)&1?'Y':'N'); - printf("SSE2 :%cn",(fm>>2)&1?'Y':'N'); - printf("SSE3 :%cn",(fm>>3)&1?'Y':'N'); - printf("SSSE3 :%cn",(fm>>4)&1?'Y':'N'); - printf("SSE41 :%cn",(fm>>6)&1?'Y':'N'); - printf("SSE42 :%cn",(fm>>7)&1?'Y':'N'); - printf("AVX :%cn",(fm>>8)&1 ?'Y':'N'); - printf("AVX2 :%cn", (fm>>15)&1 ?'Y':'N' ); - printf("----------n"); - printf("OS Enabled AVX :%cn", (fm>>9)&1 ?'Y':'N'); - printf("AES :%cn", (fm>>10)&1?'Y':'N'); - printf("CLMUL :%cn", (fm>>11)&1?'Y':'N'); - printf("RDRAND :%cn", (fm>>13)&1?'Y':'N'); - printf("F16C :%cn", (fm>>14)&1?'Y':'N'); - - return 0; - } + #include "ipp.h" + #include <stdio.h> + int main(int argc, char* argv[]) + { + const IppLibraryVersion *lib; + Ipp64u fm; + IppStatus status; + + status= ippInit(); //IPP initialization with the best optimization layer + if( status != ippStsNoErr ) { + printf("IppInit() Error:n"); + printf("%sn", ippGetStatusString(status) ); + return -1; + } + + //Get version info + lib = ippiGetLibVersion(); + printf("%s %sn", lib->Name, lib->Version); + + //Get CPU features enabled with selected library level + fm=ippGetEnabledCpuFeatures(); + printf("SSE :%cn",(fm>>1)&1?'Y':'N'); + printf("SSE2 :%cn",(fm>>2)&1?'Y':'N'); + printf("SSE3 :%cn",(fm>>3)&1?'Y':'N'); + printf("SSSE3 :%cn",(fm>>4)&1?'Y':'N'); + printf("SSE41 :%cn",(fm>>6)&1?'Y':'N'); + printf("SSE42 :%cn",(fm>>7)&1?'Y':'N'); + printf("AVX :%cn",(fm>>8)&1 ?'Y':'N'); + printf("AVX2 :%cn", (fm>>15)&1 ?'Y':'N' ); + printf("----------n"); + printf("OS Enabled AVX :%cn", (fm>>9)&1 ?'Y':'N'); + printf("AES :%cn", (fm>>10)&1?'Y':'N'); + printf("CLMUL :%cn", (fm>>11)&1?'Y':'N'); + printf("RDRAND :%cn", (fm>>13)&1?'Y':'N'); + printf("F16C :%cn", (fm>>14)&1?'Y':'N'); + + return 0; + }  Compile above example, using any compiler and the ipp module. - $ module load intel - $ module load ipp + $ module load intel + $ module load ipp - $ icc testipp.c -o testipp.x -lippi -lipps -lippcore + $ icc testipp.c -o testipp.x -lippi -lipps -lippcore You will need the ipp module loaded to run the ipp enabled executable. This may be avoided, by compiling library search paths into the executable - $ module load intel - $ module load ipp + $ module load intel + $ module load ipp - $ icc testipp.c -o testipp.x -Wl,-rpath=$LIBRARY_PATH -lippi -lipps -lippcore + $ icc testipp.c -o testipp.x -Wl,-rpath=$LIBRARY_PATH -lippi -lipps -lippcore Code samples and documentation ------------------------------ @@ -102,6 +92,3 @@ website,](http://software.intel.com/sites/products/search/search.php?q=&x=15&y=6 in particular the [IPP Reference manual.](http://software.intel.com/sites/products/documentation/doclib/ipp_sa/71/ipp_manual/index.htm) - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-mkl.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-mkl.md index dfc8761d8..ead5eae8f 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-mkl.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-mkl.md @@ -1,18 +1,7 @@ Intel MKL ========= - - - - - - - - - - - - + Intel Math Kernel Library ------------------------- @@ -21,68 +10,65 @@ Intel Math Kernel Library (Intel MKL) is a library of math kernel subroutines, extensively threaded and optimized for maximum performance. Intel MKL provides these basic math kernels: +- -- + - + BLAS (level 1, 2, and 3) and LAPACK linear algebra routines, + offering vector, vector-matrix, and matrix-matrix operations. +- - BLAS (level 1, 2, and 3) and LAPACK linear algebra routines, - offering vector, vector-matrix, and matrix-matrix operations. -- + - + The PARDISO direct sparse solver, an iterative sparse solver, + and supporting sparse BLAS (level 1, 2, and 3) routines for solving + sparse systems of equations. +- - The PARDISO direct sparse solver, an iterative sparse solver, - and supporting sparse BLAS (level 1, 2, and 3) routines for solving - sparse systems of equations. -- + - + ScaLAPACK distributed processing linear algebra routines for + Linux* and Windows* operating systems, as well as the Basic Linear + Algebra Communications Subprograms (BLACS) and the Parallel Basic + Linear Algebra Subprograms (PBLAS). +- - ScaLAPACK distributed processing linear algebra routines for - Linux* and Windows* operating systems, as well as the Basic Linear - Algebra Communications Subprograms (BLACS) and the Parallel Basic - Linear Algebra Subprograms (PBLAS). -- + - + Fast Fourier transform (FFT) functions in one, two, or three + dimensions with support for mixed radices (not limited to sizes that + are powers of 2), as well as distributed versions of + these functions. +- - Fast Fourier transform (FFT) functions in one, two, or three - dimensions with support for mixed radices (not limited to sizes that - are powers of 2), as well as distributed versions of - these functions. -- + - + Vector Math Library (VML) routines for optimized mathematical + operations on vectors. +- - Vector Math Library (VML) routines for optimized mathematical - operations on vectors. -- + - - - Vector Statistical Library (VSL) routines, which offer - high-performance vectorized random number generators (RNG) for - several probability distributions, convolution and correlation - routines, and summary statistics functions. -- - - - - Data Fitting Library, which provides capabilities for - spline-based approximation of functions, derivatives and integrals - of functions, and search. -- Extended Eigensolver, a shared memory version of an eigensolver - based on the Feast Eigenvalue Solver. + Vector Statistical Library (VSL) routines, which offer + high-performance vectorized random number generators (RNG) for + several probability distributions, convolution and correlation + routines, and summary statistics functions. +- + + Data Fitting Library, which provides capabilities for + spline-based approximation of functions, derivatives and integrals + of functions, and search. +- Extended Eigensolver, a shared memory version of an eigensolver + based on the Feast Eigenvalue Solver. For details see the [Intel MKL Reference Manual](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mklman/index.htm). Intel MKL version 13.5.192 is available on Anselm - $ module load mkl + $ module load mkl The module sets up environment variables, required for linking and running mkl enabled applications. The most important variables are the @@ -99,10 +85,10 @@ type (necessary for indexing large arrays, with more than 231^-1 elements), whereas the LP64 libraries index arrays with the 32-bit integer type. -Interface Integer type ------------ ----------------------------------------------- -LP64 32-bit, int, integer(kind=4), MPI_INT -ILP64 64-bit, long int, integer(kind=8), MPI_INT64 + Interface Integer type + ----------- ----------------------------------------------- + LP64 32-bit, int, integer(kind=4), MPI_INT + ILP64 64-bit, long int, integer(kind=8), MPI_INT64 ### Linking @@ -114,7 +100,7 @@ You will need the mkl module loaded to run the mkl enabled executable. This may be avoided, by compiling library search paths into the executable. Include rpath on the compile line: - $ icc .... -Wl,-rpath=$LIBRARY_PATH ... + $ icc .... -Wl,-rpath=$LIBRARY_PATH ... ### Threading @@ -126,8 +112,8 @@ For this to work, the application must link the threaded MKL library OpenMP environment variables, such as OMP_NUM_THREADS and KMP_AFFINITY. MKL_NUM_THREADS takes precedence over OMP_NUM_THREADS - $ export OMP_NUM_THREADS=16 - $ export KMP_AFFINITY=granularity=fine,compact,1,0 + $ export OMP_NUM_THREADS=16 + $ export KMP_AFFINITY=granularity=fine,compact,1,0 The application will run with 16 threads with affinity optimized for fine grain parallelization. @@ -142,47 +128,47 @@ program for multi-threaded matrix multiplication. ### Working with examples - $ module load intel - $ module load mkl - $ cp -a $MKL_EXAMPLES/cblas /tmp/ - $ cd /tmp/cblas + $ module load intel + $ module load mkl + $ cp -a $MKL_EXAMPLES/cblas /tmp/ + $ cd /tmp/cblas - $ make sointel64 function=cblas_dgemm + $ make sointel64 function=cblas_dgemm In this example, we compile, link and run the cblas_dgemm example, demonstrating use of MKL example suite installed on Anselm. ### Example: MKL and Intel compiler - $ module load intel - $ module load mkl - $ cp -a $MKL_EXAMPLES/cblas /tmp/ - $ cd /tmp/cblas - $ - $ icc -w source/cblas_dgemmx.c source/common_func.c -mkl -o cblas_dgemmx.x - $ ./cblas_dgemmx.x data/cblas_dgemmx.d + $ module load intel + $ module load mkl + $ cp -a $MKL_EXAMPLES/cblas /tmp/ + $ cd /tmp/cblas + $ + $ icc -w source/cblas_dgemmx.c source/common_func.c -mkl -o cblas_dgemmx.x + $ ./cblas_dgemmx.x data/cblas_dgemmx.d In this example, we compile, link and run the cblas_dgemm example, demonstrating use of MKL with icc -mkl option. Using the -mkl option is equivalent to: - $ icc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x - -I$MKL_INC_DIR -L$MKL_LIB_DIR -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 + $ icc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x + -I$MKL_INC_DIR -L$MKL_LIB_DIR -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 In this example, we compile and link the cblas_dgemm example, using LP64 interface to threaded MKL and Intel OMP threads implementation. ### Example: MKL and GNU compiler - $ module load gcc - $ module load mkl - $ cp -a $MKL_EXAMPLES/cblas /tmp/ - $ cd /tmp/cblas - - $ gcc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x - -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lm + $ module load gcc + $ module load mkl + $ cp -a $MKL_EXAMPLES/cblas /tmp/ + $ cd /tmp/cblas + + $ gcc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x + -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lm - $ ./cblas_dgemmx.x data/cblas_dgemmx.d + $ ./cblas_dgemmx.x data/cblas_dgemmx.d In this example, we compile, link and run the cblas_dgemm example, using LP64 interface to threaded MKL and gnu OMP threads implementation. @@ -202,6 +188,3 @@ website](http://software.intel.com/en-us/intel-mkl), in particular the [MKL users guide](https://software.intel.com/en-us/intel-mkl/documentation/linux). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-parallel-studio-introduction.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-parallel-studio-introduction.md index 50600509c..26077232e 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-parallel-studio-introduction.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-parallel-studio-introduction.md @@ -1,28 +1,18 @@ Intel Parallel Studio ===================== - - - - - - - - - - - + The Anselm cluster provides following elements of the Intel Parallel Studio XE -Intel Parallel Studio XE -------------------------------------------------- -Intel Compilers -Intel Debugger -Intel MKL Library -Intel Integrated Performance Primitives Library -Intel Threading Building Blocks Library + Intel Parallel Studio XE + ------------------------------------------------- + Intel Compilers + Intel Debugger + Intel MKL Library + Intel Integrated Performance Primitives Library + Intel Threading Building Blocks Library Intel compilers --------------- @@ -31,9 +21,9 @@ The Intel compilers version 13.1.3 are available, via module intel. The compilers include the icc C and C++ compiler and the ifort fortran 77/90/95 compiler. - $ module load intel - $ icc -v - $ ifort -v + $ module load intel + $ icc -v + $ ifort -v Read more at the [Intel Compilers](intel-compilers.html) page. @@ -48,8 +38,8 @@ environment. Use [X display](https://docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/resolveuid/11e53ad0d2fd4c5187537f4baeedff33) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](intel-debugger.html) page. @@ -63,7 +53,7 @@ Intel MKL unites and provides these basic components: BLAS, LAPACK, ScaLapack, PARDISO, FFT, VML, VSL, Data fitting, Feast Eigensolver and many more. - $ module load mkl + $ module load mkl Read more at the [Intel MKL](intel-mkl.html) page. @@ -77,7 +67,7 @@ includes signal, image and frame processing algorithms, such as FFT, FIR, Convolution, Optical Flow, Hough transform, Sum, MinMax and many more. - $ module load ipp + $ module load ipp Read more at the [Intel IPP](intel-integrated-performance-primitives.html) page. @@ -94,10 +84,7 @@ smaller parallel components. To use the library, you specify tasks, not threads, and let the library map tasks onto threads in an efficient manner. - $ module load tbb + $ module load tbb Read more at the [Intel TBB](intel-tbb.html) page. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-tbb.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-tbb.md index 7a4cae0cb..29c0fa654 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-tbb.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-suite/intel-tbb.md @@ -1,17 +1,7 @@ Intel TBB ========= - - - - - - - - - - - + Intel Threading Building Blocks ------------------------------- @@ -26,7 +16,7 @@ accelerator](../intel-xeon-phi.html). Intel TBB version 4.1 is available on Anselm - $ module load tbb + $ module load tbb The module sets up environment variables, required for linking and running tbb enabled applications. @@ -39,12 +29,12 @@ Examples Number of examples, demonstrating use of TBB and its built-in scheduler is available on Anselm, in the $TBB_EXAMPLES directory. - $ module load intel - $ module load tbb - $ cp -a $TBB_EXAMPLES/common $TBB_EXAMPLES/parallel_reduce /tmp/ - $ cd /tmp/parallel_reduce/primes - $ icc -O2 -DNDEBUG -o primes.x main.cpp primes.cpp -ltbb - $ ./primes.x + $ module load intel + $ module load tbb + $ cp -a $TBB_EXAMPLES/common $TBB_EXAMPLES/parallel_reduce /tmp/ + $ cd /tmp/parallel_reduce/primes + $ icc -O2 -DNDEBUG -o primes.x main.cpp primes.cpp -ltbb + $ ./primes.x In this example, we compile, link and run the primes example, demonstrating use of parallel task-based reduce in computation of prime @@ -54,7 +44,7 @@ You will need the tbb module loaded to run the tbb enabled executable. This may be avoided, by compiling library search paths into the executable. - $ icc -O2 -o primes.x main.cpp primes.cpp -Wl,-rpath=$LIBRARY_PATH -ltbb + $ icc -O2 -o primes.x main.cpp primes.cpp -Wl,-rpath=$LIBRARY_PATH -ltbb Further reading --------------- @@ -62,6 +52,3 @@ Further reading Read more on Intel website, <http://software.intel.com/sites/products/documentation/doclib/tbb_sa/help/index.htm> - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-xeon-phi.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-xeon-phi.md index 1a3933def..ada902709 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-xeon-phi.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/intel-xeon-phi.md @@ -1,22 +1,9 @@ Intel Xeon Phi ============== - - - - A guide to Intel Xeon Phi usage - - - - - - - - - - + Intel Xeon Phi can be programmed in several modes. The default mode on Anselm is offload mode, but all modes described in this document are @@ -28,81 +15,80 @@ Intel Utilities for Xeon Phi To get access to a compute node with Intel Xeon Phi accelerator, use the PBS interactive session - $ qsub -I -q qmic -A NONE-0-0 + $ qsub -I -q qmic -A NONE-0-0 To set up the environment module "Intel" has to be loaded - $ module load intel/13.5.192 + $ module load intel/13.5.192 Information about the hardware can be obtained by running the micinfo program on the host. - $ /usr/bin/micinfo + $ /usr/bin/micinfo The output of the "micinfo" utility executed on one of the Anselm node is as follows. (note: to get PCIe related details the command has to be run with root privileges) - MicInfo Utility Log - - Created Mon Jul 22 00:23:50 2013 - - -        System Info -                HOST OS                : Linux -                OS Version             : 2.6.32-279.5.2.bl6.Bull.33.x86_64 -                Driver Version         : 6720-15 -                MPSS Version           : 2.1.6720-15 -                Host Physical Memory   : 98843 MB - - Device No: 0, Device Name: mic0 - -        Version -                Flash Version           : 2.1.03.0386 -                SMC Firmware Version    : 1.15.4830 -                SMC Boot Loader Version : 1.8.4326 -                uOS Version             : 2.6.38.8-g2593b11 -                Device Serial Number    : ADKC30102482 - -        Board -                Vendor ID               : 0x8086 -                Device ID               : 0x2250 -                Subsystem ID            : 0x2500 -                Coprocessor Stepping ID : 3 -                PCIe Width              : x16 -                PCIe Speed              : 5 GT/s -                PCIe Max payload size   : 256 bytes -                PCIe Max read req size  : 512 bytes -                Coprocessor Model       : 0x01 -                Coprocessor Model Ext   : 0x00 -                Coprocessor Type        : 0x00 -                Coprocessor Family      : 0x0b -                Coprocessor Family Ext  : 0x00 -                Coprocessor Stepping    : B1 -                Board SKU               : B1PRQ-5110P/5120D -                ECC Mode                : Enabled -                SMC HW Revision         : Product 225W Passive CS - -        Cores -                Total No of Active Cores : 60 -                Voltage                 : 1032000 uV -                Frequency               : 1052631 kHz - -        Thermal -                Fan Speed Control       : N/A -                Fan RPM                 : N/A -                Fan PWM                 : N/A -                Die Temp                : 49 C - -        GDDR -                GDDR Vendor             : Elpida -                GDDR Version            : 0x1 -                GDDR Density            : 2048 Mb -                GDDR Size               : 7936 MB -                GDDR Technology         : GDDR5 -                GDDR Speed              : 5.000000 GT/s -                GDDR Frequency          : 2500000 kHz -                GDDR Voltage            : 1501000 uV + MicInfo Utility Log + + Created Mon Jul 22 00:23:50 2013 + +        System Info +                HOST OS                : Linux +                OS Version             : 2.6.32-279.5.2.bl6.Bull.33.x86_64 +                Driver Version         : 6720-15 +                MPSS Version           : 2.1.6720-15 +                Host Physical Memory   : 98843 MB + + Device No: 0, Device Name: mic0 + +        Version +                Flash Version           : 2.1.03.0386 +                SMC Firmware Version    : 1.15.4830 +                SMC Boot Loader Version : 1.8.4326 +                uOS Version             : 2.6.38.8-g2593b11 +                Device Serial Number    : ADKC30102482 + +        Board +                Vendor ID               : 0x8086 +                Device ID               : 0x2250 +                Subsystem ID            : 0x2500 +                Coprocessor Stepping ID : 3 +                PCIe Width              : x16 +                PCIe Speed              : 5 GT/s +                PCIe Max payload size   : 256 bytes +                PCIe Max read req size  : 512 bytes +                Coprocessor Model       : 0x01 +                Coprocessor Model Ext   : 0x00 +                Coprocessor Type        : 0x00 +                Coprocessor Family      : 0x0b +                Coprocessor Family Ext  : 0x00 +                Coprocessor Stepping    : B1 +                Board SKU               : B1PRQ-5110P/5120D +                ECC Mode                : Enabled +                SMC HW Revision         : Product 225W Passive CS + +        Cores +                Total No of Active Cores : 60 +                Voltage                 : 1032000 uV +                Frequency               : 1052631 kHz + +        Thermal +                Fan Speed Control       : N/A +                Fan RPM                 : N/A +                Fan PWM                 : N/A +                Die Temp                : 49 C + +        GDDR +                GDDR Vendor             : Elpida +                GDDR Version            : 0x1 +                GDDR Density            : 2048 Mb +                GDDR Size               : 7936 MB +                GDDR Technology         : GDDR5 +                GDDR Speed              : 5.000000 GT/s +                GDDR Frequency          : 2500000 kHz +                GDDR Voltage            : 1501000 uV Offload Mode ------------ @@ -111,44 +97,44 @@ To compile a code for Intel Xeon Phi a MPSS stack has to be installed on the machine where compilation is executed. Currently the MPSS stack is only installed on compute nodes equipped with accelerators. - $ qsub -I -q qmic -A NONE-0-0 - $ module load intel/13.5.192 + $ qsub -I -q qmic -A NONE-0-0 + $ module load intel/13.5.192 For debugging purposes it is also recommended to set environment variable "OFFLOAD_REPORT". Value can be set from 0 to 3, where higher number means more debugging information. - export OFFLOAD_REPORT=3 + export OFFLOAD_REPORT=3 A very basic example of code that employs offload programming technique is shown in the next listing. Please note that this code is sequential and utilizes only single core of the accelerator. - $ vim source-offload.cpp + $ vim source-offload.cpp - #include <iostream> + #include <iostream> - int main(int argc, char* argv[]) - { -    const int niter = 100000; -    double result = 0; + int main(int argc, char* argv[]) + { +    const int niter = 100000; +    double result = 0; -  #pragma offload target(mic) -    for (int i = 0; i < niter; ++i) { -        const double t = (i + 0.5) / niter; -        result += 4.0 / (t * t + 1.0); -    } -    result /= niter; -    std::cout << "Pi ~ " << result << 'n'; - } +  #pragma offload target(mic) +    for (int i = 0; i < niter; ++i) { +        const double t = (i + 0.5) / niter; +        result += 4.0 / (t * t + 1.0); +    } +    result /= niter; +    std::cout << "Pi ~ " << result << 'n'; + } To compile a code using Intel compiler run - $ icc source-offload.cpp -o bin-offload + $ icc source-offload.cpp -o bin-offload To execute the code, run the following command on the host - ./bin-offload + ./bin-offload ### Parallelization in Offload Mode Using OpenMP @@ -156,91 +142,89 @@ One way of paralelization a code for Xeon Phi is using OpenMP directives. The following example shows code for parallel vector addition. - $ vim ./vect-add - - #include <stdio.h> - - typedef int T; - - #define SIZE 1000 - - #pragma offload_attribute(push, target(mic)) - T in1[SIZE]; - T in2[SIZE]; - T res[SIZE]; - #pragma offload_attribute(pop) - - // MIC function to add two vectors - __attribute__((target(mic))) add_mic(T *a, T *b, T *c, int size) { -  int i = 0; -  #pragma omp parallel for -    for (i = 0; i < size; i++) -      c[i] = a[i] + b[i]; - } - - // CPU function to add two vectors - void add_cpu (T *a, T *b, T *c, int size) { -  int i; -  for (i = 0; i < size; i++) -    c[i] = a[i] + b[i]; - } - - // CPU function to generate a vector of random numbers - void random_T (T *a, int size) { -  int i; -  for (i = 0; i < size; i++) -    a[i] = rand() % 10000; // random number between 0 and 9999 - } - - // CPU function to compare two vectors - int compare(T *a, T *b, T size ){ -  int pass = 0; -  int i; -  for (i = 0; i < size; i++){ -    if (a[i] != b[i]) { -      printf("Value mismatch at location %d, values %d and %dn",i, a[i], b[i]); -      pass = 1; -    } -  } -  if (pass == 0) printf ("Test passedn"); else printf ("Test Failedn"); -  return pass; - } - - - int main() - { -  int i; -  random_T(in1, SIZE); -  random_T(in2, SIZE); - -  #pragma offload target(mic) in(in1,in2) inout(res) -  { - -    // Parallel loop from main function -    #pragma omp parallel for -    for (i=0; i<SIZE; i++) -      res[i] = in1[i] + in2[i]; - -    // or parallel loop is called inside the function -    add_mic(in1, in2, res, SIZE); - -  } - - -  //Check the results with CPU implementation -  T res_cpu[SIZE]; -  add_cpu(in1, in2, res_cpu, SIZE); -  compare(res, res_cpu, SIZE); - - } + $ vim ./vect-add + + #include <stdio.h> + + typedef int T; + + #define SIZE 1000 + + #pragma offload_attribute(push, target(mic)) + T in1[SIZE]; + T in2[SIZE]; + T res[SIZE]; + #pragma offload_attribute(pop) + + // MIC function to add two vectors + __attribute__((target(mic))) add_mic(T *a, T *b, T *c, int size) { +  int i = 0; +  #pragma omp parallel for +    for (i = 0; i < size; i++) +      c[i] = a[i] + b[i]; + } + + // CPU function to add two vectors + void add_cpu (T *a, T *b, T *c, int size) { +  int i; +  for (i = 0; i < size; i++) +    c[i] = a[i] + b[i]; + } + + // CPU function to generate a vector of random numbers + void random_T (T *a, int size) { +  int i; +  for (i = 0; i < size; i++) +    a[i] = rand() % 10000; // random number between 0 and 9999 + } + + // CPU function to compare two vectors + int compare(T *a, T *b, T size ){ +  int pass = 0; +  int i; +  for (i = 0; i < size; i++){ +    if (a[i] != b[i]) { +      printf("Value mismatch at location %d, values %d and %dn",i, a[i], b[i]); +      pass = 1; +    } +  } +  if (pass == 0) printf ("Test passedn"); else printf ("Test Failedn"); +  return pass; + } + + int main() + { +  int i; +  random_T(in1, SIZE); +  random_T(in2, SIZE); + +  #pragma offload target(mic) in(in1,in2) inout(res) +  { + +    // Parallel loop from main function +    #pragma omp parallel for +    for (i=0; i<SIZE; i++) +      res[i] = in1[i] + in2[i]; + +    // or parallel loop is called inside the function +    add_mic(in1, in2, res, SIZE); + +  } + +  //Check the results with CPU implementation +  T res_cpu[SIZE]; +  add_cpu(in1, in2, res_cpu, SIZE); +  compare(res, res_cpu, SIZE); + + } During the compilation Intel compiler shows which loops have been vectorized in both host and accelerator. This can be enabled with compiler option "-vec-report2". To compile and execute the code run - $ icc vect-add.c -openmp_report2 -vec-report2 -o vect-add + $ icc vect-add.c -openmp_report2 -vec-report2 -o vect-add - $ ./vect-add + $ ./vect-add Some interesting compiler flags useful not only for code debugging are: @@ -265,21 +249,21 @@ transparently. Behavioral of automatic offload mode is controlled by functions called within the program or by environmental variables. Complete list of controls is listed [ -class="external-link">here](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm). +here](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm). The Automatic Offload may be enabled by either an MKL function call within the code: - mkl_mic_enable(); + mkl_mic_enable(); or by setting environment variable - $ export MKL_MIC_ENABLE=1 + $ export MKL_MIC_ENABLE=1 To get more information about automatic offload please refer to "[Using Intel® MKL Automatic Offload on Intel ® Xeon Phi™ Coprocessors](http://software.intel.com/sites/default/files/11MIC42_How_to_Use_MKL_Automatic_Offload_0.pdf)" -white paper or [ class="external-link">Intel MKL +white paper or [ Intel MKL documentation](https://software.intel.com/en-us/articles/intel-math-kernel-library-documentation). ### Automatic offload example @@ -287,68 +271,68 @@ documentation](https://software.intel.com/en-us/articles/intel-math-kernel-libra At first get an interactive PBS session on a node with MIC accelerator and load "intel" module that automatically loads "mkl" module as well. - $ qsub -I -q qmic -A OPEN-0-0 -l select=1:ncpus=16 - $ module load intel + $ qsub -I -q qmic -A OPEN-0-0 -l select=1:ncpus=16 + $ module load intel Following example show how to automatically offload an SGEMM (single precision - g dir="auto">eneral matrix multiply) function to MIC coprocessor. The code can be copied to a file and compiled without any necessary modification. - $ vim sgemm-ao-short.c + $ vim sgemm-ao-short.c - #include <stdio.h> - #include <stdlib.h> - #include <malloc.h> - #include <stdint.h> + #include <stdio.h> + #include <stdlib.h> + #include <malloc.h> + #include <stdint.h> - #include "mkl.h" + #include "mkl.h" - int main(int argc, char **argv) - { -        float *A, *B, *C; /* Matrices */ + int main(int argc, char **argv) + { +        float *A, *B, *C; /* Matrices */ -        MKL_INT N = 2560; /* Matrix dimensions */ -        MKL_INT LD = N; /* Leading dimension */ -        int matrix_bytes; /* Matrix size in bytes */ -        int matrix_elements; /* Matrix size in elements */ +        MKL_INT N = 2560; /* Matrix dimensions */ +        MKL_INT LD = N; /* Leading dimension */ +        int matrix_bytes; /* Matrix size in bytes */ +        int matrix_elements; /* Matrix size in elements */ -        float alpha = 1.0, beta = 1.0; /* Scaling factors */ -        char transa = 'N', transb = 'N'; /* Transposition options */ +        float alpha = 1.0, beta = 1.0; /* Scaling factors */ +        char transa = 'N', transb = 'N'; /* Transposition options */ -        int i, j; /* Counters */ +        int i, j; /* Counters */ -        matrix_elements = N * N; -        matrix_bytes = sizeof(float) * matrix_elements; +        matrix_elements = N * N; +        matrix_bytes = sizeof(float) * matrix_elements; -        /* Allocate the matrices */ -        A = malloc(matrix_bytes); B = malloc(matrix_bytes); C = malloc(matrix_bytes); +        /* Allocate the matrices */ +        A = malloc(matrix_bytes); B = malloc(matrix_bytes); C = malloc(matrix_bytes); -        /* Initialize the matrices */ -        for (i = 0; i < matrix_elements; i++) { -                A[i] = 1.0; B[i] = 2.0; C[i] = 0.0; -        } +        /* Initialize the matrices */ +        for (i = 0; i < matrix_elements; i++) { +                A[i] = 1.0; B[i] = 2.0; C[i] = 0.0; +        } -        printf("Computing SGEMM on the hostn"); -        sgemm(&transa, &transb, &N, &N, &N, &alpha, A, &N, B, &N, &beta, C, &N); +        printf("Computing SGEMM on the hostn"); +        sgemm(&transa, &transb, &N, &N, &N, &alpha, A, &N, B, &N, &beta, C, &N); -        printf("Enabling Automatic Offloadn"); -        /* Alternatively, set environment variable MKL_MIC_ENABLE=1 */ -        mkl_mic_enable(); -        -        int ndevices = mkl_mic_get_device_count(); /* Number of MIC devices */ -        printf("Automatic Offload enabled: %d MIC devices presentn",  ndevices); +        printf("Enabling Automatic Offloadn"); +        /* Alternatively, set environment variable MKL_MIC_ENABLE=1 */ +        mkl_mic_enable(); +        +        int ndevices = mkl_mic_get_device_count(); /* Number of MIC devices */ +        printf("Automatic Offload enabled: %d MIC devices presentn",  ndevices); -        printf("Computing SGEMM with automatic workdivisionn"); -        sgemm(&transa, &transb, &N, &N, &N, &alpha, A, &N, B, &N, &beta, C, &N); +        printf("Computing SGEMM with automatic workdivisionn"); +        sgemm(&transa, &transb, &N, &N, &N, &alpha, A, &N, B, &N, &beta, C, &N); -        /* Free the matrix memory */ -        free(A); free(B); free(C); +        /* Free the matrix memory */ +        free(A); free(B); free(C); -        printf("Donen"); +        printf("Donen"); -    return 0; - } +    return 0; + } Please note: This example is simplified version of an example from MKL. The expanded version can be found here: @@ -356,27 +340,27 @@ $MKL_EXAMPLES/mic_ao/blasc/source/sgemm.c** To compile a code using Intel compiler use: - $ icc -mkl sgemm-ao-short.c -o sgemm + $ icc -mkl sgemm-ao-short.c -o sgemm For debugging purposes enable the offload report to see more information about automatic offloading. - $ export OFFLOAD_REPORT=2 + $ export OFFLOAD_REPORT=2 The output of a code should look similar to following listing, where lines starting with [MKL] are generated by offload reporting: - Computing SGEMM on the host - Enabling Automatic Offload - Automatic Offload enabled: 1 MIC devices present - Computing SGEMM with automatic workdivision - [MKL] [MIC --] [AO Function]   SGEMM - [MKL] [MIC --] [AO SGEMM Workdivision] 0.00 1.00 - [MKL] [MIC 00] [AO SGEMM CPU Time]     0.463351 seconds - [MKL] [MIC 00] [AO SGEMM MIC Time]     0.179608 seconds - [MKL] [MIC 00] [AO SGEMM CPU->MIC Data] 52428800 bytes - [MKL] [MIC 00] [AO SGEMM MIC->CPU Data] 26214400 bytes - Done + Computing SGEMM on the host + Enabling Automatic Offload + Automatic Offload enabled: 1 MIC devices present + Computing SGEMM with automatic workdivision + [MKL] [MIC --] [AO Function]   SGEMM + [MKL] [MIC --] [AO SGEMM Workdivision] 0.00 1.00 + [MKL] [MIC 00] [AO SGEMM CPU Time]     0.463351 seconds + [MKL] [MIC 00] [AO SGEMM MIC Time]     0.179608 seconds + [MKL] [MIC 00] [AO SGEMM CPU->MIC Data] 52428800 bytes + [MKL] [MIC 00] [AO SGEMM MIC->CPU Data] 26214400 bytes + Done  @@ -391,9 +375,9 @@ To compile a code user has to be connected to a compute with MIC and load Intel compilers module. To get an interactive session on a compute node with an Intel Xeon Phi and load the module use following commands: - $ qsub -I -q qmic -A NONE-0-0 + $ qsub -I -q qmic -A NONE-0-0 - $ module load intel/13.5.192 + $ module load intel/13.5.192 Please note that particular version of the Intel module is specified. This information is used later to specify the correct library paths. @@ -403,16 +387,16 @@ to specify "-mmic" compiler flag. Two compilation examples are shown below. The first example shows how to compile OpenMP parallel code "vect-add.c" for host only: - $ icc -xhost -no-offload -fopenmp vect-add.c -o vect-add-host + $ icc -xhost -no-offload -fopenmp vect-add.c -o vect-add-host To run this code on host, use: - $ ./vect-add-host + $ ./vect-add-host The second example shows how to compile the same code for Intel Xeon Phi: - $ icc -mmic -fopenmp vect-add.c -o vect-add-mic + $ icc -mmic -fopenmp vect-add.c -o vect-add-mic ### Execution of the Program in Native Mode on Intel Xeon Phi @@ -423,18 +407,18 @@ have to copy binary files or libraries between the host and accelerator. To connect to the accelerator run: - $ ssh mic0 + $ ssh mic0 If the code is sequential, it can be executed directly: - mic0 $ ~/path_to_binary/vect-add-seq-mic + mic0 $ ~/path_to_binary/vect-add-seq-mic If the code is parallelized using OpenMP a set of additional libraries is required for execution. To locate these libraries new path has to be added to the LD_LIBRARY_PATH environment variable prior to the execution: - mic0 $ export LD_LIBRARY_PATH=/apps/intel/composer_xe_2013.5.192/compiler/lib/mic:$LD_LIBRARY_PATH + mic0 $ export LD_LIBRARY_PATH=/apps/intel/composer_xe_2013.5.192/compiler/lib/mic:$LD_LIBRARY_PATH Please note that the path exported in the previous example contains path to a specific compiler (here the version is 5.192). This version number @@ -444,7 +428,6 @@ was used to compile the code on the host computer. For your information the list of libraries and their location required for execution of an OpenMP parallel code on Intel Xeon Phi is: - >/apps/intel/composer_xe_2013.5.192/compiler/lib/mic libiomp5.so @@ -453,10 +436,9 @@ libsvml.so libirng.so libintlc.so.5 - >Finally, to run the compiled code use: - $ ~/path_to_binary/vect-add-mic + $ ~/path_to_binary/vect-add-mic >OpenCL ------------------- @@ -472,111 +454,104 @@ Phi. >On Anselm OpenCL is installed only on compute nodes with MIC accelerator, therefore OpenCL code can be compiled only on these nodes. - - module load opencl-sdk opencl-rt + module load opencl-sdk opencl-rt >Always load "opencl-sdk" (providing devel files like headers) and "opencl-rt" (providing dynamic library libOpenCL.so) modules to compile and link OpenCL code. Load "opencl-rt" for running your compiled code. - >There are two basic examples of OpenCL code in the following directory: - /apps/intel/opencl-examples/ + /apps/intel/opencl-examples/ >First example "CapsBasic" detects OpenCL compatible hardware, here CPU and MIC, and prints basic information about the capabilities of it. - - /apps/intel/opencl-examples/CapsBasic/capsbasic + /apps/intel/opencl-examples/CapsBasic/capsbasic >To compile and run the example copy it to your home directory, get a PBS interactive session on of the nodes with MIC and run make for compilation. Make files are very basic and shows how the OpenCL code can be compiled on Anselm. - $ cp /apps/intel/opencl-examples/CapsBasic/* . - $ qsub -I -q qmic -A NONE-0-0 - $ make + $ cp /apps/intel/opencl-examples/CapsBasic/* . + $ qsub -I -q qmic -A NONE-0-0 + $ make >The compilation command for this example is: - $ g++ capsbasic.cpp -lOpenCL -o capsbasic -I/apps/intel/opencl/include/ + $ g++ capsbasic.cpp -lOpenCL -o capsbasic -I/apps/intel/opencl/include/ >After executing the complied binary file, following output should be displayed. + ./capsbasic - ./capsbasic - - Number of available platforms: 1 - Platform names: -    [0] Intel(R) OpenCL [Selected] - Number of devices available for each type: -    CL_DEVICE_TYPE_CPU: 1 -    CL_DEVICE_TYPE_GPU: 0 -    CL_DEVICE_TYPE_ACCELERATOR: 1 + Number of available platforms: 1 + Platform names: +    [0] Intel(R) OpenCL [Selected] + Number of devices available for each type: +    CL_DEVICE_TYPE_CPU: 1 +    CL_DEVICE_TYPE_GPU: 0 +    CL_DEVICE_TYPE_ACCELERATOR: 1 - *** Detailed information for each device *** + *** Detailed information for each device *** - CL_DEVICE_TYPE_CPU[0] -    CL_DEVICE_NAME:       Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz -    CL_DEVICE_AVAILABLE: 1 + CL_DEVICE_TYPE_CPU[0] +    CL_DEVICE_NAME:       Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz +    CL_DEVICE_AVAILABLE: 1 - ... + ... - CL_DEVICE_TYPE_ACCELERATOR[0] -    CL_DEVICE_NAME: Intel(R) Many Integrated Core Acceleration Card -    CL_DEVICE_AVAILABLE: 1 + CL_DEVICE_TYPE_ACCELERATOR[0] +    CL_DEVICE_NAME: Intel(R) Many Integrated Core Acceleration Card +    CL_DEVICE_AVAILABLE: 1 - ... + ... >More information about this example can be found on Intel website: <http://software.intel.com/en-us/vcsource/samples/caps-basic/> - >The second example that can be found in "/apps/intel/opencl-examples" >directory is General Matrix Multiply. You can follow the the same procedure to download the example to your directory and compile it. - - $ cp -r /apps/intel/opencl-examples/* . - $ qsub -I -q qmic -A NONE-0-0 - $ cd GEMM - $ make + $ cp -r /apps/intel/opencl-examples/* . + $ qsub -I -q qmic -A NONE-0-0 + $ cd GEMM + $ make >The compilation command for this example is: - $ g++ cmdoptions.cpp gemm.cpp ../common/basic.cpp ../common/cmdparser.cpp ../common/oclobject.cpp -I../common -lOpenCL -o gemm -I/apps/intel/opencl/include/ + $ g++ cmdoptions.cpp gemm.cpp ../common/basic.cpp ../common/cmdparser.cpp ../common/oclobject.cpp -I../common -lOpenCL -o gemm -I/apps/intel/opencl/include/ >To see the performance of Intel Xeon Phi performing the DGEMM run the example as follows: - ./gemm -d 1 - Platforms (1): - [0] Intel(R) OpenCL [Selected] - Devices (2): - [0] Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz - [1] Intel(R) Many Integrated Core Acceleration Card [Selected] - Build program options: "-DT=float -DTILE_SIZE_M=1 -DTILE_GROUP_M=16 -DTILE_SIZE_N=128 -DTILE_GROUP_N=1 -DTILE_SIZE_K=8" - Running gemm_nn kernel with matrix size: 3968x3968 - Memory row stride to ensure necessary alignment: 15872 bytes - Size of memory region for one matrix: 62980096 bytes - Using alpha = 0.57599 and beta = 0.872412 - ... - Host time: 0.292953 sec. - Host perf: 426.635 GFLOPS - Host time: 0.293334 sec. - Host perf: 426.081 GFLOPS - ... + ./gemm -d 1 + Platforms (1): + [0] Intel(R) OpenCL [Selected] + Devices (2): + [0] Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz + [1] Intel(R) Many Integrated Core Acceleration Card [Selected] + Build program options: "-DT=float -DTILE_SIZE_M=1 -DTILE_GROUP_M=16 -DTILE_SIZE_N=128 -DTILE_GROUP_N=1 -DTILE_SIZE_K=8" + Running gemm_nn kernel with matrix size: 3968x3968 + Memory row stride to ensure necessary alignment: 15872 bytes + Size of memory region for one matrix: 62980096 bytes + Using alpha = 0.57599 and beta = 0.872412 + ... + Host time: 0.292953 sec. + Host perf: 426.635 GFLOPS + Host time: 0.293334 sec. + Host perf: 426.081 GFLOPS + ... >Please note: GNU compiler is used to compile the OpenCL codes for Intel MIC. You do not need to load Intel compiler module. - >MPI ----------------- @@ -586,50 +561,49 @@ Again an MPI code for Intel Xeon Phi has to be compiled on a compute node with accelerator and MPSS software stack installed. To get to a compute node with accelerator use: - $ qsub -I -q qmic -A NONE-0-0 + $ qsub -I -q qmic -A NONE-0-0 The only supported implementation of MPI standard for Intel Xeon Phi is Intel MPI. To setup a fully functional development environment a combination of Intel compiler and Intel MPI has to be used. On a host load following modules before compilation: - $ module load intel/13.5.192 impi/4.1.1.036 + $ module load intel/13.5.192 impi/4.1.1.036 To compile an MPI code for host use: - $ mpiicc -xhost -o mpi-test mpi-test.c + $ mpiicc -xhost -o mpi-test mpi-test.c To compile the same code for Intel Xeon Phi architecture use: - $ mpiicc -mmic -o mpi-test-mic mpi-test.c + $ mpiicc -mmic -o mpi-test-mic mpi-test.c An example of basic MPI version of "hello-world" example in C language, that can be executed on both host and Xeon Phi is (can be directly copy and pasted to a .c file) - #include <stdio.h> - #include <mpi.h> - + #include <stdio.h> + #include <mpi.h> - int main (argc, argv) -     int argc; -     char *argv[]; - { -  int rank, size; + int main (argc, argv) +     int argc; +     char *argv[]; + { +  int rank, size; -  int len; -  char node[MPI_MAX_PROCESSOR_NAME]; +  int len; +  char node[MPI_MAX_PROCESSOR_NAME]; -  MPI_Init (&argc, &argv);     /* starts MPI */ -  MPI_Comm_rank (MPI_COMM_WORLD, &rank);       /* get current process id */ -  MPI_Comm_size (MPI_COMM_WORLD, &size);       /* get number of processes */ +  MPI_Init (&argc, &argv);     /* starts MPI */ +  MPI_Comm_rank (MPI_COMM_WORLD, &rank);       /* get current process id */ +  MPI_Comm_size (MPI_COMM_WORLD, &size);       /* get number of processes */ -  MPI_Get_processor_name(node,&len); +  MPI_Get_processor_name(node,&len); -  printf( "Hello world from process %d of %d on host %s n", rank, size, node ); -  MPI_Finalize(); -  return 0; - } +  printf( "Hello world from process %d of %d on host %s n", rank, size, node ); +  MPI_Finalize(); +  return 0; + } ### MPI programming models @@ -651,14 +625,14 @@ coprocessor. Most general MPI case. >In this case all environment variables are set by modules, so to execute the compiled MPI program on a single node, use: - $ mpirun -np 4 ./mpi-test + $ mpirun -np 4 ./mpi-test The output should be similar to: - Hello world from process 1 of 4 on host cn207 - Hello world from process 3 of 4 on host cn207 - Hello world from process 2 of 4 on host cn207 - Hello world from process 0 of 4 on host cn207 + Hello world from process 1 of 4 on host cn207 + Hello world from process 3 of 4 on host cn207 + Hello world from process 2 of 4 on host cn207 + Hello world from process 0 of 4 on host cn207 ### Coprocessor-only model @@ -667,7 +641,6 @@ coprocessor: 1.) lunch the program using "**mpirun**" from the coprocessor; or 2.) lunch the task using "**mpiexec.hydra**" from a host. - Execution on coprocessor** Similarly to execution of OpenMP programs in native mode, since the @@ -677,17 +650,17 @@ by creating a "**.profile**" file in user's home directory. This file sets up the environment on the MIC automatically once user access to the accelerator through the SSH. - $ vim ~/.profile + $ vim ~/.profile - PS1='[u@h W]$ ' - export PATH=/usr/bin:/usr/sbin:/bin:/sbin + PS1='[u@h W]$ ' + export PATH=/usr/bin:/usr/sbin:/bin:/sbin - #OpenMP - export LD_LIBRARY_PATH=/apps/intel/composer_xe_2013.5.192/compiler/lib/mic:$LD_LIBRARY_PATH + #OpenMP + export LD_LIBRARY_PATH=/apps/intel/composer_xe_2013.5.192/compiler/lib/mic:$LD_LIBRARY_PATH - #Intel MPI - export LD_LIBRARY_PATH=/apps/intel/impi/4.1.1.036/mic/lib/:$LD_LIBRARY_PATH - export PATH=/apps/intel/impi/4.1.1.036/mic/bin/:$PATH + #Intel MPI + export LD_LIBRARY_PATH=/apps/intel/impi/4.1.1.036/mic/lib/:$LD_LIBRARY_PATH + export PATH=/apps/intel/impi/4.1.1.036/mic/bin/:$PATH Please note:  - this file sets up both environmental variable for both MPI and OpenMP @@ -699,26 +672,23 @@ to match with loaded modules. To access a MIC accelerator located on a node that user is currently connected to, use: - $ ssh mic0 + $ ssh mic0 or in case you need specify a MIC accelerator on a particular node, use: - $ ssh cn207-mic0 + $ ssh cn207-mic0 To run the MPI code in parallel on multiple core of the accelerator, use: - $ mpirun -np 4 ./mpi-test-mic + $ mpirun -np 4 ./mpi-test-mic The output should be similar to: - Hello world from process 1 of 4 on host cn207-mic0 - Hello world from process 2 of 4 on host cn207-mic0 - Hello world from process 3 of 4 on host cn207-mic0 - Hello world from process 0 of 4 on host cn207-mic0 - - - + Hello world from process 1 of 4 on host cn207-mic0 + Hello world from process 2 of 4 on host cn207-mic0 + Hello world from process 3 of 4 on host cn207-mic0 + Hello world from process 0 of 4 on host cn207-mic0 Execution on host** @@ -730,15 +700,15 @@ user has to specify library paths from the command line when calling First step is to tell mpiexec that the MPI should be executed on a local accelerator by setting up the environmental variable "I_MPI_MIC" - $ export I_MPI_MIC=1 + $ export I_MPI_MIC=1 Now the MPI program can be executed as: - $ mpiexec.hydra -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ -host mic0 -n 4 ~/mpi-test-mic + $ mpiexec.hydra -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ -host mic0 -n 4 ~/mpi-test-mic or using mpirun - $ mpirun -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ -host mic0 -n 4 ~/mpi-test-mic + $ mpirun -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ -host mic0 -n 4 ~/mpi-test-mic Please note:  - the full path to the binary has to specified (here: @@ -748,10 +718,10 @@ compile the MPI code The output should be again similar to: - Hello world from process 1 of 4 on host cn207-mic0 - Hello world from process 2 of 4 on host cn207-mic0 - Hello world from process 3 of 4 on host cn207-mic0 - Hello world from process 0 of 4 on host cn207-mic0 + Hello world from process 1 of 4 on host cn207-mic0 + Hello world from process 2 of 4 on host cn207-mic0 + Hello world from process 3 of 4 on host cn207-mic0 + Hello world from process 0 of 4 on host cn207-mic0 Please note that the "mpiexec.hydra" requires a file "**>pmi_proxy**" from Intel MPI library to be copied to the @@ -759,11 +729,8 @@ MIC filesystem. If the file is missing please contact the system administrators. A simple test to see if the file is present is to execute: -   $ ssh mic0 ls /bin/pmi_proxy -  /bin/pmi_proxy - - - +   $ ssh mic0 ls /bin/pmi_proxy +  /bin/pmi_proxy Execution on host - MPI processes distributed over multiple accelerators on multiple nodes** @@ -773,20 +740,19 @@ use PBS to allocate the resources. To start interactive session, that allocates 2 compute nodes = 2 MIC accelerators run qsub command with following parameters: - $ qsub -I -q qmic -A NONE-0-0 -l select=2:ncpus=16 + $ qsub -I -q qmic -A NONE-0-0 -l select=2:ncpus=16 - $ module load intel/13.5.192 impi/4.1.1.036 + $ module load intel/13.5.192 impi/4.1.1.036 >This command connects user through ssh to one of the nodes immediately. To see the other nodes that have been allocated use: - - $ cat $PBS_NODEFILE + $ cat $PBS_NODEFILE >For example: - cn204.bullx - cn205.bullx + cn204.bullx + cn205.bullx >This output means that the PBS allocated nodes cn204 and cn205, which means that user has direct access to "**cn204-mic0**" and @@ -802,55 +768,54 @@ node: **$ ssh cn204-mic0** or -** to connect to the accelerator on the second node from the first node: **$ ssh cn205-mic0** - >At this point we expect that correct modules are loaded and binary is compiled. For parallel execution the mpiexec.hydra is used. Again the first step is to tell mpiexec that the MPI can be executed on MIC accelerators by setting up the environmental variable "I_MPI_MIC" - $ export I_MPI_MIC=1 + $ export I_MPI_MIC=1 >The launch the MPI program use: - $ mpiexec.hydra -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ - -genv I_MPI_FABRICS_LIST tcp -  -genv I_MPI_FABRICS shm:tcp -  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 - -host cn204-mic0 -n 4 ~/mpi-test-mic - : -host cn205-mic0 -n 6 ~/mpi-test-mic + $ mpiexec.hydra -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ + -genv I_MPI_FABRICS_LIST tcp +  -genv I_MPI_FABRICS shm:tcp +  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 + -host cn204-mic0 -n 4 ~/mpi-test-mic + : -host cn205-mic0 -n 6 ~/mpi-test-mic or using mpirun: - $ mpirun -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ - -genv I_MPI_FABRICS_LIST tcp -  -genv I_MPI_FABRICS shm:tcp -  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 - -host cn204-mic0 -n 4 ~/mpi-test-mic - : -host cn205-mic0 -n 6 ~/mpi-test-mic + $ mpirun -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ + -genv I_MPI_FABRICS_LIST tcp +  -genv I_MPI_FABRICS shm:tcp +  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 + -host cn204-mic0 -n 4 ~/mpi-test-mic + : -host cn205-mic0 -n 6 ~/mpi-test-mic In this case four MPI processes are executed on accelerator cn204-mic and six processes are executed on accelerator cn205-mic0. The sample output (sorted after execution) is: - Hello world from process 0 of 10 on host cn204-mic0 - Hello world from process 1 of 10 on host cn204-mic0 - Hello world from process 2 of 10 on host cn204-mic0 - Hello world from process 3 of 10 on host cn204-mic0 - Hello world from process 4 of 10 on host cn205-mic0 - Hello world from process 5 of 10 on host cn205-mic0 - Hello world from process 6 of 10 on host cn205-mic0 - Hello world from process 7 of 10 on host cn205-mic0 - Hello world from process 8 of 10 on host cn205-mic0 - Hello world from process 9 of 10 on host cn205-mic0 + Hello world from process 0 of 10 on host cn204-mic0 + Hello world from process 1 of 10 on host cn204-mic0 + Hello world from process 2 of 10 on host cn204-mic0 + Hello world from process 3 of 10 on host cn204-mic0 + Hello world from process 4 of 10 on host cn205-mic0 + Hello world from process 5 of 10 on host cn205-mic0 + Hello world from process 6 of 10 on host cn205-mic0 + Hello world from process 7 of 10 on host cn205-mic0 + Hello world from process 8 of 10 on host cn205-mic0 + Hello world from process 9 of 10 on host cn205-mic0 The same way MPI program can be executed on multiple hosts: - $ mpiexec.hydra -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ - -genv I_MPI_FABRICS_LIST tcp -  -genv I_MPI_FABRICS shm:tcp -  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 - -host cn204 -n 4 ~/mpi-test - : -host cn205 -n 6 ~/mpi-test + $ mpiexec.hydra -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ + -genv I_MPI_FABRICS_LIST tcp +  -genv I_MPI_FABRICS shm:tcp +  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 + -host cn204 -n 4 ~/mpi-test + : -host cn205 -n 6 ~/mpi-test ### >Symmetric model @@ -864,14 +829,13 @@ executed. hosts "**mpi-test**" and one for MIC accelerators "**mpi-test-mic**". These two binaries can be executed at once using mpiexec.hydra: - - $ mpiexec.hydra - -genv I_MPI_FABRICS_LIST tcp - -genv I_MPI_FABRICS shm:tcp -  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 - -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ - -host cn205 -n 2 ~/mpi-test - : -host cn205-mic0 -n 2 ~/mpi-test-mic + $ mpiexec.hydra + -genv I_MPI_FABRICS_LIST tcp + -genv I_MPI_FABRICS shm:tcp +  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 + -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ + -host cn205 -n 2 ~/mpi-test + : -host cn205-mic0 -n 2 ~/mpi-test-mic In this example the first two parameters (line 2 and 3) sets up required environment variables for execution. The third line specifies binary @@ -880,26 +844,24 @@ binary that is execute on the accelerator (here cn205-mic0). >The output of the program is: - Hello world from process 0 of 4 on host cn205 - Hello world from process 1 of 4 on host cn205 - Hello world from process 2 of 4 on host cn205-mic0 - Hello world from process 3 of 4 on host cn205-mic0 + Hello world from process 0 of 4 on host cn205 + Hello world from process 1 of 4 on host cn205 + Hello world from process 2 of 4 on host cn205-mic0 + Hello world from process 3 of 4 on host cn205-mic0 >The execution procedure can be simplified by using the mpirun command with the machine file a a parameter. Machine file contains list of all nodes and accelerators that should used to execute MPI processes. - >An example of a machine file that uses 2 >hosts (**cn205** and **cn206**) and 2 accelerators **(cn205-mic0** and **cn206-mic0**) to run 2 MPI processes on each of them: - - $ cat hosts_file_mix - cn205:2 - cn205-mic0:2 - cn206:2 - cn206-mic0:2 + $ cat hosts_file_mix + cn205:2 + cn205-mic0:2 + cn206:2 + cn206-mic0:2 >In addition if a naming convention is set in a way that the name of the binary for host is **"bin_name"** and the name of the binary @@ -910,41 +872,37 @@ just the name of the host binary file (i.e. "mpi-test") and uses the suffix to get a name of the binary for accelerator (i..e. "mpi-test-mic"). - - $ export I_MPI_MIC_POSTFIX=-mic + $ export I_MPI_MIC_POSTFIX=-mic  >To run the MPI code using mpirun and the machine file "hosts_file_mix" use: - - $ mpirun - -genv I_MPI_FABRICS shm:tcp - -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ - -genv I_MPI_FABRICS_LIST tcp -  -genv I_MPI_FABRICS shm:tcp -  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 - -machinefile hosts_file_mix - ~/mpi-test + $ mpirun + -genv I_MPI_FABRICS shm:tcp + -genv LD_LIBRARY_PATH /apps/intel/impi/4.1.1.036/mic/lib/ + -genv I_MPI_FABRICS_LIST tcp +  -genv I_MPI_FABRICS shm:tcp +  -genv I_MPI_TCP_NETMASK=10.1.0.0/16 + -machinefile hosts_file_mix + ~/mpi-test >A possible output of the MPI "hello-world" example executed on two hosts and two accelerators is: - - Hello world from process 0 of 8 on host cn204 - Hello world from process 1 of 8 on host cn204 - Hello world from process 2 of 8 on host cn204-mic0 - Hello world from process 3 of 8 on host cn204-mic0 - Hello world from process 4 of 8 on host cn205 - Hello world from process 5 of 8 on host cn205 - Hello world from process 6 of 8 on host cn205-mic0 - Hello world from process 7 of 8 on host cn205-mic0 + Hello world from process 0 of 8 on host cn204 + Hello world from process 1 of 8 on host cn204 + Hello world from process 2 of 8 on host cn204-mic0 + Hello world from process 3 of 8 on host cn204-mic0 + Hello world from process 4 of 8 on host cn205 + Hello world from process 5 of 8 on host cn205 + Hello world from process 6 of 8 on host cn205-mic0 + Hello world from process 7 of 8 on host cn205-mic0 Please note: At this point the MPI communication between MIC accelerators on different nodes uses 1Gb Ethernet only. Using the PBS automatically generated node-files - PBS also generates a set of node-files that can be used instead of manually creating a new one every time. Three node-files are genereated: @@ -966,9 +924,5 @@ For more details about optimization techniques please read Intel document [Optimization and Performance Tuning for Intel® Xeon Phi™ Coprocessors](http://software.intel.com/en-us/articles/optimization-and-performance-tuning-for-intel-xeon-phi-coprocessors-part-1-optimization "http://software.intel.com/en-us/articles/optimization-and-performance-tuning-for-intel-xeon-phi-coprocessors-part-1-optimization") -  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/isv_licenses.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/isv_licenses.md index 75b279dbe..482f5f423 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/isv_licenses.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/isv_licenses.md @@ -1,22 +1,9 @@ ISV Licenses ============ - - - - A guide to managing Independent Software Vendor licences - - - - - - - - - - + On Anselm cluster there are also installed commercial software applications, also known as ISV (Independent Software Vendor), which are @@ -54,13 +41,13 @@ 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 + 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 @@ -68,22 +55,22 @@ the file via a script. Example of the Commercial Matlab license state: - $ 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 + $ 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 tracking in PBS Pro scheduler and users usage ----------------------------------------------------- @@ -101,11 +88,11 @@ feature__APP__FEATURE** Names of applications (APP): -- ansys -- comsol -- comsol-edu -- matlab -- matlab-edu +- ansys +- comsol +- comsol-edu +- matlab +- matlab-edu  @@ -113,111 +100,33 @@ To get the FEATUREs of a license take a look into the corresponding state file ([see above](isv_licenses.html#Licence)), or use: -<table> -<colgroup> -<col width="50%" /> -<col width="50%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">Application</th> -<th align="left">List of provided features</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">ansys</td> -<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/ansys_features_state.txt | cut -f1 -d' '</code></pre></td> -</tr> -<tr class="even"> -<td align="left">comsol</td> -<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/comsol_features_state.txt | cut -f1 -d' '</code></pre></td> -</tr> -<tr class="odd"> -<td align="left">comsol-edu</td> -<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/comsol-edu_features_state.txt | cut -f1 -d' '</code></pre></td> -</tr> -<tr class="even"> -<td align="left">matlab</td> -<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/matlab_features_state.txt | cut -f1 -d' '</code></pre></td> -</tr> -<tr class="odd"> -<td align="left">matlab-edu</td> -<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/matlab-edu_features_state.txt | cut -f1 -d' '</code></pre></td> -</tr> -</tbody> -</table> + |Application |List of provided features | + | --- | --- | + |ansys<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/ansys_features_state.txt | cut -f1 -d' '</code></pre> | + |comsol<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/comsol_features_state.txt | cut -f1 -d' '</code></pre> | + |comsol-edu<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/comsol-edu_features_state.txt | cut -f1 -d' '</code></pre> | + |matlab<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/matlab_features_state.txt | cut -f1 -d' '</code></pre> | + |matlab-edu<td align="left"><pre><code>$ grep -v "#" /apps/user/licenses/matlab-edu_features_state.txt | cut -f1 -d' '</code></pre> |  Example of PBS Pro resource name, based on APP and FEATURE name: -<table> -<colgroup> <col width="33%" /> <col width="33%" /> <col width="33%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">Application</th> -<th align="left">Feature</th> -<th align="left">PBS Pro resource name</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">ansys</td> -<td align="left">acfd</td> -<td align="left">feature__ansys__acfd</td> -</tr> -<tr class="even"> -<td align="left">ansys</td> -<td align="left">aa_r</td> -<td align="left">feature__ansys__aa_r</td> -</tr> -<tr class="odd"> -<td align="left">comsol</td> -<td align="left">COMSOL</td> -<td align="left">feature__comsol__COMSOL</td> -</tr> -<tr class="even"> -<td align="left">comsol</td> -<td align="left">HEATTRANSFER</td> -<td align="left">feature__comsol__HEATTRANSFER</td> -</tr> -<tr class="odd"> -<td align="left">comsol-edu</td> -<td align="left">COMSOLBATCH</td> -<td align="left">feature__comsol-edu__COMSOLBATCH</td> -</tr> -<tr class="even"> -<td align="left">comsol-edu</td> -<td align="left">STRUCTURALMECHANICS</td> -<td align="left">feature__comsol-edu__STRUCTURALMECHANICS</td> -</tr> -<tr class="odd"> -<td align="left">matlab</td> -<td align="left">MATLAB</td> -<td align="left">feature__matlab__MATLAB</td> -</tr> -<tr class="even"> -<td align="left">matlab</td> -<td align="left">Image_Toolbox</td> -<td align="left">feature__matlab__Image_Toolbox</td> -</tr> -<tr class="odd"> -<td align="left">matlab-edu</td> -<td align="left">MATLAB_Distrib_Comp_Engine</td> -<td align="left">feature__matlab-edu__MATLAB_Distrib_Comp_Engine</td> -</tr> -<tr class="even"> -<td align="left">matlab-edu</td> -<td align="left">Image_Acquisition_Toolbox</td> -<td align="left"><p>feature__matlab-edu__Image_Acquisition_Toolbox</p></td> -</tr> -</tbody> -</table> + |Application |Feature<th align="left">PBS Pro resource name | + | --- | --- | + |ansys<td align="left">acfd<td align="left">feature__ansys__acfd | + |ansys<td align="left">aa_r<td align="left">feature__ansys__aa_r | + |comsol<td align="left">COMSOL<td align="left">feature__comsol__COMSOL | + |comsol<td align="left">HEATTRANSFER<td align="left">feature__comsol__HEATTRANSFER | + |comsol-edu<td align="left">COMSOLBATCH<td align="left">feature__comsol-edu__COMSOLBATCH | + |comsol-edu<td align="left">STRUCTURALMECHANICS<td align="left">feature__comsol-edu__STRUCTURALMECHANICS | + |matlab<td align="left">MATLAB<td align="left">feature__matlab__MATLAB | + |matlab<td align="left">Image_Toolbox<td align="left">feature__matlab__Image_Toolbox | + |matlab-edu<td align="left">MATLAB_Distrib_Comp_Engine<td align="left">feature__matlab-edu__MATLAB_Distrib_Comp_Engine | + |matlab-edu<td align="left">Image_Acquisition_Toolbox<td align="left">feature__matlab-edu__Image_Acquisition_Toolbox\ | Be aware, that the resource names in PBS Pro are CASE SENSITIVE!** @@ -227,7 +136,7 @@ Run an interactive PBS job with 1 Matlab EDU license, 1 Distributed Computing Toolbox and 32 Distributed Computing Engines (running on 32 cores): - $ qsub -I -q qprod -A PROJECT_ID -l select=2:ncpus=16 -l feature__matlab-edu__MATLAB=1 -l feature__matlab-edu__Distrib_Computing_Toolbox=1 -l feature__matlab-edu__MATLAB_Distrib_Comp_Engine=32 + $ qsub -I -q qprod -A PROJECT_ID -l select=2:ncpus=16 -l feature__matlab-edu__MATLAB=1 -l feature__matlab-edu__Distrib_Computing_Toolbox=1 -l feature__matlab-edu__MATLAB_Distrib_Comp_Engine=32 The license is used and accounted only with the real usage of the product. So in this example, the general Matlab is used after Matlab is @@ -238,6 +147,3 @@ time, when the user uses the distributed parallel computation in Matlab  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/java.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/java.md index 294e7901f..9094578fb 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/java.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/java.md @@ -1,41 +1,28 @@ Java ==== - - - - Java on ANSELM - - - - - - - - - - + Java is available on Anselm cluster. Activate java by loading the java module - $ module load java + $ module load java Note that the java module must be loaded on the compute nodes as well, in order to run java on compute nodes. Check for java version and path - $ java -version - $ which java + $ java -version + $ which java With the module loaded, not only the runtime environment (JRE), but also the development environment (JDK) with the compiler is available. - $ javac -version - $ which javac + $ javac -version + $ which javac Java applications may use MPI for interprocess communication, in conjunction with OpenMPI. Read more @@ -44,6 +31,3 @@ This functionality is currently not supported on Anselm cluster. In case you require the java interface to MPI, please contact [Anselm support](https://support.it4i.cz/rt/). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/kvirtualization.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/kvirtualization.md index 9acb9278e..106d6dfeb 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/kvirtualization.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/kvirtualization.md @@ -1,22 +1,9 @@ Virtualization ============== - - - - Running virtual machines on compute nodes - - - - - - - - - - + Introduction ------------ @@ -24,14 +11,14 @@ Introduction There are situations when Anselm's environment is not suitable for user needs. -- Application requires different operating system (e.g Windows), - application is not available for Linux -- Application requires different versions of base system libraries and - tools -- Application requires specific setup (installation, configuration) of - complex software stack -- Application requires privileged access to operating system -- ... and combinations of above cases +- Application requires different operating system (e.g Windows), + application is not available for Linux +- Application requires different versions of base system libraries and + tools +- Application requires specific setup (installation, configuration) of + complex software stack +- Application requires privileged access to operating system +- ... and combinations of above cases  We offer solution for these cases - **virtualization**. Anselm's environment gives the possibility to run virtual machines on compute @@ -96,7 +83,6 @@ running in their virtual machines. We propose this job workflow: - Workflow](virtualization-job-workflow "Virtualization Job Workflow") Our recommended solution is that job script creates distinct shared job @@ -114,11 +100,11 @@ concurrent jobs. ### Procedure -1.Prepare image of your virtual machine -2.Optimize image of your virtual machine for Anselm's virtualization -3.Modify your image for running jobs -4.Create job script for executing virtual machine -5.Run jobs +1. Prepare image of your virtual machine +2. Optimize image of your virtual machine for Anselm's virtualization +3. Modify your image for running jobs +4. Create job script for executing virtual machine +5. Run jobs ### Prepare image of your virtual machine @@ -126,15 +112,15 @@ You can either use your existing image or create new image from scratch. QEMU currently supports these image types or formats: -- raw -- cloop -- cow -- qcow -- qcow2 -- vmdk - VMware 3 & 4, or 6 image format, for exchanging images with - that product -- vdi - VirtualBox 1.1 compatible image format, for exchanging images - with VirtualBox. +- raw +- cloop +- cow +- qcow +- qcow2 +- vmdk - VMware 3 & 4, or 6 image format, for exchanging images with + that product +- vdi - VirtualBox 1.1 compatible image format, for exchanging images + with VirtualBox. You can convert your existing image using qemu-img convert command. Supported formats of this command are: blkdebug blkverify bochs cloop @@ -181,8 +167,8 @@ We recommend, that startup script maps Job Directory from host (from compute node) runs script (we call it "run script") from Job Directory and waits for application's exit -- for management purposes if run script does not exist wait for some - time period (few minutes) +- for management purposes if run script does not exist wait for some + time period (few minutes) shutdowns/quits OS For Windows operating systems we suggest using Local Group Policy @@ -191,42 +177,41 @@ script or similar service. Example startup script for Windows virtual machine: - @echo off - set LOG=c:startup.log - set MAPDRIVE=z: - set SCRIPT=%MAPDRIVE%run.bat - set TIMEOUT=300 - - echo %DATE% %TIME% Running startup script>%LOG% + @echo off + set LOG=c:startup.log + set MAPDRIVE=z: + set SCRIPT=%MAPDRIVE%run.bat + set TIMEOUT=300 - rem Mount share - echo %DATE% %TIME% Mounting shared drive>>%LOG% - net use z: 10.0.2.4qemu >>%LOG% 2>&1 - dir z: >>%LOG% 2>&1 - echo. >>%LOG% + echo %DATE% %TIME% Running startup script>%LOG% + rem Mount share + echo %DATE% %TIME% Mounting shared drive>>%LOG% + net use z: 10.0.2.4qemu >>%LOG% 2>&1 + dir z: >>%LOG% 2>&1 + echo. >>%LOG% - if exist %MAPDRIVE% ( -  echo %DATE% %TIME% The drive "%MAPDRIVE%" exists>>%LOG% + if exist %MAPDRIVE% ( +  echo %DATE% %TIME% The drive "%MAPDRIVE%" exists>>%LOG% -  if exist %SCRIPT% ( -    echo %DATE% %TIME% The script file "%SCRIPT%"exists>>%LOG% -    echo %DATE% %TIME% Running script %SCRIPT%>>%LOG% -    set TIMEOUT=0 -    call %SCRIPT% -  ) else ( -    echo %DATE% %TIME% The script file "%SCRIPT%"does not exist>>%LOG% -  ) +  if exist %SCRIPT% ( +    echo %DATE% %TIME% The script file "%SCRIPT%"exists>>%LOG% +    echo %DATE% %TIME% Running script %SCRIPT%>>%LOG% +    set TIMEOUT=0 +    call %SCRIPT% +  ) else ( +    echo %DATE% %TIME% The script file "%SCRIPT%"does not exist>>%LOG% +  ) - ) else ( -  echo %DATE% %TIME% The drive "%MAPDRIVE%" does not exist>>%LOG% - ) - echo. >>%LOG% + ) else ( +  echo %DATE% %TIME% The drive "%MAPDRIVE%" does not exist>>%LOG% + ) + echo. >>%LOG% - timeout /T %TIMEOUT% + timeout /T %TIMEOUT% - echo %DATE% %TIME% Shut down>>%LOG% - shutdown /s /t 0 + echo %DATE% %TIME% Shut down>>%LOG% + shutdown /s /t 0 Example startup script maps shared job script as drive z: and looks for run script called run.bat. If run script is found it is run else wait @@ -241,46 +226,46 @@ Workflow](virtualization.html#virtual-machine-job-workflow). Example job for Windows virtual machine: - #/bin/sh - - JOB_DIR=/scratch/$USER/win/${PBS_JOBID} - - #Virtual machine settings - VM_IMAGE=~/work/img/win.img - VM_MEMORY=49152 - VM_SMP=16 - - # Prepare job dir - mkdir -p ${JOB_DIR} && cd ${JOB_DIR} || exit 1 - ln -s ~/work/win . - ln -s /scratch/$USER/data . - ln -s ~/work/win/script/run/run-appl.bat run.bat - - # Run virtual machine - export TMPDIR=/lscratch/${PBS_JOBID} - module add qemu - qemu-system-x86_64 -  -enable-kvm -  -cpu host -  -smp ${VM_SMP} -  -m ${VM_MEMORY} -  -vga std -  -localtime -  -usb -usbdevice tablet -  -device virtio-net-pci,netdev=net0 -  -netdev user,id=net0,smb=${JOB_DIR},hostfwd=tcp::3389-:3389 -  -drive file=${VM_IMAGE},media=disk,if=virtio -  -snapshot -  -nographic + #/bin/sh + + JOB_DIR=/scratch/$USER/win/${PBS_JOBID} + + #Virtual machine settings + VM_IMAGE=~/work/img/win.img + VM_MEMORY=49152 + VM_SMP=16 + + # Prepare job dir + mkdir -p ${JOB_DIR} && cd ${JOB_DIR} || exit 1 + ln -s ~/work/win . + ln -s /scratch/$USER/data . + ln -s ~/work/win/script/run/run-appl.bat run.bat + + # Run virtual machine + export TMPDIR=/lscratch/${PBS_JOBID} + module add qemu + qemu-system-x86_64 +  -enable-kvm +  -cpu host +  -smp ${VM_SMP} +  -m ${VM_MEMORY} +  -vga std +  -localtime +  -usb -usbdevice tablet +  -device virtio-net-pci,netdev=net0 +  -netdev user,id=net0,smb=${JOB_DIR},hostfwd=tcp::3389-:3389 +  -drive file=${VM_IMAGE},media=disk,if=virtio +  -snapshot +  -nographic Job script links application data (win), input data (data) and run script (run.bat) into job directory and runs virtual machine. Example run script (run.bat) for Windows virtual machine: - z: - cd winappl - call application.bat z:data z:output + z: + cd winappl + call application.bat z:data z:output Run script runs application from shared job directory (mapped as drive z:), process input data (z:data) from job directory and store output @@ -299,17 +284,17 @@ work on login nodes. Load QEMU environment module: - $ module add qemu + $ module add qemu Get help - $ man qemu + $ man qemu Run virtual machine (simple) - $ qemu-system-x86_64 -hda linux.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -vnc :0 + $ qemu-system-x86_64 -hda linux.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -vnc :0 - $ qemu-system-x86_64 -hda win.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -localtime -usb -usbdevice tablet -vnc :0 + $ qemu-system-x86_64 -hda win.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -localtime -usb -usbdevice tablet -vnc :0 You can access virtual machine by VNC viewer (option -vnc) connecting to IP address of compute node. For VNC you must use [VPN @@ -317,16 +302,16 @@ network](../../accessing-the-cluster/vpn-access.html). Install virtual machine from iso file - $ qemu-system-x86_64 -hda linux.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -cdrom linux-install.iso -boot d -vnc :0 + $ qemu-system-x86_64 -hda linux.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -cdrom linux-install.iso -boot d -vnc :0 - $ qemu-system-x86_64 -hda win.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -localtime -usb -usbdevice tablet -cdrom win-install.iso -boot d -vnc :0 + $ qemu-system-x86_64 -hda win.img -enable-kvm -cpu host -smp 16 -m 32768 -vga std -localtime -usb -usbdevice tablet -cdrom win-install.iso -boot d -vnc :0 Run virtual machine using optimized devices, user network backend with sharing and port forwarding, in snapshot mode - $ qemu-system-x86_64 -drive file=linux.img,media=disk,if=virtio -enable-kvm -cpu host -smp 16 -m 32768 -vga std -device virtio-net-pci,netdev=net0 -netdev user,id=net0,smb=/scratch/$USER/tmp,hostfwd=tcp::2222-:22 -vnc :0 -snapshot + $ qemu-system-x86_64 -drive file=linux.img,media=disk,if=virtio -enable-kvm -cpu host -smp 16 -m 32768 -vga std -device virtio-net-pci,netdev=net0 -netdev user,id=net0,smb=/scratch/$USER/tmp,hostfwd=tcp::2222-:22 -vnc :0 -snapshot - $ qemu-system-x86_64 -drive file=win.img,media=disk,if=virtio -enable-kvm -cpu host -smp 16 -m 32768 -vga std -localtime -usb -usbdevice tablet -device virtio-net-pci,netdev=net0 -netdev user,id=net0,smb=/scratch/$USER/tmp,hostfwd=tcp::3389-:3389 -vnc :0 -snapshot + $ qemu-system-x86_64 -drive file=win.img,media=disk,if=virtio -enable-kvm -cpu host -smp 16 -m 32768 -vga std -localtime -usb -usbdevice tablet -device virtio-net-pci,netdev=net0 -netdev user,id=net0,smb=/scratch/$USER/tmp,hostfwd=tcp::3389-:3389 -vnc :0 -snapshot Thanks to port forwarding you can access virtual machine via SSH (Linux) or RDP (Windows) connecting to IP address of compute node (and port 2222 @@ -350,18 +335,18 @@ have access to Anselm's network via NAT on compute node (host). Simple network setup - $ qemu-system-x86_64 ... -net nic -net user + $ qemu-system-x86_64 ... -net nic -net user (It is default when no -net options are given.) Simple network setup with sharing and port forwarding (obsolete but simpler syntax, lower performance) - $ qemu-system-x86_64 ... -net nic -net user,smb=/scratch/$USER/tmp,hostfwd=tcp::3389-:3389 + $ qemu-system-x86_64 ... -net nic -net user,smb=/scratch/$USER/tmp,hostfwd=tcp::3389-:3389 Optimized network setup with sharing and port forwarding - $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net0 -netdev user,id=net0,smb=/scratch/$USER/tmp,hostfwd=tcp::2222-:22 + $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net0 -netdev user,id=net0,smb=/scratch/$USER/tmp,hostfwd=tcp::2222-:22 ### Advanced networking @@ -376,33 +361,30 @@ performance, the worst performance of all described solutions. Load VDE enabled QEMU environment module (unload standard QEMU module first if necessary). - $ module add qemu/2.1.2-vde2 + $ module add qemu/2.1.2-vde2 Create virtual network switch. - $ vde_switch -sock /tmp/sw0 -mgmt /tmp/sw0.mgmt -daemon + $ vde_switch -sock /tmp/sw0 -mgmt /tmp/sw0.mgmt -daemon Run SLIRP daemon over SSH tunnel on login node and connect it to virtual network switch. - $ dpipe vde_plug /tmp/sw0 = ssh login1 $VDE2_DIR/bin/slirpvde -s - --dhcp & + $ dpipe vde_plug /tmp/sw0 = ssh login1 $VDE2_DIR/bin/slirpvde -s - --dhcp & Run qemu using vde network backend, connect to created virtual switch. Basic setup (obsolete syntax) - $ qemu-system-x86_64 ... -net nic -net vde,sock=/tmp/sw0 + $ qemu-system-x86_64 ... -net nic -net vde,sock=/tmp/sw0 Setup using virtio device (obsolete syntax) - $ qemu-system-x86_64 ... -net nic,model=virtio -net vde,sock=/tmp/sw0 + $ qemu-system-x86_64 ... -net nic,model=virtio -net vde,sock=/tmp/sw0 Optimized setup - $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net0 -netdev vde,id=net0,sock=/tmp/sw0 - - - + $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net0 -netdev vde,id=net0,sock=/tmp/sw0 TAP interconnect** @@ -416,8 +398,8 @@ networking, so you should provide your services if you need them. Run qemu with TAP network backend: - $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net1 - -netdev tap,id=net1,ifname=tap0,script=no,downscript=no + $ qemu-system-x86_64 ... -device virtio-net-pci,netdev=net1 + -netdev tap,id=net1,ifname=tap0,script=no,downscript=no Interface tap0 has IP address 192.168.1.1 and network mask 255.255.255.0 (/24). In virtual machine use IP address from range @@ -427,56 +409,56 @@ non-privileged user can provide services on these ports. Redirected ports: -- DNS udp/53->udp/3053, tcp/53->tcp3053 -- DHCP udp/67->udp3067 -- SMB tcp/139->tcp3139, tcp/445->tcp3445). +- DNS udp/53->udp/3053, tcp/53->tcp3053 +- DHCP udp/67->udp3067 +- SMB tcp/139->tcp3139, tcp/445->tcp3445). You can configure IP address of virtual machine statically or dynamically. For dynamic addressing provide your DHCP server on port 3067 of tap0 interface, you can also provide your DNS server on port 3053 of tap0 interface for example: - $ dnsmasq --interface tap0 --bind-interfaces -p 3053 --dhcp-alternate-port=3067,68 --dhcp-range=192.168.1.15,192.168.1.32 --dhcp-leasefile=/tmp/dhcp.leasefile + $ dnsmasq --interface tap0 --bind-interfaces -p 3053 --dhcp-alternate-port=3067,68 --dhcp-range=192.168.1.15,192.168.1.32 --dhcp-leasefile=/tmp/dhcp.leasefile You can also provide your SMB services (on ports 3139, 3445) to obtain high performance data sharing. Example smb.conf (not optimized) - [global] - socket address=192.168.1.1 - smb ports = 3445 3139 - - private dir=/tmp/qemu-smb - pid directory=/tmp/qemu-smb - lock directory=/tmp/qemu-smb - state directory=/tmp/qemu-smb - ncalrpc dir=/tmp/qemu-smb/ncalrpc - log file=/tmp/qemu-smb/log.smbd - smb passwd file=/tmp/qemu-smb/smbpasswd - security = user - map to guest = Bad User - unix extensions = no - load printers = no - printing = bsd - printcap name = /dev/null - disable spoolss = yes - log level = 1 - guest account = USER - [qemu] - path=/scratch/USER/tmp - read only=no - guest ok=yes - writable=yes - follow symlinks=yes - wide links=yes - force user=USER + [global] + socket address=192.168.1.1 + smb ports = 3445 3139 + + private dir=/tmp/qemu-smb + pid directory=/tmp/qemu-smb + lock directory=/tmp/qemu-smb + state directory=/tmp/qemu-smb + ncalrpc dir=/tmp/qemu-smb/ncalrpc + log file=/tmp/qemu-smb/log.smbd + smb passwd file=/tmp/qemu-smb/smbpasswd + security = user + map to guest = Bad User + unix extensions = no + load printers = no + printing = bsd + printcap name = /dev/null + disable spoolss = yes + log level = 1 + guest account = USER + [qemu] + path=/scratch/USER/tmp + read only=no + guest ok=yes + writable=yes + follow symlinks=yes + wide links=yes + force user=USER (Replace USER with your login name.) Run SMB services - smbd -s /tmp/qemu-smb/smb.conf + smbd -s /tmp/qemu-smb/smb.conf  @@ -491,15 +473,12 @@ file (and discarded after virtual machine exits). **It is strongly recommended mode for running your jobs.** Set TMPDIR environment variable to local scratch directory for placement temporary files. - $ export TMPDIR=/lscratch/${PBS_JOBID} - $ qemu-system-x86_64 ... -snapshot + $ export TMPDIR=/lscratch/${PBS_JOBID} + $ qemu-system-x86_64 ... -snapshot ### Windows guests For Windows guests we recommend these options, life will be easier: - $ qemu-system-x86_64 ... -localtime -usb -usbdevice tablet - - - + $ qemu-system-x86_64 ... -localtime -usb -usbdevice tablet diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/Running_OpenMPI.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/Running_OpenMPI.md index 94f4063b0..d258ce19e 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/Running_OpenMPI.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/Running_OpenMPI.md @@ -1,17 +1,7 @@ Running OpenMPI =============== - - - - - - - - - - - + OpenMPI program execution ------------------------- @@ -26,19 +16,19 @@ Use the mpiexec to run the OpenMPI code. Example: - $ qsub -q qexp -l select=4:ncpus=16 -I - qsub: waiting for job 15210.srv11 to start - qsub: job 15210.srv11 ready + $ qsub -q qexp -l select=4:ncpus=16 -I + qsub: waiting for job 15210.srv11 to start + qsub: job 15210.srv11 ready - $ pwd - /home/username + $ pwd + /home/username - $ module load openmpi - $ mpiexec -pernode ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host cn17 - Hello world! from rank 1 of 4 on host cn108 - Hello world! from rank 2 of 4 on host cn109 - Hello world! from rank 3 of 4 on host cn110 + $ module load openmpi + $ mpiexec -pernode ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host cn17 + Hello world! from rank 1 of 4 on host cn108 + Hello world! from rank 2 of 4 on host cn109 + Hello world! from rank 3 of 4 on host cn110 Please be aware, that in this example, the directive **-pernode** is used to run only **one task per node**, which is normally an unwanted @@ -57,14 +47,14 @@ same path on all nodes. This is automatically fulfilled on the /home and You need to preload the executable, if running on the local scratch /lscratch filesystem - $ pwd - /lscratch/15210.srv11 + $ pwd + /lscratch/15210.srv11 - $ mpiexec -pernode --preload-binary ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host cn17 - Hello world! from rank 1 of 4 on host cn108 - Hello world! from rank 2 of 4 on host cn109 - Hello world! from rank 3 of 4 on host cn110 + $ mpiexec -pernode --preload-binary ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host cn17 + Hello world! from rank 1 of 4 on host cn108 + Hello world! from rank 2 of 4 on host cn109 + Hello world! from rank 3 of 4 on host cn110 In this example, we assume the executable helloworld_mpi.x is present on compute node @@ -85,11 +75,11 @@ MPI process. Follow this example to run one MPI process per node, 16 threads per process. - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=1:ompthreads=16 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=1:ompthreads=16 -I - $ module load openmpi + $ module load openmpi - $ mpiexec --bind-to-none ./helloworld_mpi.x + $ mpiexec --bind-to-none ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 1 MPI processes per node and 16 threads per socket, @@ -100,11 +90,11 @@ on 4 nodes. Follow this example to run two MPI processes per node, 8 threads per process. Note the options to mpiexec. - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=2:ompthreads=8 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=2:ompthreads=8 -I - $ module load openmpi + $ module load openmpi - $ mpiexec -bysocket -bind-to-socket ./helloworld_mpi.x + $ mpiexec -bysocket -bind-to-socket ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 2 MPI processes per node and 8 threads per socket, @@ -116,11 +106,11 @@ node, on 4 nodes Follow this example to run 16 MPI processes per node, 1 thread per process. Note the options to mpiexec. - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=16:ompthreads=1 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=16:ompthreads=1 -I - $ module load openmpi + $ module load openmpi - $ mpiexec -bycore -bind-to-core ./helloworld_mpi.x + $ mpiexec -bycore -bind-to-core ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 16 MPI processes per node, single threaded. Each @@ -135,17 +125,17 @@ operating system might still migrate OpenMP threads between cores. You might want to avoid this by setting these environment variable for GCC OpenMP: - $ export GOMP_CPU_AFFINITY="0-15" + $ export GOMP_CPU_AFFINITY="0-15" or this one for Intel OpenMP: - $ export KMP_AFFINITY=granularity=fine,compact,1,0 + $ export KMP_AFFINITY=granularity=fine,compact,1,0 As of OpenMP 4.0 (supported by GCC 4.9 and later and Intel 14.0 and later) the following variables may be used for Intel or GCC: - $ export OMP_PROC_BIND=true - $ export OMP_PLACES=cores + $ export OMP_PROC_BIND=true + $ export OMP_PLACES=cores >OpenMPI Process Mapping and Binding ------------------------------------------------ @@ -163,18 +153,18 @@ openmpi only. Example hostfile - cn110.bullx - cn109.bullx - cn108.bullx - cn17.bullx + cn110.bullx + cn109.bullx + cn108.bullx + cn17.bullx Use the hostfile to control process placement - $ mpiexec -hostfile hostfile ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host cn110 - Hello world! from rank 1 of 4 on host cn109 - Hello world! from rank 2 of 4 on host cn108 - Hello world! from rank 3 of 4 on host cn17 + $ mpiexec -hostfile hostfile ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host cn110 + Hello world! from rank 1 of 4 on host cn109 + Hello world! from rank 2 of 4 on host cn108 + Hello world! from rank 3 of 4 on host cn17 In this example, we see that ranks have been mapped on nodes according to the order in which nodes show in the hostfile @@ -188,11 +178,11 @@ Appropriate binding may boost performance of your application. Example rankfile - rank 0=cn110.bullx slot=1:0,1 - rank 1=cn109.bullx slot=0:* - rank 2=cn108.bullx slot=1:1-2 - rank 3=cn17.bullx slot=0:1,1:0-2 - rank 4=cn109.bullx slot=0:*,1:* + rank 0=cn110.bullx slot=1:0,1 + rank 1=cn109.bullx slot=0:* + rank 2=cn108.bullx slot=1:1-2 + rank 3=cn17.bullx slot=0:1,1:0-2 + rank 4=cn109.bullx slot=0:*,1:* This rankfile assumes 5 ranks will be running on 4 nodes and provides exact mapping and binding of the processes to the processor sockets and @@ -206,17 +196,17 @@ rank 3 will be bounded to cn17, socket0 core1, socket1 core0, core1, core2 rank 4 will be bounded to cn109, all cores on both sockets - $ mpiexec -n 5 -rf rankfile --report-bindings ./helloworld_mpi.x - [cn17:11180] MCW rank 3 bound to socket 0[core 1] socket 1[core 0-2]: [. B . . . . . .][B B B . . . . .] (slot list 0:1,1:0-2) - [cn110:09928] MCW rank 0 bound to socket 1[core 0-1]: [. . . . . . . .][B B . . . . . .] (slot list 1:0,1) - [cn109:10395] MCW rank 1 bound to socket 0[core 0-7]: [B B B B B B B B][. . . . . . . .] (slot list 0:*) - [cn108:10406] MCW rank 2 bound to socket 1[core 1-2]: [. . . . . . . .][. B B . . . . .] (slot list 1:1-2) - [cn109:10406] MCW rank 4 bound to socket 0[core 0-7] socket 1[core 0-7]: [B B B B B B B B][B B B B B B B B] (slot list 0:*,1:*) - Hello world! from rank 3 of 5 on host cn17 - Hello world! from rank 1 of 5 on host cn109 - Hello world! from rank 0 of 5 on host cn110 - Hello world! from rank 4 of 5 on host cn109 - Hello world! from rank 2 of 5 on host cn108 + $ mpiexec -n 5 -rf rankfile --report-bindings ./helloworld_mpi.x + [cn17:11180] MCW rank 3 bound to socket 0[core 1] socket 1[core 0-2]: [. B . . . . . .][B B B . . . . .] (slot list 0:1,1:0-2) + [cn110:09928] MCW rank 0 bound to socket 1[core 0-1]: [. . . . . . . .][B B . . . . . .] (slot list 1:0,1) + [cn109:10395] MCW rank 1 bound to socket 0[core 0-7]: [B B B B B B B B][. . . . . . . .] (slot list 0:*) + [cn108:10406] MCW rank 2 bound to socket 1[core 1-2]: [. . . . . . . .][. B B . . . . .] (slot list 1:1-2) + [cn109:10406] MCW rank 4 bound to socket 0[core 0-7] socket 1[core 0-7]: [B B B B B B B B][B B B B B B B B] (slot list 0:*,1:*) + Hello world! from rank 3 of 5 on host cn17 + Hello world! from rank 1 of 5 on host cn109 + Hello world! from rank 0 of 5 on host cn110 + Hello world! from rank 4 of 5 on host cn109 + Hello world! from rank 2 of 5 on host cn108 In this example we run 5 MPI processes (5 ranks) on four nodes. The rankfile defines how the processes will be mapped on the nodes, sockets @@ -232,54 +222,21 @@ and cores. In all cases, binding and threading may be verified by executing for example: - $ mpiexec -bysocket -bind-to-socket --report-bindings echo - $ mpiexec -bysocket -bind-to-socket numactl --show - $ mpiexec -bysocket -bind-to-socket echo $OMP_NUM_THREADS + $ mpiexec -bysocket -bind-to-socket --report-bindings echo + $ mpiexec -bysocket -bind-to-socket numactl --show + $ mpiexec -bysocket -bind-to-socket echo $OMP_NUM_THREADS Changes in OpenMPI 1.8 ---------------------- Some options have changed in OpenMPI version 1.8. -<table> -<colgroup> -<col width="50%" /> -<col width="50%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">version 1.6.5</th> -<th align="left">version 1.8.1</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">--bind-to-none</td> -<td align="left">--bind-to none</td> -</tr> -<tr class="even"> -<td align="left">--bind-to-core</td> -<td align="left">--bind-to core</td> -</tr> -<tr class="odd"> -<td align="left">--bind-to-socket</td> -<td align="left">--bind-to socket</td> -</tr> -<tr class="even"> -<td align="left">-bysocket</td> -<td align="left">--map-by socket</td> -</tr> -<tr class="odd"> -<td align="left">-bycore</td> -<td align="left">--map-by core</td> -</tr> -<tr class="even"> -<td align="left">-pernode</td> -<td align="left"><p> class="s1">--map-by ppr:1:node</p></td> -</tr> -</tbody> -</table> - - - + |version 1.6.5 |version 1.8.1 | + | --- | --- | + |--bind-to-none<td align="left">--bind-to none | + |--bind-to-core<td align="left">--bind-to core | + |--bind-to-socket<td align="left">--bind-to socket | + |-bysocket<td align="left">--map-by socket | + |-bycore<td align="left">--map-by core | + |-pernode<td align="left">--map-by ppr:1:node\ | diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi.md index 52cd3f2d4..768ba0045 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi.md @@ -1,99 +1,62 @@ MPI === - - - - - - - - - - - + Setting up MPI Environment -------------------------- The Anselm cluster provides several implementations of the MPI library: -<table> -<colgroup> -<col width="50%" /> -<col width="50%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">MPI Library</th> -<th align="left">Thread support</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left"><p>The highly optimized and stable <strong>bullxmpi 1.2.4.1</strong></p></td> -<td align="left"><strong></strong>Partial thread support up to MPI_THREAD_SERIALIZED</td> -</tr> -<tr class="even"> -<td align="left">The <strong>Intel MPI 4.1</strong></td> -<td align="left">Full thread support up to MPI_THREAD_MULTIPLE</td> -</tr> -<tr class="odd"> -<td align="left">The <a href="http://www.open-mpi.org/" class="external-link"><strong>OpenMPI 1.6.5</strong></a></td> -<td align="left">Full thread support up to MPI_THREAD_MULTIPLE, BLCR c/r support</td> -</tr> -<tr class="even"> -<td align="left">The OpenMPI 1.8.1</td> -<td align="left">Full thread support up to MPI_THREAD_MULTIPLE, MPI-3.0 support</td> -</tr> -<tr class="odd"> -<td align="left">The <strong><strong>mpich2 1.9</strong></strong></td> -<td align="left">Full thread support up to <strong></strong> MPI_THREAD_MULTIPLE, BLCR c/r support</td> -</tr> -</tbody> -</table> + |MPI Library |Thread support | + | --- | --- | + |The highly optimized and stable <strong>bullxmpi 1.2.4.1</strong>\<td align="left"><strong></strong>Partial thread support up to MPI_THREAD_SERIALIZED | + |The <strong>Intel MPI 4.1</strong><td align="left">Full thread support up to MPI_THREAD_MULTIPLE | + |The <a href="http://www.open-mpi.org/" <strong>OpenMPI 1.6.5</strong></a><td align="left">Full thread support up to MPI_THREAD_MULTIPLE, BLCR c/r support | + |The OpenMPI 1.8.1<td align="left">Full thread support up to MPI_THREAD_MULTIPLE, MPI-3.0 support | + |The <strong><strong>mpich2 1.9</strong></strong><td align="left">Full thread support up to <strong></strong> MPI_THREAD_MULTIPLE, BLCR c/r support | MPI libraries are activated via the environment modules. Look up section modulefiles/mpi in module avail - $ module avail - ------------------------- /opt/modules/modulefiles/mpi ------------------------- - bullxmpi/bullxmpi-1.2.4.1 mvapich2/1.9-icc - impi/4.0.3.008 openmpi/1.6.5-gcc(default) - impi/4.1.0.024 openmpi/1.6.5-gcc46 - impi/4.1.0.030 openmpi/1.6.5-icc - impi/4.1.1.036(default) openmpi/1.8.1-gcc - openmpi/1.8.1-gcc46 - mvapich2/1.9-gcc(default) openmpi/1.8.1-gcc49 - mvapich2/1.9-gcc46 openmpi/1.8.1-icc + $ module avail + ------------------------- /opt/modules/modulefiles/mpi ------------------------- + bullxmpi/bullxmpi-1.2.4.1 mvapich2/1.9-icc + impi/4.0.3.008 openmpi/1.6.5-gcc(default) + impi/4.1.0.024 openmpi/1.6.5-gcc46 + impi/4.1.0.030 openmpi/1.6.5-icc + impi/4.1.1.036(default) openmpi/1.8.1-gcc + openmpi/1.8.1-gcc46 + mvapich2/1.9-gcc(default) openmpi/1.8.1-gcc49 + mvapich2/1.9-gcc46 openmpi/1.8.1-icc There are default compilers associated with any particular MPI implementation. The defaults may be changed, the MPI libraries may be used in conjunction with any compiler. The defaults are selected via the modules in following way -Module MPI Compiler suite --------------- ------------------ -------------------------------------------------------------------------------- -PrgEnv-gnu bullxmpi-1.2.4.1 bullx GNU 4.4.6 -PrgEnv-intel Intel MPI 4.1.1 Intel 13.1.1 -bullxmpi bullxmpi-1.2.4.1 none, select via module -impi Intel MPI 4.1.1 none, select via module -openmpi OpenMPI 1.6.5 GNU compilers 4.8.1, GNU compilers 4.4.6, Intel Compilers -openmpi OpenMPI 1.8.1 GNU compilers 4.8.1, GNU compilers 4.4.6, GNU compilers 4.9.0, Intel Compilers -mvapich2 MPICH2 1.9 GNU compilers 4.8.1, GNU compilers 4.4.6, Intel Compilers + Module MPI Compiler suite + -------------- ------------------ -------------------------------------------------------------------------------- + PrgEnv-gnu bullxmpi-1.2.4.1 bullx GNU 4.4.6 + PrgEnv-intel Intel MPI 4.1.1 Intel 13.1.1 + bullxmpi bullxmpi-1.2.4.1 none, select via module + impi Intel MPI 4.1.1 none, select via module + openmpi OpenMPI 1.6.5 GNU compilers 4.8.1, GNU compilers 4.4.6, Intel Compilers + openmpi OpenMPI 1.8.1 GNU compilers 4.8.1, GNU compilers 4.4.6, GNU compilers 4.9.0, Intel Compilers + mvapich2 MPICH2 1.9 GNU compilers 4.8.1, GNU compilers 4.4.6, Intel Compilers Examples: - $ module load openmpi + $ module load openmpi In this example, we activate the latest openmpi with latest GNU compilers To use openmpi with the intel compiler suite, use - $ module load intel - $ module load openmpi/1.6.5-icc + $ module load intel + $ module load openmpi/1.6.5-icc In this example, the openmpi 1.6.5 using intel compilers is activated @@ -103,41 +66,41 @@ Compiling MPI Programs After setting up your MPI environment, compile your program using one of the mpi wrappers - $ mpicc -v - $ mpif77 -v - $ mpif90 -v + $ mpicc -v + $ mpif77 -v + $ mpif90 -v Example program: - // helloworld_mpi.c - #include <stdio.h> + // helloworld_mpi.c + #include <stdio.h> - #include<mpi.h> + #include<mpi.h> - int main(int argc, char **argv) { + int main(int argc, char **argv) { - int len; - int rank, size; - char node[MPI_MAX_PROCESSOR_NAME]; + int len; + int rank, size; + char node[MPI_MAX_PROCESSOR_NAME]; - // Initiate MPI - MPI_Init(&argc, &argv); - MPI_Comm_rank(MPI_COMM_WORLD,&rank); - MPI_Comm_size(MPI_COMM_WORLD,&size); + // Initiate MPI + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD,&rank); + MPI_Comm_size(MPI_COMM_WORLD,&size); - // Get hostame and print - MPI_Get_processor_name(node,&len); - printf("Hello world! from rank %d of %d on host %sn",rank,size,node); + // Get hostame and print + MPI_Get_processor_name(node,&len); + printf("Hello world! from rank %d of %d on host %sn",rank,size,node); - // Finalize and exit - MPI_Finalize(); + // Finalize and exit + MPI_Finalize(); - return 0; - } + return 0; + } Compile the above example with - $ mpicc helloworld_mpi.c -o helloworld_mpi.x + $ mpicc helloworld_mpi.c -o helloworld_mpi.x Running MPI Programs -------------------- @@ -206,6 +169,3 @@ The Intel MPI may run on the Intel Xeon Phi accelerators as well. Read more on [how to run Intel MPI on accelerators](../intel-xeon-phi.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi4py-mpi-for-python.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi4py-mpi-for-python.md index 2eee46e17..49ce677e2 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi4py-mpi-for-python.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/mpi4py-mpi-for-python.md @@ -1,22 +1,9 @@ MPI4Py (MPI for Python) ======================= - - - - OpenMPI interface to Python - - - - - - - - - - + Introduction ------------ @@ -41,8 +28,8 @@ Modules MPI4Py is build for OpenMPI. Before you start with MPI4Py you need to load Python and OpenMPI modules. - $ module load python - $ module load openmpi + $ module load python + $ module load openmpi Execution --------- @@ -50,65 +37,65 @@ Execution You need to import MPI to your python program. Include the following line to the python script: - from mpi4py import MPI + from mpi4py import MPI The MPI4Py enabled python programs [execute as any other OpenMPI](Running_OpenMPI.html) code.The simpliest way is to run - $ mpiexec python <script>.py + $ mpiexec python <script>.py >For example - $ mpiexec python hello_world.py + $ mpiexec python hello_world.py Examples -------- ### Hello world! - from mpi4py import MPI + from mpi4py import MPI - comm = MPI.COMM_WORLD + comm = MPI.COMM_WORLD - print "Hello! I'm rank %d from %d running in total..." % (comm.rank, comm.size) + print "Hello! I'm rank %d from %d running in total..." % (comm.rank, comm.size) - comm.Barrier()  # wait for everybody to synchronize + comm.Barrier()  # wait for everybody to synchronize ### >Collective Communication with NumPy arrays - from mpi4py import MPI - from __future__ import division - import numpy as np + from mpi4py import MPI + from __future__ import division + import numpy as np - comm = MPI.COMM_WORLD + comm = MPI.COMM_WORLD - print("-"*78) - print(" Running on %d cores" % comm.size) - print("-"*78) + print("-"*78) + print(" Running on %d cores" % comm.size) + print("-"*78) - comm.Barrier() + comm.Barrier() - # Prepare a vector of N=5 elements to be broadcasted... - N = 5 - if comm.rank == 0: -   A = np.arange(N, dtype=np.float64)   # rank 0 has proper data - else: -   A = np.empty(N, dtype=np.float64)   # all other just an empty array + # Prepare a vector of N=5 elements to be broadcasted... + N = 5 + if comm.rank == 0: +   A = np.arange(N, dtype=np.float64)   # rank 0 has proper data + else: +   A = np.empty(N, dtype=np.float64)   # all other just an empty array - # Broadcast A from rank 0 to everybody - comm.Bcast( [A, MPI.DOUBLE] ) + # Broadcast A from rank 0 to everybody + comm.Bcast( [A, MPI.DOUBLE] ) - # Everybody should now have the same... - print "[%02d] %s" % (comm.rank, A) + # Everybody should now have the same... + print "[%02d] %s" % (comm.rank, A) Execute the above code as: - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=16:ompthreads=1 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=16:ompthreads=1 -I - $ module load python openmpi + $ module load python openmpi - $ mpiexec -bycore -bind-to-core python hello_world.py + $ mpiexec -bycore -bind-to-core python hello_world.py In this example, we run MPI4Py enabled code on 4 nodes, 16 cores per node (total of 64 processes), each python process is bound to a @@ -116,6 +103,3 @@ different core. More examples and documentation can be found on [MPI for Python webpage](https://pythonhosted.org/mpi4py/usrman/index.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/running-mpich2.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/running-mpich2.md index c8cd47ec6..cf4b32cc7 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/running-mpich2.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/mpi-1/running-mpich2.md @@ -1,17 +1,7 @@ Running MPICH2 ============== - - - - - - - - - - - + MPICH2 program execution ------------------------ @@ -27,17 +17,17 @@ Use the mpirun to execute the MPICH2 code. Example: - $ qsub -q qexp -l select=4:ncpus=16 -I - qsub: waiting for job 15210.srv11 to start - qsub: job 15210.srv11 ready + $ qsub -q qexp -l select=4:ncpus=16 -I + qsub: waiting for job 15210.srv11 to start + qsub: job 15210.srv11 ready - $ module load impi + $ module load impi - $ mpirun -ppn 1 -hostfile $PBS_NODEFILE ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host cn17 - Hello world! from rank 1 of 4 on host cn108 - Hello world! from rank 2 of 4 on host cn109 - Hello world! from rank 3 of 4 on host cn110 + $ mpirun -ppn 1 -hostfile $PBS_NODEFILE ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host cn17 + Hello world! from rank 1 of 4 on host cn108 + Hello world! from rank 2 of 4 on host cn109 + Hello world! from rank 3 of 4 on host cn110 In this example, we allocate 4 nodes via the express queue interactively. We set up the intel MPI environment and interactively run @@ -50,14 +40,14 @@ same path on all nodes. This is automatically fulfilled on the /home and You need to preload the executable, if running on the local scratch /lscratch filesystem - $ pwd - /lscratch/15210.srv11 - $ mpirun -ppn 1 -hostfile $PBS_NODEFILE cp /home/username/helloworld_mpi.x . - $ mpirun -ppn 1 -hostfile $PBS_NODEFILE ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host cn17 - Hello world! from rank 1 of 4 on host cn108 - Hello world! from rank 2 of 4 on host cn109 - Hello world! from rank 3 of 4 on host cn110 + $ pwd + /lscratch/15210.srv11 + $ mpirun -ppn 1 -hostfile $PBS_NODEFILE cp /home/username/helloworld_mpi.x . + $ mpirun -ppn 1 -hostfile $PBS_NODEFILE ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host cn17 + Hello world! from rank 1 of 4 on host cn108 + Hello world! from rank 2 of 4 on host cn109 + Hello world! from rank 3 of 4 on host cn110 In this example, we assume the executable helloworld_mpi.x is present on shared home directory. We run the cp command via mpirun, copying the @@ -76,11 +66,11 @@ MPI process. Follow this example to run one MPI process per node, 16 threads per process. Note that no options to mpirun are needed - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=1:ompthreads=16 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=1:ompthreads=16 -I - $ module load mvapich2 + $ module load mvapich2 - $ mpirun ./helloworld_mpi.x + $ mpirun ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 1 MPI processes per node and 16 threads per socket, @@ -92,11 +82,11 @@ Follow this example to run two MPI processes per node, 8 threads per process. Note the options to mpirun for mvapich2. No options are needed for impi. - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=2:ompthreads=8 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=2:ompthreads=8 -I - $ module load mvapich2 + $ module load mvapich2 - $ mpirun -bind-to numa ./helloworld_mpi.x + $ mpirun -bind-to numa ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 2 MPI processes per node and 8 threads per socket, @@ -109,11 +99,11 @@ Follow this example to run 16 MPI processes per node, 1 thread per process. Note the options to mpirun for mvapich2. No options are needed for impi. - $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=16:ompthreads=1 -I + $ qsub -q qexp -l select=4:ncpus=16:mpiprocs=16:ompthreads=1 -I - $ module load mvapich2 + $ module load mvapich2 - $ mpirun -bind-to core ./helloworld_mpi.x + $ mpirun -bind-to core ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 16 MPI processes per node, single threaded. Each @@ -128,17 +118,17 @@ operating system might still migrate OpenMP threads between cores. You might want to avoid this by setting these environment variable for GCC OpenMP: - $ export GOMP_CPU_AFFINITY="0-15" + $ export GOMP_CPU_AFFINITY="0-15" or this one for Intel OpenMP: - $ export KMP_AFFINITY=granularity=fine,compact,1,0 + $ export KMP_AFFINITY=granularity=fine,compact,1,0 As of OpenMP 4.0 (supported by GCC 4.9 and later and Intel 14.0 and later) the following variables may be used for Intel or GCC: - $ export OMP_PROC_BIND=true - $ export OMP_PLACES=cores + $ export OMP_PROC_BIND=true + $ export OMP_PLACES=cores  @@ -158,20 +148,20 @@ and mvapich2 only. Example machinefile - cn110.bullx - cn109.bullx - cn108.bullx - cn17.bullx - cn108.bullx + cn110.bullx + cn109.bullx + cn108.bullx + cn17.bullx + cn108.bullx Use the machinefile to control process placement - $ mpirun -machinefile machinefile helloworld_mpi.x - Hello world! from rank 0 of 5 on host cn110 - Hello world! from rank 1 of 5 on host cn109 - Hello world! from rank 2 of 5 on host cn108 - Hello world! from rank 3 of 5 on host cn17 - Hello world! from rank 4 of 5 on host cn108 + $ mpirun -machinefile machinefile helloworld_mpi.x + Hello world! from rank 0 of 5 on host cn110 + Hello world! from rank 1 of 5 on host cn109 + Hello world! from rank 2 of 5 on host cn108 + Hello world! from rank 3 of 5 on host cn17 + Hello world! from rank 4 of 5 on host cn108 In this example, we see that ranks have been mapped on nodes according to the order in which nodes show in the machinefile @@ -190,8 +180,8 @@ to bind the process on single core or entire socket. In all cases, binding and threading may be verified by executing - $ mpirun -bindto numa numactl --show - $ mpirun -bindto numa echo $OMP_NUM_THREADS + $ mpirun -bindto numa numactl --show + $ mpirun -bindto numa echo $OMP_NUM_THREADS Intel MPI on Xeon Phi --------------------- @@ -200,6 +190,3 @@ The[MPI section of Intel Xeon Phi chapter](../intel-xeon-phi.html) provides details on how to run Intel MPI code on Xeon Phi architecture. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/copy_of_matlab.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/copy_of_matlab.md index 79a4d0e6a..ef0a8ddfa 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/copy_of_matlab.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/copy_of_matlab.md @@ -1,17 +1,7 @@ Matlab ====== - - - - - - - - - - - + Introduction ------------ @@ -19,24 +9,24 @@ Introduction Matlab is available in versions R2015a and R2015b. There are always two variants of the release: -- Non commercial or so called EDU variant, which can be used for - common research and educational purposes. -- Commercial or so called COM variant, which can used also for - commercial activities. The licenses for commercial variant are much - more expensive, so usually the commercial variant has only subset of - features compared to the EDU available. +- Non commercial or so called EDU variant, which can be used for + common research and educational purposes. +- Commercial or so called COM variant, which can used also for + commercial activities. The licenses for commercial variant are much + more expensive, so usually the commercial variant has only subset of + features compared to the EDU available.  To load the latest version of Matlab load the module - $ module load MATLAB + $ module load MATLAB By default the EDU variant is marked as default. If you need other version or variant, load the particular version. To obtain the list of available versions use - $ module avail MATLAB + $ module avail MATLAB If you need to use the Matlab GUI to prepare your Matlab programs, you can use Matlab directly on the login nodes. But for all computations use @@ -54,12 +44,12 @@ is recommended. To run Matlab with GUI, use - $ matlab + $ matlab To run Matlab in text mode, without the Matlab Desktop GUI environment, use - $ matlab -nodesktop -nosplash + $ matlab -nodesktop -nosplash plots, images, etc... will be still available. @@ -80,11 +70,11 @@ To use Distributed Computing, you first need to setup a parallel profile. We have provided the profile for you, you can either import it in MATLAB command line: - >> parallel.importProfile('/apps/all/MATLAB/2015a-EDU/SalomonPBSPro.settings') + >> parallel.importProfile('/apps/all/MATLAB/2015a-EDU/SalomonPBSPro.settings') - ans = + ans = - SalomonPBSPro + SalomonPBSPro Or in the GUI, go to tab HOME -> Parallel -> Manage Cluster Profiles..., click Import and navigate to : @@ -107,9 +97,9 @@ for Matlab GUI. For more information about GUI based applications on Anselm see [this page](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html). - $ xhost + - $ qsub -I -v DISPLAY=$(uname -n):$(echo $DISPLAY | cut -d ':' -f 2) -A NONE-0-0 -q qexp -l select=1 -l walltime=00:30:00 - -l feature__matlab__MATLAB=1 + $ xhost + + $ qsub -I -v DISPLAY=$(uname -n):$(echo $DISPLAY | cut -d ':' -f 2) -A NONE-0-0 -q qexp -l select=1 -l walltime=00:30:00 + -l feature__matlab__MATLAB=1 This qsub command example shows how to run Matlab on a single node. @@ -120,8 +110,8 @@ Engines licenses. Once the access to compute nodes is granted by PBS, user can load following modules and start Matlab: - r1i0n17$ module load MATLAB/2015b-EDU - r1i0n17$ matlab & + r1i0n17$ module load MATLAB/2015b-EDU + r1i0n17$ matlab & ### Parallel Matlab batch job in Local mode @@ -129,26 +119,26 @@ To run matlab in batch mode, write an matlab script, then write a bash jobscript and execute via the qsub command. By default, matlab will execute one matlab worker instance per allocated core. - #!/bin/bash - #PBS -A PROJECT ID - #PBS -q qprod - #PBS -l select=1:ncpus=16:mpiprocs=16:ompthreads=1 + #!/bin/bash + #PBS -A PROJECT ID + #PBS -q qprod + #PBS -l select=1:ncpus=16:mpiprocs=16:ompthreads=1 - # change to shared scratch directory - SCR=/scratch/work/user/$USER/$PBS_JOBID - mkdir -p $SCR ; cd $SCR || exit + # change to shared scratch directory + SCR=/scratch/work/user/$USER/$PBS_JOBID + mkdir -p $SCR ; cd $SCR || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/matlabcode.m . + # copy input file to scratch + cp $PBS_O_WORKDIR/matlabcode.m . - # load modules - module load MATLAB/2015a-EDU + # load modules + module load MATLAB/2015a-EDU - # execute the calculation - matlab -nodisplay -r matlabcode > output.out + # execute the calculation + matlab -nodisplay -r matlabcode > output.out - # copy output file to home - cp output.out $PBS_O_WORKDIR/. + # copy output file to home + cp output.out $PBS_O_WORKDIR/. This script may be submitted directly to the PBS workload manager via the qsub command. The inputs and matlab script are in matlabcode.m @@ -159,14 +149,14 @@ include quit** statement at the end of the matlabcode.m script. Submit the jobscript using qsub - $ qsub ./jobscript + $ qsub ./jobscript ### Parallel Matlab Local mode program example The last part of the configuration is done directly in the user Matlab script before Distributed Computing Toolbox is started. - cluster = parcluster('local') + cluster = parcluster('local') This script creates scheduler object "cluster" of type "local" that starts workers locally. @@ -178,39 +168,39 @@ function. The last step is to start matlabpool with "cluster" object and correct number of workers. We have 24 cores per node, so we start 24 workers. - parpool(cluster,16); - - - ... parallel code ... - + parpool(cluster,16); + - parpool close + ... parallel code ... + + + parpool close The complete example showing how to use Distributed Computing Toolbox in local mode is shown here. - cluster = parcluster('local'); - cluster + cluster = parcluster('local'); + cluster - parpool(cluster,24); + parpool(cluster,24); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') -    -    T = W*x; % Calculation performed on labs, in parallel. -             % T and W are both codistributed arrays here. - end - T; - whos        % T and W are both distributed arrays here. + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') +    +    T = W*x; % Calculation performed on labs, in parallel. +             % T and W are both codistributed arrays here. + end + T; + whos        % T and W are both distributed arrays here. - parpool close - quit + parpool close + quit You can copy and paste the example in a .m file and execute. Note that the parpool size should correspond to **total number of cores** @@ -225,29 +215,29 @@ it spawns the workers in a separate job submitted by MATLAB using qsub. This is an example of m-script using PBS mode: - cluster = parcluster('SalomonPBSPro'); - set(cluster, 'SubmitArguments', '-A OPEN-0-0'); - set(cluster, 'ResourceTemplate', '-q qprod -l select=10:ncpus=16'); - set(cluster, 'NumWorkers', 160); + cluster = parcluster('SalomonPBSPro'); + set(cluster, 'SubmitArguments', '-A OPEN-0-0'); + set(cluster, 'ResourceTemplate', '-q qprod -l select=10:ncpus=16'); + set(cluster, 'NumWorkers', 160); - pool = parpool(cluster, 160); + pool = parpool(cluster, 160); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') - T = W*x; % Calculation performed on labs, in parallel. - % T and W are both codistributed arrays here. - end - whos % T and W are both distributed arrays here. + T = W*x; % Calculation performed on labs, in parallel. + % T and W are both codistributed arrays here. + end + whos % T and W are both distributed arrays here. - % shut down parallel pool - delete(pool) + % shut down parallel pool + delete(pool) Note that we first construct a cluster object using the imported profile, then set some important options, namely : SubmitArguments, @@ -275,28 +265,28 @@ SalomonPBSPro](copy_of_matlab.html#running-parallel-matlab-using-distributed-com This is an example of m-script using direct mode: - parallel.importProfile('/apps/all/MATLAB/2015a-EDU/SalomonDirect.settings') - cluster = parcluster('SalomonDirect'); - set(cluster, 'NumWorkers', 48); + parallel.importProfile('/apps/all/MATLAB/2015a-EDU/SalomonDirect.settings') + cluster = parcluster('SalomonDirect'); + set(cluster, 'NumWorkers', 48); - pool = parpool(cluster, 48); + pool = parpool(cluster, 48); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') - T = W*x; % Calculation performed on labs, in parallel. - % T and W are both codistributed arrays here. - end - whos % T and W are both distributed arrays here. + T = W*x; % Calculation performed on labs, in parallel. + % T and W are both codistributed arrays here. + end + whos % T and W are both distributed arrays here. - % shut down parallel pool - delete(pool) + % shut down parallel pool + delete(pool) ### Non-interactive Session and Licenses @@ -317,12 +307,12 @@ allocation. Starting Matlab workers is an expensive process that requires certain amount of time. For your information please see the following table: -compute nodes number of workers start-up time[s] ---------------- ------------------- -------------------- -16 384 831 -8 192 807 -4 96 483 -2 48 16 + |compute nodes|number of workers|start-up time[s]| + |---|---|---| + |16|384|831| + |8|192|807| + |4|96|483| + |2|48|16| MATLAB on UV2000 ----------------- @@ -344,8 +334,6 @@ operations, such as fft, , eig, svd, etc. will be automatically run in threads. The advantage of this mode is that you don't need to modify your existing sequential codes. - - ### Local cluster mode You can also use Parallel Toolbox on UV2000. Use l[ocal cluster @@ -356,6 +344,3 @@ mode](copy_of_matlab.html#parallel-matlab-batch-job-in-local-mode),  - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/introduction.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/introduction.md index 31eb11293..6c425451b 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/introduction.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/introduction.md @@ -1,22 +1,9 @@ Numerical languages =================== - - - - Interpreted languages for numerical computations and analysis - - - - - - - - - - + Introduction ------------ @@ -30,8 +17,8 @@ Matlab MATLAB®^ is a high-level language and interactive environment for numerical computation, visualization, and programming. - $ module load MATLAB/2015b-EDU - $ matlab + $ module load MATLAB/2015b-EDU + $ matlab Read more at the [Matlab page](matlab.html). @@ -43,8 +30,8 @@ GNU Octave is a high-level interpreted language, primarily intended for numerical computations. The Octave language is quite similar to Matlab so that most programs are easily portable. - $ module load Octave - $ octave + $ module load Octave + $ octave Read more at the [Octave page](octave.html). @@ -54,11 +41,8 @@ R The R is an interpreted language and environment for statistical computing and graphics. - $ module load R - $ R + $ module load R + $ R Read more at the [R page](r.html). - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/matlab.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/matlab.md index 386ed44ef..9b6b8a062 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/matlab.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/matlab.md @@ -1,17 +1,7 @@ Matlab 2013-2014 ================ - - - - - - - - - - - + Introduction ------------ @@ -23,24 +13,24 @@ instead](copy_of_matlab.html). Matlab is available in the latest stable version. There are always two variants of the release: -- Non commercial or so called EDU variant, which can be used for - common research and educational purposes. -- Commercial or so called COM variant, which can used also for - commercial activities. The licenses for commercial variant are much - more expensive, so usually the commercial variant has only subset of - features compared to the EDU available. +- Non commercial or so called EDU variant, which can be used for + common research and educational purposes. +- Commercial or so called COM variant, which can used also for + commercial activities. The licenses for commercial variant are much + more expensive, so usually the commercial variant has only subset of + features compared to the EDU available.  To load the latest version of Matlab load the module - $ module load matlab + $ module load matlab By default the EDU variant is marked as default. If you need other version or variant, load the particular version. To obtain the list of available versions use - $ module avail matlab + $ module avail matlab If you need to use the Matlab GUI to prepare your Matlab programs, you can use Matlab directly on the login nodes. But for all computations use @@ -58,12 +48,12 @@ is recommended. To run Matlab with GUI, use - $ matlab + $ matlab To run Matlab in text mode, without the Matlab Desktop GUI environment, use - $ matlab -nodesktop -nosplash + $ matlab -nodesktop -nosplash plots, images, etc... will be still available. @@ -87,20 +77,20 @@ system MPI user has to override default Matlab setting by creating new configuration file in its home directory. The path and file name has to be exactly the same as in the following listing: - $ vim ~/matlab/mpiLibConf.m + $ vim ~/matlab/mpiLibConf.m - function [lib, extras] = mpiLibConf - %MATLAB MPI Library overloading for Infiniband Networks + function [lib, extras] = mpiLibConf + %MATLAB MPI Library overloading for Infiniband Networks - mpich = '/opt/intel/impi/4.1.1.036/lib64/'; + mpich = '/opt/intel/impi/4.1.1.036/lib64/'; - disp('Using Intel MPI 4.1.1.036 over Infiniband') + disp('Using Intel MPI 4.1.1.036 over Infiniband') - lib = strcat(mpich, 'libmpich.so'); - mpl = strcat(mpich, 'libmpl.so'); - opa = strcat(mpich, 'libopa.so'); + lib = strcat(mpich, 'libmpich.so'); + mpl = strcat(mpich, 'libmpl.so'); + opa = strcat(mpich, 'libopa.so'); - extras = {}; + extras = {}; System MPI library allows Matlab to communicate through 40Gbps Infiniband QDR interconnect instead of slower 1Gb ethernet network. @@ -118,9 +108,9 @@ for Matlab GUI. For more information about GUI based applications on Anselm see [this page](https://docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/resolveuid/11e53ad0d2fd4c5187537f4baeedff33). - $ 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 feature__matlab__MATLAB=1 + $ 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 feature__matlab__MATLAB=1 This qsub command example shows how to run Matlab with 32 workers in following configuration: 2 nodes (use all 16 cores per node) and 16 @@ -135,9 +125,9 @@ Engines licenses. Once the access to compute nodes is granted by PBS, user can load following modules and start Matlab: - cn79$ module load matlab/R2013a-EDU - cn79$ module load impi/4.1.1.036 - cn79$ matlab & + cn79$ module load matlab/R2013a-EDU + cn79$ module load impi/4.1.1.036 + cn79$ matlab & ### Parallel Matlab batch job @@ -145,27 +135,27 @@ To run matlab in batch mode, write an matlab script, then write a bash jobscript and execute via the qsub command. By default, matlab will execute one matlab worker instance per allocated core. - #!/bin/bash - #PBS -A PROJECT ID - #PBS -q qprod - #PBS -l select=2:ncpus=16:mpiprocs=16:ompthreads=1 + #!/bin/bash + #PBS -A PROJECT ID + #PBS -q qprod + #PBS -l select=2:ncpus=16:mpiprocs=16:ompthreads=1 - # change to shared scratch directory - SCR=/scratch/$USER/$PBS_JOBID - mkdir -p $SCR ; cd $SCR || exit + # change to shared scratch directory + SCR=/scratch/$USER/$PBS_JOBID + mkdir -p $SCR ; cd $SCR || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/matlabcode.m . + # copy input file to scratch + cp $PBS_O_WORKDIR/matlabcode.m . - # load modules - module load matlab/R2013a-EDU - module load impi/4.1.1.036 + # load modules + module load matlab/R2013a-EDU + module load impi/4.1.1.036 - # execute the calculation - matlab -nodisplay -r matlabcode > output.out + # execute the calculation + matlab -nodisplay -r matlabcode > output.out - # copy output file to home - cp output.out $PBS_O_WORKDIR/. + # copy output file to home + cp output.out $PBS_O_WORKDIR/. This script may be submitted directly to the PBS workload manager via the qsub command. The inputs and matlab script are in matlabcode.m @@ -176,16 +166,16 @@ include quit** statement at the end of the matlabcode.m script. Submit the jobscript using qsub - $ qsub ./jobscript + $ qsub ./jobscript ### Parallel Matlab program example The last part of the configuration is done directly in the user Matlab script before Distributed Computing Toolbox is started. - sched = findResource('scheduler', 'type', 'mpiexec'); - set(sched, 'MpiexecFileName', '/apps/intel/impi/4.1.1/bin/mpirun'); - set(sched, 'EnvironmentSetMethod', 'setenv'); + sched = findResource('scheduler', 'type', 'mpiexec'); + set(sched, 'MpiexecFileName', '/apps/intel/impi/4.1.1/bin/mpirun'); + set(sched, 'EnvironmentSetMethod', 'setenv'); This script creates scheduler object "sched" of type "mpiexec" that starts workers using mpirun tool. To use correct version of mpirun, the @@ -200,42 +190,42 @@ The last step is to start matlabpool with "sched" object and correct number of workers. In this case qsub asked for total number of 32 cores, therefore the number of workers is also set to 32. - matlabpool(sched,32); - - - ... parallel code ... - + matlabpool(sched,32); + + + ... parallel code ... - matlabpool close + + matlabpool close The complete example showing how to use Distributed Computing Toolbox is show here. - sched = findResource('scheduler', 'type', 'mpiexec'); - set(sched, 'MpiexecFileName', '/apps/intel/impi/4.1.1/bin/mpirun') - set(sched, 'EnvironmentSetMethod', 'setenv') - set(sched, 'SubmitArguments', '') - sched + sched = findResource('scheduler', 'type', 'mpiexec'); + set(sched, 'MpiexecFileName', '/apps/intel/impi/4.1.1/bin/mpirun') + set(sched, 'EnvironmentSetMethod', 'setenv') + set(sched, 'SubmitArguments', '') + sched - matlabpool(sched,32); + matlabpool(sched,32); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') -    -    T = W*x; % Calculation performed on labs, in parallel. -             % T and W are both codistributed arrays here. - end - T; - whos        % T and W are both distributed arrays here. + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') +    +    T = W*x; % Calculation performed on labs, in parallel. +             % T and W are both codistributed arrays here. + end + T; + whos        % T and W are both distributed arrays here. - matlabpool close - quit + matlabpool close + quit You can copy and paste the example in a .m file and execute. Note that the matlabpool size should correspond to **total number of cores** @@ -260,17 +250,14 @@ allocation. Starting Matlab workers is an expensive process that requires certain amount of time. For your information please see the following table: -compute nodes number of workers start-up time[s] ---------------- ------------------- -------------------- -16 256 1008 -8 128 534 -4 64 333 -2 32 210 + |compute nodes|number of workers|start-up time[s]| + |---|---|---| + 16 256 1008 + 8 128 534 + 4 64 333 + 2 32 210   - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/octave.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/octave.md index f4843c401..59336da59 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/octave.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/octave.md @@ -1,17 +1,7 @@ Octave ====== - - - - - - - - - - - + Introduction ------------ @@ -26,19 +16,18 @@ non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable. Read more on <http://www.gnu.org/software/octave/>**** - Two versions of octave are available on Anselm, via module -Version module ------------------------------------------------------------ --------------------------- -Octave 3.8.2, compiled with GCC and Multithreaded MKL Octave/3.8.2-gimkl-2.11.5 -Octave 4.0.1, compiled with GCC and Multithreaded MKL Octave/4.0.1-gimkl-2.11.5 -Octave 4.0.0, compiled with >GCC and OpenBLAS Octave/4.0.0-foss-2015g + Version module + ----------------------------------------------------------- --------------------------- + Octave 3.8.2, compiled with GCC and Multithreaded MKL Octave/3.8.2-gimkl-2.11.5 + Octave 4.0.1, compiled with GCC and Multithreaded MKL Octave/4.0.1-gimkl-2.11.5 + Octave 4.0.0, compiled with >GCC and OpenBLAS Octave/4.0.0-foss-2015g  Modules and execution ---------------------- - $ module load Octave + $ module load Octave The octave on Anselm is linked to highly optimized MKL mathematical library. This provides threaded parallelization to many octave kernels, @@ -50,31 +39,31 @@ OMP_NUM_THREADS environment variable. To run octave interactively, log in with ssh -X parameter for X11 forwarding. Run octave: - $ octave + $ 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 threads when running MKL kernels. - #!/bin/bash + #!/bin/bash - # change to local scratch directory - cd /lscratch/$PBS_JOBID || exit + # change to local scratch directory + cd /lscratch/$PBS_JOBID || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/octcode.m . + # copy input file to scratch + cp $PBS_O_WORKDIR/octcode.m . - # load octave module - module load octave + # load octave module + module load octave - # execute the calculation - octave -q --eval octcode > output.out + # execute the calculation + octave -q --eval octcode > output.out - # copy output file to home - cp output.out $PBS_O_WORKDIR/. + # copy output file to home + cp output.out $PBS_O_WORKDIR/. - #exit - exit + #exit + exit This script may be submitted directly to the PBS workload manager via the qsub command. The inputs are in octcode.m file, outputs in @@ -86,7 +75,7 @@ The octave c compiler mkoctfile calls the GNU gcc 4.8.1 for compiling native c code. This is very useful for running native c subroutines in octave environment. - $ mkoctfile -v + $ mkoctfile -v Octave may use MPI for interprocess communication This functionality is currently not supported on Anselm cluster. In case @@ -109,19 +98,19 @@ library](../intel-xeon-phi.html#section-3) Example - $ export OFFLOAD_REPORT=2 - $ export MKL_MIC_ENABLE=1 - $ module load octave - $ octave -q - octave:1> A=rand(10000); B=rand(10000); - octave:2> tic; C=A*B; toc - [MKL] [MIC --] [AO Function]   DGEMM - [MKL] [MIC --] [AO DGEMM Workdivision]   0.32 0.68 - [MKL] [MIC 00] [AO DGEMM CPU Time]   2.896003 seconds - [MKL] [MIC 00] [AO DGEMM MIC Time]   1.967384 seconds - [MKL] [MIC 00] [AO DGEMM CPU->MIC Data]   1347200000 bytes - [MKL] [MIC 00] [AO DGEMM MIC->CPU Data]   2188800000 bytes - Elapsed time is 2.93701 seconds. + $ export OFFLOAD_REPORT=2 + $ export MKL_MIC_ENABLE=1 + $ module load octave + $ octave -q + octave:1> A=rand(10000); B=rand(10000); + octave:2> tic; C=A*B; toc + [MKL] [MIC --] [AO Function]   DGEMM + [MKL] [MIC --] [AO DGEMM Workdivision]   0.32 0.68 + [MKL] [MIC 00] [AO DGEMM CPU Time]   2.896003 seconds + [MKL] [MIC 00] [AO DGEMM MIC Time]   1.967384 seconds + [MKL] [MIC 00] [AO DGEMM CPU->MIC Data]   1347200000 bytes + [MKL] [MIC 00] [AO DGEMM MIC->CPU Data]   2188800000 bytes + Elapsed time is 2.93701 seconds. In this example, the calculation was automatically divided among the CPU cores and the Xeon Phi MIC accelerator, reducing the total runtime from @@ -133,9 +122,9 @@ A version of [native](../intel-xeon-phi.html#section-4) Octave is compiled for Xeon Phi accelerators. Some limitations apply for this version: -- Only command line support. GUI, graph plotting etc. is - not supported. -- Command history in interactive mode is not supported. +- Only command line support. GUI, graph plotting etc. is + not supported. +- Command history in interactive mode is not supported. Octave is linked with parallel Intel MKL, so it best suited for batch processing of tasks that utilize BLAS, LAPACK and FFT operations. By @@ -151,12 +140,9 @@ other mechanism) will actually run slower than on host CPU. >To use Octave on a node with Xeon Phi: - $ ssh mic0 # login to the MIC card - $ source /apps/tools/octave/3.8.2-mic/bin/octave-env.sh # set up environment variables - $ octave -q /apps/tools/octave/3.8.2-mic/example/test0.m # run an example + $ ssh mic0 # login to the MIC card + $ source /apps/tools/octave/3.8.2-mic/bin/octave-env.sh # set up environment variables + $ octave -q /apps/tools/octave/3.8.2-mic/example/test0.m # run an example > - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/r.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/r.md index a9edbe528..5c4a03897 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/r.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/r.md @@ -1,17 +1,7 @@ R = - - - - - - - - - - - + Introduction ------------ @@ -22,8 +12,6 @@ nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. - - One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the @@ -44,12 +32,12 @@ Modules **The R version 3.0.1 is available on Anselm, along with GUI interface Rstudio -Application Version module -------------- -------------- --------- -R** R 3.0.1 R -Rstudio** Rstudio 0.97 Rstudio + Application Version module + ------------- -------------- --------- + **R** R 3.0.1 R + **Rstudio** Rstudio 0.97 Rstudio - $ module load R + $ module load R Execution --------- @@ -66,8 +54,8 @@ OMP_NUM_THREADS environment variable. To run R interactively, using Rstudio GUI, log in with ssh -X parameter for X11 forwarding. Run rstudio: - $ module load Rstudio - $ rstudio + $ module load Rstudio + $ rstudio ### Batch execution @@ -77,25 +65,25 @@ running MKL kernels. Example jobscript: - #!/bin/bash + #!/bin/bash - # change to local scratch directory - cd /lscratch/$PBS_JOBID || exit + # change to local scratch directory + cd /lscratch/$PBS_JOBID || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/rscript.R . + # copy input file to scratch + cp $PBS_O_WORKDIR/rscript.R . - # load R module - module load R + # load R module + module load R - # execute the calculation - R CMD BATCH rscript.R routput.out + # execute the calculation + R CMD BATCH rscript.R routput.out - # copy output file to home - cp routput.out $PBS_O_WORKDIR/. + # copy output file to home + cp routput.out $PBS_O_WORKDIR/. - #exit - exit + #exit + exit This script may be submitted directly to the PBS workload manager via the qsub command. The inputs are in rscript.R file, outputs in @@ -122,15 +110,15 @@ from package snow) and random-number generation. The package is activated this way: - $ R - > library(parallel) + $ R + > library(parallel) More information and examples may be obtained directly by reading the documentation available in R - > ?parallel - > library(help = "parallel") - > vignette("parallel") + > ?parallel + > library(help = "parallel") + > vignette("parallel") Download the package [parallell](package-parallel-vignette) vignette. @@ -147,41 +135,41 @@ Only cores of single node can be utilized this way! Forking example: - library(parallel) + library(parallel) - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) + } - #initialize - size <- detectCores() + #initialize + size <- detectCores() - while (TRUE) - { - #read number of intervals - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + while (TRUE) + { + #read number of intervals + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) - if(n<=0) break + if(n<=0) break - #run the calculation - n <- max(n,size) - h <- 1.0/n + #run the calculation + n <- max(n,size) + h <- 1.0/n - i <- seq(1,n); - pi3 <- h*sum(simplify2array(mclapply(i,f,h,mc.cores=size))); + i <- seq(1,n); + pi3 <- h*sum(simplify2array(mclapply(i,f,h,mc.cores=size))); - #print results - cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } + #print results + cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } The above example is the classic parallel example for calculating the number Ď€. Note the **detectCores()** and **mclapply()** functions. Execute the example as: - $ R --slave --no-save --no-restore -f pi3p.R + $ R --slave --no-save --no-restore -f pi3p.R Every evaluation of the integrad function runs in parallel on different process. @@ -201,8 +189,8 @@ reference manual is available at When using package Rmpi, both openmpi and R modules must be loaded - $ module load openmpi - $ module load R + $ module load openmpi + $ module load R Rmpi may be used in three basic ways. The static approach is identical to executing any other MPI programm. In addition, there is Rslaves @@ -217,53 +205,53 @@ programs. Number of processes is static - given at the launch time. Static Rmpi example: - library(Rmpi) - - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } - - #initialize - invisible(mpi.comm.dup(0,1)) - rank <- mpi.comm.rank() - size <- mpi.comm.size() - n<-0 - - while (TRUE) - { - #read number of intervals - if (rank==0) { - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + library(Rmpi) + + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) } - #broadcat the intervals - n <- mpi.bcast(as.integer(n),type=1) + #initialize + invisible(mpi.comm.dup(0,1)) + rank <- mpi.comm.rank() + size <- mpi.comm.size() + n<-0 - if(n<=0) break + while (TRUE) + { + #read number of intervals + if (rank==0) { + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + } - #run the calculation - n <- max(n,size) - h <- 1.0/n + #broadcat the intervals + n <- mpi.bcast(as.integer(n),type=1) - i <- seq(rank+1,n,size); - mypi <- h*sum(sapply(i,f,h)); + if(n<=0) break - pi3 <- mpi.reduce(mypi) + #run the calculation + n <- max(n,size) + h <- 1.0/n - #print results - if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } + i <- seq(rank+1,n,size); + mypi <- h*sum(sapply(i,f,h)); - mpi.quit() + pi3 <- mpi.reduce(mypi) + + #print results + if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } + + mpi.quit() The above is the static MPI example for calculating the number Ď€. Note the **library(Rmpi)** and **mpi.comm.dup()** function calls. Execute the example as: - $ mpiexec R --slave --no-save --no-restore -f pi3.R + $ mpiexec R --slave --no-save --no-restore -f pi3.R ### dynamic Rmpi @@ -273,62 +261,61 @@ function call within the Rmpi program. Dynamic Rmpi example: - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } - - #the worker function - workerpi <- function() - { - #initialize - rank <- mpi.comm.rank() - size <- mpi.comm.size() - n<-0 - - while (TRUE) - { - #read number of intervals - if (rank==0) { - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) } - #broadcat the intervals - n <- mpi.bcast(as.integer(n),type=1) + #the worker function + workerpi <- function() + { + #initialize + rank <- mpi.comm.rank() + size <- mpi.comm.size() + n<-0 + + while (TRUE) + { + #read number of intervals + if (rank==0) { + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + } - if(n<=0) break + #broadcat the intervals + n <- mpi.bcast(as.integer(n),type=1) - #run the calculation - n <- max(n,size) - h <- 1.0/n + if(n<=0) break - i <- seq(rank+1,n,size); - mypi <- h*sum(sapply(i,f,h)); + #run the calculation + n <- max(n,size) + h <- 1.0/n - pi3 <- mpi.reduce(mypi) + i <- seq(rank+1,n,size); + mypi <- h*sum(sapply(i,f,h)); - #print results - if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } - } + pi3 <- mpi.reduce(mypi) - #main - library(Rmpi) + #print results + if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } + } - cat("Enter the number of slaves: ") - fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) + #main + library(Rmpi) - mpi.spawn.Rslaves(nslaves=ns) - mpi.bcast.Robj2slave(f) - mpi.bcast.Robj2slave(workerpi) + cat("Enter the number of slaves: ") + fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) - mpi.bcast.cmd(workerpi()) - workerpi() + mpi.spawn.Rslaves(nslaves=ns) + mpi.bcast.Robj2slave(f) + mpi.bcast.Robj2slave(workerpi) + mpi.bcast.cmd(workerpi()) + workerpi() - mpi.quit() + mpi.quit() The above example is the dynamic MPI example for calculating the number Ď€. Both master and slave processes carry out the calculation. Note the @@ -336,7 +323,7 @@ mpi.spawn.Rslaves(), mpi.bcast.Robj2slave()** and the mpi.bcast.cmd()** function calls. Execute the example as: - $ R --slave --no-save --no-restore -f pi3Rslaves.R + $ R --slave --no-save --no-restore -f pi3Rslaves.R ### mpi.apply Rmpi @@ -349,51 +336,51 @@ Execution is identical to other dynamic Rmpi programs. mpi.apply Rmpi example: - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) + } - #the worker function - workerpi <- function(rank,size,n) - { - #run the calculation - n <- max(n,size) - h <- 1.0/n + #the worker function + workerpi <- function(rank,size,n) + { + #run the calculation + n <- max(n,size) + h <- 1.0/n - i <- seq(rank,n,size); - mypi <- h*sum(sapply(i,f,h)); + i <- seq(rank,n,size); + mypi <- h*sum(sapply(i,f,h)); - return(mypi) - } + return(mypi) + } - #main - library(Rmpi) + #main + library(Rmpi) - cat("Enter the number of slaves: ") - fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) + cat("Enter the number of slaves: ") + fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) - mpi.spawn.Rslaves(nslaves=ns) - mpi.bcast.Robj2slave(f) - mpi.bcast.Robj2slave(workerpi) + mpi.spawn.Rslaves(nslaves=ns) + mpi.bcast.Robj2slave(f) + mpi.bcast.Robj2slave(workerpi) - while (TRUE) - { - #read number of intervals - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) - if(n<=0) break + while (TRUE) + { + #read number of intervals + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + if(n<=0) break - #run workerpi - i=seq(1,2*ns) - pi3=sum(mpi.parSapply(i,workerpi,2*ns,n)) + #run workerpi + i=seq(1,2*ns) + pi3=sum(mpi.parSapply(i,workerpi,2*ns,n)) - #print results - cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } + #print results + cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } - mpi.quit() + mpi.quit() The above is the mpi.apply MPI example for calculating the number Ď€. Only the slave processes carry out the calculation. Note the @@ -405,7 +392,7 @@ using the mclapply() in place of mpi.parSapply(). Execute the example as: - $ R --slave --no-save --no-restore -f pi3parSapply.R + $ R --slave --no-save --no-restore -f pi3parSapply.R Combining parallel and Rmpi --------------------------- @@ -422,40 +409,33 @@ submit via the **qsub** Example jobscript for [static Rmpi](r.html#static-rmpi) parallel R execution, running 1 process per core: - #!/bin/bash - #PBS -q qprod - #PBS -N Rjob - #PBS -l select=100:ncpus=16:mpiprocs=16:ompthreads=1 + #!/bin/bash + #PBS -q qprod + #PBS -N Rjob + #PBS -l select=100:ncpus=16:mpiprocs=16:ompthreads=1 - # change to scratch directory - SCRDIR=/scratch/$USER/myjob - cd $SCRDIR || exit + # change to scratch directory + SCRDIR=/scratch/$USER/myjob + cd $SCRDIR || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/rscript.R . + # copy input file to scratch + cp $PBS_O_WORKDIR/rscript.R . - # load R and openmpi module - module load R - module load openmpi + # load R and openmpi module + module load R + module load openmpi - # execute the calculation - mpiexec -bycore -bind-to-core R --slave --no-save --no-restore -f rscript.R + # execute the calculation + mpiexec -bycore -bind-to-core R --slave --no-save --no-restore -f rscript.R - # copy output file to home - cp routput.out $PBS_O_WORKDIR/. + # copy output file to home + cp routput.out $PBS_O_WORKDIR/. - #exit - exit + #exit + exit For more information about jobscripts and MPI execution refer to the [Job submission](../../resource-allocation-and-job-execution/job-submission-and-execution.html) and general [MPI](../mpi-1.html) sections. - - - - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/fftw.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/fftw.md index a5a568eeb..05072c5ee 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/fftw.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/fftw.md @@ -1,22 +1,9 @@ FFTW ==== - - - - The discrete Fourier transform in one or more dimensions, MPI parallel - - - - - - - - - - +  @@ -25,91 +12,28 @@ transform in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. 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.**** - +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: -<table> -<colgroup> <col width="25%" /> <col width="25%" /> <col width="25%" /> <col width="25%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">Version</th> -<th align="left">Parallelization</th> -<th align="left">module</th> -<th align="left">linker options</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">FFTW3 gcc<br /> -3.3.3</td> -<td align="left">pthread, OpenMP</td> -<td align="left">fftw3/3.3.3-gcc</td> -<td align="left">-lfftw3, -lfftw3_threads<br /> --lfftw3_omp</td> -</tr> -<tr class="even"> -<td align="left"><p>FFTW3 icc<br /> -3.3.3</p></td> -<td align="left">pthread, OpenMP</td> -<td align="left">fftw3</td> -<td align="left">-lfftw3, -lfftw3_threads<br /> --lfftw3_omp</td> -</tr> -<tr class="odd"> -<td align="left"><p>FFTW2 gcc<br /> -2.1.5</p></td> -<td align="left">pthread</td> -<td align="left">fftw2/2.1.5-gcc</td> -<td align="left">-lfftw, -lfftw_threads</td> -</tr> -<tr class="even"> -<td align="left">FFTW2 icc<br /> -2.1.5</td> -<td align="left">pthread</td> -<td align="left">fftw2</td> -<td align="left">-lfftw, -lfftw_threads</td> -</tr> -<tr class="odd"> -<td align="left">FFTW3 gcc<br /> -3.3.3</td> -<td align="left">OpenMPI</td> -<td align="left">fftw-mpi3/3.3.3-gcc</td> -<td align="left">-lfftw3_mpi</td> -</tr> -<tr class="even"> -<td align="left">FFTW3 icc<br /> -3.3.3</td> -<td align="left">Intel MPI</td> -<td align="left">fftw3-mpi</td> -<td align="left">-lfftw3_mpi</td> -</tr> -<tr class="odd"> -<td align="left">FFTW2 gcc<br /> -2.1.5</td> -<td align="left">OpenMPI</td> -<td align="left">fftw2-mpi/2.1.5-gcc</td> -<td align="left">-lfftw_mpi</td> -</tr> -<tr class="even"> -<td align="left">FFTW2 gcc<br /> -2.1.5</td> -<td align="left">IntelMPI</td> -<td align="left">fftw2-mpi/2.1.5-gcc</td> -<td align="left">-lfftw_mpi</td> -</tr> -</tbody> -</table> - - $ module load fftw3 + |Version |Parallelization<th align="left">module<th align="left">linker options | + | --- | --- | + |FFTW3 gcc3.3.3 |pthread, OpenMP<td align="left">fftw3/3.3.3-gcc<td align="left">-lfftw3, -lfftw3_threads-lfftw3_omp | + |FFTW3 icc3.3.3\ |pthread, OpenMP<td align="left">fftw3<td align="left">-lfftw3, -lfftw3_threads-lfftw3_omp | + |FFTW2 gcc2.1.5\ |pthread<td align="left">fftw2/2.1.5-gcc<td align="left">-lfftw, -lfftw_threads | + |FFTW2 icc2.1.5 |pthread<td align="left">fftw2<td align="left">-lfftw, -lfftw_threads | + |FFTW3 gcc3.3.3 |OpenMPI<td align="left">fftw-mpi3/3.3.3-gcc<td align="left">-lfftw3_mpi | + |FFTW3 icc3.3.3 |Intel MPI<td align="left">fftw3-mpi<td align="left">-lfftw3_mpi | + |FFTW2 gcc2.1.5 |OpenMPI<td align="left">fftw2-mpi/2.1.5-gcc<td align="left">-lfftw_mpi | + |FFTW2 gcc2.1.5 |IntelMPI<td align="left">fftw2-mpi/2.1.5-gcc<td align="left">-lfftw_mpi | + + $ module load fftw3 The module sets up environment variables, required for linking and running fftw enabled applications. Make sure that the choice of fftw @@ -119,45 +43,45 @@ different implementations may have unpredictable results. Example ------- - #include <fftw3-mpi.h> - int main(int argc, char **argv) - { -    const ptrdiff_t N0 = 100, N1 = 1000; -    fftw_plan plan; -    fftw_complex *data; -    ptrdiff_t alloc_local, local_n0, local_0_start, i, j; + #include <fftw3-mpi.h> + int main(int argc, char **argv) + { +    const ptrdiff_t N0 = 100, N1 = 1000; +    fftw_plan plan; +    fftw_complex *data; +    ptrdiff_t alloc_local, local_n0, local_0_start, i, j; -    MPI_Init(&argc, &argv); -    fftw_mpi_init(); +    MPI_Init(&argc, &argv); +    fftw_mpi_init(); -    /* get local data size and allocate */ -    alloc_local = fftw_mpi_local_size_2d(N0, N1, MPI_COMM_WORLD, -                                         &local_n0, &local_0_start); -    data = fftw_alloc_complex(alloc_local); +    /* get local data size and allocate */ +    alloc_local = fftw_mpi_local_size_2d(N0, N1, MPI_COMM_WORLD, +                                         &local_n0, &local_0_start); +    data = fftw_alloc_complex(alloc_local); -    /* create plan for in-place forward DFT */ -    plan = fftw_mpi_plan_dft_2d(N0, N1, data, data, MPI_COMM_WORLD, -                                FFTW_FORWARD, FFTW_ESTIMATE); +    /* create plan for in-place forward DFT */ +    plan = fftw_mpi_plan_dft_2d(N0, N1, data, data, MPI_COMM_WORLD, +                                FFTW_FORWARD, FFTW_ESTIMATE); -    /* initialize data */ -    for (i = 0; i < local_n0; ++i) for (j = 0; j < N1; ++j) -    {  data[i*N1 + j][0] = i; -        data[i*N1 + j][1] = j; } +    /* initialize data */ +    for (i = 0; i < local_n0; ++i) for (j = 0; j < N1; ++j) +    {  data[i*N1 + j][0] = i; +        data[i*N1 + j][1] = j; } -    /* compute transforms, in-place, as many times as desired */ -    fftw_execute(plan); +    /* compute transforms, in-place, as many times as desired */ +    fftw_execute(plan); -    fftw_destroy_plan(plan); +    fftw_destroy_plan(plan); -    MPI_Finalize(); - } +    MPI_Finalize(); + } Load modules and compile: - $ module load impi intel - $ module load fftw3-mpi + $ module load impi intel + $ module load fftw3-mpi - $ mpicc testfftw3mpi.c -o testfftw3mpi.x -Wl,-rpath=$LIBRARY_PATH -lfftw3_mpi + $ mpicc testfftw3mpi.c -o testfftw3mpi.x -Wl,-rpath=$LIBRARY_PATH -lfftw3_mpi Run the example as [Intel MPI program](../mpi-1/running-mpich2.html). @@ -165,7 +89,3 @@ program](../mpi-1/running-mpich2.html). Read more on FFTW usage on the [FFTW website.](http://www.fftw.org/fftw3_doc/) - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/gsl.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/gsl.md index 1e7ef10da..4852c3514 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/gsl.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/gsl.md @@ -1,23 +1,10 @@ GSL === - - - - The GNU Scientific Library. Provides a wide range of mathematical routines. - - - - - - - - - - + Introduction ------------ @@ -32,43 +19,43 @@ wrappers to be written for very high level languages. The library covers a wide range of topics in numerical computing. Routines are available for the following areas: ------------------------- ------------------------ ------------------------ - Complex Numbers Roots of Polynomials + ------------------------ ------------------------ ------------------------ + Complex Numbers Roots of Polynomials - Special Functions Vectors and Matrices + Special Functions Vectors and Matrices - Permutations Combinations + Permutations Combinations - Sorting BLAS Support + Sorting BLAS Support - Linear Algebra CBLAS Library + Linear Algebra CBLAS Library - Fast Fourier Transforms Eigensystems + Fast Fourier Transforms Eigensystems - Random Numbers Quadrature + Random Numbers Quadrature - Random Distributions Quasi-Random Sequences + Random Distributions Quasi-Random Sequences - Histograms Statistics + Histograms Statistics - Monte Carlo Integration N-Tuples + Monte Carlo Integration N-Tuples - Differential Equations Simulated Annealing + Differential Equations Simulated Annealing - Numerical Interpolation - Differentiation + Numerical Interpolation + Differentiation - Series Acceleration Chebyshev Approximations + Series Acceleration Chebyshev Approximations - Root-Finding Discrete Hankel - Transforms + Root-Finding Discrete Hankel + Transforms - Least-Squares Fitting Minimization + Least-Squares Fitting Minimization - IEEE Floating-Point Physical Constants + IEEE Floating-Point Physical Constants - Basis Splines Wavelets ------------------------- ------------------------ ------------------------ + Basis Splines Wavelets + ------------------------ ------------------------ ------------------------ Modules ------- @@ -76,12 +63,12 @@ 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 + Module Compiler + ----------------------- ----------- + gsl/1.16-gcc gcc 4.8.6 + gsl/1.16-icc(default) icc -  $ module load gsl +  $ module load gsl The module sets up environment variables, required for linking and running GSL enabled applications. This particular command loads the @@ -98,16 +85,16 @@ Using the MKL is recommended. ### Compiling and linking with Intel compilers - $ module load intel - $ module load gsl - $ icc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -mkl -lgsl + $ module load intel + $ module load gsl + $ icc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -mkl -lgsl ### Compiling and linking with GNU compilers - $ module load gcc - $ module load mkl - $ module load gsl/1.16-gcc - $ gcc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lgsl + $ module load gcc + $ module load mkl + $ module load gsl/1.16-gcc + $ gcc myprog.c -o myprog.x -Wl,-rpath=$LIBRARY_PATH -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lgsl Example ------- @@ -115,67 +102,63 @@ Example Following is an example of discrete wavelet transform implemented by GSL: - #include <stdio.h> - #include <math.h> - #include <gsl/gsl_sort.h> - #include <gsl/gsl_wavelet.h> - - int - main (int argc, char **argv) - { -  int i, n = 256, nc = 20; -  double *data = malloc (n * sizeof (double)); -  double *abscoeff = malloc (n * sizeof (double)); -  size_t *p = malloc (n * sizeof (size_t)); - -  gsl_wavelet *w; -  gsl_wavelet_workspace *work; - -  w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4); -  work = gsl_wavelet_workspace_alloc (n); - -  for (i=0; i<n; i++) -  data[i] = sin (3.141592654*(double)i/256.0); - -  gsl_wavelet_transform_forward (w, data, 1, n, work); - -  for (i = 0; i < n; i++) -    { -      abscoeff[i] = fabs (data[i]); -    } -  -  gsl_sort_index (p, abscoeff, 1, n); -  -  for (i = 0; (i + nc) < n; i++) -    data[p[i]] = 0; -  -  gsl_wavelet_transform_inverse (w, data, 1, n, work); -  -  for (i = 0; i < n; i++) -    { -      printf ("%gn", data[i]); -    } -  -  gsl_wavelet_free (w); -  gsl_wavelet_workspace_free (work); - -  free (data); -  free (abscoeff); -  free (p); -  return 0; - } + #include <stdio.h> + #include <math.h> + #include <gsl/gsl_sort.h> + #include <gsl/gsl_wavelet.h> + + int + main (int argc, char **argv) + { +  int i, n = 256, nc = 20; +  double *data = malloc (n * sizeof (double)); +  double *abscoeff = malloc (n * sizeof (double)); +  size_t *p = malloc (n * sizeof (size_t)); + +  gsl_wavelet *w; +  gsl_wavelet_workspace *work; + +  w = gsl_wavelet_alloc (gsl_wavelet_daubechies, 4); +  work = gsl_wavelet_workspace_alloc (n); + +  for (i=0; i<n; i++) +  data[i] = sin (3.141592654*(double)i/256.0); + +  gsl_wavelet_transform_forward (w, data, 1, n, work); + +  for (i = 0; i < n; i++) +    { +      abscoeff[i] = fabs (data[i]); +    } +  +  gsl_sort_index (p, abscoeff, 1, n); +  +  for (i = 0; (i + nc) < n; i++) +    data[p[i]] = 0; +  +  gsl_wavelet_transform_inverse (w, data, 1, n, work); +  +  for (i = 0; i < n; i++) +    { +      printf ("%gn", data[i]); +    } +  +  gsl_wavelet_free (w); +  gsl_wavelet_workspace_free (work); + +  free (data); +  free (abscoeff); +  free (p); +  return 0; + } Load modules and compile: - $ module load intel gsl - icc dwt.c -o dwt.x -Wl,-rpath=$LIBRARY_PATH -mkl -lgsl + $ module load intel gsl + icc dwt.c -o dwt.x -Wl,-rpath=$LIBRARY_PATH -mkl -lgsl In this example, we compile the dwt.c code using the Intel compiler and link it to the MKL and GSL library, note the -mkl and -lgsl options. The library search path is compiled in, so that no modules are necessary to run the code. - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/hdf5.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/hdf5.md index 5048c00cf..6e2bb61a7 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/hdf5.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/hdf5.md @@ -1,19 +1,8 @@ HDF5 ==== - - - - Hierarchical Data Format library. Serial and MPI parallel version. - - - - - - -  [HDF5 (Hierarchical Data Format)](http://www.hdfgroup.org/HDF5/) is a @@ -31,87 +20,25 @@ Anselm, compiled for **Intel MPI** and **OpenMPI** using **intel** and gnu** compilers. These are available via modules: <table style="width:100%;"> -<colgroup> <col width="16%" /> <col width="16%" /> <col width="16%" /> <col width="16%" /> <col width="16%" /> <col width="16%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">Version</th> -<th align="left">Parallelization</th> -<th align="left">module</th> -<th align="left">C linker options</th> -<th align="left">C++ linker options</th> -<th align="left">Fortran linker options</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">HDF5 icc serial</td> -<td align="left">pthread</td> -<td align="left">hdf5/1.8.11</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">$HDF5_INC $HDF5_CPP_LIB</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -<tr class="even"> -<td align="left"><p>HDF5 icc parallel MPI</p></td> -<td align="left">pthread, IntelMPI</td> -<td align="left">hdf5-parallel/1.8.11</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">Not supported</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -<tr class="odd"> -<td align="left">HDF5 icc serial</td> -<td align="left">pthread</td> -<td align="left">hdf5/1.8.13</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">$HDF5_INC $HDF5_CPP_LIB</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -<tr class="even"> -<td align="left"><p>HDF5 icc parallel MPI</p></td> -<td align="left">pthread, IntelMPI</td> -<td align="left">hdf5-parallel/1.8.13</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">Not supported</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -<tr class="odd"> -<td align="left"><p>HDF5 gcc parallel MPI</p></td> -<td align="left">pthread, OpenMPI 1.6.5, gcc 4.8.1</td> -<td align="left">hdf5-parallel/1.8.11-gcc</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">Not supported</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -<tr class="even"> -<td align="left"><p>HDF5 gcc parallel MPI</p></td> -<td align="left">pthread, OpenMPI 1.6.5, gcc 4.8.1</td> -<td align="left">hdf5-parallel/1.8.13-gcc</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">Not supported</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -<tr class="odd"> -<td align="left"><p>HDF5 gcc parallel MPI</p></td> -<td align="left">pthread, OpenMPI 1.8.1, gcc 4.9.0</td> -<td align="left">hdf5-parallel/1.8.13-gcc49</td> -<td align="left">$HDF5_INC $HDF5_SHLIB</td> -<td align="left">Not supported</td> -<td align="left">$HDF5_INC $HDF5_F90_LIB</td> -</tr> -</tbody> -</table> + |Version |Parallelization<th align="left">module<th align="left">C linker options<th align="left">C++ linker options<th align="left">Fortran linker options | + | --- | --- | + |HDF5 icc serial<td align="left">pthread<td align="left">hdf5/1.8.11<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">$HDF5_INC $HDF5_CPP_LIB<td align="left">$HDF5_INC $HDF5_F90_LIB | + |HDF5 icc parallel MPI\<td align="left">pthread, IntelMPI<td align="left">hdf5-parallel/1.8.11<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">Not supported<td align="left">$HDF5_INC $HDF5_F90_LIB | + |HDF5 icc serial<td align="left">pthread<td align="left">hdf5/1.8.13<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">$HDF5_INC $HDF5_CPP_LIB<td align="left">$HDF5_INC $HDF5_F90_LIB | + |HDF5 icc parallel MPI\<td align="left">pthread, IntelMPI<td align="left">hdf5-parallel/1.8.13<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">Not supported<td align="left">$HDF5_INC $HDF5_F90_LIB | + |HDF5 gcc parallel MPI\<td align="left">pthread, OpenMPI 1.6.5, gcc 4.8.1<td align="left">hdf5-parallel/1.8.11-gcc<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">Not supported<td align="left">$HDF5_INC $HDF5_F90_LIB | + |HDF5 gcc parallel MPI\<td align="left">pthread, OpenMPI 1.6.5, gcc 4.8.1<td align="left">hdf5-parallel/1.8.13-gcc<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">Not supported<td align="left">$HDF5_INC $HDF5_F90_LIB | + |HDF5 gcc parallel MPI\<td align="left">pthread, OpenMPI 1.8.1, gcc 4.9.0<td align="left">hdf5-parallel/1.8.13-gcc49<td align="left">$HDF5_INC $HDF5_SHLIB<td align="left">Not supported<td align="left">$HDF5_INC $HDF5_F90_LIB |  - $ module load hdf5-parallel + $ module load hdf5-parallel The module sets up environment variables, required for linking and running HDF5 enabled applications. Make sure that the choice of HDF5 @@ -131,57 +58,56 @@ computations. Example ------- - #include "hdf5.h" - #define FILE "dset.h5" - - int main() { + #include "hdf5.h" + #define FILE "dset.h5" - hid_t file_id, dataset_id, dataspace_id; /* identifiers */ - hsize_t dims[2]; - herr_t status; - int i, j, dset_data[4][6]; + int main() { - /* Create a new file using default properties. */ - file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + hid_t file_id, dataset_id, dataspace_id; /* identifiers */ + hsize_t dims[2]; + herr_t status; + int i, j, dset_data[4][6]; - /* Create the data space for the dataset. */ - dims[0] = 4; - dims[1] = 6; - dataspace_id = H5Screate_simple(2, dims, NULL); + /* Create a new file using default properties. */ + file_id = H5Fcreate(FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); - /* Initialize the dataset. */ - for (i = 0; i < 4; i++) - for (j = 0; j < 6; j++) - dset_data[i][j] = i * 6 + j + 1; + /* Create the data space for the dataset. */ + dims[0] = 4; + dims[1] = 6; + dataspace_id = H5Screate_simple(2, dims, NULL); + /* Initialize the dataset. */ + for (i = 0; i < 4; i++) + for (j = 0; j < 6; j++) + dset_data[i][j] = i * 6 + j + 1; - /* Create the dataset. */ - dataset_id = H5Dcreate2(file_id, "/dset", H5T_STD_I32BE, dataspace_id, - H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); + /* Create the dataset. */ + dataset_id = H5Dcreate2(file_id, "/dset", H5T_STD_I32BE, dataspace_id, + H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); - /* Write the dataset. */ - status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, - dset_data); + /* Write the dataset. */ + status = H5Dwrite(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, + dset_data); - status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, - dset_data); + status = H5Dread(dataset_id, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, + dset_data); - /* End access to the dataset and release resources used by it. */ - status = H5Dclose(dataset_id); + /* End access to the dataset and release resources used by it. */ + status = H5Dclose(dataset_id); - /* Terminate access to the data space. */ - status = H5Sclose(dataspace_id); + /* Terminate access to the data space. */ + status = H5Sclose(dataspace_id); - /* Close the file. */ - status = H5Fclose(file_id); - } + /* Close the file. */ + status = H5Fclose(file_id); + } Load modules and compile: - $ module load intel impi - $ module load hdf5-parallel + $ module load intel impi + $ module load hdf5-parallel - $ mpicc hdf5test.c -o hdf5test.x -Wl,-rpath=$LIBRARY_PATH $HDF5_INC $HDF5_SHLIB + $ mpicc hdf5test.c -o hdf5test.x -Wl,-rpath=$LIBRARY_PATH $HDF5_INC $HDF5_SHLIB Run the example as [Intel MPI program](../anselm-cluster-documentation/software/mpi-1/running-mpich2.html). @@ -195,14 +121,7 @@ For further informations, please see the website:  - - class="smarterwiki-popup-bubble-tip"> - - btnI=I'm+Feeling+Lucky&btnI=I'm+Feeling+Lucky&q=HDF5%20icc%20serial%09pthread%09hdf5%2F1.8.13%09%24HDF5_INC%20%24HDF5_SHLIB%09%24HDF5_INC%20%24HDF5_CPP_LIB%09%24HDF5_INC%20%24HDF5_F90_LIB%0A%0AHDF5%20icc%20parallel%20MPI%0A%09pthread%2C%20IntelMPI%09hdf5-parallel%2F1.8.13%09%24HDF5_INC%20%24HDF5_SHLIB%09Not%20supported%09%24HDF5_INC%20%24HDF5_F90_LIB+wikipedia "Search Wikipedia"){.smarterwiki-popup-bubble</span> - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/intel-numerical-libraries.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/intel-numerical-libraries.md index 3d307a110..eb98c60fa 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/intel-numerical-libraries.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/intel-numerical-libraries.md @@ -1,22 +1,9 @@ Intel numerical libraries ========================= - - - - Intel libraries for high performance in numerical computing - - - - - - - - - - + Intel Math Kernel Library ------------------------- @@ -27,7 +14,7 @@ Intel MKL unites and provides these basic components: BLAS, LAPACK, ScaLapack, PARDISO, FFT, VML, VSL, Data fitting, Feast Eigensolver and many more. - $ module load mkl + $ module load mkl Read more at the [Intel MKL](../intel-suite/intel-mkl.html) page. @@ -42,7 +29,7 @@ includes signal, image and frame processing algorithms, such as FFT, FIR, Convolution, Optical Flow, Hough transform, Sum, MinMax and many more. - $ module load ipp + $ module load ipp Read more at the [Intel IPP](../intel-suite/intel-integrated-performance-primitives.html) @@ -60,11 +47,8 @@ smaller parallel components. To use the library, you specify tasks, not threads, and let the library map tasks onto threads in an efficient manner. - $ module load tbb + $ module load tbb Read more at the [Intel TBB](../intel-suite/intel-tbb.html) page. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/magma-for-intel-xeon-phi.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/magma-for-intel-xeon-phi.md index f0113b1ab..94aae9e9c 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/magma-for-intel-xeon-phi.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/magma-for-intel-xeon-phi.md @@ -1,26 +1,15 @@ MAGMA for Intel Xeon Phi ======================== - - - - Next generation dense algebra library for heterogeneous systems with accelerators - - - - - - - ### Compiling and linking with MAGMA To be able to compile and link code with MAGMA library user has to load following module: - $ module load magma/1.3.0-mic + $ module load magma/1.3.0-mic To make compilation more user friendly module also sets these two environment variables: @@ -33,9 +22,9 @@ step).  Compilation example: - $ icc -mkl -O3 -DHAVE_MIC -DADD_ -Wall $MAGMA_INC -c testing_dgetrf_mic.cpp -o testing_dgetrf_mic.o + $ icc -mkl -O3 -DHAVE_MIC -DADD_ -Wall $MAGMA_INC -c testing_dgetrf_mic.cpp -o testing_dgetrf_mic.o - $ icc -mkl -O3 -DHAVE_MIC -DADD_ -Wall -fPIC -Xlinker -zmuldefs -Wall -DNOCHANGE -DHOST testing_dgetrf_mic.o -o testing_dgetrf_mic $MAGMA_LIBS + $ icc -mkl -O3 -DHAVE_MIC -DADD_ -Wall -fPIC -Xlinker -zmuldefs -Wall -DNOCHANGE -DHOST testing_dgetrf_mic.o -o testing_dgetrf_mic $MAGMA_LIBS  @@ -58,25 +47,25 @@ $MAGMAROOT/launch_anselm_from_mic.sh** To test if the MAGMA server runs properly we can run one of examples that are part of the MAGMA installation: - [user@cn204 ~]$ $MAGMAROOT/testing/testing_dgetrf_mic + [user@cn204 ~]$ $MAGMAROOT/testing/testing_dgetrf_mic - [user@cn204 ~]$ export OMP_NUM_THREADS=16 + [user@cn204 ~]$ export OMP_NUM_THREADS=16 - [lriha@cn204 ~]$ $MAGMAROOT/testing/testing_dgetrf_mic - Usage: /apps/libs/magma-mic/magmamic-1.3.0/testing/testing_dgetrf_mic [options] [-h|--help] + [lriha@cn204 ~]$ $MAGMAROOT/testing/testing_dgetrf_mic + Usage: /apps/libs/magma-mic/magmamic-1.3.0/testing/testing_dgetrf_mic [options] [-h|--help] -  M    N    CPU GFlop/s (sec)  MAGMA GFlop/s (sec)  ||PA-LU||/(||A||*N) - ========================================================================= -  1088 1088    ---  ( --- )    13.93 (  0.06)    --- -  2112 2112    ---  ( --- )    77.85 (  0.08)    --- -  3136 3136    ---  ( --- )   183.21 (  0.11)    --- -  4160 4160    ---  ( --- )   227.52 (  0.21)    --- -  5184 5184    ---  ( --- )   258.61 (  0.36)    --- -  6208 6208    ---  ( --- )   333.12 (  0.48)    --- -  7232 7232    ---  ( --- )   416.52 (  0.61)    --- -  8256 8256    ---  ( --- )   446.97 (  0.84)    --- -  9280 9280    ---  ( --- )   461.15 (  1.16)    --- - 10304 10304    ---  ( --- )   500.70 (  1.46)    --- +  M    N    CPU GFlop/s (sec)  MAGMA GFlop/s (sec)  ||PA-LU||/(||A||*N) + ========================================================================= +  1088 1088    ---  ( --- )    13.93 (  0.06)    --- +  2112 2112    ---  ( --- )    77.85 (  0.08)    --- +  3136 3136    ---  ( --- )   183.21 (  0.11)    --- +  4160 4160    ---  ( --- )   227.52 (  0.21)    --- +  5184 5184    ---  ( --- )   258.61 (  0.36)    --- +  6208 6208    ---  ( --- )   333.12 (  0.48)    --- +  7232 7232    ---  ( --- )   416.52 (  0.61)    --- +  8256 8256    ---  ( --- )   446.97 (  0.84)    --- +  9280 9280    ---  ( --- )   461.15 (  1.16)    --- + 10304 10304    ---  ( --- )   500.70 (  1.46)    ---  @@ -102,7 +91,3 @@ Jack Dongarra et. al, [http://icl.utk.edu/projectsfiles/magma/pubs/24-MAGMA_MIC_03.pdf ](http://icl.utk.edu/projectsfiles/magma/pubs/24-MAGMA_MIC_03.pdf) - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/petsc.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/petsc.md index 42272de80..5bf88ae2c 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/petsc.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/petsc.md @@ -1,25 +1,12 @@ PETSc ===== - - - - PETSc is a suite of building blocks for the scalable solution of scientific and engineering applications modelled by partial differential equations. It supports MPI, shared memory, and GPUs through CUDA or OpenCL, as well as hybrid MPI-shared memory or MPI-GPU parallelism. - - - - - - - - - - + Introduction ------------ @@ -36,18 +23,18 @@ as well as hybrid MPI-shared memory or MPI-GPU parallelism. Resources --------- -- [project webpage](http://www.mcs.anl.gov/petsc/) -- [documentation](http://www.mcs.anl.gov/petsc/documentation/) - - [PETSc Users - Manual (PDF)](http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf) - - [index of all manual - pages](http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/singleindex.html) -- PRACE Video Tutorial [part - 1](http://www.youtube.com/watch?v=asVaFg1NDqY), [part - 2](http://www.youtube.com/watch?v=ubp_cSibb9I), [part - 3](http://www.youtube.com/watch?v=vJAAAQv-aaw), [part - 4](http://www.youtube.com/watch?v=BKVlqWNh8jY), [part - 5](http://www.youtube.com/watch?v=iXkbLEBFjlM) +- [project webpage](http://www.mcs.anl.gov/petsc/) +- [documentation](http://www.mcs.anl.gov/petsc/documentation/) + - [PETSc Users + Manual (PDF)](http://www.mcs.anl.gov/petsc/petsc-current/docs/manual.pdf) + - [index of all manual + pages](http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/singleindex.html) +- PRACE Video Tutorial [part + 1](http://www.youtube.com/watch?v=asVaFg1NDqY), [part + 2](http://www.youtube.com/watch?v=ubp_cSibb9I), [part + 3](http://www.youtube.com/watch?v=vJAAAQv-aaw), [part + 4](http://www.youtube.com/watch?v=BKVlqWNh8jY), [part + 5](http://www.youtube.com/watch?v=iXkbLEBFjlM) Modules ------- @@ -55,8 +42,8 @@ Modules You can start using PETSc on Anselm by loading the PETSc module. Module names obey this pattern: - # module load petsc/version-compiler-mpi-blas-variant, e.g. - module load petsc/3.4.4-icc-impi-mkl-opt + # module load petsc/version-compiler-mpi-blas-variant, e.g. + module load petsc/3.4.4-icc-impi-mkl-opt where `variant` is replaced by one of `{dbg, opt, threads-dbg, threads-opt}`. The `opt` variant is compiled @@ -92,31 +79,28 @@ petsc module loaded. ### Libraries linked to PETSc on Anselm (as of 11 April 2015) -- dense linear algebra - - [Elemental](http://libelemental.org/) -- sparse linear system solvers - - [Intel MKL - Pardiso](https://software.intel.com/en-us/node/470282) - - [MUMPS](http://mumps.enseeiht.fr/) - - [PaStiX](http://pastix.gforge.inria.fr/) - - [SuiteSparse](http://faculty.cse.tamu.edu/davis/suitesparse.html) - - [SuperLU](http://crd.lbl.gov/~xiaoye/SuperLU/#superlu) - - [SuperLU_Dist](http://crd.lbl.gov/~xiaoye/SuperLU/#superlu_dist) -- input/output - - [ExodusII](http://sourceforge.net/projects/exodusii/) - - [HDF5](http://www.hdfgroup.org/HDF5/) - - [NetCDF](http://www.unidata.ucar.edu/software/netcdf/) -- partitioning - - [Chaco](http://www.cs.sandia.gov/CRF/chac.html) - - [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/overview) - - [ParMETIS](http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview) - - [PT-Scotch](http://www.labri.fr/perso/pelegrin/scotch/) -- preconditioners & multigrid - - [Hypre](http://acts.nersc.gov/hypre/) - - [Trilinos ML](http://trilinos.sandia.gov/packages/ml/) - - [SPAI - Sparse Approximate - Inverse](https://bitbucket.org/petsc/pkg-spai) - - - +- dense linear algebra + - [Elemental](http://libelemental.org/) +- sparse linear system solvers + - [Intel MKL + Pardiso](https://software.intel.com/en-us/node/470282) + - [MUMPS](http://mumps.enseeiht.fr/) + - [PaStiX](http://pastix.gforge.inria.fr/) + - [SuiteSparse](http://faculty.cse.tamu.edu/davis/suitesparse.html) + - [SuperLU](http://crd.lbl.gov/~xiaoye/SuperLU/#superlu) + - [SuperLU_Dist](http://crd.lbl.gov/~xiaoye/SuperLU/#superlu_dist) +- input/output + - [ExodusII](http://sourceforge.net/projects/exodusii/) + - [HDF5](http://www.hdfgroup.org/HDF5/) + - [NetCDF](http://www.unidata.ucar.edu/software/netcdf/) +- partitioning + - [Chaco](http://www.cs.sandia.gov/CRF/chac.html) + - [METIS](http://glaros.dtc.umn.edu/gkhome/metis/metis/overview) + - [ParMETIS](http://glaros.dtc.umn.edu/gkhome/metis/parmetis/overview) + - [PT-Scotch](http://www.labri.fr/perso/pelegrin/scotch/) +- preconditioners & multigrid + - [Hypre](http://acts.nersc.gov/hypre/) + - [Trilinos ML](http://trilinos.sandia.gov/packages/ml/) + - [SPAI - Sparse Approximate + Inverse](https://bitbucket.org/petsc/pkg-spai) diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/trilinos.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/trilinos.md index 63d715688..ddd041eeb 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/trilinos.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/numerical-libraries/trilinos.md @@ -1,20 +1,9 @@ Trilinos ======== - - - - Packages for large scale scientific and engineering problems. Provides MPI and hybrid parallelization. - - - - - - - ### Introduction Trilinos is a collection of software packages for the numerical solution @@ -28,22 +17,22 @@ supported within Trilinos packages. Current Trilinos installation on ANSELM 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 e.g. methods for matrix-matrix multiplication. -- **Tpetra** - next-generation linear algebra package. Supports 64bit - 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. -- **Anasazi** - framework for large-scale eigenvalue algorithms. -- **IFPACK** - distributed algebraic preconditioner (includes e.g. - incomplete LU factorization) -- **Teuchos** - common tools packages. This package contains classes - for memory management, output, performance monitoring, BLAS and - LAPACK wrappers etc. +- **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 e.g. methods for matrix-matrix multiplication. +- **Tpetra** - next-generation linear algebra package. Supports 64bit + 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. +- **Anasazi** - framework for large-scale eigenvalue algorithms. +- **IFPACK** - distributed algebraic preconditioner (includes e.g. + incomplete LU factorization) +- **Teuchos** - common tools packages. This package contains classes + for memory management, output, performance monitoring, BLAS and + LAPACK wrappers etc. For the full list of Trilinos packages, descriptions of their capabilities, and user manuals see @@ -58,7 +47,7 @@ installed on ANSELM. First, load the appropriate module: - $ module load trilinos + $ module load trilinos For the compilation of CMake-aware project, Trilinos provides the FIND_PACKAGE( Trilinos ) capability, which makes it easy to build @@ -71,11 +60,11 @@ system, which allows users to include important Trilinos variables directly into their makefiles. This can be done simply by inserting the following line into the makefile: - include Makefile.export.Trilinos + include Makefile.export.Trilinos or - include Makefile.export.<package> + include Makefile.export.<package> if you are interested only in a specific Trilinos package. This will give you access to the variables such as Trilinos_CXX_COMPILER, @@ -83,6 +72,3 @@ Trilinos_INCLUDE_DIRS, Trilinos_LIBRARY_DIRS etc. For the detailed description and example makefile see <http://trilinos.sandia.gov/Export_Makefile.txt>. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/nvidia-cuda.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/nvidia-cuda.md index 952c92850..3c3baa148 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/nvidia-cuda.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/nvidia-cuda.md @@ -1,22 +1,9 @@ nVidia CUDA =========== - - - - A guide to nVidia CUDA programming and GPU usage - - - - - - - - - - + CUDA Programming on Anselm -------------------------- @@ -24,185 +11,184 @@ CUDA Programming on Anselm The default programming model for GPU accelerators on Anselm is Nvidia CUDA. To set up the environment for CUDA use - $ module load cuda + $ module load cuda If the user code is hybrid and uses both CUDA and MPI, the MPI environment has to be set up as well. One way to do this is to use the PrgEnv-gnu module, which sets up correct combination of GNU compiler and MPI library. - $ module load PrgEnv-gnu + $ module load PrgEnv-gnu CUDA code can be compiled directly on login1 or login2 nodes. User does not have to use compute nodes with GPU accelerator for compilation. To compile a CUDA source code, use nvcc compiler. - $ nvcc --version + $ nvcc --version >CUDA Toolkit comes with large number of examples, that can be helpful to start with. To compile and test these examples user should copy them to its home directory - $ cd ~ - $ mkdir cuda-samples - $ cp -R /apps/nvidia/cuda/6.5.14/samples/* ~/cuda-samples/ + $ cd ~ + $ mkdir cuda-samples + $ cp -R /apps/nvidia/cuda/6.5.14/samples/* ~/cuda-samples/ To compile an examples, change directory to the particular example (here the example used is deviceQuery) and run "make" to start the compilation - $ cd ~/cuda-samples/1_Utilities/deviceQuery - $ make + $ cd ~/cuda-samples/1_Utilities/deviceQuery + $ make To run the code user can use PBS interactive session to get access to a node from qnvidia queue (note: use your project name with parameter -A in the qsub command) and execute the binary file - $ qsub -I -q qnvidia -A OPEN-0-0 - $ module load cuda - $ ~/cuda-samples/1_Utilities/deviceQuery/deviceQuery + $ qsub -I -q qnvidia -A OPEN-0-0 + $ module load cuda + $ ~/cuda-samples/1_Utilities/deviceQuery/deviceQuery Expected output of the deviceQuery example executed on a node with Tesla K20m is - CUDA Device Query (Runtime API) version (CUDART static linking) - - Detected 1 CUDA Capable device(s) - - Device 0: "Tesla K20m" - CUDA Driver Version / Runtime Version 5.0 / 5.0 - CUDA Capability Major/Minor version number: 3.5 - Total amount of global memory: 4800 MBytes (5032706048 bytes) - (13) Multiprocessors x (192) CUDA Cores/MP: 2496 CUDA Cores - GPU Clock rate: 706 MHz (0.71 GHz) - Memory Clock rate: 2600 Mhz - Memory Bus Width: 320-bit - L2 Cache Size: 1310720 bytes - Max Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536,65536), 3D=(4096,4096,4096) - Max Layered Texture Size (dim) x layers 1D=(16384) x 2048, 2D=(16384,16384) x 2048 - Total amount of constant memory: 65536 bytes - Total amount of shared memory per block: 49152 bytes - Total number of registers available per block: 65536 - Warp size: 32 - Maximum number of threads per multiprocessor: 2048 - Maximum number of threads per block: 1024 - Maximum sizes of each dimension of a block: 1024 x 1024 x 64 - Maximum sizes of each dimension of a grid: 2147483647 x 65535 x 65535 - Maximum memory pitch: 2147483647 bytes - Texture alignment: 512 bytes - Concurrent copy and kernel execution: Yes with 2 copy engine(s) - Run time limit on kernels: No - Integrated GPU sharing Host Memory: No - Support host page-locked memory mapping: Yes - Alignment requirement for Surfaces: Yes - Device has ECC support: Enabled - Device supports Unified Addressing (UVA): Yes - Device PCI Bus ID / PCI location ID: 2 / 0 - Compute Mode: - < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > - deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 5.0, CUDA Runtime Version = 5.0, NumDevs = 1, Device0 = Tesla K20m + CUDA Device Query (Runtime API) version (CUDART static linking) + + Detected 1 CUDA Capable device(s) + + Device 0: "Tesla K20m" + CUDA Driver Version / Runtime Version 5.0 / 5.0 + CUDA Capability Major/Minor version number: 3.5 + Total amount of global memory: 4800 MBytes (5032706048 bytes) + (13) Multiprocessors x (192) CUDA Cores/MP: 2496 CUDA Cores + GPU Clock rate: 706 MHz (0.71 GHz) + Memory Clock rate: 2600 Mhz + Memory Bus Width: 320-bit + L2 Cache Size: 1310720 bytes + Max Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536,65536), 3D=(4096,4096,4096) + Max Layered Texture Size (dim) x layers 1D=(16384) x 2048, 2D=(16384,16384) x 2048 + Total amount of constant memory: 65536 bytes + Total amount of shared memory per block: 49152 bytes + Total number of registers available per block: 65536 + Warp size: 32 + Maximum number of threads per multiprocessor: 2048 + Maximum number of threads per block: 1024 + Maximum sizes of each dimension of a block: 1024 x 1024 x 64 + Maximum sizes of each dimension of a grid: 2147483647 x 65535 x 65535 + Maximum memory pitch: 2147483647 bytes + Texture alignment: 512 bytes + Concurrent copy and kernel execution: Yes with 2 copy engine(s) + Run time limit on kernels: No + Integrated GPU sharing Host Memory: No + Support host page-locked memory mapping: Yes + Alignment requirement for Surfaces: Yes + Device has ECC support: Enabled + Device supports Unified Addressing (UVA): Yes + Device PCI Bus ID / PCI location ID: 2 / 0 + Compute Mode: + < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > + deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 5.0, CUDA Runtime Version = 5.0, NumDevs = 1, Device0 = Tesla K20m ### Code example In this section we provide a basic CUDA based vector addition code example. You can directly copy and paste the code to test it. - $ vim test.cu - - #define N (2048*2048) - #define THREADS_PER_BLOCK 512 - - #include <stdio.h> - #include <stdlib.h> - - // GPU kernel function to add two vectors - __global__ void add_gpu( int *a, int *b, int *c, int n){ -  int index = threadIdx.x + blockIdx.x * blockDim.x; -  if (index < n) -  c[index] = a[index] + b[index]; - } - - // CPU function to add two vectors - void add_cpu (int *a, int *b, int *c, int n) { -  for (int i=0; i < n; i++) - c[i] = a[i] + b[i]; - } - - // CPU function to generate a vector of random integers - void random_ints (int *a, int n) { -  for (int i = 0; i < n; i++) -  a[i] = rand() % 10000; // random number between 0 and 9999 - } - - // CPU function to compare two vectors - int compare_ints( int *a, int *b, int n ){ -  int pass = 0; -  for (int i = 0; i < N; i++){ -  if (a[i] != b[i]) { -  printf("Value mismatch at location %d, values %d and %dn",i, a[i], b[i]); -  pass = 1; -  } -  } -  if (pass == 0) printf ("Test passedn"); else printf ("Test Failedn"); -  return pass; - } - - - int main( void ) { -  -  int *a, *b, *c; // host copies of a, b, c -  int *dev_a, *dev_b, *dev_c; // device copies of a, b, c -  int size = N * sizeof( int ); // we need space for N integers - -  // Allocate GPU/device copies of dev_a, dev_b, dev_c -  cudaMalloc( (void**)&dev_a, size ); -  cudaMalloc( (void**)&dev_b, size ); -  cudaMalloc( (void**)&dev_c, size ); - -  // Allocate CPU/host copies of a, b, c -  a = (int*)malloc( size ); -  b = (int*)malloc( size ); -  c = (int*)malloc( size ); -  -  // Fill input vectors with random integer numbers -  random_ints( a, N ); -  random_ints( b, N ); - -  // copy inputs to device -  cudaMemcpy( dev_a, a, size, cudaMemcpyHostToDevice ); -  cudaMemcpy( dev_b, b, size, cudaMemcpyHostToDevice ); - -  // launch add_gpu() kernel with blocks and threads -  add_gpu<<< N/THREADS_PER_BLOCK, THREADS_PER_BLOCK >>>( dev_a, dev_b, dev_c, N ); - -  // copy device result back to host copy of c -  cudaMemcpy( c, dev_c, size, cudaMemcpyDeviceToHost ); - -  //Check the results with CPU implementation -  int *c_h; c_h = (int*)malloc( size ); -  add_cpu (a, b, c_h, N); -  compare_ints(c, c_h, N); - -  // Clean CPU memory allocations -  free( a ); free( b ); free( c ); free (c_h); - -  // Clean GPU memory allocations -  cudaFree( dev_a ); -  cudaFree( dev_b ); -  cudaFree( dev_c ); - -  return 0; - } + $ vim test.cu + + #define N (2048*2048) + #define THREADS_PER_BLOCK 512 + + #include <stdio.h> + #include <stdlib.h> + + // GPU kernel function to add two vectors + __global__ void add_gpu( int *a, int *b, int *c, int n){ +  int index = threadIdx.x + blockIdx.x * blockDim.x; +  if (index < n) +  c[index] = a[index] + b[index]; + } + + // CPU function to add two vectors + void add_cpu (int *a, int *b, int *c, int n) { +  for (int i=0; i < n; i++) + c[i] = a[i] + b[i]; + } + + // CPU function to generate a vector of random integers + void random_ints (int *a, int n) { +  for (int i = 0; i < n; i++) +  a[i] = rand() % 10000; // random number between 0 and 9999 + } + + // CPU function to compare two vectors + int compare_ints( int *a, int *b, int n ){ +  int pass = 0; +  for (int i = 0; i < N; i++){ +  if (a[i] != b[i]) { +  printf("Value mismatch at location %d, values %d and %dn",i, a[i], b[i]); +  pass = 1; +  } +  } +  if (pass == 0) printf ("Test passedn"); else printf ("Test Failedn"); +  return pass; + } + + int main( void ) { +  +  int *a, *b, *c; // host copies of a, b, c +  int *dev_a, *dev_b, *dev_c; // device copies of a, b, c +  int size = N * sizeof( int ); // we need space for N integers + +  // Allocate GPU/device copies of dev_a, dev_b, dev_c +  cudaMalloc( (void**)&dev_a, size ); +  cudaMalloc( (void**)&dev_b, size ); +  cudaMalloc( (void**)&dev_c, size ); + +  // Allocate CPU/host copies of a, b, c +  a = (int*)malloc( size ); +  b = (int*)malloc( size ); +  c = (int*)malloc( size ); +  +  // Fill input vectors with random integer numbers +  random_ints( a, N ); +  random_ints( b, N ); + +  // copy inputs to device +  cudaMemcpy( dev_a, a, size, cudaMemcpyHostToDevice ); +  cudaMemcpy( dev_b, b, size, cudaMemcpyHostToDevice ); + +  // launch add_gpu() kernel with blocks and threads +  add_gpu<<< N/THREADS_PER_BLOCK, THREADS_PER_BLOCK >>>( dev_a, dev_b, dev_c, N ); + +  // copy device result back to host copy of c +  cudaMemcpy( c, dev_c, size, cudaMemcpyDeviceToHost ); + +  //Check the results with CPU implementation +  int *c_h; c_h = (int*)malloc( size ); +  add_cpu (a, b, c_h, N); +  compare_ints(c, c_h, N); + +  // Clean CPU memory allocations +  free( a ); free( b ); free( c ); free (c_h); + +  // Clean GPU memory allocations +  cudaFree( dev_a ); +  cudaFree( dev_b ); +  cudaFree( dev_c ); + +  return 0; + } This code can be compiled using following command - $ nvcc test.cu -o test_cuda + $ nvcc test.cu -o test_cuda To run the code use interactive PBS session to get access to one of the GPU accelerated nodes - $ qsub -I -q qnvidia -A OPEN-0-0 - $ module load cuda - $ ./test.cuda + $ qsub -I -q qnvidia -A OPEN-0-0 + $ module load cuda + $ ./test.cuda CUDA Libraries -------------- @@ -223,81 +209,81 @@ description of the cuBLAS function can be found in [NVIDIA CUDA documentation](http://docs.nvidia.com/cuda/cublas/index.html#cublas-lt-t-gt-axpy "Nvidia CUDA documentation "). Code can be pasted in the file and compiled without any modification. - /* Includes, system */ - #include <stdio.h> - #include <stdlib.h> + /* Includes, system */ + #include <stdio.h> + #include <stdlib.h> - /* Includes, cuda */ - #include <cuda_runtime.h> - #include <cublas_v2.h> + /* Includes, cuda */ + #include <cuda_runtime.h> + #include <cublas_v2.h> - /* Vector size */ - #define N (32) + /* Vector size */ + #define N (32) - /* Host implementation of a simple version of saxpi */ - void saxpy(int n, float alpha, const float *x, float *y) - { -    for (int i = 0; i < n; ++i) -    y[i] = alpha*x[i] + y[i]; - } + /* Host implementation of a simple version of saxpi */ + void saxpy(int n, float alpha, const float *x, float *y) + { +    for (int i = 0; i < n; ++i) +    y[i] = alpha*x[i] + y[i]; + } - /* Main */ - int main(int argc, char **argv) - { -    float *h_X, *h_Y, *h_Y_ref; -    float *d_X = 0; -    float *d_Y = 0; + /* Main */ + int main(int argc, char **argv) + { +    float *h_X, *h_Y, *h_Y_ref; +    float *d_X = 0; +    float *d_Y = 0; -    const float alpha = 1.0f; -    int i; +    const float alpha = 1.0f; +    int i; -    cublasHandle_t handle; +    cublasHandle_t handle; -    /* Initialize CUBLAS */ -    printf("simpleCUBLAS test running..n"); -    cublasCreate(&handle); +    /* Initialize CUBLAS */ +    printf("simpleCUBLAS test running..n"); +    cublasCreate(&handle); -    /* Allocate host memory for the matrices */ -    h_X = (float *)malloc(N * sizeof(h_X[0])); -    h_Y = (float *)malloc(N * sizeof(h_Y[0])); -    h_Y_ref = (float *)malloc(N * sizeof(h_Y_ref[0])); +    /* Allocate host memory for the matrices */ +    h_X = (float *)malloc(N * sizeof(h_X[0])); +    h_Y = (float *)malloc(N * sizeof(h_Y[0])); +    h_Y_ref = (float *)malloc(N * sizeof(h_Y_ref[0])); -    /* Fill the matrices with test data */ -    for (i = 0; i < N; i++) -    { -        h_X[i] = rand() / (float)RAND_MAX; -        h_Y[i] = rand() / (float)RAND_MAX; -        h_Y_ref[i] = h_Y[i]; -    } +    /* Fill the matrices with test data */ +    for (i = 0; i < N; i++) +    { +        h_X[i] = rand() / (float)RAND_MAX; +        h_Y[i] = rand() / (float)RAND_MAX; +        h_Y_ref[i] = h_Y[i]; +    } -    /* Allocate device memory for the matrices */ -    cudaMalloc((void **)&d_X, N * sizeof(d_X[0])); -    cudaMalloc((void **)&d_Y, N * sizeof(d_Y[0])); +    /* Allocate device memory for the matrices */ +    cudaMalloc((void **)&d_X, N * sizeof(d_X[0])); +    cudaMalloc((void **)&d_Y, N * sizeof(d_Y[0])); -    /* Initialize the device matrices with the host matrices */ -    cublasSetVector(N, sizeof(h_X[0]), h_X, 1, d_X, 1); -    cublasSetVector(N, sizeof(h_Y[0]), h_Y, 1, d_Y, 1); +    /* Initialize the device matrices with the host matrices */ +    cublasSetVector(N, sizeof(h_X[0]), h_X, 1, d_X, 1); +    cublasSetVector(N, sizeof(h_Y[0]), h_Y, 1, d_Y, 1); -    /* Performs operation using plain C code */ -    saxpy(N, alpha, h_X, h_Y_ref); +    /* Performs operation using plain C code */ +    saxpy(N, alpha, h_X, h_Y_ref); -    /* Performs operation using cublas */ -    cublasSaxpy(handle, N, &alpha, d_X, 1, d_Y, 1); +    /* Performs operation using cublas */ +    cublasSaxpy(handle, N, &alpha, d_X, 1, d_Y, 1); -    /* Read the result back */ -    cublasGetVector(N, sizeof(h_Y[0]), d_Y, 1, h_Y, 1); +    /* Read the result back */ +    cublasGetVector(N, sizeof(h_Y[0]), d_Y, 1, h_Y, 1); -    /* Check result against reference */ -    for (i = 0; i < N; ++i) -        printf("CPU res = %f t GPU res = %f t diff = %f n", h_Y_ref[i], h_Y[i], h_Y_ref[i] - h_Y[i]); +    /* Check result against reference */ +    for (i = 0; i < N; ++i) +        printf("CPU res = %f t GPU res = %f t diff = %f n", h_Y_ref[i], h_Y[i], h_Y_ref[i] - h_Y[i]); -    /* Memory clean up */ -    free(h_X); free(h_Y); free(h_Y_ref); -    cudaFree(d_X); cudaFree(d_Y); +    /* Memory clean up */ +    free(h_X); free(h_Y); free(h_Y_ref); +    cudaFree(d_X); cudaFree(d_Y); -    /* Shutdown */ -    cublasDestroy(handle); - } +    /* Shutdown */ +    cublasDestroy(handle); + }  Please note: cuBLAS has its own function for data transfers between CPU and GPU memory: @@ -311,19 +297,16 @@ and GPU memory:  To compile the code using NVCC compiler a "-lcublas" compiler flag has to be specified: - $ module load cuda - $ nvcc -lcublas test_cublas.cu -o test_cublas_nvcc + $ module load cuda + $ nvcc -lcublas test_cublas.cu -o test_cublas_nvcc To compile the same code with GCC: - $ module load cuda - $ gcc -std=c99 test_cublas.c -o test_cublas_icc -lcublas -lcudart + $ module load cuda + $ gcc -std=c99 test_cublas.c -o test_cublas_icc -lcublas -lcudart To compile the same code with Intel compiler: - $ module load cuda intel - $ icc -std=c99 test_cublas.c -o test_cublas_icc -lcublas -lcudart - - - + $ module load cuda intel + $ icc -std=c99 test_cublas.c -o test_cublas_icc -lcublas -lcudart diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/diagnostic-component-team.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/diagnostic-component-team.md index c6c822b5e..7bf179e16 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/diagnostic-component-team.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/diagnostic-component-team.md @@ -1,18 +1,7 @@ Diagnostic component (TEAM) =========================== - - - - - - - - - - - - + ### Access @@ -47,8 +36,6 @@ disease definitions from the lists. Thus, virtual panels can be interactively improved as the knowledge of the disease increases.](fig5.png.1 "fig5.png") - -  *Figure 5. ****Interface of the application. Panels for defining @@ -57,12 +44,6 @@ disease genes or disease definitions from the lists. Thus, virtual panels can be interactively improved as the knowledge of the disease increases.* - * * - - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/overview.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/overview.md index 01bfba863..620f85b1c 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/overview.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/overview.md @@ -1,22 +1,9 @@ Overview ======== - - - - The human NGS data processing solution - - - - - - - - - - + Introduction ------------ @@ -66,7 +53,6 @@ Let’s see each of the OMICS MASTER solution components: Components ---------- - ### Processing This component is composed by a set of programs that carry out quality @@ -109,7 +95,6 @@ quality scores.  *Figure 2.**FASTQ file.** - #### Mapping Component:** Hpg-aligner.** @@ -147,78 +132,21 @@ Table 1. They must be present but their value can be a â€*’>> or a zero (depending on the field) if the corresponding information is unavailable.  - -<table> -<colgroup> <col width="33%" /> <col width="33%" /> <col width="33%" /> -</colgroup> -<tbody> -<tr class="odd"> -<td align="left"><p><strong>No.</strong></p></td> -<td align="left"><p><strong>Name</strong></p></td> -<td align="left"><p><strong>Description</strong></p></td> -</tr> -<tr class="even"> -<td align="left"><p>1</p></td> -<td align="left"><p>QNAME</p></td> -<td align="left"><p>Query NAME of the read or the read pair</p></td> -</tr> -<tr class="odd"> -<td align="left"><p>2</p></td> -<td align="left"><p>FLAG</p></td> -<td align="left"><p>Bitwise FLAG (pairing,strand,mate strand,etc.)</p></td> -</tr> -<tr class="even"> -<td align="left"><p>3</p></td> -<td align="left"><p>RNAME </p></td> -<td align="left"><p>Reference sequence NAME</p></td> -</tr> -<tr class="odd"> -<td align="left"><p>4</p></td> -<td align="left"><p>POS </p></td> -<td align="left"><p>1-Based  leftmost POSition of clipped alignment</p></td> -</tr> -<tr class="even"> -<td align="left"><p>5</p></td> -<td align="left"><p>MAPQ </p></td> -<td align="left"><p>MAPping Quality (Phred-scaled)</p></td> -</tr> -<tr class="odd"> -<td align="left"><p>6</p></td> -<td align="left"><p>CIGAR </p></td> -<td align="left"><p>Extended CIGAR string (operations:MIDNSHP)</p></td> -</tr> -<tr class="even"> -<td align="left"><p>7</p></td> -<td align="left"><p>MRNM </p></td> -<td align="left"><p>Mate REference NaMe ('=' if same RNAME)</p></td> -</tr> -<tr class="odd"> -<td align="left"><p>8</p></td> -<td align="left"><p>MPOS </p></td> -<td align="left"><p>1-Based leftmost Mate POSition</p></td> -</tr> -<tr class="even"> -<td align="left"><p>9</p></td> -<td align="left"><p>ISIZE </p></td> -<td align="left"><p>Inferred Insert SIZE </p></td> -</tr> -<tr class="odd"> -<td align="left"><p>10</p></td> -<td align="left"><p>SEQ </p></td> -<td align="left"><p>Query SEQuence on the same strand as the reference</p></td> -</tr> -<tr class="even"> -<td align="left"><p>11</p></td> -<td align="left"><p>QUAL </p></td> -<td align="left"><p>Query QUALity (ASCII-33=Phred base quality)</p></td> -</tr> -</tbody> -</table> - - + |<strong>No.</strong>\<td align="left"><p><strong>Name</strong>\<td align="left"><p><strong>Description</strong></p> | + |1\<td align="left"><p>QNAME\<td align="left"><p>Query NAME of the read or the read pair</p> | + |2\<td align="left"><p>FLAG\<td align="left"><p>Bitwise FLAG (pairing,strand,mate strand,etc.)</p> | + |3\<td align="left"><p>RNAME \<td align="left"><p>Reference sequence NAME</p> | + |4\<td align="left"><p>POS \<td align="left"><p>1-Based  leftmost POSition of clipped alignment</p> | + |5\<td align="left"><p>MAPQ \<td align="left"><p>MAPping Quality (Phred-scaled)</p> | + |6\<td align="left"><p>CIGAR \<td align="left"><p>Extended CIGAR string (operations:MIDNSHP)</p> | + |7\<td align="left"><p>MRNM \<td align="left"><p>Mate REference NaMe ('=' if same RNAME)</p> | + |8\<td align="left"><p>MPOS \<td align="left"><p>1-Based leftmost Mate POSition</p> | + |9\<td align="left"><p>ISIZE \<td align="left"><p>Inferred Insert SIZE </p> | + |10\<td align="left"><p>SEQ \<td align="left"><p>Query SEQuence on the same strand as the reference</p> | + |11\<td align="left"><p>QUAL \<td align="left"><p>Query QUALity (ASCII-33=Phred base quality)</p> | > @@ -276,10 +204,10 @@ traversed. Component:** Hpg-Fastq & FastQC. Some features: -- Quality control: % reads with N errors, % reads with multiple - mappings, strand bias, paired-end insert, ... -- Filtering: by number of errors, number of hits, … - - Comparator: stats, intersection, ... +- Quality control: % reads with N errors, % reads with multiple + mappings, strand bias, paired-end insert, ... +- Filtering: by number of errors, number of hits, … + - Comparator: stats, intersection, ... Input:** BAM file. @@ -462,20 +390,17 @@ resources. We successfully solved the problem of storing data released in BioPAX format into a SQL relational schema, which allowed us importing Reactome in CellBase. - ### [Diagnostic component (TEAM)](diagnostic-component-team.html) ### [Priorization component (BiERApp)](priorization-component-bierapp.html) - - Usage ----- First of all, we should load ngsPipeline module: - $ module load ngsPipeline + $ module load ngsPipeline This command will load python/2.7.5 module and all the required modules ( @@ -485,29 +410,29 @@ gatk, etc) > If we launch ngsPipeline with â€-h’, we will get the usage help: - $ ngsPipeline -h - Usage: ngsPipeline.py [-h] -i INPUT -o OUTPUT -p PED --project PROJECT --queue -            QUEUE [--stages-path STAGES_PATH] [--email EMAIL] - [--prefix PREFIX] [-s START] [-e END] --log - - Python pipeline - - optional arguments: -  -h, --help       show this help message and exit -  -i INPUT, --input INPUT -  -o OUTPUT, --output OUTPUT -             Output Data directory -  -p PED, --ped PED   Ped file with all individuals -  --project PROJECT   Project Id -  --queue QUEUE     Queue Id -  --stages-path STAGES_PATH -             Custom Stages path -  --email EMAIL     Email -  --prefix PREFIX    Prefix name for Queue Jobs name -  -s START, --start START -             Initial stage -  -e END, --end END   Final stage -  --log         Log to file + $ ngsPipeline -h + Usage: ngsPipeline.py [-h] -i INPUT -o OUTPUT -p PED --project PROJECT --queue +            QUEUE [--stages-path STAGES_PATH] [--email EMAIL] + [--prefix PREFIX] [-s START] [-e END] --log + + Python pipeline + + optional arguments: +  -h, --help       show this help message and exit +  -i INPUT, --input INPUT +  -o OUTPUT, --output OUTPUT +             Output Data directory +  -p PED, --ped PED   Ped file with all individuals +  --project PROJECT   Project Id +  --queue QUEUE     Queue Id +  --stages-path STAGES_PATH +             Custom Stages path +  --email EMAIL     Email +  --prefix PREFIX    Prefix name for Queue Jobs name +  -s START, --start START +             Initial stage +  -e END, --end END   Final stage +  --log         Log to file  @@ -561,34 +486,34 @@ This is an example usage of NGSpipeline: We have a folder with the following structure in > /apps/bio/omics/1.0/sample_data/ >:</span> - /apps/bio/omics/1.0/sample_data - └── data - ├── file.ped - ├── sample1 - │  ├── sample1_1.fq - │  └── sample1_2.fq - └── sample2 - ├── sample2_1.fq - └── sample2_2.fq + /apps/bio/omics/1.0/sample_data + └── data + ├── file.ped + ├── sample1 + │  ├── sample1_1.fq + │  └── sample1_2.fq + └── sample2 + ├── sample2_1.fq + └── sample2_2.fq The ped file ( file.ped) contains the following info:> - #family_ID sample_ID parental_ID maternal_ID sex phenotype - FAM sample_A 0 0 1 1 - FAM sample_B 0 0 2 2 + #family_ID sample_ID parental_ID maternal_ID sex phenotype + FAM sample_A 0 0 1 1 + FAM sample_B 0 0 2 2 Now, lets load the NGSPipeline module and copy the sample data to a [scratch directory](../../storage.html) : - $ module load ngsPipeline - $ mkdir -p /scratch/$USER/omics/results - $ cp -r /apps/bio/omics/1.0/sample_data /scratch/$USER/omics/ + $ module load ngsPipeline + $ mkdir -p /scratch/$USER/omics/results + $ cp -r /apps/bio/omics/1.0/sample_data /scratch/$USER/omics/ Now, we can launch the pipeline (replace OPEN-0-0 with your Project ID) : - $ ngsPipeline -i /scratch/$USER/omics/sample_data/data -o /scratch/$USER/omics/results -p /scratch/$USER/omics/sample_data/data/file.ped --project OPEN-0-0 --queue qprod + $ ngsPipeline -i /scratch/$USER/omics/sample_data/data -o /scratch/$USER/omics/results -p /scratch/$USER/omics/sample_data/data/file.ped --project OPEN-0-0 --queue qprod This command submits the processing [jobs to the queue](../../resource-allocation-and-job-execution/job-submission-and-execution.html). @@ -596,94 +521,86 @@ queue](../../resource-allocation-and-job-execution/job-submission-and-execution. If we want to re-launch the pipeline from stage 4 until stage 20 we should use the next command: - $ ngsPipeline -i /scratch/$USER/omics/sample_data/data -o /scratch/$USER/omics/results -p /scratch/$USER/omics/sample_data/data/file.ped -s 4 -e 20 --project OPEN-0-0 --queue qprod + $ ngsPipeline -i /scratch/$USER/omics/sample_data/data -o /scratch/$USER/omics/results -p /scratch/$USER/omics/sample_data/data/file.ped -s 4 -e 20 --project OPEN-0-0 --queue qprod >Details on the pipeline ------------------------------------ >The pipeline calls the following tools: -- >[fastqc](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), - a> quality control tool for high throughput - sequence data. -- >[gatk](https://www.broadinstitute.org/gatk/), >The - Genome Analysis Toolkit or GATK is a software package developed at - the Broad Institute to analyze high-throughput sequencing data. The - toolkit offers a wide variety of tools, with a primary focus on - variant discovery and genotyping as well as strong emphasis on data - quality assurance. Its robust architecture, powerful processing - engine and high-performance computing features make it capable of - taking on projects of any size. -- >[hpg-aligner](http://wiki.opencb.org/projects/hpg/doku.php?id=aligner:downloads), >HPG - Aligner has been designed to align short and long reads with high - sensitivity, therefore any number of mismatches or indels - are allowed. HPG Aligner implements and combines two well known - algorithms: *Burrows-Wheeler Transform*> (BWT) to - speed-up mapping high-quality reads, - and *Smith-Waterman*> (SW) to increase sensitivity when - reads cannot be mapped using BWT. -- >[hpg-fastq](http://docs.bioinfo.cipf.es/projects/fastqhpc/wiki), > a - quality control tool for high throughput - sequence data. -- >>[hpg-variant](http://wiki.opencb.org/projects/hpg/doku.php?id=variant:downloads), <span>The - HPG Variant suite is an ambitious project aimed to provide a - complete suite of tools to work with genomic variation data, from - VCF tools to variant profiling or genomic statistics. It is being - implemented using High Performance Computing technologies to provide - the best performance possible.</span> -- >>[picard](http://picard.sourceforge.net/), <span>Picard - comprises Java-based command-line utilities that manipulate SAM - files, and a Java API (HTSJDK) for creating new programs that read - and write SAM files. Both SAM text format and SAM binary (BAM) - format are supported.</span> -- >>[samtools](http://samtools.sourceforge.net/samtools-c.shtml), <span>SAM - Tools provide various utilities for manipulating alignments in the - SAM format, including sorting, merging, indexing and generating - alignments in a - per-position format.</span> -- >><span>[snpEff](http://snpeff.sourceforge.net/), <span>Genetic - variant annotation and effect - prediction toolbox.</span></span> - - - - +- >[fastqc](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/), + a> quality control tool for high throughput + sequence data. +- >[gatk](https://www.broadinstitute.org/gatk/), >The + Genome Analysis Toolkit or GATK is a software package developed at + the Broad Institute to analyze high-throughput sequencing data. The + toolkit offers a wide variety of tools, with a primary focus on + variant discovery and genotyping as well as strong emphasis on data + quality assurance. Its robust architecture, powerful processing + engine and high-performance computing features make it capable of + taking on projects of any size. +- >[hpg-aligner](http://wiki.opencb.org/projects/hpg/doku.php?id=aligner:downloads), >HPG + Aligner has been designed to align short and long reads with high + sensitivity, therefore any number of mismatches or indels + are allowed. HPG Aligner implements and combines two well known + algorithms: *Burrows-Wheeler Transform*> (BWT) to + speed-up mapping high-quality reads, + and *Smith-Waterman*> (SW) to increase sensitivity when + reads cannot be mapped using BWT. +- >[hpg-fastq](http://docs.bioinfo.cipf.es/projects/fastqhpc/wiki), > a + quality control tool for high throughput + sequence data. +- >>[hpg-variant](http://wiki.opencb.org/projects/hpg/doku.php?id=variant:downloads), <span>The + HPG Variant suite is an ambitious project aimed to provide a + complete suite of tools to work with genomic variation data, from + VCF tools to variant profiling or genomic statistics. It is being + implemented using High Performance Computing technologies to provide + the best performance possible.</span> +- >>[picard](http://picard.sourceforge.net/), <span>Picard + comprises Java-based command-line utilities that manipulate SAM + files, and a Java API (HTSJDK) for creating new programs that read + and write SAM files. Both SAM text format and SAM binary (BAM) + format are supported.</span> +- >>[samtools](http://samtools.sourceforge.net/samtools-c.shtml), <span>SAM + Tools provide various utilities for manipulating alignments in the + SAM format, including sorting, merging, indexing and generating + alignments in a + per-position format.</span> +- >><span>[snpEff](http://snpeff.sourceforge.net/), <span>Genetic + variant annotation and effect + prediction toolbox.</span></span> This listing show which tools are used in each step of the pipeline : - - - - -- >stage-00: fastqc -- >stage-01: hpg_fastq -- >stage-02: fastqc -- >stage-03: hpg_aligner and samtools -- >stage-04: samtools -- >stage-05: samtools -- >stage-06: fastqc -- >stage-07: picard -- >stage-08: fastqc -- >stage-09: picard -- >stage-10: gatk -- >stage-11: gatk -- >stage-12: gatk -- >stage-13: gatk -- >stage-14: gatk -- >stage-15: gatk -- >stage-16: samtools -- >stage-17: samtools -- >stage-18: fastqc -- >stage-19: gatk -- >stage-20: gatk -- >stage-21: gatk -- >stage-22: gatk -- >stage-23: gatk -- >stage-24: hpg-variant -- >stage-25: hpg-variant -- >stage-26: snpEff -- >stage-27: snpEff -- >stage-28: hpg-variant +- >stage-00: fastqc +- >stage-01: hpg_fastq +- >stage-02: fastqc +- >stage-03: hpg_aligner and samtools +- >stage-04: samtools +- >stage-05: samtools +- >stage-06: fastqc +- >stage-07: picard +- >stage-08: fastqc +- >stage-09: picard +- >stage-10: gatk +- >stage-11: gatk +- >stage-12: gatk +- >stage-13: gatk +- >stage-14: gatk +- >stage-15: gatk +- >stage-16: samtools +- >stage-17: samtools +- >stage-18: fastqc +- >stage-19: gatk +- >stage-20: gatk +- >stage-21: gatk +- >stage-22: gatk +- >stage-23: gatk +- >stage-24: hpg-variant +- >stage-25: hpg-variant +- >stage-26: snpEff +- >stage-27: snpEff +- >stage-28: hpg-variant >Interpretation --------------------------- @@ -774,150 +691,143 @@ associated to the phenotype: large intestine tumor.*** > - >References ----------------------- -1. class="discreet">Heng Li, Bob Handsaker, Alec Wysoker, Tim - Fennell, Jue Ruan, Nils Homer, Gabor Marth5, Goncalo Abecasis6, - Richard Durbin and 1000 Genome Project Data Processing Subgroup: The - Sequence Alignment/Map format and SAMtools. Bioinformatics 2009, - 25: 2078-2079. -2. class="discreet">>McKenna A, Hanna M, Banks E, Sivachenko - A, Cibulskis K, Kernytsky A, Garimella K, Altshuler D, Gabriel S, - Daly M, DePristo MA: The Genome Analysis Toolkit: a MapReduce - framework for analyzing next-generation DNA sequencing data. - *Genome Res* >2010, 20:1297-1303.</span> -3. class="discreet">Petr Danecek, Adam Auton, Goncalo Abecasis, - Cornelis A. Albers, Eric Banks, Mark A. DePristo, Robert E. - Handsaker, Gerton Lunter, Gabor T. Marth, Stephen T. Sherry, Gilean - McVean, Richard Durbin, and 1000 Genomes Project Analysis Group. The - variant call format and VCFtools. Bioinformatics 2011, - 27: 2156-2158. -4. class="discreet">Medina I, De Maria A, Bleda M, Salavert F, - Alonso R, Gonzalez CY, Dopazo J: VARIANT: Command Line, Web service - and Web interface for fast and accurate functional characterization - of variants found by Next-Generation Sequencing. Nucleic Acids Res - 2012, 40:W54-58. -5. class="discreet">Bleda M, Tarraga J, de Maria A, Salavert F, - Garcia-Alonso L, Celma M, Martin A, Dopazo J, Medina I: CellBase, a - comprehensive collection of RESTful web services for retrieving - relevant biological information from heterogeneous sources. Nucleic - Acids Res 2012, 40:W609-614. -6. class="discreet">Flicek,P., Amode,M.R., Barrell,D., Beal,K., - Brent,S., Carvalho-Silva,D., Clapham,P., Coates,G., - Fairley,S., Fitzgerald,S. et al. (2012) Ensembl 2012. Nucleic Acids - Res., 40, D84–D90. -7. class="discreet">UniProt Consortium. (2012) Reorganizing the - protein space at the Universal Protein Resource (UniProt). Nucleic - Acids Res., 40, D71–D75. -8. class="discreet">Kozomara,A. and Griffiths-Jones,S. (2011) - miRBase: integrating microRNA annotation and deep-sequencing data. - Nucleic Acids Res., 39, D152–D157. -9. class="discreet">Xiao,F., Zuo,Z., Cai,G., Kang,S., Gao,X. - and Li,T. (2009) miRecords: an integrated resource for - microRNA-target interactions. Nucleic Acids Res., - 37, D105–D110. +1. class="discreet">Heng Li, Bob Handsaker, Alec Wysoker, Tim + Fennell, Jue Ruan, Nils Homer, Gabor Marth5, Goncalo Abecasis6, + Richard Durbin and 1000 Genome Project Data Processing Subgroup: The + Sequence Alignment/Map format and SAMtools. Bioinformatics 2009, + 25: 2078-2079. +2. class="discreet">>McKenna A, Hanna M, Banks E, Sivachenko + A, Cibulskis K, Kernytsky A, Garimella K, Altshuler D, Gabriel S, + Daly M, DePristo MA: The Genome Analysis Toolkit: a MapReduce + framework for analyzing next-generation DNA sequencing data. + *Genome Res* >2010, 20:1297-1303.</span> +3. class="discreet">Petr Danecek, Adam Auton, Goncalo Abecasis, + Cornelis A. Albers, Eric Banks, Mark A. DePristo, Robert E. + Handsaker, Gerton Lunter, Gabor T. Marth, Stephen T. Sherry, Gilean + McVean, Richard Durbin, and 1000 Genomes Project Analysis Group. The + variant call format and VCFtools. Bioinformatics 2011, + 27: 2156-2158. +4. class="discreet">Medina I, De Maria A, Bleda M, Salavert F, + Alonso R, Gonzalez CY, Dopazo J: VARIANT: Command Line, Web service + and Web interface for fast and accurate functional characterization + of variants found by Next-Generation Sequencing. Nucleic Acids Res + 2012, 40:W54-58. +5. class="discreet">Bleda M, Tarraga J, de Maria A, Salavert F, + Garcia-Alonso L, Celma M, Martin A, Dopazo J, Medina I: CellBase, a + comprehensive collection of RESTful web services for retrieving + relevant biological information from heterogeneous sources. Nucleic + Acids Res 2012, 40:W609-614. +6. class="discreet">Flicek,P., Amode,M.R., Barrell,D., Beal,K., + Brent,S., Carvalho-Silva,D., Clapham,P., Coates,G., + Fairley,S., Fitzgerald,S. et al. (2012) Ensembl 2012. Nucleic Acids + Res., 40, D84–D90. +7. class="discreet">UniProt Consortium. (2012) Reorganizing the + protein space at the Universal Protein Resource (UniProt). Nucleic + Acids Res., 40, D71–D75. +8. class="discreet">Kozomara,A. and Griffiths-Jones,S. (2011) + miRBase: integrating microRNA annotation and deep-sequencing data. + Nucleic Acids Res., 39, D152–D157. +9. class="discreet">Xiao,F., Zuo,Z., Cai,G., Kang,S., Gao,X. + and Li,T. (2009) miRecords: an integrated resource for + microRNA-target interactions. Nucleic Acids Res., + 37, D105–D110. 10. class="discreet">Hsu,S.D., Lin,F.M., Wu,W.Y., Liang,C., - Huang,W.C., Chan,W.L., Tsai,W.T., Chen,G.Z., Lee,C.J., Chiu,C.M. - et al. (2011) miRTarBase: a database curates experimentally - validated microRNA-target interactions. Nucleic Acids Res., - 39, D163–D169. + Huang,W.C., Chan,W.L., Tsai,W.T., Chen,G.Z., Lee,C.J., Chiu,C.M. + et al. (2011) miRTarBase: a database curates experimentally + validated microRNA-target interactions. Nucleic Acids Res., + 39, D163–D169. 11. class="discreet">Friedman,R.C., Farh,K.K., Burge,C.B. - and Bartel,D.P. (2009) Most mammalian mRNAs are conserved targets - of microRNAs. Genome Res., 19, 92–105. + and Bartel,D.P. (2009) Most mammalian mRNAs are conserved targets + of microRNAs. Genome Res., 19, 92–105. 12. class="discreet">Betel,D., Wilson,M., Gabow,A., Marks,D.S. - and Sander,C. (2008) The microRNA.org resource: targets - and expression. Nucleic Acids Res., 36, D149–D153. + and Sander,C. (2008) The microRNA.org resource: targets + and expression. Nucleic Acids Res., 36, D149–D153. 13. class="discreet">Dreszer,T.R., Karolchik,D., Zweig,A.S., - Hinrichs,A.S., Raney,B.J., Kuhn,R.M., Meyer,L.R., Wong,M., - Sloan,C.A., Rosenbloom,K.R. et al. (2012) The UCSC genome browser - database: extensions and updates 2011. Nucleic Acids Res., - 40, D918–D923. + Hinrichs,A.S., Raney,B.J., Kuhn,R.M., Meyer,L.R., Wong,M., + Sloan,C.A., Rosenbloom,K.R. et al. (2012) The UCSC genome browser + database: extensions and updates 2011. Nucleic Acids Res., + 40, D918–D923. 14. class="discreet">Smith,B., Ashburner,M., Rosse,C., Bard,J., - Bug,W., Ceusters,W., Goldberg,L.J., Eilbeck,K., - Ireland,A., Mungall,C.J. et al. (2007) The OBO Foundry: coordinated - evolution of ontologies to support biomedical data integration. Nat. - Biotechnol., 25, 1251–1255. + Bug,W., Ceusters,W., Goldberg,L.J., Eilbeck,K., + Ireland,A., Mungall,C.J. et al. (2007) The OBO Foundry: coordinated + evolution of ontologies to support biomedical data integration. Nat. + Biotechnol., 25, 1251–1255. 15. class="discreet">Hunter,S., Jones,P., Mitchell,A., - Apweiler,R., Attwood,T.K.,Bateman,A., Bernard,T., Binns,D., - Bork,P., Burge,S. et al. (2012) InterPro in 2011: new developments - in the family and domain prediction database. Nucleic Acids Res., - 40, D306–D312. + Apweiler,R., Attwood,T.K.,Bateman,A., Bernard,T., Binns,D., + Bork,P., Burge,S. et al. (2012) InterPro in 2011: new developments + in the family and domain prediction database. Nucleic Acids Res., + 40, D306–D312. 16. class="discreet">Sherry,S.T., Ward,M.H., Kholodov,M., - Baker,J., Phan,L., Smigielski,E.M. and Sirotkin,K. (2001) dbSNP: the - NCBI database of genetic variation. Nucleic Acids Res., - 29, 308–311. + Baker,J., Phan,L., Smigielski,E.M. and Sirotkin,K. (2001) dbSNP: the + NCBI database of genetic variation. Nucleic Acids Res., + 29, 308–311. 17. class="discreet">Altshuler,D.M., Gibbs,R.A., Peltonen,L., - Dermitzakis,E., Schaffner,S.F., Yu,F., Bonnen,P.E., de Bakker,P.I., - Deloukas,P., Gabriel,S.B. et al. (2010) Integrating common and rare - genetic variation in diverse human populations. Nature, - 467, 52–58. + Dermitzakis,E., Schaffner,S.F., Yu,F., Bonnen,P.E., de Bakker,P.I., + Deloukas,P., Gabriel,S.B. et al. (2010) Integrating common and rare + genetic variation in diverse human populations. Nature, + 467, 52–58. 18. class="discreet">1000 Genomes Project Consortium. (2010) A map - of human genome variation from population-scale sequencing. Nature, - 467, 1061–1073. + of human genome variation from population-scale sequencing. Nature, + 467, 1061–1073. 19. class="discreet">Hindorff,L.A., Sethupathy,P., Junkins,H.A., - Ramos,E.M., Mehta,J.P., Collins,F.S. and Manolio,T.A. (2009) - Potential etiologic and functional implications of genome-wide - association loci for human diseases and traits. Proc. Natl Acad. - Sci. USA, 106, 9362–9367. + Ramos,E.M., Mehta,J.P., Collins,F.S. and Manolio,T.A. (2009) + Potential etiologic and functional implications of genome-wide + association loci for human diseases and traits. Proc. Natl Acad. + Sci. USA, 106, 9362–9367. 20. class="discreet">Stenson,P.D., Ball,E.V., Mort,M., - Phillips,A.D., Shiel,J.A., Thomas,N.S., Abeysinghe,S., Krawczak,M. - and Cooper,D.N. (2003) Human gene mutation database (HGMD): - 2003 update. Hum. Mutat., 21, 577–581. + Phillips,A.D., Shiel,J.A., Thomas,N.S., Abeysinghe,S., Krawczak,M. + and Cooper,D.N. (2003) Human gene mutation database (HGMD): + 2003 update. Hum. Mutat., 21, 577–581. 21. class="discreet">Johnson,A.D. and O’Donnell,C.J. (2009) An - open access database of genome-wide association results. BMC Med. - Genet, 10, 6. + open access database of genome-wide association results. BMC Med. + Genet, 10, 6. 22. class="discreet">McKusick,V. (1998) A Catalog of Human Genes - and Genetic Disorders, 12th edn. John Hopkins University - Press,Baltimore, MD. + and Genetic Disorders, 12th edn. John Hopkins University + Press,Baltimore, MD. 23. class="discreet">Forbes,S.A., Bindal,N., Bamford,S., Cole,C., - Kok,C.Y., Beare,D., Jia,M., Shepherd,R., Leung,K., Menzies,A. et al. - (2011) COSMIC: mining complete cancer genomes in the catalogue of - somatic mutations in cancer. Nucleic Acids Res., - 39, D945–D950. + Kok,C.Y., Beare,D., Jia,M., Shepherd,R., Leung,K., Menzies,A. et al. + (2011) COSMIC: mining complete cancer genomes in the catalogue of + somatic mutations in cancer. Nucleic Acids Res., + 39, D945–D950. 24. class="discreet">Kerrien,S., Aranda,B., Breuza,L., Bridge,A., - Broackes-Carter,F., Chen,C., Duesbury,M., Dumousseau,M., - Feuermann,M., Hinz,U. et al. (2012) The Intact molecular interaction - database in 2012. Nucleic Acids Res., 40, D841–D846. + Broackes-Carter,F., Chen,C., Duesbury,M., Dumousseau,M., + Feuermann,M., Hinz,U. et al. (2012) The Intact molecular interaction + database in 2012. Nucleic Acids Res., 40, D841–D846. 25. class="discreet">Croft,D., O’Kelly,G., Wu,G., Haw,R., - Gillespie,M., Matthews,L., Caudy,M., Garapati,P., - Gopinath,G., Jassal,B. et al. (2011) Reactome: a database of - reactions, pathways and biological processes. Nucleic Acids Res., - 39, D691–D697. + Gillespie,M., Matthews,L., Caudy,M., Garapati,P., + Gopinath,G., Jassal,B. et al. (2011) Reactome: a database of + reactions, pathways and biological processes. Nucleic Acids Res., + 39, D691–D697. 26. class="discreet">Demir,E., Cary,M.P., Paley,S., Fukuda,K., - Lemer,C., Vastrik,I.,Wu,G., D’Eustachio,P., Schaefer,C., Luciano,J. - et al. (2010) The BioPAX community standard for pathway - data sharing. Nature Biotechnol., 28, 935–942. + Lemer,C., Vastrik,I.,Wu,G., D’Eustachio,P., Schaefer,C., Luciano,J. + et al. (2010) The BioPAX community standard for pathway + data sharing. Nature Biotechnol., 28, 935–942. 27. class="discreet">Alemán Z, GarcĂa-GarcĂa F, Medina I, Dopazo J - (2014): A web tool for the design and management of panels of genes - for targeted enrichment and massive sequencing for - clinical applications. Nucleic Acids Res 42: W83-7. + (2014): A web tool for the design and management of panels of genes + for targeted enrichment and massive sequencing for + clinical applications. Nucleic Acids Res 42: W83-7. 28. class="discreet">[Alemán - A](http://www.ncbi.nlm.nih.gov/pubmed?term=Alem%C3%A1n%20A%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Garcia-Garcia - F](http://www.ncbi.nlm.nih.gov/pubmed?term=Garcia-Garcia%20F%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Salavert - F](http://www.ncbi.nlm.nih.gov/pubmed?term=Salavert%20F%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Medina - I](http://www.ncbi.nlm.nih.gov/pubmed?term=Medina%20I%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Dopazo - J](http://www.ncbi.nlm.nih.gov/pubmed?term=Dopazo%20J%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)> (2014). - A web-based interactive framework to assist in the prioritization of - disease candidate genes in whole-exome sequencing studies. - [Nucleic - Acids Res.](http://www.ncbi.nlm.nih.gov/pubmed/?term=BiERapp "Nucleic acids research.")>42 :W88-93. + A](http://www.ncbi.nlm.nih.gov/pubmed?term=Alem%C3%A1n%20A%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Garcia-Garcia + F](http://www.ncbi.nlm.nih.gov/pubmed?term=Garcia-Garcia%20F%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Salavert + F](http://www.ncbi.nlm.nih.gov/pubmed?term=Salavert%20F%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Medina + I](http://www.ncbi.nlm.nih.gov/pubmed?term=Medina%20I%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)>, [Dopazo + J](http://www.ncbi.nlm.nih.gov/pubmed?term=Dopazo%20J%5BAuthor%5D&cauthor=true&cauthor_uid=24803668)> (2014). + A web-based interactive framework to assist in the prioritization of + disease candidate genes in whole-exome sequencing studies. + [Nucleic + Acids Res.](http://www.ncbi.nlm.nih.gov/pubmed/?term=BiERapp "Nucleic acids research.")>42 :W88-93. 29. class="discreet">Landrum,M.J., Lee,J.M., Riley,G.R., Jang,W., - Rubinstein,W.S., Church,D.M. and Maglott,D.R. (2014) ClinVar: public - archive of relationships among sequence variation and - human phenotype. Nucleic Acids Res., 42, D980–D985. + Rubinstein,W.S., Church,D.M. and Maglott,D.R. (2014) ClinVar: public + archive of relationships among sequence variation and + human phenotype. Nucleic Acids Res., 42, D980–D985. 30. class="discreet">Medina I, Salavert F, Sanchez R, de Maria A, - Alonso R, Escobar P, Bleda M, Dopazo J: Genome Maps, a new - generation genome browser. Nucleic Acids Res 2013, 41:W41-46. + Alonso R, Escobar P, Bleda M, Dopazo J: Genome Maps, a new + generation genome browser. Nucleic Acids Res 2013, 41:W41-46.  > - - - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/priorization-component-bierapp.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/priorization-component-bierapp.md index 98064e062..d24249aae 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/priorization-component-bierapp.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/priorization-component-bierapp.md @@ -1,15 +1,6 @@ Priorization component (BiERApp) ================================ - - - - - - - - - ### Access BiERApp is available at the following address @@ -22,8 +13,6 @@ via [VPN. ](../../accessing-the-cluster/vpn-access.html) ### >This tool is aimed to discover new disease genes or variants by studying affected families or cases and controls. It carries out a filtering process to sequentially remove: (i) variants which are not no compatible with the disease because are not expected to have impact on the protein function; (ii) variants that exist at frequencies incompatible with the disease; (iii) variants that do not segregate with the disease. The result is a reduced set of disease gene candidates that should be further validated experimentally. - - BiERapp >(28) efficiently helps in the identification of causative variants in family and sporadic genetic diseases. The program reads lists of predicted variants (nucleotide substitutions and indels) @@ -51,6 +40,3 @@ prioritization with the filters available. The tool includes a genomic viewer (Genome Maps >30) that enables the representation of the variants in the corresponding genomic coordinates.* - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/openfoam.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/openfoam.md index 81b564144..7c99083bd 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/openfoam.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/openfoam.md @@ -1,22 +1,9 @@ OpenFOAM ======== - - - - A free, open source CFD software package - - - - - - - - - - + Introduction** ---------------- @@ -49,32 +36,29 @@ Naming convection of the installed versions is following: >  openfoam/<>VERSION>>-<</span><span>COMPILER</span><span>>-<</span><span>openmpiVERSION</span><span>>-<</span><span>PRECISION</span><span>></span> -- ><>VERSION<span>> - version of - openfoam -- ><>COMPILER> - version of used - compiler -- ><>openmpiVERSION> - version of used - openmpi/impi -- ><>PRECISION> - DP/<span>SP – - double/single precision +- ><>VERSION<span>> - version of + openfoam +- ><>COMPILER> - version of used + compiler +- ><>openmpiVERSION> - version of used + openmpi/impi +- ><>PRECISION> - DP/<span>SP – + double/single precision ###Available OpenFOAM modules** To check available modules use - - $ module avail - - + $ module avail In /opt/modules/modulefiles/engineering you can see installed engineering softwares: - ------------------------------------ /opt/modules/modulefiles/engineering ------------------------------------------------------------- - ansys/14.5.x              matlab/R2013a-COM                               openfoam/2.2.1-icc-impi4.1.1.036-DP - comsol/43b-COM            matlab/R2013a-EDU                               openfoam/2.2.1-icc-openmpi1.6.5-DP - comsol/43b-EDU            openfoam/2.2.1-gcc481-openmpi1.6.5-DP           paraview/4.0.1-gcc481-bullxmpi1.2.4.1-osmesa10.0 - lsdyna/7.x.x              openfoam/2.2.1-gcc481-openmpi1.6.5-SP + ------------------------------------ /opt/modules/modulefiles/engineering ------------------------------------------------------------- + ansys/14.5.x              matlab/R2013a-COM                               openfoam/2.2.1-icc-impi4.1.1.036-DP + comsol/43b-COM            matlab/R2013a-EDU                               openfoam/2.2.1-icc-openmpi1.6.5-DP + comsol/43b-EDU            openfoam/2.2.1-gcc481-openmpi1.6.5-DP           paraview/4.0.1-gcc481-bullxmpi1.2.4.1-osmesa10.0 + lsdyna/7.x.x              openfoam/2.2.1-gcc481-openmpi1.6.5-SP For information how to use modules please [look here](../environment-and-modules.html "Environment and Modules "). @@ -84,9 +68,9 @@ Getting Started** To create OpenFOAM environment on ANSELM give the commands: - $ module load openfoam/2.2.1-icc-openmpi1.6.5-DP + $ module load openfoam/2.2.1-icc-openmpi1.6.5-DP - $ source $FOAM_BASHRC + $ source $FOAM_BASHRC Pleas load correct module with your requirements “compiler - GCC/ICC, precision - DP/SP”. @@ -95,32 +79,22 @@ Create a project directory within the $HOME/OpenFOAM directory named ><USER>-<OFversion> and create a directory named run within it, e.g. by typing: - - $ mkdir -p $FOAM_RUN - - + $ mkdir -p $FOAM_RUN Project directory is now available by typing: - - $ cd /home/<USER>/OpenFOAM/<USER>-<OFversion>/run + $ cd /home/<USER>/OpenFOAM/<USER>-<OFversion>/run <OFversion> - for example <2.2.1> or - - $ cd $FOAM_RUN - - + $ cd $FOAM_RUN Copy the tutorial examples directory in the OpenFOAM distribution to the run directory: - - $ cp -r $FOAM_TUTORIALS $FOAM_RUN - - + $ cp -r $FOAM_TUTORIALS $FOAM_RUN Now you can run the first case for example incompressible laminar flow in a cavity. @@ -128,225 +102,160 @@ in a cavity. Running Serial Applications** ------------------------------- - >Create a Bash script >test.sh - - - > > - #!/bin/bash - module load openfoam/2.2.1-icc-openmpi1.6.5-DP - source $FOAM_BASHRC + #!/bin/bash + module load openfoam/2.2.1-icc-openmpi1.6.5-DP + source $FOAM_BASHRC - # source to run functions - . $WM_PROJECT_DIR/bin/tools/RunFunctions + # source to run functions + . $WM_PROJECT_DIR/bin/tools/RunFunctions - cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity + cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity - runApplication blockMesh - runApplication icoFoam + runApplication blockMesh + runApplication icoFoam > - - > - - >Job submission - > - $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16,walltime=03:00:00 test.sh + $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16,walltime=03:00:00 test.sh > - - > For information about job submission please [look here](../resource-allocation-and-job-execution/job-submission-and-execution.html "Job submission"). >Running applications in parallel** ------------------------------------------------- - >Run the second case for example external incompressible turbulent flow - case - motorBike. - - - >First we must run serial application bockMesh and decomposePar for preparation of parallel computation. - - - > - - - >Create a Bash scrip test.sh: - > - #!/bin/bash - module load openfoam/2.2.1-icc-openmpi1.6.5-DP - source $FOAM_BASHRC + #!/bin/bash + module load openfoam/2.2.1-icc-openmpi1.6.5-DP + source $FOAM_BASHRC - # source to run functions - . $WM_PROJECT_DIR/bin/tools/RunFunctions + # source to run functions + . $WM_PROJECT_DIR/bin/tools/RunFunctions - cd $FOAM_RUN/tutorials/incompressible/simpleFoam/motorBike - - runApplication blockMesh - runApplication decomposePar + cd $FOAM_RUN/tutorials/incompressible/simpleFoam/motorBike + runApplication blockMesh + runApplication decomposePar > - - - > - - >Job submission - > - $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16,walltime=03:00:00 test.sh + $ qsub -A OPEN-0-0 -q qprod -l select=1:ncpus=16,walltime=03:00:00 test.sh > - - >>This job create simple block mesh and domain decomposition. Check your decomposition, and submit parallel computation: >>Create a PBS script<span> testParallel.pbs:</span> - > - #!/bin/bash - #PBS -N motorBike - #PBS -l select=2:ncpus=16 - #PBS -l walltime=01:00:00 - #PBS -q qprod - #PBS -A OPEN-0-0 + #!/bin/bash + #PBS -N motorBike + #PBS -l select=2:ncpus=16 + #PBS -l walltime=01:00:00 + #PBS -q qprod + #PBS -A OPEN-0-0 - module load openfoam/2.2.1-icc-openmpi1.6.5-DP - source $FOAM_BASHRC + module load openfoam/2.2.1-icc-openmpi1.6.5-DP + source $FOAM_BASHRC - cd $FOAM_RUN/tutorials/incompressible/simpleFoam/motorBike + cd $FOAM_RUN/tutorials/incompressible/simpleFoam/motorBike - nproc = 32 + nproc = 32 - mpirun -hostfile ${PBS_NODEFILE} -np $nproc snappyHexMesh -overwrite -parallel | tee snappyHexMesh.log + mpirun -hostfile ${PBS_NODEFILE} -np $nproc snappyHexMesh -overwrite -parallel | tee snappyHexMesh.log - mpirun -hostfile ${PBS_NODEFILE} -np $nproc potentialFoam -noFunctionObject-writep -parallel | tee potentialFoam.log + mpirun -hostfile ${PBS_NODEFILE} -np $nproc potentialFoam -noFunctionObject-writep -parallel | tee potentialFoam.log - mpirun -hostfile ${PBS_NODEFILE} -np $nproc simpleFoam -parallel | tee simpleFoam.log + mpirun -hostfile ${PBS_NODEFILE} -np $nproc simpleFoam -parallel | tee simpleFoam.log > - - >nproc – number of subdomains >Job submission - > - $ qsub testParallel.pbs + $ qsub testParallel.pbs > - - >Compile your own solver** ---------------------------------------- >Initialize OpenFOAM environment before compiling your solver - - > - $ module load openfoam/2.2.1-icc-openmpi1.6.5-DP - $ source $FOAM_BASHRC - $ cd $FOAM_RUN/ + $ module load openfoam/2.2.1-icc-openmpi1.6.5-DP + $ source $FOAM_BASHRC + $ cd $FOAM_RUN/ >Create directory applications/solvers in user directory - - - > - $ mkdir -p applications/solvers - $ cd applications/solvers + $ mkdir -p applications/solvers + $ cd applications/solvers > - - >Copy icoFoam solver’s source files - > - $ cp -r $FOAM_SOLVERS/incompressible/icoFoam/ My_icoFoam - $ cd My_icoFoam - - - - - + $ cp -r $FOAM_SOLVERS/incompressible/icoFoam/ My_icoFoam + $ cd My_icoFoam >Rename icoFoam.C to My_icoFOAM.C - > - $ mv icoFoam.C My_icoFoam.C + $ mv icoFoam.C My_icoFoam.C > - - >Edit >*files* file in *Make* directory: - > - icoFoam.C - EXE = $(FOAM_APPBIN)/icoFoam - - - - + icoFoam.C + EXE = $(FOAM_APPBIN)/icoFoam >and change to: - - - My_icoFoam.C - EXE = $(FOAM_USER_APPBIN)/My_icoFoam + My_icoFoam.C + EXE = $(FOAM_USER_APPBIN)/My_icoFoam > - - >In directory My_icoFoam give the compilation command: - > - $ wmake - - + $ wmake ------------------------------------------------------------------------ @@ -358,8 +267,3 @@ testParallel.pbs:</span>  - - - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/operating-system.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/operating-system.md index d20265f4e..af15c0507 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/operating-system.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/operating-system.md @@ -1,22 +1,9 @@ Operating System ================ - - - - The operating system, deployed on ANSELM - - - - - - - - - - + The operating system on Anselm is Linux - bullx Linux Server release 6.3. @@ -24,6 +11,3 @@ The operating system on Anselm is Linux - bullx Linux Server release bullx Linux is based on Red Hat Enterprise Linux. bullx Linux is a Linux distribution provided by Bull and dedicated to HPC applications. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/software/paraview.md b/converted/docs.it4i.cz/anselm-cluster-documentation/software/paraview.md index e0888d8fa..7aafe20e7 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/software/paraview.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/software/paraview.md @@ -1,23 +1,10 @@ ParaView ======== - - - - An open-source, multi-platform data analysis and visualization application - - - - - - - - - - + Introduction ------------ @@ -57,7 +44,7 @@ your version must match the version number installed on Anselm** ! To launch the server, you must first allocate compute nodes, for example :> - $ qsub -I -q qprod -A OPEN-0-0 -l select=2 + $ qsub -I -q qprod -A OPEN-0-0 -l select=2 to launch an interactive session on 2 nodes. Refer to [Resource Allocation and Job @@ -66,15 +53,15 @@ for details. After the interactive session is opened, load the ParaView module : - $ module add paraview + $ module add paraview Now launch the parallel server, with number of nodes times 16 processes : - $ mpirun -np 32 pvserver --use-offscreen-rendering - Waiting for client... - Connection URL: cs://cn77:11111 - Accepting connection(s): cn77:11111 + $ mpirun -np 32 pvserver --use-offscreen-rendering + Waiting for client... + Connection URL: cs://cn77:11111 + Accepting connection(s): cn77:11111  Note the that the server is listening on compute node cn77 in this case, we shall use this information later. @@ -87,7 +74,7 @@ number on your PC to be forwarded to ParaView server, for example 12345. If your PC is running Linux, use this command to estabilish a SSH tunnel : - ssh -TN -L 12345:cn77:11111 username@anselm.it4i.cz + ssh -TN -L 12345:cn77:11111 username@anselm.it4i.cz replace username with your login and cn77 with the name of compute node your ParaView server is running on (see @@ -115,7 +102,7 @@ click Connect to connect to the ParaView server. In your terminal where you have interactive session with ParaView server launched, you should see : - Client connected. + Client connected. You can now use Parallel ParaView. @@ -132,6 +119,3 @@ Currently, GPU acceleration is not supported in the server and ParaView will not take advantage of accelerated nodes on Anselm. Support for GPU acceleration might be added in the future. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/cesnet-data-storage.md b/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/cesnet-data-storage.md index 1f006bd53..22b880420 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/cesnet-data-storage.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/cesnet-data-storage.md @@ -1,17 +1,7 @@ CESNET Data Storage =================== - - - - - - - - - - - + Introduction ------------ @@ -74,31 +64,31 @@ than copied in and out in a usual fashion. First, create the mountpoint - $ mkdir cesnet + $ mkdir cesnet Mount the storage. Note that you can choose among the ssh.du1.cesnet.cz (Plzen), ssh.du2.cesnet.cz (Jihlava), ssh.du3.cesnet.cz (Brno) Mount tier1_home **(only 5120M !)**: - $ sshfs username@ssh.du1.cesnet.cz:. cesnet/ + $ sshfs username@ssh.du1.cesnet.cz:. cesnet/ For easy future access from Anselm, install your public key - $ cp .ssh/id_rsa.pub cesnet/.ssh/authorized_keys + $ cp .ssh/id_rsa.pub cesnet/.ssh/authorized_keys Mount tier1_cache_tape for the Storage VO: - $ sshfs username@ssh.du1.cesnet.cz:/cache_tape/VO_storage/home/username cesnet/ + $ sshfs username@ssh.du1.cesnet.cz:/cache_tape/VO_storage/home/username cesnet/ View the archive, copy the files and directories in and out - $ ls cesnet/ - $ cp -a mydir cesnet/. - $ cp cesnet/myfile . + $ ls cesnet/ + $ cp -a mydir cesnet/. + $ cp cesnet/myfile . Once done, please remember to unmount the storage - $ fusermount -u cesnet + $ fusermount -u cesnet ### Rsync access @@ -125,17 +115,14 @@ More about Rsync at Transfer large files to/from Cesnet storage, assuming membership in the Storage VO - $ rsync --progress datafile username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. - $ rsync --progress username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafile . + $ rsync --progress datafile username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. + $ rsync --progress username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafile . Transfer large directories to/from Cesnet storage, assuming membership in the Storage VO - $ rsync --progress -av datafolder username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. - $ rsync --progress -av username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafolder . + $ rsync --progress -av datafolder username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. + $ rsync --progress -av username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafolder . Transfer rates of about 28MB/s can be expected. - - - diff --git a/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/storage.md b/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/storage.md index 8bf8b095f..ce8989c5b 100644 --- a/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/storage.md +++ b/converted/docs.it4i.cz/anselm-cluster-documentation/storage-1/storage.md @@ -1,17 +1,7 @@ Storage ======= - - - - - - - - - - - + There are two main shared file systems on Anselm cluster, the [HOME](../storage.html#home) and @@ -69,17 +59,17 @@ There is default stripe configuration for Anselm Lustre filesystems. However, users can set the following stripe parameters for their own directories or files to get optimum I/O performance: -1.stripe_size: the size of the chunk in bytes; specify with k, m, or - g to use units of KB, MB, or GB, respectively; the size must be an - even multiple of 65,536 bytes; default is 1MB for all Anselm Lustre - filesystems -2.stripe_count the number of OSTs to stripe across; default is 1 for - Anselm Lustre filesystems one can specify -1 to use all OSTs in - the filesystem. -3.stripe_offset The index of the - OST where the first stripe is to be - placed; default is -1 which results in random selection; using a - non-default value is NOT recommended. +1. stripe_size: the size of the chunk in bytes; specify with k, m, or + g to use units of KB, MB, or GB, respectively; the size must be an + even multiple of 65,536 bytes; default is 1MB for all Anselm Lustre + filesystems +2. stripe_count the number of OSTs to stripe across; default is 1 for + Anselm Lustre filesystems one can specify -1 to use all OSTs in + the filesystem. +3. stripe_offset The index of the + OST where the first stripe is to be + placed; default is -1 which results in random selection; using a + non-default value is NOT recommended.  @@ -101,12 +91,12 @@ Example: ``` $ lfs getstripe /scratch/username/ /scratch/username/ -stripe_count: 1 stripe_size: 1048576 stripe_offset: -1 +stripe_count: 1 stripe_size: 1048576 stripe_offset: -1 $ lfs setstripe -c -1 /scratch/username/ $ lfs getstripe /scratch/username/ /scratch/username/ -stripe_count:10 stripe_size: 1048576 stripe_offset: -1 +stripe_count: 10 stripe_size: 1048576 stripe_offset: -1 ``` In this example, we view current stripe setting of the @@ -162,40 +152,37 @@ storage servers are used for file system SCRATCH. Configuration of the storages +- HOME Lustre object storage + -- HOME Lustre object storage - + - One disk array NetApp E5400 + - 22 OSTs + - 227 2TB NL-SAS 7.2krpm disks + - 22 groups of 10 disks in RAID6 (8+2) + - 7 hot-spare disks - - One disk array NetApp E5400 - - 22 OSTs - - 227 2TB NL-SAS 7.2krpm disks - - 22 groups of 10 disks in RAID6 (8+2) - - 7 hot-spare disks + - +- SCRATCH Lustre object storage + -- SCRATCH Lustre object storage - + - Two disk arrays NetApp E5400 + - 10 OSTs + - 106 2TB NL-SAS 7.2krpm disks + - 10 groups of 10 disks in RAID6 (8+2) + - 6 hot-spare disks - - Two disk arrays NetApp E5400 - - 10 OSTs - - 106 2TB NL-SAS 7.2krpm disks - - 10 groups of 10 disks in RAID6 (8+2) - - 6 hot-spare disks + - - -- Lustre metadata storage - - - - One disk array NetApp E2600 - - 12 300GB SAS 15krpm disks - - 2 groups of 5 disks in RAID5 - - 2 hot-spare disks - - +- Lustre metadata storage + + - One disk array NetApp E2600 + - 12 300GB SAS 15krpm disks + - 2 groups of 5 disks in RAID5 + - 2 hot-spare disks + ###HOME @@ -305,11 +292,11 @@ Example for Lustre HOME directory: ``` $ lfs quota /home Disk quotas for user user001 (uid 1234): - Filesystem kbytes quota limit grace files quota limit grace - /home 300096 0 250000000 - 2102 0 500000 - + Filesystem kbytes quota limit grace files quota limit grace + /home 300096 0 250000000 - 2102 0 500000 - Disk quotas for group user001 (gid 1234): - Filesystem kbytes quota limit grace files quota limit grace - /home 300096 0 0 - 2102 0 0 - + Filesystem kbytes quota limit grace files quota limit grace + /home 300096 0 0 - 2102 0 0 - ``` In this example, we view current quota size limit of 250GB and 300MB @@ -320,8 +307,8 @@ Example for Lustre SCRATCH directory: ``` $ lfs quota /scratch Disk quotas for user user001 (uid 1234): - Filesystem kbytes quota limit grace files quota limit grace -  /scratch    8    0 100000000000    -    3    0    0    - + Filesystem kbytes quota limit grace files quota limit grace +  /scratch    8    0 100000000000    -    3    0    0    - Disk quotas for group user001 (gid 1234): Filesystem kbytes quota limit grace files quota limit grace /scratch    8    0    0    -    3    0    0    - @@ -344,11 +331,11 @@ Example for your HOME directory: ``` $ cd /home $ du -hs * .[a-zA-z0-9]* | grep -E "[0-9]*G|[0-9]*M" | sort -hr -258M cuda-samples -15M .cache -13M .mozilla -5,5M .eclipse -2,7M .idb_13.0_linux_intel64_app +258M cuda-samples +15M .cache +13M .mozilla +5,5M .eclipse +2,7M .idb_13.0_linux_intel64_app ``` This will list all directories which are having MegaBytes or GigaBytes @@ -356,7 +343,6 @@ of consumed space in your actual (in this example HOME) directory. List is sorted in descending order from largest to smallest files/directories. - >To have a better understanding of previous commands, you can read manpages. @@ -500,26 +486,17 @@ Each node is equipped with local /tmp directory of few GB capacity. The /tmp directory should be used to work with small temporary files. Old files in /tmp directory are automatically purged. - Summary ---------- - -Mountpoint Usage Protocol Net Capacity Throughput Limitations Access Services ------------------------------------------- --------------------------- ---------- ---------------- ------------ ------------- ------------------------- ----------------------------- - /home home directory Lustre 320 TiB 2 GB/s Quota 250GB Compute and login nodes backed up - /scratch cluster shared jobs' data Lustre 146 TiB 6 GB/s Quota 100TB Compute and login nodes files older 90 days removed - /lscratch node local jobs' data local 330 GB 100 MB/s none Compute nodes purged after job ends - /ramdisk node local jobs' data local 60, 90, 500 GB 5-50 GB/s none Compute nodes purged after job ends - /tmp local temporary files local 9.5 GB 100 MB/s none Compute and login nodes auto purged - - - - + Mountpoint Usage Protocol Net Capacity Throughput Limitations Access Services + ------------------------------------------ --------------------------- ---------- ---------------- ------------ ------------- ------------------------- ----------------------------- + /home home directory Lustre 320 TiB 2 GB/s Quota 250GB Compute and login nodes backed up + /scratch cluster shared jobs' data Lustre 146 TiB 6 GB/s Quota 100TB Compute and login nodes files older 90 days removed + /lscratch node local jobs' data local 330 GB 100 MB/s none Compute nodes purged after job ends + /ramdisk node local jobs' data local 60, 90, 500 GB 5-50 GB/s none Compute nodes purged after job ends + /tmp local temporary files local 9.5 GB 100 MB/s none Compute and login nodes auto purged  - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/cygwin-and-x11-forwarding.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/cygwin-and-x11-forwarding.md index b4b6cb163..b8c1a2f6f 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/cygwin-and-x11-forwarding.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/cygwin-and-x11-forwarding.md @@ -1,14 +1,6 @@ Cygwin and X11 forwarding ========================= - - - - - - - - ### If no able to forward X11 using PuTTY to CygwinX ``` @@ -22,34 +14,31 @@ PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Connect  -1. Locate and modify - Cygwin shortcut that - uses -  [startxwin](http://x.cygwin.com/docs/man1/startxwin.1.html) - locate - C:cygwin64binXWin.exe - - - change it - to</span> - C:*cygwin64binXWin.exe -listen tcp* - -  - - - -2. - Check Putty settings: - Enable X11 - forwarding - - - -  - +1. Locate and modify + Cygwin shortcut that + uses +  [startxwin](http://x.cygwin.com/docs/man1/startxwin.1.html) + locate + C:cygwin64binXWin.exe + + + change it + to</span> + C:*cygwin64binXWin.exe -listen tcp* + +  + + + +2. + Check Putty settings: + Enable X11 + forwarding + + + +  +  - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/graphical-user-interface.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/graphical-user-interface.md index 6032500e0..70dc2f50f 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/graphical-user-interface.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/graphical-user-interface.md @@ -1,17 +1,7 @@ Graphical User Interface ======================== - - - - - - - - - - - + X Window System --------------- @@ -26,17 +16,14 @@ VNC --- The **Virtual Network Computing** (**VNC**) is a graphical -class="link-external">[desktop +[desktop sharing](http://en.wikipedia.org/wiki/Desktop_sharing "Desktop sharing") -system that uses the class="link-external">[Remote Frame Buffer +system that uses the [Remote Frame Buffer protocol (RFB)](http://en.wikipedia.org/wiki/RFB_protocol "RFB protocol") to remotely control another -class="link-external">[computer](http://en.wikipedia.org/wiki/Computer "Computer"). +[computer](http://en.wikipedia.org/wiki/Computer "Computer"). Read more about configuring **[VNC](../../../salomon/accessing-the-cluster/graphical-user-interface/vnc.html)**. - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/vnc.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/vnc.md index 4309360c3..21118b27b 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/vnc.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/vnc.md @@ -1,17 +1,7 @@ VNC === - - - - - - - - - - - + The **Virtual Network Computing** (**VNC**) is a graphical [desktop sharing](http://en.wikipedia.org/wiki/Desktop_sharing "Desktop sharing") @@ -156,7 +146,6 @@ Start vncserver using command vncserver described above. Search for the localhost and port number (in this case 127.0.0.1:5961).** - ``` [username@login2 .vnc]$ netstat -tanp | grep Xvnc (Not all processes could be identified, non-owned process info @@ -170,7 +159,6 @@ to set up the tunnel. Fill the Source port and Destination fields. **Do not forget to click the Add button**. -  Run the VNC client of your choice, select VNC server 127.0.0.1, port @@ -178,7 +166,6 @@ Run the VNC client of your choice, select VNC server 127.0.0.1, port ### Example of starting TigerVNC viewer -  In this example, we connect to VNC server on port 5961, via the ssh @@ -198,21 +185,17 @@ Gnome session You should see after the successful login. -  ###Disable your Gnome session screensaver - Open Screensaver preferences dialog: - - + Uncheck both options below the slider: - - + ### Kill screensaver if locked screen @@ -284,6 +267,3 @@ Example described above:  - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system.md index 2ce2407a6..74ff25da7 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system.md @@ -1,17 +1,7 @@ X Window System =============== - - - - - - - - - - - + The X Window system is a principal way to get GUI access to the clusters. The **X Window System** (commonly known as **X11**, based on @@ -80,29 +70,9 @@ project](http://sourceforge.net/projects/xming/). For stability and full features we recommend the [XWin](http://x.cygwin.com/) X server by Cygwin -<table> -<colgroup> -<col width="50%" /> -<col width="50%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">How to use Xwin</th> -<th align="left">How to use Xming</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left"><p><a href="http://x.cygwin.com/" class="external-link">Install Cygwin</a></p> -<p>Find and execute XWin.exe<br /> -to start the X server on Windows desktop computer.</p> -<p><a href="x-window-system/cygwin-and-x11-forwarding.html" If no able to forward X11 using PuTTY to CygwinX</a></p></td> -<td align="left"><p>Use Xlaunch to configure the Xming.</p> -<p>Run Xming<br /> -to start the X server on Windows desktop computer.</p></td> -</tr> -</tbody> -</table> + |How to use Xwin |How to use Xming | + | --- | --- | + |[Install Cygwin](http://x.cygwin.com/)Find and execute XWin.exeto start the X server on Windows desktop computer.[If no able to forward X11 using PuTTY to CygwinX](x-window-system/cygwin-and-x11-forwarding.html)\ |<p>Use Xlaunch to configure the Xming.<p>Run Xmingto start the X server on Windows desktop computer.\ | Read more on [http://www.math.umn.edu/systems_guide/putty_xwin32.html](http://www.math.umn.edu/systems_guide/putty_xwin32.shtml) @@ -172,9 +142,9 @@ This will open a new X window with size 1024x768 at DISPLAY :1. Next, ssh to the cluster with DISPLAY environment variable set and launch gnome-session - local $ DISPLAY=:1.0 ssh -XC yourname@cluster-name.it4i.cz -i ~/.ssh/path_to_your_key - ... cluster-name MOTD... - yourname@login1.cluster-namen.it4i.cz $ gnome-session & + local $ DISPLAY=:1.0 ssh -XC yourname@cluster-name.it4i.cz -i ~/.ssh/path_to_your_key + ... cluster-name MOTD... + yourname@login1.cluster-namen.it4i.cz $ gnome-session & On older systems where Xephyr is not available, you may also try Xnest instead of Xephyr. Another option is to launch a new X server in a @@ -191,7 +161,6 @@ variables for PBS. ### Gnome on Windows - Use Xlaunch to start the Xming server or run the XWin.exe. Select the ''One window" mode. @@ -207,6 +176,3 @@ in the local X server Use System->Log Out to close the gnome-session - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/introduction.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/introduction.md index baee0ca12..bcf136329 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/introduction.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/introduction.md @@ -1,14 +1,6 @@ Accessing the Clusters ====================== - - - - - - - - The IT4Innovations clusters are accessed by SSH protocol via login nodes. @@ -28,6 +20,3 @@ client](accessing-the-clusters/shell-access-and-data-transfer/putty/putty.html). Read more about [SSH keys management](accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.html). - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/introduction.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/introduction.md index a5c02508d..3f5be332a 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/introduction.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/introduction.md @@ -1,14 +1,6 @@ Accessing the Clusters ====================== - - - - - - - - The IT4Innovations clusters are accessed by SSH protocol via login nodes. @@ -27,6 +19,3 @@ client](putty/putty.html). Read more about [SSH keys management](ssh-keys.html). - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/pageant.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/pageant.md index 178850238..eb8d63db1 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/pageant.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/pageant.md @@ -1,32 +1,19 @@ Pageant SSH agent ================= - - - - - - - - - - - + Pageant holds your private key in memory without needing to retype a passphrase on every login. -- Run Pageant. -- On Pageant Key List press *Add key* and select your private - key (id_rsa.ppk). -- Enter your passphrase. -- Now you have your private key in memory without needing to retype a - passphrase on every login. - -  +- Run Pageant. +- On Pageant Key List press *Add key* and select your private + key (id_rsa.ppk). +- Enter your passphrase. +- Now you have your private key in memory without needing to retype a + passphrase on every login. + +   - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/putty.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/putty.md index 7431f8cfa..84366f60e 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/putty.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/putty.md @@ -1,17 +1,7 @@ PuTTY ===== - - - - - - - - - - - + PuTTY - before we start SSH connection --------------------------------------------------------------------------------- @@ -47,58 +37,53 @@ usage. PuTTY - how to connect to the IT4Innovations cluster -------------------------------------------------------- -- Run PuTTY -- Enter Host name and Save session fields with [Login - address](../../../../salomon/accessing-the-cluster/shell-and-data-access/shell-and-data-access.html) - and browse Connection - > SSH -> Auth menu. - The *Host Name* input may be in the format - **"username@clustername.it4i.cz"** so you don't have to type your - login each time. - In this example we will connect to the Salomon cluster using -  **"salomon.it4i.cz"**. - -  +- Run PuTTY +- Enter Host name and Save session fields with [Login + address](../../../../salomon/accessing-the-cluster/shell-and-data-access/shell-and-data-access.html) + and browse Connection - > SSH -> Auth menu. + The *Host Name* input may be in the format + **"username@clustername.it4i.cz"** so you don't have to type your + login each time. + In this example we will connect to the Salomon cluster using +  **"salomon.it4i.cz"**. + +   -- Category -> Connection - > SSH -> Auth: - Select Attempt authentication using Pageant. - Select Allow agent forwarding. - Browse and select your [private - key](../ssh-keys.html) file. - -  - -- Return to Session page and Save selected configuration with *Save* - button. - -  - -- Now you can log in using *Open* button. - -  - -- Enter your username if the *Host Name* input is not in the format - "username@salomon.it4i.cz". - -- Enter passphrase for selected [private - key](../ssh-keys.html) file if Pageant ****SSH - authentication agent is not used. - +- Category -> Connection - > SSH -> Auth: + Select Attempt authentication using Pageant. + Select Allow agent forwarding. + Browse and select your [private + key](../ssh-keys.html) file. + +  + +- Return to Session page and Save selected configuration with *Save* + button. + +  + +- Now you can log in using *Open* button. + +  + +- Enter your username if the *Host Name* input is not in the format + "username@salomon.it4i.cz". + +- Enter passphrase for selected [private + key](../ssh-keys.html) file if Pageant ****SSH + authentication agent is not used. + Another PuTTY Settings ---------------------- -- Category -> Windows -> Translation -> Remote character set - and select **UTF-8**. - - - -- Category -> Terminal -> Features and select **Disable - application keypad mode** (enable numpad) -- Save your configuration on Session page in to Default Settings with - *Save* button . - - +- Category -> Windows -> Translation -> Remote character set + and select **UTF-8**. +- Category -> Terminal -> Features and select **Disable + application keypad mode** (enable numpad) +- Save your configuration on Session page in to Default Settings with + *Save* button . diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/puttygen.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/puttygen.md index cde0d8094..a0450c34e 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/puttygen.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/puttygen.md @@ -1,17 +1,7 @@ PuTTY key generator =================== - - - - - - - - - - - + PuTTYgen is the PuTTY key generator. You can load in an existing private key and change your passphrase or generate a new public/private key @@ -22,14 +12,14 @@ pair. You can change the password of your SSH key with "PuTTY Key Generator". Make sure to backup the key. -- Load your [private key](../ssh-keys.html) file with - *Load* button. -- Enter your current passphrase. -- Change key passphrase. -- Confirm key passphrase. -- Save your private key with *Save private key* button. - -  +- Load your [private key](../ssh-keys.html) file with + *Load* button. +- Enter your current passphrase. +- Change key passphrase. +- Confirm key passphrase. +- Save your private key with *Save private key* button. + +   @@ -39,45 +29,42 @@ You can generate an additional public/private key pair and insert public key into authorized_keys file for authentication with your own private >key. -- Start with *Generate* button. - -  - -- Generate some randomness. - -  - -- Wait. - -  - -- Enter a *comment* for your key using format - 'username@organization.example.com'. - Enter key passphrase. - Confirm key passphrase. - Save your new private key `in "*.ppk" `format with *Save private - key* button. - -  - -- Save the public key with *Save public key* button. - You can copy public key out of the â€Public key for pasting into - authorized_keys file’ box. - -  - -- Export private key in OpenSSH format "id_rsa" using Conversion - -> Export OpenSSH key - -  - -- Now you can insert additional public key into authorized_keys file - for authentication with your own private >key. - You must log in using ssh key received after registration. Then - proceed to [How to add your own - key](../ssh-keys.html). - - - - +- Start with *Generate* button. + +  + +- Generate some randomness. + +  + +- Wait. + +  + +- Enter a *comment* for your key using format + 'username@organization.example.com'. + Enter key passphrase. + Confirm key passphrase. + Save your new private key `in "*.ppk" `format with *Save private + key* button. + +  + +- Save the public key with *Save public key* button. + You can copy public key out of the â€Public key for pasting into + authorized_keys file’ box. + +  + +- Export private key in OpenSSH format "id_rsa" using Conversion + -> Export OpenSSH key + +  + +- Now you can insert additional public key into authorized_keys file + for authentication with your own private >key. + You must log in using ssh key received after registration. Then + proceed to [How to add your own + key](../ssh-keys.html). + diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.md index 739798403..b6ab094e1 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.md @@ -1,17 +1,7 @@ SSH keys ======== - - - - - - - - - - - + Key management ------------------------------------------------------------------- @@ -19,56 +9,54 @@ SSH keys After logging in, you can see .ssh/ directory with SSH keys and authorized_keys file: - $ cd /home/username/ - $ ls -la .ssh/ - total 24 - drwx------ 2 username username 4096 May 13 15:12 . - drwxr-x---22 username username 4096 May 13 07:22 .. - -rw-r--r-- 1 username username 392 May 21 2014 authorized_keys - -rw------- 1 username username 1675 May 21 2014 id_rsa - -rw------- 1 username username 1460 May 21 2014 id_rsa.ppk - -rw-r--r-- 1 username username 392 May 21 2014 id_rsa.pub - - class="visualHighlight">Please note that private keys in + $ cd /home/username/ + $ ls -la .ssh/ + total 24 + drwx------ 2 username username 4096 May 13 15:12 . + drwxr-x---22 username username 4096 May 13 07:22 .. + -rw-r--r-- 1 username username 392 May 21 2014 authorized_keys + -rw------- 1 username username 1675 May 21 2014 id_rsa + -rw------- 1 username username 1460 May 21 2014 id_rsa.ppk + -rw-r--r-- 1 username username 392 May 21 2014 id_rsa.pub + + Please note that private keys in .ssh directory are without passphrase and allow you to connect within the cluster. ### Access privileges on .ssh folder -- `.ssh` - -  directory: - 700 (drwx------) -- - Authorized_keys, - - - known_hosts</span> and - public key - (`.pub` - -  file): - - `644 (-rw-r--r--)` -- - `` - - Private key - (`id_rsa/id_rsa.ppk` - ): - `600 (-rw-------)` - - - - - - cd /home/username/ - chmod 700 .ssh/ - chmod 644 .ssh/authorized_keys - chmod 644 .ssh/id_rsa.pub - chmod 644 .ssh/known_hosts - chmod 600 .ssh/id_rsa - chmod 600 .ssh/id_rsa.ppk +- `.ssh` + +  directory: + 700 (drwx------) +- + Authorized_keys, + + + known_hosts</span> and + public key + (`.pub` + +  file): + + `644 (-rw-r--r--)` +- + `` + + Private key + (`id_rsa/id_rsa.ppk` + ): + `600 (-rw-------)` + + + + cd /home/username/ + chmod 700 .ssh/ + chmod 644 .ssh/authorized_keys + chmod 644 .ssh/id_rsa.pub + chmod 644 .ssh/known_hosts + chmod 600 .ssh/id_rsa + chmod 600 .ssh/id_rsa.ppk Private key ----------- @@ -85,33 +73,33 @@ always be kept in a safe place. An example of private key format: - -----BEGIN RSA PRIVATE KEY----- - MIIEpAIBAAKCAQEAqbo7jokygnBpG2wYa5NB45ns6+UKTNLMLHF0BO3zmRtKEElE - aGqXfbYwvXlcuRb2d9/Y5dVpCZHV0kbY3NhtVOcEIe+1ROaiU9BEsUAhMNEvgiLV - gSql4QvRO4BWPlM8+WAWXDp3oeoBh8glXyuh9teb8yq98fv1r1peYGRrW3/s4V+q - O1SQ0XY2T7rWCYRLIP6rTMXArTI35v3WU513mn7nm1fJ7oN0QgVH5b0W9V1Kyc4l - 9vILHeMXxvz+i/5jTEfLOJpiRGYZYcaYrE4dIiHPl3IlbV7hlkK23Xb1US8QJr5G - ADxp1VTkHjY+mKagEfxl1hQIb42JLHhKMEGqNQIDAQABAoIBAQCkypPuxZjL+vai - UGa5dAWiRZ46P2yrwHPKpvEdpCdDPbLAc1K/CtdBkHZsUPxNHVV6eFWweW99giIY - Av+mFWC58X8asBHQ7xkmxW0cqAZRzpkRAl9IBS9/fKjO28Fgy/p+suOi8oWbKIgJ - 3LMkX0nnT9oz1AkOfTNC6Tv+3SE7eTj1RPcMjur4W1Cd1N3EljLszdVk4tLxlXBS - yl9NzVnJJbJR4t01l45VfFECgYEAno1WJSB/SwdZvS9GkfhvmZd3r4vyV9Bmo3dn - XZAh8HRW13imOnpklDR4FRe98D9A7V3yh9h60Co4oAUd6N+Oc68/qnv/8O9efA+M - /neI9ANYFo8F0+yFCp4Duj7zPV3aWlN/pd8TNzLqecqh10uZNMy8rAjCxybeZjWd - DyhgywXhAoGBAN3BCazNefYpLbpBQzwes+f2oStvwOYKDqySWsYVXeVgUI+OWTVZ - eZ26Y86E8MQO+q0TIxpwou+TEaUgOSqCX40Q37rGSl9K+rjnboJBYNCmwVp9bfyj - kCLL/3g57nTSqhgHNa1xwemePvgNdn6FZteA8sXiCg5ZzaISqWAffek5AoGBAMPw - V/vwQ96C8E3l1cH5cUbmBCCcfXM2GLv74bb1V3SvCiAKgOrZ8gEgUiQ0+TfcbAbe - 7MM20vRNQjaLTBpai/BTbmqM1Q+r1KNjq8k5bfTdAoGANgzlNM9omM10rd9WagL5 - yuJcal/03p048mtB4OI4Xr5ZJISHze8fK4jQ5veUT9Vu2Fy/w6QMsuRf+qWeCXR5 - RPC2H0JzkS+2uZp8BOHk1iDPqbxWXJE9I57CxBV9C/tfzo2IhtOOcuJ4LY+sw+y/ - ocKpJbdLTWrTLdqLHwicdn8OxeWot1mOukyK2l0UeDkY6H5pYPtHTpAZvRBd7ETL - Zs2RP3KFFvho6aIDGrY0wee740/jWotx7fbxxKwPyDRsbH3+1Wx/eX2RND4OGdkH - gejJEzpk/7y/P/hCad7bSDdHZwO+Z03HIRC0E8yQz+JYatrqckaRCtd7cXryTmTR - FbvLJmECgYBDpfno2CzcFJCTdNBZFi34oJRiDb+HdESXepk58PcNcgK3R8PXf+au - OqDBtZIuFv9U1WAg0gzGwt/0Y9u2c8m0nXziUS6AePxy5sBHs7g9C9WeZRz/nCWK - +cHIm7XOwBEzDKz5f9eBqRGipm0skDZNKl8X/5QMTT5K3Eci2n+lTw== - -----END RSA PRIVATE KEY----- + -----BEGIN RSA PRIVATE KEY----- + MIIEpAIBAAKCAQEAqbo7jokygnBpG2wYa5NB45ns6+UKTNLMLHF0BO3zmRtKEElE + aGqXfbYwvXlcuRb2d9/Y5dVpCZHV0kbY3NhtVOcEIe+1ROaiU9BEsUAhMNEvgiLV + gSql4QvRO4BWPlM8+WAWXDp3oeoBh8glXyuh9teb8yq98fv1r1peYGRrW3/s4V+q + O1SQ0XY2T7rWCYRLIP6rTMXArTI35v3WU513mn7nm1fJ7oN0QgVH5b0W9V1Kyc4l + 9vILHeMXxvz+i/5jTEfLOJpiRGYZYcaYrE4dIiHPl3IlbV7hlkK23Xb1US8QJr5G + ADxp1VTkHjY+mKagEfxl1hQIb42JLHhKMEGqNQIDAQABAoIBAQCkypPuxZjL+vai + UGa5dAWiRZ46P2yrwHPKpvEdpCdDPbLAc1K/CtdBkHZsUPxNHVV6eFWweW99giIY + Av+mFWC58X8asBHQ7xkmxW0cqAZRzpkRAl9IBS9/fKjO28Fgy/p+suOi8oWbKIgJ + 3LMkX0nnT9oz1AkOfTNC6Tv+3SE7eTj1RPcMjur4W1Cd1N3EljLszdVk4tLxlXBS + yl9NzVnJJbJR4t01l45VfFECgYEAno1WJSB/SwdZvS9GkfhvmZd3r4vyV9Bmo3dn + XZAh8HRW13imOnpklDR4FRe98D9A7V3yh9h60Co4oAUd6N+Oc68/qnv/8O9efA+M + /neI9ANYFo8F0+yFCp4Duj7zPV3aWlN/pd8TNzLqecqh10uZNMy8rAjCxybeZjWd + DyhgywXhAoGBAN3BCazNefYpLbpBQzwes+f2oStvwOYKDqySWsYVXeVgUI+OWTVZ + eZ26Y86E8MQO+q0TIxpwou+TEaUgOSqCX40Q37rGSl9K+rjnboJBYNCmwVp9bfyj + kCLL/3g57nTSqhgHNa1xwemePvgNdn6FZteA8sXiCg5ZzaISqWAffek5AoGBAMPw + V/vwQ96C8E3l1cH5cUbmBCCcfXM2GLv74bb1V3SvCiAKgOrZ8gEgUiQ0+TfcbAbe + 7MM20vRNQjaLTBpai/BTbmqM1Q+r1KNjq8k5bfTdAoGANgzlNM9omM10rd9WagL5 + yuJcal/03p048mtB4OI4Xr5ZJISHze8fK4jQ5veUT9Vu2Fy/w6QMsuRf+qWeCXR5 + RPC2H0JzkS+2uZp8BOHk1iDPqbxWXJE9I57CxBV9C/tfzo2IhtOOcuJ4LY+sw+y/ + ocKpJbdLTWrTLdqLHwicdn8OxeWot1mOukyK2l0UeDkY6H5pYPtHTpAZvRBd7ETL + Zs2RP3KFFvho6aIDGrY0wee740/jWotx7fbxxKwPyDRsbH3+1Wx/eX2RND4OGdkH + gejJEzpk/7y/P/hCad7bSDdHZwO+Z03HIRC0E8yQz+JYatrqckaRCtd7cXryTmTR + FbvLJmECgYBDpfno2CzcFJCTdNBZFi34oJRiDb+HdESXepk58PcNcgK3R8PXf+au + OqDBtZIuFv9U1WAg0gzGwt/0Y9u2c8m0nXziUS6AePxy5sBHs7g9C9WeZRz/nCWK + +cHIm7XOwBEzDKz5f9eBqRGipm0skDZNKl8X/5QMTT5K3Eci2n+lTw== + -----END RSA PRIVATE KEY----- Public key ---------- @@ -127,13 +115,13 @@ the owner of the matching private key. An example of public key format: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpujuOiTKCcGkbbBhrk0Hjmezr5QpM0swscXQE7fOZG0oQSURoapd9tjC9eVy5FvZ339jl1WkJkdXSRtjc2G1U5wQh77VE5qJT0ESxQCEw0S+CItWBKqXhC9E7gFY+UyP5YBZcOneh6gGHyCVfK6H215vzKr3x+/WvWl5gZGtbf+zhX6o4RJDRdjZPutYJhEsg/qtMxcCtMjfm/dZTnXeafuebV8nug3RCBUflvRb1XUrJuiX28gsd4xfG/P6L/mNMR8s4kmJEZhlhxpj8Th0iIc+XciVtXuGWQrbddcVRLxAmvkYAPGnVVOQeNj69pqAR/GXaFAhvjYkseEowQao1 username@organization.example.com + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpujuOiTKCcGkbbBhrk0Hjmezr5QpM0swscXQE7fOZG0oQSURoapd9tjC9eVy5FvZ339jl1WkJkdXSRtjc2G1U5wQh77VE5qJT0ESxQCEw0S+CItWBKqXhC9E7gFY+UyP5YBZcOneh6gGHyCVfK6H215vzKr3x+/WvWl5gZGtbf+zhX6o4RJDRdjZPutYJhEsg/qtMxcCtMjfm/dZTnXeafuebV8nug3RCBUflvRb1XUrJuiX28gsd4xfG/P6L/mNMR8s4kmJEZhlhxpj8Th0iIc+XciVtXuGWQrbddcVRLxAmvkYAPGnVVOQeNj69pqAR/GXaFAhvjYkseEowQao1 username@organization.example.com ### How to add your own key First, generate a new keypair of your public and private key: - local $ ssh-keygen -C 'username@organization.example.com' -f additional_key + local $ ssh-keygen -C 'username@organization.example.com' -f additional_key Please, enter **strong** **passphrase** for securing your private key. @@ -144,7 +132,7 @@ not advised to remove the default public key from authorized_keys file. Example: - $ cat additional_key.pub >> ~/.ssh/authorized_keys + $ cat additional_key.pub >> ~/.ssh/authorized_keys In this example, we add an additional public key, stored in file additional_key.pub into the authorized_keys. Next time we log in, we @@ -156,6 +144,3 @@ Removing your key from authorized_keys can be done simply by deleting the corresponding public key which can be identified by a comment at the end of line (eg. username@organization.example.com). - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpn-connection-fail-in-win-8.1.md b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpn-connection-fail-in-win-8.1.md index aa82e6f28..f0a9413a9 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpn-connection-fail-in-win-8.1.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpn-connection-fail-in-win-8.1.md @@ -1,19 +1,8 @@ VPN - Connection fail in Win 8.1 ================================ - - - - Failed to initialize connection subsystem Win 8.1 - 02-10-15 MS patch - - - - - - - AnyConnect users on Windows 8.1 will receive a "Failed to initialize connection subsystem" error after installing the Windows 8.1 02/10/15 security patch. This OS defect introduced with the 02/10/15 patch update @@ -23,19 +12,16 @@ OS for AnyConnect. **Workaround:** -- Close the Cisco AnyConnect Window and the taskbar mini-icon -- Right click vpnui.exe in the 'Cisco AnyConnect Secure Mobility - Client' folder. (C:Program Files (x86)CiscoCisco AnyConnect - Secure Mobility -- Client) -- Click on the 'Run compatibility troubleshooter' button -- Choose 'Try recommended settings' -- The wizard suggests Windows 8 compatibility. -- Click 'Test Program'. This will open the program. -- Close +- Close the Cisco AnyConnect Window and the taskbar mini-icon +- Right click vpnui.exe in the 'Cisco AnyConnect Secure Mobility + Client' folder. (C:Program Files (x86)CiscoCisco AnyConnect + Secure Mobility +- Client) +- Click on the 'Run compatibility troubleshooter' button +- Choose 'Try recommended settings' +- The wizard suggests Windows 8 compatibility. +- Click 'Test Program'. This will open the program. +- Close  - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpnuiV.png b/converted/docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/vpnuiV.png new file mode 100644 index 0000000000000000000000000000000000000000..076e2c4f9873d72937ecab0bb542a7690f6a70dc GIT binary patch literal 49733 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 literal 0 HcmV?d00001 diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/applying-for-resources.md b/converted/docs.it4i.cz/get-started-with-it4innovations/applying-for-resources.md index 17af28e4d..85b976e2d 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/applying-for-resources.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/applying-for-resources.md @@ -1,17 +1,7 @@ Applying for Resources ====================== - - - - - - - - - - - + Computational resources may be allocated by any of the following [Computing resources @@ -46,6 +36,3 @@ Credentials](obtaining-login-credentials.html) page.  - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/introduction.md b/converted/docs.it4i.cz/get-started-with-it4innovations/introduction.md deleted file mode 100644 index b833142fb..000000000 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/introduction.md +++ /dev/null @@ -1,156 +0,0 @@ -Documentation -============= - - - - - - - - - - - - - -Welcome to IT4Innovations documentation pages. The IT4Innovations -national supercomputing center operates supercomputers -[Salomon](../salomon.html) and -[Anselm](../anselm.html). The supercomputers are [ -class="external-link">available](applying-for-resources.html) -to academic community within the Czech Republic and Europe and -industrial community worldwide. The purpose of these pages is to provide -a comprehensive documentation on hardware, software and usage of the -computers. - - class="link-external">How to read the documentation --------------------------------------------------------------------------------------------------- - -1.Read the list in the left column. Select the subject of interest. - Alternatively, use the Search box in the upper right corner. -2.Read the CONTENTS in the upper right corner. -3.Scan for all the yellow bulb call-outs on the page. -4.Read the details if still more information is needed. **Look for - examples** illustrating the concepts. - - - -The call-out.  Focus on the call-outs before reading full details. - - - -- Read the [Changelog](changelog.html) to keep up - to date. - -Getting Help and Support ------------------------- - -Contact [support [at] -it4i.cz](mailto:support%20%5Bat%5D%20it4i.cz) for help and -support regarding the cluster technology at IT4Innovations. -Please use **Czech**, **Slovak** or **English** language for -communication with us. -Follow the status of your request to IT4Innovations at -[support.it4i.cz/rt](http://support.it4i.cz/rt). - - - -Use your IT4Innotations username and password to log in to the -[support](http://support.it4i.cz/) portal. - -Required Proficiency --------------------- - -You need basic proficiency in Linux environment. - - - -In order to use the system for your calculations, you need basic -proficiency in Linux environment. To gain the proficiency, we recommend -you reading the [ class="WYSIWYG_LINK">introduction to -Linux](http://www.tldp.org/LDP/intro-linux/html/) -operating system environment and installing a Linux distribution on your -personal computer. A good choice might be the [ -class="WYSIWYG_LINK">Fedora](http://fedoraproject.org/) -distribution, as it is similar to systems on the clusters at -IT4Innovations. It's easy to install and use. In fact, any distribution -would do. - - - -Learn how to parallelize your code! - - - -In many cases, you will run your own code on the cluster. In order to -fully exploit the cluster, you will need to carefully consider how to -utilize all the cores available on the node and how to use multiple -nodes at the same time. You need to **parallelize** your code. -Proficieny in MPI, OpenMP, CUDA, UPC or GPI2 programming may be gained -via the [training provided by -IT4Innovations.](http://prace.it4i.cz) - -Terminology Frequently Used on These Pages ------------------------------------------- - -- **node:** a computer, interconnected by network to other computers - - Computational nodes are powerful computers, designed and dedicated - for executing demanding scientific computations. -- **core:** processor core, a unit of processor, executing - computations -- **corehours:** wall clock hours of processor core time - Each node - is equipped with **X** processor cores, provides **X** corehours per - 1 wall clock hour. -- **job:** a calculation running on the supercomputer - The job - allocates and utilizes resources of the supercomputer for - certain time. -- **HPC:** High Performance Computing -- **HPC (computational) resources:** corehours, storage capacity, - software licences -- **code:** a program -- **primary investigator (PI):** a person responsible for execution of - computational project and utilization of computational resources - allocated to that project -- **collaborator:** a person participating on execution of - computational project and utilization of computational resources - allocated to that project -- **project:** a computational project under investigation by the - PI - The project is identified by the project ID. The computational - resources are allocated and charged per project. -- **jobscript:** a script to be executed by the PBS Professional - workload manager - -Conventions ------------ - -In this documentation, you will find a number of pages containing -examples. We use the following conventions: - - Cluster command prompt - -``` -$ -``` - -Your local linux host command prompt - -``` -local $ -``` - - Errata -------- - -Although we have taken every care to ensure the accuracy of our content, -mistakes do happen. If you find a mistake in the text or the code we -would be grateful if you would report this to us. By doing so, you can -save other readers from frustration and help us improve subsequent -versions of this documentation. If you find any errata, please report -them by visiting http://support.it4i.cz/rt, creating a new ticket, and -entering the details of your errata. Once your errata are verified, your -submission will be accepted and the errata will be uploaded on our -website. - - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/certificates-faq.md b/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/certificates-faq.md index 92ab874bf..f62dc9bec 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/certificates-faq.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/certificates-faq.md @@ -1,23 +1,9 @@ Certificates FAQ ================ - - - - FAQ about certificates in general - - - - - - - - - - - + Q: What are certificates? ------------------------- @@ -30,19 +16,13 @@ only one password is required. There are different kinds of certificates, each with a different scope of use. We mention here: -- User (Private) certificates - - - -- Certificate Authority (CA) certificates - - +- User (Private) certificates -- Host certificates +- Certificate Authority (CA) certificates +- Host certificates - -- Service certificates +- Service certificates  @@ -149,7 +129,7 @@ Lastly, if you need the CA certificates for a personal Globus 5 installation, then you can install the CA certificates from a MyProxy server with the following command. - myproxy-get-trustroots -s myproxy-prace.lrz.de + myproxy-get-trustroots -s myproxy-prace.lrz.de If you run this command as ’root’, then it will install the certificates into /etc/grid-security/certificates. If you run this not as ’root’, @@ -182,25 +162,25 @@ The following examples are for Unix/Linux operating systems only. To convert from PEM to p12, enter the following command: - openssl pkcs12 -export -in usercert.pem -inkey userkey.pem -out - username.p12 + openssl pkcs12 -export -in usercert.pem -inkey userkey.pem -out + username.p12 To convert from p12 to PEM, type the following *four* commands: - openssl pkcs12 -in username.p12 -out usercert.pem -clcerts -nokeys - openssl pkcs12 -in username.p12 -out userkey.pem -nocerts - chmod 444 usercert.pem - chmod 400 userkey.pem + openssl pkcs12 -in username.p12 -out usercert.pem -clcerts -nokeys + openssl pkcs12 -in username.p12 -out userkey.pem -nocerts + chmod 444 usercert.pem + chmod 400 userkey.pem To check your Distinguished Name (DN), enter the following command: - openssl x509 -in usercert.pem -noout -subject -nameopt - RFC2253 + openssl x509 -in usercert.pem -noout -subject -nameopt + RFC2253 To check your certificate (e.g., DN, validity, issuer, public key algorithm, etc.), enter the following command: - openssl x509 -in usercert.pem -text -noout + openssl x509 -in usercert.pem -text -noout To download openssl for both Linux and Windows, please visit <http://www.openssl.org/related/binaries.html>. On Macintosh Mac OS X @@ -214,9 +194,9 @@ manage keystores, which themselves are stores of keys and certificates. For example if you want to convert your pkcs12 formatted key pair into a java keystore you can use the following command. - keytool -importkeystore -srckeystore $my_p12_cert -destkeystore - $my_keystore -srcstoretype pkcs12 -deststoretype jks -alias - $my_nickname -destalias $my_nickname + keytool -importkeystore -srckeystore $my_p12_cert -destkeystore + $my_keystore -srcstoretype pkcs12 -deststoretype jks -alias + $my_nickname -destalias $my_nickname where $my_p12_cert is the name of your p12 (pkcs12) certificate, $my_keystore is the name that you give to your new java keystore and @@ -226,7 +206,7 @@ is used also for the new keystore. You also can import CA certificates into your java keystore with the tool, e.g.: - keytool -import -trustcacerts -alias $mydomain -file $mydomain.crt -keystore $my_keystore + keytool -import -trustcacerts -alias $mydomain -file $mydomain.crt -keystore $my_keystore where $mydomain.crt is the certificate of a trusted signing authority (CA) and $mydomain is the alias name that you give to the entry. @@ -248,8 +228,7 @@ service automatically installs up-to-date PRACE CA certificates. If the grid service is UNICORE, then you bind your certificate, in either the p12 format or JKS, to UNICORE during the installation of the client on your local machine. For more information, please visit -[UNICORE6 in PRACE](http://www.prace-ri.eu/UNICORE6-in-PRACE){.spip_in -.external +[UNICORE6 in PRACE](http://www.prace-ri.eu/UNICORE6-in-PRACE) If the grid service is part of Globus, such as GSI-SSH, GriFTP or GRAM5, then the certificates can be in either p12 or PEM format and must reside @@ -305,8 +284,8 @@ $X509_USER_PROXY environment variable. Q: What is the MyProxy service? ------------------------------- -[The MyProxy Service](http://grid.ncsa.illinois.edu/myproxy/){.spip_in -.external, can be employed by gsissh-term and Globus tools, and is +[The MyProxy Service](http://grid.ncsa.illinois.edu/myproxy/) +, can be employed by gsissh-term and Globus tools, and is an online repository that allows users to store long lived proxy certificates remotely, which can then be retrieved for use at a later date. Each proxy is protected by a password provided by the user at the @@ -323,8 +302,3 @@ and to supply you with a new one. In addition, please report this to IT4Innovations by contacting [the support team](https://support.it4i.cz/rt). - - - - - diff --git a/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/obtaining-login-credentials.md b/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/obtaining-login-credentials.md index 5748f4f77..bdde412f8 100644 --- a/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/obtaining-login-credentials.md +++ b/converted/docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/obtaining-login-credentials.md @@ -1,17 +1,7 @@ Obtaining Login Credentials =========================== - - - - - - - - - - - + Obtaining Authorization ----------------------- @@ -25,12 +15,7 @@ Collaborators to access and use the clusters, to consume the resources allocated to her/his Project. These collaborators will be associated to the Project. The Figure below is depicting the authorization chain: - - - - +  You need to either [become the PI](../applying-for-resources.html) or [be named as a @@ -60,10 +45,10 @@ Log in to the [IT4I Extranet portal](https://extranet.it4i.cz) using IT4I credentials and go to the **Projects** section. -- **Users:** Please, submit your requests for becoming a - project member. -- **Primary Investigators:** Please, approve or deny users' requests - in the same section. +- **Users:** Please, submit your requests for becoming a + project member. +- **Primary Investigators:** Please, approve or deny users' requests + in the same section. ### Authorization by e-mail (an alternative approach) @@ -73,29 +58,29 @@ support](https://support.it4i.cz/rt/) (E-mail: [support [at] it4i.cz](mailto:support%20%5Bat%5D%20it4i.cz)) and provide following information: -1.Identify your project by project ID -2.Provide list of people, including himself, who are authorized to use - the resources allocated to the project. The list must include full - name, e-mail and affiliation. Provide usernames as well, if - collaborator login access already exists on the IT4I systems. -3.Include "Authorization to IT4Innovations" into the subject line. +1. Identify your project by project ID +2. Provide list of people, including himself, who are authorized to use + the resources allocated to the project. The list must include full + name, e-mail and affiliation. Provide usernames as well, if + collaborator login access already exists on the IT4I systems. +3. Include "Authorization to IT4Innovations" into the subject line. Example (except the subject line which must be in English, you may use Czech or Slovak language for communication with us): - Subject: Authorization to IT4Innovations + Subject: Authorization to IT4Innovations - Dear support, + Dear support, - Please include my collaborators to project OPEN-0-0. + Please include my collaborators to project OPEN-0-0. - John Smith, john.smith@myemail.com, Department of Chemistry, MIT, US - Jonas Johansson, jjohansson@otheremail.se, Department of Physics, Royal Institute of Technology, Sweden - Luisa Fibonacci, lf@emailitalia.it, Department of Mathematics, National Research Council, Italy + John Smith, john.smith@myemail.com, Department of Chemistry, MIT, US + Jonas Johansson, jjohansson@otheremail.se, Department of Physics, Royal Institute of Technology, Sweden + Luisa Fibonacci, lf@emailitalia.it, Department of Mathematics, National Research Council, Italy - Thank you, - PI - (Digitally signed) + Thank you, + PI + (Digitally signed) Should the above information be provided by e-mail, the e-mail **must be** digitally signed. Read more on [digital @@ -111,36 +96,36 @@ support](https://support.it4i.cz/rt/) (E-mail: [support [at] it4i.cz](mailto:support%20%5Bat%5D%20it4i.cz)) providing following information: -1.Project ID -2.Full name and affiliation -3.Statement that you have read and accepted the [Acceptable use policy - document](http://www.it4i.cz/acceptable-use-policy.pdf) (AUP). -4.Attach the AUP file. -5.Your preferred username, max 8 characters long. The preferred - username must associate your surname and name or be otherwise - derived from it. Only alphanumeric sequences, dash and underscore - signs are allowed. -6.In case you choose [Alternative way to personal - certificate](obtaining-login-credentials.html#alternative-way-of-getting-personal-certificate), - a **scan of photo ID** (personal ID or passport or driver license) - is required +1. Project ID +2. Full name and affiliation +3. Statement that you have read and accepted the [Acceptable use policy + document](http://www.it4i.cz/acceptable-use-policy.pdf) (AUP). +4. Attach the AUP file. +5. Your preferred username, max 8 characters long. The preferred + username must associate your surname and name or be otherwise + derived from it. Only alphanumeric sequences, dash and underscore + signs are allowed. +6. In case you choose [Alternative way to personal + certificate](obtaining-login-credentials.html#alternative-way-of-getting-personal-certificate), + a **scan of photo ID** (personal ID or passport or driver license) + is required Example (except the subject line which must be in English, you may use Czech or Slovak language for communication with us): - Subject: Access to IT4Innovations + Subject: Access to IT4Innovations - Dear support, + Dear support, - Please open the user account for me and attach the account to OPEN-0-0 - Name and affiliation: John Smith, john.smith@myemail.com, Department of Chemistry, MIT, US - I have read and accept the Acceptable use policy document (attached) + Please open the user account for me and attach the account to OPEN-0-0 + Name and affiliation: John Smith, john.smith@myemail.com, Department of Chemistry, MIT, US + I have read and accept the Acceptable use policy document (attached) - Preferred username: johnsm + Preferred username: johnsm - Thank you, - John Smith - (Digitally signed) + Thank you, + John Smith + (Digitally signed) Should the above information be provided by e-mail, the e-mail **must be** digitally signed. To sign an e-mail, you need digital certificate. @@ -164,9 +149,9 @@ X.509 PKI certificates for communication with us. You will receive your personal login credentials by protected e-mail. The login credentials include: -1.username -2.ssh private key and private key passphrase -3.system password +1. username +2. ssh private key and private key passphrase +3. system password The clusters are accessed by the [private key](../accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.html) @@ -206,9 +191,9 @@ electronic contact with Czech authorities is accepted as well. Certificate generation process is well-described here: -- [How to generate a personal TCS certificate in Mozilla Firefox web - browser - (in Czech)](http://idoc.vsb.cz/xwiki/wiki/infra/view/uzivatel/moz-cert-gen) +- [How to generate a personal TCS certificate in Mozilla Firefox web + browser + (in Czech)](http://idoc.vsb.cz/xwiki/wiki/infra/view/uzivatel/moz-cert-gen)  @@ -224,41 +209,41 @@ In case you choose this procedure, please attach a **scan of photo ID** (personal ID or passport or drivers license) when applying for [login credentials](obtaining-login-credentials.html#the-login-credentials). -1.Go to <https://www.cacert.org/>. - - If there's a security warning, just acknowledge it. - -2.Click *Join*. -3.Fill in the form and submit it by the *Next* button. - - Type in the e-mail address which you use for communication - with us. - - Don't forget your chosen *Pass Phrase*. - -4.You will receive an e-mail verification link. Follow it. -5.After verifying, go to the CAcert's homepage and login using - *Password Login*. -6.Go to *Client Certificates* -> *New*. -7.Tick *Add* for your e-mail address and click the *Next* button. -8.Click the *Create Certificate Request* button. -9.You'll be redirected to a page from where you can download/install - your certificate. - - Simultaneously you'll get an e-mail with a link to - the certificate. +1. Go to <https://www.cacert.org/>. + - If there's a security warning, just acknowledge it. + +2. Click *Join*. +3. Fill in the form and submit it by the *Next* button. + - Type in the e-mail address which you use for communication + with us. + - Don't forget your chosen *Pass Phrase*. + +4. You will receive an e-mail verification link. Follow it. +5. After verifying, go to the CAcert's homepage and login using + *Password Login*. +6. Go to *Client Certificates* -> *New*. +7. Tick *Add* for your e-mail address and click the *Next* button. +8. Click the *Create Certificate Request* button. +9. You'll be redirected to a page from where you can download/install + your certificate. + - Simultaneously you'll get an e-mail with a link to + the certificate. Installation of the Certificate Into Your Mail Client ----------------------------------------------------- The procedure is similar to the following guides: -- MS Outlook 2010 - - [How to Remove, Import, and Export Digital - Certificates](http://support.microsoft.com/kb/179380) - - [Importing a PKCS #12 certificate - (in Czech)](http://idoc.vsb.cz/xwiki/wiki/infra/view/uzivatel/outl-cert-imp) -- Mozilla Thudnerbird - - [Installing an SMIME - certificate](http://kb.mozillazine.org/Installing_an_SMIME_certificate) - - [Importing a PKCS #12 certificate - (in Czech)](http://idoc.vsb.cz/xwiki/wiki/infra/view/uzivatel/moz-cert-imp) +- MS Outlook 2010 + - [How to Remove, Import, and Export Digital + Certificates](http://support.microsoft.com/kb/179380) + - [Importing a PKCS #12 certificate + (in Czech)](http://idoc.vsb.cz/xwiki/wiki/infra/view/uzivatel/outl-cert-imp) +- Mozilla Thudnerbird + - [Installing an SMIME + certificate](http://kb.mozillazine.org/Installing_an_SMIME_certificate) + - [Importing a PKCS #12 certificate + (in Czech)](http://idoc.vsb.cz/xwiki/wiki/infra/view/uzivatel/moz-cert-imp) End of User Account Lifecycle ----------------------------- @@ -272,13 +257,10 @@ were attached expires. User will get 3 automatically generated warning e-mail messages of the pending removal:. -- First message will be sent 3 months before the removal -- Second message will be sent 1 month before the removal -- Third message will be sent 1 week before the removal. +- First message will be sent 3 months before the removal +- Second message will be sent 1 month before the removal +- Third message will be sent 1 week before the removal. The messages will inform about the projected removal date and will challenge the user to migrate her/his data - - - diff --git a/converted/docs.it4i.cz/index.md b/converted/docs.it4i.cz/index.md index 682b5b573..1276398b4 100644 --- a/converted/docs.it4i.cz/index.md +++ b/converted/docs.it4i.cz/index.md @@ -1,37 +1,27 @@ Documentation ============= - - - - - - - - - - - + Welcome to IT4Innovations documentation pages. The IT4Innovations national supercomputing center operates supercomputers [Salomon](salomon.html) and [Anselm](anselm.html). The supercomputers are [ -class="external-link">available](get-started-with-it4innovations/applying-for-resources.html) +available](get-started-with-it4innovations/applying-for-resources.html) to academic community within the Czech Republic and Europe and industrial community worldwide. The purpose of these pages is to provide a comprehensive documentation on hardware, software and usage of the computers. - class="link-external">How to read the documentation + How to read the documentation -------------------------------------------------------------------------------------------------- -1.Read the list in the left column. Select the subject of interest. - Alternatively, use the Search box in the upper right corner. -2.Read the CONTENTS in the upper right corner. -3.Scan for all the yellow bulb call-outs on the page. -4.Read the details if still more information is needed. **Look for - examples** illustrating the concepts. +1. Read the list in the left column. Select the subject of interest. + Alternatively, use the Search box in the upper right corner. +2. Read the CONTENTS in the upper right corner. +3. Scan for all the yellow bulb call-outs on the page. +4. Read the details if still more information is needed. **Look for + examples** illustrating the concepts.  @@ -39,9 +29,9 @@ The call-out.  Focus on the call-outs before reading full details.  -- Read the - [Changelog](get-started-with-it4innovations/changelog.html) - to keep up to date. +- Read the + [Changelog](get-started-with-it4innovations/changelog.html) + to keep up to date. Getting Help and Support ------------------------ @@ -68,11 +58,11 @@ You need basic proficiency in Linux environment. In order to use the system for your calculations, you need basic proficiency in Linux environment. To gain the proficiency, we recommend -you reading the [ class="WYSIWYG_LINK">introduction to +you reading the [ introduction to Linux](http://www.tldp.org/LDP/intro-linux/html/) operating system environment and installing a Linux distribution on your personal computer. A good choice might be the [ -class="WYSIWYG_LINK">Fedora](http://fedoraproject.org/) +Fedora](http://fedoraproject.org/) distribution, as it is similar to systems on the clusters at IT4Innovations. It's easy to install and use. In fact, any distribution would do. @@ -94,32 +84,32 @@ IT4Innovations.](http://prace.it4i.cz) Terminology Frequently Used on These Pages ------------------------------------------ -- **node:** a computer, interconnected by network to other computers - - Computational nodes are powerful computers, designed and dedicated - for executing demanding scientific computations. -- **core:** processor core, a unit of processor, executing - computations -- **corehours:** wall clock hours of processor core time - Each node - is equipped with **X** processor cores, provides **X** corehours per - 1 wall clock hour. -- **job:** a calculation running on the supercomputer - The job - allocates and utilizes resources of the supercomputer for - certain time. -- **HPC:** High Performance Computing -- **HPC (computational) resources:** corehours, storage capacity, - software licences -- **code:** a program -- **primary investigator (PI):** a person responsible for execution of - computational project and utilization of computational resources - allocated to that project -- **collaborator:** a person participating on execution of - computational project and utilization of computational resources - allocated to that project -- **project:** a computational project under investigation by the - PI - The project is identified by the project ID. The computational - resources are allocated and charged per project. -- **jobscript:** a script to be executed by the PBS Professional - workload manager +- **node:** a computer, interconnected by network to other computers - + Computational nodes are powerful computers, designed and dedicated + for executing demanding scientific computations. +- **core:** processor core, a unit of processor, executing + computations +- **corehours:** wall clock hours of processor core time - Each node + is equipped with **X** processor cores, provides **X** corehours per + 1 wall clock hour. +- **job:** a calculation running on the supercomputer - The job + allocates and utilizes resources of the supercomputer for + certain time. +- **HPC:** High Performance Computing +- **HPC (computational) resources:** corehours, storage capacity, + software licences +- **code:** a program +- **primary investigator (PI):** a person responsible for execution of + computational project and utilization of computational resources + allocated to that project +- **collaborator:** a person participating on execution of + computational project and utilization of computational resources + allocated to that project +- **project:** a computational project under investigation by the + PI - The project is identified by the project ID. The computational + resources are allocated and charged per project. +- **jobscript:** a script to be executed by the PBS Professional + workload manager Conventions ----------- @@ -152,6 +142,3 @@ entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website. - - - diff --git a/converted/docs.it4i.cz/salomon/accessing-the-cluster.md b/converted/docs.it4i.cz/salomon/accessing-the-cluster.md index b7ad64bea..a2208dfc3 100644 --- a/converted/docs.it4i.cz/salomon/accessing-the-cluster.md +++ b/converted/docs.it4i.cz/salomon/accessing-the-cluster.md @@ -1,17 +1,7 @@ Shell access and data transfer ============================== - - - - - - - - - - - + Interactive Login ----------------- @@ -25,13 +15,13 @@ The alias >salomon.it4i.cz is currently not available through VPN connection. Please use loginX.salomon.it4i.cz when connected to VPN. -Login address Port Protocol Login node ------------------------- ------ ---------- ----------------------------------------- -salomon.it4i.cz 22 ssh round-robin DNS record for login[1-4] -login1.salomon.it4i.cz 22 ssh login1 -login2.salomon.it4i.cz 22 ssh login2 -login3.salomon.it4i.cz 22 ssh login3 -login4.salomon.it4i.cz 22 ssh login4 + |Login address|Port|Protocol|Login node| + |---|---|---|---| + |salomon.it4i.cz|22|ssh|round-robin DNS record for login[1-4]| + |login1.salomon.it4i.cz|22|ssh|login1| + |login1.salomon.it4i.cz|22|ssh|login1| + |login1.salomon.it4i.cz|22|ssh|login1| + |login1.salomon.it4i.cz|22|ssh|login1| The authentication is by the [private key](../get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.html) @@ -63,19 +53,18 @@ client](../get-started-with-it4innovations/accessing-the-clusters/shell-access-a After logging in, you will see the command prompt: -                    _____      _                            -                   / ____|    | |                           -                  | (___  __ _| | ___ _ __ ___  ___ _ __  -                   ___ / _` | |/ _ | '_ ` _ / _ | '_ -                   ____) | (_| | | (_) | | | | | | (_) | | | | -                  |_____/ __,_|_|___/|_| |_| |_|___/|_| |_| -                  - -                        http://www.it4i.cz/?lang=en +                    _____      _                            +                   / ____|    | |                           +                  | (___  __ _| | ___ _ __ ___  ___ _ __  +                   ___ / _` | |/ _ | '_ ` _ / _ | '_ +                   ____) | (_| | | (_) | | | | | | (_) | | | | +                  |_____/ __,_|_|___/|_| |_| |_|___/|_| |_| +                  +                        http://www.it4i.cz/?lang=en - Last login: Tue Jul 9 15:57:38 2013 from your-host.example.com - [username@login2.salomon ~]$ + Last login: Tue Jul 9 15:57:38 2013 from your-host.example.com + [username@login2.salomon ~]$ The environment is **not** shared between login nodes, except for [shared filesystems](storage/storage.html). @@ -94,13 +83,13 @@ nodes cedge[1-3].salomon.it4i.cz for increased performance. HTML commented section #1 (removed cedge servers from the table) -Address Port Protocol ------------------------------------------------------- ------ ----------------------------------------- -salomon.it4i.cz 22 scp, sftp -login1.salomon.it4i.cz 22 scp, sftp -login2.salomon.it4i.cz 22 scp, sftp - class="discreet">login3.salomon.it4i.cz 22 scp, sftp -login4.salomon.it4i.cz 22 scp, sftp + Address Port Protocol + ------------------------------------------------------ ------ ----------------------------------------- + salomon.it4i.cz 22 scp, sftp + login1.salomon.it4i.cz 22 scp, sftp + login2.salomon.it4i.cz 22 scp, sftp + class="discreet">login3.salomon.it4i.cz 22 scp, sftp + login4.salomon.it4i.cz 22 scp, sftp  The authentication is by the [private key](../get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/ssh-keys.html) @@ -152,6 +141,3 @@ way to mount the Salomon filesystems directly as an external disc. More information about the shared file systems is available [here](storage/storage.html). - - - diff --git a/converted/docs.it4i.cz/salomon/accessing-the-cluster/outgoing-connections.md b/converted/docs.it4i.cz/salomon/accessing-the-cluster/outgoing-connections.md index 4e538c6bb..b476020be 100644 --- a/converted/docs.it4i.cz/salomon/accessing-the-cluster/outgoing-connections.md +++ b/converted/docs.it4i.cz/salomon/accessing-the-cluster/outgoing-connections.md @@ -1,17 +1,7 @@ Outgoing connections ==================== - - - - - - - - - - - + Connection restrictions ----------------------- @@ -19,12 +9,12 @@ Connection restrictions Outgoing connections, from Salomon Cluster login nodes to the outside world, are restricted to following ports: -Port Protocol ------- ---------- -22 ssh -80 http -443 https -9418 git + Port Protocol + ------ ---------- + 22 ssh + 80 http + 443 https + 9418 git Please use **ssh port forwarding** and proxy servers to connect from Salomon to all other remote ports. @@ -126,6 +116,3 @@ Use port forwarding to access the [proxy server from compute nodes](outgoing-connections.html#port-forwarding-from-compute-nodes) as well . - - - diff --git a/converted/docs.it4i.cz/salomon/accessing-the-cluster/vpn-access.md b/converted/docs.it4i.cz/salomon/accessing-the-cluster/vpn-access.md index 3a0b5b8d0..3606f72d1 100644 --- a/converted/docs.it4i.cz/salomon/accessing-the-cluster/vpn-access.md +++ b/converted/docs.it4i.cz/salomon/accessing-the-cluster/vpn-access.md @@ -1,17 +1,7 @@ VPN Access ========== - - - - - - - - - - - + Accessing IT4Innovations internal resources via VPN --------------------------------------------------- @@ -21,12 +11,12 @@ local network, it is necessary to VPN connect to this network. We use Cisco AnyConnect Secure Mobility Client, which is supported on the following operating systems: -- >Windows XP -- >Windows Vista -- >Windows 7 -- >Windows 8 -- >Linux -- >MacOS +- >Windows XP +- >Windows Vista +- >Windows 7 +- >Windows 8 +- >Linux +- >MacOS It is impossible to connect to VPN from other operating systems. @@ -36,7 +26,6 @@ It is impossible to connect to VPN from other operating systems. You can install VPN client from web interface after successful login with LDAP credentials on address <https://vpn.it4i.cz/user> -  According to the Java settings after login, the client either @@ -44,28 +33,23 @@ automatically installs, or downloads installation file for your operating system. It is necessary to allow start of installation tool for automatic installation. -  - Install](https://docs.it4i.cz/salomon/vpn_web_install_2.png/@@images/c2baba93-824b-418d-b548-a73af8030320.png "VPN Install")](../vpn_web_install_2.png)  After successful installation, VPN connection will be established and you can use available resources from IT4I network. -  If your Java setting doesn't allow automatic installation, you can download installation file and install VPN client manually. -  After you click on the link, download of installation file will start. -  After successful download of installation file, you have to execute this @@ -77,8 +61,6 @@ Working with VPN client You can use graphical user interface or command line interface to run VPN client on all supported operating systems. We suggest using GUI. - - Before the first login to VPN, you have to fill URL **https://vpn.it4i.cz/user** into the text field. @@ -113,7 +95,6 @@ address, but just select the corresponding item. Then AnyConnect automatically proceeds like in the case of first logon. -  After a successful logon, you can see a green circle with a tick mark on @@ -125,6 +106,3 @@ the lock icon. For disconnecting, right-click on the AnyConnect client icon in the system tray and select **VPN Disconnect**. - - - diff --git a/converted/docs.it4i.cz/salomon/environment-and-modules.md b/converted/docs.it4i.cz/salomon/environment-and-modules.md index 525d2a9d8..402ca9789 100644 --- a/converted/docs.it4i.cz/salomon/environment-and-modules.md +++ b/converted/docs.it4i.cz/salomon/environment-and-modules.md @@ -1,17 +1,7 @@ Environment and Modules ======================= - - - - - - - - - - - + ### Environment Customization @@ -24,7 +14,7 @@ preferred path definitions, aliases, functions and module loads in the # Source global definitions if [ -f /etc/bashrc ]; then - . /etc/bashrc + . /etc/bashrc fi # User specific aliases and functions @@ -150,25 +140,22 @@ configuration options. Recent releases of EasyBuild include out-of-the-box toolchain support for: -- various compilers, including GCC, Intel, Clang, CUDA -- common MPI libraries, such as Intel MPI, MPICH, MVAPICH2, OpenMPI -- various numerical libraries, including ATLAS, Intel MKL, OpenBLAS, - ScalaPACK, FFTW +- various compilers, including GCC, Intel, Clang, CUDA +- common MPI libraries, such as Intel MPI, MPICH, MVAPICH2, OpenMPI +- various numerical libraries, including ATLAS, Intel MKL, OpenBLAS, + ScalaPACK, FFTW  On Salomon, we have currently following toolchains installed: -Toolchain Module(s) --------------------- ------------------------------------------------ -GCC GCC -ictce icc, ifort, imkl, impi -intel GCC, icc, ifort, imkl, impi -gompi GCC, OpenMPI -goolf BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK ->iompi OpenMPI, icc, ifort -iccifort icc, ifort - - - + |Toolchain|Module(s)| + |---|----| + |GCC|GCC| + |ictce|icc, ifort, imkl, impi| + |intel|GCC, icc, ifort, imkl, impi| + |gompi|GCC, OpenMPI| + |goolf|BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK| + |iompi|OpenMPI, icc, ifort| + |iccifort|icc, ifort| diff --git a/converted/docs.it4i.cz/salomon/hardware-overview-1/hardware-overview.md b/converted/docs.it4i.cz/salomon/hardware-overview-1/hardware-overview.md index 58e4577f6..a1832dc72 100644 --- a/converted/docs.it4i.cz/salomon/hardware-overview-1/hardware-overview.md +++ b/converted/docs.it4i.cz/salomon/hardware-overview-1/hardware-overview.md @@ -1,24 +1,14 @@ Hardware Overview ================= - - - - - - - - - - - + Introduction ------------ The Salomon cluster consists of 1008 computational nodes of which 576 are regular compute nodes and 432 accelerated nodes. Each node is a - class="WYSIWYG_LINK">powerful x86-64 computer, equipped + powerful x86-64 computer, equipped with 24 cores (two twelve-core Intel Xeon processors) and 128GB RAM. The nodes are interlinked by high speed InfiniBand and Ethernet networks. All nodes share 0.5PB /home NFS disk storage to store the user files. @@ -30,7 +20,6 @@ Salomon cluster is provided by four login nodes. nodes IB topology](../network-1/ib-single-plane-topology.html). -  The parameters are summarized in the following tables: @@ -68,10 +57,10 @@ Total amount of RAM Compute nodes ------------- -Node Count Processor Cores Memory Accelerator ------------------ ------- ---------------------------------- ------- -------- -------------------------------------------- -w/o accelerator 576 2x Intel Xeon E5-2680v3, 2.5GHz 24 128GB - -MIC accelerated 432 2x Intel Xeon E5-2680v3, 2.5GHz 24 128GB 2x Intel Xeon Phi 7120P, 61cores, 16GB RAM + Node Count Processor Cores Memory Accelerator + ----------------- ------- ---------------------------------- ------- -------- -------------------------------------------- + w/o accelerator 576 2x Intel Xeon E5-2680v3, 2.5GHz 24 128GB - + MIC accelerated 432 2x Intel Xeon E5-2680v3, 2.5GHz 24 128GB 2x Intel Xeon Phi 7120P, 61cores, 16GB RAM For more details please refer to the [Compute nodes](../compute-nodes.html). @@ -82,9 +71,9 @@ Remote visualization nodes For remote visualization two nodes with NICE DCV software are available each configured: -Node Count Processor Cores Memory GPU Accelerator ---------------- ------- --------------------------------- ------- -------- ------------------------------ -visualization 2 2x Intel Xeon E5-2695v3, 2.3GHz 28 512GB NVIDIA QUADRO K5000, 4GB RAM + Node Count Processor Cores Memory GPU Accelerator + --------------- ------- --------------------------------- ------- -------- ------------------------------ + visualization 2 2x Intel Xeon E5-2695v3, 2.3GHz 28 512GB NVIDIA QUADRO K5000, 4GB RAM SGI UV 2000 ----------- @@ -93,42 +82,15 @@ For large memory computations a special SMP/NUMA SGI UV 2000 server is available: <table style="width:100%;"> -<colgroup> <col width="16%" /> <col width="16%" /> <col width="16%" /> <col width="16%" /> <col width="16%" /> <col width="16%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">Node</th> -<th align="left">Count</th> -<th align="left">Processor</th> -<th align="left">Cores</th> -<th align="left">Memory</th> -<th align="left">Extra HW</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">UV2000</td> -<td align="left">1</td> -<td align="left">14x Intel Xeon E5-4627v2, 3.3GHz, 8cores</td> -<td align="left">112</td> -<td align="left">3328GB DDR3@1866MHz</td> -<td align="left"><p>2x 400GB local SSD<br /> -1x NVIDIA GM200<br /> -(GeForce GTX TITAN X),<br /> -12GB RAM</p></td> -</tr> -</tbody> -</table> - + |Node |Count<th align="left">Processor<th align="left">Cores<th align="left">Memory<th align="left">Extra HW | + | --- | --- | + |UV2000<td align="left">1<td align="left">14x Intel Xeon E5-4627v2, 3.3GHz, 8cores<td align="left">112<td align="left">3328GB DDR3@1866MHz<td align="left">2x 400GB local SSD1x NVIDIA GM200(GeForce GTX TITAN X),12GB RAM\ |  - - - diff --git a/converted/docs.it4i.cz/salomon/index.md b/converted/docs.it4i.cz/salomon/index.md deleted file mode 100644 index 1d945a17c..000000000 --- a/converted/docs.it4i.cz/salomon/index.md +++ /dev/null @@ -1,44 +0,0 @@ -Introduction -============ - - - - - - - - - -Welcome to Salomon supercomputer cluster. The Salomon cluster consists -of 1008 compute nodes, totaling 24192 compute cores with 129TB RAM and -giving over 2 Pflop/s theoretical peak performance. Each node is a -class="WYSIWYG_LINK">powerful x86-64 computer, equipped with 24 -cores, at least 128GB RAM. Nodes are interconnected by 7D Enhanced -hypercube Infiniband network and equipped with Intel Xeon E5-2680v3 -processors. The Salomon cluster consists of 576 nodes without -accelerators and 432 nodes equipped with Intel Xeon Phi MIC -accelerators. Read more in [Hardware -Overview](hardware-overview-1/hardware-overview.html). - -The cluster runs CentOS Linux [ -class="WYSIWYG_LINK">](http://www.bull.com/bullx-logiciels/systeme-exploitation.html) -operating system, which is compatible with -the class="WYSIWYG_LINK">RedHat [ -class="WYSIWYG_LINK">Linux -family.](http://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg) - -Water-cooled Compute Nodes With MIC Accelerator** - -[](salomon) - - - -**Tape Library T950B** - - - - - - - - diff --git a/converted/docs.it4i.cz/salomon/introduction.md b/converted/docs.it4i.cz/salomon/introduction.md index 820bd868c..471506fbc 100644 --- a/converted/docs.it4i.cz/salomon/introduction.md +++ b/converted/docs.it4i.cz/salomon/introduction.md @@ -1,18 +1,10 @@ Introduction ============ - - - - - - - - Welcome to Salomon supercomputer cluster. The Salomon cluster consists of 1008 compute nodes, totaling 24192 compute cores with 129TB RAM and giving over 2 Pflop/s theoretical peak performance. Each node is a -class="WYSIWYG_LINK">powerful x86-64 computer, equipped with 24 +powerful x86-64 computer, equipped with 24 cores, at least 128GB RAM. Nodes are interconnected by 7D Enhanced hypercube Infiniband network and equipped with Intel Xeon E5-2680v3 processors. The Salomon cluster consists of 576 nodes without @@ -21,10 +13,10 @@ accelerators. Read more in [Hardware Overview](hardware-overview-1/hardware-overview.html). The cluster runs CentOS Linux [ -class="WYSIWYG_LINK">](http://www.bull.com/bullx-logiciels/systeme-exploitation.html) +](http://www.bull.com/bullx-logiciels/systeme-exploitation.html) operating system, which is compatible with -the class="WYSIWYG_LINK">RedHat [ -class="WYSIWYG_LINK">Linux +the RedHat [ +Linux family.](http://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg) Water-cooled Compute Nodes With MIC Accelerator** @@ -39,6 +31,3 @@ Water-cooled Compute Nodes With MIC Accelerator**  - - - diff --git a/converted/docs.it4i.cz/salomon/network-1/7d-enhanced-hypercube.md b/converted/docs.it4i.cz/salomon/network-1/7d-enhanced-hypercube.md index f676804ec..d02fc5b19 100644 --- a/converted/docs.it4i.cz/salomon/network-1/7d-enhanced-hypercube.md +++ b/converted/docs.it4i.cz/salomon/network-1/7d-enhanced-hypercube.md @@ -1,28 +1,20 @@ 7D Enhanced Hypercube ===================== - - - - - - - - [More about Job submission - Placement by IB switch / Hypercube dimension.](../resource-allocation-and-job-execution/job-submission-and-execution.html) Nodes may be selected via the PBS resource attribute ehc_[1-7]d . -Hypercube dimension ---------------------- ------------------------------------------- -1D ehc_1d -2D ehc_2d -3D ehc_3d -4D ehc_4d -5D ehc_5d -6D ehc_6d -7D ehc_7d + Hypercube dimension + --------------------- ------------------------------------------- + 1D ehc_1d + 2D ehc_2d + 3D ehc_3d + 4D ehc_4d + 5D ehc_5d + 6D ehc_6d + 7D ehc_7d [Schematic representation of the Salomon cluster IB single-plain topology represents hypercube @@ -34,16 +26,13 @@ dimension 0](ib-single-plane-topology.html).  -Node type Count Short name Long name Rack --------------------------------------- ------- ------------------ -------------------------- ------- -M-Cell compute nodes w/o accelerator 576 cns1 -cns576 r1i0n0 - r4i7n17 1-4 -compute nodes MIC accelerated 432 cns577 - cns1008 r21u01n577 - r37u31n1008 21-38 + Node type Count Short name Long name Rack + -------------------------------------- ------- ------------------ -------------------------- ------- + M-Cell compute nodes w/o accelerator 576 cns1 -cns576 r1i0n0 - r4i7n17 1-4 + compute nodes MIC accelerated 432 cns577 - cns1008 r21u01n577 - r37u31n1008 21-38 ###  IB Topology  [](Salomon_IB_topology.png) - - - diff --git a/converted/docs.it4i.cz/salomon/network-1/ib-single-plane-topology.md b/converted/docs.it4i.cz/salomon/network-1/ib-single-plane-topology.md index 25f628f38..6d5862912 100644 --- a/converted/docs.it4i.cz/salomon/network-1/ib-single-plane-topology.md +++ b/converted/docs.it4i.cz/salomon/network-1/ib-single-plane-topology.md @@ -1,17 +1,7 @@ IB single-plane topology ======================== - - - - - - - - - - - + A complete M-Cell assembly consists of four compute racks. Each rack contains 4x physical IRUs - Independent rack units. Using one dual @@ -22,11 +12,11 @@ The SGI ICE X IB Premium Blade provides the first level of interconnection via dual 36-port Mellanox FDR InfiniBand ASIC switch with connections as follows: -- 9 ports from each switch chip connect to the unified backplane, to - connect the 18 compute node slots -- 3 ports on each chip provide connectivity between the chips -- 24 ports from each switch chip connect to the external bulkhead, for - a total of 48 +- 9 ports from each switch chip connect to the unified backplane, to + connect the 18 compute node slots +- 3 ports on each chip provide connectivity between the chips +- 24 ports from each switch chip connect to the external bulkhead, for + a total of 48 ###IB single-plane topology - ICEX Mcell** @@ -46,15 +36,11 @@ Hypercube](7d-enhanced-hypercube.html). As shown in a diagram [IB Topology](Salomon_IB_topology.png): -- Racks 21, 22, 23, 24, 25, 26 are equivalent to one Mcell rack. -- Racks 27, 28, 29, 30, 31, 32 are equivalent to one Mcell rack. -- Racks 33, 34, 35, 36, 37, 38 are equivalent to one Mcell rack. - +- Racks 21, 22, 23, 24, 25, 26 are equivalent to one Mcell rack. +- Racks 27, 28, 29, 30, 31, 32 are equivalent to one Mcell rack. +- Racks 33, 34, 35, 36, 37, 38 are equivalent to one Mcell rack.   - - - diff --git a/converted/docs.it4i.cz/salomon/network-1/network.md b/converted/docs.it4i.cz/salomon/network-1/network.md index 56d876fc7..87a52d529 100644 --- a/converted/docs.it4i.cz/salomon/network-1/network.md +++ b/converted/docs.it4i.cz/salomon/network-1/network.md @@ -1,17 +1,7 @@ Network ======= - - - - - - - - - - - + All compute and login nodes of Salomon are interconnected by 7D Enhanced hypercube @@ -37,7 +27,7 @@ single-plain topology](ib-single-plane-topology.html) 0).[>](IB%20single-plane%20topology%20-%20Accelerated%20nodes.pdf/view.html){.state-missing-value .contenttype-file} - +- - The compute nodes may be accessed via the Infiniband network using ib0 network interface, in address range 10.17.0.0 (mask 255.255.224.0). The @@ -55,11 +45,11 @@ Example ``` $ qsub -q qexp -l select=4:ncpus=16 -N Name0 ./myjob $ qstat -n -u username - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -15209.isrv5 username qexp Name0 5530 4 96 -- 01:00 R 00:00 - r4i1n0/0*24+r4i1n1/0*24+r4i1n2/0*24+r4i1n3/0*24 +15209.isrv5 username qexp Name0 5530 4 96 -- 01:00 R 00:00 + r4i1n0/0*24+r4i1n1/0*24+r4i1n2/0*24+r4i1n3/0*24 ``` In this example, we access the node r4i1n0 by Infiniband network via the @@ -85,6 +75,3 @@ inet 10.17.35.19.... .... ``` - - - diff --git a/converted/docs.it4i.cz/salomon/prace.md b/converted/docs.it4i.cz/salomon/prace.md index 2f1655599..ec73ce655 100644 --- a/converted/docs.it4i.cz/salomon/prace.md +++ b/converted/docs.it4i.cz/salomon/prace.md @@ -1,17 +1,7 @@ PRACE User Support ================== - - - - - - - - - - - + Intro ----- @@ -78,28 +68,28 @@ project for LDAP account creation). Most of the information needed by PRACE users accessing the Salomon TIER-1 system can be found here: -- [General user's - FAQ](http://www.prace-ri.eu/Users-General-FAQs) -- [Certificates - FAQ](http://www.prace-ri.eu/Certificates-FAQ) -- [Interactive access using - GSISSH](http://www.prace-ri.eu/Interactive-Access-Using-gsissh) -- [Data transfer with - GridFTP](http://www.prace-ri.eu/Data-Transfer-with-GridFTP-Details) -- [Data transfer with - gtransfer](http://www.prace-ri.eu/Data-Transfer-with-gtransfer) +- [General user's + FAQ](http://www.prace-ri.eu/Users-General-FAQs) +- [Certificates + FAQ](http://www.prace-ri.eu/Certificates-FAQ) +- [Interactive access using + GSISSH](http://www.prace-ri.eu/Interactive-Access-Using-gsissh) +- [Data transfer with + GridFTP](http://www.prace-ri.eu/Data-Transfer-with-GridFTP-Details) +- [Data transfer with + gtransfer](http://www.prace-ri.eu/Data-Transfer-with-gtransfer)  Before you start to use any of the services don't forget to create a proxy certificate from your certificate: - $ grid-proxy-init + $ grid-proxy-init To check whether your proxy certificate is still valid (by default it's valid 12 hours), use: - $ grid-proxy-info + $ grid-proxy-info  @@ -114,22 +104,22 @@ salomon-prace.it4i.cz which is distributed between the two login nodes. If needed, user can login directly to one of the login nodes. The addresses are: -Login address Port Protocol Login node ------------------------------- ------ ---------- ---------------------------------- -salomon-prace.it4i.cz 2222 gsissh login1, login2, login3 or login4 -login1-prace.salomon.it4i.cz 2222 gsissh login1 -login2-prace.salomon.it4i.cz 2222 gsissh login2 -login3-prace.salomon.it4i.cz 2222 gsissh login3 -login4-prace.salomon.it4i.cz 2222 gsissh login4 + Login address Port Protocol Login node + ------------------------------ ------ ---------- ---------------------------------- + salomon-prace.it4i.cz 2222 gsissh login1, login2, login3 or login4 + login1-prace.salomon.it4i.cz 2222 gsissh login1 + login2-prace.salomon.it4i.cz 2222 gsissh login2 + login3-prace.salomon.it4i.cz 2222 gsissh login3 + login4-prace.salomon.it4i.cz 2222 gsissh login4  - $ gsissh -p 2222 salomon-prace.it4i.cz + $ gsissh -p 2222 salomon-prace.it4i.cz When logging from other PRACE system, the prace_service script can be used: - $ gsissh `prace_service -i -s salomon` + $ gsissh `prace_service -i -s salomon`  @@ -140,20 +130,20 @@ salomon.it4i.cz which is distributed between the two login nodes. If needed, user can login directly to one of the login nodes. The addresses are: -Login address Port Protocol Login node ------------------------- ------ ---------- ---------------------------------- -salomon.it4i.cz 2222 gsissh login1, login2, login3 or login4 -login1.salomon.it4i.cz 2222 gsissh login1 -login2.salomon.it4i.cz 2222 gsissh login2 -login3.salomon.it4i.cz 2222 gsissh login3 -login4.salomon.it4i.cz 2222 gsissh login4 + |Login address|Port|Protocol|Login node| + ------------------------ ------ ---------- ---------------------------------- + salomon.it4i.cz 2222 gsissh login1, login2, login3 or login4 + login1.salomon.it4i.cz 2222 gsissh login1 + login2.salomon.it4i.cz 2222 gsissh login2 + login3.salomon.it4i.cz 2222 gsissh login3 + login4.salomon.it4i.cz 2222 gsissh login4 - $ gsissh -p 2222 salomon.it4i.cz + $ gsissh -p 2222 salomon.it4i.cz When logging from other PRACE system, the prace_service script can be used: - $ gsissh `prace_service -e -s salomon` + $ gsissh `prace_service -e -s salomon`  @@ -162,13 +152,13 @@ GridFTP](prace.html#file-transfers), the GSI SSH implementation on Salomon supports also SCP, so for small files transfer gsiscp can be used: - $ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ salomon.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ + $ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ salomon.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ - $ gsiscp -P 2222 salomon.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ + $ gsiscp -P 2222 salomon.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ - $ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ salomon-prace.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ + $ gsiscp -P 2222 _LOCAL_PATH_TO_YOUR_FILE_ salomon-prace.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ - $ gsiscp -P 2222 salomon-prace.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ + $ gsiscp -P 2222 salomon-prace.it4i.cz:_SALOMON_PATH_TO_YOUR_FILE_ _LOCAL_PATH_TO_YOUR_FILE_ ### Access to X11 applications (VNC) @@ -183,7 +173,7 @@ the SSH based access ([look here](../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html)), only the port forwarding must be done using GSI SSH: - $ gsissh -p 2222 salomon.it4i.cz -L 5961:localhost:5961 + $ gsissh -p 2222 salomon.it4i.cz -L 5961:localhost:5961 ### Access with SSH @@ -212,66 +202,66 @@ backup in case one of them would fail. Access from PRACE network:** -Login address Port Node role -------------------------------- ------ ----------------------------- -gridftp-prace.salomon.it4i.cz 2812 Front end /control server -lgw1-prace.salomon.it4i.cz 2813 Backend / data mover server -lgw2-prace.salomon.it4i.cz 2813 Backend / data mover server -lgw3-prace.salomon.it4i.cz 2813 Backend / data mover server + Login address Port Node role + ------------------------------- ------ ----------------------------- + gridftp-prace.salomon.it4i.cz 2812 Front end /control server + lgw1-prace.salomon.it4i.cz 2813 Backend / data mover server + lgw2-prace.salomon.it4i.cz 2813 Backend / data mover server + lgw3-prace.salomon.it4i.cz 2813 Backend / data mover server Copy files **to** Salomon by running the following commands on your local machine: - $ 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_ + $ 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_ Or by using prace_service script: - $ 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_ + $ 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_ Copy files **from** Salomon: - $ 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_ + $ 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_ Or by using prace_service script: - $ 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_ + $ 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_  Access from public Internet:** -Login address Port Node role -------------------------- ------ ----------------------------- -gridftp.salomon.it4i.cz 2812 Front end /control server -lgw1.salomon.it4i.cz 2813 Backend / data mover server -lgw2.salomon.it4i.cz 2813 Backend / data mover server -lgw3.salomon.it4i.cz 2813 Backend / data mover server + Login address Port Node role + ------------------------- ------ ----------------------------- + gridftp.salomon.it4i.cz 2812 Front end /control server + lgw1.salomon.it4i.cz 2813 Backend / data mover server + lgw2.salomon.it4i.cz 2813 Backend / data mover server + lgw3.salomon.it4i.cz 2813 Backend / data mover server Copy files **to** Salomon by running the following commands on your local machine: - $ 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_ + $ 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_ Or by using prace_service script: - $ 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_ + $ 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_ Copy files **from** Salomon: - $ 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_ + $ 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_ Or by using prace_service script: - $ 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_ + $ 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_  Generally both shared file systems are available through GridFTP: -File system mount point Filesystem Comment -------------------------- ------------ ---------------------------------------------------------------- -/home Lustre Default HOME directories of users in format /home/prace/login/ -/scratch Lustre Shared SCRATCH mounted on the whole cluster + File system mount point Filesystem Comment + ------------------------- ------------ ---------------------------------------------------------------- + /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 [here](storage.html). @@ -279,10 +269,10 @@ More information about the shared file systems is available Please note, that for PRACE users a "prace" directory is used also on the SCRATCH file system. -Data type Default path ------------------------------- --------------------------------- -large project files /scratch/work/user/prace/login/ -large scratch/temporary data /scratch/temp/ + Data type Default path + ------------------------------ --------------------------------- + large project files /scratch/work/user/prace/login/ + large scratch/temporary data /scratch/temp/ Usage of the cluster -------------------- @@ -309,7 +299,7 @@ PRACE users can use the "prace" module to use the [PRACE Common Production Environment](http://www.prace-ri.eu/PRACE-common-production). - $ module load prace + $ module load prace  @@ -322,20 +312,20 @@ documentation](resource-allocation-and-job-execution/introduction.html). For PRACE users, the default production run queue is "qprace". PRACE users can also use two other queues "qexp" and "qfree". ---------------------------------------------------------------------------------------------------------------------------------------------- -queue Active project Project resources Nodes priority authorization walltime - default/max ---------------------- ---------------- ------------------- ----------------------------------------- ---------- --------------- ------------- -qexp** no none required 32 nodes, max 8 per user 150 no 1 / 1h -Express queue + --------------------------------------------------------------------------------------------------------------------------------------------- + queue Active project Project resources Nodes priority authorization walltime + default/max + --------------------- -|---|---|---|--------------------- ---------- --------------- ------------- + **qexp** no none required 32 nodes, max 8 per user 150 no 1 / 1h + Express queue -qprace** yes > 0 >1006 nodes, max 86 per job 0 no 24 / 48h -Production queue - + **qprace** yes > 0 >1006 nodes, max 86 per job 0 no 24 / 48h + Production queue + -qfree** yes none required 752 nodes, max 86 per job -1024 no 12 / 12h -Free resource queue ---------------------------------------------------------------------------------------------------------------------------------------------- + **qfree** yes none required 752 nodes, max 86 per job -1024 no 12 / 12h + Free resource queue + --------------------------------------------------------------------------------------------------------------------------------------------- qprace**, the PRACE Production queue****: This queue is intended for normal production runs. It is required that active project with nonzero @@ -370,20 +360,20 @@ The **it4ifree** command is a part of it4i.portal.clients package, located here: <https://pypi.python.org/pypi/it4i.portal.clients> - $ it4ifree - Password: -     PID  Total Used ...by me Free -   -------- ------- ------ -------- ------- -   OPEN-0-0 1500000 400644  225265 1099356 -   DD-13-1   10000 2606 2606 7394 + $ it4ifree + Password: +     PID  Total Used ...by me Free +   -------- ------- ------ -------- ------- +   OPEN-0-0 1500000 400644  225265 1099356 +   DD-13-1   10000 2606 2606 7394  By default file system quota is applied. To check the current status of the quota (separate for HOME and SCRATCH) use - $ quota - $ lfs quota -u USER_LOGIN /scratch + $ quota + $ lfs quota -u USER_LOGIN /scratch If the quota is insufficient, please contact the [support](prace.html#help-and-support) and request an @@ -393,6 +383,3 @@ increase.  - - - diff --git a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/capacity-computing.md b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/capacity-computing.md index 3b559fa7f..d70fb3434 100644 --- a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/capacity-computing.md +++ b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/capacity-computing.md @@ -1,17 +1,7 @@ Capacity computing ================== - - - - - - - - - - - + Introduction ------------ @@ -31,24 +21,24 @@ per user, 1500 per job array** Please follow one of the procedures below, in case you wish to schedule more than >100 jobs at a time. -- Use [Job arrays](capacity-computing.html#job-arrays) - when running huge number of - [multithread](capacity-computing.html#shared-jobscript-on-one-node) - (bound to one node only) or multinode (multithread across - several nodes) jobs -- Use [GNU - parallel](capacity-computing.html#gnu-parallel) when - running single core jobs -- Combine[GNU parallel with Job - arrays](capacity-computing.html#combining-job-arrays-and-gnu-parallel) - when running huge number of single core jobs +- Use [Job arrays](capacity-computing.html#job-arrays) + when running huge number of + [multithread](capacity-computing.html#shared-jobscript-on-one-node) + (bound to one node only) or multinode (multithread across + several nodes) jobs +- Use [GNU + parallel](capacity-computing.html#gnu-parallel) when + running single core jobs +- Combine[GNU parallel with Job + arrays](capacity-computing.html#combining-job-arrays-and-gnu-parallel) + when running huge number of single core jobs Policy ------ -1.A user is allowed to submit at most 100 jobs. Each job may be [a job - array](capacity-computing.html#job-arrays). -2.The array size is at most 1000 subjobs. +1. A user is allowed to submit at most 100 jobs. Each job may be [a job + array](capacity-computing.html#job-arrays). +2. The array size is at most 1000 subjobs. Job arrays -------------- @@ -59,9 +49,9 @@ A job array is a compact representation of many jobs, called subjobs. The subjobs share the same job script, and have the same values for all attributes and resources, with the following exceptions: -- each subjob has a unique index, $PBS_ARRAY_INDEX -- job Identifiers of subjobs only differ by their indices -- the state of subjobs can differ (R,Q,...etc.) +- each subjob has a unique index, $PBS_ARRAY_INDEX +- job Identifiers of subjobs only differ by their indices +- the state of subjobs can differ (R,Q,...etc.) All subjobs within a job array have the same scheduling priority and schedule as independent jobs. @@ -100,7 +90,7 @@ SCR=/scratch/work/user/$USER/$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) +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 . @@ -165,10 +155,10 @@ Check status of the job array by the qstat command. $ qstat -a 506493[].isrv5 isrv5: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -12345[].dm2 user2 qprod xx 13516 1 24 -- 00:50 B 00:02 +12345[].dm2 user2 qprod xx 13516 1 24 -- 00:50 B 00:02 ``` The status B means that some subjobs are already running. @@ -179,16 +169,16 @@ Check status of the first 100 subjobs by the qstat command. $ qstat -a 12345[1-100].isrv5 isrv5: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -12345[1].isrv5 user2 qprod xx 13516 1 24 -- 00:50 R 00:02 -12345[2].isrv5 user2 qprod xx 13516 1 24 -- 00:50 R 00:02 -12345[3].isrv5 user2 qprod xx 13516 1 24 -- 00:50 R 00:01 -12345[4].isrv5 user2 qprod xx 13516 1 24 -- 00:50 Q -- - . . . . . . . . . . . - , . . . . . . . . . . -12345[100].isrv5user2 qprod xx 13516 1 24 -- 00:50 Q -- +12345[1].isrv5 user2 qprod xx 13516 1 24 -- 00:50 R 00:02 +12345[2].isrv5 user2 qprod xx 13516 1 24 -- 00:50 R 00:02 +12345[3].isrv5 user2 qprod xx 13516 1 24 -- 00:50 R 00:01 +12345[4].isrv5 user2 qprod xx 13516 1 24 -- 00:50 Q -- + . . . . . . . . . . . + , . . . . . . . . . . +12345[100].isrv5 user2 qprod xx 13516 1 24 -- 00:50 Q -- ``` Delete the entire job array. Running subjobs will be killed, queueing @@ -393,13 +383,13 @@ Select subjob walltime and number of tasks per subjob carefully  When deciding this values, think about following guiding rules : -1.Let n=N/24. Inequality (n+1) * T < W should hold. The N is - number of tasks per subjob, T is expected single task walltime and W - is subjob walltime. Short subjob walltime improves scheduling and - job throughput. -2.Number of tasks should be modulo 24. -3.These rules are valid only when all tasks have similar task - walltimes T. +1. Let n=N/24. Inequality (n+1) * T < W should hold. The N is + number of tasks per subjob, T is expected single task walltime and W + is subjob walltime. Short subjob walltime improves scheduling and + job throughput. +2. Number of tasks should be modulo 24. +3. These rules are valid only when all tasks have similar task + walltimes T. ### Submit the job array @@ -442,6 +432,3 @@ $ cat README  - - - diff --git a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/introduction.md b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/introduction.md index 79011dfa3..e89875d5d 100644 --- a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/introduction.md +++ b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/introduction.md @@ -1,17 +1,7 @@ Resource Allocation and Job Execution ===================================== - - - - - - - - - - - + To run a [job](job-submission-and-execution.html), [computational @@ -36,12 +26,12 @@ queueing the jobs. The queues provide prioritized and exclusive access to the computational resources. Following queues are available to Anselm users: -- **qexp**, the Express queue -- **qprod**, the Production queue**** -- **qlong**, the Long queue -- **qmpp**, the Massively parallel queue -- **qfat**, the queue to access SMP UV2000 machine -- **qfree,** the Free resource utilization queue +- **qexp**, the Express queue +- **qprod**, the Production queue**** +- **qlong**, the Long queue +- **qmpp**, the Massively parallel queue +- **qfat**, the queue to access SMP UV2000 machine +- **qfree,** the Free resource utilization queue Check the queue status at <https://extranet.it4i.cz/rsweb/salomon/> @@ -67,6 +57,3 @@ execution](job-submission-and-execution.html) page. HTML commented section #1 (removed Capacity computing section, this will be optimized for Salomon) - - - diff --git a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-priority.md b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-priority.md index ed77a237c..5754dc8ea 100644 --- a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-priority.md +++ b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-priority.md @@ -1,14 +1,6 @@ Job scheduling ============== - - - - - - - - Job execution priority ---------------------- @@ -18,9 +10,9 @@ execution priority to select which job(s) to run. Job execution priority is determined by these job properties (in order of importance): -1.queue priority -2.fairshare priority -3.eligible time +1. queue priority +2. fairshare priority +3. eligible time ### Queue priority @@ -64,7 +56,6 @@ Jobs queued in queue qexp are not calculated to project's usage. >Calculated fairshare priority can be also seen as Resource_List.fairshare attribute of a job. - ### >Eligible time Eligible time is amount (in seconds) of eligible time job accrued while @@ -117,6 +108,3 @@ walltime could be backfilled - and overtake job(s) with higher priority. Job [placement can be controlled by flags during submission](job-submission-and-execution.html#job_placement). - - - diff --git a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-submission-and-execution.md b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-submission-and-execution.md index fc8dc93f3..5fe712b4c 100644 --- a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-submission-and-execution.md +++ b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/job-submission-and-execution.md @@ -1,30 +1,20 @@ Job submission and execution ============================ - - - - - - - - - - - + Job Submission -------------- When allocating computational resources for the job, please specify -1.suitable queue for your job (default is qprod) -2.number of computational nodes required -3.number of cores per node required -4.maximum wall time allocated to your calculation, note that jobs - exceeding maximum wall time will be killed -5.Project ID -6.Jobscript or interactive switch +1. suitable queue for your job (default is qprod) +2. number of computational nodes required +3. number of cores per node required +4. maximum wall time allocated to your calculation, note that jobs + exceeding maximum wall time will be killed +5. Project ID +6. Jobscript or interactive switch Use the **qsub** command to submit your job to a queue for allocation of the computational resources. @@ -45,7 +35,6 @@ on first of the allocated nodes.** PBS statement nodes (qsub -l nodes=nodespec) is not supported on Salomon cluster.** - ### Job Submission Examples ``` @@ -106,7 +95,7 @@ PRACE users. There's no need to ask for permission to utilize the Phi cards in project proposals. ``` -$ qsub-A OPEN-0-0 -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 ./myjob +$ qsub -A OPEN-0-0 -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 ./myjob ``` In this example, we allocate 1 node, with 24 cores, with 2 Xeon Phi @@ -114,7 +103,7 @@ In this example, we allocate 1 node, with 24 cores, with 2 Xeon Phi used, e. g. 24 hours. ``` -$ qsub-A OPEN-0-0 -I -q qlong -l select=4:ncpus=24:accelerator=True:naccelerators=2 -l walltime=56:00:00 -I +$ qsub -A OPEN-0-0 -I -q qlong -l select=4:ncpus=24:accelerator=True:naccelerators=2 -l walltime=56:00:00 -I ``` In this example, we allocate 4 nodes, with 24 cores per node (totalling @@ -199,15 +188,15 @@ available interactively. Nodes may be selected via the PBS resource attribute ehc_[1-7]d . -Hypercube dimension ---------------------- ------------------------------------------- -1D ehc_1d -2D ehc_2d -3D ehc_3d -4D ehc_4d -5D ehc_5d -6D ehc_6d -7D ehc_7d + Hypercube dimension + --------------------- ------------------------------------------- + 1D ehc_1d + 2D ehc_2d + 3D ehc_3d + 4D ehc_4d + 5D ehc_5d + 6D ehc_6d + 7D ehc_7d  @@ -215,16 +204,12 @@ Hypercube dimension $ qsub -A OPEN-0-0 -q qprod -l select=4:ncpus=24 -l place=group=ehc_1d -I ``` - In this example, we allocate 4 nodes, 24 cores, selecting only the nodes with [hypercube dimension](../network-1/7d-enhanced-hypercube.html) 1. - - ### 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](../network-1.html) . Nodes sharing @@ -232,22 +217,10 @@ the leaf switch can communicate most efficiently. Sharing the same switch prevents hops in the network and provides for unbiased, most efficient network communication. - - - - - - There are at most 9 nodes sharing the same Infiniband switch. - - - - Infiniband switch list: - - ``` $ qmgr -c "print node @a" | grep switch set node r4i1n11 resources_available.switch = r4i1s0sw1 @@ -256,11 +229,8 @@ set node r2i0n1 resources_available.switch = r2i0s0sw1 ... ``` - List of all nodes per Infiniband switch: - - ``` $ qmgr -c "print node @a" | grep r36sw3 set node r36u31n964 resources_available.switch = r36sw3 @@ -274,45 +244,27 @@ set node r37u33n971 resources_available.switch = r36sw3 set node r37u34n972 resources_available.switch = r36sw3 ``` - - - Nodes sharing the same switch may be selected via the PBS resource attribute switch. - We recommend allocating compute nodes of a single switch when best possible computational network performance is required to run the job efficiently: - - ``` $ qsub -A OPEN-0-0 -q qprod -l select=9:ncpus=24:switch=r4i1s0sw1 ./myjob ``` - In this example, we request all the 9 nodes sharing the r4i1s0sw1 switch for 24 hours. - - - ``` $ qsub -A OPEN-0-0 -q qprod -l select=9:ncpus=24 -l place=group=switch ./myjob ``` - - - In this example, we request 9 nodes placed on the same switch using node grouping placement for 24 hours. - - - - - HTML commented section #1 (turbo boost is to be implemented) Job Management @@ -334,12 +286,12 @@ Example: $ qstat -a srv11: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -16287.isrv5 user1 qlong job1 6183 4 64 -- 144:0 R 38:25 -16468.isrv5 user1 qlong job2 8060 4 64 -- 144:0 R 17:44 -16547.isrv5 user2 qprod job3x 13516 2 32 -- 48:00 R 00:58 +16287.isrv5 user1 qlong job1 6183 4 64 -- 144:0 R 38:25 +16468.isrv5 user1 qlong job2 8060 4 64 -- 144:0 R 17:44 +16547.isrv5 user2 qprod job3x 13516 2 32 -- 48:00 R 00:58 ``` In this example user1 and user2 are running jobs named job1, job2 and @@ -382,11 +334,11 @@ $ check-pbs-jobs --print-load --print-processes JOB 35141.dm2, session_id 71995, user user2, nodes r3i6n2,r3i6n3 Print load r3i6n2: LOAD: 16.01, 16.01, 16.00 -r3i6n3: LOAD:0.01, 0.00, 0.01 +r3i6n3: LOAD: 0.01, 0.00, 0.01 Print processes - %CPU CMD -r3i6n2:0.0 -bash -r3i6n2:0.0 /bin/bash /var/spool/PBS/mom_priv/jobs/35141.dm2.SC + %CPU CMD +r3i6n2: 0.0 -bash +r3i6n2: 0.0 /bin/bash /var/spool/PBS/mom_priv/jobs/35141.dm2.SC r3i6n2: 99.7 run-task ... ``` @@ -399,7 +351,7 @@ empty, which may indicate an execution error. $ check-pbs-jobs --jobid 35141.dm2 --print-job-out JOB 35141.dm2, session_id 71995, user user2, nodes r3i6n2,r3i6n3 Print job standard output: -======================== Job start========================== +======================== Job start ========================== Started at   : Fri Aug 30 02:47:53 CEST 2013 Script name  : script Run loop 1 @@ -452,11 +404,11 @@ $ qsub -q qexp -l select=4:ncpus=24 -N Name0 ./myjob $ qstat -n -u username isrv5: - Req'd Req'd Elap -Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time + Req'd Req'd Elap +Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time --------------- -------- -------- ---------- ------ --- --- ------ ----- - ----- -15209.isrv5 username qexp Name0 5530 4 96 -- 01:00 R 00:00 - r21u01n577/0*24+r21u02n578/0*24+r21u03n579/0*24+r21u04n580/0*24 +15209.isrv5 username qexp Name0 5530 4 96 -- 01:00 R 00:00 + r21u01n577/0*24+r21u02n578/0*24+r21u03n579/0*24+r21u04n580/0*24 ```  In this example, the nodes r21u01n577, r21u02n578, r21u03n579, @@ -585,14 +537,12 @@ options for qsub are stored within the script : SCRDIR=/scratch/work/user/$USER/myjob cd $SCRDIR || exit - # load the mpi module module load OpenMPI # execute the calculation mpiexec ./mympiprog.x - #exit exit ``` @@ -645,6 +595,3 @@ may use threads. HTML commented section #3 (Capacity computing need to be reworked) - - - diff --git a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/resources-allocation-policy.md b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/resources-allocation-policy.md index 685681fdd..89332118d 100644 --- a/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/resources-allocation-policy.md +++ b/converted/docs.it4i.cz/salomon/resource-allocation-and-job-execution/resources-allocation-policy.md @@ -1,17 +1,7 @@ Resources Allocation Policy =========================== - - - - - - - - - - - + Resources Allocation Policy --------------------------- @@ -27,8 +17,6 @@ resources. Following table provides the queue partitioning overview:  -<table> -<colgroup> <col width="12%" /> <col width="12%" /> <col width="12%" /> @@ -37,102 +25,15 @@ resources. Following table provides the queue partitioning overview: <col width="12%" /> <col width="12%" /> <col width="12%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">queue</th> -<th align="left">active project</th> -<th align="left">project resources</th> -<th align="left">nodes</th> -<th align="left">min ncpus*</th> -<th align="left">priority</th> -<th align="left">authorization</th> -<th align="left">walltime<br /> -default/max</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left"><strong>qexp</strong><br /> -Express queue</td> -<td align="left">no</td> -<td align="left">none required</td> -<td align="left">32 nodes, max 8 per user</td> -<td align="left">24</td> -<td align="left">>150</td> -<td align="left">no</td> -<td align="left">1 / 1h</td> -</tr> -<tr class="even"> -<td align="left"><strong>qprod</strong><br /> -Production queue</td> -<td align="left">yes<br /> -<br /> -</td> -<td align="left">> 0</td> -<td align="left"><p>>1006 nodes, max 86 per job</p></td> -<td align="left">24</td> -<td align="left">0</td> -<td align="left">no</td> -<td align="left">24 / 48h</td> -</tr> -<tr class="odd"> -<td align="left"><strong>qlong</strong><br /> -Long queue</td> -<td align="left">yes</td> -<td align="left">> 0</td> -<td align="left">256 nodes, max 40 per job</td> -<td align="left">24</td> -<td align="left">0</td> -<td align="left">no</td> -<td align="left">72 / 144h</td> -</tr> -<tr class="even"> -<td align="left"><strong>qmpp<br /> -</strong>Massive parallel queue</td> -<td align="left">yes</td> -<td align="left">> 0</td> -<td align="left">1006 nodes</td> -<td align="left">24</td> -<td align="left">0</td> -<td align="left">yes</td> -<td align="left">2 / 4h</td> -</tr> -<tr class="odd"> -<td align="left"><strong>qfat<br /> -</strong>UV2000 queue</td> -<td align="left">yes</td> -<td align="left"><p>> 0</p></td> -<td align="left">1 (uv1)</td> -<td align="left">8</td> -<td align="left">0</td> -<td align="left">yes</td> -<td align="left">24 / 48h</td> -</tr> -<tr class="even"> -<td align="left"><strong>qfree</strong><br /> -Free resource queue</td> -<td align="left">yes</td> -<td align="left">none required</td> -<td align="left">752 nodes, max 86 per job</td> -<td align="left">24</td> -<td align="left">-1024</td> -<td align="left">no</td> -<td align="left">12 / 12h</td> -</tr> -<tr class="odd"> -<td align="left"><strong><strong>qviz</strong><br /> -</strong>Visualization queue</td> -<td align="left">yes</td> -<td align="left">none required</td> -<td align="left">2 (with NVIDIA Quadro K5000)</td> -<td align="left">4</td> -<td align="left">150</td> -<td align="left">no</td> -<td align="left">1 / 2h</td> -</tr> -</tbody> -</table> + |queue |active project<th align="left">project resources<th align="left">nodes<th align="left">min ncpus*<th align="left">priority<th align="left">authorization<th align="left">walltimedefault/max | + | --- | --- | + |<strong>qexp</strong>Express queue |no<td align="left">none required<td align="left">32 nodes, max 8 per user<td align="left">24<td align="left">>150<td align="left">no<td align="left">1 / 1h | + |<strong>qprod</strong>Production queue |yes |> 0<td align="left">>1006 nodes, max 86 per job\<td align="left">24<td align="left">0<td align="left">no<td align="left">24 / 48h | + |<strong>qlong</strong>Long queue |yes<td align="left">> 0<td align="left">256 nodes, max 40 per job, only non-accelerated nodes allowed<td align="left">24<td align="left">0<td align="left">no<td align="left">72 / 144h | + |<strong>qmpp</strong>Massive parallel queue |yes<td align="left">> 0<td align="left">1006 nodes<td align="left">24<td align="left">0<td align="left">yes<td align="left">2 / 4h | + |<strong>qfat</strong>UV2000 queue |yes<td align="left">> 0\<td align="left">1 (uv1)<td align="left">8<td align="left">0<td align="left">yes<td align="left">24 / 48h | + |<strong>qfree</strong>Free resource queue |yes<td align="left">none required<td align="left">752 nodes, max 86 per job<td align="left">24<td align="left">-1024<td align="left">no<td align="left">12 / 12h | + |<strong><strong>qviz</strong></strong>Visualization queue |yes<td align="left">none required<td align="left">2 (with NVIDIA Quadro K5000)<td align="left">4<td align="left">150<td align="left">no<td align="left">1 / 2h |  @@ -146,67 +47,67 @@ is allowed after request for this queue.  -- **qexp**, the Express queue: This queue is dedicated for testing and - running very small jobs. It is not required to specify a project to - enter the qexp. >*>There are 2 nodes always reserved for - this queue (w/o accelerator), maximum 8 nodes are available via the - qexp for a particular user. *The nodes may be - allocated on per core basis. No special authorization is required to - use it. The maximum runtime in qexp is 1 hour. -- **qprod**, the Production queue****: This queue is intended for - normal production runs. It is required that active project with - nonzero remaining resources is specified to enter the qprod. All - nodes may be accessed via the qprod queue, however only 86 per job. - ** Full nodes, 24 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 active project with nonzero - remaining resources is specified to enter the qlong. Only 336 nodes - without acceleration may be accessed via the qlong queue. Full - nodes, 24 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 of the - standard qprod time - 3 * 48 h)* -- >****qmpp**, the massively parallel queue. This queue is - intended for massively parallel runs. It is required that active - project with nonzero remaining resources is specified to enter - the qmpp. All nodes may be accessed via the qmpp queue. ** Full - nodes, 24 cores per node are allocated. The queue runs with medium - priority and no special authorization is required to use it. The - maximum runtime in qmpp is 4 hours. An PI> *needs explicitly* - ask [support](https://support.it4i.cz/rt/) - for authorization to enter the queue for all users associated to - her/his Project. - -- >****qfat**, the UV2000 queue. This queue is dedicated - to access the fat SGI UV2000 SMP machine. The machine (uv1) has 112 - Intel IvyBridge cores at 3.3GHz and 3.25TB RAM. An PI> *needs - explicitly* ask - [support](https://support.it4i.cz/rt/) for - authorization to enter the queue for all users associated to her/his - Project.**** -- **qfree**, the Free resource queue****: The queue qfree is intended - for utilization of free resources, after a Project exhausted all its - allocated computational resources (Does not apply to DD projects - by default. DD projects have to request for persmission on qfree - after exhaustion of computational resources.). It is required that - active project is specified to enter the queue, however no remaining - resources are required. Consumed resources will be accounted to - the Project. Only 178 nodes without accelerator may be accessed from - this queue. Full nodes, 24 cores per node are allocated. The queue - runs with very low priority and no special authorization is required - to use it. The maximum runtime in qfree is 12 hours. -- **qviz**, the Visualization queue****: Intended for - pre-/post-processing using OpenGL accelerated graphics. Currently - when accessing the node, each user gets 4 cores of a CPU allocated, - thus approximately 73 GB of RAM and 1/7 of the GPU capacity - (default "chunk"). *If more GPU power or RAM is required, it is - recommended to allocate more chunks (with 4 cores each) up to one - whole node per user, so that all 28 cores, 512 GB RAM and whole GPU - is exclusive. This is currently also the maximum allowed allocation - per one user. One hour of work is allocated by default, the user may - ask for 2 hours maximum.* +- **qexp**, the Express queue: This queue is dedicated for testing and + running very small jobs. It is not required to specify a project to + enter the qexp. >*>There are 2 nodes always reserved for + this queue (w/o accelerator), maximum 8 nodes are available via the + qexp for a particular user. *The nodes may be + allocated on per core basis. No special authorization is required to + use it. The maximum runtime in qexp is 1 hour. +- **qprod**, the Production queue****: This queue is intended for + normal production runs. It is required that active project with + nonzero remaining resources is specified to enter the qprod. All + nodes may be accessed via the qprod queue, however only 86 per job. + ** Full nodes, 24 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 active project with nonzero + remaining resources is specified to enter the qlong. Only 336 nodes + without acceleration may be accessed via the qlong queue. Full + nodes, 24 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 of the + standard qprod time - 3 * 48 h)* +- >****qmpp**, the massively parallel queue. This queue is + intended for massively parallel runs. It is required that active + project with nonzero remaining resources is specified to enter + the qmpp. All nodes may be accessed via the qmpp queue. ** Full + nodes, 24 cores per node are allocated. The queue runs with medium + priority and no special authorization is required to use it. The + maximum runtime in qmpp is 4 hours. An PI> *needs explicitly* + ask [support](https://support.it4i.cz/rt/) + for authorization to enter the queue for all users associated to + her/his Project. + +- >****qfat**, the UV2000 queue. This queue is dedicated + to access the fat SGI UV2000 SMP machine. The machine (uv1) has 112 + Intel IvyBridge cores at 3.3GHz and 3.25TB RAM. An PI> *needs + explicitly* ask + [support](https://support.it4i.cz/rt/) for + authorization to enter the queue for all users associated to her/his + Project.**** +- **qfree**, the Free resource queue****: The queue qfree is intended + for utilization of free resources, after a Project exhausted all its + allocated computational resources (Does not apply to DD projects + by default. DD projects have to request for persmission on qfree + after exhaustion of computational resources.). It is required that + active project is specified to enter the queue, however no remaining + resources are required. Consumed resources will be accounted to + the Project. Only 178 nodes without accelerator may be accessed from + this queue. Full nodes, 24 cores per node are allocated. The queue + runs with very low priority and no special authorization is required + to use it. The maximum runtime in qfree is 12 hours. +- **qviz**, the Visualization queue****: Intended for + pre-/post-processing using OpenGL accelerated graphics. Currently + when accessing the node, each user gets 4 cores of a CPU allocated, + thus approximately 73 GB of RAM and 1/7 of the GPU capacity + (default "chunk"). *If more GPU power or RAM is required, it is + recommended to allocate more chunks (with 4 cores each) up to one + whole node per user, so that all 28 cores, 512 GB RAM and whole GPU + is exclusive. This is currently also the maximum allowed allocation + per one user. One hour of work is allocated by default, the user may + ask for 2 hours maximum.*  @@ -216,7 +117,6 @@ statement](job-submission-and-execution.html). ### Notes** - The job wall clock time defaults to **half the maximum time**, see table above. Longer wall time limits can be [set manually, see examples](job-submission-and-execution.html). @@ -334,14 +234,11 @@ clusters' login nodes. ``` $ it4ifree Password: -    PID  Total Used ...by me Free +    PID  Total Used ...by me Free   -------- ------- ------ -------- -------   OPEN-0-0 1500000 400644  225265 1099356 -  DD-13-1   10000 2606 2606 7394 +  DD-13-1   10000 2606 2606 7394 ```  - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/ansys-cfx.md b/converted/docs.it4i.cz/salomon/software/ansys/ansys-cfx.md index 7710a0244..467fa0d56 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/ansys-cfx.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/ansys-cfx.md @@ -1,14 +1,6 @@ ANSYS CFX ========= - - - - - - - - [ANSYS CFX](http://www.ansys.com/Products/Simulation+Technology/Fluid+Dynamics/Fluid+Dynamics+Products/ANSYS+CFX) software is a high-performance, general purpose fluid dynamics program @@ -26,48 +18,48 @@ language. >To run ANSYS CFX in batch mode you can utilize/modify the default cfx.pbs script and execute it via the qsub command. - #!/bin/bash - #PBS -l nodes=2:ppn=24 - #PBS -q qprod - #PBS -N $USER-CFX-Project - #PBS -A OPEN-0-0 - - #! Mail to user when job terminate or abort - #PBS -m ae - - #!change the working directory (default is home directory) - #cd <working directory> (working directory must exists) - WORK_DIR="/scratch/work/user/$USER" - cd $WORK_DIR - - echo Running on host `hostname` - echo Time is `date` - echo Directory is `pwd` - echo This jobs runs on the following processors: - echo `cat $PBS_NODEFILE` - - module load ANSYS - - #### Set number of processors per host listing - procs_per_host=24 - #### Create host list - hl="" - for host in `cat $PBS_NODEFILE` - do - if [ "$hl" = "" ] - then hl="$host:$procs_per_host" - else hl="${hl}:$host:$procs_per_host" - fi - done - - echo Machines: $hl - - # prevent ANSYS from attempting to use scif0 interface - export MPI_IC_ORDER="UDAPL" - - #-dev input.def includes the input of CFX analysis in DEF format - #-P the name of prefered license feature (aa_r=ANSYS Academic Research, ane3fl=Multiphysics(commercial)) - cfx5solve -def input.def -size 4 -size-ni 4x -part-large -start-method "Platform MPI Distributed Parallel" -par-dist $hl -P aa_r + #!/bin/bash + #PBS -l nodes=2:ppn=24 + #PBS -q qprod + #PBS -N $USER-CFX-Project + #PBS -A OPEN-0-0 + + #! Mail to user when job terminate or abort + #PBS -m ae + + #!change the working directory (default is home directory) + #cd <working directory> (working directory must exists) + WORK_DIR="/scratch/work/user/$USER" + cd $WORK_DIR + + echo Running on host `hostname` + echo Time is `date` + echo Directory is `pwd` + echo This jobs runs on the following processors: + echo `cat $PBS_NODEFILE` + + module load ANSYS + + #### Set number of processors per host listing + procs_per_host=24 + #### Create host list + hl="" + for host in `cat $PBS_NODEFILE` + do + if [ "$hl" = "" ] + then hl="$host:$procs_per_host" + else hl="${hl}:$host:$procs_per_host" + fi + done + + echo Machines: $hl + + # prevent ANSYS from attempting to use scif0 interface + export MPI_IC_ORDER="UDAPL" + + #-dev input.def includes the input of CFX analysis in DEF format + #-P the name of prefered license feature (aa_r=ANSYS Academic Research, ane3fl=Multiphysics(commercial)) + cfx5solve -def input.def -size 4 -size-ni 4x -part-large -start-method "Platform MPI Distributed Parallel" -par-dist $hl -P aa_r Header of the pbs file (above) is common and description can be find [this @@ -93,6 +85,3 @@ Multiphysics)-**Commercial.** your [license preferences](setting-license-preferences.html) instead. - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/ansys-fluent.md b/converted/docs.it4i.cz/salomon/software/ansys/ansys-fluent.md index 7c1cb2e4e..7830ed906 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/ansys-fluent.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/ansys-fluent.md @@ -1,14 +1,6 @@ ANSYS Fluent ============ - - - - - - - - [ANSYS Fluent](http://www.ansys.com/Products/Simulation+Technology/Fluid+Dynamics/Fluid+Dynamics+Products/ANSYS+Fluent) software contains the broad physical modeling capabilities needed to @@ -26,34 +18,34 @@ multiphase systems have served to broaden its reach. >To run ANSYS Fluent in batch mode you can utilize/modify the default fluent.pbs script and execute it via the qsub command. - #!/bin/bash - #PBS -S /bin/bash - #PBS -l nodes=2:ppn=24 - #PBS -q qprod - #PBS -N Fluent-Project - #PBS -A OPEN-0-0 + #!/bin/bash + #PBS -S /bin/bash + #PBS -l nodes=2:ppn=24 + #PBS -q qprod + #PBS -N Fluent-Project + #PBS -A OPEN-0-0 - #! Mail to user when job terminate or abort - #PBS -m ae + #! Mail to user when job terminate or abort + #PBS -m ae - #!change the working directory (default is home directory) - #cd <working directory> (working directory must exists) - WORK_DIR="/scratch/work/user/$USER" - cd $WORK_DIR + #!change the working directory (default is home directory) + #cd <working directory> (working directory must exists) + WORK_DIR="/scratch/work/user/$USER" + cd $WORK_DIR - echo Running on host `hostname` - echo Time is `date` - echo Directory is `pwd` - echo This jobs runs on the following processors: - echo `cat $PBS_NODEFILE` + echo Running on host `hostname` + echo Time is `date` + echo Directory is `pwd` + echo This jobs runs on the following processors: + echo `cat $PBS_NODEFILE` - #### Load ansys module so that we find the cfx5solve command - module load ANSYS + #### Load ansys module so that we find the cfx5solve command + module load ANSYS - # Use following line to specify MPI for message-passing instead - NCORES=`wc -l $PBS_NODEFILE |awk '{print $1}'` + # Use following line to specify MPI for message-passing instead + NCORES=`wc -l $PBS_NODEFILE |awk '{print $1}'` - /apps/cae/ANSYS/16.1/v161/fluent/bin/fluent 3d -t$NCORES -cnf=$PBS_NODEFILE -g -i fluent.jou + /apps/cae/ANSYS/16.1/v161/fluent/bin/fluent 3d -t$NCORES -cnf=$PBS_NODEFILE -g -i fluent.jou Header of the pbs file (above) is common and description can be find on [this @@ -74,13 +66,13 @@ Journal file with definition of the input geometry and boundary conditions and defined process of solution has e.g. the following structure: - /file/read-case aircraft_2m.cas.gz - /solve/init - init - /solve/iterate - 10 - /file/write-case-dat aircraft_2m-solution - /exit yes + /file/read-case aircraft_2m.cas.gz + /solve/init + init + /solve/iterate + 10 + /file/write-case-dat aircraft_2m-solution + /exit yes >The appropriate dimension of the problem has to be set by parameter (2d/3d). @@ -88,9 +80,7 @@ parameter (2d/3d). >2. Fast way to run Fluent from command line -------------------------------------------------------- - - fluent solver_version [FLUENT_options] -i journal_file -pbs - + fluent solver_version [FLUENT_options] -i journal_file -pbs This syntax will start the ANSYS FLUENT job under PBS Professional using the qsub command in a batch manner. When @@ -107,7 +97,6 @@ fluent.o> 3. Running Fluent via user's config file ---------------------------------------- - The sample script uses a configuration file called pbs_fluent.conf  if no command line arguments are present. This configuration file should be present in the directory @@ -116,17 +105,15 @@ the jobs are executed). The following is an example of what the content of pbs_fluent.conf can be: ``` -input="example_small.flin" -case="Small-1.65m.cas" -fluent_args="3d -pmyrinet" -outfile="fluent_test.out" -mpp="true" + input="example_small.flin" + case="Small-1.65m.cas" + fluent_args="3d -pmyrinet" + outfile="fluent_test.out" + mpp="true" ``` The following is an explanation of the parameters: - - > input is the name of the input file. @@ -150,21 +137,10 @@ the standard output will be sent. mpp="true" will tell the job script to execute the job across multiple processors.         - - - - - - - - - - >To run ANSYS Fluent in batch mode with user's config file you can utilize/modify the following script and execute it via the qsub command. - ``` #!/bin/sh #PBS -l nodes=2:ppn=24 @@ -176,30 +152,30 @@ command. #We assume that if they didn’t specify arguments then they should use the #config file if [ "xx${input}${case}${mpp}${fluent_args}zz" = "xxzz" ]; then - if [ -f pbs_fluent.conf ]; then - . pbs_fluent.conf - else - printf "No command line arguments specified, " - printf "and no configuration file found. Exiting n" - fi + if [ -f pbs_fluent.conf ]; then + . pbs_fluent.conf + else + printf "No command line arguments specified, " + printf "and no configuration file found. Exiting n" + fi fi #Augment the ANSYS FLUENT command line arguments case "$mpp" in - true) - #MPI job execution scenario - num_nodes=â€cat $PBS_NODEFILE | sort -u | wc -l†- cpus=â€expr $num_nodes * $NCPUS†- #Default arguments for mpp jobs, these should be changed to suit your - #needs. - fluent_args="-t${cpus} $fluent_args -cnf=$PBS_NODEFILE" - ;; - *) - #SMP case - #Default arguments for smp jobs, should be adjusted to suit your - #needs. - fluent_args="-t$NCPUS $fluent_args" - ;; + true) + #MPI job execution scenario + num_nodes=â€cat $PBS_NODEFILE | sort -u | wc -l†+ cpus=â€expr $num_nodes * $NCPUS†+ #Default arguments for mpp jobs, these should be changed to suit your + #needs. + fluent_args="-t${cpus} $fluent_args -cnf=$PBS_NODEFILE" + ;; + *) + #SMP case + #Default arguments for smp jobs, should be adjusted to suit your + #needs. + fluent_args="-t$NCPUS $fluent_args" + ;; esac #Default arguments for all jobs fluent_args="-ssh -g -i $input $fluent_args" @@ -214,8 +190,6 @@ command. /apps/cae/ANSYS/16.1/v161/fluent/bin/fluent $fluent_args > $outfile ``` - - >It runs the jobs out of the directory from which they are submitted (PBS_O_WORKDIR). @@ -230,6 +204,3 @@ run](setting-license-preferences.html).  - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/ansys-ls-dyna.md b/converted/docs.it4i.cz/salomon/software/ansys/ansys-ls-dyna.md index a11892745..35dfd4a0a 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/ansys-ls-dyna.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/ansys-ls-dyna.md @@ -1,14 +1,6 @@ ANSYS LS-DYNA ============= - - - - - - - - [ANSYS LS-DYNA](http://www.ansys.com/Products/Simulation+Technology/Structural+Mechanics/Explicit+Dynamics/ANSYS+LS-DYNA) software provides convenient and easy-to-use access to the @@ -30,46 +22,46 @@ environment. >To run ANSYS LS-DYNA in batch mode you can utilize/modify the default ansysdyna.pbs script and execute it via the qsub command. - #!/bin/bash - #PBS -l nodes=2:ppn=24 - #PBS -q qprod - #PBS -N DYNA-Project - #PBS -A OPEN-0-0 + #!/bin/bash + #PBS -l nodes=2:ppn=24 + #PBS -q qprod + #PBS -N DYNA-Project + #PBS -A OPEN-0-0 - #! Mail to user when job terminate or abort - #PBS -m ae + #! Mail to user when job terminate or abort + #PBS -m ae - #!change the working directory (default is home directory) - #cd <working directory> - WORK_DIR="/scratch/work/user/$USER" - cd $WORK_DIR + #!change the working directory (default is home directory) + #cd <working directory> + WORK_DIR="/scratch/work/user/$USER" + cd $WORK_DIR - echo Running on host `hostname` - echo Time is `date` - echo Directory is `pwd` - echo This jobs runs on the following processors: - echo `cat $PBS_NODEFILE` + echo Running on host `hostname` + echo Time is `date` + echo Directory is `pwd` + echo This jobs runs on the following processors: + echo `cat $PBS_NODEFILE` - module load ANSYS + module load ANSYS - #### Set number of processors per node - procs_per_host=24 - #### Create host list - hl="" - for host in `cat $PBS_NODEFILE` - do - if [ "$hl" = "" ] - then hl="$host:$procs_per_host" - else hl="${hl}:$host:$procs_per_host" - fi - done + #### Set number of processors per node + procs_per_host=24 + #### Create host list + hl="" + for host in `cat $PBS_NODEFILE` + do + if [ "$hl" = "" ] + then hl="$host:$procs_per_host" + else hl="${hl}:$host:$procs_per_host" + fi + done - echo Machines: $hl + echo Machines: $hl - # prevent ANSYS from attempting to use scif0 interface - export MPI_IC_ORDER="UDAPL" + # prevent ANSYS from attempting to use scif0 interface + export MPI_IC_ORDER="UDAPL" - lsdyna161 -dis -usessh -machines "$hl" i=input.k + lsdyna161 -dis -usessh -machines "$hl" i=input.k >Header of the pbs file (above) is common and description can be find > on [this @@ -92,7 +84,3 @@ will fail. >> - - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/ansys-mechanical-apdl.md b/converted/docs.it4i.cz/salomon/software/ansys/ansys-mechanical-apdl.md index 0c3c6d9be..e54cdf275 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/ansys-mechanical-apdl.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/ansys-mechanical-apdl.md @@ -1,14 +1,6 @@ ANSYS MAPDL =========== - - - - - - - - >**[ANSYS Multiphysics](http://www.ansys.com/Products/Simulation+Technology/Structural+Mechanics/ANSYS+Multiphysics)** software offers a comprehensive product solution for both multiphysics @@ -21,49 +13,49 @@ multi-field solver. >To run ANSYS MAPDL in batch mode you can utilize/modify the default mapdl.pbs script and execute it via the qsub command. - #!/bin/bash - #PBS -l nodes=2:ppn=24 - #PBS -q qprod - #PBS -N ANSYS-Project - #PBS -A OPEN-0-0 - - #! Mail to user when job terminate or abort - #PBS -m ae - - #!change the working directory (default is home directory) - #cd <working directory> (working directory must exists) - WORK_DIR="/scratch/work/user/$USER" - cd $WORK_DIR - - echo Running on host `hostname` - echo Time is `date` - echo Directory is `pwd` - echo This jobs runs on the following processors: - echo `cat $PBS_NODEFILE` - - module load ANSYS/16.1 - - #### Set number of processors per host listing - procs_per_host=24 - #### Create host list - hl="" - for host in `cat $PBS_NODEFILE` - do - if [ "$hl" = "" ] - then hl="$host:$procs_per_host" - else hl="${hl}:$host:$procs_per_host" - fi - done - - echo Machines: $hl - - # prevent ANSYS from attempting to use scif0 interface - export MPI_IC_ORDER="UDAPL" - - #-i input.dat includes the input of analysis in APDL format - #-o file.out is output file from ansys where all text outputs will be redirected - #-p the name of license feature (aa_r=ANSYS Academic Research, ane3fl=Multiphysics(commercial), aa_r_dy=Academic AUTODYN) - ansys161 -b -dis -usessh -p aa_r -i input.dat -o file.out -machines "$hl" -dir $WORK_DIR + #!/bin/bash + #PBS -l nodes=2:ppn=24 + #PBS -q qprod + #PBS -N ANSYS-Project + #PBS -A OPEN-0-0 + + #! Mail to user when job terminate or abort + #PBS -m ae + + #!change the working directory (default is home directory) + #cd <working directory> (working directory must exists) + WORK_DIR="/scratch/work/user/$USER" + cd $WORK_DIR + + echo Running on host `hostname` + echo Time is `date` + echo Directory is `pwd` + echo This jobs runs on the following processors: + echo `cat $PBS_NODEFILE` + + module load ANSYS/16.1 + + #### Set number of processors per host listing + procs_per_host=24 + #### Create host list + hl="" + for host in `cat $PBS_NODEFILE` + do + if [ "$hl" = "" ] + then hl="$host:$procs_per_host" + else hl="${hl}:$host:$procs_per_host" + fi + done + + echo Machines: $hl + + # prevent ANSYS from attempting to use scif0 interface + export MPI_IC_ORDER="UDAPL" + + #-i input.dat includes the input of analysis in APDL format + #-o file.out is output file from ansys where all text outputs will be redirected + #-p the name of license feature (aa_r=ANSYS Academic Research, ane3fl=Multiphysics(commercial), aa_r_dy=Academic AUTODYN) + ansys161 -b -dis -usessh -p aa_r -i input.dat -o file.out -machines "$hl" -dir $WORK_DIR Header of the PBS file (above) is common and description can be find on [this @@ -85,7 +77,3 @@ Multiphysics)-**Commercial**, aa_r_dy (ANSYS **Academic** AUTODYN)> [More about licensing here](licensing.html) - - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/ansys-products-mechanical-fluent-cfx-mapdl.md b/converted/docs.it4i.cz/salomon/software/ansys/ansys-products-mechanical-fluent-cfx-mapdl.md index 97420ddbe..0a8d958dc 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/ansys-products-mechanical-fluent-cfx-mapdl.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/ansys-products-mechanical-fluent-cfx-mapdl.md @@ -1,14 +1,6 @@ Overview of ANSYS Products ========================== - - - - - - - - [SVS FEM](http://www.svsfem.cz/)** as ***[ANSYS Channel partner](http://www.ansys.com/)*** for Czech Republic provided all ANSYS licenses for all clusters and supports of @@ -27,7 +19,7 @@ licensing here](licensing.html) To load the latest version of any ANSYS product (Mechanical, Fluent, CFX, MAPDL,...) load the module: - $ module load ANSYS + $ module load ANSYS ANSYS supports interactive regime, but due to assumed solution of extremely difficult tasks it is not recommended. @@ -37,6 +29,3 @@ the RSM service on the client machine which allows to forward the solution to the clusters directly from the client's Workbench project (see ANSYS RSM service). - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/ansys.md b/converted/docs.it4i.cz/salomon/software/ansys/ansys.md index 82ff875b1..9cacfcf54 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/ansys.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/ansys.md @@ -1,14 +1,6 @@ Overview of ANSYS Products ========================== - - - - - - - - [SVS FEM](http://www.svsfem.cz/)** as ***[ANSYS Channel partner](http://www.ansys.com/)*** for Czech Republic provided all ANSYS licenses for all clusters and supports of @@ -27,7 +19,7 @@ licensing here](ansys/licensing.html) To load the latest version of any ANSYS product (Mechanical, Fluent, CFX, MAPDL,...) load the module: - $ module load ANSYS + $ module load ANSYS ANSYS supports interactive regime, but due to assumed solution of extremely difficult tasks it is not recommended. @@ -37,6 +29,3 @@ the RSM service on the client machine which allows to forward the solution to the clusters directly from the client's Workbench project (see ANSYS RSM service). - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/licensing.md b/converted/docs.it4i.cz/salomon/software/ansys/licensing.md index 55a0acbe2..7e4f1d755 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/licensing.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/licensing.md @@ -1,28 +1,20 @@ Licensing and Available Versions ================================ - - - - - - - - ANSYS licence can be used by: ----------------------------- -- all persons in the carrying out of the CE IT4Innovations Project (In - addition to the primary licensee, which is VSB - Technical - University of Ostrava, users are CE IT4Innovations third parties - - CE IT4Innovations project partners, particularly the University of - Ostrava, the Brno University of Technology - Faculty of Informatics, - the Silesian University in Opava, Institute of Geonics AS CR.) -- id="result_box" all - persons who have a valid - license -- id="result_box" students - of the Technical University</span> +- all persons in the carrying out of the CE IT4Innovations Project (In + addition to the primary licensee, which is VSB - Technical + University of Ostrava, users are CE IT4Innovations third parties - + CE IT4Innovations project partners, particularly the University of + Ostrava, the Brno University of Technology - Faculty of Informatics, + the Silesian University in Opava, Institute of Geonics AS CR.) +- id="result_box" all + persons who have a valid + license +- id="result_box" students + of the Technical University</span> ANSYS Academic Research ----------------------- @@ -40,8 +32,8 @@ restrictions. Available Versions ------------------ -- 16.1 -- 17.0 +- 16.1 +- 17.0 License Preferences ------------------- @@ -51,6 +43,3 @@ preferences](setting-license-preferences.html).  - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/setting-license-preferences.md b/converted/docs.it4i.cz/salomon/software/ansys/setting-license-preferences.md index e12e3b69f..339c065cb 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/setting-license-preferences.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/setting-license-preferences.md @@ -1,14 +1,6 @@ Setting license preferences =========================== - - - - - - - - Some ANSYS tools allow you to explicitly specify usage of academic or commercial licenses in the command line (eg. ansys161 -p aa_r to select Academic Research @@ -21,7 +13,7 @@ or bottom of the list accordingly. Launch the ANSLIC_ADMIN utility in a graphical environment: - $ANSYSLIC_DIR/lic_admin/anslic_admin + $ANSYSLIC_DIR/lic_admin/anslic_admin ANSLIC_ADMIN Utility will be run @@ -40,6 +32,3 @@ the bottom of the list.  - - - diff --git a/converted/docs.it4i.cz/salomon/software/ansys/workbench.md b/converted/docs.it4i.cz/salomon/software/ansys/workbench.md index 34ce793bf..250c7765b 100644 --- a/converted/docs.it4i.cz/salomon/software/ansys/workbench.md +++ b/converted/docs.it4i.cz/salomon/software/ansys/workbench.md @@ -1,14 +1,6 @@ Workbench ========= - - - - - - - - Workbench Batch Mode -------------------- @@ -25,7 +17,7 @@ run on two Salomon nodes). If you want the job to run on more then 1 node, you must also provide a so called MPI appfile. In the Additional Command Line Arguments input field, enter : - -mpifile /path/to/my/job/mpifile.txt + -mpifile /path/to/my/job/mpifile.txt Where /path/to/my/job is the directory where your project is saved. We will create the file mpifile.txt programatically later in the batch @@ -35,51 +27,48 @@ Processing* *Guide*. Now, save the project and close Workbench. We will use this script to launch the job: - #!/bin/bash - #PBS -l select=2:ncpus=24 - #PBS -q qprod - #PBS -N test9_mpi_2 - #PBS -A OPEN-0-0 + #!/bin/bash + #PBS -l select=2:ncpus=24 + #PBS -q qprod + #PBS -N test9_mpi_2 + #PBS -A OPEN-0-0 - # Mail to user when job terminate or abort - #PBS -m a + # Mail to user when job terminate or abort + #PBS -m a - # change the working directory - WORK_DIR="$PBS_O_WORKDIR" - cd $WORK_DIR + # change the working directory + WORK_DIR="$PBS_O_WORKDIR" + cd $WORK_DIR - echo Running on host `hostname` - echo Time is `date` - echo Directory is `pwd` - echo This jobs runs on the following nodes: - echo `cat $PBS_NODEFILE` + echo Running on host `hostname` + echo Time is `date` + echo Directory is `pwd` + echo This jobs runs on the following nodes: + echo `cat $PBS_NODEFILE` - module load ANSYS + module load ANSYS - #### Set number of processors per host listing - procs_per_host=24 - #### Create MPI appfile - echo -n "" > mpifile.txt - for host in `cat $PBS_NODEFILE` - do - echo "-h $host -np $procs_per_host $ANSYS160_DIR/bin/ansysdis161 -dis" >> mpifile.txt - done + #### Set number of processors per host listing + procs_per_host=24 + #### Create MPI appfile + echo -n "" > mpifile.txt + for host in `cat $PBS_NODEFILE` + do + echo "-h $host -np $procs_per_host $ANSYS160_DIR/bin/ansysdis161 -dis" >> mpifile.txt + done - #-i input.dat includes the input of analysis in APDL format - #-o file.out is output file from ansys where all text outputs will be redirected - #-p the name of license feature (aa_r=ANSYS Academic Research, ane3fl=Multiphysics(commercial), aa_r_dy=Academic AUTODYN) + #-i input.dat includes the input of analysis in APDL format + #-o file.out is output file from ansys where all text outputs will be redirected + #-p the name of license feature (aa_r=ANSYS Academic Research, ane3fl=Multiphysics(commercial), aa_r_dy=Academic AUTODYN) - # prevent using scsif0 interface on accelerated nodes - export MPI_IC_ORDER="UDAPL" - # spawn remote process using SSH (default is RSH) - export MPI_REMSH="/usr/bin/ssh" + # prevent using scsif0 interface on accelerated nodes + export MPI_IC_ORDER="UDAPL" + # spawn remote process using SSH (default is RSH) + export MPI_REMSH="/usr/bin/ssh" - runwb2 -R jou6.wbjn -B -F test9.wbpj + runwb2 -R jou6.wbjn -B -F test9.wbpj The solver settings are saved in file solvehandlers.xml, which is not located in the project directory. Verify your solved settings when uploading a project from your local computer. - - - diff --git a/converted/docs.it4i.cz/salomon/software/chemistry/molpro.md b/converted/docs.it4i.cz/salomon/software/chemistry/molpro.md index 80e64cdb7..c01f1cc7b 100644 --- a/converted/docs.it4i.cz/salomon/software/chemistry/molpro.md +++ b/converted/docs.it4i.cz/salomon/software/chemistry/molpro.md @@ -1,20 +1,9 @@ Molpro ====== - - - - Molpro is a complete system of ab initio programs for molecular electronic structure calculations. - - - - - - - About Molpro ------------ @@ -43,15 +32,15 @@ parallel version compiled with Intel compilers and Intel MPI. Compilation parameters are default : -Parameter Value -------------------------------------------------- ----------------------------- ->max number of atoms 200 ->max number of valence orbitals 300 ->max number of basis functions 4095 ->max number of states per symmmetry 20 ->max number of state symmetries 16 ->max number of records 200 ->max number of primitives >maxbfn x [2] + Parameter Value + ------------------------------------------------- ----------------------------- + >max number of atoms 200 + >max number of valence orbitals 300 + >max number of basis functions 4095 + >max number of states per symmmetry 20 + >max number of state symmetries 16 + >max number of records 200 + >max number of primitives >maxbfn x [2]  @@ -79,27 +68,24 @@ these are placed in the fast scratch filesystem. ### Example jobscript - #PBS -A IT4I-0-0 - #PBS -q qprod - #PBS -l select=1:ncpus=24:mpiprocs=24:ompthreads=1 - - cd $PBS_O_WORKDIR - - # load Molpro module - module add Molpro/2010.1-patch-57-intel2015b - - # create a directory in the SCRATCH filesystem - mkdir -p /scratch/work/user/$USER/$PBS_JOBID + #PBS -A IT4I-0-0 + #PBS -q qprod + #PBS -l select=1:ncpus=24:mpiprocs=24:ompthreads=1 - # copy an example input - cp /apps/all/Molpro/2010.1-patch57/molprop_2010_1_Linux_x86_64_i8/examples/caffeine_opt_diis.com . + cd $PBS_O_WORKDIR - # run Molpro with default options - molpro -d /scratch/work/user/$USER/$PBS_JOBID caffeine_opt_diis.com + # load Molpro module + module add Molpro/2010.1-patch-57-intel2015b - # delete scratch directory - rm -rf /scratch/work/user/$USER/$PBS_JOBID + # create a directory in the SCRATCH filesystem + mkdir -p /scratch/work/user/$USER/$PBS_JOBID + # copy an example input + cp /apps/all/Molpro/2010.1-patch57/molprop_2010_1_Linux_x86_64_i8/examples/caffeine_opt_diis.com . + # run Molpro with default options + molpro -d /scratch/work/user/$USER/$PBS_JOBID caffeine_opt_diis.com + # delete scratch directory + rm -rf /scratch/work/user/$USER/$PBS_JOBID diff --git a/converted/docs.it4i.cz/salomon/software/chemistry/nwchem.md b/converted/docs.it4i.cz/salomon/software/chemistry/nwchem.md index cda2a674e..2f7c34118 100644 --- a/converted/docs.it4i.cz/salomon/software/chemistry/nwchem.md +++ b/converted/docs.it4i.cz/salomon/software/chemistry/nwchem.md @@ -1,19 +1,8 @@ NWChem ====== - - - - High-Performance Computational Chemistry - - - - - - - >Introduction ------------------------- @@ -30,16 +19,16 @@ Installed versions The following versions are currently installed : -- >NWChem/6.3.revision2-2013-10-17-Python-2.7.8, current release. - Compiled with Intel compilers, MKL and Intel MPI +- >NWChem/6.3.revision2-2013-10-17-Python-2.7.8, current release. + Compiled with Intel compilers, MKL and Intel MPI -  +  -- >NWChem/6.5.revision26243-intel-2015b-2014-09-10-Python-2.7.8 +- >NWChem/6.5.revision26243-intel-2015b-2014-09-10-Python-2.7.8 For a current list of installed versions, execute : - module avail NWChem + module avail NWChem The recommend to use version 6.5. Version 6.3 fails on Salomon nodes with accelerator, because it attempts to communicate over scif0 @@ -53,13 +42,13 @@ Running NWChem is compiled for parallel MPI execution. Normal procedure for MPI jobs applies. Sample jobscript : - #PBS -A IT4I-0-0 - #PBS -q qprod - #PBS -l select=1:ncpus=24:mpiprocs=24 + #PBS -A IT4I-0-0 + #PBS -q qprod + #PBS -l select=1:ncpus=24:mpiprocs=24 - cd $PBS_O_WORKDIR - module add NWChem/6.5.revision26243-intel-2015b-2014-09-10-Python-2.7.8 - mpirun nwchem h2o.nw + cd $PBS_O_WORKDIR + module add NWChem/6.5.revision26243-intel-2015b-2014-09-10-Python-2.7.8 + mpirun nwchem h2o.nw >Options -------------------- @@ -68,13 +57,10 @@ Please refer to [the documentation](http://www.nwchem-sw.org/index.php/Release62:Top-level) and in the input file set the following directives : -- >MEMORY : controls the amount of memory NWChem will use -- >SCRATCH_DIR : set this to a directory in [SCRATCH - filesystem](../../storage.html) (or run the - calculation completely in a scratch directory). For certain - calculations, it might be advisable to reduce I/O by forcing - "direct" mode, eg. "scf direct" - - - +- >MEMORY : controls the amount of memory NWChem will use +- >SCRATCH_DIR : set this to a directory in [SCRATCH + filesystem](../../storage.html) (or run the + calculation completely in a scratch directory). For certain + calculations, it might be advisable to reduce I/O by forcing + "direct" mode, eg. "scf direct" diff --git a/converted/docs.it4i.cz/salomon/software/chemistry/phono3py.md b/converted/docs.it4i.cz/salomon/software/chemistry/phono3py.md index a508b6123..363372116 100644 --- a/converted/docs.it4i.cz/salomon/software/chemistry/phono3py.md +++ b/converted/docs.it4i.cz/salomon/software/chemistry/phono3py.md @@ -1,20 +1,7 @@ Phono3py ======== - - - - - - - - - - - - - - +  Introduction ------------- @@ -26,7 +13,6 @@ order, joint density of states (JDOS) and weighted-JDOS. For details see Phys. Rev. B 91, 094306 (2015) and http://atztogo.github.io/phono3py/index.html - Load the phono3py/0.9.14-ictce-7.3.5-Python-2.7.9 module ``` @@ -73,7 +59,6 @@ $ phono3py -d --dim="2 2 2" -c POSCAR disp_fc3.yaml, and the structure input files with this displacements are POSCAR-00XXX, where the XXX=111. - ``` disp_fc3.yaml POSCAR-00008 POSCAR-00017 POSCAR-00026 POSCAR-00035 POSCAR-00044 POSCAR-00053 POSCAR-00062 POSCAR-00071 POSCAR-00080 POSCAR-00089 POSCAR-00098 POSCAR-00107 POSCAR        POSCAR-00009 POSCAR-00018 POSCAR-00027 POSCAR-00036 POSCAR-00045 POSCAR-00054 POSCAR-00063 POSCAR-00072 POSCAR-00081 POSCAR-00090 POSCAR-00099 POSCAR-00108 @@ -146,7 +131,6 @@ resulting in `fc2.hdf5` and `fc3.hdf5`{.docutils The phonon lifetime calculations takes some time, however is independent on grid points, so could be splitted: - ``` $ phono3py --fc3 --fc2 --dim="2 2 2" --mesh="9 9 9" --sigma 0.1 --wgp ``` @@ -216,6 +200,3 @@ grouping single conductivity per grid calculations using $ phono3py --fc3 --fc2 --dim="2 2 2" --mesh="9 9 9" --br --read_gamma ``` - - - diff --git a/converted/docs.it4i.cz/salomon/software/compilers.md b/converted/docs.it4i.cz/salomon/software/compilers.md index 0967a0ff2..2e78a937b 100644 --- a/converted/docs.it4i.cz/salomon/software/compilers.md +++ b/converted/docs.it4i.cz/salomon/software/compilers.md @@ -1,42 +1,29 @@ Compilers ========= - - - - Available compilers, including GNU, INTEL and UPC compilers - - - - - - - - - - + There are several compilers for different programming languages available on the cluster: -- C/C++ -- Fortran 77/90/95/HPF -- Unified Parallel C -- Java +- C/C++ +- Fortran 77/90/95/HPF +- Unified Parallel C +- Java The C/C++ and Fortran compilers are provided by: Opensource: -- GNU GCC -- Clang/LLVM +- GNU GCC +- Clang/LLVM Commercial licenses: -- Intel -- PGI +- Intel +- PGI Intel Compilers --------------- @@ -50,22 +37,22 @@ PGI Compilers The Portland Group Cluster Development Kit (PGI CDK) is available. - $ module load PGI - $ pgcc -v - $ pgc++ -v - $ pgf77 -v - $ pgf90 -v - $ pgf95 -v - $ pghpf -v + $ module load PGI + $ pgcc -v + $ pgc++ -v + $ pgf77 -v + $ pgf90 -v + $ pgf95 -v + $ pghpf -v The PGI CDK also incudes tools for debugging and profiling. PGDBG OpenMP/MPI debugger and PGPROF OpenMP/MPI profiler are available - $ module load PGI - $ module load Java - $ pgdbg & - $ pgprof & + $ module load PGI + $ module load Java + $ pgdbg & + $ pgprof & For more information, see the [PGI page](http://www.pgroup.com/products/pgicdk.htm). @@ -80,20 +67,20 @@ accessible in the search path by default. It is strongly recommended to use the up to date version which comes with the module GCC: - $ module load GCC - $ gcc -v - $ g++ -v - $ gfortran -v + $ module load GCC + $ gcc -v + $ g++ -v + $ gfortran -v With the module loaded two environment variables are predefined. One for maximum optimizations on the cluster's architecture, and the other for debugging purposes: - $ echo $OPTFLAGS - -O3 -march=native + $ echo $OPTFLAGS + -O3 -march=native - $ echo $DEBUGFLAGS - -O0 -g + $ echo $DEBUGFLAGS + -O0 -g For more information about the possibilities of the compilers, please see the man pages. @@ -103,42 +90,42 @@ Unified Parallel C UPC is supported by two compiler/runtime implementations: -- GNU - SMP/multi-threading support only -- Berkley - multi-node support as well as SMP/multi-threading support +- GNU - SMP/multi-threading support only +- Berkley - multi-node support as well as SMP/multi-threading support ### GNU UPC Compiler To use the GNU UPC compiler and run the compiled binaries use the module gupc - $ module add gupc - $ gupc -v - $ g++ -v + $ module add gupc + $ gupc -v + $ g++ -v Simple program to test the compiler - $ cat count.upc + $ cat count.upc - /* hello.upc - a simple UPC example */ - #include <upc.h> - #include <stdio.h> + /* hello.upc - a simple UPC example */ + #include <upc.h> + #include <stdio.h> - int main() { -  if (MYTHREAD == 0) { -    printf("Welcome to GNU UPC!!!n"); -  } -  upc_barrier; -  printf(" - Hello from thread %in", MYTHREAD); -  return 0; - } + int main() { +  if (MYTHREAD == 0) { +    printf("Welcome to GNU UPC!!!n"); +  } +  upc_barrier; +  printf(" - Hello from thread %in", MYTHREAD); +  return 0; + } To compile the example use - $ gupc -o count.upc.x count.upc + $ gupc -o count.upc.x count.upc To run the example with 5 threads issue - $ ./count.upc.x -fupc-threads-5 + $ ./count.upc.x -fupc-threads-5 For more informations see the man pages. @@ -147,8 +134,8 @@ For more informations see the man pages. To use the Berkley UPC compiler and runtime environment to run the binaries use the module bupc - $ module add bupc - $ upcc -version + $ module add bupc + $ upcc -version As default UPC network the "smp" is used. This is very quick and easy way for testing/debugging, but limited to one node only. @@ -161,35 +148,35 @@ runtime (as expected)! Example UPC code: - $ cat hello.upc + $ cat hello.upc - /* hello.upc - a simple UPC example */ - #include <upc.h> - #include <stdio.h> + /* hello.upc - a simple UPC example */ + #include <upc.h> + #include <stdio.h> - int main() { -  if (MYTHREAD == 0) { -    printf("Welcome to Berkeley UPC!!!n"); -  } -  upc_barrier; -  printf(" - Hello from thread %in", MYTHREAD); -  return 0; - } + int main() { +  if (MYTHREAD == 0) { +    printf("Welcome to Berkeley UPC!!!n"); +  } +  upc_barrier; +  printf(" - Hello from thread %in", MYTHREAD); +  return 0; + } To compile the example with the "ibv" UPC network use - $ upcc -network=ibv -o hello.upc.x hello.upc + $ upcc -network=ibv -o hello.upc.x hello.upc To run the example with 5 threads issue - $ upcrun -n 5 ./hello.upc.x + $ upcrun -n 5 ./hello.upc.x To run the example on two compute nodes using all 48 cores, with 48 threads, issue - $ qsub -I -q qprod -A PROJECT_ID -l select=2:ncpus=24 - $ module add bupc - $ upcrun -n 48 ./hello.upc.x + $ qsub -I -q qprod -A PROJECT_ID -l select=2:ncpus=24 + $ module add bupc + $ upcrun -n 48 ./hello.upc.x  For more informations see the man pages. @@ -205,6 +192,3 @@ For information how to work with nVidia CUDA, please read the [nVidia CUDA page](../../anselm-cluster-documentation/software/nvidia-cuda.html). - - - diff --git a/converted/docs.it4i.cz/salomon/software/comsol/comsol-multiphysics.md b/converted/docs.it4i.cz/salomon/software/comsol/comsol-multiphysics.md index a2f4edd3f..de7683aed 100644 --- a/converted/docs.it4i.cz/salomon/software/comsol/comsol-multiphysics.md +++ b/converted/docs.it4i.cz/salomon/software/comsol/comsol-multiphysics.md @@ -1,17 +1,7 @@ COMSOL Multiphysics® ==================== - - - - - - - - - - - + >>Introduction @@ -25,24 +15,24 @@ standard engineering problems COMSOL provides add-on products such as electrical, mechanical, fluid flow, and chemical applications. -- >>[Structural Mechanics - Module](http://www.comsol.com/structural-mechanics-module), - +- >>[Structural Mechanics + Module](http://www.comsol.com/structural-mechanics-module), + -- >>[Heat Transfer - Module](http://www.comsol.com/heat-transfer-module), - +- >>[Heat Transfer + Module](http://www.comsol.com/heat-transfer-module), + -- >>[CFD - Module](http://www.comsol.com/cfd-module), - +- >>[CFD + Module](http://www.comsol.com/cfd-module), + -- >>[Acoustics - Module](http://www.comsol.com/acoustics-module), - +- >>[Acoustics + Module](http://www.comsol.com/acoustics-module), + -- >>and [many - others](http://www.comsol.com/products) +- >>and [many + others](http://www.comsol.com/products) >>COMSOL also allows an >>interface support for @@ -57,23 +47,23 @@ equations. >>On the clusters COMSOL is available in the latest stable version. There are two variants of the release: -- >>**Non commercial** or so - called >>**EDU - variant**>>, which can be used for research - and educational purposes. - -- >>**Commercial** or so called - >>**COM variant**, - which can used also for commercial activities. - >>**COM variant** - has only subset of features compared to the - >>**EDU - variant**>> available. <span - id="result_box" - More about - licensing will be posted here - soon.</span> - +- >>**Non commercial** or so + called >>**EDU + variant**>>, which can be used for research + and educational purposes. + +- >>**Commercial** or so called + >>**COM variant**, + which can used also for commercial activities. + >>**COM variant** + has only subset of features compared to the + >>**EDU + variant**>> available. <span + id="result_box" + More about + licensing will be posted here + soon.</span> + >>To load the of COMSOL load the module @@ -148,7 +138,6 @@ COMSOL>><span><span><span><span><span>**®**</span></span></span></span></span>^ 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** @@ -213,7 +202,3 @@ path to input file has to be specified. The Matlab command option (-r ”mphstart”) created a connection with a COMSOL server using the default port number. - - - - diff --git a/converted/docs.it4i.cz/salomon/software/comsol/licensing-and-available-versions.md b/converted/docs.it4i.cz/salomon/software/comsol/licensing-and-available-versions.md index 22be0cc0e..3438f6ef6 100644 --- a/converted/docs.it4i.cz/salomon/software/comsol/licensing-and-available-versions.md +++ b/converted/docs.it4i.cz/salomon/software/comsol/licensing-and-available-versions.md @@ -1,28 +1,20 @@ Licensing and Available Versions ================================ - - - - - - - - Comsol licence can be used by: ------------------------------ -- all persons in the carrying out of the CE IT4Innovations Project (In - addition to the primary licensee, which is VSB - Technical - University of Ostrava, users are CE IT4Innovations third parties - - CE IT4Innovations project partners, particularly the University of - Ostrava, the Brno University of Technology - Faculty of Informatics, - the Silesian University in Opava, Institute of Geonics AS CR.) -- id="result_box" all - persons who have a valid - license -- id="result_box" students - of the Technical University</span> +- all persons in the carrying out of the CE IT4Innovations Project (In + addition to the primary licensee, which is VSB - Technical + University of Ostrava, users are CE IT4Innovations third parties - + CE IT4Innovations project partners, particularly the University of + Ostrava, the Brno University of Technology - Faculty of Informatics, + the Silesian University in Opava, Institute of Geonics AS CR.) +- id="result_box" all + persons who have a valid + license +- id="result_box" students + of the Technical University</span> Comsol EDU Network Licence -------------------------- @@ -44,8 +36,5 @@ program start. Available Versions ------------------ -- ver. 51 - - - +- ver. 51 diff --git a/converted/docs.it4i.cz/salomon/software/debuggers.md b/converted/docs.it4i.cz/salomon/software/debuggers.md index b2430cc67..2288b8716 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers.md @@ -1,17 +1,7 @@ Debuggers and profilers summary =============================== - - - - - - - - - - - + Introduction ------------ @@ -33,8 +23,8 @@ environment. Use [X display](../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](intel-suite/intel-debugger.html) page. @@ -50,8 +40,8 @@ every thread running as part of your program, or for every process - even if these processes are distributed across a cluster using an MPI implementation. - $ module load Forge - $ forge + $ module load Forge + $ forge Read more at the [Allinea DDT](debuggers/allinea-ddt.html) page. @@ -66,8 +56,8 @@ about several metrics along with clear behavior statements and hints to help you improve the efficiency of your runs. Our license is limited to 64 MPI processes. - $ module load PerformanceReports/6.0 - $ perf-report mpirun -n 64 ./my_application argument01 argument02 + $ module load PerformanceReports/6.0 + $ perf-report mpirun -n 64 ./my_application argument01 argument02 Read more at the [Allinea Performance Reports](debuggers/allinea-performance-reports.html) @@ -82,8 +72,8 @@ analyze, organize, and test programs, making it easy to isolate and identify problems in individual threads and processes in programs of great complexity. - $ module load TotalView/8.15.4-6-linux-x86-64 - $ totalview + $ module load TotalView/8.15.4-6-linux-x86-64 + $ totalview Read more at the [Totalview](debuggers/total-view.html) page. @@ -93,11 +83,8 @@ Vampir trace analyzer Vampir is a GUI trace analyzer for traces in OTF format. - $ module load Vampir/8.5.0 - $ vampir + $ module load Vampir/8.5.0 + $ vampir Read more at the [Vampir](debuggers/vampir.html) page. - - - diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/aislinn.md b/converted/docs.it4i.cz/salomon/software/debuggers/aislinn.md index 339c5ebb6..f78132f9a 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/aislinn.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/aislinn.md @@ -1,24 +1,15 @@ Aislinn ======= - - - - - - - - -- Aislinn is a dynamic verifier for MPI programs. For a fixed input it - covers all possible runs with respect to nondeterminism introduced - by MPI. It allows to detect bugs (for sure) that occurs very rare in - normal runs. -- Aislinn detects problems like invalid memory accesses, deadlocks, - misuse of MPI, and resource leaks. -- Aislinn is open-source software; you can use it without any - licensing limitations. -- Web page of the project: <http://verif.cs.vsb.cz/aislinn/> - +- Aislinn is a dynamic verifier for MPI programs. For a fixed input it + covers all possible runs with respect to nondeterminism introduced + by MPI. It allows to detect bugs (for sure) that occurs very rare in + normal runs. +- Aislinn detects problems like invalid memory accesses, deadlocks, + misuse of MPI, and resource leaks. +- Aislinn is open-source software; you can use it without any + licensing limitations. +- Web page of the project: <http://verif.cs.vsb.cz/aislinn/> Note @@ -26,9 +17,6 @@ Aislinn is software developed at IT4Innovations and some parts are still considered experimental. If you have any questions or experienced any problems, please contact the author: <stanislav.bohm@vsb.cz>. - - - ### Usage Let us have the following program that contains a bug that is not @@ -39,31 +27,31 @@ manifested in all runs: #include <stdlib.h> int main(int argc, char **argv) { - int rank; - - MPI_Init(&argc, &argv); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - - if (rank == 0) { - int *mem1 = (int*) malloc(sizeof(int) * 2); - int *mem2 = (int*) malloc(sizeof(int) * 3); - int data; - MPI_Recv(&data, 1, MPI_INT, MPI_ANY_SOURCE, 1, - MPI_COMM_WORLD, MPI_STATUS_IGNORE); - mem1[data] = 10; // <---------- Possible invalid memory write - MPI_Recv(&data, 1, MPI_INT, MPI_ANY_SOURCE, 1, - MPI_COMM_WORLD, MPI_STATUS_IGNORE); - mem2[data] = 10; - free(mem1); - free(mem2); - } - - if (rank == 1 || rank == 2) { - MPI_Send(&rank, 1, MPI_INT, 0, 1, MPI_COMM_WORLD); - } - - MPI_Finalize(); - return 0; + int rank; + + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + + if (rank == 0) { + int *mem1 = (int*) malloc(sizeof(int) * 2); + int *mem2 = (int*) malloc(sizeof(int) * 3); + int data; + MPI_Recv(&data, 1, MPI_INT, MPI_ANY_SOURCE, 1, + MPI_COMM_WORLD, MPI_STATUS_IGNORE); + mem1[data] = 10; // <---------- Possible invalid memory write + MPI_Recv(&data, 1, MPI_INT, MPI_ANY_SOURCE, 1, + MPI_COMM_WORLD, MPI_STATUS_IGNORE); + mem2[data] = 10; + free(mem1); + free(mem2); + } + + if (rank == 1 || rank == 2) { + MPI_Send(&rank, 1, MPI_INT, 0, 1, MPI_COMM_WORLD); + } + + MPI_Finalize(); + return 0; } ``` @@ -118,53 +106,45 @@ the error is described.  It shows us: -> - Error occurs in process 0 in test.cpp on line 16. -> - Stdout and stderr streams are empty. (The program does not -> write anything). -> - The last part shows MPI calls for each process that occurs in the -> invalid run. The more detailed information about each call can be -> obtained by mouse cursor. - - - +> - Error occurs in process 0 in test.cpp on line 16. +> - Stdout and stderr streams are empty. (The program does not +> write anything). +> - The last part shows MPI calls for each process that occurs in the +> invalid run. The more detailed information about each call can be +> obtained by mouse cursor. ### Limitations Since the verification is a non-trivial process there are some of limitations. -- The verified process has to terminate in all runs, i.e. we cannot - answer the halting problem. -- The verification is a computationally and memory demanding process. - We put an effort to make it efficient and it is an important point - for further research. However covering all runs will be always more - demanding than techniques that examines only a single run. The good - practise is to start with small instances and when it is feasible, - make them bigger. The Aislinn is good to find bugs that are hard to - find because they occur very rarely (only in a rare scheduling). - Such bugs often do not need big instances. -- Aislinn expects that your program is a "standard MPI" program, i.e. - processes communicate only through MPI, the verified program does - not interacts with the system in some unusual ways (e.g. - opening sockets). +- The verified process has to terminate in all runs, i.e. we cannot + answer the halting problem. +- The verification is a computationally and memory demanding process. + We put an effort to make it efficient and it is an important point + for further research. However covering all runs will be always more + demanding than techniques that examines only a single run. The good + practise is to start with small instances and when it is feasible, + make them bigger. The Aislinn is good to find bugs that are hard to + find because they occur very rarely (only in a rare scheduling). + Such bugs often do not need big instances. +- Aislinn expects that your program is a "standard MPI" program, i.e. + processes communicate only through MPI, the verified program does + not interacts with the system in some unusual ways (e.g. + opening sockets). There are also some limitations bounded to the current version and they will be removed in the future: -- All files containing MPI calls have to be recompiled by MPI - implementation provided by Aislinn. The files that does not contain - MPI calls, they do not have to recompiled. Aislinn MPI - implementation supports many commonly used calls from MPI-2 and - MPI-3 related to point-to-point communication, collective - communication, and communicator management. Unfortunately, MPI-IO - and one-side communication is not implemented yet. -- Each MPI can use only one thread (if you use OpenMP, set - `OMP_NUM_THREADS` to 1). -- There are some limitations for using files, but if the program just - reads inputs and writes results, it is ok. - - - - - +- All files containing MPI calls have to be recompiled by MPI + implementation provided by Aislinn. The files that does not contain + MPI calls, they do not have to recompiled. Aislinn MPI + implementation supports many commonly used calls from MPI-2 and + MPI-3 related to point-to-point communication, collective + communication, and communicator management. Unfortunately, MPI-IO + and one-side communication is not implemented yet. +- Each MPI can use only one thread (if you use OpenMP, set + `OMP_NUM_THREADS` to 1). +- There are some limitations for using files, but if the program just + reads inputs and writes results, it is ok. diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/allinea-ddt.md b/converted/docs.it4i.cz/salomon/software/debuggers/allinea-ddt.md index 64b4024a3..fd7e93e93 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/allinea-ddt.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/allinea-ddt.md @@ -1,17 +1,7 @@ Allinea Forge (DDT,MAP) ======================= - - - - - - - - - - - + Allinea Forge consist of two tools - debugger DDT and profiler MAP. @@ -33,13 +23,13 @@ On the clusters 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. These limitation means that: -- 1 user can debug up 64 processes, or -- 32 users can debug 2 processes, etc. +- 1 user can debug up 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. +- 1 user can debug on up to 8 accelerators, or +- 8 users can debug on single accelerator. Compiling Code to run with Forge -------------------------------- @@ -48,12 +38,12 @@ Compiling Code to run with Forge Load all necessary modules to compile the code. For example: - $ module load intel - $ module load impi ... or ... module load OpenMPI + $ module load intel + $ module load impi ... or ... module load OpenMPI Load the Allinea DDT module: - $ module load Forge + $ module load Forge Compile the code: @@ -83,7 +73,7 @@ forwarding enabled](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html). This could mean using the -X in the ssh:  - $ ssh -X username@clustername.it4i.cz + $ ssh -X username@clustername.it4i.cz Other options is to access login node using VNC. Please see the detailed information on [how to @@ -94,12 +84,12 @@ clusters](../../../get-started-with-it4innovations/accessing-the-clusters/graphi From the login node an interactive session **with X windows forwarding** (-X option) can be started by following command: - $ qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=24:mpiprocs=24,walltime=01:00:00 + $ qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=24:mpiprocs=24,walltime=01:00:00 Then launch the debugger with the ddt command followed by the name of the executable to debug: - $ ddt test_debug + $ ddt test_debug Forge now has common GUI for both DDT and MAP. In interactive mode, you can launch Forge using forge, ddt or map, @@ -122,7 +112,7 @@ For example the number of MPI processes is set by option "-np 4". Skipping the dialog is done by "-start" option. To see the list of the "ddt" command line parameters, run "ddt --help".  - ddt -start -np 4 ./hello_debug_impi + ddt -start -np 4 ./hello_debug_impi All of the above text also applies for MAP, just replace ddt command with map. @@ -139,13 +129,12 @@ To use Reverse connect, use a jobscript that you would normally use to launch your application, just prepend ddt/map --connect to your application: - map --connect mpirun -np 24 ./mpi-test - ddt --connect mpirun -np 24 ./mpi-test + map --connect mpirun -np 24 ./mpi-test + ddt --connect mpirun -np 24 ./mpi-test Launch Forge GUI on login node and submit the job using qsub. When the job starts running, Forge will ask you to accept the connection: -  After accepting the request, you can start remote profiling/debugging. @@ -161,9 +150,9 @@ Xeon Phi programs. It is recommended to set the following environment values on the offload host: - export MYO_WATCHDOG_MONITOR=-1 # To make sure the host process isn't killed when we enter a debugging session - export AMPLXE_COI_DEBUG_SUPPORT=true # To make sure that debugging symbols are accessible on the host and the card - unset OFFLOAD_MAIN # To make sure allinea DDT can attach to offloaded codes + export MYO_WATCHDOG_MONITOR=-1 # To make sure the host process isn't killed when we enter a debugging session + export AMPLXE_COI_DEBUG_SUPPORT=true # To make sure that debugging symbols are accessible on the host and the card + unset OFFLOAD_MAIN # To make sure allinea DDT can attach to offloaded codes Then use one of the above mentioned methods to launch Forge. (Reverse connect also works.) @@ -174,31 +163,30 @@ Native mode programs can be profiled/debugged using the remote launch feature. First, you need to create a script that will setup the environment on the Phi card. An example: - #!/bin/bash - # adjust PATH and LD_LIBRARY_PATH according to the toolchain/libraries your app is using. - export PATH=/apps/all/impi/5.0.3.048-iccifort-2015.3.187/mic/bin:$PATH - export LD_LIBRARY_PATH=/apps/all/impi/5.0.3.048-iccifort-2015.3.187/mic/lib:/apps/all/ifort/2015.3.187/lib/mic:/apps/all/icc/2015.3.187/lib/mic:$LD_LIBRARY_PATH - export MIC_OMP_NUM_THREADS=60 - export MYO_WATCHDOG_MONITOR=-1 - export AMPLXE_COI_DEBUG_SUPPORT=true - unset OFFLOAD_MAIN - export I_MPI_MIC=1 + #!/bin/bash + # adjust PATH and LD_LIBRARY_PATH according to the toolchain/libraries your app is using. + export PATH=/apps/all/impi/5.0.3.048-iccifort-2015.3.187/mic/bin:$PATH + export LD_LIBRARY_PATH=/apps/all/impi/5.0.3.048-iccifort-2015.3.187/mic/lib:/apps/all/ifort/2015.3.187/lib/mic:/apps/all/icc/2015.3.187/lib/mic:$LD_LIBRARY_PATH + export MIC_OMP_NUM_THREADS=60 + export MYO_WATCHDOG_MONITOR=-1 + export AMPLXE_COI_DEBUG_SUPPORT=true + unset OFFLOAD_MAIN + export I_MPI_MIC=1 Save the script in eg. ~/remote-mic.sh. Now, start an interactive graphical session on a node with accelerator: - $ qsub â€IX â€q qexp â€l select=1:ncpus=24:accelerator=True + $ qsub â€IX â€q qexp â€l select=1:ncpus=24:accelerator=True Launch Forge : - $ module load Forge - $ forge& + $ module load Forge + $ forge& Now click on the remote launch drop-down list, select "Configure..." and Add a new remote connection with the following parameters: - Connection name: mic0 Hostname: mic0 @@ -217,7 +205,7 @@ Documentation Users can find original User Guide after loading the Forge module: - $EBROOTFORGE/doc/userguide-forge.pdf + $EBROOTFORGE/doc/userguide-forge.pdf  @@ -230,6 +218,3 @@ Debugging with Allinea DDT, Workshop conducted at LLNL by Allinea on May  - - - diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/allinea-performance-reports.md b/converted/docs.it4i.cz/salomon/software/debuggers/allinea-performance-reports.md index e1fffc40c..f894c2ccc 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/allinea-performance-reports.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/allinea-performance-reports.md @@ -1,22 +1,9 @@ Allinea Performance Reports =========================== - - - - quick application profiling - - - - - - - - - - + Introduction ------------ @@ -37,7 +24,7 @@ Modules Allinea Performance Reports version 6.0 is available - $ module load PerformanceReports/6.0 + $ module load PerformanceReports/6.0 The module sets up environment variables, required for using the Allinea Performance Reports. @@ -50,7 +37,7 @@ Use the the perf-report wrapper on your (MPI) program. Instead of [running your MPI program the usual way](../mpi-1.html), use the the perf report wrapper: - $ perf-report mpirun ./mympiprog.x + $ perf-report mpirun ./mympiprog.x The mpi program will run as usual. The perf-report creates two additional files, in *.txt and *.html format, containing the @@ -67,18 +54,18 @@ compilers and linked against intel MPI library: First, we allocate some nodes via the express queue: - $ qsub -q qexp -l select=2:ppn=24:mpiprocs=24:ompthreads=1 -I - qsub: waiting for job 262197.dm2 to start - qsub: job 262197.dm2 ready + $ qsub -q qexp -l select=2:ppn=24:mpiprocs=24:ompthreads=1 -I + qsub: waiting for job 262197.dm2 to start + qsub: job 262197.dm2 ready Then we load the modules and run the program the usual way: - $ module load intel impi PerfReports/6.0 - $ mpirun ./mympiprog.x + $ module load intel impi PerfReports/6.0 + $ mpirun ./mympiprog.x Now lets profile the code: - $ perf-report mpirun ./mympiprog.x + $ perf-report mpirun ./mympiprog.x Performance report files [mympiprog_32p*.txt](mympiprog_32p_2014-10-15_16-56.txt) @@ -87,6 +74,3 @@ and were created. We can see that the code is very efficient on MPI and is CPU bounded. - - - diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/intel-vtune-amplifier.md b/converted/docs.it4i.cz/salomon/software/debuggers/intel-vtune-amplifier.md index 6a82738a9..0c7e058ff 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/intel-vtune-amplifier.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/intel-vtune-amplifier.md @@ -1,17 +1,7 @@ Intel VTune Amplifier XE ======================== - - - - - - - - - - - + Introduction ------------ @@ -21,20 +11,14 @@ profiling tool designed for Intel processors. It offers a graphical performance analysis of single core and multithreaded applications. A highlight of the features: -- Hotspot analysis -- Locks and waits analysis -- Low level specific counters, such as branch analysis and memory - bandwidth -- Power usage analysis - frequency and sleep states. - - - - +- Hotspot analysis +- Locks and waits analysis +- Low level specific counters, such as branch analysis and memory + bandwidth +- Power usage analysis - frequency and sleep states.  - - Usage ----- @@ -47,23 +31,23 @@ at job submit. The version is the same as for *environment module*. For example to use VTune/2016_update1: - $ qsub -q qexp -A OPEN-0-0 -I -l select=1,vtune=2016_update1 + $ qsub -q qexp -A OPEN-0-0 -I -l select=1,vtune=2016_update1 After that, you can verify the modules sep*, pax and vtsspp are present in the kernel : - $ lsmod | grep -e sep -e pax -e vtsspp - vtsspp 362000 0 - sep3_15 546657 0 - pax 4312 0 + $ lsmod | grep -e sep -e pax -e vtsspp + vtsspp 362000 0 + sep3_15 546657 0 + pax 4312 0 To launch the GUI, first load the module: - $ module add VTune/2016_update1 + $ module add VTune/2016_update1 class="s1">and launch the GUI : - $ amplxe-gui + $ amplxe-gui >The GUI will open in new window. Click on "*New Project...*" to create a new project. After clicking *OK*, a new window with project @@ -94,7 +78,7 @@ the command line needed to perform the selected analysis. The command line will look like this: - /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -collect advanced-hotspots -app-working-dir /home/sta545/tmp -- /home/sta545/tmp/sgemm + /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -collect advanced-hotspots -app-working-dir /home/sta545/tmp -- /home/sta545/tmp/sgemm Copy the line to clipboard and then you can paste it in your jobscript or in command line. After the collection is run, open the GUI once @@ -132,11 +116,11 @@ analyze it in the GUI later : Native launch: - $ /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -target-system mic-native:0 -collect advanced-hotspots -- /home/sta545/tmp/vect-add-mic + $ /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -target-system mic-native:0 -collect advanced-hotspots -- /home/sta545/tmp/vect-add-mic Host launch: - $ /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -target-system mic-host-launch:0 -collect advanced-hotspots -- /home/sta545/tmp/sgemm + $ /apps/all/VTune/2016_update1/vtune_amplifier_xe_2016.1.1.434111/bin64/amplxe-cl -target-system mic-host-launch:0 -collect advanced-hotspots -- /home/sta545/tmp/sgemm You can obtain this command line by pressing the "Command line..." button on Analysis Type screen. @@ -144,13 +128,10 @@ button on Analysis Type screen. References ---------- -1.><https://www.rcac.purdue.edu/tutorials/phi/PerformanceTuningXeonPhi-Tullos.pdf> Performance - Tuning for Intel® Xeon Phi™ Coprocessors -2.><https://software.intel.com/en-us/intel-vtune-amplifier-xe-support/documentation> >Intel® - VTune™ Amplifier Support -3.>><https://software.intel.com/en-us/amplifier_help_linux> Linux - user guide - - - +1. ><https://www.rcac.purdue.edu/tutorials/phi/PerformanceTuningXeonPhi-Tullos.pdf> Performance + Tuning for Intel® Xeon Phi™ Coprocessors +2. ><https://software.intel.com/en-us/intel-vtune-amplifier-xe-support/documentation> >Intel® + VTune™ Amplifier Support +3. >><https://software.intel.com/en-us/amplifier_help_linux> Linux + user guide diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/summary.md b/converted/docs.it4i.cz/salomon/software/debuggers/summary.md index b1fe96776..a9ec88e50 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/summary.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/summary.md @@ -1,17 +1,7 @@ Debuggers and profilers summary =============================== - - - - - - - - - - - + Introduction ------------ @@ -33,8 +23,8 @@ environment. Use [X display](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](../intel-suite/intel-debugger.html) page. @@ -50,8 +40,8 @@ every thread running as part of your program, or for every process - even if these processes are distributed across a cluster using an MPI implementation. - $ module load Forge - $ forge + $ module load Forge + $ forge Read more at the [Allinea DDT](allinea-ddt.html) page. @@ -65,8 +55,8 @@ about several metrics along with clear behavior statements and hints to help you improve the efficiency of your runs. Our license is limited to 64 MPI processes. - $ module load PerformanceReports/6.0 - $ perf-report mpirun -n 64 ./my_application argument01 argument02 + $ module load PerformanceReports/6.0 + $ perf-report mpirun -n 64 ./my_application argument01 argument02 Read more at the [Allinea Performance Reports](allinea-performance-reports.html) page. @@ -80,8 +70,8 @@ analyze, organize, and test programs, making it easy to isolate and identify problems in individual threads and processes in programs of great complexity. - $ module load TotalView/8.15.4-6-linux-x86-64 - $ totalview + $ module load TotalView/8.15.4-6-linux-x86-64 + $ totalview Read more at the [Totalview](total-view.html) page. @@ -90,11 +80,8 @@ Vampir trace analyzer Vampir is a GUI trace analyzer for traces in OTF format. - $ module load Vampir/8.5.0 - $ vampir + $ module load Vampir/8.5.0 + $ vampir Read more at the [Vampir](vampir.html) page. - - - diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/total-view.md b/converted/docs.it4i.cz/salomon/software/debuggers/total-view.md index 9159d2e96..350a3e047 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/total-view.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/total-view.md @@ -1,20 +1,9 @@ Total View ========== - - - - TotalView is a GUI-based source code multi-process, multi-thread debugger. - - - - - - - License and Limitations for cluster Users ----------------------------------------- @@ -36,19 +25,19 @@ Compiling Code to run with TotalView Load all necessary modules to compile the code. For example: - module load intel + module load intel - module load impi  ... or ... module load OpenMPI/X.X.X-icc + module load impi  ... or ... module load OpenMPI/X.X.X-icc Load the TotalView module: - module load TotalView/8.15.4-6-linux-x86-64 + module load TotalView/8.15.4-6-linux-x86-64 Compile the code: - mpicc -g -O0 -o test_debug test.c + mpicc -g -O0 -o test_debug test.c - mpif90 -g -O0 -o test_debug test.f + mpif90 -g -O0 -o test_debug test.f ### Compiler flags @@ -66,7 +55,7 @@ Starting a Job with TotalView Be sure to log in with an X window forwarding enabled. This could mean using the -X in the ssh: - ssh -X username@salomon.it4i.cz + ssh -X username@salomon.it4i.cz Other options is to access login node using VNC. Please see the detailed information on how to use graphic user interface on Anselm @@ -75,7 +64,7 @@ information on how to use graphic user interface on Anselm From the login node an interactive session with X windows forwarding (-X option) can be started by following command: - qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=24:mpiprocs=24,walltime=01:00:00 + qsub -I -X -A NONE-0-0 -q qexp -lselect=1:ncpus=24:mpiprocs=24,walltime=01:00:00 Then launch the debugger with the totalview command followed by the name of the executable to debug. @@ -84,7 +73,7 @@ of the executable to debug. To debug a serial code use: - totalview test_debug + totalview test_debug ### Debugging a parallel code - option 1 @@ -95,27 +84,27 @@ Please note:** To be able to run parallel debugging procedure from the command line without stopping the debugger in the mpiexec source code you have to add the following function to your **~/.tvdrc** file: - proc mpi_auto_run_starter {loaded_id} { -    set starter_programs {mpirun mpiexec orterun} -    set executable_name [TV::symbol get $loaded_id full_pathname] -    set file_component [file tail $executable_name] + proc mpi_auto_run_starter {loaded_id} { +    set starter_programs {mpirun mpiexec orterun} +    set executable_name [TV::symbol get $loaded_id full_pathname] +    set file_component [file tail $executable_name] -    if {[lsearch -exact $starter_programs $file_component] != -1} { -        puts "**************************************" -        puts "Automatically starting $file_component" -        puts "**************************************" -        dgo -    } - } +    if {[lsearch -exact $starter_programs $file_component] != -1} { +        puts "**************************************" +        puts "Automatically starting $file_component" +        puts "**************************************" +        dgo +    } + } - # Append this function to TotalView's image load callbacks so that - # TotalView run this program automatically. + # Append this function to TotalView's image load callbacks so that + # TotalView run this program automatically. - dlappend TV::image_load_callbacks mpi_auto_run_starter + dlappend TV::image_load_callbacks mpi_auto_run_starter The source code of this function can be also found in - /apps/all/OpenMPI/1.10.1-GNU-4.9.3-2.25/etc/openmpi-totalview.tcl + /apps/all/OpenMPI/1.10.1-GNU-4.9.3-2.25/etc/openmpi-totalview.tcl You can also add only following line to you ~/.tvdrc file instead of the entire function: @@ -127,7 +116,7 @@ entry](https://www.open-mpi.org/faq/?category=running#run-with-tv) Now you can run the parallel debugger using: - mpirun -tv -n 5 ./test_debug + mpirun -tv -n 5 ./test_debug When following dialog appears click on "Yes" @@ -147,9 +136,9 @@ to specify a MPI implementation used to compile the source code. The following example shows how to start debugging session with Intel MPI: - module load intel/2015b-intel-2015b impi/5.0.3.048-iccifort-2015.3.187-GNU-5.1.0-2.25 TotalView/8.15.4-6-linux-x86-64 + module load intel/2015b-intel-2015b impi/5.0.3.048-iccifort-2015.3.187-GNU-5.1.0-2.25 TotalView/8.15.4-6-linux-x86-64 - totalview -mpi "Intel MPI-Hydra" -np 8 ./hello_debug_impi + totalview -mpi "Intel MPI-Hydra" -np 8 ./hello_debug_impi After running previous command you will see the same window as shown in the screenshot above. @@ -166,6 +155,3 @@ documentation](http://www.roguewave.com/support/product-documentation/totalview- web page is a good resource for learning more about some of the advanced TotalView features. - - - diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/valgrind.md b/converted/docs.it4i.cz/salomon/software/debuggers/valgrind.md index de33465df..099c02e1f 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/valgrind.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/valgrind.md @@ -1,19 +1,8 @@ Valgrind ======== - - - - Valgrind is a tool for memory debugging and profiling. - - - - - - - About Valgrind -------------- @@ -31,37 +20,37 @@ Valgrind run 5-100 times slower. The main tools available in Valgrind are : -- **Memcheck**, the original, must used and default tool. Verifies - memory access in you program and can detect use of unitialized - memory, out of bounds memory access, memory leaks, double free, etc. -- **Massif**, a heap profiler. -- **Hellgrind** and **DRD** can detect race conditions in - multi-threaded applications. -- **Cachegrind**, a cache profiler. -- **Callgrind**, a callgraph analyzer. -- For a full list and detailed documentation, please refer to the - [official Valgrind - documentation](http://valgrind.org/docs/). +- **Memcheck**, the original, must used and default tool. Verifies + memory access in you program and can detect use of unitialized + memory, out of bounds memory access, memory leaks, double free, etc. +- **Massif**, a heap profiler. +- **Hellgrind** and **DRD** can detect race conditions in + multi-threaded applications. +- **Cachegrind**, a cache profiler. +- **Callgrind**, a callgraph analyzer. +- For a full list and detailed documentation, please refer to the + [official Valgrind + documentation](http://valgrind.org/docs/). Installed versions ------------------ There are two versions of Valgrind available on the cluster. -- >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. This version however does not provide additional - MPI support. Also, it does not support AVX2 instructions, - **debugging of an AVX2-enabled executable with this version will - fail** -- >>Version 3.11.0 built by ICC with support for Intel MPI, - available in - [module](../../environment-and-modules.html) - Valgrind/3.11.0-intel-2015b. After loading - the module, this version replaces the default valgrind. -- Version 3.11.0 built by GCC with support for Open MPI, module - Valgrind/3.11.0-foss-2015b +- >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. This version however does not provide additional + MPI support. Also, it does not support AVX2 instructions, + **debugging of an AVX2-enabled executable with this version will + fail** +- >>Version 3.11.0 built by ICC with support for Intel MPI, + available in + [module](../../environment-and-modules.html) + Valgrind/3.11.0-intel-2015b. After loading + the module, this version replaces the default valgrind. +- Version 3.11.0 built by GCC with support for Open MPI, module + Valgrind/3.11.0-foss-2015b Usage ----- @@ -74,24 +63,24 @@ source code lines in the output) and -O0 For example, lets look at this C code, which has two problems : - #include <stdlib.h> + #include <stdlib.h> - void f(void) - { - int* x = malloc(10 * sizeof(int)); - x[10] = 0; // problem 1: heap block overrun - } // problem 2: memory leak -- x not freed + void f(void) + { + int* x = malloc(10 * sizeof(int)); + x[10] = 0; // problem 1: heap block overrun + } // problem 2: memory leak -- x not freed - int main(void) - { - f(); - return 0; - } + int main(void) + { + f(); + return 0; + } Now, compile it with Intel compiler : - $ module add intel - $ icc -g valgrind-example.c -o valgrind-example + $ module add intel + $ icc -g valgrind-example.c -o valgrind-example Now, lets run it with Valgrind. The syntax is : @@ -102,74 +91,74 @@ If no Valgrind options are specified, Valgrind defaults to running Memcheck tool. Please refer to the Valgrind documentation for a full description of command line options. - $ valgrind ./valgrind-example - ==12652== Memcheck, a memory error detector - ==12652== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. - ==12652== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info - ==12652== Command: ./valgrind-example - ==12652== - ==12652== Invalid write of size 4 - ==12652== at 0x40053E: f (valgrind-example.c:6) - ==12652== by 0x40054E: main (valgrind-example.c:11) - ==12652== Address 0x5861068 is 0 bytes after a block of size 40 alloc'd - ==12652== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==12652== by 0x400528: f (valgrind-example.c:5) - ==12652== by 0x40054E: main (valgrind-example.c:11) - ==12652== - ==12652== - ==12652== HEAP SUMMARY: - ==12652== in use at exit: 40 bytes in 1 blocks - ==12652== total heap usage: 1 allocs, 0 frees, 40 bytes allocated - ==12652== - ==12652== LEAK SUMMARY: - ==12652== definitely lost: 40 bytes in 1 blocks - ==12652== indirectly lost: 0 bytes in 0 blocks - ==12652== possibly lost: 0 bytes in 0 blocks - ==12652== still reachable: 0 bytes in 0 blocks - ==12652== suppressed: 0 bytes in 0 blocks - ==12652== Rerun with --leak-check=full to see details of leaked memory - ==12652== - ==12652== For counts of detected and suppressed errors, rerun with: -v - ==12652== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6) + $ valgrind ./valgrind-example + ==12652== Memcheck, a memory error detector + ==12652== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. + ==12652== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info + ==12652== Command: ./valgrind-example + ==12652== + ==12652== Invalid write of size 4 + ==12652== at 0x40053E: f (valgrind-example.c:6) + ==12652== by 0x40054E: main (valgrind-example.c:11) + ==12652== Address 0x5861068 is 0 bytes after a block of size 40 alloc'd + ==12652== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==12652== by 0x400528: f (valgrind-example.c:5) + ==12652== by 0x40054E: main (valgrind-example.c:11) + ==12652== + ==12652== + ==12652== HEAP SUMMARY: + ==12652== in use at exit: 40 bytes in 1 blocks + ==12652== total heap usage: 1 allocs, 0 frees, 40 bytes allocated + ==12652== + ==12652== LEAK SUMMARY: + ==12652== definitely lost: 40 bytes in 1 blocks + ==12652== indirectly lost: 0 bytes in 0 blocks + ==12652== possibly lost: 0 bytes in 0 blocks + ==12652== still reachable: 0 bytes in 0 blocks + ==12652== suppressed: 0 bytes in 0 blocks + ==12652== Rerun with --leak-check=full to see details of leaked memory + ==12652== + ==12652== For counts of detected and suppressed errors, rerun with: -v + ==12652== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 6 from 6) In the output we can see that Valgrind has detected both errors - the off-by-one memory access at line 5 and a memory leak of 40 bytes. If we want a detailed analysis of the memory leak, we need to run Valgrind with --leak-check=full option : - $ valgrind --leak-check=full ./valgrind-example - ==23856== Memcheck, a memory error detector - ==23856== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. - ==23856== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info - ==23856== Command: ./valgrind-example - ==23856== - ==23856== Invalid write of size 4 - ==23856== at 0x40067E: f (valgrind-example.c:6) - ==23856== by 0x40068E: main (valgrind-example.c:11) - ==23856== Address 0x66e7068 is 0 bytes after a block of size 40 alloc'd - ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) - ==23856== by 0x400668: f (valgrind-example.c:5) - ==23856== by 0x40068E: main (valgrind-example.c:11) - ==23856== - ==23856== - ==23856== HEAP SUMMARY: - ==23856== in use at exit: 40 bytes in 1 blocks - ==23856== total heap usage: 1 allocs, 0 frees, 40 bytes allocated - ==23856== - ==23856== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 - ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) - ==23856== by 0x400668: f (valgrind-example.c:5) - ==23856== by 0x40068E: main (valgrind-example.c:11) - ==23856== - ==23856== LEAK SUMMARY: - ==23856== definitely lost: 40 bytes in 1 blocks - ==23856== indirectly lost: 0 bytes in 0 blocks - ==23856== possibly lost: 0 bytes in 0 blocks - ==23856== still reachable: 0 bytes in 0 blocks - ==23856== suppressed: 0 bytes in 0 blocks - ==23856== - ==23856== For counts of detected and suppressed errors, rerun with: -v - ==23856== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 6 from 6) + $ valgrind --leak-check=full ./valgrind-example + ==23856== Memcheck, a memory error detector + ==23856== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. + ==23856== Using Valgrind-3.6.0 and LibVEX; rerun with -h for copyright info + ==23856== Command: ./valgrind-example + ==23856== + ==23856== Invalid write of size 4 + ==23856== at 0x40067E: f (valgrind-example.c:6) + ==23856== by 0x40068E: main (valgrind-example.c:11) + ==23856== Address 0x66e7068 is 0 bytes after a block of size 40 alloc'd + ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) + ==23856== by 0x400668: f (valgrind-example.c:5) + ==23856== by 0x40068E: main (valgrind-example.c:11) + ==23856== + ==23856== + ==23856== HEAP SUMMARY: + ==23856== in use at exit: 40 bytes in 1 blocks + ==23856== total heap usage: 1 allocs, 0 frees, 40 bytes allocated + ==23856== + ==23856== 40 bytes in 1 blocks are definitely lost in loss record 1 of 1 + ==23856== at 0x4C26FDE: malloc (vg_replace_malloc.c:236) + ==23856== by 0x400668: f (valgrind-example.c:5) + ==23856== by 0x40068E: main (valgrind-example.c:11) + ==23856== + ==23856== LEAK SUMMARY: + ==23856== definitely lost: 40 bytes in 1 blocks + ==23856== indirectly lost: 0 bytes in 0 blocks + ==23856== possibly lost: 0 bytes in 0 blocks + ==23856== still reachable: 0 bytes in 0 blocks + ==23856== suppressed: 0 bytes in 0 blocks + ==23856== + ==23856== For counts of detected and suppressed errors, rerun with: -v + ==23856== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 6 from 6) Now we can see that the memory leak is due to the malloc() at line 6. @@ -181,28 +170,27 @@ Although Valgrind is not primarily a parallel debugger, it can be used to debug parallel applications as well. When launching your parallel applications, prepend the valgrind command. For example : - $ mpirun -np 4 valgrind myapplication + $ mpirun -np 4 valgrind myapplication The default version without MPI support will however report a large number of false errors in the MPI library, such as : - ==30166== Conditional jump or move depends on uninitialised value(s) - ==30166== at 0x4C287E8: strlen (mc_replace_strmem.c:282) - ==30166== by 0x55443BD: I_MPI_Processor_model_number (init_interface.c:427) - ==30166== by 0x55439E0: I_MPI_Processor_arch_code (init_interface.c:171) - ==30166== by 0x558D5AE: MPID_nem_impi_init_shm_configuration (mpid_nem_impi_extensions.c:1091) - ==30166== by 0x5598F4C: MPID_nem_init_ckpt (mpid_nem_init.c:566) - ==30166== by 0x5598B65: MPID_nem_init (mpid_nem_init.c:489) - ==30166== by 0x539BD75: MPIDI_CH3_Init (ch3_init.c:64) - ==30166== by 0x5578743: MPID_Init (mpid_init.c:193) - ==30166== by 0x554650A: MPIR_Init_thread (initthread.c:539) - ==30166== by 0x553369F: PMPI_Init (init.c:195) - ==30166== by 0x4008BD: main (valgrind-example-mpi.c:18) + ==30166== Conditional jump or move depends on uninitialised value(s) + ==30166== at 0x4C287E8: strlen (mc_replace_strmem.c:282) + ==30166== by 0x55443BD: I_MPI_Processor_model_number (init_interface.c:427) + ==30166== by 0x55439E0: I_MPI_Processor_arch_code (init_interface.c:171) + ==30166== by 0x558D5AE: MPID_nem_impi_init_shm_configuration (mpid_nem_impi_extensions.c:1091) + ==30166== by 0x5598F4C: MPID_nem_init_ckpt (mpid_nem_init.c:566) + ==30166== by 0x5598B65: MPID_nem_init (mpid_nem_init.c:489) + ==30166== by 0x539BD75: MPIDI_CH3_Init (ch3_init.c:64) + ==30166== by 0x5578743: MPID_Init (mpid_init.c:193) + ==30166== by 0x554650A: MPIR_Init_thread (initthread.c:539) + ==30166== by 0x553369F: PMPI_Init (init.c:195) + ==30166== by 0x4008BD: main (valgrind-example-mpi.c:18) so it is better to use the MPI-enabled valgrind from module. The MPI versions requires library : - $EBROOTVALGRIND/lib/valgrind/libmpiwrap-amd64-linux.so which must be included in the LD_PRELOAD @@ -210,105 +198,102 @@ environment variable. Lets look at this MPI example : - #include <stdlib.h> - #include <mpi.h> + #include <stdlib.h> + #include <mpi.h> - int main(int argc, char *argv[]) - { -      int *data = malloc(sizeof(int)*99); + int main(int argc, char *argv[]) + { +      int *data = malloc(sizeof(int)*99); -      MPI_Init(&argc, &argv); -     MPI_Bcast(data, 100, MPI_INT, 0, MPI_COMM_WORLD); -      MPI_Finalize(); +      MPI_Init(&argc, &argv); +     MPI_Bcast(data, 100, MPI_INT, 0, MPI_COMM_WORLD); +      MPI_Finalize(); -        return 0; - } +        return 0; + } There are two errors - use of uninitialized memory and invalid length of the buffer. Lets debug it with valgrind : - $ module add intel impi - $ mpiicc -g valgrind-example-mpi.c -o valgrind-example-mpi - $ module add Valgrind/3.11.0-intel-2015b - $ mpirun -np 2 -env LD_PRELOAD $EBROOTVALGRIND/lib/valgrind/libmpiwrap-amd64-linux.so valgrind ./valgrind-example-mpi + $ module add intel impi + $ mpiicc -g valgrind-example-mpi.c -o valgrind-example-mpi + $ module add Valgrind/3.11.0-intel-2015b + $ mpirun -np 2 -env LD_PRELOAD $EBROOTVALGRIND/lib/valgrind/libmpiwrap-amd64-linux.so valgrind ./valgrind-example-mpi Prints this output : (note that there is output printed for every launched MPI process) - ==31318== Memcheck, a memory error detector - ==31318== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. - ==31318== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info - ==31318== Command: ./valgrind-example-mpi - ==31318== - ==31319== Memcheck, a memory error detector - ==31319== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. - ==31319== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info - ==31319== Command: ./valgrind-example-mpi - ==31319== - valgrind MPI wrappers 31319: Active for pid 31319 - valgrind MPI wrappers 31319: Try MPIWRAP_DEBUG=help for possible options - valgrind MPI wrappers 31318: Active for pid 31318 - valgrind MPI wrappers 31318: Try MPIWRAP_DEBUG=help for possible options - ==31319== Unaddressable byte(s) found during client check request - ==31319== at 0x4E35974: check_mem_is_addressable_untyped (libmpiwrap.c:960) - ==31319== by 0x4E5D0FE: PMPI_Bcast (libmpiwrap.c:908) - ==31319== by 0x400911: main (valgrind-example-mpi.c:20) - ==31319== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd - ==31319== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==31319== by 0x4007BC: main (valgrind-example-mpi.c:8) - ==31319== - ==31318== Uninitialised byte(s) found during client check request - ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) - ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) - ==31318== by 0x400911: main (valgrind-example-mpi.c:20) - ==31318== Address 0x6929040 is 0 bytes inside a block of size 396 alloc'd - ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) - ==31318== - ==31318== Unaddressable byte(s) found during client check request - ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) - ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) - ==31318== by 0x400911: main (valgrind-example-mpi.c:20) - ==31318== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd - ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) - ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) - ==31318== - ==31318== - ==31318== HEAP SUMMARY: - ==31318== in use at exit: 3,172 bytes in 67 blocks - ==31318== total heap usage: 191 allocs, 124 frees, 81,203 bytes allocated - ==31318== - ==31319== - ==31319== HEAP SUMMARY: - ==31319== in use at exit: 3,172 bytes in 67 blocks - ==31319== total heap usage: 175 allocs, 108 frees, 48,435 bytes allocated - ==31319== - ==31318== LEAK SUMMARY: - ==31318== definitely lost: 408 bytes in 3 blocks - ==31318== indirectly lost: 256 bytes in 1 blocks - ==31318== possibly lost: 0 bytes in 0 blocks - ==31318== still reachable: 2,508 bytes in 63 blocks - ==31318== suppressed: 0 bytes in 0 blocks - ==31318== Rerun with --leak-check=full to see details of leaked memory - ==31318== - ==31318== For counts of detected and suppressed errors, rerun with: -v - ==31318== Use --track-origins=yes to see where uninitialised values come from - ==31318== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 4 from 4) - ==31319== LEAK SUMMARY: - ==31319== definitely lost: 408 bytes in 3 blocks - ==31319== indirectly lost: 256 bytes in 1 blocks - ==31319== possibly lost: 0 bytes in 0 blocks - ==31319== still reachable: 2,508 bytes in 63 blocks - ==31319== suppressed: 0 bytes in 0 blocks - ==31319== Rerun with --leak-check=full to see details of leaked memory - ==31319== - ==31319== For counts of detected and suppressed errors, rerun with: -v - ==31319== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4) + ==31318== Memcheck, a memory error detector + ==31318== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. + ==31318== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info + ==31318== Command: ./valgrind-example-mpi + ==31318== + ==31319== Memcheck, a memory error detector + ==31319== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. + ==31319== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info + ==31319== Command: ./valgrind-example-mpi + ==31319== + valgrind MPI wrappers 31319: Active for pid 31319 + valgrind MPI wrappers 31319: Try MPIWRAP_DEBUG=help for possible options + valgrind MPI wrappers 31318: Active for pid 31318 + valgrind MPI wrappers 31318: Try MPIWRAP_DEBUG=help for possible options + ==31319== Unaddressable byte(s) found during client check request + ==31319== at 0x4E35974: check_mem_is_addressable_untyped (libmpiwrap.c:960) + ==31319== by 0x4E5D0FE: PMPI_Bcast (libmpiwrap.c:908) + ==31319== by 0x400911: main (valgrind-example-mpi.c:20) + ==31319== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd + ==31319== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==31319== by 0x4007BC: main (valgrind-example-mpi.c:8) + ==31319== + ==31318== Uninitialised byte(s) found during client check request + ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) + ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) + ==31318== by 0x400911: main (valgrind-example-mpi.c:20) + ==31318== Address 0x6929040 is 0 bytes inside a block of size 396 alloc'd + ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) + ==31318== + ==31318== Unaddressable byte(s) found during client check request + ==31318== at 0x4E3591D: check_mem_is_defined_untyped (libmpiwrap.c:952) + ==31318== by 0x4E5D06D: PMPI_Bcast (libmpiwrap.c:908) + ==31318== by 0x400911: main (valgrind-example-mpi.c:20) + ==31318== Address 0x69291cc is 0 bytes after a block of size 396 alloc'd + ==31318== at 0x4C27AAA: malloc (vg_replace_malloc.c:291) + ==31318== by 0x4007BC: main (valgrind-example-mpi.c:8) + ==31318== + ==31318== + ==31318== HEAP SUMMARY: + ==31318== in use at exit: 3,172 bytes in 67 blocks + ==31318== total heap usage: 191 allocs, 124 frees, 81,203 bytes allocated + ==31318== + ==31319== + ==31319== HEAP SUMMARY: + ==31319== in use at exit: 3,172 bytes in 67 blocks + ==31319== total heap usage: 175 allocs, 108 frees, 48,435 bytes allocated + ==31319== + ==31318== LEAK SUMMARY: + ==31318== definitely lost: 408 bytes in 3 blocks + ==31318== indirectly lost: 256 bytes in 1 blocks + ==31318== possibly lost: 0 bytes in 0 blocks + ==31318== still reachable: 2,508 bytes in 63 blocks + ==31318== suppressed: 0 bytes in 0 blocks + ==31318== Rerun with --leak-check=full to see details of leaked memory + ==31318== + ==31318== For counts of detected and suppressed errors, rerun with: -v + ==31318== Use --track-origins=yes to see where uninitialised values come from + ==31318== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 4 from 4) + ==31319== LEAK SUMMARY: + ==31319== definitely lost: 408 bytes in 3 blocks + ==31319== indirectly lost: 256 bytes in 1 blocks + ==31319== possibly lost: 0 bytes in 0 blocks + ==31319== still reachable: 2,508 bytes in 63 blocks + ==31319== suppressed: 0 bytes in 0 blocks + ==31319== Rerun with --leak-check=full to see details of leaked memory + ==31319== + ==31319== For counts of detected and suppressed errors, rerun with: -v + ==31319== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4) We can see that Valgrind has reported use of unitialised memory on the master process (which reads the array to be broadcasted) and use of unaddresable memory on both processes. - - - diff --git a/converted/docs.it4i.cz/salomon/software/debuggers/vampir.md b/converted/docs.it4i.cz/salomon/software/debuggers/vampir.md index a0b44fbd6..a26fb3e87 100644 --- a/converted/docs.it4i.cz/salomon/software/debuggers/vampir.md +++ b/converted/docs.it4i.cz/salomon/software/debuggers/vampir.md @@ -1,14 +1,6 @@ Vampir ====== - - - - - - - - Vampir is a commercial trace analysis and visualisation tool. It can work with traces in OTF and OTF2 formats. It does not have the functionality to collect traces, you need to use a trace collection tool @@ -24,8 +16,8 @@ Installed versions Version 8.5.0 is currently installed as module Vampir/8.5.0 : - $ module load Vampir/8.5.0 - $ vampir & + $ module load Vampir/8.5.0 + $ vampir & User manual ----------- @@ -36,8 +28,5 @@ $EBROOTVAMPIR/doc/vampir-manual.pdf References ---------- -1.<https://www.vampir.eu> - - - +1. <https://www.vampir.eu> diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-advisor.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-advisor.md index a2c1b218c..4ffe72609 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-advisor.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-advisor.md @@ -1,14 +1,6 @@ Intel Advisor ============= - - - - - - - - is tool aiming to assist you in vectorization and threading of your code. You can use it to profile your application and identify loops, that could benefit from vectorization and/or threading @@ -19,10 +11,10 @@ Installed versions The following versions are currently available on Salomon as modules: ---------------- ----------------------- -Version** **Module** -2016 Update 2 Advisor/2016_update2 ---------------- ----------------------- + --------------- ----------------------- + **Version** **Module** + 2016 Update 2 Advisor/2016_update2 + --------------- ----------------------- Usage ----- @@ -36,7 +28,7 @@ line. To profile from GUI, launch Advisor: - $ advixe-gui + $ advixe-gui Then select menu File -> New -> Project. Choose a directory to save project data to. After clicking OK, Project properties window will @@ -52,14 +44,11 @@ command line. References ---------- -1.[Intel® Advisor 2015 Tutorial: Find Where to Add Parallelism - C++ - Sample](https://software.intel.com/en-us/advisorxe_2015_tut_lin_c) -2.[Product - page](https://software.intel.com/en-us/intel-advisor-xe) -3.[Documentation](https://software.intel.com/en-us/intel-advisor-2016-user-guide-linux) +1. [Intel® Advisor 2015 Tutorial: Find Where to Add Parallelism - C++ + Sample](https://software.intel.com/en-us/advisorxe_2015_tut_lin_c) +2. [Product + page](https://software.intel.com/en-us/intel-advisor-xe) +3. [Documentation](https://software.intel.com/en-us/intel-advisor-2016-user-guide-linux)  - - - diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-compilers.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-compilers.md index 5d8661a9b..b846db42a 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-compilers.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-compilers.md @@ -1,25 +1,15 @@ Intel Compilers =============== - - - - - - - - - - - + The Intel compilers in multiple versions are available, via module intel. The compilers include the icc C and C++ compiler and the ifort fortran 77/90/95 compiler. - $ module load intel - $ icc -v - $ ifort -v + $ module load intel + $ icc -v + $ ifort -v The intel compilers provide for vectorization of the code, via the AVX2 instructions and support threading parallelization via OpenMP @@ -29,8 +19,8 @@ your programs using the AVX2 instructions, with reporting where the vectorization was used. We recommend following compilation options for high performance - $ icc -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec myprog.c mysubroutines.c -o myprog.x - $ ifort -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec myprog.f mysubroutines.f -o myprog.x + $ icc -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec myprog.c mysubroutines.c -o myprog.x + $ ifort -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec myprog.f mysubroutines.f -o myprog.x In this example, we compile the program enabling interprocedural optimizations between source files (-ipo), aggresive loop optimizations @@ -40,8 +30,8 @@ The compiler recognizes the omp, simd, vector and ivdep pragmas for OpenMP parallelization and AVX2 vectorization. Enable the OpenMP parallelization by the **-openmp** compiler switch. - $ icc -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec -openmp myprog.c mysubroutines.c -o myprog.x - $ ifort -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec -openmp myprog.f mysubroutines.f -o myprog.x + $ icc -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec -openmp myprog.c mysubroutines.c -o myprog.x + $ ifort -ipo -O3 -xCORE-AVX2 -qopt-report1 -qopt-report-phase=vec -openmp myprog.f mysubroutines.f -o myprog.x Read more at <https://software.intel.com/en-us/intel-cplusplus-compiler-16.0-user-and-reference-guide> @@ -63,22 +53,19 @@ flags >designated to invoke these instructions. For the Intel compiler suite, there are two ways of doing >this: -- >Using compiler flag (both for Fortran and C): - -xCORE-AVX2. This will create a - binary class="s1">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. So 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. - - - +- >Using compiler flag (both for Fortran and C): + -xCORE-AVX2. This will create a + binary class="s1">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. So 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/converted/docs.it4i.cz/salomon/software/intel-suite/intel-debugger.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-debugger.md index b1663cee8..a806174fd 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-debugger.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-debugger.md @@ -1,17 +1,7 @@ Intel Debugger ============== - - - - - - - - - - - + IDB is no longer available since Intel Parallel Studio 2015 @@ -25,13 +15,13 @@ environment. Use [X display](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html) for running the GUI. - $ module load intel/2014.06 - $ module load Java - $ idb + $ module load intel/2014.06 + $ module load Java + $ idb The debugger may run in text mode. To debug in text mode, use - $ idbc + $ idbc To debug on the compute nodes, module intel must be loaded. The GUI on compute nodes may be accessed using the same way as in [the @@ -40,14 +30,14 @@ section](../../../get-started-with-it4innovations/accessing-the-clusters/graphic Example: - $ qsub -q qexp -l select=1:ncpus=24 -X -I - qsub: waiting for job 19654.srv11 to start - qsub: job 19654.srv11 ready + $ qsub -q qexp -l select=1:ncpus=24 -X -I + qsub: waiting for job 19654.srv11 to start + qsub: job 19654.srv11 ready - $ module load intel - $ module load Java - $ icc -O0 -g myprog.c -o myprog.x - $ idb ./myprog.x + $ module load intel + $ module load Java + $ icc -O0 -g myprog.c -o myprog.x + $ idb ./myprog.x In this example, we allocate 1 full compute node, compile program myprog.c with debugging options -O0 -g and run the idb debugger @@ -67,12 +57,12 @@ rank in separate xterm terminal (do not forget the [X display](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html)). Using Intel MPI, this may be done in following way: - $ qsub -q qexp -l select=2:ncpus=24 -X -I - qsub: waiting for job 19654.srv11 to start - qsub: job 19655.srv11 ready + $ qsub -q qexp -l select=2:ncpus=24 -X -I + qsub: waiting for job 19654.srv11 to start + qsub: job 19655.srv11 ready - $ module load intel impi - $ mpirun -ppn 1 -hostfile $PBS_NODEFILE --enable-x xterm -e idbc ./mympiprog.x + $ module load intel impi + $ mpirun -ppn 1 -hostfile $PBS_NODEFILE --enable-x xterm -e idbc ./mympiprog.x In this example, we allocate 2 full compute node, run xterm on each node and start idb debugger in command line mode, debugging two ranks of @@ -86,12 +76,12 @@ the debugger to bind to all ranks and provide aggregated outputs across the ranks, pausing execution automatically just after startup. You may then set break points and step the execution manually. Using Intel MPI: - $ qsub -q qexp -l select=2:ncpus=24 -X -I - qsub: waiting for job 19654.srv11 to start - qsub: job 19655.srv11 ready + $ qsub -q qexp -l select=2:ncpus=24 -X -I + qsub: waiting for job 19654.srv11 to start + qsub: job 19655.srv11 ready - $ module load intel impi - $ mpirun -n 48 -idb ./mympiprog.x + $ module load intel impi + $ mpirun -n 48 -idb ./mympiprog.x ### Debugging multithreaded application @@ -108,6 +98,3 @@ Exhaustive manual on idb features and usage is published at Intel website, <https://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/> - - - diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-inspector.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-inspector.md index 17209fd2e..c9de50dd4 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-inspector.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-inspector.md @@ -1,14 +1,6 @@ Intel Inspector =============== - - - - - - - - Intel Inspector is a dynamic memory and threading error checking tool for C/C++/Fortran applications. It can detect issues such as memory leaks, invalid memory references, uninitalized variables, race @@ -19,10 +11,10 @@ Installed versions The following versions are currently available on Salomon as modules: ---------------- ------------------------- -Version** **Module** -2016 Update 1 Inspector/2016_update1 ---------------- ------------------------- + --------------- ------------------------- + **Version** **Module** + 2016 Update 1 Inspector/2016_update1 + --------------- ------------------------- Usage ----- @@ -37,7 +29,7 @@ line. To debug from GUI, launch Inspector: - $ inspxe-gui & + $ inspxe-gui & Then select menu File -> New -> Project. Choose a directory to save project data to. After clicking OK, Project properties window will @@ -63,12 +55,9 @@ selecting File -> Open -> Result... References ---------- -1.[Product - page](https://software.intel.com/en-us/intel-inspector-xe) -2.[Documentation and Release - Notes](https://software.intel.com/en-us/intel-inspector-xe-support/documentation) -3.[Tutorials](https://software.intel.com/en-us/articles/inspectorxe-tutorials) - - - +1. [Product + page](https://software.intel.com/en-us/intel-inspector-xe) +2. [Documentation and Release + Notes](https://software.intel.com/en-us/intel-inspector-xe-support/documentation) +3. [Tutorials](https://software.intel.com/en-us/articles/inspectorxe-tutorials) diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-integrated-performance-primitives.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-integrated-performance-primitives.md index d62f7400c..cbfa598d9 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-integrated-performance-primitives.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-integrated-performance-primitives.md @@ -1,17 +1,7 @@ Intel IPP ========= - - - - - - - - - - - + Intel Integrated Performance Primitives --------------------------------------- @@ -27,7 +17,7 @@ algebra functions and many more. Check out IPP before implementing own math functions for data processing, it is likely already there. - $ module load ipp + $ module load ipp The module sets up environment variables, required for linking and running ipp enabled applications. @@ -35,60 +25,60 @@ running ipp enabled applications. IPP example ----------- - #include "ipp.h" - #include <stdio.h> - int main(int argc, char* argv[]) - { - const IppLibraryVersion *lib; - Ipp64u fm; - IppStatus status; - - status= ippInit(); //IPP initialization with the best optimization layer - if( status != ippStsNoErr ) { - printf("IppInit() Error:n"); - printf("%sn", ippGetStatusString(status) ); - return -1; - } - - //Get version info - lib = ippiGetLibVersion(); - printf("%s %sn", lib->Name, lib->Version); - - //Get CPU features enabled with selected library level - fm=ippGetEnabledCpuFeatures(); - printf("SSE :%cn",(fm>>1)&1?'Y':'N'); - printf("SSE2 :%cn",(fm>>2)&1?'Y':'N'); - printf("SSE3 :%cn",(fm>>3)&1?'Y':'N'); - printf("SSSE3 :%cn",(fm>>4)&1?'Y':'N'); - printf("SSE41 :%cn",(fm>>6)&1?'Y':'N'); - printf("SSE42 :%cn",(fm>>7)&1?'Y':'N'); - printf("AVX :%cn",(fm>>8)&1 ?'Y':'N'); - printf("AVX2 :%cn", (fm>>15)&1 ?'Y':'N' ); - printf("----------n"); - printf("OS Enabled AVX :%cn", (fm>>9)&1 ?'Y':'N'); - printf("AES :%cn", (fm>>10)&1?'Y':'N'); - printf("CLMUL :%cn", (fm>>11)&1?'Y':'N'); - printf("RDRAND :%cn", (fm>>13)&1?'Y':'N'); - printf("F16C :%cn", (fm>>14)&1?'Y':'N'); - - return 0; - } + #include "ipp.h" + #include <stdio.h> + int main(int argc, char* argv[]) + { + const IppLibraryVersion *lib; + Ipp64u fm; + IppStatus status; + + status= ippInit(); //IPP initialization with the best optimization layer + if( status != ippStsNoErr ) { + printf("IppInit() Error:n"); + printf("%sn", ippGetStatusString(status) ); + return -1; + } + + //Get version info + lib = ippiGetLibVersion(); + printf("%s %sn", lib->Name, lib->Version); + + //Get CPU features enabled with selected library level + fm=ippGetEnabledCpuFeatures(); + printf("SSE :%cn",(fm>>1)&1?'Y':'N'); + printf("SSE2 :%cn",(fm>>2)&1?'Y':'N'); + printf("SSE3 :%cn",(fm>>3)&1?'Y':'N'); + printf("SSSE3 :%cn",(fm>>4)&1?'Y':'N'); + printf("SSE41 :%cn",(fm>>6)&1?'Y':'N'); + printf("SSE42 :%cn",(fm>>7)&1?'Y':'N'); + printf("AVX :%cn",(fm>>8)&1 ?'Y':'N'); + printf("AVX2 :%cn", (fm>>15)&1 ?'Y':'N' ); + printf("----------n"); + printf("OS Enabled AVX :%cn", (fm>>9)&1 ?'Y':'N'); + printf("AES :%cn", (fm>>10)&1?'Y':'N'); + printf("CLMUL :%cn", (fm>>11)&1?'Y':'N'); + printf("RDRAND :%cn", (fm>>13)&1?'Y':'N'); + printf("F16C :%cn", (fm>>14)&1?'Y':'N'); + + return 0; + }  Compile above example, using any compiler and the ipp module. - $ module load intel - $ module load ipp + $ module load intel + $ module load ipp - $ icc testipp.c -o testipp.x -lippi -lipps -lippcore + $ icc testipp.c -o testipp.x -lippi -lipps -lippcore You will need the ipp module loaded to run the ipp enabled executable. This may be avoided, by compiling library search paths into the executable - $ module load intel - $ module load ipp + $ module load intel + $ module load ipp - $ icc testipp.c -o testipp.x -Wl,-rpath=$LIBRARY_PATH -lippi -lipps -lippcore + $ icc testipp.c -o testipp.x -Wl,-rpath=$LIBRARY_PATH -lippi -lipps -lippcore Code samples and documentation ------------------------------ @@ -102,6 +92,3 @@ website,](http://software.intel.com/sites/products/search/search.php?q=&x=15&y=6 in particular the [IPP Reference manual.](http://software.intel.com/sites/products/documentation/doclib/ipp_sa/71/ipp_manual/index.htm) - - - diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-mkl.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-mkl.md index 23e0781b9..f9cfe5aa6 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-mkl.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-mkl.md @@ -1,18 +1,7 @@ Intel MKL ========= - - - - - - - - - - - - + Intel Math Kernel Library ------------------------- @@ -21,68 +10,65 @@ Intel Math Kernel Library (Intel MKL) is a library of math kernel subroutines, extensively threaded and optimized for maximum performance. Intel MKL provides these basic math kernels: +- -- + - + BLAS (level 1, 2, and 3) and LAPACK linear algebra routines, + offering vector, vector-matrix, and matrix-matrix operations. +- - BLAS (level 1, 2, and 3) and LAPACK linear algebra routines, - offering vector, vector-matrix, and matrix-matrix operations. -- + - + The PARDISO direct sparse solver, an iterative sparse solver, + and supporting sparse BLAS (level 1, 2, and 3) routines for solving + sparse systems of equations. +- - The PARDISO direct sparse solver, an iterative sparse solver, - and supporting sparse BLAS (level 1, 2, and 3) routines for solving - sparse systems of equations. -- + - + ScaLAPACK distributed processing linear algebra routines for + Linux* and Windows* operating systems, as well as the Basic Linear + Algebra Communications Subprograms (BLACS) and the Parallel Basic + Linear Algebra Subprograms (PBLAS). +- - ScaLAPACK distributed processing linear algebra routines for - Linux* and Windows* operating systems, as well as the Basic Linear - Algebra Communications Subprograms (BLACS) and the Parallel Basic - Linear Algebra Subprograms (PBLAS). -- + - + Fast Fourier transform (FFT) functions in one, two, or three + dimensions with support for mixed radices (not limited to sizes that + are powers of 2), as well as distributed versions of + these functions. +- - Fast Fourier transform (FFT) functions in one, two, or three - dimensions with support for mixed radices (not limited to sizes that - are powers of 2), as well as distributed versions of - these functions. -- + - + Vector Math Library (VML) routines for optimized mathematical + operations on vectors. +- - Vector Math Library (VML) routines for optimized mathematical - operations on vectors. -- + - - - Vector Statistical Library (VSL) routines, which offer - high-performance vectorized random number generators (RNG) for - several probability distributions, convolution and correlation - routines, and summary statistics functions. -- - - - - Data Fitting Library, which provides capabilities for - spline-based approximation of functions, derivatives and integrals - of functions, and search. -- Extended Eigensolver, a shared memory version of an eigensolver - based on the Feast Eigenvalue Solver. + Vector Statistical Library (VSL) routines, which offer + high-performance vectorized random number generators (RNG) for + several probability distributions, convolution and correlation + routines, and summary statistics functions. +- + + Data Fitting Library, which provides capabilities for + spline-based approximation of functions, derivatives and integrals + of functions, and search. +- Extended Eigensolver, a shared memory version of an eigensolver + based on the Feast Eigenvalue Solver. For details see the [Intel MKL Reference Manual](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mklman/index.htm). Intel MKL version 11.2.3.187 is available on the cluster - $ module load imkl + $ module load imkl The module sets up environment variables, required for linking and running mkl enabled applications. The most important variables are the @@ -99,10 +85,10 @@ integer type (necessary for indexing large arrays, with more than 231^-1 elements), whereas the LP64 libraries index arrays with the 32-bit integer type. -Interface Integer type ------------ ----------------------------------------------- -LP64 32-bit, int, integer(kind=4), MPI_INT -ILP64 64-bit, long int, integer(kind=8), MPI_INT64 + Interface Integer type + ----------- ----------------------------------------------- + LP64 32-bit, int, integer(kind=4), MPI_INT + ILP64 64-bit, long int, integer(kind=8), MPI_INT64 ### Linking @@ -114,7 +100,7 @@ You will need the mkl module loaded to run the mkl enabled executable. This may be avoided, by compiling library search paths into the executable. Include rpath on the compile line: - $ icc .... -Wl,-rpath=$LIBRARY_PATH ... + $ icc .... -Wl,-rpath=$LIBRARY_PATH ... ### Threading @@ -126,8 +112,8 @@ For this to work, the application must link the threaded MKL library OpenMP environment variables, such as OMP_NUM_THREADS and KMP_AFFINITY. MKL_NUM_THREADS takes precedence over OMP_NUM_THREADS - $ export OMP_NUM_THREADS=24 - $ export KMP_AFFINITY=granularity=fine,compact,1,0 + $ export OMP_NUM_THREADS=24 + $ export KMP_AFFINITY=granularity=fine,compact,1,0 The application will run with 24 threads with affinity optimized for fine grain parallelization. @@ -142,47 +128,47 @@ compiled program for multi-threaded matrix multiplication. ### Working with examples - $ module load intel - $ module load imkl - $ cp -a $MKL_EXAMPLES/cblas /tmp/ - $ cd /tmp/cblas + $ module load intel + $ module load imkl + $ cp -a $MKL_EXAMPLES/cblas /tmp/ + $ cd /tmp/cblas - $ make sointel64 function=cblas_dgemm + $ make sointel64 function=cblas_dgemm In this example, we compile, link and run the cblas_dgemm example, demonstrating use of MKL example suite installed on clusters. ### Example: MKL and Intel compiler - $ module load intel - $ module load imkl - $ cp -a $MKL_EXAMPLES/cblas /tmp/ - $ cd /tmp/cblas - $ - $ icc -w source/cblas_dgemmx.c source/common_func.c -mkl -o cblas_dgemmx.x - $ ./cblas_dgemmx.x data/cblas_dgemmx.d + $ module load intel + $ module load imkl + $ cp -a $MKL_EXAMPLES/cblas /tmp/ + $ cd /tmp/cblas + $ + $ icc -w source/cblas_dgemmx.c source/common_func.c -mkl -o cblas_dgemmx.x + $ ./cblas_dgemmx.x data/cblas_dgemmx.d In this example, we compile, link and run the cblas_dgemm example, demonstrating use of MKL with icc -mkl option. Using the -mkl option is equivalent to: - $ icc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x - -I$MKL_INC_DIR -L$MKL_LIB_DIR -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 + $ icc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x + -I$MKL_INC_DIR -L$MKL_LIB_DIR -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 In this example, we compile and link the cblas_dgemm example, using LP64 interface to threaded MKL and Intel OMP threads implementation. ### Example: Intel MKL and GNU compiler - $ module load GCC - $ module load imkl - $ cp -a $MKL_EXAMPLES/cblas /tmp/ - $ cd /tmp/cblas - - $ gcc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x - -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lm + $ module load GCC + $ module load imkl + $ cp -a $MKL_EXAMPLES/cblas /tmp/ + $ cd /tmp/cblas + + $ gcc -w source/cblas_dgemmx.c source/common_func.c -o cblas_dgemmx.x + -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lm - $ ./cblas_dgemmx.x data/cblas_dgemmx.d + $ ./cblas_dgemmx.x data/cblas_dgemmx.d In this example, we compile, link and run the cblas_dgemm example, using LP64 interface to threaded MKL and gnu OMP threads implementation. @@ -212,6 +198,3 @@ website](http://software.intel.com/en-us/intel-mkl), in particular the [MKL users guide](https://software.intel.com/en-us/intel-mkl/documentation/linux). - - - diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-parallel-studio-introduction.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-parallel-studio-introduction.md index 3a8c44f57..d77b2d908 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-parallel-studio-introduction.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-parallel-studio-introduction.md @@ -1,31 +1,21 @@ Intel Parallel Studio ===================== - - - - - - - - - - - + The Salomon cluster provides following elements of the Intel Parallel Studio XE -Intel Parallel Studio XE -------------------------------------------------- -Intel Compilers -Intel Debugger -Intel MKL Library -Intel Integrated Performance Primitives Library -Intel Threading Building Blocks Library -Intel Trace Analyzer and Collector -Intel Advisor -Intel Inspector + Intel Parallel Studio XE + ------------------------------------------------- + Intel Compilers + Intel Debugger + Intel MKL Library + Intel Integrated Performance Primitives Library + Intel Threading Building Blocks Library + Intel Trace Analyzer and Collector + Intel Advisor + Intel Inspector Intel compilers --------------- @@ -34,9 +24,9 @@ The Intel compilers version 131.3 are available, via module iccifort/2013.5.192-GCC-4.8.3. The compilers include the icc C and C++ compiler and the ifort fortran 77/90/95 compiler. - $ module load intel - $ icc -v - $ ifort -v + $ module load intel + $ icc -v + $ ifort -v Read more at the [Intel Compilers](intel-compilers.html) page. @@ -53,8 +43,8 @@ environment. Use [X display](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html) for running the GUI. - $ module load intel - $ idb + $ module load intel + $ idb Read more at the [Intel Debugger](intel-debugger.html) page. @@ -68,7 +58,7 @@ Intel MKL unites and provides these basic components: BLAS, LAPACK, ScaLapack, PARDISO, FFT, VML, VSL, Data fitting, Feast Eigensolver and many more. - $ module load imkl + $ module load imkl Read more at the [Intel MKL](intel-mkl.html) page. @@ -82,7 +72,7 @@ includes signal, image and frame processing algorithms, such as FFT, FIR, Convolution, Optical Flow, Hough transform, Sum, MinMax and many more. - $ module load ipp + $ module load ipp Read more at the [Intel IPP](intel-integrated-performance-primitives.html) page. @@ -99,10 +89,7 @@ smaller parallel components. To use the library, you specify tasks, not threads, and let the library map tasks onto threads in an efficient manner. - $ module load tbb + $ module load tbb Read more at the [Intel TBB](intel-tbb.html) page. - - - diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-tbb.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-tbb.md index 84d45ce7e..8fea59c78 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-tbb.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-tbb.md @@ -1,17 +1,7 @@ Intel TBB ========= - - - - - - - - - - - + Intel Threading Building Blocks ------------------------------- @@ -26,7 +16,7 @@ accelerator](../intel-xeon-phi.html). Intel TBB version 4.3.5.187 is available on the cluster. - $ module load tbb + $ module load tbb The module sets up environment variables, required for linking and running tbb enabled applications. @@ -39,12 +29,12 @@ Examples Number of examples, demonstrating use of TBB and its built-in scheduler is available on Anselm, in the $TBB_EXAMPLES directory. - $ module load intel - $ module load tbb - $ cp -a $TBB_EXAMPLES/common $TBB_EXAMPLES/parallel_reduce /tmp/ - $ cd /tmp/parallel_reduce/primes - $ icc -O2 -DNDEBUG -o primes.x main.cpp primes.cpp -ltbb - $ ./primes.x + $ module load intel + $ module load tbb + $ cp -a $TBB_EXAMPLES/common $TBB_EXAMPLES/parallel_reduce /tmp/ + $ cd /tmp/parallel_reduce/primes + $ icc -O2 -DNDEBUG -o primes.x main.cpp primes.cpp -ltbb + $ ./primes.x In this example, we compile, link and run the primes example, demonstrating use of parallel task-based reduce in computation of prime @@ -54,7 +44,7 @@ You will need the tbb module loaded to run the tbb enabled executable. This may be avoided, by compiling library search paths into the executable. - $ icc -O2 -o primes.x main.cpp primes.cpp -Wl,-rpath=$LIBRARY_PATH -ltbb + $ icc -O2 -o primes.x main.cpp primes.cpp -Wl,-rpath=$LIBRARY_PATH -ltbb Further reading --------------- @@ -62,6 +52,3 @@ Further reading Read more on Intel website, <http://software.intel.com/sites/products/documentation/doclib/tbb_sa/help/index.htm> - - - diff --git a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-trace-analyzer-and-collector.md b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-trace-analyzer-and-collector.md index 61dc40e4f..510aae8b6 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-suite/intel-trace-analyzer-and-collector.md +++ b/converted/docs.it4i.cz/salomon/software/intel-suite/intel-trace-analyzer-and-collector.md @@ -1,14 +1,6 @@ Intel Trace Analyzer and Collector ================================== - - - - - - - - Intel Trace Analyzer and Collector (ITAC) is a tool to collect and graphicaly analyze behaviour of MPI applications. It helps you to analyze communication patterns of your application, identify hotspots, @@ -31,8 +23,8 @@ Collecting traces ITAC can collect traces from applications that are using Intel MPI. To generate a trace, simply add -trace option to your mpirun command : - $ module load itac/9.1.2.024 - $ mpirun -trace myapp + $ module load itac/9.1.2.024 + $ mpirun -trace myapp The trace will be saved in file myapp.stf in the current directory. @@ -43,12 +35,11 @@ To view and analyze the trace, open ITAC GUI in a [graphical environment](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html) : - $ module load itac/9.1.2.024 - $ traceanalyzer + $ module load itac/9.1.2.024 + $ traceanalyzer The GUI will launch and you can open the produced *.stf file. -  Please refer to Intel documenation about usage of the GUI tool. @@ -56,11 +47,8 @@ Please refer to Intel documenation about usage of the GUI tool. References ---------- -1.[Getting Started with Intel® Trace Analyzer and - Collector](https://software.intel.com/en-us/get-started-with-itac-for-linux) -2.[Intel® Trace Analyzer and Collector - - Documentation](http://Intel®%20Trace%20Analyzer%20and%20Collector%20-%20Documentation) - - - +1. [Getting Started with Intel® Trace Analyzer and + Collector](https://software.intel.com/en-us/get-started-with-itac-for-linux) +2. [Intel® Trace Analyzer and Collector - + Documentation](http://Intel®%20Trace%20Analyzer%20and%20Collector%20-%20Documentation) diff --git a/converted/docs.it4i.cz/salomon/software/intel-xeon-phi.md b/converted/docs.it4i.cz/salomon/software/intel-xeon-phi.md index 25b9b052f..96c36b75a 100644 --- a/converted/docs.it4i.cz/salomon/software/intel-xeon-phi.md +++ b/converted/docs.it4i.cz/salomon/software/intel-xeon-phi.md @@ -1,22 +1,9 @@ Intel Xeon Phi ============== - - - - A guide to Intel Xeon Phi usage - - - - - - - - - - + Intel Xeon Phi accelerator can be programmed in several modes. The default mode on the cluster is offload mode, but all modes described in @@ -28,131 +15,130 @@ Intel Utilities for Xeon Phi To get access to a compute node with Intel Xeon Phi accelerator, use the PBS interactive session - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 To set up the environment module "intel" has to be loaded, without specifying the version, default version is loaded (at time of writing this, it's 2015b) - $ module load intel + $ module load intel Information about the hardware can be obtained by running the micinfo program on the host. - $ /usr/bin/micinfo + $ /usr/bin/micinfo The output of the "micinfo" utility executed on one of the cluster node is as follows. (note: to get PCIe related details the command has to be run with root privileges) - MicInfo Utility Log - Created Mon Aug 17 13:55:59 2015 - - - System Info - HOST OS : Linux - OS Version : 2.6.32-504.16.2.el6.x86_64 - Driver Version : 3.4.1-1 - MPSS Version : 3.4.1 - Host Physical Memory : 131930 MB - - Device No: 0, Device Name: mic0 - - Version - Flash Version : 2.1.02.0390 - SMC Firmware Version : 1.16.5078 - SMC Boot Loader Version : 1.8.4326 - uOS Version : 2.6.38.8+mpss3.4.1 - Device Serial Number : ADKC44601414 - - Board - Vendor ID : 0x8086 - Device ID : 0x225c - Subsystem ID : 0x7d95 - Coprocessor Stepping ID : 2 - PCIe Width : x16 - PCIe Speed : 5 GT/s - PCIe Max payload size : 256 bytes - PCIe Max read req size : 512 bytes - Coprocessor Model : 0x01 - Coprocessor Model Ext : 0x00 - Coprocessor Type : 0x00 - Coprocessor Family : 0x0b - Coprocessor Family Ext : 0x00 - Coprocessor Stepping : C0 - Board SKU : C0PRQ-7120 P/A/X/D - ECC Mode : Enabled - SMC HW Revision : Product 300W Passive CS - - Cores - Total No of Active Cores : 61 - Voltage : 1007000 uV - Frequency : 1238095 kHz - - Thermal - Fan Speed Control : N/A - Fan RPM : N/A - Fan PWM : N/A - Die Temp : 60 C - - GDDR - GDDR Vendor : Samsung - GDDR Version : 0x6 - GDDR Density : 4096 Mb - GDDR Size : 15872 MB - GDDR Technology : GDDR5 - GDDR Speed : 5.500000 GT/s - GDDR Frequency : 2750000 kHz - GDDR Voltage : 1501000 uV - - Device No: 1, Device Name: mic1 - - Version - Flash Version : 2.1.02.0390 - SMC Firmware Version : 1.16.5078 - SMC Boot Loader Version : 1.8.4326 - uOS Version : 2.6.38.8+mpss3.4.1 - Device Serial Number : ADKC44500454 - - Board - Vendor ID : 0x8086 - Device ID : 0x225c - Subsystem ID : 0x7d95 - Coprocessor Stepping ID : 2 - PCIe Width : x16 - PCIe Speed : 5 GT/s - PCIe Max payload size : 256 bytes - PCIe Max read req size : 512 bytes - Coprocessor Model : 0x01 - Coprocessor Model Ext : 0x00 - Coprocessor Type : 0x00 - Coprocessor Family : 0x0b - Coprocessor Family Ext : 0x00 - Coprocessor Stepping : C0 - Board SKU : C0PRQ-7120 P/A/X/D - ECC Mode : Enabled - SMC HW Revision : Product 300W Passive CS - - Cores - Total No of Active Cores : 61 - Voltage : 998000 uV - Frequency : 1238095 kHz - - Thermal - Fan Speed Control : N/A - Fan RPM : N/A - Fan PWM : N/A - Die Temp : 59 C - - GDDR - GDDR Vendor : Samsung - GDDR Version : 0x6 - GDDR Density : 4096 Mb - GDDR Size : 15872 MB - GDDR Technology : GDDR5 - GDDR Speed : 5.500000 GT/s - GDDR Frequency : 2750000 kHz - GDDR Voltage : 1501000 uV + MicInfo Utility Log + Created Mon Aug 17 13:55:59 2015 + + System Info + HOST OS : Linux + OS Version : 2.6.32-504.16.2.el6.x86_64 + Driver Version : 3.4.1-1 + MPSS Version : 3.4.1 + Host Physical Memory : 131930 MB + + Device No: 0, Device Name: mic0 + + Version + Flash Version : 2.1.02.0390 + SMC Firmware Version : 1.16.5078 + SMC Boot Loader Version : 1.8.4326 + uOS Version : 2.6.38.8+mpss3.4.1 + Device Serial Number : ADKC44601414 + + Board + Vendor ID : 0x8086 + Device ID : 0x225c + Subsystem ID : 0x7d95 + Coprocessor Stepping ID : 2 + PCIe Width : x16 + PCIe Speed : 5 GT/s + PCIe Max payload size : 256 bytes + PCIe Max read req size : 512 bytes + Coprocessor Model : 0x01 + Coprocessor Model Ext : 0x00 + Coprocessor Type : 0x00 + Coprocessor Family : 0x0b + Coprocessor Family Ext : 0x00 + Coprocessor Stepping : C0 + Board SKU : C0PRQ-7120 P/A/X/D + ECC Mode : Enabled + SMC HW Revision : Product 300W Passive CS + + Cores + Total No of Active Cores : 61 + Voltage : 1007000 uV + Frequency : 1238095 kHz + + Thermal + Fan Speed Control : N/A + Fan RPM : N/A + Fan PWM : N/A + Die Temp : 60 C + + GDDR + GDDR Vendor : Samsung + GDDR Version : 0x6 + GDDR Density : 4096 Mb + GDDR Size : 15872 MB + GDDR Technology : GDDR5 + GDDR Speed : 5.500000 GT/s + GDDR Frequency : 2750000 kHz + GDDR Voltage : 1501000 uV + + Device No: 1, Device Name: mic1 + + Version + Flash Version : 2.1.02.0390 + SMC Firmware Version : 1.16.5078 + SMC Boot Loader Version : 1.8.4326 + uOS Version : 2.6.38.8+mpss3.4.1 + Device Serial Number : ADKC44500454 + + Board + Vendor ID : 0x8086 + Device ID : 0x225c + Subsystem ID : 0x7d95 + Coprocessor Stepping ID : 2 + PCIe Width : x16 + PCIe Speed : 5 GT/s + PCIe Max payload size : 256 bytes + PCIe Max read req size : 512 bytes + Coprocessor Model : 0x01 + Coprocessor Model Ext : 0x00 + Coprocessor Type : 0x00 + Coprocessor Family : 0x0b + Coprocessor Family Ext : 0x00 + Coprocessor Stepping : C0 + Board SKU : C0PRQ-7120 P/A/X/D + ECC Mode : Enabled + SMC HW Revision : Product 300W Passive CS + + Cores + Total No of Active Cores : 61 + Voltage : 998000 uV + Frequency : 1238095 kHz + + Thermal + Fan Speed Control : N/A + Fan RPM : N/A + Fan PWM : N/A + Die Temp : 59 C + + GDDR + GDDR Vendor : Samsung + GDDR Version : 0x6 + GDDR Density : 4096 Mb + GDDR Size : 15872 MB + GDDR Technology : GDDR5 + GDDR Speed : 5.500000 GT/s + GDDR Frequency : 2750000 kHz + GDDR Voltage : 1501000 uV Offload Mode ------------ @@ -161,44 +147,44 @@ To compile a code for Intel Xeon Phi a MPSS stack has to be installed on the machine where compilation is executed. Currently the MPSS stack is only installed on compute nodes equipped with accelerators. - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 - $ module load intel + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ module load intel For debugging purposes it is also recommended to set environment variable "OFFLOAD_REPORT". Value can be set from 0 to 3, where higher number means more debugging information. - export OFFLOAD_REPORT=3 + export OFFLOAD_REPORT=3 A very basic example of code that employs offload programming technique is shown in the next listing. Please note that this code is sequential and utilizes only single core of the accelerator. - $ vim source-offload.cpp + $ vim source-offload.cpp - #include <iostream> + #include <iostream> - int main(int argc, char* argv[]) - { -    const int niter = 100000; -    double result = 0; + int main(int argc, char* argv[]) + { +    const int niter = 100000; +    double result = 0; -  #pragma offload target(mic) -    for (int i = 0; i < niter; ++i) { -        const double t = (i + 0.5) / niter; -        result += 4.0 / (t * t + 1.0); -    } -    result /= niter; -    std::cout << "Pi ~ " << result << 'n'; - } +  #pragma offload target(mic) +    for (int i = 0; i < niter; ++i) { +        const double t = (i + 0.5) / niter; +        result += 4.0 / (t * t + 1.0); +    } +    result /= niter; +    std::cout << "Pi ~ " << result << 'n'; + } To compile a code using Intel compiler run - $ icc source-offload.cpp -o bin-offload + $ icc source-offload.cpp -o bin-offload To execute the code, run the following command on the host - ./bin-offload + ./bin-offload ### Parallelization in Offload Mode Using OpenMP @@ -206,91 +192,89 @@ One way of paralelization a code for Xeon Phi is using OpenMP directives. The following example shows code for parallel vector addition. - $ vim ./vect-add - - #include <stdio.h> - - typedef int T; - - #define SIZE 1000 - - #pragma offload_attribute(push, target(mic)) - T in1[SIZE]; - T in2[SIZE]; - T res[SIZE]; - #pragma offload_attribute(pop) - - // MIC function to add two vectors - __attribute__((target(mic))) add_mic(T *a, T *b, T *c, int size) { -  int i = 0; -  #pragma omp parallel for -    for (i = 0; i < size; i++) -      c[i] = a[i] + b[i]; - } - - // CPU function to add two vectors - void add_cpu (T *a, T *b, T *c, int size) { -  int i; -  for (i = 0; i < size; i++) -    c[i] = a[i] + b[i]; - } - - // CPU function to generate a vector of random numbers - void random_T (T *a, int size) { -  int i; -  for (i = 0; i < size; i++) -    a[i] = rand() % 10000; // random number between 0 and 9999 - } - - // CPU function to compare two vectors - int compare(T *a, T *b, T size ){ -  int pass = 0; -  int i; -  for (i = 0; i < size; i++){ -    if (a[i] != b[i]) { -      printf("Value mismatch at location %d, values %d and %dn",i, a[i], b[i]); -      pass = 1; -    } -  } -  if (pass == 0) printf ("Test passedn"); else printf ("Test Failedn"); -  return pass; - } - - - int main() - { -  int i; -  random_T(in1, SIZE); -  random_T(in2, SIZE); - -  #pragma offload target(mic) in(in1,in2) inout(res) -  { - -    // Parallel loop from main function -    #pragma omp parallel for -    for (i=0; i<SIZE; i++) -      res[i] = in1[i] + in2[i]; - -    // or parallel loop is called inside the function -    add_mic(in1, in2, res, SIZE); - -  } - - -  //Check the results with CPU implementation -  T res_cpu[SIZE]; -  add_cpu(in1, in2, res_cpu, SIZE); -  compare(res, res_cpu, SIZE); - - } + $ vim ./vect-add + + #include <stdio.h> + + typedef int T; + + #define SIZE 1000 + + #pragma offload_attribute(push, target(mic)) + T in1[SIZE]; + T in2[SIZE]; + T res[SIZE]; + #pragma offload_attribute(pop) + + // MIC function to add two vectors + __attribute__((target(mic))) add_mic(T *a, T *b, T *c, int size) { +  int i = 0; +  #pragma omp parallel for +    for (i = 0; i < size; i++) +      c[i] = a[i] + b[i]; + } + + // CPU function to add two vectors + void add_cpu (T *a, T *b, T *c, int size) { +  int i; +  for (i = 0; i < size; i++) +    c[i] = a[i] + b[i]; + } + + // CPU function to generate a vector of random numbers + void random_T (T *a, int size) { +  int i; +  for (i = 0; i < size; i++) +    a[i] = rand() % 10000; // random number between 0 and 9999 + } + + // CPU function to compare two vectors + int compare(T *a, T *b, T size ){ +  int pass = 0; +  int i; +  for (i = 0; i < size; i++){ +    if (a[i] != b[i]) { +      printf("Value mismatch at location %d, values %d and %dn",i, a[i], b[i]); +      pass = 1; +    } +  } +  if (pass == 0) printf ("Test passedn"); else printf ("Test Failedn"); +  return pass; + } + + int main() + { +  int i; +  random_T(in1, SIZE); +  random_T(in2, SIZE); + +  #pragma offload target(mic) in(in1,in2) inout(res) +  { + +    // Parallel loop from main function +    #pragma omp parallel for +    for (i=0; i<SIZE; i++) +      res[i] = in1[i] + in2[i]; + +    // or parallel loop is called inside the function +    add_mic(in1, in2, res, SIZE); + +  } + +  //Check the results with CPU implementation +  T res_cpu[SIZE]; +  add_cpu(in1, in2, res_cpu, SIZE); +  compare(res, res_cpu, SIZE); + + } During the compilation Intel compiler shows which loops have been vectorized in both host and accelerator. This can be enabled with compiler option "-vec-report2". To compile and execute the code run - $ icc vect-add.c -openmp_report2 -vec-report2 -o vect-add + $ icc vect-add.c -openmp_report2 -vec-report2 -o vect-add - $ ./vect-add + $ ./vect-add Some interesting compiler flags useful not only for code debugging are: @@ -315,21 +299,21 @@ transparently. Behavioural of automatic offload mode is controlled by functions called within the program or by environmental variables. Complete list of controls is listed [ -class="external-link">here](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm). +here](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm). The Automatic Offload may be enabled by either an MKL function call within the code: - mkl_mic_enable(); + mkl_mic_enable(); or by setting environment variable - $ export MKL_MIC_ENABLE=1 + $ export MKL_MIC_ENABLE=1 To get more information about automatic offload please refer to "[Using Intel® MKL Automatic Offload on Intel ® Xeon Phi™ Coprocessors](http://software.intel.com/sites/default/files/11MIC42_How_to_Use_MKL_Automatic_Offload_0.pdf)" -white paper or [ class="external-link">Intel MKL +white paper or [ Intel MKL documentation](https://software.intel.com/en-us/articles/intel-math-kernel-library-documentation). ### Automatic offload example #1 @@ -341,13 +325,13 @@ MIC coprocessor. At first get an interactive PBS session on a node with MIC accelerator and load "intel" module that automatically loads "mkl" module as well. - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 - $ module load intel + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ module load intel  The code can be copied to a file and compiled without any necessary modification. - $ vim sgemm-ao-short.c + $ vim sgemm-ao-short.c ``` #include <stdio.h> @@ -410,42 +394,42 @@ $MKL_EXAMPLES/mic_ao/blasc/source/sgemm.c** To compile a code using Intel compiler use: - $ icc -mkl sgemm-ao-short.c -o sgemm + $ icc -mkl sgemm-ao-short.c -o sgemm For debugging purposes enable the offload report to see more information about automatic offloading. - $ export OFFLOAD_REPORT=2 + $ export OFFLOAD_REPORT=2 The output of a code should look similar to following listing, where lines starting with [MKL] are generated by offload reporting: - [user@r31u03n799 ~]$ ./sgemm - Computing SGEMM on the host - Enabling Automatic Offload - Automatic Offload enabled: 2 MIC devices present - Computing SGEMM with automatic workdivision - [MKL] [MIC --] [AO Function]   SGEMM - [MKL] [MIC --] [AO SGEMM Workdivision]   0.44 0.28 0.28 - [MKL] [MIC 00] [AO SGEMM CPU Time]   0.252427 seconds - [MKL] [MIC 00] [AO SGEMM MIC Time]   0.091001 seconds - [MKL] [MIC 00] [AO SGEMM CPU->MIC Data]   34078720 bytes - [MKL] [MIC 00] [AO SGEMM MIC->CPU Data]   7864320 bytes - [MKL] [MIC 01] [AO SGEMM CPU Time]   0.252427 seconds - [MKL] [MIC 01] [AO SGEMM MIC Time]   0.094758 seconds - [MKL] [MIC 01] [AO SGEMM CPU->MIC Data]   34078720 bytes - [MKL] [MIC 01] [AO SGEMM MIC->CPU Data]   7864320 bytes - Done + [user@r31u03n799 ~]$ ./sgemm + Computing SGEMM on the host + Enabling Automatic Offload + Automatic Offload enabled: 2 MIC devices present + Computing SGEMM with automatic workdivision + [MKL] [MIC --] [AO Function]   SGEMM + [MKL] [MIC --] [AO SGEMM Workdivision]   0.44 0.28 0.28 + [MKL] [MIC 00] [AO SGEMM CPU Time]   0.252427 seconds + [MKL] [MIC 00] [AO SGEMM MIC Time]   0.091001 seconds + [MKL] [MIC 00] [AO SGEMM CPU->MIC Data]   34078720 bytes + [MKL] [MIC 00] [AO SGEMM MIC->CPU Data]   7864320 bytes + [MKL] [MIC 01] [AO SGEMM CPU Time]   0.252427 seconds + [MKL] [MIC 01] [AO SGEMM MIC Time]   0.094758 seconds + [MKL] [MIC 01] [AO SGEMM CPU->MIC Data]   34078720 bytes + [MKL] [MIC 01] [AO SGEMM MIC->CPU Data]   7864320 bytes + Done Behavioral of automatic offload mode is controlled by functions called within the program or by environmental variables. Complete list of controls is listed [ -class="external-link">here](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm). +here](http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_lnx/GUID-3DC4FC7D-A1E4-423D-9C0C-06AB265FFA86.htm). To get more information about automatic offload please refer to "[Using Intel® MKL Automatic Offload on Intel ® Xeon Phi™ Coprocessors](http://software.intel.com/sites/default/files/11MIC42_How_to_Use_MKL_Automatic_Offload_0.pdf)" -white paper or [ class="external-link">Intel MKL +white paper or [ Intel MKL documentation](https://software.intel.com/en-us/articles/intel-math-kernel-library-documentation). ### Automatic offload example #2 @@ -456,30 +440,30 @@ offloaded. At first get an interactive PBS session on a node with MIC accelerator. - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 Once in, we enable the offload and run the Octave software. In octave, we generate two large random matrices and let them multiply together. - $ export MKL_MIC_ENABLE=1 - $ export OFFLOAD_REPORT=2 - $ module load Octave/3.8.2-intel-2015b - - $ octave -q - octave:1> A=rand(10000); - octave:2> B=rand(10000); - octave:3> C=A*B; - [MKL] [MIC --] [AO Function]   DGEMM - [MKL] [MIC --] [AO DGEMM Workdivision]   0.14 0.43 0.43 - [MKL] [MIC 00] [AO DGEMM CPU Time]   3.814714 seconds - [MKL] [MIC 00] [AO DGEMM MIC Time]   2.781595 seconds - [MKL] [MIC 00] [AO DGEMM CPU->MIC Data]   1145600000 bytes - [MKL] [MIC 00] [AO DGEMM MIC->CPU Data]   1382400000 bytes - [MKL] [MIC 01] [AO DGEMM CPU Time]   3.814714 seconds - [MKL] [MIC 01] [AO DGEMM MIC Time]   2.843016 seconds - [MKL] [MIC 01] [AO DGEMM CPU->MIC Data]   1145600000 bytes - [MKL] [MIC 01] [AO DGEMM MIC->CPU Data]   1382400000 bytes - octave:4> exit + $ export MKL_MIC_ENABLE=1 + $ export OFFLOAD_REPORT=2 + $ module load Octave/3.8.2-intel-2015b + + $ octave -q + octave:1> A=rand(10000); + octave:2> B=rand(10000); + octave:3> C=A*B; + [MKL] [MIC --] [AO Function]   DGEMM + [MKL] [MIC --] [AO DGEMM Workdivision]   0.14 0.43 0.43 + [MKL] [MIC 00] [AO DGEMM CPU Time]   3.814714 seconds + [MKL] [MIC 00] [AO DGEMM MIC Time]   2.781595 seconds + [MKL] [MIC 00] [AO DGEMM CPU->MIC Data]   1145600000 bytes + [MKL] [MIC 00] [AO DGEMM MIC->CPU Data]   1382400000 bytes + [MKL] [MIC 01] [AO DGEMM CPU Time]   3.814714 seconds + [MKL] [MIC 01] [AO DGEMM MIC Time]   2.843016 seconds + [MKL] [MIC 01] [AO DGEMM CPU->MIC Data]   1145600000 bytes + [MKL] [MIC 01] [AO DGEMM MIC->CPU Data]   1382400000 bytes + octave:4> exit On the example above we observe, that the DGEMM function workload was split over CPU, MIC 0 and MIC 1, in the ratio 0.14 0.43 0.43. The matrix @@ -497,9 +481,9 @@ To compile a code user has to be connected to a compute with MIC and load Intel compilers module. To get an interactive session on a compute node with an Intel Xeon Phi and load the module use following commands: - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 - $ module load intel + $ module load intel Please note that particular version of the Intel module is specified. This information is used later to specify the correct library paths. @@ -509,16 +493,16 @@ to specify "-mmic" compiler flag. Two compilation examples are shown below. The first example shows how to compile OpenMP parallel code "vect-add.c" for host only: - $ icc -xhost -no-offload -fopenmp vect-add.c -o vect-add-host + $ icc -xhost -no-offload -fopenmp vect-add.c -o vect-add-host To run this code on host, use: - $ ./vect-add-host + $ ./vect-add-host The second example shows how to compile the same code for Intel Xeon Phi: - $ icc -mmic -fopenmp vect-add.c -o vect-add-mic + $ icc -mmic -fopenmp vect-add.c -o vect-add-mic ### Execution of the Program in Native Mode on Intel Xeon Phi @@ -530,23 +514,23 @@ have to copy binary files or libraries between the host and accelerator. Get the PATH of MIC enabled libraries for currently used Intel Compiler (here was icc/2015.3.187-GNU-5.1.0-2.25 used) : - $ echo $MIC_LD_LIBRARY_PATH - /apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic + $ echo $MIC_LD_LIBRARY_PATH + /apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic To connect to the accelerator run: - $ ssh mic0 + $ ssh mic0 If the code is sequential, it can be executed directly: - mic0 $ ~/path_to_binary/vect-add-seq-mic + mic0 $ ~/path_to_binary/vect-add-seq-mic If the code is parallelized using OpenMP a set of additional libraries is required for execution. To locate these libraries new path has to be added to the LD_LIBRARY_PATH environment variable prior to the execution: - mic0 $ export LD_LIBRARY_PATH=/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic:$LD_LIBRARY_PATH + mic0 $ export LD_LIBRARY_PATH=/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic:$LD_LIBRARY_PATH Please note that the path exported in the previous example contains path to a specific compiler (here the version is 2015.3.187-GNU-5.1.0-2.25). @@ -556,7 +540,6 @@ compiler module that was used to compile the code on the host computer. For your information the list of libraries and their location required for execution of an OpenMP parallel code on Intel Xeon Phi is: - >/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic libiomp5.so @@ -565,10 +548,9 @@ libsvml.so libirng.so libintlc.so.5 - >Finally, to run the compiled code use: - $ ~/path_to_binary/vect-add-mic + $ ~/path_to_binary/vect-add-mic >OpenCL ------------------- @@ -584,111 +566,104 @@ Phi. >On Anselm OpenCL is installed only on compute nodes with MIC accelerator, therefore OpenCL code can be compiled only on these nodes. - - module load opencl-sdk opencl-rt + module load opencl-sdk opencl-rt >Always load "opencl-sdk" (providing devel files like headers) and "opencl-rt" (providing dynamic library libOpenCL.so) modules to compile and link OpenCL code. Load "opencl-rt" for running your compiled code. - >There are two basic examples of OpenCL code in the following directory: - /apps/intel/opencl-examples/ + /apps/intel/opencl-examples/ >First example "CapsBasic" detects OpenCL compatible hardware, here CPU and MIC, and prints basic information about the capabilities of it. - - /apps/intel/opencl-examples/CapsBasic/capsbasic + /apps/intel/opencl-examples/CapsBasic/capsbasic >To compile and run the example copy it to your home directory, get a PBS interactive session on of the nodes with MIC and run make for compilation. Make files are very basic and shows how the OpenCL code can be compiled on Anselm. - $ cp /apps/intel/opencl-examples/CapsBasic/* . - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 - $ make + $ cp /apps/intel/opencl-examples/CapsBasic/* . + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ make >The compilation command for this example is: - $ g++ capsbasic.cpp -lOpenCL -o capsbasic -I/apps/intel/opencl/include/ + $ g++ capsbasic.cpp -lOpenCL -o capsbasic -I/apps/intel/opencl/include/ >After executing the complied binary file, following output should be displayed. + ./capsbasic - ./capsbasic - - Number of available platforms: 1 - Platform names: -    [0] Intel(R) OpenCL [Selected] - Number of devices available for each type: -    CL_DEVICE_TYPE_CPU: 1 -    CL_DEVICE_TYPE_GPU: 0 -    CL_DEVICE_TYPE_ACCELERATOR: 1 + Number of available platforms: 1 + Platform names: +    [0] Intel(R) OpenCL [Selected] + Number of devices available for each type: +    CL_DEVICE_TYPE_CPU: 1 +    CL_DEVICE_TYPE_GPU: 0 +    CL_DEVICE_TYPE_ACCELERATOR: 1 - *** Detailed information for each device *** + *** Detailed information for each device *** - CL_DEVICE_TYPE_CPU[0] -    CL_DEVICE_NAME:       Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz -    CL_DEVICE_AVAILABLE: 1 + CL_DEVICE_TYPE_CPU[0] +    CL_DEVICE_NAME:       Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz +    CL_DEVICE_AVAILABLE: 1 - ... + ... - CL_DEVICE_TYPE_ACCELERATOR[0] -    CL_DEVICE_NAME: Intel(R) Many Integrated Core Acceleration Card -    CL_DEVICE_AVAILABLE: 1 + CL_DEVICE_TYPE_ACCELERATOR[0] +    CL_DEVICE_NAME: Intel(R) Many Integrated Core Acceleration Card +    CL_DEVICE_AVAILABLE: 1 - ... + ... >More information about this example can be found on Intel website: <http://software.intel.com/en-us/vcsource/samples/caps-basic/> - >The second example that can be found in "/apps/intel/opencl-examples" >directory is General Matrix Multiply. You can follow the the same procedure to download the example to your directory and compile it. - - $ cp -r /apps/intel/opencl-examples/* . - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 - $ cd GEMM - $ make + $ cp -r /apps/intel/opencl-examples/* . + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ cd GEMM + $ make >The compilation command for this example is: - $ g++ cmdoptions.cpp gemm.cpp ../common/basic.cpp ../common/cmdparser.cpp ../common/oclobject.cpp -I../common -lOpenCL -o gemm -I/apps/intel/opencl/include/ + $ g++ cmdoptions.cpp gemm.cpp ../common/basic.cpp ../common/cmdparser.cpp ../common/oclobject.cpp -I../common -lOpenCL -o gemm -I/apps/intel/opencl/include/ >To see the performance of Intel Xeon Phi performing the DGEMM run the example as follows: - ./gemm -d 1 - Platforms (1): - [0] Intel(R) OpenCL [Selected] - Devices (2): - [0] Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz - [1] Intel(R) Many Integrated Core Acceleration Card [Selected] - Build program options: "-DT=float -DTILE_SIZE_M=1 -DTILE_GROUP_M=16 -DTILE_SIZE_N=128 -DTILE_GROUP_N=1 -DTILE_SIZE_K=8" - Running gemm_nn kernel with matrix size: 3968x3968 - Memory row stride to ensure necessary alignment: 15872 bytes - Size of memory region for one matrix: 62980096 bytes - Using alpha = 0.57599 and beta = 0.872412 - ... - Host time: 0.292953 sec. - Host perf: 426.635 GFLOPS - Host time: 0.293334 sec. - Host perf: 426.081 GFLOPS - ... + ./gemm -d 1 + Platforms (1): + [0] Intel(R) OpenCL [Selected] + Devices (2): + [0] Intel(R) Xeon(R) CPU E5-2470 0 @ 2.30GHz + [1] Intel(R) Many Integrated Core Acceleration Card [Selected] + Build program options: "-DT=float -DTILE_SIZE_M=1 -DTILE_GROUP_M=16 -DTILE_SIZE_N=128 -DTILE_GROUP_N=1 -DTILE_SIZE_K=8" + Running gemm_nn kernel with matrix size: 3968x3968 + Memory row stride to ensure necessary alignment: 15872 bytes + Size of memory region for one matrix: 62980096 bytes + Using alpha = 0.57599 and beta = 0.872412 + ... + Host time: 0.292953 sec. + Host perf: 426.635 GFLOPS + Host time: 0.293334 sec. + Host perf: 426.081 GFLOPS + ... >Please note: GNU compiler is used to compile the OpenCL codes for Intel MIC. You do not need to load Intel compiler module. - >MPI ---------------- @@ -697,8 +672,8 @@ Intel MIC. You do not need to load Intel compiler module. To achieve best MPI performance always use following setup for Intel MPI on Xeon Phi accelerated nodes: - $ export I_MPI_FABRICS=shm:dapl - $ export I_MPI_DAPL_PROVIDER_LIST=ofa-v2-mlx4_0-1u,ofa-v2-scif0,ofa-v2-mcm-1 + $ export I_MPI_FABRICS=shm:dapl + $ export I_MPI_DAPL_PROVIDER_LIST=ofa-v2-mlx4_0-1u,ofa-v2-scif0,ofa-v2-mcm-1 This ensures, that MPI inside node will use SHMEM communication, between HOST and Phi the IB SCIF will be used and between different nodes or @@ -717,26 +692,26 @@ Again an MPI code for Intel Xeon Phi has to be compiled on a compute node with accelerator and MPSS software stack installed. To get to a compute node with accelerator use: - $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ qsub -I -q qprod -l select=1:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 The only supported implementation of MPI standard for Intel Xeon Phi is Intel MPI. To setup a fully functional development environment a combination of Intel compiler and Intel MPI has to be used. On a host load following modules before compilation: - $ module load intel impi + $ module load intel impi To compile an MPI code for host use: - $ mpiicc -xhost -o mpi-test mpi-test.c + $ mpiicc -xhost -o mpi-test mpi-test.c To compile the same code for Intel Xeon Phi architecture use: - $ mpiicc -mmic -o mpi-test-mic mpi-test.c + $ mpiicc -mmic -o mpi-test-mic mpi-test.c Or, if you are using Fortran : - $ mpiifort -mmic -o mpi-test-mic mpi-test.f90 + $ mpiifort -mmic -o mpi-test-mic mpi-test.f90 An example of basic MPI version of "hello-world" example in C language, that can be executed on both host and Xeon Phi is (can be directly copy @@ -746,7 +721,6 @@ and pasted to a .c file) #include <stdio.h> #include <mpi.h> - int main (argc, argv)     int argc;     char *argv[]; @@ -788,14 +762,14 @@ coprocessor. Most general MPI case. >In this case all environment variables are set by modules, so to execute the compiled MPI program on a single node, use: - $ mpirun -np 4 ./mpi-test + $ mpirun -np 4 ./mpi-test The output should be similar to: - Hello world from process 1 of 4 on host r38u31n1000 - Hello world from process 3 of 4 on host r38u31n1000 - Hello world from process 2 of 4 on host r38u31n1000 - Hello world from process 0 of 4 on host r38u31n1000 + Hello world from process 1 of 4 on host r38u31n1000 + Hello world from process 3 of 4 on host r38u31n1000 + Hello world from process 2 of 4 on host r38u31n1000 + Hello world from process 0 of 4 on host r38u31n1000 ### Coprocessor-only model @@ -804,7 +778,6 @@ coprocessor: 1.) lunch the program using "**mpirun**" from the coprocessor; or 2.) lunch the task using "**mpiexec.hydra**" from a host. - Execution on coprocessor** Similarly to execution of OpenMP programs in native mode, since the @@ -817,21 +790,21 @@ accelerator through the SSH. At first get the LD_LIBRARY_PATH for currenty used Intel Compiler and Intel MPI: - $ echo $MIC_LD_LIBRARY_PATH - /apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/mkl/lib/mic:/apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/lib/mic:/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic/ + $ echo $MIC_LD_LIBRARY_PATH + /apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/mkl/lib/mic:/apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/lib/mic:/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic/ Use it in your ~/.profile: - $ vim ~/.profile + $ vim ~/.profile - PS1='[u@h W]$ ' - export PATH=/usr/bin:/usr/sbin:/bin:/sbin + PS1='[u@h W]$ ' + export PATH=/usr/bin:/usr/sbin:/bin:/sbin - #IMPI - export PATH=/apps/all/impi/5.0.3.048-iccifort-2015.3.187-GNU-5.1.0-2.25/mic/bin/:$PATH + #IMPI + export PATH=/apps/all/impi/5.0.3.048-iccifort-2015.3.187-GNU-5.1.0-2.25/mic/bin/:$PATH - #OpenMP (ICC, IFORT), IMKL and IMPI - export LD_LIBRARY_PATH=/apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/mkl/lib/mic:/apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/lib/mic:/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic:$LD_LIBRARY_PATH + #OpenMP (ICC, IFORT), IMKL and IMPI + export LD_LIBRARY_PATH=/apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/mkl/lib/mic:/apps/all/imkl/11.2.3.187-iimpi-7.3.5-GNU-5.1.0-2.25/lib/mic:/apps/all/icc/2015.3.187-GNU-5.1.0-2.25/composer_xe_2015.3.187/compiler/lib/mic:$LD_LIBRARY_PATH Please note:  - this file sets up both environmental variable for both MPI and OpenMP @@ -843,23 +816,23 @@ to match with loaded modules. To access a MIC accelerator located on a node that user is currently connected to, use: - $ ssh mic0 + $ ssh mic0 or in case you need specify a MIC accelerator on a particular node, use: - $ ssh r38u31n1000-mic0 + $ ssh r38u31n1000-mic0 To run the MPI code in parallel on multiple core of the accelerator, use: - $ mpirun -np 4 ./mpi-test-mic + $ mpirun -np 4 ./mpi-test-mic The output should be similar to: - Hello world from process 1 of 4 on host r38u31n1000-mic0 - Hello world from process 2 of 4 on host r38u31n1000-mic0 - Hello world from process 3 of 4 on host r38u31n1000-mic0 - Hello world from process 0 of 4 on host r38u31n1000-mic0 + Hello world from process 1 of 4 on host r38u31n1000-mic0 + Hello world from process 2 of 4 on host r38u31n1000-mic0 + Hello world from process 3 of 4 on host r38u31n1000-mic0 + Hello world from process 0 of 4 on host r38u31n1000-mic0  ** @@ -873,15 +846,15 @@ user has to specify library paths from the command line when calling First step is to tell mpiexec that the MPI should be executed on a local accelerator by setting up the environmental variable "I_MPI_MIC" - $ export I_MPI_MIC=1 + $ export I_MPI_MIC=1 Now the MPI program can be executed as: - $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH -host mic0 -n 4 ~/mpi-test-mic + $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH -host mic0 -n 4 ~/mpi-test-mic or using mpirun - $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH -host mic0 -n 4 ~/mpi-test-mic + $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH -host mic0 -n 4 ~/mpi-test-mic Please note:  - the full path to the binary has to specified (here: @@ -891,10 +864,10 @@ compile the MPI code The output should be again similar to: - Hello world from process 1 of 4 on host r38u31n1000-mic0 - Hello world from process 2 of 4 on host r38u31n1000-mic0 - Hello world from process 3 of 4 on host r38u31n1000-mic0 - Hello world from process 0 of 4 on host r38u31n1000-mic0 + Hello world from process 1 of 4 on host r38u31n1000-mic0 + Hello world from process 2 of 4 on host r38u31n1000-mic0 + Hello world from process 3 of 4 on host r38u31n1000-mic0 + Hello world from process 0 of 4 on host r38u31n1000-mic0 Please note that the "mpiexec.hydra" requires a file "**>pmi_proxy**" from Intel MPI library to be copied to the @@ -902,8 +875,8 @@ MIC filesystem. If the file is missing please contact the system administrators. A simple test to see if the file is present is to execute: -   $ ssh mic0 ls /bin/pmi_proxy -  /bin/pmi_proxy +   $ ssh mic0 ls /bin/pmi_proxy +  /bin/pmi_proxy  ** @@ -915,20 +888,19 @@ use PBS to allocate the resources. To start interactive session, that allocates 2 compute nodes = 2 MIC accelerators run qsub command with following parameters: - $ qsub -I -q qprod -l select=2:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 + $ qsub -I -q qprod -l select=2:ncpus=24:accelerator=True:naccelerators=2:accelerator_model=phi7120 -A NONE-0-0 - $ module load intel impi + $ module load intel impi >This command connects user through ssh to one of the nodes immediately. To see the other nodes that have been allocated use: - - $ cat $PBS_NODEFILE + $ cat $PBS_NODEFILE >For example: - r38u31n1000.bullx - r38u32n1001.bullx + r38u31n1000.bullx + r38u32n1001.bullx >This output means that the PBS allocated nodes r38u31n1000 and r38u32n1001, which means that user has direct access to @@ -947,49 +919,48 @@ $ ssh mic0** node: **$ ssh >r38u32n1001-mic0** - >At this point we expect that correct modules are loaded and binary is compiled. For parallel execution the mpiexec.hydra is used. Again the first step is to tell mpiexec that the MPI can be executed on MIC accelerators by setting up the environmental variable "I_MPI_MIC", don't forget to have correct FABRIC and PROVIDER defined. - $ export I_MPI_MIC=1 - $ export I_MPI_FABRICS=shm:dapl - $ export I_MPI_DAPL_PROVIDER_LIST=ofa-v2-mlx4_0-1u,ofa-v2-scif0,ofa-v2-mcm-1 + $ export I_MPI_MIC=1 + $ export I_MPI_FABRICS=shm:dapl + $ export I_MPI_DAPL_PROVIDER_LIST=ofa-v2-mlx4_0-1u,ofa-v2-scif0,ofa-v2-mcm-1 >The launch the MPI program use: - $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH - -host r38u31n1000-mic0 -n 4 ~/mpi-test-mic - : -host r38u32n1001-mic0 -n 6 ~/mpi-test-mic + $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH + -host r38u31n1000-mic0 -n 4 ~/mpi-test-mic + : -host r38u32n1001-mic0 -n 6 ~/mpi-test-mic or using mpirun: - $ mpirun -genv LD_LIBRARY_PATH - -host r38u31n1000-mic0 -n 4 ~/mpi-test-mic - : -host r38u32n1001-mic0 -n 6 ~/mpi-test-mic + $ mpirun -genv LD_LIBRARY_PATH + -host r38u31n1000-mic0 -n 4 ~/mpi-test-mic + : -host r38u32n1001-mic0 -n 6 ~/mpi-test-mic In this case four MPI processes are executed on accelerator r38u31n1000-mic and six processes are executed on accelerator r38u32n1001-mic0. The sample output (sorted after execution) is: - Hello world from process 0 of 10 on host r38u31n1000-mic0 - Hello world from process 1 of 10 on host r38u31n1000-mic0 - Hello world from process 2 of 10 on host r38u31n1000-mic0 - Hello world from process 3 of 10 on host r38u31n1000-mic0 - Hello world from process 4 of 10 on host r38u32n1001-mic0 - Hello world from process 5 of 10 on host r38u32n1001-mic0 - Hello world from process 6 of 10 on host r38u32n1001-mic0 - Hello world from process 7 of 10 on host r38u32n1001-mic0 - Hello world from process 8 of 10 on host r38u32n1001-mic0 - Hello world from process 9 of 10 on host r38u32n1001-mic0 + Hello world from process 0 of 10 on host r38u31n1000-mic0 + Hello world from process 1 of 10 on host r38u31n1000-mic0 + Hello world from process 2 of 10 on host r38u31n1000-mic0 + Hello world from process 3 of 10 on host r38u31n1000-mic0 + Hello world from process 4 of 10 on host r38u32n1001-mic0 + Hello world from process 5 of 10 on host r38u32n1001-mic0 + Hello world from process 6 of 10 on host r38u32n1001-mic0 + Hello world from process 7 of 10 on host r38u32n1001-mic0 + Hello world from process 8 of 10 on host r38u32n1001-mic0 + Hello world from process 9 of 10 on host r38u32n1001-mic0 The same way MPI program can be executed on multiple hosts: - $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH - -host r38u31n1000 -n 4 ~/mpi-test - : -host r38u32n1001 -n 6 ~/mpi-test + $ mpirun -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH + -host r38u31n1000 -n 4 ~/mpi-test + : -host r38u32n1001 -n 6 ~/mpi-test ### >Symmetric model @@ -1003,11 +974,10 @@ executed. hosts "**mpi-test**" and one for MIC accelerators "**mpi-test-mic**". These two binaries can be executed at once using mpiexec.hydra: - - $ mpirun - -genv $MIC_LD_LIBRARY_PATH - -host r38u32n1001 -n 2 ~/mpi-test - : -host r38u32n1001-mic0 -n 2 ~/mpi-test-mic + $ mpirun + -genv $MIC_LD_LIBRARY_PATH + -host r38u32n1001 -n 2 ~/mpi-test + : -host r38u32n1001-mic0 -n 2 ~/mpi-test-mic In this example the first two parameters (line 2 and 3) sets up required environment variables for execution. The third line specifies binary @@ -1016,27 +986,25 @@ the binary that is execute on the accelerator (here r38u32n1001-mic0). >The output of the program is: - Hello world from process 0 of 4 on host r38u32n1001 - Hello world from process 1 of 4 on host r38u32n1001 - Hello world from process 2 of 4 on host r38u32n1001-mic0 - Hello world from process 3 of 4 on host r38u32n1001-mic0 + Hello world from process 0 of 4 on host r38u32n1001 + Hello world from process 1 of 4 on host r38u32n1001 + Hello world from process 2 of 4 on host r38u32n1001-mic0 + Hello world from process 3 of 4 on host r38u32n1001-mic0 >The execution procedure can be simplified by using the mpirun command with the machine file a a parameter. Machine file contains list of all nodes and accelerators that should used to execute MPI processes. - >An example of a machine file that uses 2 >hosts (r38u32n1001 and r38u33n1002) and 2 accelerators **(r38u32n1001-mic0** and >>r38u33n1002-mic0**) to run 2 MPI processes on each of them: - - $ cat hosts_file_mix - r38u32n1001:2 - r38u32n1001-mic0:2 - r38u33n1002:2 - r38u33n1002-mic0:2 + $ cat hosts_file_mix + r38u32n1001:2 + r38u32n1001-mic0:2 + r38u33n1002:2 + r38u33n1002-mic0:2 >In addition if a naming convention is set in a way that the name of the binary for host is **"bin_name"** and the name of the binary @@ -1047,34 +1015,30 @@ just the name of the host binary file (i.e. "mpi-test") and uses the suffix to get a name of the binary for accelerator (i..e. "mpi-test-mic"). - - $ export I_MPI_MIC_POSTFIX=-mic + $ export I_MPI_MIC_POSTFIX=-mic  >To run the MPI code using mpirun and the machine file "hosts_file_mix" use: - - $ mpirun - -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH - -machinefile hosts_file_mix - ~/mpi-test + $ mpirun + -genv LD_LIBRARY_PATH $MIC_LD_LIBRARY_PATH + -machinefile hosts_file_mix + ~/mpi-test >A possible output of the MPI "hello-world" example executed on two hosts and two accelerators is: - - Hello world from process 0 of 8 on host r38u31n1000 - Hello world from process 1 of 8 on host r38u31n1000 - Hello world from process 2 of 8 on host r38u31n1000-mic0 - Hello world from process 3 of 8 on host r38u31n1000-mic0 - Hello world from process 4 of 8 on host r38u32n1001 - Hello world from process 5 of 8 on host r38u32n1001 - Hello world from process 6 of 8 on host r38u32n1001-mic0 - Hello world from process 7 of 8 on host r38u32n1001-mic0 + Hello world from process 0 of 8 on host r38u31n1000 + Hello world from process 1 of 8 on host r38u31n1000 + Hello world from process 2 of 8 on host r38u31n1000-mic0 + Hello world from process 3 of 8 on host r38u31n1000-mic0 + Hello world from process 4 of 8 on host r38u32n1001 + Hello world from process 5 of 8 on host r38u32n1001 + Hello world from process 6 of 8 on host r38u32n1001-mic0 + Hello world from process 7 of 8 on host r38u32n1001-mic0 Using the PBS automatically generated node-files - PBS also generates a set of node-files that can be used instead of manually creating a new one every time. Three node-files are genereated: @@ -1096,7 +1060,3 @@ For more details about optimization techniques please read Intel document [Optimization and Performance Tuning for Intel® Xeon Phi™ Coprocessors](http://software.intel.com/en-us/articles/optimization-and-performance-tuning-for-intel-xeon-phi-coprocessors-part-1-optimization "http://software.intel.com/en-us/articles/optimization-and-performance-tuning-for-intel-xeon-phi-coprocessors-part-1-optimization") - - - - diff --git a/converted/docs.it4i.cz/salomon/software/java.md b/converted/docs.it4i.cz/salomon/software/java.md index 2ec6c2c80..ced88c9ef 100644 --- a/converted/docs.it4i.cz/salomon/software/java.md +++ b/converted/docs.it4i.cz/salomon/software/java.md @@ -1,41 +1,28 @@ Java ==== - - - - Java on the cluster - - - - - - - - - - + Java is available on the cluster. Activate java by loading the Java module - $ module load Java + $ module load Java Note that the Java module must be loaded on the compute nodes as well, in order to run java on compute nodes. Check for java version and path - $ java -version - $ which java + $ java -version + $ which java With the module loaded, not only the runtime environment (JRE), but also the development environment (JDK) with the compiler is available. - $ javac -version - $ which javac + $ javac -version + $ which javac Java applications may use MPI for interprocess communication, in conjunction with OpenMPI. Read more @@ -44,6 +31,3 @@ This functionality is currently not supported on Anselm cluster. In case you require the java interface to MPI, please contact [cluster support](https://support.it4i.cz/rt/). - - - diff --git a/converted/docs.it4i.cz/salomon/software/mpi-1/Running_OpenMPI.md b/converted/docs.it4i.cz/salomon/software/mpi-1/Running_OpenMPI.md index fd29a09a2..b62dfc246 100644 --- a/converted/docs.it4i.cz/salomon/software/mpi-1/Running_OpenMPI.md +++ b/converted/docs.it4i.cz/salomon/software/mpi-1/Running_OpenMPI.md @@ -1,17 +1,7 @@ Running OpenMPI =============== - - - - - - - - - - - + OpenMPI program execution ------------------------- @@ -26,19 +16,19 @@ Use the mpiexec to run the OpenMPI code. Example: - $ qsub -q qexp -l select=4:ncpus=24 -I - qsub: waiting for job 15210.isrv5 to start - qsub: job 15210.isrv5 ready + $ qsub -q qexp -l select=4:ncpus=24 -I + qsub: waiting for job 15210.isrv5 to start + qsub: job 15210.isrv5 ready - $ pwd - /home/username + $ pwd + /home/username - $ module load OpenMPI - $ mpiexec -pernode ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host r1i0n17 - Hello world! from rank 1 of 4 on host r1i0n5 - Hello world! from rank 2 of 4 on host r1i0n6 - Hello world! from rank 3 of 4 on host r1i0n7 + $ module load OpenMPI + $ mpiexec -pernode ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host r1i0n17 + Hello world! from rank 1 of 4 on host r1i0n5 + Hello world! from rank 2 of 4 on host r1i0n6 + Hello world! from rank 3 of 4 on host r1i0n7 Please be aware, that in this example, the directive **-pernode** is used to run only **one task per node**, which is normally an unwanted @@ -57,14 +47,14 @@ same path on all nodes. This is automatically fulfilled on the /home and You need to preload the executable, if running on the local ramdisk /tmp filesystem - $ pwd - /tmp/pbs.15210.isrv5 + $ pwd + /tmp/pbs.15210.isrv5 - $ mpiexec -pernode --preload-binary ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host r1i0n17 - Hello world! from rank 1 of 4 on host r1i0n5 - Hello world! from rank 2 of 4 on host r1i0n6 - Hello world! from rank 3 of 4 on host r1i0n7 + $ mpiexec -pernode --preload-binary ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host r1i0n17 + Hello world! from rank 1 of 4 on host r1i0n5 + Hello world! from rank 2 of 4 on host r1i0n6 + Hello world! from rank 3 of 4 on host r1i0n7 In this example, we assume the executable helloworld_mpi.x is present on compute node @@ -84,11 +74,11 @@ MPI process. Follow this example to run one MPI process per node, 24 threads per process. - $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=1:ompthreads=24 -I + $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=1:ompthreads=24 -I - $ module load OpenMPI + $ module load OpenMPI - $ mpiexec --bind-to-none ./helloworld_mpi.x + $ mpiexec --bind-to-none ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 1 MPI processes per node and 24 threads per socket, @@ -99,11 +89,11 @@ on 4 nodes. Follow this example to run two MPI processes per node, 8 threads per process. Note the options to mpiexec. - $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=2:ompthreads=12 -I + $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=2:ompthreads=12 -I - $ module load OpenMPI + $ module load OpenMPI - $ mpiexec -bysocket -bind-to-socket ./helloworld_mpi.x + $ mpiexec -bysocket -bind-to-socket ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 2 MPI processes per node and 12 threads per socket, @@ -115,11 +105,11 @@ node, on 4 nodes Follow this example to run 24 MPI processes per node, 1 thread per process. Note the options to mpiexec. - $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=24:ompthreads=1 -I + $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=24:ompthreads=1 -I - $ module load OpenMPI + $ module load OpenMPI - $ mpiexec -bycore -bind-to-core ./helloworld_mpi.x + $ mpiexec -bycore -bind-to-core ./helloworld_mpi.x In this example, we demonstrate recommended way to run an MPI application, using 24 MPI processes per node, single threaded. Each @@ -134,17 +124,17 @@ operating system might still migrate OpenMP threads between cores. You might want to avoid this by setting these environment variable for GCC OpenMP: - $ export GOMP_CPU_AFFINITY="0-23" + $ export GOMP_CPU_AFFINITY="0-23" or this one for Intel OpenMP: - $ export KMP_AFFINITY=granularity=fine,compact,1,0 + $ export KMP_AFFINITY=granularity=fine,compact,1,0 As of OpenMP 4.0 (supported by GCC 4.9 and later and Intel 14.0 and later) the following variables may be used for Intel or GCC: - $ export OMP_PROC_BIND=true - $ export OMP_PLACES=cores + $ export OMP_PROC_BIND=true + $ export OMP_PLACES=cores >OpenMPI Process Mapping and Binding ------------------------------------------------ @@ -162,18 +152,18 @@ openmpi only. Example hostfile - r1i0n17.smc.salomon.it4i.cz - r1i0n5.smc.salomon.it4i.cz - r1i0n6.smc.salomon.it4i.cz - r1i0n7.smc.salomon.it4i.cz + r1i0n17.smc.salomon.it4i.cz + r1i0n5.smc.salomon.it4i.cz + r1i0n6.smc.salomon.it4i.cz + r1i0n7.smc.salomon.it4i.cz Use the hostfile to control process placement - $ mpiexec -hostfile hostfile ./helloworld_mpi.x - Hello world! from rank 0 of 4 on host r1i0n17 - Hello world! from rank 1 of 4 on host r1i0n5 - Hello world! from rank 2 of 4 on host r1i0n6 - Hello world! from rank 3 of 4 on host r1i0n7 + $ mpiexec -hostfile hostfile ./helloworld_mpi.x + Hello world! from rank 0 of 4 on host r1i0n17 + Hello world! from rank 1 of 4 on host r1i0n5 + Hello world! from rank 2 of 4 on host r1i0n6 + Hello world! from rank 3 of 4 on host r1i0n7 In this example, we see that ranks have been mapped on nodes according to the order in which nodes show in the hostfile @@ -187,11 +177,11 @@ Appropriate binding may boost performance of your application. Example rankfile - rank 0=r1i0n7.smc.salomon.it4i.cz slot=1:0,1 - rank 1=r1i0n6.smc.salomon.it4i.cz slot=0:* - rank 2=r1i0n5.smc.salomon.it4i.cz slot=1:1-2 - rank 3=r1i0n17.smc.salomon slot=0:1,1:0-2 - rank 4=r1i0n6.smc.salomon.it4i.cz slot=0:*,1:* + rank 0=r1i0n7.smc.salomon.it4i.cz slot=1:0,1 + rank 1=r1i0n6.smc.salomon.it4i.cz slot=0:* + rank 2=r1i0n5.smc.salomon.it4i.cz slot=1:1-2 + rank 3=r1i0n17.smc.salomon slot=0:1,1:0-2 + rank 4=r1i0n6.smc.salomon.it4i.cz slot=0:*,1:* This rankfile assumes 5 ranks will be running on 4 nodes and provides exact mapping and binding of the processes to the processor sockets and @@ -205,17 +195,17 @@ rank 3 will be bounded to r1i0n17, socket0 core1, socket1 core0, core1, core2 rank 4 will be bounded to r1i0n6, all cores on both sockets - $ mpiexec -n 5 -rf rankfile --report-bindings ./helloworld_mpi.x - [r1i0n17:11180] MCW rank 3 bound to socket 0[core 1] socket 1[core 0-2]: [. B . . . . . . . . . .][B B B . . . . . . . . .] (slot list 0:1,1:0-2) - [r1i0n7:09928] MCW rank 0 bound to socket 1[core 0-1]: [. . . . . . . . . . . .][B B . . . . . . . . . .] (slot list 1:0,1) - [r1i0n6:10395] MCW rank 1 bound to socket 0[core 0-7]: [B B B B B B B B B B B B][. . . . . . . . . . . .] (slot list 0:*) - [r1i0n5:10406] MCW rank 2 bound to socket 1[core 1-2]: [. . . . . . . . . . . .][. B B . . . . . . . . .] (slot list 1:1-2) - [r1i0n6:10406] MCW rank 4 bound to socket 0[core 0-7] socket 1[core 0-7]: [B B B B B B B B B B B B][B B B B B B B B B B B B] (slot list 0:*,1:*) - Hello world! from rank 3 of 5 on host r1i0n17 - Hello world! from rank 1 of 5 on host r1i0n6 - Hello world! from rank 0 of 5 on host r1i0n7 - Hello world! from rank 4 of 5 on host r1i0n6 - Hello world! from rank 2 of 5 on host r1i0n5 + $ mpiexec -n 5 -rf rankfile --report-bindings ./helloworld_mpi.x + [r1i0n17:11180] MCW rank 3 bound to socket 0[core 1] socket 1[core 0-2]: [. B . . . . . . . . . .][B B B . . . . . . . . .] (slot list 0:1,1:0-2) + [r1i0n7:09928] MCW rank 0 bound to socket 1[core 0-1]: [. . . . . . . . . . . .][B B . . . . . . . . . .] (slot list 1:0,1) + [r1i0n6:10395] MCW rank 1 bound to socket 0[core 0-7]: [B B B B B B B B B B B B][. . . . . . . . . . . .] (slot list 0:*) + [r1i0n5:10406] MCW rank 2 bound to socket 1[core 1-2]: [. . . . . . . . . . . .][. B B . . . . . . . . .] (slot list 1:1-2) + [r1i0n6:10406] MCW rank 4 bound to socket 0[core 0-7] socket 1[core 0-7]: [B B B B B B B B B B B B][B B B B B B B B B B B B] (slot list 0:*,1:*) + Hello world! from rank 3 of 5 on host r1i0n17 + Hello world! from rank 1 of 5 on host r1i0n6 + Hello world! from rank 0 of 5 on host r1i0n7 + Hello world! from rank 4 of 5 on host r1i0n6 + Hello world! from rank 2 of 5 on host r1i0n5 In this example we run 5 MPI processes (5 ranks) on four nodes. The rankfile defines how the processes will be mapped on the nodes, sockets @@ -231,54 +221,21 @@ and cores. In all cases, binding and threading may be verified by executing for example: - $ mpiexec -bysocket -bind-to-socket --report-bindings echo - $ mpiexec -bysocket -bind-to-socket numactl --show - $ mpiexec -bysocket -bind-to-socket echo $OMP_NUM_THREADS + $ mpiexec -bysocket -bind-to-socket --report-bindings echo + $ mpiexec -bysocket -bind-to-socket numactl --show + $ mpiexec -bysocket -bind-to-socket echo $OMP_NUM_THREADS Changes in OpenMPI 1.8 ---------------------- Some options have changed in OpenMPI version 1.8. -<table> -<colgroup> -<col width="50%" /> -<col width="50%" /> -</colgroup> -<thead> -<tr class="header"> -<th align="left">version 1.6.5</th> -<th align="left">version 1.8.1</th> -</tr> -</thead> -<tbody> -<tr class="odd"> -<td align="left">--bind-to-none</td> -<td align="left">--bind-to none</td> -</tr> -<tr class="even"> -<td align="left">--bind-to-core</td> -<td align="left">--bind-to core</td> -</tr> -<tr class="odd"> -<td align="left">--bind-to-socket</td> -<td align="left">--bind-to socket</td> -</tr> -<tr class="even"> -<td align="left">-bysocket</td> -<td align="left">--map-by socket</td> -</tr> -<tr class="odd"> -<td align="left">-bycore</td> -<td align="left">--map-by core</td> -</tr> -<tr class="even"> -<td align="left">-pernode</td> -<td align="left"><p> class="s1">--map-by ppr:1:node</p></td> -</tr> -</tbody> -</table> - - - + |version 1.6.5 |version 1.8.1 | + | --- | --- | + |--bind-to-none<td align="left">--bind-to none | + |--bind-to-core<td align="left">--bind-to core | + |--bind-to-socket<td align="left">--bind-to socket | + |-bysocket<td align="left">--map-by socket | + |-bycore<td align="left">--map-by core | + |-pernode<td align="left">--map-by ppr:1:node\ | diff --git a/converted/docs.it4i.cz/salomon/software/mpi-1/mpi.md b/converted/docs.it4i.cz/salomon/software/mpi-1/mpi.md index 51395ae38..2617fd0b4 100644 --- a/converted/docs.it4i.cz/salomon/software/mpi-1/mpi.md +++ b/converted/docs.it4i.cz/salomon/software/mpi-1/mpi.md @@ -1,70 +1,60 @@ MPI === - - - - - - - - - - - + Setting up MPI Environment -------------------------- The Salomon cluster provides several implementations of the MPI library: -------------------------------------------------------------------------- -MPI Library Thread support ------------------------------------- ------------------------------------ -Intel MPI 4.1** Full thread support up to - MPI_THREAD_MULTIPLE + ------------------------------------------------------------------------- + MPI Library Thread support + ------------------------------------ ------------------------------------ + **Intel MPI 4.1** Full thread support up to + MPI_THREAD_MULTIPLE -Intel MPI 5.0** Full thread support up to - MPI_THREAD_MULTIPLE + **Intel MPI 5.0** Full thread support up to + MPI_THREAD_MULTIPLE -OpenMPI 1.8.6 Full thread support up to - MPI_THREAD_MULTIPLE, MPI-3.0 - support + OpenMPI 1.8.6 Full thread support up to + MPI_THREAD_MULTIPLE, MPI-3.0 + support -SGI MPT 2.12 -------------------------------------------------------------------------- + SGI MPT 2.12 + ------------------------------------------------------------------------- MPI libraries are activated via the environment modules. Look up section modulefiles/mpi in module avail - $ module avail - ------------------------------ /apps/modules/mpi ------------------------------- - impi/4.1.1.036-iccifort-2013.5.192 - impi/4.1.1.036-iccifort-2013.5.192-GCC-4.8.3 - impi/5.0.3.048-iccifort-2015.3.187 - impi/5.0.3.048-iccifort-2015.3.187-GNU-5.1.0-2.25 - MPT/2.12 - OpenMPI/1.8.6-GNU-5.1.0-2.25 + $ module avail + ------------------------------ /apps/modules/mpi ------------------------------- + impi/4.1.1.036-iccifort-2013.5.192 + impi/4.1.1.036-iccifort-2013.5.192-GCC-4.8.3 + impi/5.0.3.048-iccifort-2015.3.187 + impi/5.0.3.048-iccifort-2015.3.187-GNU-5.1.0-2.25 + MPT/2.12 + OpenMPI/1.8.6-GNU-5.1.0-2.25 There are default compilers associated with any particular MPI implementation. The defaults may be changed, the MPI libraries may be used in conjunction with any compiler. The defaults are selected via the modules in following way --------------------------------------------------------------------------- -Module MPI Compiler suite ------------------------- ------------------------ ------------------------ -impi-5.0.3.048-iccifort- Intel MPI 5.0.3 -2015.3.187 + -------------------------------------------------------------------------- + Module MPI Compiler suite + ------------------------ ------------------------ ------------------------ + impi-5.0.3.048-iccifort- Intel MPI 5.0.3 + 2015.3.187 -OpenMP-1.8.6-GNU-5.1.0-2 OpenMPI 1.8.6 -.25 --------------------------------------------------------------------------- + OpenMP-1.8.6-GNU-5.1.0-2 OpenMPI 1.8.6 + .25 + -------------------------------------------------------------------------- Examples: - $ module load gompi/2015b + $ module load gompi/2015b In this example, we activate the latest OpenMPI with latest GNU compilers (OpenMPI 1.8.6 and GCC 5.1). Please see more information about @@ -73,7 +63,7 @@ Modules](../../environment-and-modules.html) . To use OpenMPI with the intel compiler suite, use - $ module load iompi/2015.03 + $ module load iompi/2015.03 In this example, the openmpi 1.8.6 using intel compilers is activated. It's used "iompi" toolchain. @@ -84,14 +74,14 @@ Compiling MPI Programs After setting up your MPI environment, compile your program using one of the mpi wrappers - $ mpicc -v - $ mpif77 -v - $ mpif90 -v + $ mpicc -v + $ mpif77 -v + $ mpif90 -v When using Intel MPI, use the following MPI wrappers: - $ mpicc - $ mpiifort + $ mpicc + $ mpiifort Wrappers mpif90, mpif77 that are provided by Intel MPI are designed for gcc and gfortran. You might be able to compile MPI code by them even @@ -100,35 +90,35 @@ native MIC compilation with -mmic does not work with mpif90). Example program: - // helloworld_mpi.c - #include <stdio.h> + // helloworld_mpi.c + #include <stdio.h> - #include<mpi.h> + #include<mpi.h> - int main(int argc, char **argv) { + int main(int argc, char **argv) { - int len; - int rank, size; - char node[MPI_MAX_PROCESSOR_NAME]; + int len; + int rank, size; + char node[MPI_MAX_PROCESSOR_NAME]; - // Initiate MPI - MPI_Init(&argc, &argv); - MPI_Comm_rank(MPI_COMM_WORLD,&rank); - MPI_Comm_size(MPI_COMM_WORLD,&size); + // Initiate MPI + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD,&rank); + MPI_Comm_size(MPI_COMM_WORLD,&size); - // Get hostame and print - MPI_Get_processor_name(node,&len); - printf("Hello world! from rank %d of %d on host %sn",rank,size,node); + // Get hostame and print + MPI_Get_processor_name(node,&len); + printf("Hello world! from rank %d of %d on host %sn",rank,size,node); - // Finalize and exit - MPI_Finalize(); + // Finalize and exit + MPI_Finalize(); - return 0; - } + return 0; + } Compile the above example with - $ mpicc helloworld_mpi.c -o helloworld_mpi.x + $ mpicc helloworld_mpi.c -o helloworld_mpi.x Running MPI Programs -------------------- @@ -193,6 +183,3 @@ Ph](../intel-xeon-phi.html)i accelerators as well. Read more on [how to run Intel MPI on accelerators](../intel-xeon-phi.html). - - - diff --git a/converted/docs.it4i.cz/salomon/software/mpi-1/mpi4py-mpi-for-python.md b/converted/docs.it4i.cz/salomon/software/mpi-1/mpi4py-mpi-for-python.md index ce10aaccc..0373645fa 100644 --- a/converted/docs.it4i.cz/salomon/software/mpi-1/mpi4py-mpi-for-python.md +++ b/converted/docs.it4i.cz/salomon/software/mpi-1/mpi4py-mpi-for-python.md @@ -1,22 +1,9 @@ MPI4Py (MPI for Python) ======================= - - - - OpenMPI interface to Python - - - - - - - - - - + Introduction ------------ @@ -42,7 +29,7 @@ MPI4Py is build for OpenMPI. Before you start with MPI4Py you need to load Python and OpenMPI modules. You can use toolchain, that loads Python and OpenMPI at once. - $ module load Python/2.7.9-foss-2015g + $ module load Python/2.7.9-foss-2015g Execution --------- @@ -50,65 +37,65 @@ Execution You need to import MPI to your python program. Include the following line to the python script: - from mpi4py import MPI + from mpi4py import MPI The MPI4Py enabled python programs [execute as any other OpenMPI](Running_OpenMPI.html) code.The simpliest way is to run - $ mpiexec python <script>.py + $ mpiexec python <script>.py >For example - $ mpiexec python hello_world.py + $ mpiexec python hello_world.py Examples -------- ### Hello world! - from mpi4py import MPI + from mpi4py import MPI - comm = MPI.COMM_WORLD + comm = MPI.COMM_WORLD - print "Hello! I'm rank %d from %d running in total..." % (comm.rank, comm.size) + print "Hello! I'm rank %d from %d running in total..." % (comm.rank, comm.size) - comm.Barrier()  # wait for everybody to synchronize + comm.Barrier()  # wait for everybody to synchronize ### >Collective Communication with NumPy arrays - from __future__ import division - from mpi4py import MPI - import numpy as np + from __future__ import division + from mpi4py import MPI + import numpy as np - comm = MPI.COMM_WORLD + comm = MPI.COMM_WORLD - print("-"*78) - print(" Running on %d cores" % comm.size) - print("-"*78) + print("-"*78) + print(" Running on %d cores" % comm.size) + print("-"*78) - comm.Barrier() + comm.Barrier() - # Prepare a vector of N=5 elements to be broadcasted... - N = 5 - if comm.rank == 0: -   A = np.arange(N, dtype=np.float64)   # rank 0 has proper data - else: -   A = np.empty(N, dtype=np.float64)   # all other just an empty array + # Prepare a vector of N=5 elements to be broadcasted... + N = 5 + if comm.rank == 0: +   A = np.arange(N, dtype=np.float64)   # rank 0 has proper data + else: +   A = np.empty(N, dtype=np.float64)   # all other just an empty array - # Broadcast A from rank 0 to everybody - comm.Bcast( [A, MPI.DOUBLE] ) + # Broadcast A from rank 0 to everybody + comm.Bcast( [A, MPI.DOUBLE] ) - # Everybody should now have the same... - print "[%02d] %s" % (comm.rank, A) + # Everybody should now have the same... + print "[%02d] %s" % (comm.rank, A) Execute the above code as: - $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=24:ompthreads=1 -I + $ qsub -q qexp -l select=4:ncpus=24:mpiprocs=24:ompthreads=1 -I - $ module load Python/2.7.9-foss-2015g + $ module load Python/2.7.9-foss-2015g - $ mpiexec --map-by core --bind-to core python hello_world.py + $ mpiexec --map-by core --bind-to core python hello_world.py In this example, we run MPI4Py enabled code on 4 nodes, 24 cores per node (total of 96 processes), each python process is bound to a @@ -116,6 +103,3 @@ different core. More examples and documentation can be found on [MPI for Python webpage](https://pythonhosted.org/mpi4py/usrman/index.html). - - - diff --git a/converted/docs.it4i.cz/salomon/software/numerical-languages/introduction.md b/converted/docs.it4i.cz/salomon/software/numerical-languages/introduction.md index a64bd0251..6416c41fd 100644 --- a/converted/docs.it4i.cz/salomon/software/numerical-languages/introduction.md +++ b/converted/docs.it4i.cz/salomon/software/numerical-languages/introduction.md @@ -1,22 +1,9 @@ Numerical languages =================== - - - - Interpreted languages for numerical computations and analysis - - - - - - - - - - + Introduction ------------ @@ -30,8 +17,8 @@ Matlab MATLAB®^ is a high-level language and interactive environment for numerical computation, visualization, and programming. - $ module load MATLAB - $ matlab + $ module load MATLAB + $ matlab Read more at the [Matlab page](matlab.html). @@ -43,8 +30,8 @@ GNU Octave is a high-level interpreted language, primarily intended for numerical computations. The Octave language is quite similar to Matlab so that most programs are easily portable. - $ module load Octave - $ octave + $ module load Octave + $ octave Read more at the [Octave page](octave.html). @@ -54,11 +41,8 @@ R The R is an interpreted language and environment for statistical computing and graphics. - $ module load R - $ R + $ module load R + $ R Read more at the [R page](r.html). - - - diff --git a/converted/docs.it4i.cz/salomon/software/numerical-languages/matlab.md b/converted/docs.it4i.cz/salomon/software/numerical-languages/matlab.md index 5ac2f70fd..8139cfdf2 100644 --- a/converted/docs.it4i.cz/salomon/software/numerical-languages/matlab.md +++ b/converted/docs.it4i.cz/salomon/software/numerical-languages/matlab.md @@ -1,17 +1,7 @@ Matlab ====== - - - - - - - - - - - + Introduction ------------ @@ -19,24 +9,24 @@ Introduction Matlab is available in versions R2015a and R2015b. There are always two variants of the release: -- Non commercial or so called EDU variant, which can be used for - common research and educational purposes. -- Commercial or so called COM variant, which can used also for - commercial activities. The licenses for commercial variant are much - more expensive, so usually the commercial variant has only subset of - features compared to the EDU available. +- Non commercial or so called EDU variant, which can be used for + common research and educational purposes. +- Commercial or so called COM variant, which can used also for + commercial activities. The licenses for commercial variant are much + more expensive, so usually the commercial variant has only subset of + features compared to the EDU available.  To load the latest version of Matlab load the module - $ module load MATLAB + $ module load MATLAB By default the EDU variant is marked as default. If you need other version or variant, load the particular version. To obtain the list of available versions use - $ module avail MATLAB + $ module avail MATLAB If you need to use the Matlab GUI to prepare your Matlab programs, you can use Matlab directly on the login nodes. But for all computations use @@ -54,12 +44,12 @@ is recommended. To run Matlab with GUI, use - $ matlab + $ matlab To run Matlab in text mode, without the Matlab Desktop GUI environment, use - $ matlab -nodesktop -nosplash + $ matlab -nodesktop -nosplash plots, images, etc... will be still available. @@ -80,11 +70,11 @@ To use Distributed Computing, you first need to setup a parallel profile. We have provided the profile for you, you can either import it in MATLAB command line: - >> parallel.importProfile('/apps/all/MATLAB/2015b-EDU/SalomonPBSPro.settings') + >> parallel.importProfile('/apps/all/MATLAB/2015b-EDU/SalomonPBSPro.settings') - ans = + ans = - SalomonPBSPro + SalomonPBSPro Or in the GUI, go to tab HOME -> Parallel -> Manage Cluster Profiles..., click Import and navigate to : @@ -104,9 +94,9 @@ for Matlab GUI. For more information about GUI based applications on Anselm see [this page](../../../get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/x-window-system/x-window-and-vnc.html). - $ xhost + - $ qsub -I -v DISPLAY=$(uname -n):$(echo $DISPLAY | cut -d ':' -f 2) -A NONE-0-0 -q qexp -l select=1 -l walltime=00:30:00 - -l feature__matlab__MATLAB=1 + $ xhost + + $ qsub -I -v DISPLAY=$(uname -n):$(echo $DISPLAY | cut -d ':' -f 2) -A NONE-0-0 -q qexp -l select=1 -l walltime=00:30:00 + -l feature__matlab__MATLAB=1 This qsub command example shows how to run Matlab on a single node. @@ -117,8 +107,8 @@ Engines licenses. Once the access to compute nodes is granted by PBS, user can load following modules and start Matlab: - r1i0n17$ module load MATLAB/2015a-EDU - r1i0n17$ matlab & + r1i0n17$ module load MATLAB/2015a-EDU + r1i0n17$ matlab & ### Parallel Matlab batch job in Local mode @@ -126,26 +116,26 @@ To run matlab in batch mode, write an matlab script, then write a bash jobscript and execute via the qsub command. By default, matlab will execute one matlab worker instance per allocated core. - #!/bin/bash - #PBS -A PROJECT ID - #PBS -q qprod - #PBS -l select=1:ncpus=24:mpiprocs=24:ompthreads=1 + #!/bin/bash + #PBS -A PROJECT ID + #PBS -q qprod + #PBS -l select=1:ncpus=24:mpiprocs=24:ompthreads=1 - # change to shared scratch directory - SCR=/scratch/work/user/$USER/$PBS_JOBID - mkdir -p $SCR ; cd $SCR || exit + # change to shared scratch directory + SCR=/scratch/work/user/$USER/$PBS_JOBID + mkdir -p $SCR ; cd $SCR || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/matlabcode.m . + # copy input file to scratch + cp $PBS_O_WORKDIR/matlabcode.m . - # load modules - module load MATLAB/2015a-EDU + # load modules + module load MATLAB/2015a-EDU - # execute the calculation - matlab -nodisplay -r matlabcode > output.out + # execute the calculation + matlab -nodisplay -r matlabcode > output.out - # copy output file to home - cp output.out $PBS_O_WORKDIR/. + # copy output file to home + cp output.out $PBS_O_WORKDIR/. This script may be submitted directly to the PBS workload manager via the qsub command. The inputs and matlab script are in matlabcode.m @@ -156,14 +146,14 @@ include quit** statement at the end of the matlabcode.m script. Submit the jobscript using qsub - $ qsub ./jobscript + $ qsub ./jobscript ### Parallel Matlab Local mode program example The last part of the configuration is done directly in the user Matlab script before Distributed Computing Toolbox is started. - cluster = parcluster('local') + cluster = parcluster('local') This script creates scheduler object "cluster" of type "local" that starts workers locally. @@ -175,39 +165,39 @@ function. The last step is to start matlabpool with "cluster" object and correct number of workers. We have 24 cores per node, so we start 24 workers. - parpool(cluster,24); - - - ... parallel code ... - + parpool(cluster,24); + - parpool close + ... parallel code ... + + + parpool close The complete example showing how to use Distributed Computing Toolbox in local mode is shown here. - cluster = parcluster('local'); - cluster + cluster = parcluster('local'); + cluster - parpool(cluster,24); + parpool(cluster,24); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') -    -    T = W*x; % Calculation performed on labs, in parallel. -             % T and W are both codistributed arrays here. - end - T; - whos        % T and W are both distributed arrays here. + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') +    +    T = W*x; % Calculation performed on labs, in parallel. +             % T and W are both codistributed arrays here. + end + T; + whos        % T and W are both distributed arrays here. - parpool close - quit + parpool close + quit You can copy and paste the example in a .m file and execute. Note that the parpool size should correspond to **total number of cores** @@ -222,29 +212,29 @@ it spawns the workers in a separate job submitted by MATLAB using qsub. This is an example of m-script using PBS mode: - cluster = parcluster('SalomonPBSPro'); - set(cluster, 'SubmitArguments', '-A OPEN-0-0'); - set(cluster, 'ResourceTemplate', '-q qprod -l select=10:ncpus=24'); - set(cluster, 'NumWorkers', 240); + cluster = parcluster('SalomonPBSPro'); + set(cluster, 'SubmitArguments', '-A OPEN-0-0'); + set(cluster, 'ResourceTemplate', '-q qprod -l select=10:ncpus=24'); + set(cluster, 'NumWorkers', 240); - pool = parpool(cluster,240); + pool = parpool(cluster,240); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') - T = W*x; % Calculation performed on labs, in parallel. - % T and W are both codistributed arrays here. - end - whos % T and W are both distributed arrays here. + T = W*x; % Calculation performed on labs, in parallel. + % T and W are both codistributed arrays here. + end + whos % T and W are both distributed arrays here. - % shut down parallel pool - delete(pool) + % shut down parallel pool + delete(pool) Note that we first construct a cluster object using the imported profile, then set some important options, namely : SubmitArguments, @@ -272,28 +262,28 @@ SalomonPBSPro](matlab.html#running-parallel-matlab-using-distributed-computing-t This is an example of m-script using direct mode: - parallel.importProfile('/apps/all/MATLAB/2015b-EDU/SalomonDirect.settings') - cluster = parcluster('SalomonDirect'); - set(cluster, 'NumWorkers', 48); + parallel.importProfile('/apps/all/MATLAB/2015b-EDU/SalomonDirect.settings') + cluster = parcluster('SalomonDirect'); + set(cluster, 'NumWorkers', 48); - pool = parpool(cluster, 48); + pool = parpool(cluster, 48); - n=2000; + n=2000; - W = rand(n,n); - W = distributed(W); - x = (1:n)'; - x = distributed(x); - spmd - [~, name] = system('hostname') + W = rand(n,n); + W = distributed(W); + x = (1:n)'; + x = distributed(x); + spmd + [~, name] = system('hostname') - T = W*x; % Calculation performed on labs, in parallel. - % T and W are both codistributed arrays here. - end - whos % T and W are both distributed arrays here. + T = W*x; % Calculation performed on labs, in parallel. + % T and W are both codistributed arrays here. + end + whos % T and W are both distributed arrays here. - % shut down parallel pool - delete(pool) + % shut down parallel pool + delete(pool) ### Non-interactive Session and Licenses @@ -316,12 +306,12 @@ getting the resource allocation. Starting Matlab workers is an expensive process that requires certain amount of time. For your information please see the following table: -compute nodes number of workers start-up time[s] ---------------- ------------------- -------------------- -16 384 831 -8 192 807 -4 96 483 -2 48 16 + |compute nodes|number of workers|start-up time[s]| + |---|---|---| + |16|384|831| + |8|192|807| + |4|96|483| + |2|48|16| MATLAB on UV2000 ----------------- @@ -343,8 +333,6 @@ operations, such as fft, , eig, svd, etc. will be automatically run in threads. The advantage of this mode is that you don't need to modify your existing sequential codes. - - ### Local cluster mode You can also use Parallel Toolbox on UV2000. Use l[ocal cluster @@ -355,6 +343,3 @@ mode](matlab.html#parallel-matlab-batch-job-in-local-mode),  - - - diff --git a/converted/docs.it4i.cz/salomon/software/numerical-languages/octave.md b/converted/docs.it4i.cz/salomon/software/numerical-languages/octave.md index 8f89df5dc..a122b4387 100644 --- a/converted/docs.it4i.cz/salomon/software/numerical-languages/octave.md +++ b/converted/docs.it4i.cz/salomon/software/numerical-languages/octave.md @@ -1,17 +1,7 @@ Octave ====== - - - - - - - - - - - + GNU Octave is a high-level interpreted language, primarily intended for numerical computations. It provides capabilities for the numerical @@ -23,16 +13,15 @@ non-interactive programs. The Octave language is quite similar to Matlab so that most programs are easily portable. Read more on <http://www.gnu.org/software/octave/>**** - Two versions of octave are available on the cluster, via module -Status Version module ------------- -------------- -------- -Stable** Octave 3.8.2 Octave + Status Version module + ------------ -------------- -------- + **Stable** Octave 3.8.2 Octave  - $ module load Octave + $ module load Octave The octave on the cluster is linked to highly optimized MKL mathematical library. This provides threaded parallelization to many octave kernels, @@ -44,32 +33,32 @@ OMP_NUM_THREADS environment variable. To run octave interactively, log in with ssh -X parameter for X11 forwarding. Run octave: - $ octave + $ 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 threads when running MKL kernels. - #!/bin/bash + #!/bin/bash - # change to local scratch directory - mkdir -p /scratch/work/user/$USER/$PBS_JOBID - cd /scratch/work/user/$USER/$PBS_JOBID || exit + # change to local scratch directory + mkdir -p /scratch/work/user/$USER/$PBS_JOBID + cd /scratch/work/user/$USER/$PBS_JOBID || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/octcode.m . + # copy input file to scratch + cp $PBS_O_WORKDIR/octcode.m . - # load octave module - module load Octave + # load octave module + module load Octave - # execute the calculation - octave -q --eval octcode > output.out + # execute the calculation + octave -q --eval octcode > output.out - # copy output file to home - cp output.out $PBS_O_WORKDIR/. + # copy output file to home + cp output.out $PBS_O_WORKDIR/. - #exit - exit + #exit + exit This script may be submitted directly to the PBS workload manager via the qsub command. The inputs are in octcode.m file, outputs in @@ -88,6 +77,3 @@ This functionality is currently not supported on the cluster cluster. In case you require the octave interface to MPI, please contact our [cluster support](https://support.it4i.cz/rt/). - - - diff --git a/converted/docs.it4i.cz/salomon/software/numerical-languages/r.md b/converted/docs.it4i.cz/salomon/software/numerical-languages/r.md index 2044e92d0..111a3736c 100644 --- a/converted/docs.it4i.cz/salomon/software/numerical-languages/r.md +++ b/converted/docs.it4i.cz/salomon/software/numerical-languages/r.md @@ -1,17 +1,7 @@ R = - - - - - - - - - - - + Introduction ------------ @@ -22,8 +12,6 @@ nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. - - One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the @@ -44,12 +32,12 @@ Modules **The R version 3.1.1 is available on the cluster, along with GUI interface Rstudio -Application Version module -------------- -------------- --------------------- -R** R 3.1.1 R/3.1.1-intel-2015b -Rstudio** Rstudio 0.97 Rstudio + Application Version module + ------------- -------------- --------------------- + **R** R 3.1.1 R/3.1.1-intel-2015b + **Rstudio** Rstudio 0.97 Rstudio - $ module load R + $ module load R Execution --------- @@ -66,8 +54,8 @@ OMP_NUM_THREADS environment variable. To run R interactively, using Rstudio GUI, log in with ssh -X parameter for X11 forwarding. Run rstudio: - $ module load Rstudio - $ rstudio + $ module load Rstudio + $ rstudio ### Batch execution @@ -77,25 +65,25 @@ running MKL kernels. Example jobscript: - #!/bin/bash + #!/bin/bash - # change to local scratch directory - cd /lscratch/$PBS_JOBID || exit + # change to local scratch directory + cd /lscratch/$PBS_JOBID || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/rscript.R . + # copy input file to scratch + cp $PBS_O_WORKDIR/rscript.R . - # load R module - module load R + # load R module + module load R - # execute the calculation - R CMD BATCH rscript.R routput.out + # execute the calculation + R CMD BATCH rscript.R routput.out - # copy output file to home - cp routput.out $PBS_O_WORKDIR/. + # copy output file to home + cp routput.out $PBS_O_WORKDIR/. - #exit - exit + #exit + exit This script may be submitted directly to the PBS workload manager via the qsub command. The inputs are in rscript.R file, outputs in @@ -122,15 +110,15 @@ from package snow) and random-number generation. The package is activated this way: - $ R - > library(parallel) + $ R + > library(parallel) More information and examples may be obtained directly by reading the documentation available in R - > ?parallel - > library(help = "parallel") - > vignette("parallel") + > ?parallel + > library(help = "parallel") + > vignette("parallel") Download the package [parallell](package-parallel-vignette) vignette. @@ -147,41 +135,41 @@ Only cores of single node can be utilized this way! Forking example: - library(parallel) + library(parallel) - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) + } - #initialize - size <- detectCores() + #initialize + size <- detectCores() - while (TRUE) - { - #read number of intervals - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + while (TRUE) + { + #read number of intervals + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) - if(n<=0) break + if(n<=0) break - #run the calculation - n <- max(n,size) - h <- 1.0/n + #run the calculation + n <- max(n,size) + h <- 1.0/n - i <- seq(1,n); - pi3 <- h*sum(simplify2array(mclapply(i,f,h,mc.cores=size))); + i <- seq(1,n); + pi3 <- h*sum(simplify2array(mclapply(i,f,h,mc.cores=size))); - #print results - cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } + #print results + cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } The above example is the classic parallel example for calculating the number Ď€. Note the **detectCores()** and **mclapply()** functions. Execute the example as: - $ R --slave --no-save --no-restore -f pi3p.R + $ R --slave --no-save --no-restore -f pi3p.R Every evaluation of the integrad function runs in parallel on different process. @@ -201,8 +189,8 @@ reference manual is available at When using package Rmpi, both openmpi and R modules must be loaded - $ module load OpenMPI - $ module load R + $ module load OpenMPI + $ module load R Rmpi may be used in three basic ways. The static approach is identical to executing any other MPI programm. In addition, there is Rslaves @@ -217,53 +205,53 @@ programs. Number of processes is static - given at the launch time. Static Rmpi example: - library(Rmpi) - - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } - - #initialize - invisible(mpi.comm.dup(0,1)) - rank <- mpi.comm.rank() - size <- mpi.comm.size() - n<-0 - - while (TRUE) - { - #read number of intervals - if (rank==0) { - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + library(Rmpi) + + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) } - #broadcat the intervals - n <- mpi.bcast(as.integer(n),type=1) + #initialize + invisible(mpi.comm.dup(0,1)) + rank <- mpi.comm.rank() + size <- mpi.comm.size() + n<-0 + + while (TRUE) + { + #read number of intervals + if (rank==0) { + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + } - if(n<=0) break + #broadcat the intervals + n <- mpi.bcast(as.integer(n),type=1) - #run the calculation - n <- max(n,size) - h <- 1.0/n + if(n<=0) break - i <- seq(rank+1,n,size); - mypi <- h*sum(sapply(i,f,h)); + #run the calculation + n <- max(n,size) + h <- 1.0/n - pi3 <- mpi.reduce(mypi) + i <- seq(rank+1,n,size); + mypi <- h*sum(sapply(i,f,h)); - #print results - if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } + pi3 <- mpi.reduce(mypi) + + #print results + if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } - mpi.quit() + mpi.quit() The above is the static MPI example for calculating the number Ď€. Note the **library(Rmpi)** and **mpi.comm.dup()** function calls. Execute the example as: - $ mpirun R --slave --no-save --no-restore -f pi3.R + $ mpirun R --slave --no-save --no-restore -f pi3.R ### dynamic Rmpi @@ -273,62 +261,61 @@ function call within the Rmpi program. Dynamic Rmpi example: - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } - - #the worker function - workerpi <- function() - { - #initialize - rank <- mpi.comm.rank() - size <- mpi.comm.size() - n<-0 - - while (TRUE) - { - #read number of intervals - if (rank==0) { - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) } - #broadcat the intervals - n <- mpi.bcast(as.integer(n),type=1) + #the worker function + workerpi <- function() + { + #initialize + rank <- mpi.comm.rank() + size <- mpi.comm.size() + n<-0 - if(n<=0) break + while (TRUE) + { + #read number of intervals + if (rank==0) { + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + } - #run the calculation - n <- max(n,size) - h <- 1.0/n + #broadcat the intervals + n <- mpi.bcast(as.integer(n),type=1) - i <- seq(rank+1,n,size); - mypi <- h*sum(sapply(i,f,h)); + if(n<=0) break - pi3 <- mpi.reduce(mypi) + #run the calculation + n <- max(n,size) + h <- 1.0/n - #print results - if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } - } + i <- seq(rank+1,n,size); + mypi <- h*sum(sapply(i,f,h)); - #main - library(Rmpi) + pi3 <- mpi.reduce(mypi) - cat("Enter the number of slaves: ") - fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) + #print results + if (rank==0) cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } + } + + #main + library(Rmpi) - mpi.spawn.Rslaves(nslaves=ns) - mpi.bcast.Robj2slave(f) - mpi.bcast.Robj2slave(workerpi) + cat("Enter the number of slaves: ") + fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) - mpi.bcast.cmd(workerpi()) - workerpi() + mpi.spawn.Rslaves(nslaves=ns) + mpi.bcast.Robj2slave(f) + mpi.bcast.Robj2slave(workerpi) + mpi.bcast.cmd(workerpi()) + workerpi() - mpi.quit() + mpi.quit() The above example is the dynamic MPI example for calculating the number Ď€. Both master and slave processes carry out the calculation. Note the @@ -336,7 +323,7 @@ mpi.spawn.Rslaves(), mpi.bcast.Robj2slave()** and the mpi.bcast.cmd()** function calls. Execute the example as: - $ mpirun -np 1 R --slave --no-save --no-restore -f pi3Rslaves.R + $ mpirun -np 1 R --slave --no-save --no-restore -f pi3Rslaves.R Note that this method uses MPI_Comm_spawn (Dynamic process feature of MPI-2) to start the slave processes - the master process needs to be @@ -355,51 +342,51 @@ Execution is identical to other dynamic Rmpi programs. mpi.apply Rmpi example: - #integrand function - f <- function(i,h) { - x <- h*(i-0.5) - return (4/(1 + x*x)) - } + #integrand function + f <- function(i,h) { + x <- h*(i-0.5) + return (4/(1 + x*x)) + } - #the worker function - workerpi <- function(rank,size,n) - { - #run the calculation - n <- max(n,size) - h <- 1.0/n + #the worker function + workerpi <- function(rank,size,n) + { + #run the calculation + n <- max(n,size) + h <- 1.0/n - i <- seq(rank,n,size); - mypi <- h*sum(sapply(i,f,h)); + i <- seq(rank,n,size); + mypi <- h*sum(sapply(i,f,h)); - return(mypi) - } + return(mypi) + } - #main - library(Rmpi) + #main + library(Rmpi) - cat("Enter the number of slaves: ") - fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) + cat("Enter the number of slaves: ") + fp<-file("stdin"); ns<-scan(fp,nmax=1); close(fp) - mpi.spawn.Rslaves(nslaves=ns) - mpi.bcast.Robj2slave(f) - mpi.bcast.Robj2slave(workerpi) + mpi.spawn.Rslaves(nslaves=ns) + mpi.bcast.Robj2slave(f) + mpi.bcast.Robj2slave(workerpi) - while (TRUE) - { - #read number of intervals - cat("Enter the number of intervals: (0 quits) ") - fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) - if(n<=0) break + while (TRUE) + { + #read number of intervals + cat("Enter the number of intervals: (0 quits) ") + fp<-file("stdin"); n<-scan(fp,nmax=1); close(fp) + if(n<=0) break - #run workerpi - i=seq(1,2*ns) - pi3=sum(mpi.parSapply(i,workerpi,2*ns,n)) + #run workerpi + i=seq(1,2*ns) + pi3=sum(mpi.parSapply(i,workerpi,2*ns,n)) - #print results - cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) - } + #print results + cat(sprintf("Value of PI %16.14f, diff= %16.14fn",pi3,pi3-pi)) + } - mpi.quit() + mpi.quit() The above is the mpi.apply MPI example for calculating the number Ď€. Only the slave processes carry out the calculation. Note the @@ -411,7 +398,7 @@ using the mclapply() in place of mpi.parSapply(). Execute the example as: - $ mpirun -np 1 R --slave --no-save --no-restore -f pi3parSapply.R + $ mpirun -np 1 R --slave --no-save --no-restore -f pi3parSapply.R Combining parallel and Rmpi --------------------------- @@ -428,42 +415,36 @@ submit via the **qsub** Example jobscript for [static Rmpi](r.html#static-rmpi) parallel R execution, running 1 process per core: - #!/bin/bash - #PBS -q qprod - #PBS -N Rjob - #PBS -l select=100:ncpus=24:mpiprocs=24:ompthreads=1 + #!/bin/bash + #PBS -q qprod + #PBS -N Rjob + #PBS -l select=100:ncpus=24:mpiprocs=24:ompthreads=1 - # change to scratch directory - SCRDIR=/scratch/work/user/$USER/myjob - cd $SCRDIR || exit + # change to scratch directory + SCRDIR=/scratch/work/user/$USER/myjob + cd $SCRDIR || exit - # copy input file to scratch - cp $PBS_O_WORKDIR/rscript.R . + # copy input file to scratch + cp $PBS_O_WORKDIR/rscript.R . - # load R and openmpi module - module load R - module load OpenMPI + # load R and openmpi module + module load R + module load OpenMPI - # execute the calculation - mpiexec -bycore -bind-to-core R --slave --no-save --no-restore -f rscript.R + # execute the calculation + mpiexec -bycore -bind-to-core R --slave --no-save --no-restore -f rscript.R - # copy output file to home - cp routput.out $PBS_O_WORKDIR/. + # copy output file to home + cp routput.out $PBS_O_WORKDIR/. - #exit - exit + #exit + exit For more information about jobscripts and MPI execution refer to the [Job submission](../../resource-allocation-and-job-execution/job-submission-and-execution.html) and general [MPI](../mpi-1.html) sections. - - - - - - Xeon Phi Offload ---------------- @@ -472,15 +453,8 @@ linear algebra operations on the Xeon Phi accelerator by using Automated Offload. To use MKL Automated Offload, you need to first set this environment variable before R execution : - $ export MKL_MIC_ENABLE=1 + $ export MKL_MIC_ENABLE=1 [Read more about automatic offload](../intel-xeon-phi.html) - - - - - - - diff --git a/converted/docs.it4i.cz/salomon/software/operating-system.md b/converted/docs.it4i.cz/salomon/software/operating-system.md index ea1833523..5af5a79b0 100644 --- a/converted/docs.it4i.cz/salomon/software/operating-system.md +++ b/converted/docs.it4i.cz/salomon/software/operating-system.md @@ -1,22 +1,9 @@ Operating System ================ - - - - The operating system, deployed on Salomon cluster - - - - - - - - - - + The operating system on Salomon is Linux - CentOS 6.6. @@ -24,6 +11,3 @@ The operating system on Salomon is Linux - CentOS 6.6. and reproducible platform derived from the sources of Red Hat Enterprise Linux (RHEL). - - - diff --git a/converted/docs.it4i.cz/salomon/storage/cesnet-data-storage.md b/converted/docs.it4i.cz/salomon/storage/cesnet-data-storage.md index 1f006bd53..22b880420 100644 --- a/converted/docs.it4i.cz/salomon/storage/cesnet-data-storage.md +++ b/converted/docs.it4i.cz/salomon/storage/cesnet-data-storage.md @@ -1,17 +1,7 @@ CESNET Data Storage =================== - - - - - - - - - - - + Introduction ------------ @@ -74,31 +64,31 @@ than copied in and out in a usual fashion. First, create the mountpoint - $ mkdir cesnet + $ mkdir cesnet Mount the storage. Note that you can choose among the ssh.du1.cesnet.cz (Plzen), ssh.du2.cesnet.cz (Jihlava), ssh.du3.cesnet.cz (Brno) Mount tier1_home **(only 5120M !)**: - $ sshfs username@ssh.du1.cesnet.cz:. cesnet/ + $ sshfs username@ssh.du1.cesnet.cz:. cesnet/ For easy future access from Anselm, install your public key - $ cp .ssh/id_rsa.pub cesnet/.ssh/authorized_keys + $ cp .ssh/id_rsa.pub cesnet/.ssh/authorized_keys Mount tier1_cache_tape for the Storage VO: - $ sshfs username@ssh.du1.cesnet.cz:/cache_tape/VO_storage/home/username cesnet/ + $ sshfs username@ssh.du1.cesnet.cz:/cache_tape/VO_storage/home/username cesnet/ View the archive, copy the files and directories in and out - $ ls cesnet/ - $ cp -a mydir cesnet/. - $ cp cesnet/myfile . + $ ls cesnet/ + $ cp -a mydir cesnet/. + $ cp cesnet/myfile . Once done, please remember to unmount the storage - $ fusermount -u cesnet + $ fusermount -u cesnet ### Rsync access @@ -125,17 +115,14 @@ More about Rsync at Transfer large files to/from Cesnet storage, assuming membership in the Storage VO - $ rsync --progress datafile username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. - $ rsync --progress username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafile . + $ rsync --progress datafile username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. + $ rsync --progress username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafile . Transfer large directories to/from Cesnet storage, assuming membership in the Storage VO - $ rsync --progress -av datafolder username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. - $ rsync --progress -av username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafolder . + $ rsync --progress -av datafolder username@ssh.du1.cesnet.cz:VO_storage-cache_tape/. + $ rsync --progress -av username@ssh.du1.cesnet.cz:VO_storage-cache_tape/datafolder . Transfer rates of about 28MB/s can be expected. - - - diff --git a/converted/docs.it4i.cz/salomon/storage/storage.md b/converted/docs.it4i.cz/salomon/storage/storage.md index fd56abedb..f8aafac9d 100644 --- a/converted/docs.it4i.cz/salomon/storage/storage.md +++ b/converted/docs.it4i.cz/salomon/storage/storage.md @@ -1,17 +1,7 @@ Storage ======= - - - - - - - - - - - + Introduction ------------ @@ -76,31 +66,27 @@ capacity is 1.69 PB, shared among all users. The SCRATCH filesystem hosts the [WORK and TEMP workspaces](storage.html#shared-workspaces). - class="listitem">Configuration of the SCRATCH Lustre storage - + Configuration of the SCRATCH Lustre storage - - class="emphasis"> -- SCRATCH Lustre object storage +- SCRATCH Lustre object storage + - - Disk array SFA12KX - - 540 4TB SAS 7.2krpm disks - - 54 OSTs of 10 disks in RAID6 (8+2) - - 15 hot-spare disks - - 4x 400GB SSD cache + - Disk array SFA12KX + - 540 4TB SAS 7.2krpm disks + - 54 OSTs of 10 disks in RAID6 (8+2) + - 15 hot-spare disks + - 4x 400GB SSD cache - + -- SCRATCH Lustre metadata storage - - - - Disk array EF3015 - - 12 600GB SAS 15krpm disks - - +- SCRATCH Lustre metadata storage + + - Disk array EF3015 + - 12 600GB SAS 15krpm disks + ### Understanding the Lustre Filesystems @@ -132,17 +118,17 @@ There is default stripe configuration for Salomon Lustre filesystems. However, users can set the following stripe parameters for their own directories or files to get optimum I/O performance: -1.stripe_size: the size of the chunk in bytes; specify with k, m, or - g to use units of KB, MB, or GB, respectively; the size must be an - even multiple of 65,536 bytes; default is 1MB for all Salomon Lustre - filesystems -2.stripe_count the number of OSTs to stripe across; default is 1 for - Salomon Lustre filesystems one can specify -1 to use all OSTs in - the filesystem. -3.stripe_offset The index of the - OST where the first stripe is to be - placed; default is -1 which results in random selection; using a - non-default value is NOT recommended. +1. stripe_size: the size of the chunk in bytes; specify with k, m, or + g to use units of KB, MB, or GB, respectively; the size must be an + even multiple of 65,536 bytes; default is 1MB for all Salomon Lustre + filesystems +2. stripe_count the number of OSTs to stripe across; default is 1 for + Salomon Lustre filesystems one can specify -1 to use all OSTs in + the filesystem. +3. stripe_offset The index of the + OST where the first stripe is to be + placed; default is -1 which results in random selection; using a + non-default value is NOT recommended.  @@ -164,12 +150,12 @@ Example: ``` $ lfs getstripe /scratch/work/user/username /scratch/work/user/username -stripe_count: 1 stripe_size: 1048576 stripe_offset: -1 +stripe_count: 1 stripe_size: 1048576 stripe_offset: -1 $ lfs setstripe -c -1 /scratch/work/user/username/ $ lfs getstripe /scratch/work/user/username/ /scratch/work/user/username/ -stripe_count:-1 stripe_size: 1048576 stripe_offset: -1 +stripe_count: -1 stripe_size: 1048576 stripe_offset: -1 ``` In this example, we view current stripe setting of the @@ -231,8 +217,8 @@ Example for Lustre SCRATCH directory: ``` $ lfs quota /scratch Disk quotas for user user001 (uid 1234): - Filesystem kbytes quota limit grace files quota limit grace -  /scratch    8    0 100000000000    -    3    0    0    - + Filesystem kbytes quota limit grace files quota limit grace +  /scratch    8    0 100000000000    -    3    0    0    - Disk quotas for group user001 (gid 1234): Filesystem kbytes quota limit grace files quota limit grace /scratch    8    0    0    -    3    0    0    - @@ -244,15 +230,15 @@ currently used by user001. HOME directory is mounted via NFS, so a different command must be used to obtain quota information: -  $ quota +  $ quota Example output: - $ quota - Disk quotas for user vop999 (uid 1025): - Filesystem blocks quota limit grace files quota limit grace - home-nfs-ib.salomon.it4i.cz:/home - 28 0 250000000 10 0 500000 + $ quota + Disk quotas for user vop999 (uid 1025): + Filesystem blocks quota limit grace files quota limit grace + home-nfs-ib.salomon.it4i.cz:/home + 28 0 250000000 10 0 500000 To have a better understanding of where the space is exactly used, you can use following command to find out. @@ -266,11 +252,11 @@ Example for your HOME directory: ``` $ cd /home $ du -hs * .[a-zA-z0-9]* | grep -E "[0-9]*G|[0-9]*M" | sort -hr -258M cuda-samples -15M .cache -13M .mozilla -5,5M .eclipse -2,7M .idb_13.0_linux_intel64_app +258M cuda-samples +15M .cache +13M .mozilla +5,5M .eclipse +2,7M .idb_13.0_linux_intel64_app ``` This will list all directories which are having MegaBytes or GigaBytes @@ -278,7 +264,6 @@ of consumed space in your actual (in this example HOME) directory. List is sorted in descending order from largest to smallest files/directories. - >To have a better understanding of previous commands, you can read manpages. @@ -338,12 +323,9 @@ for more information on Linux ACL: [http://www.vanemery.com/Linux/ACL/POSIX_ACL_on_Linux.html ](http://www.vanemery.com/Linux/ACL/POSIX_ACL_on_Linux.html) - Shared Workspaces --------------------- - - ###HOME Users home directories /home/username reside on HOME filesystem. @@ -367,7 +349,6 @@ catasthropic failure resulting in significant data loss. This backup however is not intended to restore old versions of user data or to restore (accidentaly) deleted files. - HOME workspace Accesspoint /home/username @@ -514,31 +495,22 @@ User quota none  - Summary ---------- + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + Mountpoint Usage Protocol Net Capacity Throughput Limitations Access Services + ---------------------------------------------- -------------------------------- ------------- -------------- ------------ ------------- ------------------------- ----------------------------- + /home home directory NFS, 2-Tier 0.5 PB 6 GB/s Quota 250GB Compute and login nodes backed up ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -Mountpoint Usage Protocol Net Capacity Throughput Limitations Access Services ----------------------------------------------- -------------------------------- ------------- -------------- ------------ ------------- ------------------------- ----------------------------- - /home home directory NFS, 2-Tier 0.5 PB 6 GB/s Quota 250GB Compute and login nodes backed up - - /scratch/work large project files Lustre 1.69 PB 30 GB/s Quota Compute and login nodes none - 1TB - - /scratch/temp job temporary data Lustre 1.69 PB 30 GB/s Quota 100TB Compute and login nodes files older 90 days removed - - /ramdisk job temporary data, node local local 120GB 90 GB/s none Compute nodes purged after job ends ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ - - + /scratch/work large project files Lustre 1.69 PB 30 GB/s Quota Compute and login nodes none + 1TB + /scratch/temp job temporary data Lustre 1.69 PB 30 GB/s Quota 100TB Compute and login nodes files older 90 days removed + /ramdisk job temporary data, node local local 120GB 90 GB/s none Compute nodes purged after job ends + -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  - - - diff --git a/html_md.sh b/html_md.sh index c3424f214..aa2a92d56 100755 --- a/html_md.sh +++ b/html_md.sh @@ -2,9 +2,9 @@ ### DOWNLOAD AND CONVERT DOCUMENTATION # autor: kru0052 -# version: 0.45 -# change: repair tables -# bugs: bad links for other files, stayed a few html elements, formatting bugs... +# version: 0.46 +# change: repair tables, optimalization +# bugs: bad links for other files, formatting bugs, bad bash and other code (formatting)... ### if [ "$1" = "-t" ]; then @@ -29,22 +29,22 @@ if [ "$1" = "-t" ]; then fi if [ "$1" = "-t1" ]; then - count=$(find . -name "*.html" -type f | wc -l) + STARTTIME=$(date +%s) + + sleep 5 + + ENDTIME=$(date +%s) + echo "It takes $(($ENDTIME - $STARTTIME)) seconds to complete this task..." - if [ $count -eq 151 ]; then - echo "true - $count"; - else - echo "false - $count"; - - exit; -fi fi if [ "$1" = "-w" ]; then # download html pages + STARTTIME=$(date +%s) rm -rf docs.it4i.cz wget -X pbspro-documentation,changelog,whats-new,portal_css,portal_javascripts,++resource++jquery-ui-themes,anselm-cluster-documentation/icon.jpg -R favicon.ico,pdf.png,logo.png,background.png,application.png,search_icon.png,png.png,sh.png,touch_icon.png,anselm-cluster-documentation/icon.jpg,*js,robots.txt,*xml,RSS,download_icon.png,pdf,*zip,*rar,@@*,anselm-cluster-documentation/icon.jpg.1 --mirror --convert-links --adjust-extension --page-requisites --no-parent https://docs.it4i.cz; + # download images wget --directory-prefix=./docs.it4i.cz/ http://verif.cs.vsb.cz/aislinn/doc/report.png wget --directory-prefix=./docs.it4i.cz/ https://docs.it4i.cz/anselm-cluster-documentation/software/virtualization/virtualization-job-workflow wget --directory-prefix=./docs.it4i.cz/ https://docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/images/fig1.png @@ -53,11 +53,14 @@ if [ "$1" = "-w" ]; then wget --directory-prefix=./docs.it4i.cz/ https://docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/images/fig4.png wget --directory-prefix=./docs.it4i.cz/ https://docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/images/fig5.png wget --directory-prefix=./docs.it4i.cz/ https://docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/images/fig6.png - + ENDTIME=$(date +%s) + echo "It takes $(($ENDTIME - $STARTTIME)) seconds to complete this task..." fi if [ "$1" = "-c" ]; then ### convert html to md + STARTTIME=$(date +%s) + if [ -d ./docs.it4i.cz ]; then # erasing the previous transfer rm -rf converted; @@ -83,7 +86,7 @@ if [ "$1" = "-c" ]; then # first filtering html echo "$(tput setaf 12)($counter/$count)$(tput setaf 11)$i"; counter=$((counter+1)) - printf "$(tput setaf 15)\t\tfirst filtering html files...\n"; + printf "$(tput setaf 15)\t\tfiltering html files...\n"; HEAD=$(grep -n -m1 '<h1' "$i" |cut -f1 -d: | tr --delete '\n') END=$(grep -n -m1 '<!-- <div tal:content=' "$i" |cut -f1 -d: | tr --delete '\n') @@ -92,20 +95,13 @@ if [ "$1" = "-c" ]; then sed '1,'"$((HEAD-1))"'d' "$i" | sed -n -e :a -e '1,'"$DOWN"'!{P;N;D;};N;ba' > "${i%.*}TMP.html" - #while read x ; do - # arg1=`echo "$x" | cut -d"&" -f1 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; - # arg2=`echo "$x" | cut -d"&" -f2 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; - - # sed -e 's/'"$arg1"'/'"$arg2"'/' "${i%.*}TMP.html" > "${i%.*}.html"; - #done < ./source/tabHTML - # converted .html to .md printf "\t\t.html -> .md\n" pandoc -f html -t markdown+pipe_tables-grid_tables "${i%.*}TMP.html" -o "${i%.*}.md"; rm "${i%.*}TMP.html"; - # second filtering html and css elements... - printf "\t\tsecond filtering html and css elements...\n" + # filtering html and css elements... + printf "\t\tfiltering html and css elements...\n" sed -e 's/``` /```/' "${i%.*}.md" | sed -e 's/<\/div>//g' | sed '/^<div/d' | sed -e 's/<\/span>//' | sed -e 's/^\*\*//' | sed -e 's/\\//g' | sed -e 's/^: //g' | sed -e 's/^Obsah//g' > "${i%.*}TMP.md"; while read x ; do arg1=`echo "$x" | cut -d"&" -f1 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; @@ -115,6 +111,17 @@ if [ "$1" = "-c" ]; then cat "${i%.*}TMP.TEST.md" > "${i%.*}TMP.md"; done < ./source/replace + # repair formatting... + printf "\t\trepair formatting...\n" + while read x ; do + arg1=`echo "$x" | cut -d"&" -f1 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; + arg2=`echo "$x" | cut -d"&" -f2 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; + + sed -e 's/'"$arg1"'/'"$arg2"'/' "${i%.*}TMP.md" > "${i%.*}TMP.TEST.md"; + cat "${i%.*}TMP.TEST.md" > "${i%.*}TMP.md"; + done < ./source/formatting + + # repair image... printf "\t\trepair images...\n" while read x ; do @@ -126,14 +133,24 @@ if [ "$1" = "-c" ]; then done < ./source/repairIMG # repair tables - printf "\t\tformatting tables...\n" - #while read x ; do - # arg1=`echo "$x" | cut -d"&" -f1 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; - # arg2=`echo "$x" | cut -d"&" -f2 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; - - # sed -e 's/'"$arg1"'/'"$arg2"'/' "${i%.*}TMP.md" > "${i%.*}.md"; - # sed -e :a -e '/\\$/N; s/\\\n//; ta' "${i%.*}.md" > "${i%.*}TMP.md"; - #done < ./source/tab + printf "\t\trepair tables...\n" + while read x ; do + arg1=`echo "$x" | cut -d"&" -f1 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; + arg2=`echo "$x" | cut -d"&" -f2 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; + + sed -e 's/'"$arg1"'/'"$arg2"'/' "${i%.*}TMP.md" > "${i%.*}.md"; + sed -e :a -e '/\\$/N; s/\\\n//; ta' "${i%.*}.md" > "${i%.*}TMP.md"; + done < ./source/tab + + # replace tables + printf "\t\treplace tables...\n" + while read x ; do + arg1=`echo "$x" | cut -d"&" -f1 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; + arg2=`echo "$x" | cut -d"&" -f2 | sed 's:[]\[\^\$\.\*\/\"]:\\\\&:g'`; + + sed -e 's/'"$arg1"'/'"$arg2"'/' "${i%.*}TMP.md" > "${i%.*}.md"; + cat -s "${i%.*}.md" > "${i%.*}TMP.md"; + done < ./source/tabREPLACE cat "${i%.*}TMP.md" > "${i%.*}.md"; @@ -152,7 +169,7 @@ if [ "$1" = "-c" ]; then ### create new folder and move converted files - # create folder info and view all files and folder + # create folder info and list all files and folder mkdir info; echo "$(tput setaf 11)create folder info and file lists"; find ./docs.it4i.cz -name "*.png" -type f > ./info/list_image; @@ -190,6 +207,7 @@ if [ "$1" = "-c" ]; then cp ./converted/docs.it4i.cz/salomon/software/debuggers/Snmekobrazovky20160708v12.33.35.png ./converted/docs.it4i.cz/anselm-cluster-documentation/software/debuggers/Snmekobrazovky20160708v12.33.35.png cp ./docs.it4i.cz/virtualization-job-workflow ./converted/docs.it4i.cz/anselm-cluster-documentation/software/ + # listall files and folder /converted find ./converted -name "*.png" -type f > ./info/list_image_converted; find ./converted -name "*.jpg" -type f >> ./info/list_image_converted; find ./converted -name "*.jpeg" -type f >> ./info/list_image_converted; @@ -198,6 +216,11 @@ if [ "$1" = "-c" ]; then echo "$(tput setaf 11)COMPLETED...$(tput setaf 15)"; else - echo "$(tput setaf 9)Can not create a folder converted, because the number of MD files disagrees. The converted files remain in the folder docs.it4i.cz !!!!...$(tput setaf 15)"; - fi + printf "\n\n$(tput setaf 9)Can not create a folder converted, because the number of MD files disagrees. The converted files remain in the folder docs.it4i.cz !!!!...$(tput setaf 15)\n\n"; + fi + else + printf "\n\n$(tput setaf 9)folder docs.it4i.cz not exists!!!!...$(tput setaf 15)\n\nRun html_md.sh -w\n\n"; + fi + ENDTIME=$(date +%s) + echo "It takes $(($ENDTIME - $STARTTIME)) seconds to complete this task..." fi diff --git a/source/formatting b/source/formatting new file mode 100644 index 000000000..a644a853a --- /dev/null +++ b/source/formatting @@ -0,0 +1,39 @@ + []()& + **[]()&** +- - & +.[]()&. +<!-- -->& +### []()[]()&### +### []()&### +### **&### +### class="n">&### +### Gnome on Windows**&### Gnome on Windows +### Notes **&### Notes +**Summary&**Summary** +Tape Library T950B**&**Tape Library T950B** + ****The R version 3.0.1 is available on Anselm, along with GUI interface&**The R version 3.0.1 is available on Anselm, along with GUI interface +^& +Input:** FASTQ file.&Input: FASTQ file. +Output:** FASTQ file plus an HTML file containing statistics on the&Output: FASTQ file plus an HTML file containing statistics on the +*Figure 2.****** FASTQ file.***&*Figure 2.**FASTQ file.** +Component:** Hpg-aligner.****&Component:** Hpg-aligner.** +Input:** VCF&Input:** VCF** +the corresponding QC and functional annotations.&the corresponding QC and functional annotations.** +Core features:**&**Core features:** +Regulatory:**&**Regulatory:** +Functional annotation**&**Functional annotation** +Variation**&**Variation** +Systems biology**&**Systems biology** +[VNC](../../../salomon/accessing-the-cluster/graphical-user-interface/vnc.html)**.&**[VNC](../../../salomon/accessing-the-cluster/graphical-user-interface/vnc.html)**. +Workaround:**&**Workaround:** +-g** : Generates extra debugging information usable by GDB. -g3&-g** : Generates extra debugging information usable by GDB. -g3** +-O0** : Suppress all optimizations.&-O0** : Suppress all optimizations.** +nodes.****&nodes. +###Compute Nodes Without Accelerator**&###Compute Nodes Without Accelerator +###Compute Nodes With MIC Accelerator**&###Compute Nodes With MIC Accelerator +###Compute Nodes With GPU Accelerator**&###Compute Nodes With GPU Accelerator +###Fat Compute Nodes**&###Fat Compute Nodes +**Figure Anselm bullx B510 servers****&**Figure Anselm bullx B510 servers** +### Compute Nodes Summary********&### Compute Nodes Summary +<p><a href="x-window-system/cygwin-and-x11-forwarding.html" If no able to forward X11 using PuTTY to CygwinX</a>&[If no able to forward X11 using PuTTY to CygwinX](x-window-system/cygwin-and-x11-forwarding.html) +<p><a href="http://x.cygwin.com/" Install Cygwin</a>&[Install Cygwin](http://x.cygwin.com/) diff --git a/source/list_image_mv.txt b/source/list_image_mv.txt deleted file mode 100644 index 245067812..000000000 --- a/source/list_image_mv.txt +++ /dev/null @@ -1,98 +0,0 @@ -./docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/fig2.png -./docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/fig5.png -./docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/fig6.png -./docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/fig3.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/TightVNC_login.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/putty-tunnel.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/gnome-terminal.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/gdmscreensaver.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/gnome-compute-nodes-over-vnc.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/gdmdisablescreensaver.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/cygwinX11forwarding.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/XWinlistentcp.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuttyKeygenerator_004V.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/20150312_143443.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PageantV.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuttyKeygenerator_001V.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuTTY_host_Salomon.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuTTY_keyV.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuttyKeygenerator_005V.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuTTY_save_Salomon.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuttyKeygeneratorV.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuTTY_open_Salomon.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuttyKeygenerator_002V.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-data-transfer/PuttyKeygenerator_006V.png -./docs.it4i.cz/salomon/accessing-the-cluster/copy_of_vpn_web_install_3.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_contacting.png -./docs.it4i.cz/salomon/resource-allocation-and-job-execution/rswebsalomon.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_successfull_connection.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_web_install_2.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_web_login_2.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/gnome_screen.png -./docs.it4i.cz/salomon/network-1/IBsingleplanetopologyAcceleratednodessmall.png -./docs.it4i.cz/salomon/network-1/IBsingleplanetopologyICEXMcellsmall.png -./docs.it4i.cz/salomon/network-1/Salomon_IB_topology.png -./docs.it4i.cz/salomon/network-1/7D_Enhanced_hypercube.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_web_login.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_login.png -./docs.it4i.cz/salomon/software/debuggers/totalview2.png -./docs.it4i.cz/salomon/software/debuggers/Snmekobrazovky20160211v14.27.45.png -./docs.it4i.cz/salomon/software/debuggers/ddt1.png -./docs.it4i.cz/salomon/software/debuggers/totalview1.png -./docs.it4i.cz/salomon/software/debuggers/Snmekobrazovky20160708v12.33.35.png -./docs.it4i.cz/salomon/software/intel-suite/Snmekobrazovky20151204v15.35.12.png -./docs.it4i.cz/salomon/software/ansys/AMsetPar1.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_contacting_https_cluster.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_web_download.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_web_download_2.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_contacting_https.png -./docs.it4i.cz/salomon/accessing-the-cluster/vpn_web_install_4.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/graphical-user-interface/vncviewer.png -./docs.it4i.cz/salomon/resource-allocation-and-job-execution/job_sort_formula.png -./docs.it4i.cz/salomon/resource-allocation-and-job-execution/fairshare_formula.png -./docs.it4i.cz/anselm-cluster-documentation/resource-allocation-and-job-execution/rsweb.png -./docs.it4i.cz/anselm-cluster-documentation/quality2.png -./docs.it4i.cz/anselm-cluster-documentation/turbovncclientsetting.png -./docs.it4i.cz/get-started-with-it4innovations/obtaining-login-credentials/Authorization_chain.png -./docs.it4i.cz/anselm-cluster-documentation/scheme.png -./docs.it4i.cz/anselm-cluster-documentation/quality3.png -./docs.it4i.cz/anselm-cluster-documentation/legend.png -./docs.it4i.cz/anselm-cluster-documentation/bullxB510.png -./docs.it4i.cz/salomon/software/debuggers/vtune-amplifier.png -./docs.it4i.cz/anselm-cluster-documentation/software/debuggers/totalview2.png -./docs.it4i.cz/anselm-cluster-documentation/software/debuggers/Snmekobrazovky20141204v12.56.36.png -./docs.it4i.cz/anselm-cluster-documentation/software/debuggers/ddt1.png -./docs.it4i.cz/anselm-cluster-documentation/software/debuggers/totalview1.png -./docs.it4i.cz/anselm-cluster-documentation/software/numerical-languages/Matlab.png -./docs.it4i.cz/anselm-cluster-documentation/quality1.png -./docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/fig1.png -./docs.it4i.cz/salomon/software/debuggers/report.png -./docs.it4i.cz/get-started-with-it4innovations/accessing-the-clusters/shell-access-and-fata-transfer/vpnuiV.png -./docs.it4i.cz/anselm-cluster-documentation/software/omics-master-1/fig4.png -./docs.it4i.cz/salomon/software/ansys/Fluent_Licence_2.jpg -./docs.it4i.cz/salomon/software/ansys/Fluent_Licence_4.jpg -./docs.it4i.cz/salomon/software/ansys/Fluent_Licence_1.jpg -./docs.it4i.cz/salomon/software/ansys/Fluent_Licence_3.jpg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/Anselmprofile.jpg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/anyconnecticon.jpg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/anyconnectcontextmenu.jpg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/logingui.jpg -./docs.it4i.cz/anselm-cluster-documentation/software/ansys/Fluent_Licence_2.jpg -./docs.it4i.cz/anselm-cluster-documentation/software/ansys/Fluent_Licence_4.jpg -./docs.it4i.cz/anselm-cluster-documentation/software/ansys/Fluent_Licence_1.jpg -./docs.it4i.cz/anselm-cluster-documentation/software/ansys/Fluent_Licence_3.jpg -./docs.it4i.cz/anselm-cluster-documentation/firstrun.jpg -./docs.it4i.cz/anselm-cluster-documentation/successfullconnection.jpg -./docs.it4i.cz/salomon/sgi-c1104-gp1.jpeg -./docs.it4i.cz/salomon/salomon-1.jpeg -./docs.it4i.cz/salomon/hardware-overview-1/uv-2000.jpeg -./docs.it4i.cz/salomon/salomon-3.jpeg -./docs.it4i.cz/salomon/salomon-4.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/loginwithprofile.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/instalationfile.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/successfullinstalation.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/java_detection.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/executionaccess.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/downloadfilesuccessfull.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/executionaccess2.jpeg -./docs.it4i.cz/anselm-cluster-documentation/accessing-the-cluster/login.jpeg diff --git a/source/replace b/source/replace index 346ea0b42..9d6743dbf 100644 --- a/source/replace +++ b/source/replace @@ -1,10 +1,3 @@ - []()& - **[]()&** -- - & -.[]()&. -### []()[]()&### -### []()&### -### **&### style="text-align: left; float: none; ">& class="anchor-link">& class="Apple-converted-space">& @@ -22,7 +15,6 @@ class="internal-link"><span id="result_box" class="short_text"><span& class="monospace">& class="monospace">LAPACKE</span> module, which includes Intel's LAPACKE&LAPACKE modelu, which includes Intel's LAPACKE class="n">& -### class="n">&### class="n">& class="pre">& class="pun">node_group_key& @@ -44,8 +36,6 @@ class="smarterwiki-popup-bubble-tip"></span><span <div id="d4841e34">& <div id="d4841e37">& {.external& -### Gnome on Windows**&### Gnome on Windows -### Notes **&### Notes </span>& <span& [<span class="anchor-link">& @@ -85,11 +75,8 @@ class="smarterwiki-popup-bubble-tip"></span><span style="text-align: left; float: none; "> & style="text-align: start; ">& style="text-align: start; float: none; ">& -**Summary&**Summary** -Tape Library T950B**&**Tape Library T950B** .text}.& .text}& - ****The R version 3.0.1 is available on Anselm, along with GUI interface&**The R version 3.0.1 is available on Anselm, along with GUI interface ssh-connection style="text-alignstart; "}& <div& </div>& @@ -126,41 +113,15 @@ id="content-core">& id="viewlet-above-content-body">& id="viewlet-below-content-title">& ^[>[1<span>]]& -^& -link}& <span& -Input:** FASTQ file.&Input: FASTQ file. -Output:** FASTQ file plus an HTML file containing statistics on the&Output: FASTQ file plus an HTML file containing statistics on the -*Figure 2.****** FASTQ file.***&*Figure 2.**FASTQ file.** -Component:** Hpg-aligner.****&Component:** Hpg-aligner.** -Input:** VCF&Input:** VCF** -the corresponding QC and functional annotations.&the corresponding QC and functional annotations.** -Core features:**&**Core features:** -Regulatory:**&**Regulatory:** -Functional annotation**&**Functional annotation** -Variation**&**Variation** -Systems biology**&**Systems biology** -[VNC](../../../salomon/accessing-the-cluster/graphical-user-interface/vnc.html)**.&**[VNC](../../../salomon/accessing-the-cluster/graphical-user-interface/vnc.html)**. -<!-- -->& id="Key_management" class="mw-headline">& -Workaround:**&**Workaround:** --g** : Generates extra debugging information usable by GDB. -g3&-g** : Generates extra debugging information usable by GDB. -g3** --O0** : Suppress all optimizations.&-O0** : Suppress all optimizations.** class="external-link">& class="link-external">& class="WYSIWYG_LINK">& class="wide-view-wrapper">& class="listitem">& class="emphasis">& -<p><a href="x-window-system/cygwin-and-x11-forwarding.html" If no able to forward X11 using PuTTY to CygwinX</a>&[If no able to forward X11 using PuTTY to CygwinX](x-window-system/cygwin-and-x11-forwarding.html) -<p><a href="http://x.cygwin.com/" Install Cygwin</a>&[Install Cygwin](http://x.cygwin.com/) class="visualHighlight">& {.spip_in& .external& -nodes.****&nodes. -###Compute Nodes Without Accelerator**&###Compute Nodes Without Accelerator -###Compute Nodes With MIC Accelerator**&###Compute Nodes With MIC Accelerator -###Compute Nodes With GPU Accelerator**&###Compute Nodes With GPU Accelerator -###Fat Compute Nodes**&###Fat Compute Nodes -**Figure Anselm bullx B510 servers****&**Figure Anselm bullx B510 servers** -### Compute Nodes Summary********&### Compute Nodes Summary diff --git a/source/tab b/source/tab index 7aaf44c46..65a1098fd 100644 --- a/source/tab +++ b/source/tab @@ -23,37 +23,3 @@ )\&) .\&. <p>& - compute nodes number of workers start-up time[s]&|compute nodes|number of workers|start-up time[s]| - --------------- ------------------- --------------------&|---|---|---| - 16 384 831&|16|384|831| - 8 192 807&|8|192|807| - 4 96 483&|4|96|483| - 2 48 16&|2|48|16| - Node type Count Range Memory Cores [Access](resource-allocation-and-job-execution/resources-allocation-policy.html)&|Node type|Count|Range|Memory|Cores|[Access](resource-allocation-and-job-execution/resources-allocation-policy.html)| - ---------------------------- ------- --------------- -------- ------------- --------------------------------------------------------------------------------------------------&|---|---|---|---|---|---| - Nodes without accelerator 180 cn[1-180] 64GB 16 @ 2.4Ghz qexp, qprod, qlong, qfree&|Nodes without accelerator|180|cn[1-180]|64GB|16 @ 2.4Ghz|qexp, qprod, qlong, qfree| - Nodes with GPU accelerator 23 cn[181-203] 96GB 16 @ 2.3Ghz qgpu, qprod&|Nodes with GPU accelerator|23|cn[181-203]|96GB|16 @ 2.3Ghz|qgpu, qprod| - Nodes with MIC accelerator 4 cn[204-207] 96GB 16 @ 2.3GHz qmic, qprod&|Nodes with MIC accelerator|4|cn[204-207]|96GB|16 @ 2.3GHz|qmic, qprod| - Fat compute nodes 2 cn[208-209] 512GB 16 @ 2.4GHz qfat, qprod&|Fat compute nodes|2|cn[208-209]|512GB|16 @ 2.4GHz|qfat, qprod| - Node Processor Memory Accelerator&|Node|Processor|Memory|Accelerator| - ------------------ --------------------------------------- -------- ----------------------&|---|---|---|---| - w/o accelerator 2x Intel Sandy Bridge E5-2665, 2.4GHz 64GB -&|w/o accelerator|2x Intel Sandy Bridge E5-2665, 2.4GHz|64GB|-| - GPU accelerated 2x Intel Sandy Bridge E5-2470, 2.3GHz 96GB NVIDIA Kepler K20&|GPU accelerated|2x Intel Sandy Bridge E5-2470, 2.3GHz|96GB|NVIDIA Kepler K20| - MIC accelerated 2x Intel Sandy Bridge E5-2470, 2.3GHz 96GB Intel Xeon Phi P5110&|MIC accelerated|2x Intel Sandy Bridge E5-2470, 2.3GHz|96GB|Intel Xeon Phi P5110| - Fat compute node 2x Intel Sandy Bridge E5-2665, 2.4GHz 512GB -&|Fat compute node|2x Intel Sandy Bridge E5-2665, 2.4GHz|512GB|-| - Login address Port Protocol Login node&|Login address|Port|Protocol|Login node| - ------------------------ ------ ---------- -----------------------------------------&|---|---|---|---| - salomon.it4i.cz 22 ssh round-robin DNS record for login[1-4]&|salomon.it4i.cz|22|ssh|round-robin DNS record for login[1-4]| - login1.salomon.it4i.cz 22 ssh login1&|login1.salomon.it4i.cz|22|ssh|login1| - login2.salomon.it4i.cz 22 ssh login2&|login1.salomon.it4i.cz|22|ssh|login1| - login3.salomon.it4i.cz 22 ssh login3&|login1.salomon.it4i.cz|22|ssh|login1| - login4.salomon.it4i.cz 22 ssh login4&|login1.salomon.it4i.cz|22|ssh|login1| - Toolchain Module(s)&|Toolchain|Module(s)| - -------------------- ------------------------------------------------&|---|----| - GCC GCC&|GCC|GCC| - ictce icc, ifort, imkl, impi&|ictce|icc, ifort, imkl, impi| - intel GCC, icc, ifort, imkl, impi&|intel|GCC, icc, ifort, imkl, impi| - gompi GCC, OpenMPI&|gompi|GCC, OpenMPI| - goolf BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK&|goolf|BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK| - >iompi OpenMPI, icc, ifort&|iompi|OpenMPI, icc, ifort| - iccifort icc, ifort&|iccifort|icc, ifort| diff --git a/source/tabHTML b/source/tabHTML deleted file mode 100644 index 4ba3f28b4..000000000 --- a/source/tabHTML +++ /dev/null @@ -1,9 +0,0 @@ -<table class="listing">&<table class="plain"> -<tr class="odd">&<tr> -<tr class="even">&<tr> -<table class="plain" id="big-picture-of-cluster">&<table class="plain"> -<td title="Login nodes">&<td> -<table class="filled">&<table class="plain"> -<td title="Compute nodes">&<td> -<table class="filled" id="blade-chassis">&<table class="plain"> -<td title="Compute nodes">&<td> diff --git a/source/tabREPLACE b/source/tabREPLACE new file mode 100644 index 000000000..337add8c3 --- /dev/null +++ b/source/tabREPLACE @@ -0,0 +1,34 @@ + compute nodes number of workers start-up time[s]&|compute nodes|number of workers|start-up time[s]| + --------------- ------------------- --------------------&|---|---|---| + 16 384 831&|16|384|831| + 8 192 807&|8|192|807| + 4 96 483&|4|96|483| + 2 48 16&|2|48|16| + Node type Count Range Memory Cores [Access](resource-allocation-and-job-execution/resources-allocation-policy.html)&|Node type|Count|Range|Memory|Cores|[Access](resource-allocation-and-job-execution/resources-allocation-policy.html)| + ---------------------------- ------- --------------- -------- ------------- --------------------------------------------------------------------------------------------------&|---|---|---|---|---|---| + Nodes without accelerator 180 cn[1-180] 64GB 16 @ 2.4Ghz qexp, qprod, qlong, qfree&|Nodes without accelerator|180|cn[1-180]|64GB|16 @ 2.4Ghz|qexp, qprod, qlong, qfree| + Nodes with GPU accelerator 23 cn[181-203] 96GB 16 @ 2.3Ghz qgpu, qprod&|Nodes with GPU accelerator|23|cn[181-203]|96GB|16 @ 2.3Ghz|qgpu, qprod| + Nodes with MIC accelerator 4 cn[204-207] 96GB 16 @ 2.3GHz qmic, qprod&|Nodes with MIC accelerator|4|cn[204-207]|96GB|16 @ 2.3GHz|qmic, qprod| + Fat compute nodes 2 cn[208-209] 512GB 16 @ 2.4GHz qfat, qprod&|Fat compute nodes|2|cn[208-209]|512GB|16 @ 2.4GHz|qfat, qprod| + Node Processor Memory Accelerator&|Node|Processor|Memory|Accelerator| + ------------------ --------------------------------------- -------- ----------------------&|---|---|---|---| + w/o accelerator 2x Intel Sandy Bridge E5-2665, 2.4GHz 64GB -&|w/o accelerator|2x Intel Sandy Bridge E5-2665, 2.4GHz|64GB|-| + GPU accelerated 2x Intel Sandy Bridge E5-2470, 2.3GHz 96GB NVIDIA Kepler K20&|GPU accelerated|2x Intel Sandy Bridge E5-2470, 2.3GHz|96GB|NVIDIA Kepler K20| + MIC accelerated 2x Intel Sandy Bridge E5-2470, 2.3GHz 96GB Intel Xeon Phi P5110&|MIC accelerated|2x Intel Sandy Bridge E5-2470, 2.3GHz|96GB|Intel Xeon Phi P5110| + Fat compute node 2x Intel Sandy Bridge E5-2665, 2.4GHz 512GB -&|Fat compute node|2x Intel Sandy Bridge E5-2665, 2.4GHz|512GB|-| + Login address Port Protocol Login node&|Login address|Port|Protocol|Login node| + ------------------------ ------ ---------- -----------------------------------------&|---|---|---|---| + salomon.it4i.cz 22 ssh round-robin DNS record for login[1-4]&|salomon.it4i.cz|22|ssh|round-robin DNS record for login[1-4]| + login1.salomon.it4i.cz 22 ssh login1&|login1.salomon.it4i.cz|22|ssh|login1| + login2.salomon.it4i.cz 22 ssh login2&|login1.salomon.it4i.cz|22|ssh|login1| + login3.salomon.it4i.cz 22 ssh login3&|login1.salomon.it4i.cz|22|ssh|login1| + login4.salomon.it4i.cz 22 ssh login4&|login1.salomon.it4i.cz|22|ssh|login1| + Toolchain Module(s)&|Toolchain|Module(s)| + -------------------- ------------------------------------------------&|---|----| + GCC GCC&|GCC|GCC| + ictce icc, ifort, imkl, impi&|ictce|icc, ifort, imkl, impi| + intel GCC, icc, ifort, imkl, impi&|intel|GCC, icc, ifort, imkl, impi| + gompi GCC, OpenMPI&|gompi|GCC, OpenMPI| + goolf BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK&|goolf|BLACS, FFTW, GCC, OpenBLAS, OpenMPI, ScaLAPACK| + >iompi OpenMPI, icc, ifort&|iompi|OpenMPI, icc, ifort| + iccifort icc, ifort&|iccifort|icc, ifort| -- GitLab