TR-Grid Üzerinde Örnek Uygulamalar
TR-Grid sitesinden
Konu başlıkları |
Hesap Açılması ve Grid Sertifikası
Tr-Grid’e iş göndermek için kullanıcı arayüzü (UI) orta katman yazılımı çalıştıran lufer.ulakbim.gov.tr makinasında hesap açılması gerekmektedir, bunun için önce http://www.grid.org.tr/ adresinden gerekli bilgi alınabilir. Kullanıcı başvurusu için http://www.grid.org.tr/uyelik/uyelik.php ve sertifika başvurusu için http://www.grid.org.tr/ca/ sayfalarında açıklanan belgeler ve formlar doldurularak başvurular yapılmalıdır. Kullanıcı uzaktaki makinaya verilen kullanıcı_adı ve şifresi ile bağlanacaktır. Kullanıcı sertifikası kulanıcıya .der uzantılı bir dosya olarak e-posta ile gönderilmektedir. Kullanıcı Tr-Grid sertifikasını web tarayıcısına yükleyip, .pfx (veya .p12) uzantılı dosyayı oluşturur. Kullanıcı bu dosyayı uzaktaki makinaya güvenli FTP bağlantısı (WinSCP vb.) ile aktarır. Kullanıcı ssh ile bağlanıp öncelikle bulunduğu dizinde .globus dizini oluşturup içerisine .pfx (veya .p12) uzantılı dosyayı atar. Daha sonra openssl ve opsiyonları ile userkey.pem ve usercert.pem dosyalarını şifrelerle oluşturacaktır. Bu sertifika (usercert) ve anahtar (userkey) dosyalarının dizinleri sırasıyla, 444(-r--r--r--) ve 400(-r--------) olarak ayarlandıktan sonra kullanıcı çalışma dizinine (cd <ENTER>) çıkar.
TR-Grid’e İş Gönderilmesi
Grid sertifikasının geçici bir versiyonunu başlatmak için:
$ voms-proxy-init
yazılırsa aşağıdaki mesaj alınır:
Cannot find file or dir: /home_palamut2/atlas/iturkcakir/.glite/vomses Enter GRID pass phrase: Your identity: /C=TR/O=TRGrid/OU=TAEK/CN=Ilkay Turk Cakir Creating proxy .............................. Done Your proxy is valid until Sun Apr 27 13:25:35 2008
Birinci satırdaki uyarı .glite dizininde vomses dosyası bulunamadığını belirtir. Bu bir hata değildir, ancak bu dosya içine proxy bilgileri yazılabilir. İkinci satırda GRID pass phrase sorulmaktadır, bu şifre daha önce openssl ile .pfx dosyasından sertifika (usercert) dosyası oluşturulurken girilen şifredir. Bu şekilde 24 saat geçerli bir proxy oluşturulmuştur. Tr-Grid’e iş göndermek için öncelikle iş tanımlama dili (jdl) kullanarak örnek dosya yazılır.
ÖRNEKLER
Örnek 1: “Merhaba Tr-Grid” örneği
Editor nano veya pico kullanarak ornek1.jdl dosyası oluşturalım:
#########################################
Executable = “/bin/echo”;
Arguments = "Merhaba Tr-Grid";
StdOutput = "merhaba.out";
StdError = "merhaba.err";
OutputSandbox = {"merhaba.out","merhaba.err"};
##########################################
Burada, Executable - çalıştırılmak istenen komut veya program; Arguments - komuta verilecek bir argüman; StdOutput – standart çıktı dosyası ismi; StdError – standart hata dosyası ismi; OutputSandbox – iş bittiğinde sonucu alınacak dosyaları bulundurur (çok büyük dosyalar için bu kullanılmamalıdır, sonuç depolama elemanına kopyalanmalıdır). Ayrıca, InputSandbox - iş ile birlikte gönderilecek dosyaları bulundurur. İşin Tr-Grid’e gönderimi,
$ edg-job-submit --vo trgridb -o job1 ornek1.jdl
komutu kullanılır. Bunun sonucunda işin Tr-Grid’e gönderildiğine dair aşağıdaki açıklama ekranda gözlenir:
Warning: UI_CAN_NOT_EXECUTE Unable to execute "Python Tkinter Graphical": Unable to load library. Selected Virtual Organisation name (from --vo option): trgridb Connecting to host rb.ulakbim.gov.tr, port 7772 Logging to host rb.ulakbim.gov.tr, port 9002 ===================== edg-job-submit Success ============== The job has been successfully submitted to the Network Server. Use edg-job-status command to check job current status. Your job identifier (edg_jobId) is: - https://rb.ulakbim.gov.tr:9000/wrOui1wN5rSAaszmiKXLUw The edg_jobId has been saved in the following file: /home_palamut2/atlas/iturkcakir/job1 ===========================================================
Gönderilen işin durumu,
$ edg-job-status -i job1
komutu ile öğrenilir. Bu durumda elde edilen bilgi,
*************************************************************
BOOKKEEPING INFORMATION: Status info for the Job : https://rb.ulakbim.gov.tr:9000/wrOui1wN5rSAaszmiKXLUw Current Status: Running Status Reason: Job successfully submitted to Globus Destination: paugrid1.pamukkale.edu.tr:2119/jobmanager-lcgpbs-trgridb reached on: Sat Apr 26 21:06:55 2008 *************************************************************
İşin paugrid1.pamukkale.edu.tr CE elemanında çalışmakta olduğunu göstermektedir. Daha sonraki bir zamanda bu işin bitmiş olduğu görülür.
************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://rb.ulakbim.gov.tr:9000/wrOui1wN5rSAaszmiKXLUw Current Status: Done (Success) Exit code: 0 Status Reason: Job terminated successfully Destination: paugrid1.pamukkale.edu.tr:2119/jobmanager-lcgpbs-trgridb reached on: Sat Apr 26 21:08:46 2008 *************************************************************
Biten işin sonucu,
$ edg-job-get-output -dir . -i job1
komutu ile alınabilir. Bilgilendirme aşağıdaki gibi olacaktır:
Retrieving files from host: rb.ulakbim.gov.tr ( for https://rb.ulakbim.gov.tr:9000/wrOui1wN5rSAaszmiKXLUw ) ********************************************************************************* JOB GET OUTPUT OUTCOME Output sandbox files for the job: - https://rb.ulakbim.gov.tr:9000/wrOui1wN5rSAaszmiKXLUw have been successfully retrieved and stored in the directory: /home_palamut2/atlas/iturkcakir/iturkcakir_wrOui1wN5rSAaszmiKXLUw *********************************************************************************
Alınan dosyaları görmek için,
$ ls -l iturkcakir_wrOui1wN5rSAaszmiKXLUw/
komutu verilir, bunun sonucunda iturkcakir_wrOui1wN5rSAaszmiKXLUw dizininde aşağıdaki dosyalar bulunacaktır:
-rw-r--r-- 1 iturkcakir atlas 0 Apr 27 00:12 merhaba.err -rw-r--r-- 1 iturkcakir atlas 16 Apr 27 00:12 merhaba.out
Bu dosyalardan merhaba.out çıktı dosyasıdır ve içeriği aşağıdaki komutla görülebilir:
$ cat iturkcakir_wrOui1wN5rSAaszmiKXLUw/merhaba.out
Bunun sonucunda,
Merhaba Tr-Grid
yazısını görüp sevinebilirsiniz ☺
Örnek 2: “Rastgele sayı üretimi” örneği
Öncelikle ornek2.exe dosyası oluşturulmalıdır.
$ nano ornek2.f
yazarak bir fortran dosyası açalım, dosyanın içerisine,
do i=1,10
x=rand()
print*, x
enddo
end
satırlarını yazıp, fortran derleyici (g77) ile,
$ g77 ornek2.f –o ornek2.exe
komutlarıyla derliyoruz. Bu örnek için ornek2.jdl dosyası aşağıdaki gibidir.
#########################################
Executable = “ornek2.exe”;
StdOutput = "ornek2.out";
StdError = "ornek2.err";
InputSandbox = {"ornek2.exe"};
OutputSandbox = {"ornek2.out","ornek2.err"};
##########################################
Bu işi göndermek için,
$ edg-job-submit --vo trgridb -o job2 ornek2.jdl
komutu verilir ve aşağıdaki bilgilendirme alınır:
**** Warning: UI_CAN_NOT_EXECUTE **** Unable to execute "Python Tkinter Graphical": Unable to load library. Selected Virtual Organisation name (from --vo option): trgridb Connecting to host rb.ulakbim.gov.tr, port 7772 Logging to host rb.ulakbim.gov.tr, port 9002 ================================ edg-job-submit Success ===================================== The job has been successfully submitted to the Network Server. Use edg-job-status command to check job current status. Your job identifier (edg_jobId) is: - https://rb.ulakbim.gov.tr:9000/Gqr98JZuBWBVL5eib00uKQ The edg_jobId has been saved in the following file: /home_palamut2/atlas/ocakir/ornekler/job2 =============================================================================================
Birkac dakika sonra,
$ edg-job-status -i job2
komutu verildiğinde aşağıdaki bilgi alınır:
************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://rb.ulakbim.gov.tr:9000/Gqr98JZuBWBVL5eib00uKQ Current Status: Done (Success) Exit code: 0 Status Reason: Job terminated successfully Destination: paugrid1.pamukkale.edu.tr:2119/jobmanager-lcgpbs- trgridb reached on: Sat Apr 26 22:01:47 2008 *************************************************************
Gönderilen iş çalışmış ve sonuçlanmıştır. Sonucu aşağıdaki komut ile alınabilir:
$ edg-job-get-output –-dir . -i job2
komut sonucunda,
Retrieving files from host: rb.ulakbim.gov.tr ( for https://rb.ulakbim.gov.tr:9000/Gqr98JZuBWBVL5eib00uKQ ) ********************************************************************************* JOB GET OUTPUT OUTCOME Output sandbox files for the job: - https://rb.ulakbim.gov.tr:9000/Gqr98JZuBWBVL5eib00uKQ have been successfully retrieved and stored in the directory: /home_palamut2/atlas/ocakir/ornekler/ocakir_Gqr98JZuBWBVL5eib00uKQ *********************************************************************************
elde edilir. Gönderilen .exe dosyası Grid üzerinde bir CE makinasında çalıştı ve sonucunu ocakir_Gqr98JZuBWBVL5eib00uKQ dizinindeki ornek2.out dosyasında bulabiliriz:
5 $ cat ocakir_Gqr98JZuBWBVL5eib00uKQ/ornek2.out
0.840187728 0.394382924 0.783099234 0.798440039 0.911647379 0.923969805 0.398436666 0.814766884 0.684218526 0.910972059
Bu örnekte rand() fonksiyonu ile rastgele 10 adet sayı üretilmiş oldu.
Örnek 3: “İki vektörün dikliği” örneği
Bileşenleri verilen iki vektörün dik olup olmadığını gösteren program ornek3.cc, vektörlerin skaler çarpımını yapmaktadır ve bu skaler çarpımın sonucuna göre vektörlerin dik olup olmadığı belirlenmektedir. Program C++ dilinde yazılmıştır, derlenmesi de Tr-Grid üzerinde bir kabuk script ornek3.sh yardımıyla g++ derleyici kullanılarak yapılacak ve kendisi çalışabilir (standalone) bir ornek3.exe dosyası oluşacaktır. Burada bahsedilen ornek3.cc C++ programı:
/* Iki vektorun dikligini test eden C++ programi */
/* vektorler: a=(a1,a2,a3) ve b=(b1,b2,b3) */
#include <iostream>
using namespace std;
int main(){
double a[3+1],b[3+1];
double adotb=0.;
a[1]=1; a[2]=1; a[3]=1;
b[1]=1; b[2]=-2;b[3]=1;
for(int i=1;i<=3;i++)
cout <<"a["<<i<<"]= "<<a[i]<<endl;
for(int i=1;i<=3;i++)
cout <<"b["<<i<<"]= "<<b[i]<<endl;
for(int i=1;i<=3;i++)
adotb += a[i]*b[i];
if (adotb==0.)
cout << "a ve b vektorleri birbirine diktir." << endl;
else{
cout << "a ve b vektorleri birbirine dik degildir." <<endl;
cout << "Skaler carpim="<<adotb<<endl;
}
return 0;
}
ve kabuk script ornek3.sh aşağıdaki gibidir:
g++ ornek3.cc -o ornek3.exe ./ornek3.exe ./ornek3.exe > ornek3.txt
Tr-Grid’e işi göndermek için yazılan ornek3.jdl dosyası aşağıda verilmiştir.
#########################################################
Executable = "/bin/sh";
Arguments = "ornek3.sh";
StdOutput = "ornek3.out";
StdError = "ornek3.err";
InputSandbox = {"ornek3.sh","ornek3.cc"};
OutputSandbox = {"ornek3.out","ornek3.err",”ornek3.txt”};
#########################################################
Bu işin Tr-Grid’de hangi hesaplama elemanında (CE) çalışabileceğini öğrenmek için,
$ edg-job-list-match --vo trgridb ornek3.jdl
komutu verilir. Gelen bilgilendirme aşağıdaki gibidir:
Selected Virtual Organisation name (from --vo option): trgridb
Connecting to host rb.ulakbim.gov.tr, port 7772
***************************************************************************
COMPUTING ELEMENT IDs LIST
The following CE(s) matching your job requirements have been found:
*CEId*
ce.ulakbim.gov.tr:2119/jobmanager-lcgpbs-trgridb
grid01.erciyes.edu.tr:2119/jobmanager-lcgpbs-trgridb
ituce.grid.itu.edu.tr:2119/jobmanager-lcgpbs-trgridb
paugrid1.pamukkale.edu.tr:2119/jobmanager-lcgpbs-trgridb
yildirim.grid.boun.edu.tr:2119/jobmanager-lcgpbs-trgridb
cox01.grid.metu.edu.tr:2119/jobmanager-lcgpbs-trgridb
kalkan1.ulakbim.gov.tr:2119/jobmanager-lcgpbs-trgridb
***************************************************************************
Daha önceki örneklerde olduğu gibi bu işi Tr-Grid’e göndeririz:
$ edg-job-submit --vo trgridb -o job3 ornek3.jdl
hemen işin durumu kontrol edilirse,
************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://rb.ulakbim.gov.tr:9000/t8wBxxepWygCB5r940xU0w Current Status: Scheduled Status Reason: Job successfully submitted to Globus Destination: ituce.grid.itu.edu.tr:2119/jobmanager-lcgpbs-trgridb reached on: Sun Apr 27 12:35:12 2008 *************************************************************
ve birkaç dakika sonra işin durumu kontrol edilirse,
$ edg-job-status -i job3
bilgilendirme aşağıdaki gibi alınır:
*************************************************************
BOOKKEEPING INFORMATION:
7
Status info for the Job : https://rb.ulakbim.gov.tr:9000/t8wBxxepWygCB5r940xU0w
Current Status: Done (Success)
Exit code: 0
Status Reason: Job terminated successfully
Destination: ituce.grid.itu.edu.tr:2119/jobmanager-lcgpbs-trgridb
reached on: Sun Apr 27 12:53:11 2008
*************************************************************
Verilen iş ituce.grid.itu.edu.tr makinasında çalışmış ve iş başarılı bir şekilde tamamlanmıştır. İşin sonucunu almak için,
$ edg-job-get-output --dir . -i job3
komutu verildiğinde aşağıdaki bilgilendirme yapılmaktadır:
Retrieving files from host: rb.ulakbim.gov.tr ( for https://rb.ulakbim.gov.tr:9000/t8wBxxepWygCB5r940xU0w ) ********************************************************************************* JOB GET OUTPUT OUTCOME Output sandbox files for the job: - https://rb.ulakbim.gov.tr:9000/t8wBxxepWygCB5r940xU0w have been successfully retrieved and stored in the directory: /home_palamut2/atlas/ocakir/ornekler/ocakir_t8wBxxepWygCB5r940xU0w *********************************************************************************
Bu işin sonucu ocakir_t8wBxxepWygCB5r940xU0w dizinindeki dosyaların içinde bulunacaktır. Burada çıktı dosyaları ornek3.out ve ornek3.txt dir. Eğer derleme ve çalıştırma sırasında bir hata alındıysa bunlar ornek3.err dosyasının içinde bulunacaktır.
$ cat ocakir_t8wBxxepWygCB5r940xU0w/ornek3.out
komutu verilerek programın çıktısı görülebilir.
a[1]= 1 a[2]= 1 a[3]= 1 b[1]= 1 b[2]= -2 b[3]= 1
a ve b vektorleri birbirine diktir. Benzer şekilde,
$ more ocakir_t8wBxxepWygCB5r940xU0w/ornek3.txt
komutunu vererek ornek3.txt dosyasının içeriği görüntülenebilir. Burada ornek3.out ve ornek3.txt dosyalarının içerikleri aynıdır. Önemli Not: Hazırlanan iş dosyasında ornek3.jdl aşağıdaki satırı ekleyerek işin istenen belirli bir sitede çalışmasını sağlayabiliriz.
Requirements=other.GlueCEUniqueID=="cox01.grid.metu.edu.tr:2119/jobmanager-lcgpbs-trgridb";
Bu durumda iş, gönderildikten sonra cox01.grid.metu.edu.tr makinasında çalışmaktadır.
************************************************************* BOOKKEEPING INFORMATION: Status info for the Job : https://rb.ulakbim.gov.tr:9000/naHofpXRVYArVA54RHtrcQ Current Status: Running Status Reason: Job successfully submitted to Globus Destination: cox01.grid.metu.edu.tr:2119/jobmanager-lcgpbs-trgridb reached on: Sun Apr 27 15:02:28 2008 *************************************************************
İş tamamlandıktan sonra işin sonucu benzer şekilde alınabilir.
Hazırlayanlar: O. Çakır, İ. Türk Çakır





