Yazılımlar

TRUBA Wiki Sayfası sitesinden

Git ve: kullan, ara

Konu başlıkları

Genel

TRUBA gibi batch tabanlı sistemlerde, kullanıcıların işlerini interaktif olarak çalıştırmaları mükün değildir. Kullanıcılar kullanıcı arayüzüne bağlandıktan sonra işlerini ve dosyalarını yapılandırarak, işlerini iş kuyruklarına göndermek durumundadır. İş kuyruklarında işin sırası geldiğinde ve talep edilen hesaplama kaynağı oluştuğunda, iş otomatik olarak başlar ve yapması gerken hesapları yaptıktan sonra sonlanır. Bu nedenle kullanılacak uygulamların linux komut satırından başlatılıp, herhangi bir kullanıcı etkileşimine ihtiyaç olmadan (ihtiyaç duyulan parametreleri komut satırı argümanları yada input dosyalarından almalıdır) çalışabilecek ve grafik ekrana ihtiyaç duymayacak özellikte olması gerekmektedir.


Lisansı ücretli uygulamalar

Sistemde kurulu uyğulamların bir kısmı lisansı ücretli olan uygulamalardır. TRUBA lisansı ücretli olan hiçbir uygulamayı (Intel derleyicileri hariç) sağlamamaktadır. Bu tür uygulamaları kullanmak isteyen kullanıcılar TRUBA'da çalışmaya uygun lisansı da kendileri (yada bağlı bulundukları kurum) sağlamalıdır.

TRUBA'da kullanıcılar sadece kullanıcı arayüzü sunucusuna erişebilir. Ancak tüm hesaplamalar hesaplama suncuları üzerinde gerçekleştirilir. İş kuyruklarına gönderilen işlerin hangi hesaplama sunucuları üzerinde çalışmaya başlayacağı önceden belli degildir. O nedenle kullanıcıların bilgisayar bağımsız (floating) bir lisansa ihtiyaçları bulunmaktadır. Ayrıca uygulama çalışmaya başladığında, kullanıcının lisansının doğrulanabilmesi için bir bir lisans sunucusuna ihtiyaç vardır. Bu lisans sunucusu kullanıcı (yada kurumu) tarafından sağlanmalı ve işletilmelidir. Bu nedenle kullanıcının kurumundaki lisans sunucusun TRUBA bilgisayarlarlarına (193.140.99.241) lisans doğrulaması için izin vermesi gerekmektedir.

Moddüller

Modül dosyaları ve çevre değişkenler
Herhangi bir uygulamayı çalıştırabilmek içim, 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 gerli almak için ya logout olup tekrar login olmak yada, bu değişkenlerin içerisinden, ilgili kısımı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ı, yada 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. Mevcut modul dosyalarının listesi “module avail” komutu ile
$>module avail
centos7.3/app/abinit/8.6.1-openmpi-1.8.8-gcc-4.8.5-AMDOPT
centos7.3/app/abinit/8.6.1-openmpi-1.8.8-gcc-4.8.5-E5V1
centos7.3/app/abinit/8.6.1-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4
centos7.3/app/espresso/6.1-impi-mkl-PS2016
centos7.3/app/espresso/6.1-openmpi-1.8.8-gcc-4.8.5-AMDOPT
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-E5V1
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-E5V3
centos7.3/app/espresso/6.1-openmpi-1.8.8-mkl-PS2013-E5V4
centos7.3/app/gromacs/5.1.4-impi-mkl-PS2016
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-AMDOPT
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V1
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V3
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V3-cuda
centos7.3/app/gromacs/5.1.4-openmpi-1.8.8-gcc-4.8.5-E5V4
centos7.3/app/lammps/17Nov16-impi-mkl-PS2016
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-gcc-4.8.5-AMDOPT
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-mkl-PS2013-E5V1
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-mkl-PS2013-E5V3
centos7.3/app/lammps/17Nov16-openmpi-1.8.8-mkl-PS2013-E5V4
centos7.3/app/namd/2017-11-10-multicore
centos7.3/app/namd/2017-11-10-multicore-cuda
centos7.3/app/namd/2.9-multicore-cuda
centos7.3/app/siesta/4.1-b3-mp-gcc-4.8.5-AMDOPT
centos7.3/app/siesta/4.1-b3-mp-gcc-4.8.5-E5V1
centos7.3/app/siesta/4.1-b3-mp-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/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V1
centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4

görülebilir. Kullanılmak istenilen uygulama yada kütüphane “module load <module_adı>” komutu ile yüklenebilir, yüklü modullerin listesi “module list” komutu ile görülebilir. Silinmek istenilen modül “module unload <module_adı>” komutu ile silinebilir.
$>module load ccentos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4
$>module unload centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4


Modül hakkında detaylı bilgi almak için module show komutu kullanılabilir.
module show centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4
-------------------------------------------------------------------
/truba/sw/centos7.3/modulefiles/centos7.3/app/siesta/4.1-b3-openmpi-1.8.8-gcc-4.8.5-E5V3-E5V4:

module-whatis	  loads the Siesta-4.1-b3  Openmpi version  for Intel Xeon E5V3, E5V4 and E7V3    
prepend-path	 --delim=: PATH /truba/sw/centos7.3/app/siesta/4.1-b3/bin 
setenv		 SIESTA_DIR /truba/sw/centos7.3/app/siesta/4.1-b3/ 
setenv		 SIESTA siesta-openmpi-1.8.8-gcc-4.8.5-E5V4 
-------------------------------------------------------------------


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ışabilirlen (örnegin Opteron işlemciler için hazırlanmış uygulamalar büyük ihtimalle Xeon işlemciler üzerinde de çalışacaktır), eğer işletim sisteminin farklı olduğu durumda büyük ihtimal çalışmayacaktır.


Module isimlendirme sistematigi
Merkezi alandaki uygulama veya kütüphaneler genel olarak ortak bir sistematik kullanılarak isimlendirilmektedir. Örnek olarak aşağıdai 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 kullkanılmışsa, bu alandan önce acml, mkl gibi ifadeler gelebilir. ACML sadece AMD işemciler 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ım 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.
Mercan sunucuları --> AMD Opteron 6176 (mercan kuyruğu)
Levrek sunucuları --> Intel Xeon E5 2690 V1 (single, short, mid1,mid2,long kuyrukları)
Levrekv2 sunucuları --> Intel Xeon E5 2680 V3 (cuda ve levrekv2 kuyrugu)
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)


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şır.
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.
İş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.

Mevcut uygulamalar ve kütüphaneler

Kullanıcıların kullanımına sunulmuş, ve farklı işletim sistemleri ve farklı işlemci mimarileri için derlenmiş, lisansı ücretsiz uygulamalar merkezi yazılım alanına (truba/sw) yükkenmiş bulunmaktadır. Hiyerarşik olarak uygulamalar app, kütüphaneler lib derleyiciler comp dizinine yerleştirilmiştir.
Quantum Espresso, Namd, Amber gibi sık kullanılan uygulamların, Lapack, Blas, FFTW, petsc, mkl gibi kütüphanelerin ve Intel derleyicilerinin farklı versiyonları yazılım dizinlerine yüklenmiştir. Yazılımların yeni versiyonları çıktıkça ve talep oldukça yeni yazılımlar ve yeni versiyonlar yüklenilmeye devam edilecektir.
Ortak alanda bulunan yazılımlar tüm kullanıcılar düşümülerek hazırlandığı için genel opsiyonları ile derlenmiş olup, işlemci mimarisi için geçerli olan optimizasyonlar hariç hiçbirinde herhangi bir optimizasyon yapılmamıştır. Bu nedenle kullanıcıların bekledikleri performansları veremeyebilirler, Ya da yapmak istedikleri hesaplama türünü gerçekleştiremiyor olabilirler. Bu ve benzeri durumlar için, kullanıcıların kullanmak istedikleri uygulamaları kendi ev dizinlerinde kendilerinin derlemelerini, ihtiyaç duydukları optimizasyonu gerçekleştirmelerini öneriyoruz.
Lisansı ücretli olan yazılımlar, küme üzerinde çalışmasına izin verecek lisans edinildikten sonra kullanıcı tarafından kendi ev dizininde derlenmeli ve oraya yüklenmelidir. Bu tür yazılımların lisansları, kullanımları, kurulumları vb konularda her türlü sorumluluk kullanıcının kendisine aittir. Eğer yüklenecek lisanslı yazılım floating yada benzeri bir lisanslama modeli ile lisans doğrulama servisine (flexlm vs) ihtiyaç duyuyorsa, ilgili servis kullanıcının kendi kurumu tarafından sağlanmalı ve buradaki hesaplama sunucularının bu servise erişmesine izin verilmelidir.
Küme üzerinde sıklıkla kullanılan uygulamalar:
Mevcut kütüphaneler:
  • Blas/Lapack
  • Scalapack
  • MKL
  • ACML
  • FFTW
  • CUDA
  • Openmpi
  • Intel MPI
Mevcut derleyiciler:
  • Intel composer XE 2013 sp1
  • Intel Parallel Studio2016 update3
  • Intel Parallel Studio2017 update1
  • Intel Parallel Studio2018 update2
  • Intel Parallel Studio2019 update1

Derleyiciler

Mart 2018 itibari ile SMP kümesinde hizmet veren Orkinos1 sunucusu haric tüm hesap sunucularının büyük kısmında CentOS7.3 işletim sistemi yüklü bulunmaktadır. Orkinos1 sunucu üzerinde RedHat7.2 işletim sistemi bulunmaktadır.

GCC ve Intel derleyicilerinin farklı versiyonları sistemde halihazırda yüklü bulunmaktadır. Modül avail komutu ile bakıldığında, yüklü derleyiciler "comp" altında listelenmektedir.

$>module avail
centos7.3/comp/gcc/6.4
centos7.3/comp/gcc/7
centos7.3/comp/intel/PS2013-SP1
centos7.3/comp/intel/PS2016-update3
centos7.3/comp/intel/PS2017-update1
centos7.3/comp/intel/PS2018-update2
centos7.3/comp/intel/PS2019-update1
centos7.3/comp/python/3.5.5-intel
centos7.3/comp/python/3.6.5-gcc

Bu listeye yeni derleyeciler eklenebileceği için, her herleme öncesinde 'module avail' komutu ile gücel uygulama/kütüphane ve derleyiciler kontrol edilmelidir.

Intel Derleyiciler

Intel işlemcili sunucularda, işlemcilerin sağladığı ektra performans özelliklerini (özellikle AVX2 ve AVX-512) verimli bir şekilde kullanabilmek için intel derleyicilerinin son versiyonlarının kullanılmasını önermekteyiz. Bu derleyicileri kullanmaya başlamadan önce kullanılacak versiyonla ilgili çevre değişkenler (PATH, LD_LD_LIBRARY_PATH vs..) ayarlanmalıdır. Çevre değişkenlerini ayarlamak için modül mekanizması kullanılabileceği gibi paketle birlikte gelen betikler de kullanılabilir.


$>source /truba/sw/centos7.3/comp/intel/PS2018-update2/bin/compilervars.sh intel64

yada

module load centos7.3/comp/intel/PS2018-update2


Çevre değişkenleri ayarlandığında, intel derleyicileri (icc, ifort, icpc vs) ile birlikte pek çok performans kütüphanesi (Intel-mpi, MKL) ve geliştirme aracı (ipp, itune vs) kullanılabilir hale gelmektedir. Bu araçların kullanımı hakkında ayrıntılı bilgiye üreticinin websayfasından ulaşılabilir.

Eğer kullanıcının yaptığı tüm derlemelerde Intel derleyicilerinin aynı versiyonu kullanılıyor ise, çevre değişkenler her login olunduğunda ayarlanmak yerine, .profile (yada .bashrc) içerisinde ayarlanarak , her loginde yeniden ayarlamaya gerek kalmadan kullanılabilir.

GCC Derleyiciler

üm sistemlerde GCC'nin Centos7.3 işletim sistemi ile birlikte gelen 4.8.5 versiyonu varsayılan yolda kurulu durumdadır. Kullanmak için herhangi bir modül çağırmaya yada çevre değişkeni ayarlamaya gerek yoktur. Güncel işlemcilerin güncel özelliklerini kullanabilmek için GCC'nin daha yeni versiyonunu kullanmak isteyen kullanıcılar, GCC'nin güncel versiyonlarını moduller arasından load edebilirler.

$>module avail
centos7.3/comp/gcc/6.4
centos7.3/comp/gcc/7

module load centos7.3/comp/gcc/7

CUDA

CUDA kütüphanesinin farklı versiyonları /truba/sw/centos7.3/lib/cuda dizini altında yüklüdür.. Kütüphaneler ve araçlar doğrudan bu dizin altından kullanılabileceği gibi, ilgili kütüphanelerin modülleri load edilerek de kullanılabilir.. Mevcut versiyonlar:


  • centos7.3/lib/cuda/7.5
  • centos7.3/lib/cuda/9.0


lgili kütüphaneler, $TRUBA_SW/lib/cuda/7.5 ve $TRUBA_SW/lib/cuda/9.0 dizinlerinde bulunmaktadır. Bu dizinlerde ayrıca örnek CUDA kodları ve uygulama örnekleri bulunmaktadır. Kurulum alanında yer alan örnekler kaynak yöneticisi aracılığı ile CUDA desteki kuyruklarda ya da kullanıcı arayüz sunucusunda (levrek1) komut satırından çalıştırılabilir.

Nümerik Kütüphaneler

İşlemci üreticileri tarafından sağlanan ve ilgili işlemci markası için optimize edilmiş AMD ACML ve Intel MKL'nin farklı versiyonları ile birlikte blas, lapack, blacs, scalapack, fftw vs. gibi pek çok temel matematik kütüphanesinin farklı versiyonları, farklı işlemci aileleri için optimize edilmiş olarak merkezi alanda yüklü bulunmaktadır. Kullanılacak kütüphanenin, mevcut işletim sistemi için derlenmiş olması önemlidir. Bu nedenle kullanılacak modülün mevcut işletim sistemi adı (centos7.3) ile başlaması yada eğer modül kullanılmayacaksa, kütüphanelerin /truba/sw/centos7.3/lib dizini altında kurulu olan kütüphanelerden seçişmesi gerekmektedir.

Intel MKL

Yaptığımız denemelerde, küme üzerinde Intel derleyici ve kütüphanelerinin kullanılmasının, uygulamanın performansını arttırdığı gözlemlenmiştir. Kullanıcıların ygulama derleme sırasında işlemci ailesi ile uyumlu olan Intel derleyicilerini ve kütüphanelerini kullanmaları önerilmektedir.

MKL kütüphanesi, Intel deryeyicileri load edildiği zaman otomatik olarak kullanılır duruma gelmektedir. Ayrıntılı bilgi için [Intel Derleyicileri]

MKL kütüphanesinin kullanımı ve özellikleri hakkında detaylı bilgiye üreticisinin web sayfasından ulaşılabilir. Ayrıca Intel Developer Forum'da uygulama öreneklerine ve diğer kullanıcıların tecrübelerine ulaşılabilir.

AMD ACML:

  • centos7.3/lib/acml/5.3.1-gfortan64
  • centos7.3/lib/acml/5.3.1-gfortan64_mp
  • centos7.3/lib/acml/6.1.0-gfortan64
  • centos7.3/lib/acml/6.1.0-gfortan64_mp

Kütüphanenin farklı versiyonları /truba/sw/centos7.3/lib/acml/ altında kurulu bulunmaktadır.


FFTW3

FFTW3'ün 3.3.7 versiyonu altyapıdaki farklı işlemci aileleri için yüklü bulunmaktadır. Aşağıdaki modüller:

  • centos7.3/lib/fftw/3.3.7-gcc-4.8.5-AMDOPT
  • centos7.3/lib/fftw/3.3.7-gcc-4.8.5-E5V1
  • centos7.3/lib/fftw/3.3.7-gcc-4.8.5-E5V3-E5V4
  • centos7.3/lib/fftw/3.3.7-intel-PS2013-E5V1
  • centos7.3/lib/fftw/3.3.7-intel-PS2013-E5V3-E5V4

load edilerek kullanılabilir, yada kurulu olduğu dizinden (/truba/sw/centos7.3/lib/fftw/) direk kullanılabilir.


fftw3 modülü yüklendiği zaman, aşağıdaki fftw kütüphanelerine erişim sağlanabilmektedir:

  • standart (statik ve dinamik,intel derleyicilerle)
  • float (statik ve dinamik,intel derleyicilerle)
  • long double(statik ve dinamik,intel derleyicilerle)
  • mpi standart (statik ve dinamik, impi ve intel derleyicilerle)
  • mpi float (statik ve dinamik, impi ve intel derleyicilerle)
  • mpi long double (statik ve dinamik, impi ve intel derleyicilerle)

BLAS/LAPCAK

Temel matematik ve matris kütüphaneleridir. Bu kütüphanelerin sağladığı pek çok rutin ACML ve MKL taradından optimize bir şeklde sağlanmaktadır aynı zamanda.. Kütüphanelerin modül dosyaları henüz hazırlanmamış olmakla birlikte, ilgili kütüphaneleri kullanmak isteyen kullanıcılar /truba/sw/centos7.3/lib/lapack dizini altından blas ve lapack kurulumlarını kullanabilirler..


BLACS/SCALAPACK

LAPACK kütüphanesinin dağıtık kullanılabilmesini sağlayan ve ekstra özellikler getiren matematik ve haberleşme kütüphaneleridir.. Modül dosyaları hazırlanmamış olduğu için, kütüphaneler doğrudan /truba/sw/centos7.3/lib/scalapack dizini altından kullanılabilirler..

Kişisel araçlar