How to output a message in snowfall?

r, snowfall

Solution

Check `?sfCat` and find the line where it says:

sfCat is a debugging function printing a message on all slaves (which appear in the logfiles).

This tells us that we need to enable logging in the call to `sfInit` (argument `slaveOutfile`). Then, each call to `sfCat()` will dump stuff to the log file you specified. It took me a while to figure that out as well ;-)

Code Example

if (!require("snowfall")) {
    install.packages("snowfall")
    require("snowfall")
}

sfInit(parallel=TRUE, cpus=4, slaveOutfile="test.txt")
sfLibrary("snowfall", character.only=TRUE)

res <- sfClusterApplyLB(1:100, function(x) {
    sfCat(paste("Iteration ", x), sep="\n")
})
sfStop()

Output of `./test.txt`

[...]

Calling a snowfall function without calling 'sfInit' first or after sfStop().
'sfInit()' is called now.
snowfall 1.84 initialized: sequential execution, one CPU.

Iteration  4
Type: EXEC 
Iteration  92
Type: EXEC 
Iteration  94
Type: EXEC 
Iteration  96
Type: EXEC 
Iteration  98
Type: EXEC 
Iteration  100
ype: EXEC 
Iteration  29
Type: EXEC 
Iteration  31
Type: EXEC 
Iteration  33
Type: EXEC 
Iteration  35
Type: EXEC 
Iteration  37
Type: EXEC 
Iteration  39
Type: EXEC 
Iteration  41
Type: EXEC 
Iteration  43
Type: EXEC 
Iteration  45
Type: EXEC 
Iteration  47
Type: EXEC 
Iteration  49
Type: EXEC 
Iteration  51
Type: EXEC 
Iteration  53
Type: EXEC 
Iteration  55
Type: EXEC 
Iteration  57
Type: EXEC 
Iteration  59
Type: EXEC 
Iteration  61
Type: EXEC 
Iteration  63
Type: EXEC 
Iteration  65
Type: EXEC 
Iteration  67
Type: EXEC 
Iteration  69
Type: EXEC 
Iteration  71
Type: EXEC 
Iteration  73
Type: EXEC 
Iteration  75
Type: EXEC 
Iteration  77
Type: EXEC 
Iteration  79
Type: EXEC 
Iteration  81
Type: EXEC 
Iteration  83
Type: EXEC 
Iteration  85
Type: EXEC 
Iteration  87
Type: EXEC 
Iteration  89
Type: EXEC 
Iteration  91
Type: EXEC 
Iteration  93
Type: EXEC 
Iteration  95
Type: EXEC 
Iteration  97
Type: EXEC 
Iteration  99
 EXEC 
Iteration  74
Type: EXEC 
Iteration  76
Type: EXEC 
Iteration  78
Type: EXEC 
Iteration  80
Type: EXEC 
Iteration  82
Type: EXEC 
Iteration  84
Type: EXEC 
Iteration  86
Type: EXEC 
Iteration  88
Type: EXEC 
Iteration  90

Own question

Does anyone have a clue how to "control" the specific things that go to the log file? E.g., what would be nice is to include information about which worker finished which job etc.

Problem

I am conducting a simulation study using snowfall package on Windows 7. I like to print out a message for every 10 runs to main R console to monitor the progress, but it fails to do so. ie. nothing is printed Any help will be much appreciated. ``` runsim = function(nsim,n,mean,var){ cov = 0 for(i in 1:nsim){ if ( i %% 10==0) cat("\n Running simulation",i) dat = function1(n,mean,var) cov = ... } cov / nsim } sfExport("function1","runsim") sfLibrary(library1) wrapper = function(n){ runsim(100,n,0.5,0.25) } Out<-sfLapply(1:100,wrapper) ```

Original source