...
Conda je alat otvorenog koda koji služi za upravljanje paketima kao i sustav za stvaranje i upravljanje virtualnim okruženjima. Omogućuje jednostavno kreiranje i održavanje virtualnih okruženja Conda je stvorena za Python programe, ali i druge programske jezike te ne zahtijeva root ovlasti.
Na klasteru Isabella conda je dostupna u sklopu Miniconda paketa.
...
Code Block |
---|
$ module load conda |
Conda virtualna okruženja
Kreiranje
Za kreiranje novog virtualnog okruženja koristi se naredba conda create.
U sljedećem primjeru kreira se novo conda virtualno okruženje naziva py37 unutar kojeg se odmah instalira i Python verzija 3.7.
Ispis sadrži podatke o paketima koji će biti instalirani te upute o pokretanju kreiranog virtualnog okruženja.
Code Block |
---|
[tsmolcic@teran ~]$ module load conda
[tsmolcic@teran ~]$ conda create --name py37 python=3.7
Solving environment: done
...
## Package Plan ##
environment location: /home/tsmolcic/.conda/envs/py37
added / updated specs:
- python=3.7
The following packages will be downloaded:
package | build
---------------------------|-----------------
openssl-1.1.1c | h7b6447c_1 3.8 MB
...
wheel-0.33.4 | py37_0 39 KB
------------------------------------------------------------
Total: 43.1 MB
The following NEW packages will be INSTALLED:
ca-certificates: 2019.5.15-0
...
Proceed ([y]/n)? y
Downloading and Extracting Packages
openssl-1.1.1c | 3.8 MB | ########################################################################################################### | 100%
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > source activate py37
#
# To deactivate an active environment, use:
# > source deactivate
# |
Aktiviranje i korištenje
Sljedeća naredba pokreće prethodno kreirani virtual environment:
Code Block |
---|
[tsmolcic@teran ~]$ source activate py37 |
Naziv trenutno aktivnog virtualnog okruženja nalazi se u zagradama na početku svakog retka, a sljedeće naredbe potvrđuju da se radi o verziji Pythona unutar conda virtualnog okruženja:
Code Block |
---|
(py37) [tsmolcic@teran ~]$ which python
~/.conda/envs/py37/bin/python
(py37) [tsmolcic@teran ~]$ python --version
Python 3.7.3 |
Za pregled instaliranih paketa koristi se naredba:
Code Block |
---|
(py37) [tsmolcic@teran ~]$ conda list
# packages in environment at /home/tsmolcic/.conda/envs/py37:
#
# Name Version Build Channel
ca-certificates 2019.5.15 0
certifi 2019.6.16 py37_0
libedit 3.1.20181209 hc058e9b_0
... |
a za instalaciju novih paketa:
Code Block |
---|
(py37) [tsmolcic@teran ~]$ conda install numpy
Solving environment: done
## Package Plan ##
environment location: /home/tsmolcic/.conda/envs/py37
added / updated specs:
- numpy
The following packages will be downloaded:
package | build
---------------------------|-----------------
mkl_random-1.0.2 | py37hd81dba3_0 405 KB
numpy-base-1.16.4 | py37hde5b4d6_0 4.4 MB
numpy-1.16.4 | py37h7e9f1db_0 49 KB
------------------------------------------------------------
Total: 209.1 MB
The following NEW packages will be INSTALLED:
blas: 1.0-mkl
...
Proceed ([y]/n)? y
Downloading and Extracting Packages
mkl_random-1.0.2 | 405 KB | ########################################################################################################### | 100%
...
Preparing transaction: done
Verifying transaction: done
Executing transaction: done |
Info |
---|
Nisu svi Python paketi dostupni kao Conda paket. Međutim, unutar conda virtualnog okruženja, za instaliranje Python paketa može se koristiti i pip. |
Deaktiviranje
Deaktiviranje trenutno aktivnog okruženja obavlja se naredbom:
Code Block | ||
---|---|---|
| ||
(py37) [tsmolcic@teran ~]$ source deactivate
[tsmolcic@teran ~]$ module unload conda
[tsmolcic@teran ~]$ python --version
Python 2.7.5
[tsmolcic@teran ~]$ which python
/usr/bin/python |
Ispis dostupnih virtualnih okruženja
Popis dostupnih virtualnih okruženja može se dobiti naredbom:
Code Block |
---|
[tsmolcic@teran ~]$ conda env list
# conda environments:
#
base /apps/qiime2/miniconda3
qiime2-2019.1 /apps/qiime2/miniconda3/envs/qiime2-2019.1
qiime2-2019.4 /apps/qiime2/miniconda3/envs/qiime2-2019.4
py37 /home/tsmolcic/.conda/envs/py37
test-env /home/tsmolcic/.conda/envs/test-env |
Okruženja koja se nalaze su /apps/
direktoriju su instalirana od strane administratora klastera te su dostupna korisnicima, međutim korisnici nemaju mogućnost izmjena tih okruženja. Vlastita virtualna okruženja spremaju se u direktorij /home/$USER/.conda/envs/
te su vidljiva samo korisniku koji ih je kreirao.
Brisanje virtualnog okruženja
Brisanje postojećeg virtualnog okruženja obavlja se naredbom:
Code Block |
---|
[tsmolcic@teran ~]$ conda env remove --name py37 |
Primjer pokretanja posla
...
može pakirati i distribuirati software za bilo koji jezik (C libraries, R paketi, Java paketi...).
Conda u funkciji package manager-a pomaže korisniku u traženju i instaliranju različitih paketa. Ukoliko postoji paket/program koji zahtjeva drugačiju verziju Python-a od trenutno instalirane verzije na operativnom sistemu, Conda omogućava kreiranje odvojenog okruženja sa drugačijom verzijom Python-a.
Conda virtualno okruženje
Iako Python omogućava stvaranje i upravljanje virtualnim okruženjima, Conda virtualno okruženje ima neke prednosti. Glavni i preporučeni alat za upravljanje paketima u Python virtualnom okruženju je pip. Uporaba pip sustava je ograničena samo na Python pakete. Stvaranje virtualnog okruženja u Conda sustavu omogućava instalaciju svih paketa pa tako i korištenje pip alata kao alternativa Conda package manager-u.
Stvaranje virtualnog okruženja
Prije kreiranja virtualnog okruženja, potrebno je učitati conda-miniforge3 naredbom:
|
Virtualno okuženje stvara se naredbom conda create. Prilikom pozivanja naredbe potrebno je dodijeliti ime novog virtualnog okruženja zastavicom "-n" i verziju Python-a koja će se instalirati "python=x.y".
|
Ukoliko korisnik želi prilikom stvaranja novog virtualnog okruženja instalirati i određene pakete, moguće ih je navesti prilikom izvođenja naredbe create. Instalacija paketa moguća je i nakon stvaranja virtualnog okruženja.
|
Pregled kreiranih virtualnih okruženja moguće je vidjeti naredbom:
|
Aktivacija virtualnog okruženja izvodi se naredbama:
|
Command prompt pokazati će naziv aktivnog virtualnog okruženja:
|
Deaktivacija virtualnog okruženja:
|
Uklanjanje okruženja:
|
Conda kanali
Conda paketi dohvaćaju se sa različitih kanala - URL-a/adresa direktorija. Učitavanjem miniforge3 okoline, učitan je i kanal za pretraživanje paketa conda-forge. Conda-forge/miniforge je kreacija GitHub zajednice. Svi paketi instalirani preko conda forge kanala su Open Source tipa. Korisnik je u mogućnosti dodati još kanala za pretraživanje paketa kao npr. bioconda - kanal specijaliziran za Open Source software iz područje bioinformatike.
Glavni/default kanal Anaconda Inc.-a ne nalazi se na početnom popisu zbog aktualnih uvjeta korištenja tj. zbog mogućnosti kršenja istih.
Naredbe za pregled, dodavanje i brisanje kanala:
Popis učitanih kanala
|
Popis učitanih kanala sa prioritetima pretrage
|
Dodavanje kanala - sa najvećim prioritetom
|
Dodavanje kanala sa najnižim prioritetom ili promjena prioriteta postojećeg kanala na najniži
|
Uklanjanje kanala
|
Upravljanje paketima
Preporučeni način instalacije paketa/aplikacija u virtualnom okruženju je korištenjem conda upraviteljem tj. conda install naredbom.
|
Moguće je navesti više od jednog paketa koje će Conda instalirati, a naredbu je moguće detaljno modificirati nekom od dostupnih zastavica.
Ime virtualnog okruženja u kojem će se instalirati paket definira se zastavicom -n ili --name. Ako nije navedeno ime okruženja, paket će se instalirati u trenutno aktivnom virtualnom okruženju.
|
Conda install naredbom pokušati će se instalirati posljednja verzija navedenog paketa, a da bi se paket uspješno instalirao, moguće je da će se instalirati i dodatni paketi ili ažurirati već instalirani paketi. Ako se ažuriranje ostalih paketa želi spriječiti, potrebno je dodati zastavicu :
--freeze-installed
Ako se želi instalirati određena ili starija verzija aplikacije/paketa potrebno je navesti verziju:
|
Dostupne verzije i pakete moguće je pretraživati sa conda search naredbom. Search naredbom pretražiti će se učitani kanali i izlistati dostupne verzije paketa.
|
Dodatne naredbe za pregled, instalaciju, uklanjanje i ažuriranje paketa:
Naredba pokazuje sve instalirane pakete i njihove detalje u aktivnom virtualnom okruženju
|
Pretraga određenog paketa
|
Brisanje/deinstalacija paketa.
|
Ukoliko nije moguće instalirati paket/aplikaciju sa "conda install" naredbom moguće je služiti se "pip install" naredbom.
|
Conda update naredba ažurira pakete na zadnju kompatibilni verziju.
Ažuriranje navedenog paketa.
|
Ažuriranje cijelog aktivnog virtualnog okruženja (bez ažuriranja Python-a!).
|
Ažuriranje Python-a
|
Paralelno računanje
Paralelno računanje unutar virtualne okoline moguće je ukoliko je instaliran mpi4py paket. U vrijeme pisanja ovog teksta, mpi4py paket za python verziju 3.10 nije dostupan na conda-forge kanalu, ali ga je moguće instalirati pomoću pip paket upravitelja.
Instalacija mpi4py paketa unutar virtualnog okruženja
Conda Install
|
U slučaju instalacije pip upraviteljem preporučeno je da se učita/definira neki od postojećih MPI modula dostupnih na cluster-u (npr. mpi/openmpi41-x86_64).
Pip install
|
Primjer paralelnog računanja
Primjer se sastoji od dvije skripte. Skriptom testrun.sge definirati će se virtualna okolina, potrebni moduli (ukoliko su potrebni), broj jezgri za paralelizaciju kao i skripta koja će se paralelizirati (test.py). Sa naredbom mpirun pokrenuti će se isti broj instanci skripte test.py kao i broj zadanih jezgri za proračun (4). Za ispravno pokretanje ove skripte potrebna je instalacija numpy paketa i mpi4py u virtualnom okruženju.
Kada se program pokreće sa MPI-om, svi procesi su grupirani u komunikator (MPI.COMM_WORLD). Varijable komunikatora ne mjenjaju se nakon što je komunikator kreiran. Veličina komunikatora tj. zbroj svih procesa nosi naziv size. Svaki od procesa unutar komunikatora ima jedinstveni broj za identifikaciju - rank.
Kroz primjer paralelnog računanja stvoriti će se niz od 100 000 000 nasumičnih brojeva. Stvoreni niz podijeliti će se na 4 parcijalna niza koji će zatim biti podijeljeni svakom od stvorenih procesa. Svaki od procesa osrednjiti će parcijalni niz i vratiti vrijednost glavnom procesu za finalno osrednjavanje. Rezultat finalnog osrednjavanja trebao bi biti blizak broju 10.
Kreiranje okruženja i instalacija potrebnih paketa
|
testrun.sge
|
test.py
|
Podnošenje posla
|