Timings parSapply()
डाइस गेम चलाना बिल्कुल आसानी से पैरेललाइज़ होने वाला (embarrassingly parallel) काम है। ऐसे सिमुलेशन आम तौर पर (हर बार नहीं) अच्छा स्पीड-अप देते हैं। पहले की तरह, हम microbenchmark() या system.time() का उपयोग कर सकते हैं। सादगी के लिए, इस अभ्यास में हम system.time() का उपयोग करेंगे।
यह अभ्यास पाठ्यक्रम का हिस्सा है
कार्यकुशल R कोड लिखना
अभ्यास निर्देश
play() फंक्शन आपके वर्कस्पेस में परिभाषित है। मान लेते हैं कि आप एक लाख गेम खेलना चाहते हैं।
no_of_gamesको1e5सेट करें।play()को बार-बार सीरियल में कॉल करने का समय नापने के लिएsystem.time()का उपयोग करें।sapply()को1:no_of_gamesऔरplay()रैपर फंक्शन के साथ कॉल करें।- परिणाम
serialमें असाइन करें। - टाइमिंग के लिए इस कॉल को
system.time()में रैप करें।
- 4-कोर का एक क्लस्टर ऑब्जेक्ट बनाएँ और उसमें
play()फंक्शन एक्सपोर्ट करें। play()को पैरेलल में बार-बार कॉल करने का समय नापने के लिएsystem.time()का उपयोग करें।- आपने
serialबनाने के लिए जो कोड लिखा था, उसे पैरेलल में काम करने लायक दोबारा लिखें।
- आपने
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Set the number of games to play
no_of_games <- ___
# Time serial version
system.time(serial <- sapply(1:___, function(i) play()))
# Set up cluster
cl <- makeCluster(___)
clusterExport(cl, "play")
# Time parallel version
system.time(par <- ___)
# Stop cluster
stopCluster(cl)