-
Spackin käyttäminen ohjelmistojen asentamiseen Roihussa
Spackin käyttäminen ohjelmistojen asentamiseen Roihussa
Roihun tieteellistä ohjelmistopinoa ylläpidetään Spack-paketinhallinnalla. Tässä dokumentissa kuvataan, miten tavalliset käyttäjät voivat käyttää Spackia lisäohjelmistojen, kirjastojen ja sovellusten asentamiseen jo asennettujen ohjelmistojen lisäksi.
Tässä dokumentissa oletetaan, että komennot suoritetaan käyttäjän omassa ohjelmistoasennusten juurihakemistossa, joka sijaitsee yleensä polun /projappl/<project>/${USER} alla.
Tämän opastyyppisen dokumentaation lisäksi tutustu myös Spackin täydet tiedot. Esimerkiksi termi "environment" viittaa tässä dokumentissa nimenomaan Spack-ympäristöihin.
Työ kesken
Tämä osio on keskeneräinen. Osa vaiheista voi olla vanhentuneita, puutteellisia tai niitä ei ole täysin testattu nykyisessä Roihu-ympäristössä. Käytä varoen ja ilmoita havaitsemistasi ongelmista.
Milloin asentaa Spackilla
Spack-asennus on toimiva vaihtoehto "perinteisille" HPC-ohjelmistoille,
rinnakkaissovelluksille ja niiden tarvitsemille kirjastoille, erityisesti
silloin kun Spack-pakettireseptit ovat jo olemassa. Spackin käyttö on
vaihtoehto perinteiselle "manuaaliselle" asennukselle, moduulien lataamiselle,
sekä configure- tai cmake-komentojen ja make-komennon ajamiselle
sovellukselle ja sen riippuvuuksille.
Yleensä kontit ovat parempi lähestymistapa silloin, kun asennuksen tiedostomäärä kasvaa kymmeniin tuhansiin, mikä on usein tilanne esimerkiksi Python- ja R-ympäristöissä.
Mitä ohjelmistoja on saatavilla Spack-paketteina
Spack-paketteja voi hakea palvelusta
Spack Packages (uusimmat versiot), tai
suoraan Roihun hakemistosta
/appl/soft/spack/v2026_03/spack-packages/repos/spack_repo/builtin/packages,
joka sisältää lähes 9000 pakettimäärittelyä.
Spackin käyttöönotto
Aluksi alustetaan Spack. Tässä asetamme Spackin välimuistihakemiston väliaikaishakemistoon, mikä sopii kertaluonteisiin asennuksiin, ja eristämme Spackin järjestelmän ja käyttäjän konfiguraatiotasoista, jotta niiden asetukset eivät vuoda omaan kokoonpanoomme. Katso Paikallisen konfiguraation ohittaminen lisätietoja varten.
export SPACK_USER_CACHE_PATH=$TMPDIR/spack
export SPACK_DISABLE_LOCAL_CONFIG=true
source /appl/soft/spack/v2026_03/spack/share/spack/setup-env.sh
source /appl/soft/spack/v2026_03/spack/share/spack/bash/spack-completion.bash
Miten Spackin järjestelmäasennus on järjestetty ja mitä on jo asennettu
Spackin eri versiot on asennettu hakemistoon
/appl/soft/spack. Tätä kirjoitettaessa uusin asennettu
Spack-versio on hakemistossa /appl/soft/spack/v2026_03.
Vastaavat ydinympäristöt ja sovellusympäristöt (jotka on rakennettu ydinympäristöjen päälle) sijaitsevat hakemistoissa
missä $target_family on joko x86_64 tai aarch64, viitaten
suorittimen arkkitehtuuriin CPU- tai GPU-solmuilla.
Yleisesti ottaen ydinympäristöt tarjoavat hyvän perustan eli "upstream"- pakettiympäristön, jonka päälle voi rakentaa. Ydinympäristöt sisältävät kääntäjät ja yleisimmät kirjastot, kuten MPI-kirjastot, valmiiksi konfiguroituina tehokasta käyttöä varten.
Saatavilla olevat ympäristöt voi listata esimerkiksi komennolla
joka antaa (tätä kirjoitettaessa)
Ympäristön nimi antaa vihjeen siitä, mitä ympäristössä on saatavilla.
Esimerkiksi gcc152_ec sisältää GNU:n version 15.2 kääntäjäkokoelman
sekä yleisimmin käytetyt kirjastot, jotka on rakennettu tällä
kääntäjällä CPU-solmuja varten.
Upstream-ympäristön paketit voi listata esimerkiksi komennolla
spack -E -c 'upstreams:gcc152_ec:install_tree:/appl/soft/spack/core/v2026_03/x86_64/gcc152_ec/install_dir' find -l
joka antaa
-- linux-rhel9-x86_64 / %c=gcc@15.2.0 ---------------------------
vshzxn2 knem@1.1.4
-- linux-rhel9-x86_64 / no compilers ----------------------------
nsx4vac gcc@15.2.0 45if5qv glibc@2.34 jix3h7v lustre@2.14.0 aeadm2n rdma-core@54.0 fkinzg5 slurm@25.05.3
-- linux-rhel9-zen5 / %c,cxx,fortran=gcc@15.2.0 -----------------
2d66cws hdf5@1.14.6 qskucwe openblas@0.3.30 jtu4mle openmpi@5.0.10 ad53otu papi@7.2.0 msn34e2 parallel-netcdf@1.14.1
-- linux-rhel9-zen5 / %c,cxx=gcc@15.2.0 -------------------------
5jgdak6 berkeley-db@18.1.40 5huzpbm curl@8.18.0 ctjvy35 hwloc@2.4.1 gavswuq lz4@1.10.0 n2yix5u openssh@10.2p1 35almze ucx@1.20.0
bwi6e4z bison@3.8.2 qjlzhxn eigen@5.0.1 sa7jjuo icu4c@74.2 57nb6no m4@1.4.21 3a2xrgw openssl@3.6.1 siciate zlib-ng@2.3.3
niyho5a boost@1.88.0 m3d4hr2 expat@2.7.4 ro346yy krb5@1.22.2 b5ymicp mimalloc@3.2.7 be236m7 osu-micro-benchmarks@7.5.2 pvz4ljc zstd@1.5.7
dhosjnx c-blosc@1.21.6 bkrrw3k ffmpeg@7.1 5ddtnbo libaec@1.1.4 ezw6kfg ncurses@6.6 qvwhx54 python@3.14.3
dkj6m2a cmake@3.31.11 sgerwwx gettext@1.0 6neer47 libffi@3.5.2 zj62cb6 nghttp2@1.67.1 xjllls2 snappy@1.2.1
-- linux-rhel9-zen5 / %c,fortran=gcc@15.2.0 ---------------------
gafrwzb fftw@3.3.10 ilpb6cd netcdf-fortran@4.6.2 lagqyzt netlib-lapack@3.12.1 stnq2qp netlib-scalapack@2.2.2
-- linux-rhel9-zen5 / %c=gcc@15.2.0 -----------------------------
w5oytoe alsa-lib@1.2.15.3 rd2uuxx gdbm@1.26 kcjhrtc libevent@2.1.12 ddibcjq libxcrypt@4.5.2 ejivk2i perl@5.42.0 rzwegeu tar@1.35
os67qlb automake@1.18.1 3jmx5cd gmake@4.4.1 anayviw libiconv@1.18 6mr7zcy libxml2@2.15.1 b5e6x6u pigz@2.8 it55vd4 util-linux-uuid@2.41
an5rzrc bzip2@1.0.8 lsilpvy gsl@2.8 i3l5zsd libmd@1.1.0 jwkph32 nasm@2.16.03 btxv56s pkgconf@2.5.1 vk7ckqw xz@5.8.2
72jfleb diffutils@3.12 dl3mtdk libbsd@0.12.2 qurnpw5 libsigsegv@2.15 pcod7dd netcdf-c@4.9.3 lf5ljls readline@8.3
p4i5zpo findutils@4.10.0 vbo25pf libedit@3.1-20240808 dbbnpoy libtool@2.5.4 zvxjta5 numactl@2.0.19 3m5q6wh sqlite@3.51.2
-- linux-rhel9-zen5 / %cxx=gcc@15.2.0 ---------------------------
t4kg5zu kokkos@5.0.2
-- linux-rhel9-zen5 / no compilers ------------------------------
5e4345x autoconf@2.72 iglv3xy compiler-wrapper@1.0 uaq7tuq gcc-runtime@15.2.0
==> 75 installed packages
Paketin nimen edessä oleva seitsemän merkin merkkijono on tiiviste, jota voidaan käyttää viittaamaan tiettyyn konkretisoituun määrittelyyn tai asennukseen.
Oman ympäristön määrittäminen asennuksia varten
Yleinen suunnitelma on luoda oma ympäristö, joka käyttää mahdollisimman paljon järjestelmän ydinympäristöön (upstream) jo asennettuja paketteja ja asentaa puuttuvat paketit omaan asennuspuuhun. Useat ympäristöt voivat käyttää samoja asennuspuita.
Perusasetukset eri omille ympäristöille ovat hyvin samankaltaiset. Asetan shell-muuttujan
${upstream} osoittamaan valittuun upstream-ydinympäristöön ja käytän
Spackin omaa muuttujaa,
kuten ${target_family}, jonka Spack laajentaa tulkitessaan omia konfiguraatiotiedostojaan.
Esimerkkien lainausmerkit estävät shelliä laajentamasta Spackin omia muuttujia.
Komennot
luovat ympäristön määrittävän tiedoston ensimmäisen version,
environments/my_gcc152_ec/spack.yaml, ja saavat seuraavat spack-komennot
toimimaan tämän ympäristön sisällä. Jos aiot asentaa ympäristöön useita
versioita samoista paketeista, harkitse vaihtoehdon --without-view lisäämistä
komentoon
spack env activate.
Seuraavaksi määritämme ympäristön konfiguraation asettamalla
- upstream-ympäristön
- oman ympäristömme varsinaisen ohjelmistoasennusten juurihakemiston sijainnin
- lähdekoodivälimuistin hakemiston (oletushakemistoon tavallisilla käyttäjillä ei ole kirjoitusoikeutta)
- litistämme asennuspuun oletushierarkian ja käytämme lyhyitä tiivisteitä
spack config add upstreams:${upstream}:install_tree:/appl/soft/spack/core/v2026_03/'${target_family}'/${upstream}/install_dir
spack config add config:install_tree:root:$PWD/my_${upstream}-install
spack config add config:source_cache:source-cache
spack config add 'config:install_tree:projections:all:"{name}-{version}-{hash:7}"'
Kun aktiivinen Spack-ympäristö on käytössä, nämä komennot muuttavat vain ympäristön määrittelytiedostoa, tässä tapauksessa
environments/my_gcc152_ec/spack.yaml.
Vaihtoehtoisesti voit tehdä muutokset muokkaamalla tiedostoa suoraan.
Viimeinen vaihe oman ympäristön konfiguroinnissa on määrittää, mitä ympäristöön asennetaan:
Spackin terminologiassa yllä oleva eccodes on
määrittely,
joka määrittää asennettavan ohjelmiston tarkan
kokoonpanon. Tässä vaiheessa eccodes on tietenkin vielä melko abstrakti.
Seuraavaksi tarkennamme sitä.
Määrittelyn tarkentaminen ja asentaminen
Usein oletusarvot ovat kunnossa, mutta konkretisoitu määrittely kannattaa aina tarkistaa ennen asennusta. Komento
näyttää konkretisoidun määrittelyn
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v2.2/blobs/sha256:2010a2a50b9620c2bda7c5fa4e9ce137a115dbba35094857fecc819d9a00a789
==> Fetching https://ghcr.io/v2/spack/bootstrap-buildcache-v2.2/blobs/sha256:31f1649728e2d58902eb62d1c2e37b1cfc73e007089322a17463b3cb5777cb98
==> Installing "clingo-bootstrap@=spack~apps~docs+ipo+optimized+python+static_libstdcpp build_system=cmake build_type=Release commit=2a025667090d71b2c9dce60fe924feb6bde8f667 generator=make patches:=bebb819,ec99431 platform=linux os=centos7 target=x86_64" from a buildcache
==> Concretized 1 spec:
- bc5ld7m eccodes@2.45.0+aec~fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools build_system=cmake build_type=Release extra_definitions:=none generator=make jp2k=openjpeg platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] zwnvbda ^cmake@3.31.11~doc+ncurses+ownlibs~qtgui build_system=generic build_type=Release platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] lrippm6 ^curl@8.18.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs:=shared,static tls:=openssl platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] 45i4fsq ^nghttp2@1.67.1 build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] wxvpbhd ^diffutils@3.12 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] 3n6hlmz ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] gouvek3 ^openssl@3.6.1~docs+shared build_system=generic certs=system platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] lo2oqga ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] osujnxv ^berkeley-db@18.1.40+cxx~docs+stl build_system=autotools patches:=26090f4,b231fcc platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] tmpzrkl ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] nc55qc5 ^gdbm@1.26 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] lr4bql4 ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] 5psyrcf ^pkgconf@2.5.1 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[e] i7ouzvl ^gcc@15.2.0+binutils+bootstrap~graphite+libsanitizer~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran,jit' platform=linux os=rhel9 target=x86_64
[^] yi5ecvd ^gcc-runtime@15.2.0 build_system=generic platform=linux os=rhel9 target=zen5
[^] kztfkls ^ncurses@6.6~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] turbkrl ^zlib-ng@2.3.3+compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] iglv3xy ^compiler-wrapper@1.0 build_system=generic platform=linux os=rhel9 target=zen5
[e] fx7oixv ^gcc@15.2.0+binutils+bootstrap~graphite+libsanitizer~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=rhel9 target=x86_64
- szq7ch3 ^gcc-runtime@15.2.0 build_system=generic platform=linux os=rhel9 target=zen5
[e] 45if5qv ^glibc@2.34 build_system=autotools platform=linux os=rhel9 target=x86_64
[^] jvnmnyr ^gmake@4.4.1~guile build_system=generic platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] elazd5o ^libaec@1.1.4~ipo+shared build_system=cmake build_type=Release generator=make platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
- szh7ud6 ^openjpeg@2.3.1~codec~ipo build_system=cmake build_type=Release generator=make platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
==> Updating view at /users/jlento/user-spack/environments/mygcc152_ec/.spack-env/view
Konkretisoidussa määrittelyssä on muutamia keskeisiä asioita, jotka pitää tarkistaa. Ensinnäkin
meidän pitää tarkistaa, että variantit (käännösasetukset) ovat sellaiset kuin
haluamme. eccodes-tapauksessa voimme verrata nykyistä määrittelyä
eccodes@2.45.0+aec~fortran~ipo~memfs~netcdf~openmp~png~pthreads+shared~tools build_system=cmake build_type=Release extra_definitions:=none generator=make jp2k\
=openjpeg platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
Mahdissa olevan eccodes-asennuksen määrittelyyn
eccodes@2.34.0+aec+fortran~ipo+memfs~netcdf+openmp+png~pthreads+shared~tools build_system=cmake build_type=Release extra_definitions=none generator=make jp2k=jasper
Huomaamme versionumeron päivityksen, mikä on hyvä, mutta sitten huomaamme,
että variantit fortran (Fortran-rajapinta), memfs (osa määrittelydatasta
kirjastossa/muistissa pienten levyllä olevien tiedostojen sijaan),
openmp (säietuki), png on merkitty ~-merkillä, mikä tarkoittaa, että
näitä konfiguraatiovalintoja (variantteja) ei ole asetettu. Lisäksi
haluamme ottaa mukaan variantin tools, joka rakentaa kirjaston mukana
komentorivityökalut. Viimeisenä huomaamme, että pakkauskirjastona on
jasperin sijasta openjpeg (sopiiko tämä?).
Päivitetään varianttitiedot ja konkretisoidaan uudelleen (komennon tuloste
on jätetty pois, koska se on samanlainen kuin aiempi spack concretize-komennon tuloste):
spack change 'eccodes@2.45.0+aec+fortran~ipo+memfs~netcdf+openmp+png~pthreads+shared+tools'
spack concretize
Nyt variantti on oikein. Seuraavaksi tarkistamme, että Spack todella käyttää
upstream-ympäristöön jo asennettuja paketteja.
Tieto on konkretisoidun määrittelyn ensimmäisessä sarakkeessa. Merkintä -
tarkoittaa, että paketti asennetaan, [^]
kertoo, että Spack käyttää jo olemassa olevaa upstream-asennusta, ja
[e] tarkoittaa "external", joka on määritelty erikseen konfiguraatiossa. Tässä
kaikki näyttää hyvältä, ja voimme jatkaa asennukseen
Note
Komento spack concretize lisää automaattisesti kääntäjät tiedostoon spack.yaml,
sen perusteella mitä se löytää nykyisestä ympäristöstä. Tämä toimii oikein,
jos parhaillaan ladattu kääntäjämoduuli, tässä gcc/15.2.0, vastaa
upstream-ympäristöä.
Mitä tehdä, jos konkretisointi ei käytä upstream-riippuvuutta
Warning
Tämä osio on vielä vahvasti kehitysvaiheessa. Vaihe spack install
epäonnistuu. Spack-paketin rakennusmäärittelytiedosto tarvitsee pienen päivityksen
tukeakseen gcc-versiota 15.
Joskus konkretisoinnissa on --merkinnällä varustettuja riippuvuuspaketteja,
vaikka ne olisivat saatavilla upstreamissa. eccodes-paketin konkretisointi käytti
upstreamiin asennettuja paketteja, joten kokeillaan asentaa jotain
hieman haastavampaa:
- rfhap2d vasp@6.5.1~cuda+fftlib+hdf5~libbeef~libxc+openmp+shmem~wannier90 build_system=makefile platform=linux os=rhel9 target=zen5 %c,cxx,fortran=gcc@15.2.0
[^] iglv3xy ^compiler-wrapper@1.0 build_system=generic platform=linux os=rhel9 target=zen5
- bska4tv ^fftw@3.3.10+mpi+openmp~pfft_patches+shared build_system=autotools patches:=872cff9 precision:=double,float platform=linux os=rhel9 target=zen5 %c,fortran=gcc@15.2.0
[e] jzf6h3h ^gcc@15.2.0+binutils+bootstrap~graphite+libsanitizer~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran' platform=linux os=rhel9 target=x86_64
- qgv5zle ^gcc-runtime@15.2.0 build_system=generic platform=linux os=rhel9 target=zen5
[e] 45if5qv ^glibc@2.34 build_system=autotools platform=linux os=rhel9 target=x86_64
[^] 3jmx5cd ^gmake@4.4.1~guile build_system=generic platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[e] nsx4vac ^gcc@15.2.0+binutils+bootstrap~graphite+libsanitizer~mold~nvptx~piclibs~profiled~strip build_system=autotools build_type=RelWithDebInfo languages:='c,c++,fortran,jit' platform=linux os=rhel9 target=x86_64
[^] uaq7tuq ^gcc-runtime@15.2.0 build_system=generic platform=linux os=rhel9 target=zen5
- qlknyrh ^hdf5@1.14.6~cxx+fortran~hl~ipo~java~map+mpi+shared~subfiling~szip~threadsafe+tools api=default build_system=cmake build_type=Release generator=make platform=linux os=rhel9 target=zen5 %c,fortran=gcc@15.2.0
[^] dkj6m2a ^cmake@3.31.11~doc+ncurses+ownlibs~qtgui build_system=generic build_type=Release platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] 5huzpbm ^curl@8.18.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs:=shared,static tls:=openssl platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] zj62cb6 ^nghttp2@1.67.1 build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] ezw6kfg ^ncurses@6.6~symlinks+termlib abi=none build_system=autotools patches:=7a351bc platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] btxv56s ^pkgconf@2.5.1 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] siciate ^zlib-ng@2.3.3+compat+new_strategies+opt+pic+shared build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
- yswx35z ^netlib-scalapack@2.2.2~ipo~pic+shared build_system=cmake build_type=Release generator=make platform=linux os=rhel9 target=zen5 %c,fortran=gcc@15.2.0
[^] qskucwe ^openblas@0.3.30~bignuma~consistent_fpcsr+dynamic_dispatch+fortran~ilp64+locking+pic+shared build_system=makefile symbol_suffix=none threads=openmp platform=linux os=rhel9 target=zen5 %c,cxx,fortran=gcc@15.2.0
- zxmpyf5 ^openmpi@5.0.10+atomics~cuda~debug+fortran~gpfs~internal-hwloc~internal-libevent~internal-pmix~ipv6~java~lustre~memchecker~openshmem~rocm~romio+rsh~static~two_level_namespace+vt+wrapper-rpath build_system=autotools fabrics:=none romio-filesystem:=none schedulers:=none platform=linux os=rhel9 target=zen5 %c,cxx,fortran=gcc@15.2.0
[^] 5e4345x ^autoconf@2.72 build_system=autotools platform=linux os=rhel9 target=zen5
[^] 57nb6no ^m4@1.4.21+sigsegv build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] 72jfleb ^diffutils@3.12 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] qurnpw5 ^libsigsegv@2.15 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] os67qlb ^automake@1.18.1 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] ctjvy35 ^hwloc@2.4.1~cairo~cuda~gl~level_zero~libudev+libxml2~netloc~nvml~opencl~pci~rocm build_system=autotools libs:=shared,static platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] 6mr7zcy ^libxml2@2.15.1+pic~python+shared build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] vk7ckqw ^xz@5.8.2~pic build_system=autotools libs:=shared,static platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] kcjhrtc ^libevent@2.1.12+openssl build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] dbbnpoy ^libtool@2.5.4 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] p4i5zpo ^findutils@4.10.0 build_system=autotools patches:=440b954 platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] sgerwwx ^gettext@1.0+bzip2+curses+git~libunistring+libxml2+pic+shared+tar+xz build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] rzwegeu ^tar@1.35 build_system=autotools zip=pigz platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] b5e6x6u ^pigz@2.8 build_system=makefile platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] zvxjta5 ^numactl@2.0.19 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] n2yix5u ^openssh@10.2p1+gssapi build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] ro346yy ^krb5@1.22.2+shared build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] bwi6e4z ^bison@3.8.2~color build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] vbo25pf ^libedit@3.1-20240808 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] ddibcjq ^libxcrypt@4.5.2~obsolete_api build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] ejivk2i ^perl@5.42.0+cpanm+opcode+open+shared+threads build_system=generic platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] 5jgdak6 ^berkeley-db@18.1.40+cxx~docs+stl build_system=autotools patches:=26090f4,b231fcc platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] an5rzrc ^bzip2@1.0.8~debug~pic+shared build_system=generic platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] rd2uuxx ^gdbm@1.26 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] lf5ljls ^readline@8.3 build_system=autotools patches:=21f0a03 platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
- utr7ymg ^pmix@6.1.0~munge~python build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
- ccotrup ^prrte@4.1.0 build_system=autotools schedulers:=none platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
- syzfpop ^flex@2.6.3+lex~nls build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
- 24qltll ^rsync@3.4.1 build_system=autotools platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] gavswuq ^lz4@1.10.0+pic build_system=makefile libs:=shared,static platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] 3a2xrgw ^openssl@3.6.1~docs+shared build_system=generic certs=system platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
- m2nrnpe ^popt@1.19 build_system=autotools platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
[^] anayviw ^libiconv@1.18 build_system=autotools libs:=shared,static platform=linux os=rhel9 target=zen5 %c=gcc@15.2.0
- fre4ogj ^xxhash@0.8.3 build_system=makefile platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
[^] pvz4ljc ^zstd@1.5.7+programs build_system=makefile compression:=none libs:=shared,static platform=linux os=rhel9 target=zen5 %c,cxx=gcc@15.2.0
Yllä oleva konkretisointi näyttää, että jos jatkaisimme komentoon spack install,
spack rakentaisi ja asentaisi uudelleen paketit fftw, hdf5 ja openmpi
sekä joitakin muita paketteja, joiden pitäisi tulla upstreamista. Yleensä on parasta aloittaa
korjaaminen ensimmäisestä tällaisesta paketista konkretisoinnissa, tässä tapauksessa fftw.
Varmistetaan ensin, että upstream-paketti todella sopii tarkoitukseen vertaamalla
upstream-paketin määrittelyä ja konkretisoinnin määrittelyä. Tietyn upstream-paketin
määrittelyn voi tulostaa viittaamalla sen tiivisteeseen (huomaa syntaksi, jossa käytetään /-merkkiä):
spack -E -c 'upstreams:gcc152_ec:install_tree:/appl/soft/spack/core/v2026_03/x86_64/gcc152_ec/install_dir' spec /gafrwzb
Tässä tapauksessa ympäristön konkretisoinnissa olevan fftw-paketin määrittely ja upstreamissa olevan paketin määrittely näyttävät identtisiltä,
joten upstream-paketin pitäisi sopia.
Päivitetään ympäristön vasp-määrittely siten, että määritämme tarkalleen, mitä fftw-pakettia käytetään riippuvuutena.
Jostain syystä spack change ei toimi tässä, mutta voimme päivittää ympäristön spack.yaml-tiedoston
kahdella komennolla (tai vaihtoehtoisesti muokkaamalla spack.yaml-tiedostoa suoraan):
Huomaa syntaksi, jolla riippuvuus määritetään sen tiivisteen avulla.
Ympäristön käyttäminen
Varsinaiset ohjelmistoasennukset ovat hakemistossa
$PWD/mygcc152_ec-install, jonka määritimme aiemmin ympäristön
konfiguraatiossa. Komento
näyttää asennusjuuret:
Pakettien eri versiot (variantit tai mikä tahansa muu ero konkretisoidussa määrittelyssä) asennetaan yksilöllisillä tiivisteillä.
Jos ympäristö aktivoitiin näkymän kanssa, asennetut ohjelmistot ja kirjastot
ovat käytettävissä myös ympäristön
näkymän
kautta, joka tässä opasesimerkissä sijaitsee hakemistossa environments/mygcc152_ec/.spack-env/view.
Komento
poistaa nykyisen Spack-ympäristön aktivoinnin.