Có nên song song hóa không?

Lập trình song song trong R

Nabeel Imam

Data Scientist

Hãy xây một tòa nhà

   

Xây tầng mới trên tầng cũ: tuần tự

 

Lắp cửa sổ cho công trình hoàn thiện: song song

Một tòa nhà đang xây dựng. Các tầng chỉ có thể xây theo thứ tự, còn cửa sổ có thể lắp song song.

Lập trình song song trong R

Thang tuần tự–song song

Các tác vụ tính toán thường gặp được đặt trên một thang đo, từ tuần tự đến song song. Tạo biến mới gần phía song song, còn tổng tích lũy gần phía tuần tự.

Lập trình song song trong R

Một phép tính số học kinh điển

Tính căn bậc hai của một triệu số

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
Lập trình song song trong R

Song song hóa phép căn bậc hai như thế nào?

Lưu đồ tính căn bậc hai theo kiểu song song. Các số nguyên từ 1 đến 1 triệu được chia thành 5 nhóm, mỗi nhóm dài 200.000.

Lập trình song song trong R

Song song hóa phép căn bậc hai như thế nào?

Dữ liệu đã tách được gửi tới một cụm gồm nhiều lõi. Mỗi nhóm số được gửi tới một lõi để tính căn bậc hai. Nếu mọi lõi đều bận, nhóm mới sẽ chờ đến khi có lõi trống.

Lập trình song song trong R

Song song hóa phép căn bậc hai như thế nào?

Kết quả căn bậc hai từ mỗi lõi được thu thập và gộp lại thành một triệu căn.

Lập trình song song trong R

Một phép tính số học song song

Tính căn bậc hai của một triệu số theo kiểu song song

library(parallel)


my_cluster <- makeCluster(3)
start <- Sys.time() sq_roots <- parLapply(my_cluster, numbers, sqrt) end <- Sys.time()
stopCluster(my_cluster)
end - start
Time difference of 0.8416824 secs
Lập trình song song trong R

Không nhanh như kỳ vọng

Lưu đồ tính căn bậc hai của các số từ 1 đến 1 triệu theo kiểu song song.

Lập trình song song trong R

Không nhanh như kỳ vọng

Chạy song song phát sinh thêm việc. Đầu tiên là tách dữ liệu.

Lập trình song song trong R

Không nhanh như kỳ vọng

Sau khi tách, mỗi nhóm dữ liệu cần được sao chép tới các lõi trong cụm.

Lập trình song song trong R

Không nhanh như kỳ vọng

Sau khi tính toán, cần thu thập kết quả từ mỗi lõi để tạo kết quả cuối.

Lập trình song song trong R

Không nhanh như kỳ vọng

Một phần tài nguyên tính toán dùng để điều phối toàn bộ quy trình.

Lập trình song song trong R

Vậy có nên song song hóa không?

Với tác vụ đủ phức tạp, hãy cân nhắc:

Ưu điểm

  • Nhanh hơn tuần tự
  • Tiết kiệm chi phí về lâu dài

 

Nhược điểm

  • Cần kỹ năng lập trình chuyên biệt (nhưng bạn đã sẵn sàng!)
  • Tốn nhiều bộ nhớ
Lập trình song song trong R

Ayo berlatih!

Lập trình song song trong R

Preparing Video For Download...