Skip to content
Snippets Groups Projects
Commit 2eca8205 authored by Odair M.'s avatar Odair M.
Browse files

feat(Acesso): add how access and copy files doc

build(Makefile,gitignore): Add struct of watch function on makefile, add 'nohup.out' on .gitignore

feat(Html): Add favicon icon on html pages

refactor(Access-page): Refactor the access page, rename sections and add some examples

feat(Statics): Add static files, like favicon.svg, diagrams, and others

feat(Overview-page): Add initial overview page

feat(Quickstart-page): Add initial quickstart
parent 19bd3214
No related branches found
No related tags found
No related merge requests found
build/*
nohup.out
......@@ -18,3 +18,6 @@ help:
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
#watch:
#@while inotifywait -r -q -e create,modify,delete --include '\.rst|md|png|jpg|svg' $(SOURCEDIR); do; make html; done;
<mxfile host="app.diagrams.net" modified="2022-09-27T22:00:31.155Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" etag="iGI_iD0u3cRXg2_oZUu0" version="20.2.7" type="device" pages="2"><diagram id="W15Z6vlzwkSuKQkNdcMc" name="Page-1">3VjLdpswEP0aL9NjEGCyTO20WfSRc7xoupRhALUCESFiu1/fkRHmGdtN7ZM2G1tzNXpw58548ITM081HSfPkswiBT+xpuJmQxcS2HWeGnxrYVsDMJhUQSxZWkNUAS/YLDDg1aMlCKDqOSgiuWN4FA5FlEKgORqUU665bJHj31JzGMACWAeVD9BsLVVKhvj1r8DtgcVKfbHnX1UxKa2fzJEVCQ7FuQeR2QuZSCFWN0s0cuOau5qVa9+GZ2f3FJGTqlAWxnc6uaEq/zGkhH6Lr6dfbr1dmlyfKS/PAE9vjuN/7SOC2eGu1NVR4j6WoJ66KXaBu0MHycoz1+2YeR7H+npO7+3m920rWMBcxy3BdJkJRz+Klq+MqF8PX/mR7nTAFy5wG2l6jztApUSlHy8IhLfIq9BHbQKivyDifCy7kbjkJKfhRgHihpPgJrRkv8GEV7Y98Aqlg8yy/1j5qqHYQKSi5RRezgJg4G6HbjrHXLdkYKGkppsaoEWq837iJJQ5MOP8gtPZIaHu8Qhbe6BxBK+C0KFjQJVaKMgs1o4spWrBh6sHM6PF3jb9zjbXYtNwWW2NUR0I4SLIeq3gtUcoAjktVURmDOuBHxqPUCoM7EoYak8CpYk/d647FxpxwL9guT4wI3J4KHKcX3uoxzap2tvY2svyenPo6qXgYbLSTyv6xX64edygWDOLSmEKqRMQio/y2QXtyaXw+CZEb3fwApbamytNSia7eUBNy+1DrSBstjWmzEdnOqlWmi4fZ1PLOqzpyouqccdWdLKe/SnVyuSq+LFcpK4rJnExuiNA/5IAfZYofP8Tq1ALeKEOH+Ug571dvF/zQGavevr0innee6m3NevnmDsu3ZY8UDu9S9Xt2gMWX5tdoBbcPl/B/MCmdE5PSe82kvD5YQTORvdWSeWp0/NeMjjMomUteSl3WiiCBsOQg9QGD9vWxBFzQjyz29rkeJrChGD/0y0EyvCnIBr2vIfuUGoidbB2fkXD1amQUgReMdrjh7Ho1bTqxv+twneMt7miNvFiP6w2iiK8VMGx0u2l2jPsjXPsBjHO98l3HPRPXrt3jejrk2jvQx56dan+UavIWqXbd16XasgasXuKno09+l+QQIlruil/rLdEcjcgHpp9pd3SBlV4N3yN3sHGzzvwqOP0fuvL6lr2Ucd5gyhDrYtUJzeY/surttvmjkdz+Bg==</diagram><diagram id="gG9U-3tXi59px22t3YMS" name="Page-2">jZNRj5swDMc/DY9DLen1useW9XYPt2lStZ22lyklBrIlOAvmSvfp55RQik4nTULC+dnGzt8mEbntP3rp6k+owCTZQvWJ+JBk2XKVZUl4Fuo8kPv1egCV1yoGTeCg/0KEi0g7raCdBRKiIe3msMCmgYJmTHqPp3lYiWZe1ckKXoFDIc1r+qwV1QPdZPcTfwRd1WPl5fr94LFyDI43aWup8HSDxD4RuUekwbJ9DiaIN+oy5D284b025qGh/0lov3/9Vtvd/u5Z0Y/Tz8/bX38e38VhvEjTxQvHZuk8KsB9u2Bqe5Fq9wKeNAv0JI9gvmCrSWPD/iMSoeUAExw7WfyuPHaNytGgZ7+CUnaGbr6wNboKmYSOqWzdMMBS98A97y4FtyNdjITtmiiMfxsumz204Jz2NVouVMm0EK1Ju9L59OjZW6K3bYgiyUXZsKC05HcuDk/pZiVWYgll6pqKC0Q1uD/o35R5eR0ebz2gBfJnDokJYpx3XHhxF8+naX3EOspc36xOttnEtY0rW12/PU019D8MdjxOC3Tx3fyGYv8P</diagram></mxfile>
\ No newline at end of file
source/_static/favicon.png

29.6 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="363px" height="289px" viewBox="-0.5 -0.5 363 289" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2022-09-27T22:00:42.926Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36&quot; version=&quot;20.2.7&quot; etag=&quot;7dh8qETLRTQd4icRR5wY&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;yK9j9OKbyVstAMrRAv1-&quot;&gt;jZPNboMwDICfhitqSdd1x5Z122GTJvWwc0oMREtwFMxK9/RzSihF06RJSDif7fg3icht/+ylq99QgUmyheoT8Zhk2XKVZUn4Fuo8kPv1egCV1yoaTeCgvyHCRaSdVtDODAnRkHZzWGDTQEEzJr3H09ysRDOP6mQFv8ChkOY3/dCK6oFusvuJv4Cu6jHycv0waKwcjWMlbS0Vnm6Q2Cci94g0SLbPwYTmjX0Z/J7+0F4T89DQfxziIL6k6WJtMS86j8Vyii6I2l66svsCT5p78SqPYN6x1aSxYf0RidCygQmKnSw+K49do3I06FmvoJSdoZsbtkZXwZPQMZWtG2ZV6h44vd0l4Haki5GwXBOFSW9DXdlTC85pX6PlQJVMC9GatCudT4+etSV62wYrkhyUBQtKS/7n4vCablZiJZZQpq6pOEDsBucH/Z8dXV7nxAsOaIH8mU2igxhHG3db3MXzadoUsY5trm+2JNts4obG7ayud08DDPkPMxyP065cdDcvTux/AA==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><image x="-0.5" y="-0.5" width="362" height="288" xlink:href="https://seppirhomologa.c3sl.ufpr.br/forms/static/media/C3SL.843431ef.png" preserveAspectRatio="none"/></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="559px" height="169px" viewBox="-0.5 -0.5 559 169" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2022-09-26T22:02:00.321Z&quot; agent=&quot;5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36&quot; version=&quot;20.2.7&quot; etag=&quot;I-gZAyppvIGZ3Q2KB6kD&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;eYs5X8eWtEGqjjVirQgy&quot;&gt;3VjJbtswEP0aHVtYq+VjYifNoQUC+ND0SIsjiSktKhQVy/36khZprbGFxkmQAoGjGQ6392aeR7bc5bb6xlGe/mAYqOXMcGW5K8txbM9xLPU3w/vaE7qz2pFwgnVQ41iTP6CdJqwkGIpOoGCMCpJ3nRHLMohEx4c4Z7tuWMxod9ccJTBwrCNEh96fBItU38KZN/47IElqdraDRT2yRSZY36RIEWa7lsu9sdwlZ0zUT9tqCVSBZ3Cp592+MHo8GIdMTJmgiXhGtNR3s5yAyqnXMZMryAOKvb518FQyM/ClOHByJQPsIJe8Xjfj8ilR/5fu3f3SrLbhxk1ZQjI5L2OYmVF5vnq7OkRDc9zZ2aVEwDpHkbJ3MqdkUCq2VFq2fERFXrMckwqwOiKhdMko44fpLkYQxpH0F4Kz39AaCaIQNvFxy2fgAqoXobSPBMnMBrYFwfcyRE8wOaxz2vG0vWtliHalreQwPqRzMjku3NAmHzRz4yy6Iyz2IIQMX6nMl1ZEUVGQqIshZ2WGFXirmbSgIuJBj6jnX8r/1dfWqmqFrfbaqLcE3CudgpU8gk62CcQT0Nf3J8PcwtEfwdH4OFAkyHP3EGPg6h3uGTkkumbR79HoeT1+6vvoWe3K6i1kh7186BNdozBY6MD18dqT6PeGbEsW1tpkXKQsYRmiN423x3cT852xXBP/CELstfiiUrBuwki6+P7BJIIyWkmizCZLDpZJE1XoelE7mJY2/jBtwslpMzkfphab/3aSuS43W1IU1tK1rlymviBBfpRb+fHINlPVsqFW8XRGO/tS6UOIvTGpDJ2NGwSXkUp73qsNf6iVtjNS5MEFxDI4Adi/1sKoXDqn9fIdCygcFtDi4wpoflKuMpZ9Nn0agdd0qh+BbzgQqDUtuRKRIkoBlxS4WmvQmT2VICf0uZEdaq4eU6iQZEDG5cCJPBTwxntvXM4UxZFNmkF4BPCeIsUxBNFo84bni82s6Txe17x557u3UUW6RPu2GBAmm2MY9nDdmjgH8xlYwwjGYd2EvudfCFbf6cE6G8IanGjmXoOqKcEerO7/CKvvvx+s9gDAt5DvPs5dPDHEqDzIV+u9Rm8tPbdEHf+wdSFVWQzffA5uHWZPU3l75O3lA9tQc5xeeg/fBT5/erv2m6mGNJsfW+pXr+YnK/fmLw==&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="4" y="44" width="80" height="80" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 84px; margin-left: 5px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">C3HPC<br />login nodo</font></div></div></div></foreignObject><text x="44" y="88" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">C3HPC...</text></switch></g><path d="M 84 84 L 137.63 84" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 142.88 84 L 135.88 87.5 L 137.63 84 L 135.88 80.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 264 84 L 307.63 84" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 312.88 84 L 305.88 87.5 L 307.63 84 L 305.88 80.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="144" y="54" width="120" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 84px; margin-left: 145px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">Submissão de um job</font></div></div></div></foreignObject><text x="204" y="88" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Submissão de um job</text></switch></g><path d="M 425.43 66.86 L 488.43 32.08" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 493.02 29.54 L 488.58 35.99 L 488.43 32.08 L 485.2 29.86 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 434 84 L 487.63 84" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 492.88 84 L 485.88 87.5 L 487.63 84 L 485.88 80.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 334 44 L 414 44 L 434 84 L 414 124 L 334 124 L 314 84 Z" fill="#ffe6cc" stroke="#d79b00" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 84px; margin-left: 315px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Slurm scheduler/<br />queue</div></div></div></foreignObject><text x="374" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">Slurm scheduler...</text></switch></g><rect x="494" y="4" width="60" height="50" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 29px; margin-left: 495px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">node2</div></div></div></foreignObject><text x="524" y="34" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">node2</text></switch></g><rect x="494" y="59" width="60" height="50" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 84px; margin-left: 495px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">node3</div></div></div></foreignObject><text x="524" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">node3</text></switch></g><path d="M 488.02 125.81 L 424.7 102.59" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 492.95 127.62 L 485.17 128.49 L 488.02 125.81 L 487.58 121.92 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="494" y="114" width="60" height="50" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 139px; margin-left: 495px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">node4</div></div></div></foreignObject><text x="524" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="16px" text-anchor="middle">node4</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
......@@ -29,7 +29,7 @@ intersphinx_mapping = {
"sphinx": ("https://www.sphinx-doc.org/en/master/", None),
}
intersphinx_disabled_domains = ["std"]
sphinx_rtd_size_width = "100%"
#sphinx_rtd_size_width = "100%"
templates_path = ["_templates"]
......@@ -43,6 +43,6 @@ language = "pt_BR"
html_theme = "sphinx_rtd_theme"
html_static_path = ["_static", "_static/c3sl_logo.svg"]
html_logo = "_static/c3sl_logo.svg"
html_favicon = "_static/favicon.png"
# -- Options for EPUB output
epub_show_urls = "footnote"
......@@ -11,6 +11,13 @@ Acesso ao cluster:
------------------
Para utilizar o cluster, é necessário requisitar uma conta, vinculada a um professor C3SL, responsável pelo seu uso. A requisição pode ser feita pelo email `c3hpc@c3sl.ufpr.br`.
.. toctree::
:maxdepth: 2
:caption: Documentação:
:glob:
pages/*
Descrição do cluster:
---------------------
.. include:: components/nodes.rst
......@@ -20,9 +27,3 @@ Descrição das filas:
--------------------
.. include:: components/partitions.rst
.. toctree::
:maxdepth: 2
:caption: Documentação:
:glob:
pages/*
Formas de acessar o cluster
===========================
Formas de acessos
#################
Esta página destina a mostrar meios de interagir com o cluster do c3sl. Acessar remotamente o cluster e copiar arquivos do computador pessoal para o cluster e depois copiar arquivos do cluster para computador pessoal.
.. contents:: :depth: 4
Acesso via ssh
**************
| A forma de acessar o cluster é por meio do protocolo de acesso ssh (secure shell).
| O nome do cluster para acesso é: c3hpc.c3sl.ufpr.br
Acesso ssh linux
================
A principal forma de utilizar o *ssh* no linux é por meio do terminal.
*ssh* terminal linux
--------------------
| Abra o terminal e digite o comando: ``ssh <login>@c3hpc.c3sl.ufpr.br``.
| Onde:
- <login> é o seu usuário do cluster
Exemplo de acesso por terminal linux
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. code-block:: console
odair:~/ $ ssh odair@c3hpc.c3sl.ufpr.br
Linux c3hpc 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64
================================================================================
Suporte: c3hpc@c3sl.ufpr.br
===============================================================================
Last login: Wed Aug 31 19:28:56 2022 from 2801:82:80ff:8001:216:ccff:feaa:77
➜ ~
Acesso ssh windows
==================
TODO
Termius
-------
TODO
Copiar de arquivos para o cluster
*********************************
Para copiar arquivos para o cluster é possível utilizar os comandos: *scp* ou *rsync*
Comando *scp*
=============
| O comando scp (secure copy) funciona da mesma maneira que o comando *cp* só que precisa passar o servidor para onde está copiando.
| Para copiar um arquivo local para o cluster utilize o comando:
| ``scp <arquivo> <login>@c3hpc.c3sl.ufpr.br:~/<destino>``
| Onde:
* <arquivo> é o nome ou caminho para o arquivo que deseja copiar.
* <login> É o seu usuário no cluster.
* <destino> É o nome ou caminho de destino do arquivo no cluster.
| Para copiar diretórios é necessário passar a opção *-r*
| ``scp -r <diretório> <login>@c3hpc.c3sl.ufpr.br:~/<destino>``
Exemplo de cópia com *scp*
--------------------------
O exemplo a seguir mostra como copiar um arquivo ou diretório com scp para sua conta no cluster:
.. code-block:: console
[odair@zaros ~]$ scp -r experimentos/ odair@c3hpc.c3sl.ufpr.br:~/
exp2 100% 0 0.0KB/s 00:00
exp1 100% 0 0.0KB/s 00:00
script.sh 100% 0 0.0KB/s 00:00
[odair@zaros ~]$
Para copiar do cluster para sua máquina local é só inverter a ordem dos parametros:
.. code-block:: console
[odair@zaros ~]$ scp -r odair@c3hpc.c3sl.ufpr.br:~/experimentos resultados
[odair@zaros ~]$ ls resultados/
exp1 exp2 script.sh
[odair@zaros ~]$
Comando *rsync*
===============
| O comando rsync é mais robusto que o scp, e segue a mesma lógica de uso.
| Para copiar um arquivo local para o cluster use:
| ``rsync -avhHP <arquivo> <login>@c3hpc.c3sl.ufpr.br:~/<destino>``
| Para copiar um arquivo remoto do cluster para a sua máquina utilize:
| ``rsync -avhHP <login>@c3hpc.c3sl.ufpr.br:/<arquivo> <destino>``
Onde:
- ``<arquivo>`` É o nome ou caminho para o arquivo que deseja copiar.
- ``<login>`` É o seu usuário no cluster.
- ``<destino>`` É o nome ou caminho de destino do arquivo no cluster.
Os parametros utilizados no comando do ``rsync`` significam:
- ``-a`` Copiar tanto arquivo quanto diretório.
- ``-v`` Mostrar uma saída mais detalhada.
- ``-h`` Mostrar valores em unidades humanas, como MB, GB
- ``-H`` Copiar e manter hard-links.
- ``-P`` Mostrar o progresso durante a cópia
Exemplo de cópia com comando *rsync*
------------------------------------
Copiando diretório local para o cluster
.. code-block:: console
[odair@zaros ~]$ rsync -avhHP experimentos_v2/ odair@c3hpc.c3sl.ufpr.br:~/experimentos_v2/
sending incremental file list
created directory /home/odair/experimentos_v2
./
exp1
0 100% 0,00kB/s 0:00:00 (xfr#1, to-chk=2/4)
exp2
0 100% 0,00kB/s 0:00:00 (xfr#2, to-chk=1/4)
script.sh
0 100% 0,00kB/s 0:00:00 (xfr#3, to-chk=0/4)
sent 233 bytes received 130 bytes 242,00 bytes/sec
total size is 0 speedup is 0,00
[odair@zaros ~]$
Copiando diretório remoto do cluster para máquina local
.. code-block:: console
[odair@zaros ~]$ rsync -avhHP odair@c3hpc.c3sl.ufpr.br:~/experimentos_v2/ resultados_2
receiving incremental file list
created directory resultados_2
./
exp1
0 100% 0,00kB/s 0:00:00 (xfr#1, to-chk=2/4)
exp2
0 100% 0,00kB/s 0:00:00 (xfr#2, to-chk=1/4)
script.sh
0 100% 0,00kB/s 0:00:00 (xfr#3, to-chk=0/4)
sent 88 bytes received 235 bytes 129,20 bytes/sec
total size is 0 speedup is 0,00
[odair@zaros ~]$ ls resultados_2/
exp1 exp2 script.sh
[odair@zaros ~]$
.. tip::
| Recomendo criar um alias no .bashrc ou .zshrc para comandos de cópias, uma sugestão de alias é:
| ``alias copy="rsync -ahH --info=progress2 --mkpath"``
| O parametro ``--mkpath`` cria subdiretórios no destino, caso ele não exista, consulte ``man rsync`` para mais informações
| Com esse alias basta fazer:
| ``copy <arquivo> <login>@c3hpc.c3sl.ufpr.br:<destino>``
| ``copy <login>@c3hpc.c3sl.ufpr.br:<arquivo> <destino>``
Visão geral do cluster
######################
A visão geral do cluster pode ser entendido pelos conceitos básicos de como funciona cada componente. Essa página se destina apenas introduzir os conceitos, que serão aprofundados em outras páginas.
.. contents:: :depth: 4
Fluxo de trabalho do HPC
************************
O primeiro passo é entender como o cluster e executar programas em computadores de alto desempenho funciona.
.. figure:: ../_static/hpc-slurm.svg
:alt: Diagrama de funcionamento de computação de alto desempenho.
O uso de HPC para realizar processamento paralelo e de alto desempenho consiste em:
#. Copiar o experimento para o HPC
#. Acessar o nodo de acesso, representado na figura pelo quadrado azul
#. Submeter o experimento para o gerenciador de trabalho do HPC, no caso o slurm. Representado na figura pelo retangulo verde.
#. O gerenciador de trabalho do HPC vai colocar o trabalho na fila e assim que tiver recursos disponíveis o gerenciador vai executar o seu trabalho. Representado na figura losango laranja.
#. A execução do seu experimento será feito em algum nodo de processamento *computing node*, o nodo escolhido será de acordo com as especificações do seu experimento. Os nodos de processamentos são representado pelo quadrado vermelhos.
Conceitos fundamentais
**********************
.. contents:: Os principais conceitos que precisam serem entendidos são:
:depth: 2
:local:
*Jobs*
======
Definição de jobs
Partições
=========
| Partições *partitions* são as filas de trabalho do cluster. Um cluster pode ter várias partições, normalmente as partições representam uma divisão de recursos físicos ou lógicos. Por exemplo uma partição especial que contém somente servidoras com placas de videos.
| Para visualizar as partições utilize o comando ``sinfo``
Exemplo de ``sinfo``: Visualizando partições:
---------------------------------------------
.. code-block:: console
odair@c3hpc:~$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
1d up 1-00:00:00 9 idle node[2-7],proc[1-2],pti
7d up 7-00:00:00 2 alloc vti[1-2]
7d up 7-00:00:00 9 idle node[2-7],proc[1-2],pti
... ... ... ...
cpu up 7-00:00:00 9 idle node[2-7],proc[1-2],pti
cpu-long up 30-00:00:0 9 idle node[2-7],proc[1-2],pti
maratona-testing up 15:00 9 idle node[2-7],proc[1-2],pti
maratona up 1-00:00:00 9 idle node[2-7],proc[1-2],pti
odair@c3hpc:~$
Filas
=====
| As filas mostram os trabalhos que estão em execução, aguardando recursos serem liberados para executar e trabalhos com falhas. O comando para visualizar as filas é:
| ``squeue``
Exemplo de ``squeue``
---------------------
.. code-block:: console
odair@c3hpc:~$ squeue -l
Mon Sep 26 23:47:07 2022
JOBID PARTITION NAME USER STATE TIME TIME_LIMI NODES NODELIST(REASON)
12139 gpu exp2 odair RUNNING 3:01 7-00:00:00 1 pti
12142 gpu exp2 odair RUNNING 3:01 7-00:00:00 1 pti
12138 gpu exp2 odair RUNNING 3:04 7-00:00:00 1 pti
12150 maratona exp4 odair PENDING 0:00 1-00:00:00 1 (Resources)
12151 maratona exp4 odair PENDING 0:00 1-00:00:00 1 (Priority)
12149 maratona exp4 odair RUNNING 1:57 1-00:00:00 4 node[6-7],proc[1-2]
12148 maratona exp4 odair RUNNING 2:12 1-00:00:00 4 node[4-7]
12147 maratona exp4 odair RUNNING 2:15 1-00:00:00 3 node[3-5]
12144 maratona exp3 odair RUNNING 2:47 1-00:00:00 1 node3
12143 maratona exp3 odair RUNNING 2:50 1-00:00:00 1 node3
odair@c3hpc:~$
No exemplo mostra trabalhos que estão sendo executados e os que não estão, além do motivo para não estar em execução. O comando ``squeue -l`` mostra de forma longa a saída.
.. tip::
| Recomenda-se adicionar o seguinte alias no seu ``.bashrc`` ou ``.zshrc``:
| ``alias sq="squeue -u ${USER}"``
| Esse alias faz com que só mostre *jobs* do seu usuário e não mostra de outros usuários.
Módulos
=======
| O cluster possui diversos softwares com diversas versões, para lidar com vários softwares com muitas versões se utiliza um mecanismo de módulo, onde o usuário carrega um software na versão X apenas para a sessão dele.
| Utilize o comando `module avail` para mostrar todos os módulos disponíveis. A saída será algo do genero:
Em alguns casos algumas bibliotecas só funcionam em versões especifica do ``python`` ou do ``cuda``. Para o exemplo veremos qual a versão padrão do python3 e mudara para versão 3.8.4.
Mostrando módulos
-----------------
| Para mostrar todos os módulos disponível no cluster utilize o comando:
| ``module avail``
| A saída deve ser algo semelhante ao exemplo abaixo:
.. code-block:: console
odair@c3hpc:~$ module avail
----------------------- /usr/local/Modules/modulefiles --------------
applications/bazel/0.11.1 libraries/gdrcopy/gcc-6.4.0
applications/cmake/3.11.0 libraries/gdrcopy/gcc-7.3.0
... ...
interpreters/python/3.6.8 libraries/openblas/0.2.20-gcc-6.4.0
interpreters/python/3.8.14 libraries/openblas/0.2.20-gcc-7.3.0
libraries/boost/1.66.0-gcc-6.4.0 libraries/openmpi/4.0.0-gcc-6.4.0
... ...
libraries/cuda/10.1 tools/nvtop/1.0.0-cuda9.0
libraries/cuda/11.0 use.own
Key:
loaded modulepath
odair@c3hpc:~$
Carregando módulos
------------------
| Para carregar um módulo utilize o comando:
| ``module load <modulo>``
| Onde: ``<module>`` é o nome do módulo a ser carregado.
Exemplo carregando python3 versão 3.8.14
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Para demostrar como funciona módulos iremos verificar a versão padrão do ``python3`` e carregar a versão ``3.8.14``
.. code-block:: console
testem@c3hpc:~$ python3 --version # verifica versão do login node
Python 3.9.2
testem@c3hpc:~$ srun python3 --version # verifica versão de um computer node
Python 3.9.2
testem@c3hpc:~$ module load interpreters/python/3.8.14 # carrega python3 versão 3.8.14
testem@c3hpc:~$ python3 --version # verifica versão do login node
Python 3.8.14
testem@c3hpc:~$ srun python3 --version # verifica versão de um computer node
Python 3.8.14
testem@c3hpc:~$
| Vejam que após executar o comando:
| ``module load interpreters/python/3.8.14``
| A versão do python3 muda. Módulos são uteis principalmente quando se deseja utilizar diferentes versões de cuda e python.
Descarregando módulo
--------------------
| Para fazer o *unload* de um determinado módulo execute o comando:
| ``module unload <modulo>`` Onde ``modulo`` é o nome do módulo.
Requisitando módulos e softwares
--------------------------------
Para requisitar módulos, novas versões de softwares ou até mesmo a intalação de novas aplicações envie email para c3hpc@c3sl.ufpr.br.
Guia rápido de submissão
************************
A submissão de *jobs* pode ser realizado por dois comandos do gerenciador do cluster: ``srun`` e ``sbatch``. O comando ``srun`` executa na linha de comando e é bloqueante, equanto o comando ``sbatch`` executa um arquivo de configuração e não é bloqueante.
.. contents:: :depth: 4
Principais parametros de submissão:
===================================
* ``-p|--partition nome`` Especifica o nome da partição que o *job* será executado.
* ``-t|--time tempo`` Especifica um tempo limite para a execução do job. Caso o tempo limite especificado seja maior que o tempo da partição, o job ficará com o estado pendente (PENDING), possivelmente para sempre. Formatos de tempo aceitos: “minutos”, “minutos:segundos”, “horas:minutos:segundos”, “dias-horas”, “dias-horas:minutos” e “dias-horas:minutos:segundos”.
* ``-c|--cpus-per-task`` Especifica a quantidade de core/threads o seu programa vai utilizar.
* ``--mem tamano unidade`` Especifica quantidade de memória seu programa vai utilizar.
* ``-n NUM_PROCESSOS`` Especifica o número de processos a serem iniciados.
* ``-N NUM_NODOS`` Especifica que deverão ser alocados pelo menos NUM_NODOS nodos para a execução do job, ou seja, cada nodo vai executar NUM_PROCESSOS dividido por NUM_NODOS.
* ``–job-name=NOME`` Especifica o nome do Job que será executado. Este nome irá aparecer juntamente com o id do job na listagem de jobs do sistema.
* ``-e`` Especifica o redirecionamento do stderr. Exemplo:
``-e arquivoErros.txt``
* ``-o`` Especifica o redirecionamento do stdout. Caso -e não tenha sido especificado, stderr também será enviado para o arquivo especificado. Exemplo:
``-o arquivoSaida.txt`` ou ``--output arquivoSaida.txt``
Comando *srun*
==============
| O comando ``srun`` submete um *job* para o escalanodador, por padrão esse comando é bloqueante. A sintaxe do comando é:
| ``srun executavel``
Exemplo: Execução simples do *srun*
-----------------------------------
O exemplo submete o programa ``/cluster/tests/omp/omp`` para fila de execução do cluster e será executado quando tiver recursos disponíveis.
.. code-block:: console
testem@c3hpc:~$ srun /cluster/tests/omp/omp
Missing arguments
Usage: /cluster/tests/omp/omp [-n|--nprocs] <cpus> [-t|--time] <time>
Examples:
Example 1: short options: To Execute program with 4 threads during 10 seconds:
/cluster/tests/omp/omp -n 4 -t 10
Example 2: long options: To Execute program with 8 threads during 15 seconds:
/cluster/tests/omp/omp --nprocs 8 --time 15
srun: error: node4: task 0: Exited with exit code 2
testem@c3hpc:~$ srun /cluster/tests/omp/omp --nprocs 4 -t 4
Time 4 Nproc 4
count: 258531857
count: 260249707
count: 262771821
count: 262113384
testem@c3hpc:~$
| Para especificar a quantidade de recurso que o *job* vai utilizar passe como argumentos antes do programa.
| ``srun <argumentos do srun> executavel``
Exemplo: Execução com argumentos *srun*
---------------------------------------
No exemplo abaixo, o executável é um programa em *openMP* que lança 4 threads, mas o srun só disponibiliza duas threads para ser executado. Portanto para que as quatros threads tenham aceso a 4 nucleo de processamento é necessário passar o argumento ``--cpus-per-task 4``.
.. code-block::
testem@c3hpc:~$ srun --cpus-per-task 2 --mem 16G --partition maratona /cluster/tests/omp/omp --nprocs 4 -t 60
Time 60 Nproc 4
count: 430357224
count: -63444304
count: -21866144
count: -33171848
testem@c3hpc:~$
Comando *sbatch*
================
| O comando *sbatch* recebe como argumento um arquivo com as especificações do *jobs* que será executado. Sbatch é Uma opção mais comum é a utilização de um script, que contém as informações sobre o jobs que serão executados. No script, as opções de execução podem ser definidas utilizando-se o prefixo ``#SBATCH`` antes da opção.
| ``#SBATCH --time=1``
Abaixo, um exemplo de script que roda a aplicação “meuPrograma” que está dentro do diretório bin. A aplicação irá executar por no máximo 7 dias e é solicitado 1 nodo para a execução.
.. code-block:: bash
#!/bin/sh
#SBATCH -p 7d
#SBATCH -t 7-00:00:00
#SBATCH -n 1
srun $HOME/meuPrograma
| Para submeter o script, salve-o como meuscript.sh, e execute-o utilizando o comando sbatch. Muitos dos parâmetros do comando srun também são válidos para o sbatch. Os parâmetros passados ao sbatch irão sobrescrever os parâmetros existentes dentro do script sendo executado. Exemplo do comando:
| ``sbatch -o saida.txt meuscript.sh``
Modelo de arquivo *sbatch*
---------------------------
.. code-block:: bash
#!/bin/bash
#SBATCH -t 1-10:00:00
#SBATCH --cpus-per-task=NUM_CPUS_POR_PROCESSO
#SBATCH -o ARQUIVO_DE_SAIDA
#SBATCH --job-name=NOME_JOB
#SBATCH -p PARTICAO_ONDE_SERA_EXECUTADO
#SBATCH -n NUM_DE_PROCESSOS
#SBATCH -N NUM_NODOS_NECESSARIOS
srun $HOME/meuPrograma parametro1Programa parametro2Programa
| É possível sobrescrever os valores que estão no scripts pela linha de comando. Exemplo:
| ``sbatch -o saida.txt -t 5-00:00:00 meuscript.sh``
| Note que o comando acima sobrescreve o parâmetro -t que já está presente no meuscript.sh. Isso fará com que o parâmetro no meuscript.sh seja ignorado, sendo assim, ao executar a linha acima, o tempo limite para a execução será de 5 dias. No entanto, recomenda-se que todos os parâmetros estejam dentro do script e que estes não sejam sobrecarregados pelo sbatch para facilitar a localização de erros e múltiplas execuções de um mesmo script.
Cancelando *jobs*
=================
| Para cancelar um job que está rodando ou que está na fila para execução, utilize o comando scancel. Modo de uso:
| ``scancel jobId``
.. note::
O **jobid** pode ser obitido através do comando **squeue**
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment