ゼロから始めるプログラミングの学習日記

未経験の状態からプログラミング初めます

R言語:並列処理

処理をしていると激烈に重いときがある

時間がかかる処理については、並列処理をする。
並列処理とは、使用可能なコアを並列で使うこと。

使用可能なコアの確認は、

# 必要なlibrary
library(parallel)
# 使用可能なコアの数を取得する
cores <- detectCores()
print(cores)

で、print結果が出る。
あまり気にしなくても良いのだろうけれど、自分は3/4のコアだけ使用して並列処理している。

library(parallel)
library(foreach)

# 使用するコアの数を指定
cores_to_use <- detectCores() * (3/4)  #フルで使うなら、* (3/4)を省く
print(cores_to_use)
# パラレルバックエンドの設定
cl <- makeCluster(cores_to_use)  # 指定した数のコアをクラスターに追加
registerDoParallel(cl)  # foreachでのパラレル処理に使用


#並行処理用のプログラム書く
#(普通のプログラムじゃなくて、foreachとか盛り込む感じ)

# 終了処理
stopCluster(cl)  # クラスターを閉じる

という具合。
途中の処理プログラムの構文がよく分からなくて悩んでる。
本当にわからないときは、GPTに聞いたりで対応。


どのくらいかかっているかを確認するために、開始時刻と終了時刻を記録してます。

start <- Sys.time()
print(start)


#プログラム

end <- Sys.time()
print(end)

print(end - start)

という感じ。


並列処理しないで、朝見たら13時間回っていて、かつ期待した結果になってなかったときは、結構へこんだ。