IT wiki

VU MIF STSC

User Tools

Site Tools


hpc

Skirtumai

Čia matote skirtumus tarp pasirinktos versijos ir esamo dokumento.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
hpc [2022/03/29 09:03] – [Programinė įranga] rolnashpc [2024/02/21 12:50] (esamas) – [Singularity] rolnas
Linija 16: Linija 16:
 ====== Programinė įranga ====== ====== Programinė įranga ======
  
-**main** ir **gpu** yra instaliuota [[https://docs.qlustar.com/Qlustar/11.0/HPCstack/hpc-user-manual.html|Qlustar 11]] operacinė sistema (OS) su Linux branduoliu. Ji yra sukurta Ubuntu 18.04 LTS pagrindu. **power** yra instaliuota Ubuntu 18.04 LTS.+**main** ir **gpu** yra instaliuota [[https://docs.qlustar.com/Qlustar/12.0/HPCstack/hpc-user-manual.html|Qlustar 12]] operacinė sistema (OS) su Linux branduoliu. Ji yra sukurta Ubuntu 20.04 LTS pagrindu. **power** yra instaliuota Ubuntu 18.04 LTS. Deja šiuo metu **power** dalis neveikia.
  
 Instaliuotų OS paketų sąrašą galite pasitikrinti su komanda ''dpkg -l'' (prisijungimo mazge **hpc** arba **power** mazguose). Instaliuotų OS paketų sąrašą galite pasitikrinti su komanda ''dpkg -l'' (prisijungimo mazge **hpc** arba **power** mazguose).
 +
 +===== Singularity =====
  
 Su komanda [[https://sylabs.io/guides/3.2/user-guide/index.html|singularity]] galima pasinaudoti jau paruoštomis konteinerių failų kopijomis kataloguose ''/apps/local/hpc'', ''/apps/local/nvidia'', ''/apps/local/intel'', ''/apps/local/lang'' arba pačiam atsisiųsti iš singularity ir docker internetinių katalogų. Pasinaudojus MIF cloud paslauga galima susikurti ir savo singularity konteinerius. Su komanda [[https://sylabs.io/guides/3.2/user-guide/index.html|singularity]] galima pasinaudoti jau paruoštomis konteinerių failų kopijomis kataloguose ''/apps/local/hpc'', ''/apps/local/nvidia'', ''/apps/local/intel'', ''/apps/local/lang'' arba pačiam atsisiųsti iš singularity ir docker internetinių katalogų. Pasinaudojus MIF cloud paslauga galima susikurti ir savo singularity konteinerius.
Linija 25: Linija 27:
 <code shell> <code shell>
 $ singularity build --sandbox /tmp/python docker://python:3.8 $ singularity build --sandbox /tmp/python docker://python:3.8
-$ singularity exec -w /tmp/python pip install paketas+$ mkdir ~/workdir 
 +$ singularity exec -H ~/workdir:$HOME -w /tmp/python pip install paketas
 $ singularity build python.sif /tmp/python $ singularity build python.sif /tmp/python
 $ rm -rf /tmp/python $ rm -rf /tmp/python
 </code> </code>
 +
 +Tam kad pasinaudoti tokiu konteineriu, patariama (kad nesusikirstų su esamais python paketais namų kataloge) - pakeisti jame namų katalogą.
 +<code shell>
 +$ mkdir ~/workdir
 +$ singularity exec -H ~/workdir:$HOME python.sif python3 ...
 +</code>
 +
 Analogiškai galima pasinaudoti R, Julia ar kitais konteineriais, kuriuose paketams instaliuoti nereikia naudotojo root teisių. Analogiškai galima pasinaudoti R, Julia ar kitais konteineriais, kuriuose paketams instaliuoti nereikia naudotojo root teisių.
  
-Jeigu norima papildyti singularity kontainerį OS paketais, tam reikia root/superuser teisių. Su fakeroot jas simuliuojame, o jam reikalingas bibliotekas kataloge ''/usr/lib/x86_64-linux-gnu/libfakeroot'' prikabiname į konteinerį, pvz:+Jeigu reikia papildyti singularity kontainerį OS paketais, tam reikia root/superuser teisių. Su fakeroot jas simuliuojame, o jam reikalingą biblioteką ''libfakeroot-sysv.so'' kopijuojame į konteinerį, pvz:
 <code shell> <code shell>
-$ singularity build --sandbox /tmp/python docker://ubuntu:18.04+$ singularity build --sandbox /tmp/python docker://ubuntu:20.04
 $ cp /libfakeroot-sysv.so /tmp/python/ $ cp /libfakeroot-sysv.so /tmp/python/
 $ fakeroot -l /libfakeroot-sysv.so singularity exec -w /tmp/python apt-get update $ fakeroot -l /libfakeroot-sysv.so singularity exec -w /tmp/python apt-get update
Linija 42: Linija 52:
 $ rm -rf /tmp/python $ rm -rf /tmp/python
 </code> </code>
 +
 +===== Hadoop =====
  
 Kataloge ''/apps/local/bigdata'' yra paruošti scenarijai pasileisti savo **hadoop** užduotis pasinaudojant [[https://github.com/LLNL/magpie|Magpie]] rinkiniu. Kataloge ''/apps/local/bigdata'' yra paruošti scenarijai pasileisti savo **hadoop** užduotis pasinaudojant [[https://github.com/LLNL/magpie|Magpie]] rinkiniu.
 +
 +===== JupyterHub =====
  
 Su [[https://hpc.mif.vu.lt/hub/|JupyterHub]] galite interneto naršyklės pagalba vykdyti skaičiavimus su python komandų eilute ir pasinaudoti [[https://jupyter.org|JupyterLab]] aplinka. Jeigu savo namų kataloge instaliuosite savo JupyterLab aplinką, tai reikia instaliuoti papildomai ''batchspawner'' paketą - tada jums startuos jūsų aplinką, pvz: Su [[https://hpc.mif.vu.lt/hub/|JupyterHub]] galite interneto naršyklės pagalba vykdyti skaičiavimus su python komandų eilute ir pasinaudoti [[https://jupyter.org|JupyterLab]] aplinka. Jeigu savo namų kataloge instaliuosite savo JupyterLab aplinką, tai reikia instaliuoti papildomai ''batchspawner'' paketą - tada jums startuos jūsų aplinką, pvz:
  
 <code shell> <code shell>
-$ python3.-m pip install --upgrade pip setuptools wheel +$ python3.-m pip install --upgrade pip setuptools wheel 
-$ python3.-m pip install --ignore-installed batchspawner jupyterlab+$ python3.-m pip install --ignore-installed batchspawner jupyterlab
 </code> </code>
  
Linija 59: Linija 73:
 ====== Registracija ====== ====== Registracija ======
  
-PST gali naudotis tik registruoti VU MIF kompiuterių tinklo naudotojai. Esami **VU MIF tinklo naudotojai** PST gali naudotis **be papildomos registracijos**.+  * **VU MIF tinklo naudotojams** PST galima naudotis be papildomos registracijos, jei užtenka suteiktų resursų (mėnesio limitas - **500 CPU-h ir 60 GPU-h**). Išnaudojus šį limitą, galima prašyti suteikti jų daugiau užpildant [[https://forms.office.com/Pages/ResponsePage.aspx?id=ghrFgo1UykO8-b9LfrHQEidLsh79nRJAvOP_wV9sgmdURTNUUVhJTzFGOVFWR0Y1STZBMUFNRE4yRy4u|ITAPC paslaugų užsakymo formą]]
  
-Registracijai reikia užpildyti [[http://mif.vu.lt/itapc#paslaug%C5%B3-u%C5%BEsakymas|ITAPC paslaugų užsakymo formą]] ir pateikti ten nurodytu adresuParaišką patenkinussuteikiamas VU MIF kompiuterių tinklo naudotojo vardas. Jei esate VU darbuotojas ar studentas ir registracijos metu nurodėte savo VU el. pašto adresą. Tada įvesti savo pradinį slaptažodį, galite per [[https://mif.vu.lt/passwd2|pamiršto slaptažodžio]] pakeitimo procedūrą, naudodami [[https://id.vu.lt|VU E.tapatybės]] duomenis. Kitu atveju teks atvykti į VU MIF Didlaukio g. 47, 302/304 kab. darbo metu, dėl tikslaus laiko galite pasitikslinti tel. 8 5219 5005 arba 8 5219 5006.+  * **VU kompiuterių tinklo naudotojams** - paslaugoms gauti turite užpildyti [[https://forms.office.com/Pages/ResponsePage.aspx?id=ghrFgo1UykO8-b9LfrHQEidLsh79nRJAvOP_wV9sgmdURTNUUVhJTzFGOVFWR0Y1STZBMUFNRE4yRy4u|ITAPC paslaugų užsakymo formą]]. Patvirtinus paraišką, [[https://hpc.mif.vu.lt|Waldur portale]] turite susikurti savo paskyrą. Daugiau informacijos skaitykite [[waldur|čia]].
  
-Su suteiktu (pasirinktu) naudotojo vardu ir savo įvestu slaptažodžiu įgyjama teisė jungtis prie serverio **uosis.mif.vu.lt**, VU MIF mokymo klasių ir dalies VU MIF darbo vietų kompiuterių. +  * **Kitiems naudotojams (ne VU bendruomenės nariams)** - paslaugoms gauti turite užpildyti [[https://forms.office.com/Pages/ResponsePage.aspx?id=ghrFgo1UykO8-b9LfrHQEidLsh79nRJAvOP_wV9sgmdUMDE1QUo3Slo3UVYwTjM4TDMyTEdZT0tSNi4u|ITAPC paslaugų užsakymo formą]]. Patvirtinus paraiškąturite atvykti adresu VU MIF Didlaukio g. 47, 302/304 kab. darbo metu, prisijungimo duomenims gauti. Dėl tikslaus laiko būtina susitarti tel. 8 5219 5005 arba 8 5219 5006Gavus duomenis [[https://hpc.mif.vu.lt|Waldur portale]] turite susikurti savo paskyrą. Daugiau informacijos skaitykite [[waldur|čia]].
- +
-Adresu [[https://hpc.mif.vu.lt|Waldur]] yra savitarnos portalas, kur su savo universiteto (per **eduGAIN** arba **LITNET**) prisijungimu galima pačiam susikurti **HPC** prisijungimą. Daugiau info apie tai [[waldur|čia]].+
  
 ====== Prisijungimas ====== ====== Prisijungimas ======
Linija 71: Linija 83:
 Norint prisijungti prie **PST** reikia naudoti SSH programas (ssh, putty, winscp, mobaxterm) ir Kerberos arba SSH raktų autentikaciją. Norint prisijungti prie **PST** reikia naudoti SSH programas (ssh, putty, winscp, mobaxterm) ir Kerberos arba SSH raktų autentikaciją.
  
-Jeigu naudojate Kerberos:+Jeigu naudojate **Kerberos**:
  
-  * Prisijungiate į Linux aplinką VU MIF klasėje arba viešame terminale savo VU MIF naudotojo vardu ir slaptažodžiu +  * Prisijunkite į Linux aplinką VU MIF klasėje arba viešame terminale su savo VU MIF naudotojo vardu ir slaptažodžiu 
-  *  **arba** su ssh ar putty programa prisijungiate į **uosis.mif.vu.lt** savo VU MIF naudotojo vardu ir slaptažodžiu. +  *  **arba** su ssh ar putty programa prisijunkite į **uosis.mif.vu.lt** su savo VU MIF naudotojo vardu ir slaptažodžiu. 
-  * Su komanda **klist** patikrinkite ar turite galiojantį Kerberos raktą (ticket). Jei rakto nėra arba jo galiojimo laikas pasibaigęs, tai reikia įvykdyti komandą **kinit**. +  * Su komanda **klist** patikrinkitear turite galiojantį Kerberos raktą (ticket). Jei rakto nėra arba jo galiojimo laikas pasibaigęs, tai reikia įvykdyti komandą **kinit**. 
-  * Jungiatės į mazgą **hpc** su komanda **ssh hpc** (turi nereikalauti slaptažodžio).+  * Junkitės į mazgą **hpc** su komanda **ssh hpc** (turi nereikalauti slaptažodžio).
   * **Pirmą kartą** prisijungus turi praeiti **5min**, kad galėtumėte naudotis PST.   * **Pirmą kartą** prisijungus turi praeiti **5min**, kad galėtumėte naudotis PST.
  
-Jeigu naudojate SSH raktus (pvz: jei norite kopijuoti didelius failus):+Jeigu naudojate **SSH raktus** (pvz: jei norite kopijuoti didelius failus):
   * Jei neturite SSH raktų, instrukciją kaip juos susikurti Windows aplinkoje rasite **[[duk:ssh_key|čia]]**   * Jei neturite SSH raktų, instrukciją kaip juos susikurti Windows aplinkoje rasite **[[duk:ssh_key|čia]]**
   *     Prieš naudodami šį būdą, reikia bent kartą prisijungti su Kerberos ir PST failų sistemoje susikurti ''~/.ssh'' katalogą ir į jį įdėti savo **ssh viešąjį raktą** (OpenSSH formatu) į failą ''~/.ssh/authorized_keys''.   *     Prieš naudodami šį būdą, reikia bent kartą prisijungti su Kerberos ir PST failų sistemoje susikurti ''~/.ssh'' katalogą ir į jį įdėti savo **ssh viešąjį raktą** (OpenSSH formatu) į failą ''~/.ssh/authorized_keys''.
-  *     Prisijungiate su **ssh**, **sftp**, **scp**, **putty**, **winscp** ar kitomis **ssh** protokolą palaikančiomis programomis į **hpc.mif.vu.lt** su savo **ssh privačiu raktu** nurodydami savo VU MIF naudotojo vardą (turi nereikalauti prisijungimo slaptažodžio, bet gali reikalauti jūsų ssh privataus rakto slaptažodžio).+  *     Prisijunkite su **ssh**, **sftp**, **scp**, **putty**, **winscp** ar kitomis **ssh** protokolą palaikančiomis programomis į **hpc.mif.vu.lt** su savo **ssh privačiu raktu** nurodydami savo VU MIF naudotojo vardą (turi nereikalauti prisijungimo slaptažodžio, bet gali reikalauti jūsų ssh privataus rakto slaptažodžio).
  
 Pirmą kartą prisijungus jūs **negalėsite** paleisti **SLURM užduočių** per pirmąsias **5 minutes**. Po to jums bus automatiškai sukurtas **SLURM naudotojas** ir priskirti **resursų limitai**. Pirmą kartą prisijungus jūs **negalėsite** paleisti **SLURM užduočių** per pirmąsias **5 minutes**. Po to jums bus automatiškai sukurtas **SLURM naudotojas** ir priskirti **resursų limitai**.
Linija 99: Linija 111:
  
 ^Eilė (partition) ^Laiko limitas ^RAM    ^Pastabos| ^Eilė (partition) ^Laiko limitas ^RAM    ^Pastabos|
-^main             ^7d            ^7000MB  ^CPU telkinys| +^main             ^nėra          ^7900MB  ^CPU telkinys| 
-^gpu              ^48h           ^12000MB ^GPU telkinys| +^gpu              ^nėra          ^12700MB ^GPU telkinys| 
-^power            ^48h           ^2000MB  ^IBM Power9 telkinys|+^power            ^nėra          ^8000MB  ^IBM Power9 telkinys|
  
-Visose eilėse užduotims laiko limitas yra **2h**, jei jis nebuvo nurodytas, o lentelėje yra pateiktas maksimalus leidžiamas laiko limitas.+Visose eilėse užduotims laiko limitas yra **2h**, jei jis nebuvo nurodytas, o lentelėje yra pateiktas maksimalus leidžiamas laiko limitas (nėra).
  
 **RAM** stulpelyje yra pateikiamas kiekvienam rezervuotam **CPU** branduoliui skiriamas RAM kiekis. **RAM** stulpelyje yra pateikiamas kiekvienam rezervuotam **CPU** branduoliui skiriamas RAM kiekis.
Linija 122: Linija 134:
 </code> </code>
  
-Pateikus paraišką ITAPC ir gavus teigimą sprendimą, reikia susikurti naudotoją https://hpc.mif.vu.lt/. Sukurtas naudotojas bus įtrauktas į atitinkamą projektą, kuris turės tam tikrą kiekį resursų. Norint naudoti projekto resursus atliekant skaičiavimus reikia nurodyti savo alokacijos numerį. Žemiau pateiktas pavyzdys su nustatytu alokacijos parametru "alloc_xxxx_projektas".+Pateikus paraišką ITAPC ir gavus teigimą sprendimą, reikia susikurti naudotoją https://hpc.mif.vu.lt/. Sukurtas naudotojas bus įtrauktas į atitinkamą projektą, kuris turės tam tikrą kiekį resursų. Norint naudoti projekto resursus atliekant skaičiavimus reikia nurodyti savo alokacijos numerį. Žemiau pateiktas pavyzdys su nustatytu alokacijos parametru "alloc_xxxx_projektas" (taikomas ne VU MIF naudotojams, VU MIF naudotojai -- account parametro nurodyti neturi).
  
 <code shell mpi-test-job.sh> <code shell mpi-test-job.sh>
Linija 172: Linija 184:
 ====== Interaktyvios užduotys (SLURM) ====== ====== Interaktyvios užduotys (SLURM) ======
  
-Interaktyvias užduotis galima pradėti vykdyti su komanda srun:+Interaktyvias užduotis galima vykdyti su komanda srun:
  
 <code> <code>
Linija 192: Linija 204:
 $ ssh -X hpc $ ssh -X hpc
 $ srun --pty $SHELL $ srun --pty $SHELL
 +</code>
 +
 +**power** telkinyje interaktyvias užduotis galima vykdyti su
 +
 +<code>
 +$ srun -p power --mpi=none --pty $SHELL
 </code> </code>
  
Linija 233: Linija 251:
 </code> </code>
  
-Tai naudos visus paskirtus procesorius, pagal tai, kiek jų buvo užsakyta. Jeigu norima pasinaudoti mažiau, tai **mpirun** galima nurodyti parametrą ''-np kiekis''Nepageidaujama ilgesniam laikui naudoti mažiaunei rezervuota, nes neišnaudoti CPU lieka laisvi. Didesnį kiekį, nei rezervuotą, yra griežtai draudžiama naudoti, nes tai gali turėti įtakos kitų užduočių vykdymui.+Bus naudojami visi paskirti procesoriai pagal tai, kiek jų buvo užsakyta. Jeigu norite panaudoti mažiau, tai **mpirun** nurodykite parametrą ''-np kiekis''Nerekomenduojama ilgesnį laiką naudoti mažiau nei rezervuota, nes neišnaudoti CPU lieka laisvi.  
 + 
 +**DĖMESIO:** griežtai draudžiama naudoti didesnį kiekį CPU nei buvo rezervuotą, nes tai gali turėti įtakos kitų užduočių vykdymui.
  
 Daugiau apie instaliuotą **OpenMPI** yra [[https://www.open-mpi.org|OpenMPI]] puslapyje. Daugiau apie instaliuotą **OpenMPI** yra [[https://www.open-mpi.org|OpenMPI]] puslapyje.
Linija 241: Linija 261:
   * Prašome išnaudoti ne mažiau 50% užsakyto CPU kiekio.   * Prašome išnaudoti ne mažiau 50% užsakyto CPU kiekio.
   * Naudoti daugiau CPU, nei užsakyta, nepadidins efektyvumo, nes jūsų užduotis galės naudoti tik tiek CPU, kiek buvo užsakyta.   * Naudoti daugiau CPU, nei užsakyta, nepadidins efektyvumo, nes jūsų užduotis galės naudoti tik tiek CPU, kiek buvo užsakyta.
-  * Jeigu naudosite parametrą ''--mem=X'', tai užduotis gali rezervuoti daugiau **CPUs** proporcingai norimos atminties kiekiui. Pvz: užsakius ''--mem=14000'' eilėje **main**, bus užsakyti ne mažiau 2 CPUs, jei kiti parametrai nenurodo daugiau. Jeigu jūsų užduotis naudos mažiau, tai bus neefektyvus resursų naudojimas, be to tai gali veikti lėčiau, nes gali būti naudojama kitanei vykdančioprocesoriaus atmintis.+  * Jeigu naudosite parametrą ''--mem=X'', tai užduotis gali rezervuoti daugiau **CPUs** proporcingai norimos atminties kiekiui. Pvz: užsakius ''--mem=14000'' eilėje **main**, bus užsakyti ne mažiau 2 CPUs, jei kiti parametrai nenurodo daugiau. Jeigu jūsų užduotis naudos mažiau CPU, tai bus neefektyvus resursų naudojimas. Be to, gali veikti netgi lėčiau, nes gali būti naudojama kita (nei vykdančioprocesoriaus atmintis.
  
 ====== Resursų limitai ====== ====== Resursų limitai ======
  
-Jeigu jūsų užduotys nestartuoja su priežastimi **AssocGrpCPUMinutesLimit** arba **AssocGrpGRESMinutes**, +Jeigu jūsų užduotys nestartuoja dėl **AssocGrpCPUMinutesLimit** arba **AssocGrpGRESMinutes** priežasties
- tai pasitikrinkite ar užduotims dar liko neišnaudotų CPU/GPU resursų iš (mėnesiolimito.+ turite pasitikrinti, ar užduotims dar liko neišnaudotų CPU/GPU resursų iš mėnesio limito.
  
-Peržiūrėti kiek išnaudota resursų+//Pirmasis būdas peržiūrėtikiek išnaudota resursų://
  
 <code> <code>
Linija 254: Linija 274:
 </code> </code>
  
-kur **USERNAME** jūsų MIF naudotojo vardas, o **Start** ir **End** nurodo einamojo mėnesio pradžios ir pabaigos datas. Jas galima nurodyti ir kaip ''$(date +%m01)'' ir ''$(date +%m31)'', kas nurodo einamojo mėnesio pirmą ir paskutines dienas.+kur **USERNAME** jūsų MIF naudotojo vardas, o **Start** ir **End** nurodo einamojo mėnesio pradžios ir pabaigos datas. Jas galima nurodyti ir kaip ''$(date +%m01)'' ir ''$(date +%m31)'', kas nurodo einamojo mėnesio pirmą ir paskutinę dienas.
  
-Atkreipkite dėmesį, kad naudojimas pateikiamas minutėmis, o į valandas konvertuoti reikia dalinant iš 60.+**DĖMESIO**: naudojimas pateikiamas minutėmis, pateiktą skaičių reikia dalinti iš 60, gausite išnaudotas valandas.
  
-Kitas būdas pažiūrėti limitus ir jų naudojimą+//Antrasis būdas peržiūrėti, kiek naudota resursų://
  
 <code> <code>
Linija 264: Linija 284:
 </code> </code>
  
-kur **USERNAME** MIF naudotojo vardas. Arba parametre **-A** nurodyti tą sąskaitą (account)kurio naudojimą norima pažiūrėti. Duomenys pateikiami minutėmis**GrpTRESRaw** - kiek išnaudota. **GrpTRESMins** - koks yra limitas. **TRESRunMins** - likę resursai dar vis vykdomų užduočių.+kur **USERNAME** MIF naudotojo vardas. Arba parametre **-A** nurodyti tą paskyrą, kurios naudojimą reikia pažiūrėti. Duomenys yra pateikiami cpu/gpu minutėmis:  
 +  * **GrpTRESRaw** - kiek išnaudota.  
 +  * **GrpTRESMins** - koks yra limitas.  
 +  * **TRESRunMins** - likę resursai dar vis vykdomų užduočių.
  
 ====== Mokymų medžiaga ====== ====== Mokymų medžiaga ======
Linija 313: Linija 336:
   * [[http://mif.vu.lt/itapc#paslaug%C5%B3-u%C5%BEsakymas|ITAPC paslaugų užsakymas]]   * [[http://mif.vu.lt/itapc#paslaug%C5%B3-u%C5%BEsakymas|ITAPC paslaugų užsakymas]]
   * [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide (SLURM)]]   * [[https://slurm.schedmd.com/quickstart.html|Quick Start User Guide (SLURM)]]
-  * [[https://docs.qlustar.com/Qlustar/11.0/HPCstack/hpc-user-manual.html|HPC User Manual (Qlustar)]]+  * [[https://docs.qlustar.com/Qlustar/12.0/HPCstack/hpc-user-manual.html|HPC User Manual (Qlustar)]]
   * [[http://www.mcs.anl.gov/research/projects/mpi/|MPI standartas]]   * [[http://www.mcs.anl.gov/research/projects/mpi/|MPI standartas]]
-  * pagalba@mif.vu.lt - problemų su **HPC** registracija+  * [[pagalba@mif.vu.lt]] - problemų su **HPC** registracija
  
hpc.1648544620.txt.gz · Keista: 2022/03/29 09:03 vartotojo rolnas

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki