Here is a perl subroutine that will plot out images much faster than individual
shell scripts:
605 sub pltlgtn() {
606 my ($timeslice,$roi,$gfn,$pmxno,$pmxext,$roi_cnt,$count);
607 # open (PLTLGTN, "| $apps/gdplot3_gf > /dev/null") || die "Cannot run
gdplot3_gf";
608 open (PLTLGTN, "| $apps/gdplot3_gf") || die "Cannot run gdplot3_gf";
609 print PLTLGTN "\$respond=yes\n";
610 print PLTLGTN "GLEVEL = 0\n";
611 print PLTLGTN "GVCORD = none\n";
612 print PLTLGTN "PANEL = 0\n";
613 print PLTLGTN "SKIP = 0\n";
614 print PLTLGTN "SCALE = 0\n";
615 print PLTLGTN "GDPFUN = $pltfun // AGE\n";
616 print PLTLGTN "TYPE = f\n";
617 print PLTLGTN "CONTUR = 0\n";
618 print PLTLGTN "CINT = \n";
619 print PLTLGTN "LINE = \n";
620 print PLTLGTN "FINT = $fint\n";
621 print PLTLGTN "FLINE = $fline\n";
622 print PLTLGTN "HILO = \n";
623 print PLTLGTN "HLSYM = \n";
624 # print PLTLGTN "CLRBAR = -1/H/UC/.5;1/.5/-1|.8/2/111/1/l/hw\n";
625 print PLTLGTN "CLRBAR = 0\n";
626 print PLTLGTN "WIND = \n";
627 print PLTLGTN "REFVEC = \n";
628 print PLTLGTN "TITLE = 0\n";
629 print PLTLGTN "TEXT = 1/21//hw\n";
630 print PLTLGTN "CLEAR = yes\n";
631 print PLTLGTN "IJSKIP = 0\n";
632 print PLTLGTN "MAP = $gem_map\n";
633 print PLTLGTN "MSCALE = 0\n";
634 print PLTLGTN "LATLON = \n";
635 print PLTLGTN "BOXLIN = 0\n";
636 print PLTLGTN "REGION = plot\n";
637 print PLTLGTN "STNPLT = \n";
638 print PLTLGTN "SATFIL = \n";
639 print PLTLGTN "RADFIL = \n";
640 print PLTLGTN "IMCBAR = \n";
641 print PLTLGTN "LUTFIL = \n";
642 print PLTLGTN "STREAM = \n";
643 print PLTLGTN "POSN = 0\n";
644 print PLTLGTN "COLORS = 1\n";
645 print PLTLGTN "MARKER = 0\n";
646 print PLTLGTN "GRDLBL = 0\n";
647 print PLTLGTN "FILTER = no\n";
648 $roi_cnt=0;
649 foreach $roi (@gem_garea) {
650 printf("%d GAREA=%s\t",$gem_zone[$roi_cnt],$roi);
651 printf("PROJ=%s\t",$gem_proj[$roi_cnt]);
652 printf("bbox=%s\t",$bboxes[$roi_cnt]);
653 printf("scale=%s\n",$gem_scale[$roi_cnt]);
654 print PLTLGTN "PROJ = $gem_proj[$roi_cnt]\n";
655 print PLTLGTN "GAREA = $roi\n";
656 my $pmxno=${lightning_l};
657 $count=0;
658 foreach $timeslice (@dattimes) {
659 $pmxext = sprintf("%03d",$pmxno++);
660 $gfn="I${gem_zone[$roi_cnt]}${pmxext}.gif";
661 print PLTLGTN "GDFILE = ${tmp_grd}_${gem_zone[$roi_cnt]}\n";
662 print PLTLGTN "GDATTIM = $timeslice\n";
663 print PLTLGTN "DEVICE = gf|$gfn|$resol\n";
664 print PLTLGTN "SAVE
P_LGTN${dat_times[$count]}_${gem_zone[$roi_cnt]}.nts\n";
665 print PLTLGTN "l\nr\n\n";
666 $count++;
667 }
668 $roi_cnt++;
669 }
670 print PLTLGTN "e\n";
671 close(PLTLGTN);
672 return;
673 }
- Stephen
-----Original Message-----
From: gembud-bounces@xxxxxxxxxxxxxxxx [mailto:gembud-bounces@xxxxxxxxxxxxxxxx]
On Behalf Of Matt Foster
Sent: Tuesday, May 10, 2011 7:24 AM
To: gembud@xxxxxxxxxxxxxxxx
Subject: [gembud] Parallel gif creation scripts?
I'm using a shell script that runs gdplot3 to generate many GIF images
from our WRF model output. This script is taking over 10 minutes to
complete, and we would like to cut that runtime down some. I've toyed
with the idea of breaking the one script up into perhaps 4 scripts and
launch them all in parallel.
What kind of issues might arise from this?
Is there a better way to accomplish our end goal?
TIA for any suggestions!
Matt
--
Do not go where the path may lead; go instead where there is no path and leave
a trail.
-- Ralph Waldo Emerson