BootstrapParallel error

Posted on
Picture of user. neale Joined: 07/31/2009

Hi (Michael)

When I run models/nightly/BootstrapParallelNightly.R

I get:

> modelResults <- mxRun(topModel, silent=TRUE, suppressWarnings=F)
Error in checkForRemoteErrors(val) :
5000 nodes produced errors; first error: unused argument(s) (useOptimizer)

Has there been a change which affects this argument?

Cheers
Mike

Replied on Mon, 03/21/2011 - 17:08
Picture of user. rgore Joined: Jan 27, 2011

Hi Mike,
That looks like its related to an edit we made to the code last week. I'll look into it and get back to you soon. Thanks!

Ross

Replied on Mon, 03/21/2011 - 17:17
Picture of user. mspiegel Joined: Jul 31, 2009

Umm, I'm not getting any errors when I run this on the latest OpenMx from the svn trunk. If you are running the script on a cluster, you will have to ensure that the OpenMx version on the interactive node of the cluster is the same as the OpenMx version on the compute nodes of the cluster.

Replied on Mon, 03/21/2011 - 18:49
Picture of user. neale Joined: Jul 31, 2009

In reply to by mspiegel

I took the nuke option wrt OpenMx:

mv OpenMx OpenMx.old
svn checkout --username me http://openmx.psyc.virginia.edu/svn OpenMx
cd OpenMx/trunk
sudo make install


run again

same errors (maybe warnings only?) - though it does seem to run ok:

Error in checkForRemoteErrors(val) :
1000 nodes produced errors; first error: unused argument(s) (useOptimizer)
>
> results <- t(omxSapply(modelResults@submodels, getStats))
>
> sfStop()

Stopping cluster

>
> # get rid of bad covergence results
> results2 <- data.frame(results[which(results[,1] <= 1),])
>
> # summarize the results
> means <- mean(results2)
> stdevs <- sd(results2)
> sumResults <- data.frame(matrix(dnr[pStrt:pEnd], 2*nVar, 1,
+ dimnames=list(NULL, "Parameter")))
> sumResults$mean <- means[pStrt:pEnd]
> sumResults$obsStDev <- stdevs[pStrt:pEnd]
> sumResults$meanHessEst <- means[hStrt:hEnd]
> sumResults$sqrt2meanHessEst <- sqrt(2) * sumResults$meanHessEst
>
> omxCheckCloseEnough(sumResults[1,'mean'], 0.8, 0.1)
sumResults[1, "mean"] and 0.8 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[2,'mean'], 0.5, 0.1)
sumResults[2, "mean"] and 0.5 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[3,'mean'], 0.7, 0.1)
sumResults[3, "mean"] and 0.7 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[4,'mean'], 0.0, 0.1)
sumResults[4, "mean"] and 0 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[5,'mean'], 1.00, 0.1)
sumResults[5, "mean"] and 1 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[6,'mean'], 1.00, 0.1)
sumResults[6, "mean"] and 1 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[7,'mean'], 1.00, 0.1)
sumResults[7, "mean"] and 1 are equal to within 0.1.
> omxCheckCloseEnough(sumResults[8,'mean'], 1.00, 0.1)
sumResults[8, "mean"] and 1 are equal to within 0.1.
>
> detach("package:snowfall")
> detach("package:snow")
> traceback()
8: stop(count, " nodes produced errors; first error: ", firstmsg)
7: checkForRemoteErrors(val)
6: dynamicClusterApply(cl, fun, length(x), argfun)
5: clusterApplyLB(sfGetCluster(), x, fun, ...)
4: sfClusterApplyLB(x, fun, ...)
3: omxLapply(independents, mxRun, intervals = intervals, silent = silent,
suppressWarnings = suppressWarnings, unsafe = unsafe, checkpoint = checkpoint,
useSocket = useSocket, onlyFrontend = onlyFrontend, useOptimizer = useOptimizer)
2: runHelper(model, frontendStart, intervals, silent, suppressWarnings,
unsafe, checkpoint, useSocket, onlyFrontend, useOptimizer)
1: mxRun(topModel, silent = TRUE, suppressWarnings = TRUE)

One thing that's a bit odd though. When it is running mxRun step, I only seem to see one R process. When it summarizes results it seems to use 4 (as desired on new Macbook Pro). I had to increase the nReps to some 100,000 to see this behavior. So it looks like

modelResults <- mxRun(topModel, silent=TRUE, suppressWarnings=TRUE)

Uses 1 processor, whereas

results <- t(omxSapply(modelResults@submodels, getStats))

uses 4.