[Swift-commit] r6620 - in branches/faster: . bin docs docs/quickstart docs/siteguide docs/userguide etc/sites lib libexec src src/org/griphyn/vdl/engine src/org/griphyn/vdl/karajan src/org/griphyn/vdl/karajan/lib src/org/griphyn/vdl/mapping tests tests/groups tests/language-behaviour/IO tests/sites tests/stress tests/stress/persistent-coasters/mcs/10x10 tests/stress/persistent-coasters/mcs/500x10

hategan at ci.uchicago.edu hategan at ci.uchicago.edu
Mon Jul 8 14:12:23 CDT 2013


Author: hategan
Date: 2013-07-08 14:12:22 -0500 (Mon, 08 Jul 2013)
New Revision: 6620

Added:
   branches/faster/docs/releasenotes/
   branches/faster/docs/siteguide/geyser
   branches/faster/docs/siteguide/ssh
   branches/faster/etc/sites/fusion
   branches/faster/etc/sites/raven
   branches/faster/src/org/griphyn/vdl/mapping/MappingException.java
   branches/faster/tests/groups/group-stress-heavy.sh
   branches/faster/tests/groups/group-stress-midway.sh
   branches/faster/tests/language-behaviour/IO/readData3.out.expected
   branches/faster/tests/language-behaviour/IO/readData3.swift
   branches/faster/tests/language-behaviour/IO/readStructured.in
   branches/faster/tests/language-behaviour/IO/readStructured01.swift
   branches/faster/tests/language-behaviour/IO/readStructured02.swift
   branches/faster/tests/language-behaviour/IO/readStructured02.timeout
   branches/faster/tests/language-behaviour/IO/readStructured03.swift
   branches/faster/tests/language-behaviour/IO/readStructured3.in
   branches/faster/tests/language-behaviour/IO/title.txt
   branches/faster/tests/stress/IO/
   branches/faster/tests/stress/apps/
   branches/faster/tests/stress/internals/
   branches/faster/tests/stress/long_runs/
   branches/faster/tests/stress/remote_sanity/
   branches/faster/tests/stress/user_profile/
Removed:
   branches/faster/lib/log4j-1.2.16.jar
   branches/faster/tests/sites/pads/
   branches/faster/tests/sites/queenbee/
   branches/faster/tests/sites/ranger/
Modified:
   branches/faster/
   branches/faster/bin/stop-coaster-service
   branches/faster/docs/quickstart/quickstart.txt
   branches/faster/docs/siteguide/mcs
   branches/faster/docs/siteguide/siteguide.txt
   branches/faster/docs/userguide/app_procedures
   branches/faster/docs/userguide/coasters
   branches/faster/docs/userguide/howto_tips
   branches/faster/docs/userguide/language
   branches/faster/docs/userguide/mappers
   branches/faster/libexec/_swiftwrap.vbs
   branches/faster/libexec/_swiftwrap.wrapperstaging
   branches/faster/libexec/swift-int-staging.k
   branches/faster/src/
   branches/faster/src/org/griphyn/vdl/engine/VariableScope.java
   branches/faster/src/org/griphyn/vdl/karajan/Loader.java
   branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageins.java
   branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageouts.java
   branches/faster/src/org/griphyn/vdl/karajan/lib/SetWaitCount.java
   branches/faster/src/org/griphyn/vdl/mapping/AbsFile.java
   branches/faster/src/org/griphyn/vdl/mapping/DataDependentException.java
   branches/faster/src/org/griphyn/vdl/mapping/DependentException.java
   branches/faster/src/org/griphyn/vdl/mapping/MappingDependentException.java
   branches/faster/src/org/griphyn/vdl/mapping/RootArrayDataNode.java
   branches/faster/src/org/griphyn/vdl/mapping/RootDataNode.java
   branches/faster/tests/stress/persistent-coasters/mcs/10x10/coaster-service.conf
   branches/faster/tests/stress/persistent-coasters/mcs/500x10/coaster-service.conf
   branches/faster/tests/suite.sh
Log:
merged changes from 0.94


Property changes on: branches/faster
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/release-0.93:4761-5122
/trunk:6172,6177,6182,6189-6190,6202-6203,6206-6208,6215-6223,6231-6241,6255-6258,6263,6272,6274-6618
   + /branches/release-0.93:4761-5122
/branches/release-0.94:6283-6619
/trunk:6172,6177,6182,6189-6190,6202-6203,6206-6208,6215-6223,6231-6241,6255-6258,6263,6272,6274-6618

Modified: branches/faster/bin/stop-coaster-service
===================================================================
--- branches/faster/bin/stop-coaster-service	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/bin/stop-coaster-service	2013-07-08 19:12:22 UTC (rev 6620)
@@ -86,7 +86,7 @@
    if [ -n "$WORKER_RELAY_HOST" ]; then
       ssh $WORKER_USERNAME@$WORKER_RELAY_HOST "condor_rm $WORKER_USERNAME"    
    else
-     condor_rm $CONDOR_USERNAME
+     condor_rm $WORKER_USERNAME
    fi
 fi
 

Modified: branches/faster/docs/quickstart/quickstart.txt
===================================================================
--- branches/faster/docs/quickstart/quickstart.txt	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/quickstart/quickstart.txt	2013-07-08 19:12:22 UTC (rev 6620)
@@ -46,13 +46,13 @@
 and http://www.oracle.com/technetwork/java/javase/downloads/index.html[Java JDK]. Once
 built, the dist/swift-svn directory will contain your build.
 
-To download and build Swift 0.93, follow these instructions:
+To download and build Swift 0.94, follow these instructions:
 -----
-$ mkdir swift-0.93 
-$ cd swift-0.93 
-$ svn co https://cogkit.svn.sourceforge.net/svnroot/cogkit/branches/4.1.9/src/cog 
+$ mkdir swift-0.94
+$ cd swift-0.94
+$ svn co https://svn.code.sf.net/p/cogkit/svn/branches/4.1.10/src/cog
 $ cd cog/modules 
-$ svn co https://svn.ci.uchicago.edu/svn/vdl2/branches/release-0.93 swift 
+$ svn co https://svn.ci.uchicago.edu/svn/vdl2/branches/release-0.94 swift
 $ cd swift 
 $ ant redist
 -----
@@ -62,7 +62,7 @@
 Once Swift is installed, it is useful to add the swift binary to your PATH
 environment variable. To do this, first determine where the Swift bin
 directory is located. If you installed Swift from a binary release, it will
-be in the swift-0.93/bin directory where you installed it. If you followed
+be in the swift-0.94/bin directory where you installed it. If you followed
 the instructions above for installing Swift from a source repository, it
 will be located in swift-<version>/cog/modules/swift/dist/swift-svn/bin.
 

Copied: branches/faster/docs/siteguide/geyser (from rev 6619, branches/release-0.94/docs/siteguide/geyser)
===================================================================
--- branches/faster/docs/siteguide/geyser	                        (rev 0)
+++ branches/faster/docs/siteguide/geyser	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,37 @@
+Geyser and Caldera (x86 clusters)
+---------------------------------
+The Geyser and Caldera clusters are specialized data analysis and 
+visualization resources at NCAR (National Center for Atmospheric 
+Research).
+
+More information about these clusters can be found at
+http://www2.cisl.ucar.edu/resources/geyser_caldera.
+
+Example sites.xml
+~~~~~~~~~~~~~~~~~
+The following sites.xml has the basic definitions for how to run a job using
+the LSF scheduler.
+
+-----
+<config>
+  <pool handle="geyser">
+    <filesystem provider="local"/>
+    <execution provider="coaster" jobmanager="local:lsf"/>
+    <profile namespace="globus"   key="jobsPerNode">1</profile>
+    <profile namespace="globus"   key="maxTime">3600</profile>
+    <profile namespace="globus"   key="maxwalltime">00:05</profile>
+    <profile namespace="globus"   key="lowOverallocation">100</profile>
+    <profile namespace="globus"   key="highOverallocation">100</profile>
+    <profile namespace="globus"   key="nodeGranularity">1</profile>
+    <profile namespace="globus"   key="maxNodes">1</profile>
+    <profile namespace="globus"   key="project">P93300606</profile>
+    <profile namespace="globus"   key="queue">small</profile>
+    <profile namespace="karajan"  key="jobThrottle">4</profile>
+    <profile namespace="karajan"  key="initialScore">10000</profile>
+    <workdirectory>/glade/scratch/davkelly</workdirectory>
+  </pool>
+</config>
+-----
+
+The values for workdirectory, queue, and project will likely need to be 
+adjusted based on the requirements of your project.

Modified: branches/faster/docs/siteguide/mcs
===================================================================
--- branches/faster/docs/siteguide/mcs	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/siteguide/mcs	2013-07-08 19:12:22 UTC (rev 6620)
@@ -2,8 +2,12 @@
 -------------------------------------
 
 This sections describes how to use the general use compute servers for
-the MCS division of Argonne National Laboratory.
+the MCS division of Argonne National Laboratory. Swift is available as a soft package on mcs machines. Add +swift to your .soft and run resoft command.
 
+----
+$ resoft
+----
+
 Create a coaster-service.conf
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 To begin, copy the text below and paste it into your Swift distribution's etc

Modified: branches/faster/docs/siteguide/siteguide.txt
===================================================================
--- branches/faster/docs/siteguide/siteguide.txt	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/siteguide/siteguide.txt	2013-07-08 19:12:22 UTC (rev 6620)
@@ -16,6 +16,8 @@
 
 include::futuregrid[]
 
+include::geyser[]
+
 include::grid[]
 
 include::intrepid[]
@@ -24,6 +26,10 @@
 
 include::midway[]
 
+include::ssh[]
+
+include::stampede[]
+
 include::uc3[]
 
 include::stampede[]

Copied: branches/faster/docs/siteguide/ssh (from rev 6619, branches/release-0.94/docs/siteguide/ssh)
===================================================================
--- branches/faster/docs/siteguide/ssh	                        (rev 0)
+++ branches/faster/docs/siteguide/ssh	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,91 @@
+SSH
+---
+This section describes how to use the SSH provider to connect to remote sites
+and to handle data transfer.
+
+Generate a unique SSH key
+~~~~~~~~~~~~~~~~~~~~~~~~~
+It is recommended that you create a new SSH key exclusively for this purpose.
+In order to avoid being prompted for passwords/passphrases, your SSH passphrase
+will be stored in a read protected file. Run this command on the machine
+where you will be running Swift:
+
+-----
+ssh-keygen -t dsa -f $HOME/.ssh/id_dsa-swift
+-----
+
+You will be prompted to create a passphrase. This will create two files: 
+$HOME/.ssh/id_dsa-swift and $HOME/.ssh/id_dsa-swift.pub. 
+
+Add your public key to the remote host
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+On the remote host where you will be running, edit or create the file 
+$HOME/.ssh/authorized_keys. Paste in the contents of the newly created 
+$HOME/.ssh/id_dsa-swift.pub from the previous step to the end of the file.
+
+Verify your new key works
+~~~~~~~~~~~~~~~~~~~~~~~~~
+From the host where you will be running Swift, run the following 
+command to verify your keys are working:
+
+-----
+$ ssh -o IdentitiesOnly=true -i $HOME/.ssh/id_dsa-swift user at login.remotehost.edu
+-----
+
+You should be prompted for your new passphrase and be able to connect.
+
+Create auth.defaults
+~~~~~~~~~~~~~~~~~~~~
+Create a file called $HOME/.ssh/auth.defaults on the host where you are running Swift.
+Use the following commands to create this file:
+
+-----
+$ touch $HOME/.ssh/auth.defaults
+$ chmod 600 $HOME/.ssh/auth.defaults
+-----
+
+Next, edit $HOME/.ssh/auth.defaults and add the following lines:
+------
+login.remotehost.edu.type=key
+login.remotehost.edu.username=your_remote_username
+login.remotehost.edu.key=/your/home/.ssh/id_dsa-swift
+login.remotehost.edu.passphrase=your_passphrase
+-----
+
+Replace login.remotehost.edu with the hostname you want to use, replace the
+values for "your_remote_username", "your_passphrase", and set the correct path 
+of private key you generated.
+
+Create a sites.xml file
+~~~~~~~~~~~~~~~~~~~~~~~
+Here is an example sites.xml file that will allow you to connect and transfer
+data to a remote host:
+
+-----
+<config>
+   <pool handle="remotehost">
+      <execution provider="coaster" jobmanager="ssh:local" url="login.remotehost.edu"/> 
+      <filesystem provider="ssh" url="login.remotehost.edu"/>
+      <profile namespace="karajan" key="jobThrottle">0</profile>
+      <profile namespace="karajan" key="initialScore">10000</profile>
+      <workdirectory>/path/to/remote/workdirectory</workdirectory>
+   </pool>
+</config>
+-----
+
+NOTE: This example will run work directly on login.remotehost.edu. In many 
+cases you will not want to do this. You'll like want to modify your sites.xml
+to use a remote scheduler, by setting jobmanager to ssh:pbs or ssh:slurm, for
+example. This usually requires also setting things like queues and walltimes.
+This example is provided for simplicity and testing.
+
+Setting your properties
+~~~~~~~~~~~~~~~~~~~~~~~
+Since you want to data transfer via ssh, you'll want to verify that you're not
+using any other file transfer mechanisms. Make sure you have the following 
+swift properties defined in your configuration file:
+
+-----
+use.provider.staging=false
+use.wrapper.staging=false
+-----

Modified: branches/faster/docs/userguide/app_procedures
===================================================================
--- branches/faster/docs/userguide/app_procedures	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/userguide/app_procedures	2013-07-08 19:12:22 UTC (rev 6620)
@@ -423,10 +423,9 @@
 floating point numbers.
 
 @toString
-~~~~~~~~
- at toString(input) will parse its input into a string. This can be
-used with @arg to pass input parameters to a Swift script as
-strings.
+~~~~~~~~~
+ at toString(input) will parse its input into a string. Input can be an int, float, string,
+or boolean. 
 
 @length
 ~~~~~~

Modified: branches/faster/docs/userguide/coasters
===================================================================
--- branches/faster/docs/userguide/coasters	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/userguide/coasters	2013-07-08 19:12:22 UTC (rev 6620)
@@ -91,4 +91,35 @@
 the coaster service
 |==================
 
+Coaster config parameters and Job Quantities
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+This section presents information on coaster configuration parameters and their effect on application and scheduler jobs submitted by Swift. In order to achieve optimal performance, the number of application tasks must correspond to the total number of coaster workers. Coaster configuration parameters influence both application tasks and the LRM (Local Resource Manager) jobs that are submitted by Swift. Specifically, the following quantities are influenced by coasters configuration parameters:
+
+* Number of application tasks Swift will pack in one "wave" to be executed in parallel depends on the +foreach.max.threads+ and the +throttle+ parameters. Furthermore, the number of +foreach+ loops in a Swift script influences the aggregate +foreach.max.threads+. The relation between application tasks and the above mentioned quantities could be explained as follows:
+----
+app_tasks = min{nforeach X foreach.max.threads), (throttle X 100 +1)}
+----
+
+Where +nforeach+ is the number of independent foreach loops appearing in a Swift script.
+
+* Number of jobs Swift will submit via the LRM interface is determined by the +slots+ configuration parameter in sites file.
+
+----
+LRM jobs = slots
+----
+
+* Size of each LRM job in terms of number of compute nodes per job is determined by the +maxnodes+ and +nodegranularity+ parameters. LRM jobs submitted by Swift will be of size spread between +nodegranularity+ and +maxnodes+ values.
+
+----
+nodegranularity <= LRM job size <= maxnodes
+----
+
+* Number of coaster workers to be run per LRM job on a target cluster is determined by the +jobspernode+ parameter.
+
+Considering the above factors, the following paramter expressions must match in order for a Swift run to be optimal:
+
+----
+min{nforeach X foreach.max.threads), (throttle X 100 +1)} ~= 
+            slots X avg(nodegranularity,maxnodes) X jobspernode
+----

Modified: branches/faster/docs/userguide/howto_tips
===================================================================
--- branches/faster/docs/userguide/howto_tips	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/userguide/howto_tips	2013-07-08 19:12:22 UTC (rev 6620)
@@ -28,53 +28,72 @@
 Launching MPI jobs from Swift
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-There are several ways to run MPI jobs under Swift.
-The simplest is to simply launch the desired +mpiexec+ command line
-locally by using the local provider.  Two additional use cases are
-noted here.
+There are several ways to run MPI jobs under Swift. Two will be discussed here -
+calling mpiexec from a wrapper script, and using the MPICH/coasters interface.
 
-==== Submission of MPI jobs to remote queues
+Calling mpiexec
+^^^^^^^^^^^^^^^
+In this example, a single MPI program will run across two nodes. For this to
+happen, sites.xml must be configured to allocate two nodes but only run a
+single job on them. A wrapper script must then be used to call mpiexec.
 
-// TODO: This seems to require appropriate PBS profile settings
+sites.xml
++++++++++
+First, we need to make sure that Swift will allocate exactly two nodes. This
+can be done with the maxnodes and nodegranularity settings.
 
-This use case allows the user to submit an MPI job to a remote queue.
+-----
+<profile namespace="globus" key="nodeGranularity">2</profile>
+<profile namespace="globus" key="maxnodes">2</profile>
+-----
 
-Swift makes an invocation that does not look any different
-from any other invocation. In the code below, we do not have any input
-files, and have two output files on stdout and stderr:
+Next, we want to make sure that the MPI program is called only once on those
+nodes. There are two settings we must set to get this behavior:
+-----
+<profile namespace="globus" key="jobsPerNode">1</profile>
+<profile namespace="globus" key="jobtype">single</profile>
+-----
 
-----
-type file;
+tc.data
++++++++
+The app defined in tc.data should be a shell script wrapper to the actual
+program that is being called. Let's assume in this example that the MPI program
+we are using is called "mpitest", and the wrapper script will be called 
+"mpitest.sh". The tc.data will look like this then:
 
-(file o, file e) p() {
-    app {
-        mpi stdout=@filename(o) stderr=@filename(e);
-    }
-}
+-----
+host mpitest /path/to/mpitest.sh
+-----
 
-file mpiout <"mpi.out">;
-file mpierr <"mpi.err">;
+Wrapper script
+++++++++++++++
+The wrapper script in this example, mpitest.sh, will call mpiexec and launch
+the real MPI program. Here is an example:
 
-(mpiout, mpierr) = p();
-----
+-----
+#!/bin/bash 
 
-Now we define how 'mpi' will run in tc.data:
+mpiexec /path/to/mpitest "$@"
+-----
+
+Swift then makes an invocation that does not look any different from any other
+invocation. In the code below, we pass one input file and get back one output
+file. 
+
 ----
-tguc    mpi             /home/benc/mpi/mpi.sh   INSTALLED       INTEL32::LINUX GLOBUS::host_xcount=3
-----
+type file;
 
-mpi.sh is a wrapper script that launches the MPI program. It must be
-installed on the remote site:
+app (file output_file) mpitest (file input_file)
+{
+   mpitest @input_file @output_file; 
+}
 
+file input <"input.txt">;
+file output <"output.txt">;
+
+output = mpitest(input);
 ----
-#!/bin/bash
-mpirun -np 3 -machinefile $PBS_NODEFILE /home/benc/mpi/a.out
-----
 
-Because of the way that Swift runs its server side code,
-provider-specific MPI modes (such as GRAM jobType=mpi) should not be
-used. Instead, the mpirun command should be explicitly invoked.
-
 ==== MPICH/Coasters
 
 In this case, the user desires to launch many MPI jobs within a single

Modified: branches/faster/docs/userguide/language
===================================================================
--- branches/faster/docs/userguide/language	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/userguide/language	2013-07-08 19:12:22 UTC (rev 6620)
@@ -182,6 +182,64 @@
 some initial condition, and then repeatedly run the simulate
 procedure, using each execution's outputs as input to the next step.
 
+Associative Arrays
+~~~~~~~~~~~~~~~~~~
+
+By default, array keys are integers. However, other primitive types are also
+allowed as array keys. The syntax for declaring an array with a key type different
+than the default is:
+
+----
+<valueType>[<keyType>] array;
+----
+
+For example, the following code declares and assigns items to an array with string 
+keys and float values:
+
+----
+float[string] a;
+a["one"] = 0.2;
+a["two"] = 0.4;
+----
+
+In addition to primitive types, a special type named *auto* can be used to 
+declare an array for which an additional *append* operation is available:
+
+----
+int[auto] array;
+
+foreach i in [1:100] {
+  append(array, i * 2);
+}
+
+foreach v in array {
+  trace(v);
+}
+----
+
+Items in an array with *auto* keys cannot be accessed directly using a primitive
+type. The following example results in a compile-time error:
+
+----
+int[auto] array;
+array[0] = 1;
+----
+
+However, it is possible to use *auto* key values from one array to access another:
+
+----
+int[auto] a;
+int[auto] b;
+
+append(a, 1);
+append(a, 2);
+
+foreach v, k in a {
+  b[k] = a[k] * 2;
+}
+----
+
+
 Ordering of execution
 ~~~~~~~~~~~~~~~~~~~~~
 Non-array variables are single-assignment, which means that they must

Modified: branches/faster/docs/userguide/mappers
===================================================================
--- branches/faster/docs/userguide/mappers	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/docs/userguide/mappers	2013-07-08 19:12:22 UTC (rev 6620)
@@ -265,8 +265,7 @@
 iterate
 ^^^^^^^
 iterate expressions allow a block of code to be evaluated repeatedly,
-with an integer parameter sweeping upwards from 0 until a termination
-condition holds.
+with an iteration variable being incremented after each iteration.
 
 The general form is:
 
@@ -276,18 +275,30 @@
 } until (terminationExpression);
 ----
 
-with the variable var starting at 0 and increasing by one in each
-iteration. That variable is in scope in the statements block and when
-evaluating the termination expression.
+Here _var_ is the iteration variable. Its initial value is 0. After each iteration,
+but before _terminationExpression_ is evaluated, the iteration variable is incremented.
+This means that if the termination expression is a function of only the iteration variable,
+the body will never be executed while the termination expression is true.
 
-For example, the following block will iterate over the +months+ variable 12 times:
+Example:
 
 ----
-iterate month {
-  tracef("%i\n", month);
- } until (month==12);
+iterate i {
+    trace(i); // will print 0, 1, and 2
+} until (i == 3);
 ----
 
+Variables declared inside the body of _iterate_ can be used in the termination expression.
+However, their values will reflect the values calculated as part of the last invocation
+of the body, and may not reflect the incremented value of the iteration variable:
+
+----
+iterate i {
+    trace(i);
+    int j = i; // will print 0, 1, 2, and 3
+} until (j == 3);
+----
+
 Operators
 ~~~~~~~~~
 The following infix operators are available for use in Swift script

Copied: branches/faster/etc/sites/fusion (from rev 6386, branches/release-0.94/etc/sites/fusion)
===================================================================
--- branches/faster/etc/sites/fusion	                        (rev 0)
+++ branches/faster/etc/sites/fusion	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,15 @@
+   <pool handle="fusion">
+        <execution jobmanager="local:pbs" provider="coaster" url="none"/>
+        <filesystem provider="local" url="none" />
+        <profile namespace="globus" key="maxtime">3600</profile>
+        <profile namespace="globus" key="jobsPerNode">8</profile>
+        <profile namespace="globus" key="queue">shared</profile>
+        <profile namespace="globus" key="nodeGranularity">1</profile>
+        <profile namespace="globus" key="maxNodes">1</profile>
+        <profile namespace="globus" key="slots">1</profile>
+        <profile namespace="karajan" key="jobThrottle">1.0</profile>
+        <profile namespace="karajan" key="initialScore">100</profile>
+        <profile namespace="globus" key="HighOverAllocation">100</profile>
+        <profile namespace="globus" key="LowOverAllocation">100</profile>
+        <workdirectory>/home/{env.USER}/swiftwork</workdirectory>
+    </pool>

Copied: branches/faster/etc/sites/raven (from rev 6386, branches/release-0.94/etc/sites/raven)
===================================================================
--- branches/faster/etc/sites/raven	                        (rev 0)
+++ branches/faster/etc/sites/raven	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,16 @@
+
+  <pool handle="raven">
+    <execution provider="coaster" jobmanager="local:pbs"/>
+    <profile namespace="globus" key="project">_PROJECT_</profile>
+    <profile namespace="globus" key="jobsPerNode">24</profile>
+    <profile namespace="globus" key="providerAttributes">pbs.aprun;pbs.mpp;depth=24</profile>
+    <profile namespace="globus" key="maxTime">13800</profile>
+    <profile namespace="globus" key="maxWallTime">03:00:00</profile>
+    <profile namespace="globus" key="slots">50</profile>
+    <profile namespace="globus" key="nodeGranularity">4</profile>
+    <profile namespace="globus" key="maxNodes">4</profile>
+    <profile namespace="karajan" key="jobThrottle">60.99</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <filesystem provider="local"/>
+    <workdirectory>/lus/scratch/{env.USER}/swiftwork</workdirectory>
+  </pool>

Deleted: branches/faster/lib/log4j-1.2.16.jar
===================================================================
--- branches/faster/lib/log4j-1.2.16.jar	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/lib/log4j-1.2.16.jar	2013-07-08 19:12:22 UTC (rev 6620)
@@ -1 +0,0 @@
-link ../../../lib/log4j-1.2.16.jar
\ No newline at end of file

Modified: branches/faster/libexec/_swiftwrap.vbs
===================================================================
--- branches/faster/libexec/_swiftwrap.vbs	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/libexec/_swiftwrap.vbs	2013-07-08 19:12:22 UTC (rev 6620)
@@ -187,6 +187,10 @@
 expectArg("k")
 KICKSTART=getOptArg()
 
+expectArg("cdmfile")
+'ignored, but read if specified
+CDMFILE=getOptArg()
+
 expectArg("status")
 STATUSMODE=getArgVal(MandatoryArg, "status")
 

Modified: branches/faster/libexec/_swiftwrap.wrapperstaging
===================================================================
--- branches/faster/libexec/_swiftwrap.wrapperstaging	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/libexec/_swiftwrap.wrapperstaging	2013-07-08 19:12:22 UTC (rev 6620)
@@ -56,12 +56,12 @@
 }
 
 localPath() {
-	# remove protocol://
-	PATH="${1#*://}"
+        # remove protocol://
+        PATH="${1#*://}"
         # Remove hostname
         PATH="${PATH#*/}"
-	# remove leading "/" if present
-	PATH="${PATH#/}"
+        # remove leading "/" if present
+        PATH="${PATH#/}"
 	log "Transformed $1 to $PATH"
 	echo $PATH
 }
@@ -86,8 +86,24 @@
 			if [ ! -f $SRC ]; then
 				fail 254 "Cannot stage in $SRC. File not found."
 			fi
-			dd if=$SRC of=$DST bs=16M 2>&1 >& "$INFO"
+            ln -s $SRC $DST 2>&1 >& "$INFO"
 			;;
+		stage://*)
+			SRC=${SRC#stage://}
+			log "Copying $SRC to $DST"
+			if [ ! -f $SRC ]; then
+				fail 254 "Cannot stage in $SRC. File not found."
+			fi
+                        dd if=$SRC of=$DST bs=10M 2>&1 >& "$INFO"
+			;;
+                direct://*)
+                	SRC=${SRC#direct://}
+                        log "Linking $SRC to $DST"
+                        if [ ! -f $SRC ]; then
+				fail 245 "Cannot stage in $SRC. File not found."
+			fi
+                        ln -s $SRC $DST 2>&1 >& "$INFO"
+                        ;;
 		http://*)
 			log "Fetching $SRC using wget"
 			wget $SRC -O $DST 2>&1 >& "$INFO"
@@ -275,7 +291,6 @@
 }
 
 COMMANDLINE=$@
-
 PARAMFILE=
 
 openinfo "wrapper.log"

Modified: branches/faster/libexec/swift-int-staging.k
===================================================================
--- branches/faster/libexec/swift-int-staging.k	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/libexec/swift-int-staging.k	2013-07-08 19:12:22 UTC (rev 6620)
@@ -126,7 +126,7 @@
 							stageIn("{loc}{SWIFT:HOME}/libexec/cdm_lib.sh", "cdm_lib.sh")
 						}
 
-						appStageins(jobid, stagein, ".", stagingMethod)
+						appStageins(jobid, stagein, stagingMethod)
 
 						stageOut("wrapper.log", "{stagingMethod}://localhost/{ddir}/{jobid}.info", 
 							mode = WRAPPER_TRANSFER_MODE)
@@ -136,7 +136,7 @@
 						}
 						stageOut("wrapper.error", "{stagingMethod}://localhost/{ddir}/{jobid}.error", 
 							mode = STAGING_MODE:IF_PRESENT)
-						appStageouts(jobid, stageout, ".", stagingMethod)
+						appStageouts(jobid, stageout, stagingMethod)
 
 						task:cleanUp(".")
 					)


Property changes on: branches/faster/src
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/release-0.94/src:6387
/trunk/src:6214,6255,6275-6618
   + /branches/release-0.94/src:6283-6619
/trunk/src:6214,6255,6275-6618

Modified: branches/faster/src/org/griphyn/vdl/engine/VariableScope.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/engine/VariableScope.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/engine/VariableScope.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -654,7 +654,7 @@
 	}
 			
 	private void setPreClose(String name, int count) {
-	    if (inhibitClosing != null && inhibitClosing.contains(name)) {
+	    if (inhibitClosing != null && inhibitClosing.contains(name) && count != 0) {
 	        return;
 	    }
 	    setCount("preClose", name, count, 

Modified: branches/faster/src/org/griphyn/vdl/karajan/Loader.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/karajan/Loader.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/karajan/Loader.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -642,7 +642,7 @@
             }
             else {
                 try {
-                    Thread.sleep(1000);
+                    Thread.sleep(1);
                 }
                 catch (InterruptedException e) {
                 }

Modified: branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageins.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageins.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageins.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -39,25 +39,32 @@
 public class AppStageins extends InternalFunction {
 	private ArgRef<String> jobid;
 	private ArgRef<List<String>> files;
-	private ArgRef<String> dir;
 	private ArgRef<String> stagingMethod;
 	
 	private ChannelRef<List<String>> cr_stagein;
+	
+	private VarRef<String> cwd;
 
     static Logger logger = Logger.getLogger(AppStageins.class);
     
     
     @Override
     protected Signature getSignature() {
-        return new Signature(params("jobid", "files", "dir", "stagingMethod"), returns(channel("stagein")));
+        return new Signature(params("jobid", "files", "stagingMethod"), returns(channel("stagein")));
     }
+    
+    @Override
+    protected void addLocals(Scope scope) {
+        super.addLocals(scope);
+        cwd = scope.getVarRef("CWD");
+    }
 
     
     protected void runBody(LWThread thr) {
     	Stack stack = thr.getStack();
     	List<String> files = this.files.getValue(stack);
     	String stagingMethod = this.stagingMethod.getValue(stack);
-    	String dir = this.dir.getValue(stack);
+        String cwd = this.cwd.getValue(stack);
         for (Object f : files) {
             AbsFile file = new AbsFile(TypeUtil.toString(f));
             Policy policy = Director.lookup(file.toString());
@@ -70,19 +77,31 @@
             if (protocol.equals("file")) {
                 protocol = stagingMethod;
             }
-            String path = file.getDir().equals("") ? file.getName() : file
-                .getDir()
-                    + "/" + file.getName();
+            String path = file.getDir().equals("") ? 
+                    file.getName() : file.getDir() + "/" + file.getName();
             String relpath = path.startsWith("/") ? path.substring(1) : path;
             if (logger.isDebugEnabled()) {
                 logger.debug("will stage in: " + relpath + " via: " + protocol);
             }
             cr_stagein.append(stack,
-                makeList(protocol + "://" + file.getHost() + "/" + path,
-                    dir + "/" + relpath));
+                makeList(localPath(cwd, protocol, path, file), relpath));
         }
     }
 
+    protected static String localPath(String cwd, String protocol, String path, AbsFile file) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(protocol);
+        sb.append("://");
+        sb.append(file.getHost());
+        sb.append('/');
+        if (!file.isAbsolute()) {
+            sb.append(cwd);
+            sb.append('/');
+        }
+        sb.append(path);
+        return sb.toString();
+    }
+
     private List<String> makeList(String s1, String s2) {
         List<String> l = new LinkedList<String>();
         l.add(s1);

Modified: branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageouts.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageouts.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/karajan/lib/AppStageouts.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -39,22 +39,31 @@
 public class AppStageouts extends InternalFunction {
     private ArgRef<String> jobid;
     private ArgRef<List<List<Object>>> files;
-    private ArgRef<String> dir;
     private ArgRef<String> stagingMethod;
     
     private ChannelRef<List<String>> cr_stageout;
     
+    private VarRef<String> cwd;
+
+    
     @Override
     protected Signature getSignature() {
-        return new Signature(params("jobid", "files", "dir", "stagingMethod"), returns(channel("stageout")));
+        return new Signature(params("jobid", "files", "stagingMethod"), returns(channel("stageout")));
     }
+    
+    @Override
+    protected void addLocals(Scope scope) {
+        super.addLocals(scope);
+        cwd = scope.getVarRef("CWD");
+    }
 
     protected void runBody(LWThread thr) {
         try {
             Stack stack = thr.getStack();
             List<List<Object>> files = this.files.getValue(stack);
             String stagingMethod = this.stagingMethod.getValue(stack);
-            String dir = this.dir.getValue(stack);
+            String cwd = this.cwd.getValue(stack);
+
             for (List<Object> pv : files) { 
                 Path p = (Path) pv.get(0);
                 DSHandle handle = (DSHandle) pv.get(1);
@@ -67,8 +76,8 @@
                         + "/" + file.getName();
                 String relpath = path.startsWith("/") ? path.substring(1) : path;
                 cr_stageout.append(stack, 
-                    makeList(dir + "/" + relpath,
-                        protocol + "://" + file.getHost() + "/" + path));
+                    makeList(relpath,
+                        AppStageins.localPath(cwd, protocol, path, file)));
             }
         }
         catch (Exception e) {

Modified: branches/faster/src/org/griphyn/vdl/karajan/lib/SetWaitCount.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/karajan/lib/SetWaitCount.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/karajan/lib/SetWaitCount.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -41,7 +41,16 @@
 		DSHandle var = this.var.getValue(stack);
 
 		if (var.isClosed()) {
-			throw new ExecutionException("Attempted to set a wait count for a closed variable " + var);
+		    // Static mappers will close the array sizes during initialization.
+		    // Such an array passed to a function assigning to elements
+		    // of that array in a loop will attempt to increase the 
+		    // wait count. That is a legit situation to have.
+		    if (var.getMapper().isStatic()) {
+		        // ignore
+		    }
+		    else {
+		        throw new ExecutionException("Attempted to set a wait count for a closed variable " + var);
+		    }
 		}
 		
 		int count = this.count.getValue(stack).intValue();

Modified: branches/faster/src/org/griphyn/vdl/mapping/AbsFile.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/AbsFile.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/mapping/AbsFile.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -199,6 +199,10 @@
 		return path;
 	}
 	
+	public boolean isAbsolute() {
+	    return !path.isEmpty() && path.startsWith("/");
+	}
+	
 	public String getType() {
 		return "file";
 	}

Modified: branches/faster/src/org/griphyn/vdl/mapping/DataDependentException.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/DataDependentException.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/mapping/DataDependentException.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -35,7 +35,6 @@
 	}
 
 	public String getMessage() {
-		return getHandle() + " not derived due to errors in data dependencies";
+		return getVariableInfo() + " not derived due to errors in data dependencies";
 	}
-
 }

Modified: branches/faster/src/org/griphyn/vdl/mapping/DependentException.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/DependentException.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/mapping/DependentException.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -41,6 +41,16 @@
 	public DSHandle getHandle() {
 		return handle;
 	}
+	
+	public String getVariableInfo() {
+        if (handle instanceof AbstractDataNode) {
+            AbstractDataNode n = (AbstractDataNode) handle;
+            return n.getDisplayableName() + ", line " + n.getDeclarationLine();
+        }
+        else {
+            return handle.toString();
+        }
+    }
 
 	public String toString() {
 		return getMessage();

Modified: branches/faster/src/org/griphyn/vdl/mapping/MappingDependentException.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/MappingDependentException.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/mapping/MappingDependentException.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -35,6 +35,6 @@
 	}
 
 	public String getMessage() {
-		return getHandle() + " not mapped due to error in mapping dependencies";
+		return getVariableInfo() + " not mapped due to error in mapping dependencies";
 	}
 }

Copied: branches/faster/src/org/griphyn/vdl/mapping/MappingException.java (from rev 6386, branches/release-0.94/src/org/griphyn/vdl/mapping/MappingException.java)
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/MappingException.java	                        (rev 0)
+++ branches/faster/src/org/griphyn/vdl/mapping/MappingException.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,27 @@
+//----------------------------------------------------------------------
+//This code is developed as part of the Java CoG Kit project
+//The terms of the license can be found at http://www.cogkit.org/license
+//This message may not be removed or altered.
+//----------------------------------------------------------------------
+
+/*
+ * Created on Mar 16, 2013
+ */
+package org.griphyn.vdl.mapping;
+
+public class MappingException extends DependentException {
+   
+    public MappingException(DSHandle handle, Exception prev) {
+        super(handle, prev);
+    }
+
+    public MappingException(DSHandle handle) {
+        super(handle);
+    }
+
+    @Override
+    public String getMessage() {
+        return getVariableInfo() + " had mapping errors";
+    }
+
+}

Modified: branches/faster/src/org/griphyn/vdl/mapping/RootArrayDataNode.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/RootArrayDataNode.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/mapping/RootArrayDataNode.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -105,7 +105,6 @@
 		}
 		catch (DependentException e) {
 			setValue(new MappingDependentException(this, e));
-			closeShallow();
 		}
 	}
 	
@@ -116,9 +115,9 @@
         catch (OOBYield e) {
             throw e.wrapped();
         }
-        catch (HandleOpenException e) {
-            e.printStackTrace();
-        }
+        catch (Exception e) {
+            this.setValue(new MappingException(this, e));
+        }
     }
 
 	public String getParam(MappingParam p) {

Modified: branches/faster/src/org/griphyn/vdl/mapping/RootDataNode.java
===================================================================
--- branches/faster/src/org/griphyn/vdl/mapping/RootDataNode.java	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/src/org/griphyn/vdl/mapping/RootDataNode.java	2013-07-08 19:12:22 UTC (rev 6620)
@@ -110,8 +110,6 @@
 		}
 		catch (DependentException e) {
 			setValue(new MappingDependentException(this, e));
-			closeShallow();
-			return;
 		}
 	}
 
@@ -122,8 +120,8 @@
         catch (OOBYield e) {
             throw e.wrapped();
         }
-        catch (HandleOpenException e) {
-            e.printStackTrace();
+        catch (Exception e) {
+            this.setValue(new MappingException(this, e));
         }
 	}
 

Copied: branches/faster/tests/groups/group-stress-heavy.sh (from rev 6619, branches/release-0.94/tests/groups/group-stress-heavy.sh)
===================================================================
--- branches/faster/tests/groups/group-stress-heavy.sh	                        (rev 0)
+++ branches/faster/tests/groups/group-stress-heavy.sh	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,8 @@
+# GROUPLIST definition to run all local tests                            \
+
+GROUPLIST=(
+             $TESTDIR/stress/IO \
+             $TESTDIR/stress/internals \
+          )
+
+checkvars WORK
\ No newline at end of file

Copied: branches/faster/tests/groups/group-stress-midway.sh (from rev 6619, branches/release-0.94/tests/groups/group-stress-midway.sh)
===================================================================
--- branches/faster/tests/groups/group-stress-midway.sh	                        (rev 0)
+++ branches/faster/tests/groups/group-stress-midway.sh	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,11 @@
+# GROUPLIST definition to run all local tests                            \
+
+GROUPLIST=(
+             $TESTDIR/stress/apps/modis_local \
+             $TESTDIR/stress/apps/modis_midway \
+             $TESTDIR/stress/apps/modis_beagle \
+             $TESTDIR/stress/apps/modis_uc3 \
+             $TESTDIR/stress/apps/modis_multiple \
+          )
+
+checkvars WORK
\ No newline at end of file

Copied: branches/faster/tests/language-behaviour/IO/readData3.out.expected (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readData3.out.expected)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readData3.out.expected	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readData3.out.expected	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1 @@
+9
\ No newline at end of file

Copied: branches/faster/tests/language-behaviour/IO/readData3.swift (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readData3.swift)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readData3.swift	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readData3.swift	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,23 @@
+type file;
+
+/*
+   Test case added to confirm Bug 1028 - readData in a foreach loop fails to compile.
+   https://bugzilla.mcs.anl.gov/swift/show_bug.cgi?id=1028
+
+   This test is expected to fail to compile till bug is resolved.
+*/
+
+app (file o) mysim (int i)
+{
+  echo i stdout=@filename(o);
+}
+
+int nums[];
+foreach i in [0:9] {
+  file f <single_file_mapper; file=@strcat("output/sim_",i,".out")>;
+  f = mysim(i);
+  nums[i] = readData(f);
+}
+
+file result <"readData3.out">;
+result = mysim(nums[i]);
\ No newline at end of file

Copied: branches/faster/tests/language-behaviour/IO/readStructured.in (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readStructured.in)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readStructured.in	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readStructured.in	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,2 @@
+rows[0] = "hello"
+rows[1] = "World!"

Copied: branches/faster/tests/language-behaviour/IO/readStructured01.swift (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readStructured01.swift)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readStructured01.swift	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readStructured01.swift	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,7 @@
+type matrix {
+    string rows[];
+}
+
+matrix m;
+m = readStructured("readStructured.in");
+

Copied: branches/faster/tests/language-behaviour/IO/readStructured02.swift (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readStructured02.swift)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readStructured02.swift	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readStructured02.swift	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,10 @@
+type matrix {
+    string rows[];
+}
+
+matrix m;
+m = readStructured("readStructured.in");
+
+foreach item,index in m.rows {
+    tracef("Row[%i] : %s \n", index, item);
+}
\ No newline at end of file

Copied: branches/faster/tests/language-behaviour/IO/readStructured02.timeout (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readStructured02.timeout)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readStructured02.timeout	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readStructured02.timeout	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1 @@
+120

Copied: branches/faster/tests/language-behaviour/IO/readStructured03.swift (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readStructured03.swift)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readStructured03.swift	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readStructured03.swift	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,9 @@
+type vector {
+    int columns[];
+}
+type matrix {
+    vector rows[];
+}
+
+matrix m;
+m = readStructured("readStructured3.in");

Copied: branches/faster/tests/language-behaviour/IO/readStructured3.in (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/readStructured3.in)
===================================================================
--- branches/faster/tests/language-behaviour/IO/readStructured3.in	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/readStructured3.in	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1,6 @@
+rows[0].columns[0] = 0
+rows[0].columns[1] = 2
+rows[0].columns[2] = 4
+rows[1].columns[0] = 1
+rows[1].columns[1] = 3
+rows[1].columns[2] = 5
\ No newline at end of file

Copied: branches/faster/tests/language-behaviour/IO/title.txt (from rev 6619, branches/release-0.94/tests/language-behaviour/IO/title.txt)
===================================================================
--- branches/faster/tests/language-behaviour/IO/title.txt	                        (rev 0)
+++ branches/faster/tests/language-behaviour/IO/title.txt	2013-07-08 19:12:22 UTC (rev 6620)
@@ -0,0 +1 @@
+Language Behavior tests : Subgroup local IO

Modified: branches/faster/tests/stress/persistent-coasters/mcs/10x10/coaster-service.conf
===================================================================
--- branches/faster/tests/stress/persistent-coasters/mcs/10x10/coaster-service.conf	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/tests/stress/persistent-coasters/mcs/10x10/coaster-service.conf	2013-07-08 19:12:22 UTC (rev 6620)
@@ -5,7 +5,7 @@
 export SWIFT=
 
 # Where to place/launch worker.pl on the remote machine
-export WORKER_WORK=/nfs/proj-davidk/swiftwork
+export WORKER_LOCATION=/home/$USER
 
 # How to launch workers: local, ssh, futuregrid, or cobalt
 export WORKER_MODE=ssh
@@ -28,7 +28,7 @@
 export IPADDR=
 
 # Gensites values
-export WORK=$HOME/work
+export WORK=/sandbox/$USER
 
 # If SHARED_FILESYSTEM is set to no, provider staging will be turned on
 export SHARED_FILESYSTEM=no
@@ -37,7 +37,9 @@
 # export WORKER_RELAY_HOST="login.mcs.anl.gov"
 
 export WORKER_LOGGING_LEVEL=DEBUG
-export WORKER_LOG_DIR="/nfs/proj-davidk/logs"
+export WORKER_LOG_DIR="/home/$USER/logs"
+export JOBSPERNODE="4"
+export JOBTHROTTLE=100
 
 # Set applications here
 #app cat=/bin/cat

Modified: branches/faster/tests/stress/persistent-coasters/mcs/500x10/coaster-service.conf
===================================================================
--- branches/faster/tests/stress/persistent-coasters/mcs/500x10/coaster-service.conf	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/tests/stress/persistent-coasters/mcs/500x10/coaster-service.conf	2013-07-08 19:12:22 UTC (rev 6620)
@@ -5,7 +5,7 @@
 export SWIFT=
 
 # Where to place/launch worker.pl on the remote machine
-export WORKER_WORK=/nfs/proj-davidk/swiftwork
+export WORKER_LOCATION=/home/$USER
 
 # How to launch workers: local, ssh, futuregrid, or cobalt
 export WORKER_MODE=ssh
@@ -28,7 +28,7 @@
 export IPADDR=
 
 # Gensites values
-export WORK=$HOME/work
+export WORK=/sandbox/$USER
 
 # If SHARED_FILESYSTEM is set to no, provider staging will be turned on
 export SHARED_FILESYSTEM=no
@@ -37,7 +37,9 @@
 # export WORKER_RELAY_HOST="login.mcs.anl.gov"
 
 export WORKER_LOGGING_LEVEL=DEBUG
-export WORKER_LOG_DIR="/nfs/proj-davidk/logs"
+export WORKER_LOG_DIR="/home/$USER/logs"
+export JOBSPERNODE="4"
+export JOBTHROTTLE=100
 
 # Set applications here
 #app cat=/bin/cat

Modified: branches/faster/tests/suite.sh
===================================================================
--- branches/faster/tests/suite.sh	2013-07-08 08:19:11 UTC (rev 6619)
+++ branches/faster/tests/suite.sh	2013-07-08 19:12:22 UTC (rev 6620)
@@ -16,6 +16,7 @@
   printf "\t -t         Tree mode (alias: -a,-c,-g,-p,-s)  \n"
   printf "\t -x         Do not continue after a failure    \n"
   printf "\t -v         Verbose (set -x, HTML comments)    \n"
+  printf "\t -l         Stress level < 1/ 2/ 3/ 4>         \n"
   printf "\t -o output  Location for cog and output        \n"
   printf "\t <GROUP>    GROUP argument                     \n"
 }
@@ -24,6 +25,7 @@
 TEXTREPORT=0
 DEFAULT_TIMEOUT=30 # seconds
 RUN_ANT=1
+STRESS=2
 # If true, run "ant clean"
 CLEAN=1
 SKIP_TESTS=0
@@ -81,6 +83,9 @@
     -x)
       ALWAYS_EXITONFAILURE=1
       shift;;
+    -l)
+      STRESS=$2
+      shift 2;;
     -v)
       VERBOSE=1
       shift;;
@@ -110,7 +115,7 @@
 	GRAY=""
 fi
 
-
+export STRESS="S$STRESS"
 # Iterations per test (may want to run each test multiple times?)
 ITERS_LOCAL=1
 
@@ -777,6 +782,7 @@
     return 0
   fi
 
+  SOURCESCRIPT=$NAME.source.sh
   SETUPSCRIPT=$NAME.setup.sh
   CHECKSCRIPT=$NAME.check.sh
   CLEANSCRIPT=$NAME.clean.sh
@@ -785,6 +791,13 @@
 
   TEST_SHOULD_FAIL=0
   OUTPUT=$NAME.setup.stdout
+
+  if [ -x "$GROUP/$SOURCESCRIPT" ]; then
+    cp "$GROUP/$SOURCESCRIPT" .
+    source ./$SOURCESCRIPT 
+  fi
+  echo "GLOBUS_HOSTNAME : $GLOBUS_HOSTNAME"
+
   if [ -x "$GROUP/$SETUPSCRIPT" ]; then
     cp "$GROUP/$SETUPSCRIPT" .
     script_exec ./$SETUPSCRIPT "S"
@@ -794,7 +807,10 @@
 
   ARGS=""
   if [ -f $GROUP/$ARGSFILE ]; then
-  	ARGS=`cat $GROUP/$ARGSFILE`
+    cp "$GROUP/$ARGSFILE" .
+    ARGS=`cat $GROUP/$ARGSFILE`
+  elif [ -f $ARGSFILE ]; then
+    ARGS=`cat $ARGSFILE`
   fi
 
   CDM=




More information about the Swift-commit mailing list