×
Yeni bir madde oluştur
Sayfa başlığınızı buraya yazın:
We currently have 15 articles on UHeM Wiki. Type your article name above or create one of the articles listed here!



    UHeM Wiki
    15Maddeler

    Spack ile kendi ev dizinimize program kurmak


    spack programı ile kendi ev dizininize tek bir komut ile kolayca program kurabilirsiniz. Örneğin zlib kütüphanesini kurmak için sadece:


    spack install zlib
    


    komutunu çalıştırmak yetecektir. Doğrudan bu komutu çalıştırmayı denerseniz aşağıdaki gibi hata alırsınız:


    [mercan@sariyer ~ ]$ spack install zlib
    -bash: spack: command not found
    


    Çünkü, öncelikle spack programını kendi ev dizinimize kurmalıyız. Ancak merak etmeyin, spack programını kurmak da çok kolay!


    spack programını kurmak

    spack programına https://github.com/spack/spack adresinden erişebiliriz.


    Öncelikle sariyer'deki eski python sürümü yerine daha yeni bir python sürümü kullanalım:


    [mercan@sariyer ~ ]$ module load Python/python-2.7.14
    


    Sonra kendi ev dizinimize spack programını indirelim:

    [mercan@sariyer ~ ]$ cd
    [mercan@sariyer ~ ]$ git clone https://github.com/spack/spack.git
    


    Yukarıdaki komutu çalıştırınca aşağıdaki gibi bir çıktı ile programı bulunduğumuz dizinde spack isimli klasöre indirecek:


    [mercan@sariyer ~ ]$ git clone https://github.com/spack/spack.git
    Cloning into 'spack'...
    remote: Enumerating objects: 20, done.
    remote: Counting objects: 100% (20/20), done.
    remote: Compressing objects: 100% (18/18), done.
    remote: Total 268248 (delta 1), reused 4 (delta 0), pack-reused 268228
    Receiving objects: 100% (268248/268248), 106.84 MiB | 6.90 MiB/s, done.
    Resolving deltas: 100% (113189/113189), done.
    Checking out files: 100% (7787/7787), done.
    [mercan@sariyer ~ ]$
    


    Sonra spack'ın son sürümüne geçelim:


    [mercan@sariyer ~ ]$ cd ~/spack
    [mercan@sariyer spack ]$ git checkout releases/latest
    


    Spack kurulmuş oldu ama çalıştırmak için çevre değişkenleri ayarlayan betiği (script) de çalıştırmalıyız:


    source ~/spack/share/spack/setup-env.sh
    


    Artık spack programı çalışır hale geldi.


    Denemek için spack compilers yazarak komutu çalıştıralım:


    [mercan@sariyer spack ]$ spack compilers
    ==> Available compilers
    -- clang centos7-x86_64 -----------------------------------------
    clang@3.4.2
    
    -- gcc centos7-x86_64 -------------------------------------------
    gcc@4.8.5
    [mercan@sariyer spack ]$
    


    spack compilers komutu spack programının derleme yaparken kullanabileceği compiler 'ların listesini verir. clang@3.4.2 ve gcc@4.8.5 sariyer makinasında hiç bir module yüklemeden kullanılacabilecek 2 compiler olduğu için, kurulum sırasında bu compiler'lar bulunmuş.


    Biz istersek başka compiler'ları da ayarlayabiliriz. Bunu için iki yol mevcut:


    Önce module yükleyerek compiler buldurmayı yapalım:


    [mercan@sariyer spack ]$ module load intel/parallel_studio_xe_2019.4.070
    [mercan@sariyer spack ]$ spack compiler find
    ==> Added 1 new compiler to /okyanus/users/mercan/.spack/linux/compilers.yaml
        intel@19.0.4.243
    ==> Compilers are defined in the following files:
        /okyanus/users/mercan/.spack/linux/compilers.yaml
    [mercan@sariyer spack ]$ module unload intel/parallel_studio_xe_2019.4.070
    


    Tekrar compiler listesine bakalım:

    [mercan@sariyer spack ]$ spack compilers
    ==> Available compilers
    -- clang centos7-x86_64 -----------------------------------------
    clang@3.4.2
    
    -- gcc centos7-x86_64 -------------------------------------------
    gcc@4.8.5
    
    -- intel centos7-x86_64 -----------------------------------------
    intel@19.0.4.243
    [mercan@sariyer spack ]$
    


    Görüleceği gibi intel 19.0.4.243 sürümünü bulmuş. Artık intel derleyiciyi de kullanabiliriz.


    Şimdi bir diğer metodla, yani compiler dizinini vererek derleyici bulduralım: Mesela, gcc-8.3.0 compiler'ının dizini spack'a gösterelim:


    [mercan@sariyer spack ]$ spack compiler find /okyanus/progs/gcc/GCC-8.3.0
    ==> Added 1 new compiler to /okyanus/users/mercan/.spack/linux/compilers.yaml
        gcc@8.3.0
    ==> Compilers are defined in the following files:
        /okyanus/users/mercan/.spack/linux/compilers.yaml
    [mercan@sariyer spack ]$
    


    [mercan@sariyer spack ]$ spack compilers
    ==> Available compilers
    -- clang centos7-x86_64 -----------------------------------------
    clang@3.4.2
    
    -- gcc centos7-x86_64 -------------------------------------------
    gcc@8.3.0  gcc@4.8.5
    
    -- intel centos7-x86_64 -----------------------------------------
    intel@19.0.4.243
    [mercan@sariyer spack ]$
    


    Artık listede gcc-8.3.0 compiler'ı da var. Dahası son eklenen compiler biz başka bir compiler'ı özellikle söylemezsek kullanilacaktır. Yani artık derlemelerimizde gcc-8.3.0 compiler'rı kullanılacak.


    Aslında şu anda spack kullanılabilir durumda, ama sadece, kolaylık için


    module load Python/python-2.7.14
    source ~/spack/share/spack/setup-env.sh
    


    komutlarını ~/.bashrc ve ~/.profile dosyalarının en alt bölumüne eklemek kaldı. Bu işlemle spack komutu çalıştırabilmek için öncesinde module load Python/python-2.7.14 ve source ~/spack/share/spack/setup-env.sh komutlarını çalıştırmak zorunda kalmayacağız:


    nano ~/.bashrc
    


    nano ~/.profile
    

    spack ile kurabilecegimiz programlar

    Ne yazık ki, her programı spack ile kuramayız. spack ile kurabileceğimiz programlarin listesine spack list komutu ile ulaşabiliriz. Bu komutu ilk çalıştırdığımızda internetten tüm listeyi indereceği için uzun süre bekledikden sonra bir çıktı verecek. Ancak merak etmeyin tekrar çalıştırdığınızda çok daha hızlıca sonuç verecek:


    spack list
    


    Liste çok uzun olduğu için (Biz bu satırları yazarken 5062 paket vardı, üstelik sürekli artıyor), komutun çıktısını burada vermiyoruz. Ancak bir program var mı diye bu listeye bakmamız da gerekmiyor. Doğrudan programın adı ile de arama yapabiliriz. Mesela, mpi ifadesi geçen programları listeleyelim:


    [mercan@sariyer ~ ]$ spack list mpi
    ==> 25 packages.
    compiz       intel-mpi-benchmarks    mpi-bash      mpilander  mpir               pbmpi          py-mpi4py  spectrum-mpi  vampirtrace
    fujitsu-mpi  intel-oneapi-compilers  mpich         mpileaks   mpix-launch-swift  phylobayesmpi  r-rmpi     sst-dumpi
    intel-mpi    intel-oneapi-mpi        mpifileutils  mpip       openmpi            pnmpi          rempi      umpire
    [mercan@sariyer ~ ]$
    


    Gördüğünüz gibi 25 paket buldu. Bu listeden openmpi programı hakkında ilave bilgi alalım:


    [mercan@sariyer ~ ]$ spack info openmpi
    AutotoolsPackage:   openmpi
    
    Description:
        An open source Message Passing Interface implementation. The Open MPI
        Project is an open source Message Passing Interface implementation that
        is developed and maintained by a consortium of academic, research, and
        industry partners. Open MPI is therefore able to combine the expertise,
        technologies, and resources from all across the High Performance
        Computing community in order to build the best MPI library available.
        Open MPI offers advantages for system and software vendors, application
        developers and computer science researchers.
    
    Homepage: http://www.open-mpi.org
    
    Maintainers: @hppritcha
    
    Tags:
        None
    
    Preferred version:
        3.1.6     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.6.tar.bz2
    
    Safe versions:
        master    [git] https://github.com/open-mpi/ompi.git on branch master
        4.0.5     http://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.5.tar.bz2
        4.0.4     http://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.4.tar.bz2
        4.0.3     http://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.3.tar.bz2
        4.0.2     http://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.2.tar.bz2
        4.0.1     http://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.1.tar.bz2
        4.0.0     http://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.0.tar.bz2
        3.1.6     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.6.tar.bz2
        3.1.5     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.5.tar.bz2
        3.1.4     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.4.tar.bz2
        3.1.3     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.3.tar.bz2
        3.1.2     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.2.tar.bz2
        3.1.1     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.1.tar.bz2
        3.1.0     http://www.open-mpi.org/software/ompi/v3.1/downloads/openmpi-3.1.0.tar.bz2
        3.0.5     http://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.5.tar.bz2
        3.0.4     http://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.4.tar.bz2
        3.0.3     http://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.3.tar.bz2
        3.0.2     http://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.2.tar.bz2
        3.0.1     http://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.1.tar.bz2
        3.0.0     http://www.open-mpi.org/software/ompi/v3.0/downloads/openmpi-3.0.0.tar.bz2
        2.1.6     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.6.tar.bz2
        2.1.5     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.5.tar.bz2
        2.1.4     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.4.tar.bz2
        2.1.3     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.3.tar.bz2
        2.1.2     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.2.tar.bz2
        2.1.1     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.1.tar.bz2
        2.1.0     http://www.open-mpi.org/software/ompi/v2.1/downloads/openmpi-2.1.0.tar.bz2
        2.0.4     http://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.4.tar.bz2
        2.0.3     http://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.3.tar.bz2
        2.0.2     http://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.2.tar.bz2
        2.0.1     http://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.1.tar.bz2
        2.0.0     http://www.open-mpi.org/software/ompi/v2.0/downloads/openmpi-2.0.0.tar.bz2
        1.10.7    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.7.tar.bz2
        1.10.6    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.6.tar.bz2
        1.10.5    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.5.tar.bz2
        1.10.4    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.4.tar.bz2
        1.10.3    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.3.tar.bz2
        1.10.2    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.2.tar.bz2
        1.10.1    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.1.tar.bz2
        1.10.0    http://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.0.tar.bz2
        1.8.8     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.8.tar.bz2
        1.8.7     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.7.tar.bz2
        1.8.6     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.6.tar.bz2
        1.8.5     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.5.tar.bz2
        1.8.4     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.4.tar.bz2
        1.8.3     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.3.tar.bz2
        1.8.2     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.2.tar.bz2
        1.8.1     http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.1.tar.bz2
        1.8       http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.tar.bz2
        1.7.5     http://www.open-mpi.org/software/ompi/v1.7/downloads/openmpi-1.7.5.tar.bz2
        1.7.4     http://www.open-mpi.org/software/ompi/v1.7/downloads/openmpi-1.7.4.tar.bz2
        1.7.3     http://www.open-mpi.org/software/ompi/v1.7/downloads/openmpi-1.7.3.tar.bz2
        1.7.2     http://www.open-mpi.org/software/ompi/v1.7/downloads/openmpi-1.7.2.tar.bz2
        1.7.1     http://www.open-mpi.org/software/ompi/v1.7/downloads/openmpi-1.7.1.tar.bz2
        1.7       http://www.open-mpi.org/software/ompi/v1.7/downloads/openmpi-1.7.tar.bz2
        1.6.5     http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2
        1.6.4     http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.4.tar.bz2
        1.6.3     http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.3.tar.bz2
        1.6.2     http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.2.tar.bz2
        1.6.1     http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.1.tar.bz2
        1.6       http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.tar.bz2
        1.5.5     http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.5.tar.bz2
        1.5.4     http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.4.tar.bz2
        1.5.3     http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.3.tar.bz2
        1.5.2     http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.2.tar.bz2
        1.5.1     http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.1.tar.bz2
        1.5       http://www.open-mpi.org/software/ompi/v1.5/downloads/openmpi-1.5.tar.bz2
        1.4.5     http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.5.tar.bz2
        1.4.4     http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.4.tar.bz2
        1.4.3     http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.3.tar.bz2
        1.4.2     http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.2.tar.bz2
        1.4.1     http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.1.tar.bz2
        1.4       http://www.open-mpi.org/software/ompi/v1.4/downloads/openmpi-1.4.tar.bz2
        1.3.4     http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.4.tar.bz2
        1.3.3     http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.3.tar.bz2
        1.3.2     http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.2.tar.bz2
        1.3.1     http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.1.tar.bz2
        1.3       http://www.open-mpi.org/software/ompi/v1.3/downloads/openmpi-1.3.tar.bz2
        1.2.9     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.9.tar.bz2
        1.2.8     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.8.tar.bz2
        1.2.7     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.7.tar.bz2
        1.2.6     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.6.tar.bz2
        1.2.5     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.5.tar.bz2
        1.2.4     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.4.tar.bz2
        1.2.3     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.3.tar.bz2
        1.2.2     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.2.tar.bz2
        1.2.1     http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.1.tar.bz2
        1.2       http://www.open-mpi.org/software/ompi/v1.2/downloads/openmpi-1.2.tar.bz2
        1.1.5     http://www.open-mpi.org/software/ompi/v1.1/downloads/openmpi-1.1.5.tar.bz2
        1.1.4     http://www.open-mpi.org/software/ompi/v1.1/downloads/openmpi-1.1.4.tar.bz2
        1.1.3     http://www.open-mpi.org/software/ompi/v1.1/downloads/openmpi-1.1.3.tar.bz2
        1.1.2     http://www.open-mpi.org/software/ompi/v1.1/downloads/openmpi-1.1.2.tar.bz2
        1.1.1     http://www.open-mpi.org/software/ompi/v1.1/downloads/openmpi-1.1.1.tar.bz2
        1.1       http://www.open-mpi.org/software/ompi/v1.1/downloads/openmpi-1.1.tar.bz2
        1.0.2     http://www.open-mpi.org/software/ompi/v1.0/downloads/openmpi-1.0.2.tar.bz2
        1.0.1     http://www.open-mpi.org/software/ompi/v1.0/downloads/openmpi-1.0.1.tar.bz2
        1.0       http://www.open-mpi.org/software/ompi/v1.0/downloads/openmpi-1.0.tar.bz2
    
    Variants:
        Name [Default]           Allowed values          Description
        =====================    ====================    ==============================================================================
    
        atomics [off]            on, off                 Enable built-in atomics
        cuda [off]               on, off                 Enable CUDA support
        cxx [off]                on, off                 Enable C++ MPI bindings
        cxx_exceptions [off]     on, off                 Enable C++ Exception support
        fabrics [none]           none, auto, ofi,        List of fabrics that are enabled; 'auto' lets openmpi determine
                                 fca, psm, cma,
                                 verbs, xpmem, mxm,
                                 hcoll, psm2, knem,
                                 ucx
        gpfs [on]                on, off                 Enable GPFS support (if present)
        java [off]               on, off                 Build Java support
        legacylaunchers [off]    on, off                 Do not remove mpirun/mpiexec when building with slurm
        lustre [off]             on, off                 Lustre filesystem library support
        memchecker [off]         on, off                 Memchecker support for debugging [degrades performance]
        pmi [off]                on, off                 Enable PMI support
        schedulers [none]        none, auto, alps,       List of schedulers for which support is enabled; 'auto' lets openmpi determine
                                 lsf, sge,
                                 loadleveler, tm,
                                 slurm
        singularity [off]        on, off                 Build support for the Singularity container
        sqlite3 [off]            on, off                 Build SQLite3 support
        static [on]              on, off                 Build static libraries
        thread_multiple [off]    on, off                 Enable MPI_THREAD_MULTIPLE support
        vt [on]                  on, off                 Build VampirTrace support
        wrapper-rpath [on]       on, off                 Enable rpath support in the wrappers
    
    Installation Phases:
        autoreconf    configure    build    install
    
    Build Dependencies:
        autoconf  binutils  hcoll  java  libfabric  lsf     m4   numactl   openpbs  pkgconfig  singularity  sqlite  valgrind  zlib
        automake  fca       hwloc  knem  libtool    lustre  mxm  opa-psm2  perl     rdma-core  slurm        ucx     xpmem
    
    Link Dependencies:
        binutils  fca  hcoll  hwloc  java  knem  libfabric  lsf  lustre  mxm  numactl  opa-psm2  openpbs  rdma-core  singularity  slurm  sqlite  ucx  valgrind  xpmem  zlib
    
    Run Dependencies:
        None
    
    Virtual Packages:
        openmpi@2.0.0: provides mpi@:3.1
        openmpi@1.7.5: provides mpi@:3.0
        openmpi@1.6.5 provides mpi@:2.2
        openmpi provides mpi
    
    [mercan@sariyer ~ ]$
    


    Görüleceği üzere pek çok farklı openmpi sürümünü, pek çok değişik ayar ile kurabiliriz. Ayrıca bize Dependencies bölümlerinde program için gereken diğer programları da gösterdi. Eğer openmpi programını spack ile kurarsak, tüm bu bağımlılıklar da otomatik olarak kurulacak.


    Son olarak yukarıdaki çıktının sonundaki Virtual Packages: bölümüne dikkat etmenizi isteyeceğiz. Buradaki openmpi provides mpi ifadesi, openmpi paketi mpi gereksinimi için kullanılabilir demektir.

    spack ile program kurulumu

    En basit hali ile bir programın spack ile kurulması şu şekildedir:


    spack install zlib
    


    Biz hiçbir istekte bulunmazsak, spack programın spack info çıktısındaki Preferred version: sürümünü, en son eklediğimiz derleyici ile kurar. Tabiki varsa, gereksinimleri ile birlikte:


    [mercan@sariyer ~ ]$ spack install zlib
    ==> Installing zlib-1.2.11-qfbjen2h66dzgp2zaepeyz4nw7nqafku
    ==> No binary for zlib-1.2.11-qfbjen2h66dzgp2zaepeyz4nw7nqafku found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/c3/c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1.tar.gz
    ######################################################################## 100.0%
    ==> zlib: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/zlib-1.2.11-qfbjen2h66dzgp2zaepeyz4nw7nqafku
    [mercan@sariyer ~ ]$
    


    spack ile ayrıntılı program kurulumu

    Daha gerçekci ve karışık bir örnek olarak openmpi kurmaya bakalım. spack info openmpi çıktısındaki Preferred version: bölümü, biz bir sürüm söylemezsek kurulacak openmpi sürümünü gösteriyor. Ayrıca spack info openmpi çıktısında tüm olası sürümleri, ayarlayabileceğimiz ek parametreleri, programın bağımlılıklarını da görebiliriz. Bu örnekle zlib örneği arasında çok büyük farklar mevcut. zlib programının hiç bir bağımlılığı olmadığından spack sadece zlib programını kurunca işi bittirdi. Ancak openmpi için pek çok bağımlılık ve kurulum seçeneği mevcuttur.


    Bu sebeble bu openmpi kurulum çok daha uzun sürecek. Ancak, aynen spack list komutunun ilk seferinde çok uzun sürmesi gibi, bu kurulumun uzun sürmesi de ilk seferlik. Çünkü, başka programlar kurmak istediğimiz zaman bu program için kurduğumuz bir çok gereksinim, yeni program içinde gerektiğinde tekrar tekrar kurulmadan, hali hazırda kurulu olan kullanılacak.


    Ayrıca, bu programlar derlenirken spack, tüm işlemcileri kullanmaya çalışacağı için, sariyer login node'da bu derleme işlemini yaparsak, derleme işlemimiz durdurulacaktır. Bu sebeble, salloc komutu ile bir sunucu isteyip, ayrılmış bir sunucuda bu derlemeyi yapmalıyız.


    Normalde openmpi'ı spack install openmpi komutu ile kurabilirdik. Ancak, UHeM'de mpi'ı infiniband kullanacak şekilde kurmak isteriz. Bunun için spark'a infiniband'i kullanacak şekilde derle dememiz gerekiyor. Bunu derleme komutuna fabrics=verbs ifadesini ekleyerek yapabiliyoruz. Bir de openmpi için 3.1.6 sürümünü istedigimizi de söyleyelim. Bunun içinse @ işareti ile sürümü eklememiz yeterli:


    [mercan@s001 ~ ]$ spack install openmpi@3.1.6 fabrics=verbs
    ==> Installing libsigsegv-2.12-uprcjwkur6ud2f5wg2msiutqttpk2v7g
    ==> No binary for libsigsegv-2.12-uprcjwkur6ud2f5wg2msiutqttpk2v7g found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/3a/3ae1af359eebaa4ffc5896a1aee3568c052c99879316a1ab57f8fe1789c390b6.tar.gz
    ######################################################################## 100.0%
    ==> libsigsegv: Executing phase: 'autoreconf'
    ==> libsigsegv: Executing phase: 'configure'
    ==> libsigsegv: Executing phase: 'build'
    ==> libsigsegv: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libsigsegv-2.12-uprcjwkur6ud2f5wg2msiutqttpk2v7g
    ==> Installing pkgconf-1.7.3-defp244twc5rbqtv36f3dyh2dwhrlylv
    ==> No binary for pkgconf-1.7.3-defp244twc5rbqtv36f3dyh2dwhrlylv found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/b8/b846aea51cf696c3392a0ae58bef93e2e72f8e7073ca6ad1ed8b01c85871f9c0.tar.xz
    ######################################################################## 100.0%
    ==> pkgconf: Executing phase: 'autoreconf'
    ==> pkgconf: Executing phase: 'configure'
    ==> pkgconf: Executing phase: 'build'
    ==> pkgconf: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/pkgconf-1.7.3-defp244twc5rbqtv36f3dyh2dwhrlylv
    ==> Installing util-macros-1.19.1-pzlhwvhp4fh5rv5ephjtihhw62gngcld
    ==> No binary for util-macros-1.19.1-pzlhwvhp4fh5rv5ephjtihhw62gngcld found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/18/18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6.tar.bz2
    ######################################################################## 100.0%
    ==> util-macros: Executing phase: 'autoreconf'
    ==> util-macros: Executing phase: 'configure'
    ==> util-macros: Executing phase: 'build'
    ==> util-macros: Executing phase: 'install'
    
       . . .
    
    ==> Installing libnl-3.3.0-5ozmrnnedehcyqaigrhgejrhzdi7geva
    ==> Warning: Spack will not check SSL certificates. You need to update your Python to enable certificate verification.
    ==> No binary for libnl-3.3.0-5ozmrnnedehcyqaigrhgejrhzdi7geva found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/70/705468b5ae4cd1eb099d2d1c476d6a3abe519bc2810becf12fb1e32de1e074e4.tar.gz
    ######################################################################## 100.0%
    ==> libnl: Executing phase: 'autoreconf'
    ==> libnl: Executing phase: 'configure'
    ==> libnl: Executing phase: 'build'
    ==> libnl: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libnl-3.3.0-5ozmrnnedehcyqaigrhgejrhzdi7geva
    ==> Installing rdma-core-32.0-5wtpqzcbtminztkxmo5qz6bgofzobtmw
    ==> Warning: Spack will not check SSL certificates. You need to update your Python to enable certificate verification.
    ==> No binary for rdma-core-32.0-5wtpqzcbtminztkxmo5qz6bgofzobtmw found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/81/8197e20a59990b9b06a2e4c83f4a96802fc080ec1669392b643b59b6023931fc.tar.gz
    ######################################################################## 100.0%
    ==> rdma-core: Executing phase: 'cmake'
    ==> rdma-core: Executing phase: 'build'
    ==> rdma-core: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/rdma-core-32.0-5wtpqzcbtminztkxmo5qz6bgofzobtmw
    ==> Installing openmpi-3.1.6-6ip5cid4q5xjkwmtsucar227ahca4u53
    ==> Warning: Spack will not check SSL certificates. You need to update your Python to enable certificate verification.
    ==> No binary for openmpi-3.1.6-6ip5cid4q5xjkwmtsucar227ahca4u53 found: installing from source
    ==> Fetching https://spack-llnl-mirror.s3-us-west-2.amazonaws.com/_source-cache/archive/50/50131d982ec2a516564d74d5616383178361c2f08fdd7d1202b80bdf66a0d279.tar.bz2
    ######################################################################## 100.0%
    ==> openmpi: Executing phase: 'autoreconf'
    ==> openmpi: Executing phase: 'configure'
    ==> openmpi: Executing phase: 'build'
    ==> openmpi: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/openmpi-3.1.6-6ip5cid4q5xjkwmtsucar227ahca4u53
    [mercan@s001 ~ ]$
    


    spack find komutu ile kurulan programların listesine bakalım. Tüm bu programlar, çalıştırdığımız spack install openmpi komutu ile kuruldu:


    [mercan@sariyer ~ ]$ spack find
    ==> 41 installed packages
    -- linux-centos7-broadwell / gcc@8.3.0 --------------------------
    autoconf@2.69        cmake@3.18.4     gdbm@1.18.1       libffi@3.3         libtool@2.4.6   numactl@2.0.14  py-docutils@0.15.2    sqlite@3.33.0       zlib@1.2.11
    automake@1.16.2      diffutils@3.7    gettext@0.21      libiconv@1.16      libuuid@1.0.3   openmpi@3.1.6   py-setuptools@50.3.2  tar@1.32
    berkeley-db@18.1.40  expat@2.2.10     help2man@1.47.11  libnl@3.3.0        libxml2@2.9.10  openssl@1.1.1h  python@3.8.6          texinfo@6.5
    bison@3.6.4          findutils@4.6.0  hwloc@1.11.11     libpciaccess@0.16  m4@1.4.18       perl@5.32.0     rdma-core@32.0        util-macros@1.19.1
    bzip2@1.0.8          flex@2.6.4       libbsd@0.10.0     libsigsegv@2.12    ncurses@6.2     pkgconf@1.7.3   readline@8.0          xz@5.2.5
    [mercan@sariyer ~ ]$
    


    Şimdi de openmpi paketinin hangi ayarlarla kurulduğuna bakalım:


    [mercan@sariyer ~ ]$ spack find -ldfv  openmpi
    ==> 1 installed package
    -- linux-centos7-broadwell / gcc@8.3.0 --------------------------
    6ip5cid openmpi@3.1.6%gcc ~atomics~cuda~cxx~cxx_exceptions+gpfs~java~legacylaunchers~lustre~memchecker~pmi~singularity~sqlite3+static~thread_multiple+vt+wrapper-rpath fabrics=verbs schedulers=none
    lox5y4c     hwloc@1.11.11%gcc ~cairo~cuda~gl~libudev+libxml2~netloc~nvml+pci+shared
    akrnujj         libpciaccess@0.16%gcc
    7ixazrk         libxml2@2.9.10%gcc ~python
    53uv3xg             libiconv@1.16%gcc
    uu372hq             xz@5.2.5%gcc ~pic
    qfbjen2             zlib@1.2.11%gcc +optimize+pic+shared
    m7hcoqw         numactl@2.0.14%gcc  patches=4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94
    5wtpqzc     rdma-core@32.0%gcc ~ipo build_type=RelWithDebInfo
    5ozmrnn         libnl@3.3.0%gcc
    
    [mercan@sariyer ~ ]$
    


    spack ile kurulan programları kullanmak

    spack ile kurduğumuz programları kullanırken, spack load PROGRAM_ADI şeklinde programın ayarlarını yüklemeliyiz:


    [mercan@sariyer ~ ]$ spack load openmpi@3.1.6
    [mercan@sariyer ~ ]$ which mpicc
    ~/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/openmpi-3.1.6-6ip5cid4q5xjkwmtsucar227ahca4u53/bin/mpicc
    [mercan@sariyer ~ ]$ which mpirun
    ~/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/openmpi-3.1.6-6ip5cid4q5xjkwmtsucar227ahca4u53/bin/mpirun
    [mercan@sariyer ~ ]$
    


    Çıktıda da görüldüğü üzere openmpi ayarları yüklendiği için, mpicc ve mpirun gibi openmpi komutları artık bizim ev dizinimizdeki spack dizininden çalışacak.


    Yüklediğimiz openmpi ayarlarını spack unload openmpi komutu ile geri kaldırabiliriz:


    [mercan@sariyer ~ ]$ spack unload openmpi
    [mercan@sariyer ~ ]$ which mpicc
    /usr/bin/which: no mpicc in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
    [mercan@sariyer ~ ]$
    


    Artık mpicc komutu bulunamıyor.


    Kurduğumuz programları kullanarak Yeni programlar kurmak

    Şayet fftw kütüphanesini spack ile kurmak istersek, fftw bir mpi gerektirdiği için spack openmpi programını tekrar kurmaya kalkacaktır. Bunun sebebi bizim kurduğumuz openmpi 'in özel ayarlarla kurulmasıdır. Bu sebeble spack install fftw şeklinde fftw programını kur da nasıl kurarsan kur diyemeyiz. Bizim özel openmpi'ımızı kullanarak derle dememiz gerekli. spack ile böyle ince ayarlamalar yapmak da mümkün.


    Mesela fftw'nin 3.3.5 sürümünü, bizim openmpi'ımız ile derleyelim:


    spack install fftw@3.3.5 ^openmpi@3.1.6 fabrics=verbs
    


    Bu komutta fftw@3.3.5 kısmı fftw'nin 3.3.5 sürümünü istediğimizi, ^openmpi@3.1.6 fabrics=verbs kısmı ise kullanılacak openmpi'ı tanımlıyor. Kurulacak fftw 'nin başında her hangi bir karekter olmadığına, ama kullanılacak openmpi in başında ^ karakteri olduğuna dikkat ediniz.


    Bu komut çalıştırırsak:


    [mercan@s001 ~ ]$ spack install fftw@3.3.5 ^openmpi@3.1.6 fabrics=verbs
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libsigsegv-2.12-uprcjwkur6ud2f5wg2msiutqttpk2v7g
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/pkgconf-1.7.3-defp244twc5rbqtv36f3dyh2dwhrlylv
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/util-macros-1.19.1-pzlhwvhp4fh5rv5ephjtihhw62gngcld
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libiconv-1.16-53uv3xgrqbogc2vaxkkp5okuo3powbsq
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/xz-5.2.5-uu372hqqkyxrjegibu2hgysf4bzx3u56
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/zlib-1.2.11-qfbjen2h66dzgp2zaepeyz4nw7nqafku
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/berkeley-db-18.1.40-qtp3vpn43a46uwohro6uhn6bjjx4gaxk
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libbsd-0.10.0-pvc6kqgfxnkbxkuhtew243mn3b67yvne
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libffi-3.3-dipzepo4m5sr7ycadm77vhdasfiwsdcx
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libuuid-1.0.3-7e55a4naa5zzqgmjujnlzgjf32hf3juy
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/m4-1.4.18-h2tmx64xt5rrx6akcdjs5evfzaj2ea57
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/ncurses-6.2-4gq3xlbh3azlfkfmnuyiak6xbhjexazt
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/diffutils-3.7-xymd4lcgpnvgb6z4gd6nmec4hr6bkpaa
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/tar-1.32-vomwmt7ws7q6ctyzohopojmsehfnd6fu
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libxml2-2.9.10-7ixazrkpdtg4wq6guo6uy5bp5on2tu53
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/expat-2.2.10-asbp6txuosgyz4qisfgn53eyqeh7iiou
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libtool-2.4.6-dxntbc5myhs2hcc3feenbr2aufbdjxna
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/readline-8.0-mrdeikdyxlymeeidwpdthfvgpgmrphqh
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/bzip2-1.0.8-e272slzh2s7uketdxplns3bie3kpzxc2
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libpciaccess-0.16-akrnujj3wabmwfbaegsw6gn467whhto6
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/sqlite-3.33.0-p32txdgts5a62wdmujk6xdptnf4gt6ii
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/gdbm-1.18.1-646zbwrwmbqmj6mtki4mahy5ezfue2f7
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/gettext-0.21-jslgfuargh2qind64znqrhzr46hr55al
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/perl-5.32.0-2dtzapkouxo7gslaru3pd5q7gxwzgkdu
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/texinfo-6.5-l5mvi5nfpiii3t3revhn6zqtxd4ca5e4
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/autoconf-2.69-omvpu7oeowvj7oflae7m7iskprkyt4qt
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/openssl-1.1.1h-3kl2shvwoyed7by3cll6cqzifzqpfikr
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/help2man-1.47.11-rkepqdr672zljc2mewrynqaaxpotfzpa
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/automake-1.16.2-wcl57aftrachsln46ad3iqnh7qwoj7a4
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/cmake-3.18.4-kncp327xb6re2vxi3we4fk56wsiuhqlj
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/python-3.8.6-z25lmnhjszbyljooixiyd52eol7vrumq
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/bison-3.6.4-fepir3mjchnxovbcyspe3a7vklmpruko
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/numactl-2.0.14-m7hcoqwqzlqxgy2kd6ykb4ddqwiox2oz
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/findutils-4.6.0-yrzff5qut4dl4upsi2rrmhzz7zx5q7ac
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/py-setuptools-50.3.2-h77txr6rf4tv3nxistbwilpqva54urqz
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/hwloc-1.11.11-lox5y4c6d5fkgwtcx4joa5p6vhgh523d
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/flex-2.6.4-nqpg44olex5b3q4bieyeazbglampsocv
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/py-docutils-0.15.2-lgaxxdk2auqp2ddght34imd7z6pbqdsb
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/libnl-3.3.0-5ozmrnnedehcyqaigrhgejrhzdi7geva
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/rdma-core-32.0-5wtpqzcbtminztkxmo5qz6bgofzobtmw
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/openmpi-3.1.6-6ip5cid4q5xjkwmtsucar227ahca4u53
    ==> Installing fftw-3.3.5-uqbeflmtts4sce3ccgjbnf6ydmflz3us
    ==> Warning: Spack will not check SSL certificates. You need to update your Python to enable certificate verification.
    ==> No binary for fftw-3.3.5-uqbeflmtts4sce3ccgjbnf6ydmflz3us found: installing from source
    ==> Using cached archive: /okyanus/users/mercan/spack/var/spack/cache/_source-cache/archive/8e/8ecfe1b04732ec3f5b7d279fdb8efcad536d555f9d1e8fabd027037d45ea8bcf.tar.gz
    ==> fftw: Executing phase: 'autoreconf'
    ==> fftw: Executing phase: 'configure'
    ==> fftw: Executing phase: 'build'
    ==> fftw: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/gcc-8.3.0/fftw-3.3.5-uqbeflmtts4sce3ccgjbnf6ydmflz3us
    [mercan@s001 ~ ]$
    


    Görüldüğü gibi gereksinimlerin hepsi bir önceki openmpi derlemesinde yüklendiği için sadece fftw derlendi.


    Bir başka örnek daha vermek gerekirse, aşağıdaki örnekte trilinos yazılımını derleyen komut üç parçadan oluşuyor:

    1) trilinos +hdf5 : bu kısım trilinos yazılımını hdf5 özelliği (variant) ile derle demek. Boolean (True/False) özellikleri eklemek için hdf5=true yerine +hdf5 de yazabiliriz. Yada tersi için hdf5=false yerine -hdf5 şeklinde de yazılabilir.

    2) ^hdf5+hl+mpi : bu kısım ise trilinos yazılımı için gereken hdf5'in hangi özelliklerle derleneceğini söylüyor. ^ işaretinden sonrası artık trilinos 'u değil, hdf5 yazılımını tanımlıyor. hl=true ve mpi=true şeklinde derlenmesi gerektiğini söylüyor.

    3) ^openmpi@3.1.6 fabrics=verbs : ^ ile ayrılan bu son kısım ise, +mpi özelliği için gereken mpi olarak openmpi@3.1.6 sürümünün, fabrics=verbs özelliği ile derlenmesini söylüyor.


    Sonuç komutumuz aşağıdaki gibi olacak:


    spack install trilinos +hdf5 ^hdf5+hl+mpi ^openmpi@3.1.6 fabrics=verbs
    


    Bu şekilde gerektiği kadar ayrıntılı şekilde derlememizi tarif edebiliriz.


    Başka Derleyicileri kullanmak

    zlib programını en son yüklediğimiz derleyici olduğu için, otomatik olarak gcc-8.3.0 kullanarak derlemiştik. Gelin şimdi de intel derleyicisi ile derleyelim. Bunun için tek yapmamız gereken % işareti ile derleyici adını vermek:


    [mercan@sariyer ~ ]$ spack install zlib %intel
    ==> Installing zlib-1.2.11-jfq6twma263u5e2n65omhw4oovqq2ysq
    ==> No binary for zlib-1.2.11-jfq6twma263u5e2n65omhw4oovqq2ysq found: installing from source
    ==> Using cached archive: /okyanus/users/mercan/spack/var/spack/cache/_source-cache/archive/c3/c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1.tar.gz
    ==> zlib: Executing phase: 'install'
    [+] /okyanus/users/mercan/spack/opt/spack/linux-centos7-broadwell/intel-19.0.4.243/zlib-1.2.11-jfq6twma263u5e2n65omhw4oovqq2ysq
    [mercan@sariyer ~ ]$
    


    Kurulu zlib listesine bakarsak her iki sürümü de göreceğiz:


    [mercan@s001 ~ ]$ spack find zlib
    ==> 2 installed packages
    -- linux-centos7-broadwell / gcc@8.3.0 --------------------------
    zlib@1.2.11
    
    -- linux-centos7-broadwell / intel@19.0.4.243 -------------------
    zlib@1.2.11
    [mercan@s001 ~ ]$
    


    Gördüğünüz gibi iki farklı derleyici ile derlenmiş, iki farklı zlib paketimiz oldu. Bu paketleri seçerken artık hangisini kastettiğimizi belirtmek zorundayız. Bunu istersek zlib%intel şeklinde derleyici adını ilave derek yada daha kesin bir şekilde kurulum kimliğini ekleyerek yapabiliriz.


    Kurulum kimliği her kurulumda programın adına ilave edilen rastgele karakterler dizisidir. Bu bilgiyi spack find komutuna -lf parametresi ekleyerek görebiliriz:


    [mercan@s001 ~ ]$ spack find -lf zlib
    ==> 2 installed packages
    -- linux-centos7-broadwell / gcc@8.3.0 --------------------------
    qfbjen2 zlib@1.2.11%gcc
    
    -- linux-centos7-broadwell / intel@19.0.4.243 -------------------
    jfq6twm zlib@1.2.11%intel
    [mercan@s001 ~ ]$
    


    Burada qfbjen2 ve jfq6twm şeklinde iki farklı kimlik görülmekte. qfbjen2 kimlikli gcc ile derlenmiş zlib'i kullanmak için, / karakteri ile kimlik vererek, aşağıdaki komutu yazabiliriz:


    spack load zlib/qfbjen2
    


    module komutu ile spack programlarının kullanımı

    spack ile kurduğumuz programları kullanırken, spack load zlib şeklinde spack load komutunu kullanıyorduk. Aslında spack arka planda her kurduğu program için bir module dosyası oluşturmaktadır. Biz spack load dediğimizde aslında module load kullanmış oluyoruz.


    İstersek, doğrudan da module load' ile de yükleme yapabiliriz. Zaten module avail komutuna bakarsak, artık spack ile yüklediğimiz programların da burada listelendiğini göreceğiz:


    [mercan@s001 ~ ]$ module avail
    
    ------------------------------------------------ /okyanus/users/mercan/spack/share/spack/modules/linux-centos7-broadwell ------------------------------------------------
    autoconf-2.69-gcc-8.3.0-omvpu7o        gdbm-1.18.1-gcc-8.3.0-646zbwr          libuuid-1.0.3-gcc-8.3.0-7e55a4n        python-3.8.6-gcc-8.3.0-z25lmnh
    automake-1.16.2-gcc-8.3.0-wcl57af      gettext-0.21-gcc-8.3.0-jslgfua         libxml2-2.9.10-gcc-8.3.0-7ixazrk       rdma-core-32.0-gcc-8.3.0-5wtpqzc
    berkeley-db-18.1.40-gcc-8.3.0-qtp3vpn  help2man-1.47.11-gcc-8.3.0-rkepqdr     m4-1.4.18-gcc-8.3.0-h2tmx64            readline-8.0-gcc-8.3.0-mrdeikd
    bison-3.6.4-gcc-8.3.0-fepir3m          hwloc-1.11.11-gcc-8.3.0-lox5y4c        ncurses-6.2-gcc-8.3.0-4gq3xlb          sqlite-3.33.0-gcc-8.3.0-p32txdg
    bzip2-1.0.8-gcc-8.3.0-e272slz          libbsd-0.10.0-gcc-8.3.0-pvc6kqg        numactl-2.0.14-gcc-8.3.0-m7hcoqw       tar-1.32-gcc-8.3.0-vomwmt7
    cmake-3.18.4-gcc-8.3.0-kncp327         libffi-3.3-gcc-8.3.0-dipzepo           openmpi-3.1.6-gcc-8.3.0-6ip5cid        texinfo-6.5-gcc-8.3.0-l5mvi5n
    diffutils-3.7-gcc-8.3.0-xymd4lc        libiconv-1.16-gcc-8.3.0-53uv3xg        openssl-1.1.1h-gcc-8.3.0-3kl2shv       util-macros-1.19.1-gcc-8.3.0-pzlhwvh
    expat-2.2.10-gcc-8.3.0-asbp6tx         libnl-3.3.0-gcc-8.3.0-5ozmrnn          perl-5.32.0-gcc-8.3.0-2dtzapk          xz-5.2.5-gcc-8.3.0-uu372hq
    fftw-3.3.5-gcc-8.3.0-uqbeflm           libpciaccess-0.16-gcc-8.3.0-akrnujj    pkgconf-1.7.3-gcc-8.3.0-defp244        zlib-1.2.11-gcc-8.3.0-qfbjen2
    findutils-4.6.0-gcc-8.3.0-yrzff5q      libsigsegv-2.12-gcc-8.3.0-uprcjwk      py-docutils-0.15.2-gcc-8.3.0-lgaxxdk   zlib-1.2.11-intel-19.0.4.243-jfq6twm
    flex-2.6.4-gcc-8.3.0-nqpg44o           libtool-2.4.6-gcc-8.3.0-dxntbc5        py-setuptools-50.3.2-gcc-8.3.0-h77txr6
    
    -------------------------------------------------------------------- /usr/share/Modules/modulefiles ---------------------------------------------------------------------
    dot         module-git  module-info modules     null        use.own
    . . .
    


    Daha önceden kullandığımız spack load zlib/qfbjen2 komutu yerine module load zlib-1.2.11-gcc-8.3.0-qfbjen2 komutunu da kullanabiliriz.


    module load zlib-1.2.11-gcc-8.3.0-qfbjen2
    


    Diğer spack komutları

    Tabiki spack ile yapılabilecekler bu kadar değil. Ancak biz burada herşeyi anlatamayız. Siz, spack help komutu ile yada spack web sayfasından ilave açıklamalara erişebilirsiniz. Kolay gelsin.