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

parSapply() का उपयोग

हमने पहले यह गेम खेला था:

  • Initialize: total = 0.
  • एक पासा फेंकें और उसे total में जोड़ें.
  • अगर total सम (even) है, तो total को शून्य कर दें.
  • अगर total 10 से अधिक हो जाए, तो गेम खत्म हो जाता है.

इस गेम को play() फंक्शन से सिम्युलेट किया जा सकता है:

play <- function() {
  total <- no_of_rolls <- 0
  while(total < 10) {
    total <- total + sample(1:6, 1)

    # If even. Reset to 0
    if(total %% 2 == 0) total <- 0 
    no_of_rolls <- no_of_rolls + 1
  }
  no_of_rolls
}

गेम को 100 बार सिम्युलेट करने के लिए, हम for लूप या sapply() का उपयोग कर सकते हैं:

res <- sapply(1:100, function(i) play())

यह पैरेलल में चलाने के लिए एकदम उपयुक्त है!

किसी क्लस्टर पर फंक्शंस उपलब्ध कराने के लिए, आप clusterExport() फंक्शन का उपयोग करते हैं. यह एक क्लस्टर और फंक्शन का नाम बताने वाली स्ट्रिंग लेता है.

clusterExport(cl, "some_function")

यह अभ्यास पाठ्यक्रम का हिस्सा है

कार्यकुशल R कोड लिखना

पाठ्यक्रम देखें

अभ्यास निर्देश

play() फंक्शन आपके वर्कस्पेस में परिभाषित है.

  • makeCluster() का उपयोग करके एक क्लस्टर बनाएँ; उपयोग किए जाने वाले कोर की संख्या 2 रखें. रिज़ल्ट को cl के रूप में स्टोर करें.
  • play() फंक्शन को क्लस्टर पर एक्सपोर्ट करें.
  • ऊपर दिए गए sapply() फंक्शन को parSapply() के रूप में फिर से लिखें.
  • stopCluster() का उपयोग करके क्लस्टर को बंद करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

library("parallel")
# Create a cluster via makeCluster (2 cores)
cl <- ___

# Export the play() function to the cluster
___

# Re-write sapply as parSapply
res <- sapply(1:100, function(i) play())

# Stop the cluster
___
कोड संपादित करें और चलाएँ