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
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
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.
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.