Система:
Операционна система - Windows 7
RAM -8GB
Процесор -Intel i7
R версия - Винаги я поддържайте актуална
Проблем:
R използва само 13% (т.е. 1 от 8 ядра) от моя процесор Intel i7. Искам да използвам няколко ядра за по-бързо изпълнение на моя код. Но за съжаление не може.
Опити:
Започнах да използвам пакети Parallel, Snow, Snowfall, дори ги конфигурирах да използват 8 ядра, но за съжаление не използвам никоя от функциите за прилагане, за да използвам персонализираните функции, които предоставят (като mcapply, sflapply).
for (i in 1:number.of.accounts){
if (is.na(s$rev2012[i]) == "FALSE" && is.na(s$rev2013[i]) == "TRUE"){
loss = rbind(loss, s[i,])
}
x = x + 1
}
Рамката с данни "s" в горния код има около 56 000 реда с 14 колони. "rev" означава приходи. Това, което се опитвам да направя, е, че ако има приходи през 2012 г., но не и през 2013 г., тогава сме „загубили“ този клиент. Използвам "x", за да отчитам скоростта.
Изпълнението на тази част от кода отнема много време и все още не съм я оставил да завърши. Когато прекъсвам, виждам, че няма много напредък.
Всяка помощ за отключване на всички ядра за изпълнение на този код би била наистина страхотна.
Благодаря!
foreach
за паралелни изчисления в Windows. Въпреки това, ускоряването, което можете да постигнете чрез паралелизиране, е изключително ограничено (от броя на процесорите). Ако пренапишете кода си към векторизиран подход вместоfor
цикъл, можете да очаквате ускоряване с порядъци. - person Roland   schedule 13.03.2014loss <- s[!is.na(s$rev2012) & is.na(s$rev2013),]
. Това не го паралелизира, а вместо това използва векторизираната форма, за която R е оптимизиран. - person shadow   schedule 13.03.2014foreach
? Не може да се намери помощ за това. shadow, благодаря за твоя код. Сега го пробвам. Ще се актуализира, ако видя някакви подобрения. Все още търся отключване на моите ядра специално. - person Pragith   schedule 13.03.2014