ควรใช้การประมวลผลแบบขนานไหม?

การเขียนโปรแกรมแบบขนานใน R

Nabeel Imam

Data Scientist

ลองมองผ่านตัวอย่างการก่อสร้างอาคาร

   

ก่อสร้างชั้นถัดไปบนชั้นที่เสร็จแล้ว: แบบลำดับ (sequential)

 

ติดตั้งหน้าต่างในโครงสร้างที่สร้างเสร็จแล้ว: แบบขนาน (parallel)

อาคารกำลังก่อสร้าง การสร้างชั้นต้องทำตามลำดับ ส่วนการติดตั้งหน้าต่างสามารถทำแบบขนานได้

การเขียนโปรแกรมแบบขนานใน R

สเกลระหว่างแบบลำดับและแบบขนาน

งานคำนวณทั่วไปถูกจัดวางบนสเกล โดยมีแบบลำดับอยู่ปลายด้านหนึ่งและแบบขนานอยู่ปลายอีกด้าน การสร้างตัวแปรใหม่อยู่ใกล้ฝั่งขนาน ส่วน cumulative sum อยู่ใกล้ฝั่งลำดับ

การเขียนโปรแกรมแบบขนานใน R

การดำเนินการทางตัวเลขแบบคลาสสิก

การคำนวณรากที่สองของตัวเลขหนึ่งล้านตัว

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
การเขียนโปรแกรมแบบขนานใน R

จะประมวลผลรากที่สองแบบขนานได้อย่างไร?

ผังงานสำหรับการคำนวณรากที่สองแบบขนาน จำนวนเต็มตั้งแต่ 1 ถึง 1 ล้านถูกแบ่งออกเป็น 5 กลุ่ม แต่ละกลุ่มมีขนาด 200,000

การเขียนโปรแกรมแบบขนานใน R

จะประมวลผลรากที่สองแบบขนานได้อย่างไร?

ข้อมูลที่แบ่งแล้วถูกส่งไปยังคลัสเตอร์ซึ่งประกอบด้วยหลาย core แต่ละกลุ่มของตัวเลขถูกส่งไปยัง core หนึ่งเพื่อคำนวณรากที่สอง หากทุก core ถูกใช้งานอยู่ กลุ่มใหม่จะรอจนกว่า core จะว่าง

การเขียนโปรแกรมแบบขนานใน R

จะประมวลผลรากที่สองแบบขนานได้อย่างไร?

ผลลัพธ์รากที่สองจากแต่ละ core ถูกรวบรวมและรวมกันเพื่อให้ได้รากที่สองครบหนึ่งล้านค่า

การเขียนโปรแกรมแบบขนานใน R

การดำเนินการทางตัวเลขแบบขนาน

การคำนวณรากที่สองของตัวเลขหนึ่งล้านตัวแบบขนาน

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
การเขียนโปรแกรมแบบขนานใน R

เร็วกว่าที่คาดไว้น้อยกว่าที่คิด

ผังงานสำหรับการคำนวณรากที่สองแบบขนานของตัวเลข 1 ถึง 1 ล้าน

การเขียนโปรแกรมแบบขนานใน R

เร็วกว่าที่คาดไว้น้อยกว่าที่คิด

การประมวลผลแบบขนานมีงานพิเศษหลายอย่าง งานแรกคือการแบ่งข้อมูล

การเขียนโปรแกรมแบบขนานใน R

เร็วกว่าที่คาดไว้น้อยกว่าที่คิด

หลังจากแบ่งข้อมูลแล้ว ข้อมูลย่อยแต่ละกลุ่มต้องถูกคัดลอกไปยัง core ในคลัสเตอร์

การเขียนโปรแกรมแบบขนานใน R

เร็วกว่าที่คาดไว้น้อยกว่าที่คิด

หลังการคำนวณ ผลลัพธ์จากแต่ละ core ต้องถูกรวบรวมเพื่อให้ได้ผลลัพธ์สุดท้าย

การเขียนโปรแกรมแบบขนานใน R

เร็วกว่าที่คาดไว้น้อยกว่าที่คิด

ทรัพยากรการคำนวณบางส่วนถูกใช้ไปกับการจัดการกระบวนการทั้งหมด

การเขียนโปรแกรมแบบขนานใน R

แล้วควรใช้การประมวลผลแบบขนานไหม?

สำหรับงานที่ซับซ้อนเพียงพอ ลองพิจารณา:

ข้อดี

  • เร็วกว่าแบบลำดับ
  • คุ้มค่ากว่าในระยะยาว

 

ข้อเสีย

  • ต้องใช้ทักษะการเขียนโค้ดพิเศษ (แต่ คุณ พร้อมแล้ว!)
  • ใช้หน่วยความจำสูง
การเขียนโปรแกรมแบบขนานใน R

มาฝึกกันเถอะ!

การเขียนโปรแกรมแบบขนานใน R

Preparing Video For Download...