Я использовал fread
с пакетами foreach
и doParallel
в R 3.2.0 в ubuntu 14.04. Следующий код работает нормально, хотя я не использовал registerDoParallel
.
library(foreach)
library(doParallel)
library(data.table)
write.csv(iris,'test.csv',row.names=F)
cl<-makeCluster(4)
tmp<-foreach(i=1:10) %dopar% { t <- fread('test.csv') }
tmp<-rbindlist(tmp)
stopCluster(cl)
Однако при переходе на Windows 7 он больше не работает, с функцией registerDoParallel или без нее.
library(foreach)
library(doParallel)
#library(doSNOW)
library(data.table)
write.csv(iris,'test.csv',row.names=F)
cl<-makeCluster(4)
registerDoParallel(cl)
#registerDoSNOW(cl)
tmp<-foreach(i=1:10) %dopar% { t <- fread('test.csv') }
tmp<-rbindlist(tmp)
stopCluster(cl)
Пакет doSNOW тоже не работает. Ниже сообщение об ошибке.
Error in { : task 1 failed - "could not find function "fread""
Есть ли у кого-нибудь подобный опыт?
Следующий вопрос касается вложенных foreach
. Похоже, следующее не сработает.
cl<-makeCluster(4)
registerDoParallel(cl)
clusterEvalQ(cl , library(data.table))
tmp<-foreach(j=1:10) %dopar% {
tmp1<-foreach(i=1:10) %dopar% {
t<-fread('test.csv',data.table=T)
}
rbindlist(tmp1)
}
stopCluster(cl)
registerDoParallel
он не будет работать параллельно (вы получите предупреждение только в первый раз). Чтобы заставитьfread
работать, вам может потребоваться передать функции каждому кластеру через, что-то вродеclusterEvalQ(cl, library(data.table))
(непроверено) - person user20650   schedule 16.06.2015registerDoParallel(cl)
в ubuntu я получил такое же сообщение об ошибкеError in { : task 1 failed - "could not find function "fread""
. - person Lamothy   schedule 16.06.2015foreach(i=1:10,.export='fread')
может решить проблему. - person Lamothy   schedule 16.06.2015clusterEvalQ(cl , library(data.table))
после регистрации серверной части. - person user20650   schedule 16.06.2015clusterEvalQ
для добавления всех функций в кластер? - person Lamothy   schedule 16.06.2015clusterEvalQ(cl , c(library(data.table), library(foreach)))
но я бы не подумал, что это путь - person user20650   schedule 16.06.2015