[Swift-devel] Placing and recovering results from Tcl memory on worker ranks

Yadu Nand Babuji yadunand at uchicago.edu
Thu May 28 14:01:41 CDT 2015


Hi Justin, Tim,

Is there any method available to execute a task per worker rank at the 
end of the run ?
I remember that a cleanup script that could be specified using an 
environment variable that
would be executed as the workers finalized. I'm trying to use node local 
memory by aggregating
results from computation in tcl variables, but I do not know how I could 
specify a leaf app that
would return the results from the tcl-variables per rank at the 
finalizing stage.

Here's what the leaf-code that accumulates in a tcl variable, and this 
appears to work:

@dispatch=WORKER
(float a) accum (float s) "turbine" "0.0" [
"""
if ![info exists var] {set var 0}
set var [expr {$var + <<s>>}]
set <<a>> $var
"""
];

This came from the different approaches I tried to improve the 
performance of the benchmarking code
Ioan's students were using. The bottleneck there was writes to an array, 
which is what I'm trying to avoid
entirely by putting results into on-node memory and then doing a final 
aggregate over all ranks. But
ensuring that the aggregation over ranks happen after all other work has 
completed without specifying
any data dependencies is proving to be a hard problem

Thanks,
Yadu



More information about the Swift-devel mailing list