Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti are being decommissioned in stages, and their storage areas will become fully unavailable from 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

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

/appl/soft/spack/core/v2026_03/${target_family}
/appl/soft/spack/apps/v2026_03/${target_family}

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

ls /appl/soft/spack/core/v2026_03/x86_64/

joka antaa (tätä kirjoitettaessa)

aocc50_ec  compilers_ce  compilers_ec  gcc152_ec

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.

upstream=gcc152_ec

Komennot

spack env create environments/my_${upstream}
spack env activate -p environments/my_${upstream}

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:

spack add eccodes

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

spack concretize

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

spack install

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:

spack add 'vasp+hdf5+openmp'
spack concretize
 -   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):

spack remove vasp
spack add 'vasp+hdf5+openmp ^*/gafrwzb'

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

ls mygcc152_ec-install

näyttää asennusjuuret:

bin  eccodes-2.45.0-4fi3e5d  gcc-runtime-15.2.0-szq7ch3  libpng-1.6.55-dhucqwk  openjpeg-2.3.1-szh7ud6

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

spack env deactivate

poistaa nykyisen Spack-ympäristön aktivoinnin.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta