2015-10-14 1 views
0

я встретил проводное проблему, но мне интересно, если я прошу правильный вопрос:Rcpp в Rstudio, не может кэшировать в памяти, когда параллельно, если я не открыть файл CPP в 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) 

Когда я тестировал свой sample_Z.cpp с параллелью через parLapply, единичный расчет занимает около 1 секунды. Параллельно мои 4 итерации занимают около 1,2 с, что является большим улучшением по сравнению с беспрецедентной версией, которая составляет 8 секунд.

Нет проблем, когда я запускаю свою программу вчера. Только сейчас я заметил ошибку и пересмотрел свою программу. Чтобы предоставить компьютеру новую среду, я перезапустил компьютер. Когда я начал запускать свою программу, я только открыл файл .R и запустил. Но для этой параллели потребовалось 9 секунд, которая составляла 1,2 секунды. Через 9 секунд после разогрева моих сердечников, то есть, уже было получено cpp до того, как я его проведу.

Я просто не знаю, где ошибка. Затем попробуйте загрузить файл cpp прямо в мое глобальное веселье, и я обнаружил, что кэширования вообще не было. Второй раз занял то же время, что и первое.

Но я случайно открыл sample_Z.cpp в Rstudio, явно в редакторе. И тогда все работает правильно.

Я не знаю, как искать подобную проблему в google с какими ключевыми словами, и я не знаю, является ли открытие файла cpp обязательным, пока я никогда не знал.

Может ли кто-нибудь сказать мне, в чем проблема? Благодаря!

ответ

0

После перезагрузки компьютера у вас, вероятно, были дополнительные процессы, которые могли бы конкурировать за ядра процессора, что замедляло ваш алгоритм. Тот факт, что вы перезагружаете, подсказывает мне, что вы не используете Linux ... но если да, то смотрите с top при запуске кода или в эквиваленте для вашей платформы.

Смежные вопросы