เปลี่ยนมาใช้ parApply
การรันโค้ดแบบขนานด้วยแพ็กเกจ parallel มีขั้นตอนพื้นฐาน 3 ขั้นตอน ดังนี้
- สร้างคลัสเตอร์ด้วย
makeCluster() - ประมวลผลงานที่ต้องการ
- หยุดคลัสเตอร์ด้วย
stopCluster()
วิธีที่ง่ายที่สุดในการสร้างคลัสเตอร์คือส่งตัวเลขให้กับ makeCluster() ซึ่งจะสร้างคลัสเตอร์แบบ default และรันโค้ดบนจำนวนคอร์ตามที่ระบุ
ออบเจกต์ dd คือ data frame ที่มี 10 คอลัมน์และ 100 แถว โค้ดด้านล่างใช้ apply() เพื่อคำนวณค่ามัธยฐานของแต่ละคอลัมน์:
apply(dd, 2, median)
หากต้องการรันแบบขนาน ให้เปลี่ยนจาก apply() เป็น parApply() โดยอาร์กิวเมนต์ของฟังก์ชันนี้เหมือนกันทุกประการ ยกเว้นจะมีอาร์กิวเมนต์ cluster เพิ่มขึ้นมาเป็นตัวแรกก่อนอาร์กิวเมนต์ปกติของ apply()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียน R Code อย่างมีประสิทธิภาพ
คำแนะนำการฝึกหัด
- ใช้ฟังก์ชัน
detectCores()เพื่อแสดงจำนวนคอร์ที่มีอยู่ใน console - สร้างคลัสเตอร์ด้วย
makeCluster()โดยกำหนดจำนวนคอร์เป็น 2 แล้วบันทึกผลลัพธ์ไว้ในตัวแปรcl - เขียน
apply()ข้างต้นใหม่ให้เป็นparApply()โดยอาร์กิวเมนต์แรกต้องเป็นออบเจกต์ cluster คือcl - หยุดคลัสเตอร์ด้วย
stopCluster()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Determine the number of available cores
___
# Create a cluster via makeCluster
cl <- makeCluster(___)
# Parallelize this code
apply(dd, 2, median)
# Stop the cluster
stopCluster(cl)