TÜBİTAK »  ULAKBİM » TR-Grid »  Wiki-Grid Anasayfa İletişim / Bilgi Edinme  |  Site Haritası  |  English 
ULAKBİM

TR-Grid Üzerinde Örnek Uygulamalar

TR-Grid, özgür ansiklopedi

Git ve: kullan, ara

Konu başlıkları

[değiştir] 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.


[değiştir] 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.

[değiştir] ÖRNEKLER

[değiştir] Ö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 ☺


[değiştir] Ö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.


[değiştir] Ö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

27 Haziran 2008
© 2007 TÜBİTAK-ULAKBİM Görüşleriniz