可能的原因" checkForRemoteErrors中的错误(lapply(cl,recvResult)):... object' .doSnowGlobals'找不到"错误?

时间:2016-06-03 17:23:13

标签: r parallel-processing doparallel

我多年来一直在R中重复执行一个函数脚本。在函数定义中,我使用:

在我的多核Windows工作站上设置并行集群
  # cores0 <- 20 (cores set to 20 outside of function definition)
  cl.spec <- rep("localhost", cores0)
  cl <- makeCluster(cl.spec, type="SOCK", outfile="") 
  registerDoParallel(cl, cores=cores0)

截至昨天,我的功能执行不再有效,并且被挂了好几个小时。 (另外,使用资源监视器,我可以看到尽管我的脚本指定了20个核心,但我的所有CPU都没有活动)。当我回到函数并逐行测试行时,我发现以下行没有执行(即,它通常在几秒钟内执行时挂起):

cl.spec <- rep("localhost", cores0)
cl <- makeCluster(cl.spec, type="SOCK", outfile="")

我尝试查找问题并发现了几个使用&#34; PSOCK&#34;类型,但无法确定何时使用PSOCK与SOCK。尽管如此,我尝试使用&#34; PSOCK&#34;而不是&#34; SOCK&#34;:

  cl <- makeCluster(cl.spec, type="PSOCK", outfile="") 
  registerDoParallel(cl, cores=cores0)

通过PSOCK修改,它不再挂起,它似乎执行此操作以及registerDoParallel()调用。

然而,当我执行包含上面两行的完整函数然后调用函数时,如下所示,我得到了一个我从未见过的错误:

Error in checkForRemoteErrors(lapply(cl, recvResult)) : 
  20 nodes produced errors; first error: object '.doSnowGlobals' not found 

我也尝试过不指定类型或输出文件,但这会产生与使用type =&#34; PSOCK&#34;

相同的错误
  cl <- makeCluster(cl.spec) 
  registerDoParallel(cl, cores=cores0)

我的问题: 1.为什么makeCluster()行可能会在以前从未挂起? cl&lt; - makeCluster(cl.spec,type =&#34; SOCK&#34;,outfile =&#34;&#34;)

  1. 问题是我是否只加载了parallel和doParallel软件包以及是否还加载了snow和doSNOW软件包。是否需要执行foreach()命令的所有4个包?
  2. 这是包含makeCluster()和registerDoParallel()调用的函数定义和函数调用,如上所述:

    # FUNCTION DEFINITION
    FX_RFprocessingSNPruns <- function(path, CurrentRoundSNPlist, colSAMP, Nruns, ntreeIN, coresIN,CurrentRoundGTframeRDA){
    
       ...do a bunch of steps ...
    
      #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      # SET UP INTERNAL FUNCTION
      #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
      ImpOOBerr<-function(x,y,d) { 
    
        create function
      }
    
    
      #################################################################
      # SET UP THE CLUSTER
      #################################################################
      #Setup clusters via parallel/DoParallel
      cl.spec <- rep("localhost", cores0)
      cl <- makeCluster(cl.spec, type="PSOCK", outfile="") 
      registerDoParallel(cl, cores=cores0)
    
      #################################################################
      # *** EMPLOY foreach TO CARRY OUT randomForest IN PARALLEL
      #################################################################
      system.time(RFoutput_runs <- foreach(i=1:Nruns0, .combine='cbind', .packages= 'randomForest', .inorder=FALSE, .multicombine=TRUE, .errorhandling="remove") 
    
                  %dopar% {    
    
                    ...do a bunch of steps ...
                  ImpOOBerr(x,y,d)
                  })
    
      #################################################################
      # STOP THE CLUSTER
      #################################################################
      stopCluster(cl)
    
      return(RFoutput_runs)
    
    }
    
    
    # CALL FUNCTION
    path0="C:/USERS/KDA/WORKING/"
    system.time(GTtest_5runs <- FX_RFprocessingSNPruns(
      path=path0,
      CurrentRoundSNPlist="SNPlist.rda",
      colSAMP=20, 
      Nruns=5, 
      ntreeIN=150, 
      coresIN=5,
      CurrentRoundGTframeRDA="GT.rda"))
    
    
    #Error in checkForRemoteErrors(lapply(cl, recvResult)) : 
    #  20 nodes produced errors; first error: object '.doSnowGlobals' not found. 
    

    我发现这些帖子引用了错误,但解决方案对我不起作用: error: object '.doSnowGlobals' not found? http://grokbase.com/t/r/r-sig-hpc/148880dpsm/error-object-dosnowglobals-not-found

    我正在使用Windows 8计算机,64位,40核。

    R.Version()
    $platform
    [1] "x86_64-w64-mingw32"
    
    $arch
    [1] "x86_64"
    
    $os
    [1] "mingw32"
    
    $system
    [1] "x86_64, mingw32"
    
    $status
    [1] ""
    
    $major
    [1] "3"
    
    $minor
    [1] "3.0"
    
    $year
    [1] "2016"
    
    $month
    [1] "05"
    
    $day
    [1] "03"
    
    $`svn rev`
    [1] "70573"
    
    $language
    [1] "R"
    
    $version.string
    [1] "R version 3.3.0 (2016-05-03)"
    
    $nickname
    [1] "Supposedly Educational"
    

    R版本3.3.0(2016-05-03) - &#34;据说教育&#34; 版权所有(C)2016 R统计计算基金会 平台:x86_64-w64-mingw32 / x64(64位)

1 个答案:

答案 0 :(得分:1)

这是防止访问核心的机构防病毒软件。