私は「並列化」段階に進むために必要なRコードを持っています。私は間違った言葉を使用する場合、私はこれで新しいので、私を許してください。私は一度に個人ごとに悩まされ、最後に個人間で平均をとらなければならないプロセスを持っています。このプロセスは各個人(ブラウン橋)について全く同じですが、私は300人以上の人にこれを行わなければなりません。だから、ここで誰かが私のコードを変更して産んだのを知ることを望んでいただろうか?または並列化された? 48個のCPUがアクセスできるようにすることが何であれ、私の小さなノートパソコンでこれを計算するのにかかる58日を減らすのに役立ちます。私の頭の中では、1つのプロセッサを1つのプロセッサに送信するだけです。それはスクリプトを実行し、別のものを送信して....それが理にかなっている場合。Rコードをマルチコア処理に書き換えるには?
以下は私のコードです。私はそれにコメントしようとしましたが、コードを変更する必要があると思われる箇所を示しました。
for (n in 1:(length(IDNames))){ #THIS PROCESSES THROUGH EACH INDIVIDUAL
#THIS FIRST PART IS JUST EXTRACTING THE DATA FROM MY TWO INPUT FILES.
#I HAVE ONE FILE WITH ALL THE LOCATIONS AND THEN ANOTHER FILE WITH A DATE RANGE.
#EACH INDIVIDUAL HAS DIFFERENT DATE RANGES, THUS IT HAS TO PULL OUT EACH INDIVIDUALS
#DATA SET SEPARATELY AND THEN RUN THE FUNCTION ON IT.
IndivData = MovData[MovData$ID==IDNames[n],]
IndivData = IndivData[1:(nrow(IndivData)-1),]
if (UseTimeWindow==T){
IndivDates = dates[dates$ID==IDNames[n],]
IndivData = IndivData[IndivData$DateTime>IndivDates$Start[1]&IndivData$DateTime<IndivDates$End[1],]
}
IndivData$TimeDif[nrow(IndivData)]=NA
########################
#THIS IS THE PROCESS WHERE I THINK I NEED THAT HAS TO HAVE EACH INDIVIDUAL RUN THROUGH IT
BBMM <- brownian.bridge(x=IndivData$x, y=IndivData$y,
time.lag = IndivData$TimeDif[1:(nrow(IndivData)-1)], location.error=20,
area.grid = Grid, time.step = 0.1)
#############################
# BELOW IS JUST CODE TO BIND THE RESULTS INTO A GRID DATA FRAME I ALREADY CREATED.
#I DO NOT UNDERSTAND HOW THE MULTICORE PROCESSED CODE WOULD JOIN THE DATA BACK
#WHICH IS WHY IVE INCLUDED THIS PART OF THE CODE.
if(n==1){ #creating a data fram with the x, y, and probabilities for the first individual
BBMMProbGrid = as.data.frame(1:length(BBMM[[2]]))
BBMMProbGrid = cbind(BBMMProbGrid,BBMM[[2]],BBMM[[3]],BBMM[[4]])
colnames(BBMMProbGrid)=c("GrdId","X","Y",paste(IDNames[n],"_Prob", sep=""))
} else { #For every other individual just add the new information to the dataframe
BBMMProbGrid = cbind(BBMMProbGrid,BBMM[[4]])
colnames(BBMMProbGrid)[n*2+2]=paste(IDNames[n],"_Prob", sep ="")
}# end if
} #end loop through individuals
誰かが-1で投票したことは分かりませんが、あなたのコードが複雑すぎるため、疑わしいと思います。人々がそれを見分けるのに時間がかかります。あなたは私たちに10〜20行しかない簡略化されたバージョンを与えることができますか?まだ完全なR構文を持っていますが、あなたがしたいことのアイデアを与えますか?また、マルチコア、密接に結合されたマシンなど、計算機の設定についてもう少し詳しく教えてください。どのようなアプローチが考えられましたか(高性能タスクビュー(http://cran.r-project.org/web/views/HighPerformanceComputing.html)を参照) –
ブライアンをSeconding。あなたの仕事のすべてを私たちにさせてはいけません。並列化が必要な手順を私たちに教えてください。私たちはそれを手助けすることができます。 – Maiasaura
おっと、私はベンを入力するつもりだった。ごめんなさい! – Maiasaura