2015-08-08 33 views
1

我想使用IPython/Jupyter在計算集羣上設置100個作業來執行一些計算。在R內核中使用IPython/Jupyter集羣

在Python,我會做以下

from IPython.parallel import Client 
c = Client() 
c[:].apply_sync(lambda : "Hello, World") 

或者,使用IPython的集羣輔助

with cluster_view(scheduler="lsf", queue="myqueue", num_jobs=100) as view: 
    result = view.map(myfunc, params) 

是否有可能從R內核訪問IPython中的並行能力?

如果是,如何?

R中有一些並行處理功能,但這需要是IRkernel提供的功能。

我期望,如果我運行下面的線(具有相應的功能來訪問IPython的/ Jupyter簇),便見並行執行時間:

parallel_access_func(1:4, function(x) { re = as.character(Sys.time()); Sys.sleep(5); re }) 

回答

1

這是可能的,但將R內核將需要使用MetaKernel重新實施。 MetaKernel允許任何基於MetaKernel的內核並行運行,使用%parallel and %px magics。重新實現可能不會太困難。

+0

看看MetaKernel,這可能是合理的直截了當。從命令行R會話中使用這個有多困難?我必須說,我只是直接使用rzmq來執行我的並行計算。 –

0

我不認爲這是可能像你想象的那樣:ipyparallelPython的並行執行的lib與Jupyter ipykernel S作爲後端。它可以或多或少獨立於筆記本電腦/ IPython使用。

要使用R內核進行這項工作,您需要實現一個irparallel庫,它可以與irkernel(例如,至少一個與控制器和R引擎相互作用的功能,其起動irkernels而不是ipykernels。所有這些都不存在(但還沒有計劃)。

還有其他的R並行庫(因爲還有其他Python並行庫),它們可以做你想做的(我沒有任何經驗)。看看https://cran.r-project.org/web/views/HighPerformanceComputing.html