Gói parallel - parApply

Viết mã R hiệu quả

Colin Gillespie

Jumping Rivers & Newcastle University

Gói parallel

  • Một phần của R từ năm 2011
    library("parallel")
    
    • Đa nền tảng: Mã chạy trên Windows, Linux, Mac
    • Có các phiên bản song song của các hàm chuẩn
Viết mã R hiệu quả

Hàm apply()

  • apply() giống như một vòng lặp for

    • Ta áp dụng một hàm cho từng hàng/cột của ma trận
  • Một ma trận 10 cột, 10.000 hàng:

m <- matrix(rnorm(100000), ncol = 10)
  • apply gọn gàng hơn vòng lặp for
res <- apply(m, 1, median)
Viết mã R hiệu quả

Chuyển sang chạy song song

  • Nạp gói
    • Chỉ định số lõi
    • Tạo đối tượng cluster
    • Chuyển sang parApply()
    • Dừng lại!
library("parallel")
copies_of_r <- 7
cl <- makeCluster(copies_of_r)
parApply(cl, m, 1, median)
stopCluster(cl)
Viết mã R hiệu quả

Tin không vui

Như Lewis Caroll nói

The hurrier I go, the behinder I get.

  • Đôi khi chạy song song chậm hơn do tốn thời gian trao đổi giữa các luồng
# Bản tuần tự
apply(m, 1, median)
# Bản song song
parApply(cl, m, 1, median)
  • So sánh hiệu năng cả hai cách
Viết mã R hiệu quả

Cùng luyện tập nào!

Viết mã R hiệu quả

Preparing Video For Download...