180 likes | 318 Views
Grid Enabling Applications for the Grid: ENDYNE. z. Hydrogen 2. Carbon 2. C 2 H 2 Target. Carbon 1. a. x. d=15 a.u. [ a, b ] Orientation. Hydrogen 1. b. p. b. H + Projectile, Hydrogen 3. y. Jerry Perez, Senior Administrator - Texas Tech University. ENDYNE Credits.
E N D
Grid Enabling Applications for the Grid: ENDYNE z Hydrogen 2 Carbon 2 C2H2 Target Carbon 1 a x d=15 a.u. [a, b] Orientation Hydrogen 1 b p b H+ Projectile, Hydrogen 3 y Jerry Perez, Senior Administrator - Texas Tech University
ENDYNE Credits K. Tsereteli, S. Addepalli, J. Perez & J. A Morales
What is ENDYNE? • With Coherent-States Theory, a Chemical Reaction Can Be Formulated As Reactants-to-Products Trajectories in a Quantum Phase Space As It Were Classical Mechanics • The Several Trajectories Necessary to Simulate One Single Reaction Can Be Efficiently Run in Parallel on a Compute Grid.
How does ENDYNE run on a cluster? • A batch file was written for the ENDYNE users and stored in an environment variable called DYNROOT$ • The batch file that ran single processor jobs was called “endyne”. • The batch file called “run” submits multiple ENDYNE jobs into the queue by reading multiple input files from the directory “run” is ran in.
How does ENDYNE run on a cluster? Before any jobs are submitted, the files must be prepared for running: 1. prepare the "endyne_H+HF_opt_pvdz.90-00.in" 2. optimize the "endyne_H+HF_opt_pvdz.90-00.in" by command "endyne endyne_H+HF_opt_pvdz.90-00.in > inin" 3. collect the zoca parameters by using collect.pe program and command "./collect.pe >outout" 4. prepare the "endyne_H+HF_run_pvdz.90-00.tmpl.in" and insert the zoca parameters from "outout" file 5. modify the "run" file to program path of input files 6. modify the endynejob file to handle output files 7. type "./run" to submit the job 8. type "qstat" to see the job
Grid enabling ENDYNE on a Cycle Scavenging Grid • Had to remove environment dependencies (DYNROOT$). • Had to recompile ENDYNE for uniprocessor capabilities. • TEST recompiled program locally before moving it onto the grid!!! • Had to register libraries and necessary input files with the grid. • Had to teach researchers how to use TechGrid campus-wide grid. • Approx 3 hours of instruction with added documentation was necessary to get them on their feet.
Grid enabling ENDYNE on a Globus Grid • If all sites wish to use ENDYNE, one way is to create an environment variable called DYNROOT$. • Another way to run ENDYNE is to do away with environmental dependencies and recompile for static execution. • The following program is a Perl script written by TTU’s Srirangam Addepalli that allows users to create a GUI that runs ENDYNE and exports DYNROOT$.
Grid enabling ENDYNE on a Globus Grid and a Data Grid #!/usr/bin/perl -w $run=1; while($run=="1") { system ("clear ;"); print(" Select one of the following options \n"); print(" Type of Job \n"); print(" 0. Hit Zero Any time to Quit \n"); print(" 1. Data, Executable on Data Grid \n"); print(" 2. Executable on Local Node \n"); print(" 3. Source on Data Grid \n"); print(" 4. Output on Data Grid \n"); print(" 5. View output file \n");
print("My Option:"); my $option = <STDIN>; if ($option==0) { exit 0; } if ($option==1) { print(" Data Executable on Data Grid \n"); print("Name Executable: "); my $executable= "endyne"; print "\n"; print("Input File:"); my $input="endyne1.inp"; print"\n"; print("Output:"); my $output="endyne.out";
print "\n"; print (" Available Executables \n"); system ("find /mnt/avaki/data/rangam -name $executable > jobexec "); #open(executables, "/home/addepall/jobexec"); #@availexecutables = executables; #foreach $line (@availexecutables) #{ # print "$line"; #} print ("1/0 for executable: \n"); $selection=<STDIN>; if ($selection=="1") { print ("......................................."); print ("\n Pushing Executable to Data Grid \n");
system("globus-url-copy -vb -p 20 -dbg gsiftp://antaeus.hpcc.ttu.edu:2811/home/addepall/GRID/endyne gsiftp://buda.tacc.utexas.edu:2811/home/addepall/endyne &"); for ($wait=0;$wait < 15; $wait=$wait+1) { print ("*"); system("sleep 0.5;"); } print ("\n Pushing input on to remote Execute host \n"); for ($wait=0;$wait < 10; $wait=$wait+1) { print ("*"); system("sleep 0.5;");
} system ("cat /proc/net/tcp;"); #system("globus-url-copy -vb -p 20 -dbg gsiftp://antaeus.hpcc.ttu.edu:2811/home/addepall/GRID/endyne gsiftp://buda.tacc.utexas.edu:2811/home/addepall/endyne ; system (" globus-url-copy -dbg gsiftp://antaeus.hpcc.ttu.edu:2811/home/addepall/GRID/endyne.inp gsiftp://buda.tacc.utexas.edu:2811/home/addepall/endyne.inp; globus-job-submit buda.tacc.utexas.edu:2119 /home/addepall/DrEscobar/script2.sh"); system ("cd /home/addepall/GRID/; export DYNROOT=./; ./endyne /mnt/avaki/data/rangam/$input > $input.out&; ");
} } if ($option==2) { print(" Data Executable on Data Grid \n"); print("Name of Executable: "); my $executable="ENDYNE"; print "\n"; print("Input File:"); my $input="endyne.inp"; print"\n"; print("Output:"); my $output="endyne.output"; print "\n"; {
system ("cd /home/addepall/GRID/; export DYNROOT=./; ./endyne endyne.inp | tee endyne.out "); } } if ($option==3) { print(" Data,Executable,Output Different Location \n"); print("Name of Executable: "); my $executable="endyne"; print "\n"; my $input="endyne.inp"; print"\n";
my $output="endyne.out"; $inputfile="$input"; $outputfile="$output"; print " \n Acquiring ENDYNE GRID IMAGE "; print "\n Running Endyne on Local Machine"; print ("\n Finished Endyne Job"); print ("\n Cleaning your tracks and Protecting your source" ); for ($wait=0;$wait < 13; $wait=$wait+1) { print ("*"); system("sleep 0.5;"); } print ("\n"); {
system ("cp /mnt/avaki/data/rangam/*tar /home/addepall; system ("echo $MESSAGE1; tar -xvf GRID-REAL.tar; cd GRID; export DYNROOT=./; echo $MESSAGE2; ./endyne H4+-md.inp > H4+-md.out; echo $MESSAGE3; cp H4+-md.out ../endyne.out; cd /home/addepall; echo $MESSAGE4;");
} } if ($option==5) { print" View Output File \n"; print("Name of outputfile \n"); my $output="endyne.out"; system ("cat $output ;"); } print " Perform Another Operation \n"; $run=1; }