2015-10-14 49 views
0

打開cpp文件並行我遇到了一個問題,有線的,但我不知道如果我要問的問題正確:RCPP在Rstudio,內存不能緩存的時候,如果我不Rstudio

result = parLapply(cl, 1:4, 
        function(j,rho_list_needed,delta0_needed, 
           V_iter_s,Sigma_list_needed) { 
         rhoj = rho_list_needed[[j]] 
         delta0_in_cpp = delta0_needed 
         v = as.vector(V_iter_s[,,,j]) 
         sigmaj = Sigma_list_needed[[j]] 
         sourceCpp('sample_Z.cpp')#first time complie slow,then cashed 
         return(Sample_Z(rhoj,delta0_in_cpp, v,sigmaj,A,Cmatrix)) 
        },rho_list_needed,delta0_needed, 
        V_iter[[s]],Sigma_list_needed) 

當我通過parLapply並行測試我的sample_Z.cpp時,單次計算大約需要1秒。同時,我的4次迭代需要大約1.2秒,與無與倫比的版本相比,這是一個很大的改進,這是8秒。

昨天我運行程序時根本沒有問題。剛纔我注意到了一個bug,並修改了我的程序。爲了給我的電腦一個新的環境,我重新啓動了我的電腦。當開始運行我的程序時,我只打開了.R文件,然後運行。但是這個平行花了9秒,而這個平均花了1.2秒。 9秒鐘是在對我的核心進行預熱之後,也就是說,在我開始計時之前已經找到了cpp。

我只是不知道錯誤在哪裏。然後嘗試直接在我的全球歡樂中找到cpp文件,並且我發現根本沒有緩存。第二次與第一次相同。

但我不小心在編輯處打開了Rstudio中的sample_Z.cpp。然後,現在一切正常。

我不知道如何在谷歌搜索這個類似的問題與什麼樣的關鍵詞,我不知道如果打開cpp文件是必須的,而我從來沒有知道。

有誰能告訴我什麼是真正的問題?謝謝!

回答

0

重新啓動計算機後,您可能會有額外的進程在運行,這將會導致CPU核心競爭,從而減慢算法速度。你正在重新啓動的事實表明你沒有使用Linux ...但是如果你是這樣,在開始代碼的同時觀看top,或者等同於你的平臺。