代码之家  ›  专栏  ›  技术社区  ›  Daan11

macOS和CentOS上带有doSNOW群集的并行插入符号

  •  2
  • Daan11  · 技术社区  · 7 年前

    我在学习这个教程 带R和caret的机器学习简介 ( https://www.youtube.com/watch?v=z8PRU46I3NY )与centOS相比,在macOS上与doSNOW并行运行R时,会获得不同的机器行为:

    cl = makeCluster(4, type = 'SOCK')
    registerDoSNOW(cl)
    
    # build model
    caret.cv = train(Survived ~ .,
                     data = titanic.train,
                     method = 'xgbTree',
                     tuneGrid = tune.grid,
                     trControl = train.control)
    stopCluster(cl)
    

    在macOS上运行时,它会创建4个进程,每个线程1个,因此运行4@>99%(xgbTree约6min)。在centOS上,它创建了4个进程,每个进程运行24个线程,因此总共24@>99%(xgbTree未完成>30min)。即使只在centOS上创建一个或两个集群,也会使用所有线程,服务器完全繁忙。

    更新:当使用doSNOW集群运行非插入符号代码时,一切都很好-每个进程运行1个线程,即使在centOS上也是如此。


    我丢了什么?

    如果我能为你提供更多信息,请告诉我。 谢谢你的帮助和建议。


    centOS 60x+上的htop: R—从—无还原==文件=/usr/lib64/R/library/snow/RSOCKnode。R—args MASTER=localhost PORT=11326 OUT=/dev/null SNOWLIB=/usr/lib64/R/library

    R版本3.3.2 :x86_64-redhat-linux-gnu;x86_64-apple-darwin13.4.0/ centOS服务器 : 1/8/1

    1 回复  |  直到 6 年前
        1
  •  0
  •   Daan11    7 年前

    Parallel processing with xgboost and caret

    与我的R/caret macOS安装不同,似乎有必要指定线程数( )对于centOS安装上的每个xgboost进程:

    caret.cv = train(yol ~ .,
                 data = kmer.train,
                 method = 'xgbTree',
                 tuneGrid = tune.grid,
                 trControl = train.control,
                 nthread = 1)
    

    如果不这样做,在macOS上仍然会导致1个线程/进程,但xgboost将(据我所知)多线程,并尝试在每个进程中占用所有线程。