Modüller
Modül Dosyaları ve Çevre Değişkenleri
Herhangi bir uygulamayı çalıştırabilmek için sistemin, o uygulamanın dosyalarının, o uygulamayı derlerken kullanılan kütüphanelerin nerede olduğunu bilmesi gerekir. Bu bildirim LD_LIBRARY_PATH
, PATH
ve diğer bazı çevre değişkenlerin ayarlanması ile yapılır. Bu değişkenlerin ayarlanması ile yapılmış olan değişikliği geri almak için ya logout olup tekrar login olmak ya da bu değişkenlerin içerisinden, ilgili kısmın geri çıkarılması gerekmektedir. Bu işlem zor olmamakla birlikte, kullanılacak her uygulama için, her bağlantıda yapılması kullanıcılar üzerinde bir iş yükü oluşturmaktadır. Örnegin ortak uygulama alanında kurulu Espresso 5.0.2 uygulamasını çalıştırmak için LD_LIBRARY_PATH ve PATH değişkenlerine aşağıdaki gibi değerlerinin atanması gerekmektedir.
export LD_LIBRARY_PATH=/truba/sw/centos6.4/app/espresso/5.0.2-impi-mkl/lib:$LD_LIBRARY_PATH
export PATH=/truba/sw/centos6.4/app/espresso/5.0.2-impi-mkl/bin:$PATH
Çevre değişkenlerinin otomatik olarak ayarlanması, ya da yapılan ayarlanmanın geri alınmasını otomatize etmek için module dosyaları kullanılmaktadır.
Merkezi dosya sisteminde bulunan uygulama, kütüphane ve derleyicilerin bazıları için module dosyaları oluşturulmuştur. TRUBA üzerindeki mevcut module dosyalarının listesine module avail
komutu ile ulaşabilirsiniz.
--------------------------------------------- /truba/sw/centos7.3/modulefiles ---------------------------------------------
centos7.3/app/abinit/8.6.1-openmpi-1.8.8-gcc-4.8.5-AMDOPT centos7.3/app/siesta/4.1-b3-mp-gcc-4.8.5-E5V1
centos7.3/app/abinit/8.6.1-openmpi-1.8.8-gcc-4.8.5-E5V1 centos7.3/app/siesta/4.1-b3-mp-gcc-4.8.5-E5V3-E5V4
centos7.3/app/abinit/8.6.1-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4 centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-AMDOPT
centos7.3/app/cp2k/7.1.0-omp-gcc9.2-GOLD centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V1
centos7.3/app/espresso/6.1-impi-mkl-PS2016 centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4
centos7.3/app/espresso/6.1-openmpi-1.8.8-gcc-4.8.5-AMDOPT centos7.3/app/vmd/1.9.2
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-E5V1 centos7.3/app/vmd/1.9.3-text
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-E5V3 centos7.3/app/yambo/4.5.1-impi-mkl-PS2018
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-E5V4 centos7.3/comp/cmake/3.10.1
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-GOLD centos7.3/comp/cmake/3.18.0
centos7.3/app/espresso/6.2-impi-mkl-PS2018 centos7.3/comp/gcc/6.4
centos7.3/app/espresso/6.3-impi-mkl-PS2018 centos7.3/comp/gcc/7
centos7.3/app/espresso/6.3-impi-mkl-PS2018-GOLD centos7.3/comp/gcc/9.2
centos7.3/app/espresso/6.4.1-impi-mkl-PS2019-GOLD centos7.3/comp/intel/PS2013-SP1
centos7.3/app/espresso/6.6-impi-mkl-PS2018-GOLD centos7.3/comp/intel/PS2016-update3
centos7.3/app/gamess/201712-openmpi-1.8.8-mkl-PS2013 centos7.3/comp/intel/PS2017-update1
centos7.3/app/gamess/201712-openmpi-1.8.8-mkl-PS2013-AMD centos7.3/comp/intel/PS2018-update2
centos7.3/app/gromacs/2018-impi-mkl-PS2016-GOLD-CUDA centos7.3/comp/intel/PS2019-update1
centos7.3/app/gromacs/2018-impi-mkl-PS2018-E5V4 centos7.3/comp/python/3.5.5-intel
centos7.3/app/gromacs/2018-impi-mkl-PS2018-GOLD centos7.3/comp/python/3.6.5-gcc
centos7.3/app/gromacs/2019-impi-mkl-PS2019-E5V4 centos7.3/lib/acml/5.3.1-gfortan64
centos7.3/app/gromacs/2019-impi-mkl-PS2019-GOLD centos7.3/lib/acml/5.3.1-gfortan64_mp
centos7.3/app/gromacs/2020-impi-mkl-PS2018-E5V4 centos7.3/lib/acml/6.1.0-gfortan64
centos7.3/app/gromacs/2020-impi-mkl-PS2018-GOLD centos7.3/lib/acml/6.1.0-gfortan64_mp
centos7.3/app/gromacs/2020-impi-mkl-PS2018-GOLD-CUDA centos7.3/lib/acml/6.1.0-gfortran64
centos7.3/app/gromacs/4.6.5-openmpi-1.8.8-gcc-4.8.5-E5V1 centos7.3/lib/cuda/10.0
centos7.3/app/gromacs/5.1.4-impi-mkl-PS2016 centos7.3/lib/cuda/10.1
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-AMDOPT centos7.3/lib/cuda/7.5
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V1 centos7.3/lib/cuda/9.0
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V3 centos7.3/lib/cuda/9.2
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V3-cuda centos7.3/lib/fftw/3.3.7-gcc-4.8.5-AMDOPT
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V4 centos7.3/lib/fftw/3.3.7-gcc-4.8.5-E5V1
centos7.3/app/lammps/17Nov16-impi-mkl-PS2016 centos7.3/lib/fftw/3.3.7-gcc-4.8.5-E5V3-E5V4
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-gcc-4.8.5-AMDOPT centos7.3/lib/fftw/3.3.7-gcc-7.0.1-GOLD
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-mkl-PS2013-E5V1 centos7.3/lib/fftw/3.3.7-intel-PS2013-E5V1
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-mkl-PS2013-E5V3 centos7.3/lib/fftw/3.3.7-intel-PS2013-E5V3-E5V4
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-mkl-PS2013-E5V4 centos7.3/lib/lapack/3.4.2-gcc-4.8.5
centos7.3/app/lammps/4Feb21-openmpi-1.8.8-gcc-4.8.5 centos7.3/lib/lapack/3.4.2-intel-PS2013
centos7.3/app/matlab/R2018b centos7.3/lib/lapack/3.6.1-gcc-4.8.5-GOLD
centos7.3/app/namd/2017-11-10-multicore centos7.3/lib/lapack/3.7.0-gcc-4.8.5
centos7.3/app/namd/2017-11-10-multicore-cuda centos7.3/lib/openmpi/1.8.8-gcc-4.8.5
centos7.3/app/namd/2.12-ibverbs centos7.3/lib/openmpi/1.8.8-intel-PS2013
centos7.3/app/namd/2.14-multicore centos7.3/lib/openmpi/1.8.8-intel-PS2016
centos7.3/app/namd/2.14-multicore-CUDA centos7.3/lib/openmpi/3.0.0-gcc-7.0.1
centos7.3/app/namd/2.9-multicore-cuda centos7.3/lib/openmpi/4.0.1-gcc-7.0.1
centos7.3/app/nwchem/6.8-openmpi-1.8.8-gcc centos7.3/lib/openmpi/4.0.1-intel-PS2018
centos7.3/app/openfoam/8 centos7.3/lib/scalapack/2.0.2-openmpi-1.8.8-acml-6.1.0-gcc-4.8.5-AMDOPT
centos7.3/app/openfoam/v1912 centos7.3/lib/scalapack/2.0.2-openmpi-1.8.8-lapack-3.4.2-gcc-4.8.5
centos7.3/app/R/3.4.3-gcc centos7.3/lib/scalapack/2.0.2-openmpi-1.8.8-lapack-3.4.2-PS2013
centos7.3/app/R/4.0.2-gcc centos7.3/lib/scalapack/2.0.2-openmpi-1.8.8-lapack-3.7.0-gcc-4.8.5
centos7.3/app/root/v6.20.02-gcc4.8-cmake3.10 centos7.3/lib/scalapack/2.0.2-openmpi-1.8.8-lapack-3.7.0-gcc-4.8.5-GOLD
centos7.3/app/siesta/4.1-b3-mp-gcc-4.8.5-AMDOPT
Kullanılmak istenilen uygulama ya da kütüphane
module load <module_adı>
komutu ile yüklenebilir. Yüklü modüllerin listesi
module list
komutu ile görülebilir. Silinmek istenilen modül
module unload <module_adı>
komutu ile silinebilir. Yüklü olan modüllerin hepsi
module purge
komutu ile silinebilir. Ayrıntılı bilgi için module kullanıcı kitabı sayfasını ziyaret edebilirsiniz
İlgili modül hakkında detaylı bilgi almak için module show
komutu kullanılabilir.
module show centos7.3/app/espresso/6.2-impi-mkl-PS2018
-------------------------------------------------------------------
/truba/sw/centos7.3/modulefiles/centos7.3/app/espresso/6.2-impi-mkl-PS2018:
module-whatis loads the modules environment
prepend-path --delim=: PATH /truba/sw/centos7.3/app/espresso/6.2-impi-mkl-PS2018/bin
setenv ESPRESSO_DIR /truba/sw/centos7.3/app/espresso/6.2-impi-mkl-PS2018
prepend-path --delim=: LD_LIBRARY_PATH /truba/sw/centos7.3/app/espresso/6.2-impi-mkl-PS2018/lib
-------------------------------------------------------------------
Sistemdeki modül dosyaları ilgili programın/kütüphanenin derlendiği işletim sistemi ve işlemci modeline göre hiyerarşik olarak hazırlanmıştır. Aynı kütüphanelerle ve aynı işletim sistemi üzerinde derlenmiş uygulamalar farklı işlemciler üzerinde genelde çalışabilirken (örnegin Opteron işlemciler için hazırlanmış uygulamalar büyük ihtimalle Xeon işlemciler üzerinde de çalışacaktır), işletim sisteminin farklı olduğu durumda büyük ihtimal çalışmayacaktır.
Modül isimlendirme sistematiği
Merkezi alandaki uygulama veya kütüphaneler genel olarak ortak bir sistematik kullanılarak isimlendirilmektedir. Örnek olarak aşağıdaki modül dosyasını inceleyecek olursak:
centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4
centos7.3 –> uygulamanın derlendiği işletim sistemi
app –> modülün türü; uygulamalar için app
, kütüphaneler için lib
, derleyiciler için comp
siesta –> uygulamanın / kütüphanenin adı
4.1-b3 –> uygulamanın /kütüphanenin versiyonu
openmpi-1.8.8 –> derleme sırasında kullanılan mpi
kütüphanesi ve versiyonu. Openmp/thread için mp
, eğer herhangi bir paralelleştirme kullanılmamışsa serial
ifadeleri gelebilir.
gcc-4.8.5 –> derleme sırasında kullanılan derleyici. Eğer intel
derleyiciler kullanılmışsa PS2013, PS2016
vs gelebilir. Eğer herhangi bir matematik kütüphanesi derleme sırasında kullanılmışsa, bu alandan önce acml, mkl
gibi ifadeler gelebilir. ACML
sadece AMD
işlemciler ve gcc
derleyici kullanılan uygulamalarda/kütüphanelerde, mkl
ise intel derleyicilerle derlenen uygulamalarda/kütüphanelerde kullanılmaktadır.
E5V3-E5V4 –> Derlemenin hangi işlemci modeli için yapıldığını gösteren etikettir.
Altyapıdaki donanımlar farklı tarihlerde farklı ihalelerle alınmış olduğu için, altyapıda farklı işlemci üreticilerinden farklı işlemci mimarileri ve farklı işletim sistemleri yüklü olabilmektedir. Güncel donanım işlemci bilgisi (2018-02-22) aşağıdaki gibidir. Sunucu aileleri ile ilgili ayrıntılı bilgiye TRUBA Kaynakları
sayfasından ulaşabilirsiniz.
Sardalya sunucuları –> Intel Xeon E5 2690 V4 (sardalya kuyruğu)
Orkinos sunucusu –> Intel Xeon E7 4850 V3 (smp kuyruğu)
Barbun sunucuları –> Intel Xeon Scalable GOLD 6148 (barbun, barbun-cuda kuyrukları)
Akya sunucuları –> Intel Xeon Scalable GOLD 6148 (akya-cuda kuyruğu)
Hamsi sunucuları –> Intel Xeon Scalable 2 GOLD 6528R (hamsi kuyruğu)
Palamut sunucuları –> AMD EPYC 7742 (palamut-cuda kuyruğu)
Farklı işlemci modellerinde, işlemcinin ve sunucunun performansını toptan etkileyen, farklı komut setleri bulunmaktadır. Herhangi bir uygulama derlenirken uygulamanın hangi işlemci ve hangi sunucu için derleneceğini bilmek ve buna uygun optimizasyon seçeneklerini kullanmak önem taşımaktadır.
Not
Merkezi alandaki uygulamalar/kütüphaneler derlenirken, işlemcilerden en yüksek performansı alabilmek için, ilgili işlemci modeli için tüm optimizasyon seçenekleri kullanılmaktadır. Uygulamanın hangi sunucu için derlendiği, modül dosyasının sonuna eklenmiş olan E5V1, E5V3, E5V4, AMDOPT, GOLD
kısaltmaları ile belirtilmiştir. Uygulama hangi kuyruk üzerinde çalıştırılacaksa, o sunucu/işlemci ailesi için derlenmiş modül kullanılmalıdır.
Not
İşlemci modeli ile ilgili herhangi bir ibare bulundurmayan modüller genel olarak herhangi bir sunucu üzerinde çalıştırılabilirler. Ayrıca genel olarak, versiyon numarası yüksek olan işlemciler, versiyon numarası düşük olan işlemcilerdeki komut setlerini barındırırlar. Bu nedenle versiyon numarası düşük olan bir uygulama/kütüphane modülü, versiyon numarası yüksek olan bir işlemci modelinde sorunsuz olarak çalıştırılabilirler. Ancak bunun tersi her zaman mümkün olmayabilir.