Submissão de Jobs no GridUNESP
Marco Dias e Gabriel Winckler
SPRACE-NCC
Criação do Proxy
I
Para começar a utilizar os recursos é necessária a criação do
proxy:
[pepe@access ~]$ source /OSG/client-1.2.3/setup.sh [pepe@access ~]$ grid-proxy-init
Your identity: /C=BR/O=UNESP/OU=ncc.unesp.br/CN=Pepe Legal Enter GRID pass phrase for this identity:
Creating proxy ... Done Your proxy is valid until: Tue Dec 15 07:14:19 2009
[pepe@access ~]$ grid-proxy-info
subject : /C=BR/O=UNESP/OU=ncc.unesp.br/CN=Pepe Legal/CN=268359979 issuer : /C=BR/O=UNESP/OU=ncc.unesp.br/CN=Pepe Legal
identity : /C=BR/O=UNESP/OU=ncc.unesp.br/CN=Pepe Legal type : Proxy draft (pre-RFC) compliant impersonation proxy strength : 512 bits
path : /tmp/x509up_u666 timeleft : 11:59:53
Submetendo usando Globus
I
Primeiros passos...
[pepe@access ~]globusrun -a -r ce.grid.unesp.br GRAM Authentication test successful
[pepe@access ~]$time globus-job-run ce.grid.unesp.br/jobmanager-fork /bin/hostname ce.grid.unesp.br
real 0m2.349s user 0m0.102s sys 0m0.078s
[pepe@access ~]$time globus-job-run ce.grid.unesp.br/jobmanager-condor /bin/hostname node081
real 1m5.648s user 0m0.114s sys 0m0.068s
Submetendo usando Globus
I
Podemos usar um script como executável:
[pepe@access ~]$ cat myjob #!/bin/bash
echo $PWD hostname -f env
[pepe@access ~]$ globus-job-submit ce.grid.unesp.br/jobmanager-fork -s ./myjob.sh https://ce.grid.unesp.br:38019/5557/1260827558/
[pepe@access ~]$ globus-job-status https://ce.grid.unesp.br:38019/5557/1260827558/ DONE
[pepe@access ~]$ globus-job-get-output https://ce.grid.unesp.br:38019/5557/1260827558/ /home/uscms001 ce.grid.unesp.br GLOBUS_LOCATION=... OSG_WN_TMP=... OSG_SITE_WRITE=... LD_LIBRARY_PATH=...
[pepe@access ~]$ globus-job-clean https://ce.grid.unesp.br:38019/5557/1260827558/ WARNING: Cleaning a job means:
- Kill the job if it still running, and - Remove the cached output on the remote resource DONE
Usando o condor-g
I
Submissão de jobs mais complexos pode ser feitas com o
condor . Criamos um arquivo para ser submetido:
[pepe@access ~]$ cat submit_gridexecutable = env-test.pl
globusscheduler = ce.grid.unesp.br/jobmanager-condor universe = globus
environment = foo=bar; zot=qux output = env-test.$(Process).out log = env-test.$(Process).log queue
environment = foo=bar; zot=qux queue
environment = foo=bar; zot=qux queue
[pepe@access ~]$ cat env-test.pl #!/usr/bin/env perl
foreach $key (sort keys(%ENV)) {
print "$key = $ENV{$key}\n" }
Usando o condor-g
I
E fazemos a submissão do job, usando o comando abaixo:
[pepe@access ~]$ condor_submit submit_grid Submitting job(s)...
Logging submit event(s)... 3 job(s) submitted to cluster 43. [pepe@access ~]$ condor_q
-- Submitter: access.grid.unesp.br : <200.145.46.37:33018> : access.grid.unesp.br ID OWNER SUBMITTED RUN_TIME ST PRI SIZE CMD
43.0 pepe 12/14 19:19 0+00:00:00 I 0 0.0 env-test.pl 43.1 pepe 12/14 19:19 0+00:00:00 I 0 0.0 env-test.pl 43.2 pepe 12/14 19:19 0+00:00:00 I 0 0.0 env-test.pl 3 jobs; 3 idle, 0 running, 0 held
[pepe@access ~]$ condor_q -globus
-- Submitter: access.grid.unesp.br : <200.145.46.37:33018> : access.grid.unesp.br ID OWNER STATUS MANAGER HOST EXECUTABLE
43.0 pepe UNSUBMITTED condor ce.grid.unesp.br /home/pepe/env-te 43.1 pepe UNSUBMITTED condor ce.grid.unesp.br /home/pepe/env-te 43.2 pepe UNSUBMITTED condor ce.grid.unesp.br /home/pepe/env-te [pepe@access ~]$ condor_rm pepe
Condor e MPI
I
Jobs MPI rodam sobre o condor:
[pepe@access ~]$cat grid-mpi-hpl.cmd universe=globus
GlobusScheduler=ce.grid.unesp.br:/jobmanager-condor
globusrsl = (condor_submit=(universe parallel)(machine_count 16)) executable = /opt/condor-7.2.4/bin/condor-impi.sh #arguments = /opt/intel/Compiler/11.0/083/mkl/benchmarks/mp_linpack/bin_intel/em64t/xhpl_em64t arguments = ./xhpl_em64t log = grid-mpi-hpl.log output = grid-mpi-hpl.out error = grid-mpi-hpl.error transfer_input_files = xhpl_em64t,HPL.dat WhenToTransferOutput = ON_EXIT #should_transfer_files = no queue
I
OSG_GRID: Diretório onde reside o worker node client ou
pacotes para o usar o grid são instalados.
I
OSG_APP: Diretório disponível para o job poder instalar
seus binários ou aplicações especícas.
I
OSG_DATA: Diretório disponível para o job poder guardar
dados e fazer stage , compartilhado por todo o cluster.
I
OSG_WN_TMP: Diretório disponível para scratch nos
Globus-WS
I
Podemos enviar o job utilizando ainda o Globus-WS
[pepe@access ~]$ cat rsl_unesp <job> <executable>my_whoami</executable> <directory>${GLOBUS_USER_HOME}</directory> <stdout>${GLOBUS_USER_HOME}/stdout</stdout> <stderr>${GLOBUS_USER_HOME}/stderr</stderr> <fileStageIn> <transfer> <sourceUrl> gsiftp://ce.grid.unesp.br:2811/usr/bin/whoami </sourceUrl> <destinationUrl> gsiftp://ce.grid.unesp.br:2811/${GLOBUS_USER_HOME}/my_whoami </destinationUrl> </transfer> </fileStageIn> <fileStageOut> <transfer>
Globus-WS
<sourceUrl> gsiftp://ce.grid.unesp.br:2811/${GLOBUS_USER_HOME}/stdout </sourceUrl> <destinationUrl> gsiftp://ce.grid.unesp.br:2811/tmp/teste </destinationUrl> </transfer> </fileStageOut> <fileCleanUp> <deletion> <file>file:///${GLOBUS_USER_HOME}/my_whoami</file> </deletion> </fileCleanUp> </job>I
Submetemos o job dessa forma:
[pepe@access ~]$globusrun-ws -F https://ce.grid.unesp.br:9443 -submit -f rsl_unesp -S Submitting job...Done.
Job ID: uuid:4a92c06c-b371-11d9-9601-0002a5ad41e5 Termination time: 12/14/2009 20:58 GMT
Current job state: Active Current job state: CleanUp Current job state: Done Destroying job...Done.
SRM e GridFTP
I
Existem algumas formas de manusear arquivos tanto no
storage quanto para pequenos arquivos:
[pepe@access ~]$globus-url-copy file:////bin/bash gsiftp://ce.grid.unesp.br:2811/tmp/teste
[pepe@access ~]$globus-url-copy -dbg -vb -nodcau gsiftp://spraid01.sprace.org.br//mdias/LoadTest07_SPRACE_51 \ gsiftp://dts02.grid.unesp.br:2811/store/testexq1
[pepe@access ~]$globus-url-copy -vb -p 10 -dbg file:////bin/bash \ gsiftp://dts02.grid.unesp.br:2811/store/testexq
I
O protocolo srm permite comandos como srmmkdir, srmrm,
etc.
[pepe@access ~]$ srmcp -2 --debug=true file:////bin/bash \ srm://se.grid.unesp.br:8443/srm/v2/server\?SFN=/store/testex
I
É possível ainda interagir dentro do diretório para qual seu DN
é mapeado
[pepe@access ~]$ uberftp ce.grid.unesp.br
220 ce.grid.unesp.br GridFTP Server 2.7 (gcc32dbg, 1204845443-63) [VDT patched 4.0.7] ready. 230 User uscms001 logged in.
UberFTP> ls
-rw-r--r-- 1 uscms001 uscms 0 Dec 14 15:34 simple.3.error UberFTP> get simple.3.error