[Swift-devel] could we set the job sequence without a file dependency?

Ian Foster foster at anl.gov
Tue Mar 24 12:19:31 CDT 2009


I wish we could talk about the technical issue at hand, rather than  
preconceptions of my motives.

I raised a technical issue: people sometimes want to express  
sequencing that relates to external side effects (e.g., output). How  
do we do that? We can, as Ben suggests, introduce an artificial data  
dependency. Or, we can provide an operator that expresses the  
sequencing. Each have pros and cons:

- The artificial data dependency is less clear in its semantics than  
the sequential operator
- The artificial data dependency requires that you modify procedures  
to sequence them
- The artificial data dependency is a real pain to write if you have  
to do it a lot
+ The artificial data dependency does not introduce a new operator
+ The artificial data dependency may allow for finer control over what  
is sequenced

I couldn't care less whether Swift looks like PCN. But I do have that  
experience, and recall the considerable frustration of some users who  
wanted to ensure that activity X happened before activity Y (whether  
for side effects, or debugging) and had to go to great lengths to  
introduce artificial data dependencies to achieve that goal.

Ian.



On Mar 24, 2009, at 12:11 PM, Mihael Hategan wrote:

> You seem to want swift to be PCN.
>
> On Tue, 2009-03-24 at 12:08 -0500, Ian Foster wrote:
>> Only in a round-about way. Maybe that is ok, it is just less  
>> intuitive
>> than say:
>>
>>
>> seq {
>>    A();
>>    B();
>> }
>>
>>
>> (IMHO)
>>
>>
>> Ian.
>>
>> On Mar 24, 2009, at 12:02 PM, Ben Clifford wrote:
>>
>>>
>>> you can express sequencing. that's what extern lets you do.
>>>
>>> On Tue, 24 Mar 2009, Ian Foster wrote:
>>>
>>>> These discussions are very reminiscent of PCN, where we had many
>>>> of the same
>>>> issues.
>>>>
>>>> A reason then for wanting sequencing was for output.
>>>>
>>>> We introduced a sequential operator, which had the advantage that
>>>> people could
>>>> say more directly what they meant.
>>>>
>>>>
>>>> On Mar 24, 2009, at 9:06 AM, Ben Clifford wrote:
>>>>
>>>>>
>>>>> On Tue, 24 Mar 2009, Zhao Zhang wrote:
>>>>>
>>>>>> Say, Job A is broadcasting common data shared for all jobs.
>>>>>> And Job B only
>>>>>> needs to know that Job A is done, so he could read the common
>>>>>> data.
>>>>>
>>>>> ok, so there is a data dependency.
>>>>>
>>>>> You can externals (like Mike has been using on the swift-user
>>>>> list) to
>>>>> represent data dependencies like that.
>>>>>
>>>>> app (external commonData) A() {
>>>>> ...
>>>>> }
>>>>>
>>>>> app B(external commonData) {
>>>>> ...
>>>>> }
>>>>>
>>>>> external d = A();
>>>>> B(d);
>>>>>
>>>>> d represents your shared data set - by declaring it as
>>>>> 'external' you say
>>>>> that Swift should do data dependency handling, but should not
>>>>> attempt to
>>>>> manage the data itself.
>>>>>
>>>>> d is mapped to the data, but in your head, rather than in Swift.
>>>>>
>>>>> -- 
>>>>> _______________________________________________
>>>>> Swift-devel mailing list
>>>>> Swift-devel at ci.uchicago.edu
>>>>> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
>>>>
>>
>> _______________________________________________
>> Swift-devel mailing list
>> Swift-devel at ci.uchicago.edu
>> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
>




More information about the Swift-devel mailing list