शुरू करेंमुफ़्त में शुरू करें

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)
कोड संपादित करें और चलाएँ