क्या हमें parallelize करना चाहिए?

R में पैरेलल प्रोग्रामिंग

Nabeel Imam

Data Scientist

आइए एक इमारत बनाते हैं

   

पिछली मंजिल पर अगली बनाना: sequential

 

तैयार ढांचे में खिड़कियाँ लगाना: parallel

एक इमारत का निर्माण चल रहा है. मंजिलें क्रम में ही बन सकती हैं, जबकि खिड़कियाँ parallel लग सकती हैं.

R में पैरेलल प्रोग्रामिंग

Sequential–parallel scale

सामान्य computational tasks को एक scale पर दिखाया गया है, एक छोर पर sequential और दूसरे पर parallel. नए वैरिएबल बनाना parallel की ओर है, जबकि cumulative sum sequential की ओर.

R में पैरेलल प्रोग्रामिंग

एक क्लासिक numerical ऑपरेशन

दस लाख संख्याओं के square roots निकालना

numbers <- 1:1000000


start <- Sys.time() sq_roots <- lapply(numbers, sqrt) end <- Sys.time()
end - start
Time difference of 1.044573 secs
R में पैरेलल प्रोग्रामिंग

Square root को कैसे parallelize करें?

square roots को parallel में निकालने का एक flow chart. 1 से 10,00,000 तक पूर्णांक पाँच समूहों में बाँटे गए हैं, हर एक 200,000 लंबाई का.

R में पैरेलल प्रोग्रामिंग

Square root को कैसे parallelize करें?

Split किया डेटा एक cluster को भेजा जाता है, जो एक से अधिक cores से बना है. हर समूह एक core को square root के लिए भेजा जाता है. यदि सभी cores व्यस्त हों, तो नए समूह core खाली होने तक प्रतीक्षा करेंगे.

R में पैरेलल प्रोग्रामिंग

Square root को कैसे parallelize करें?

हर core से square roots इकट्ठे कर जोड़े जाते हैं ताकि कुल दस लाख परिणाम मिलें.

R में पैरेलल प्रोग्रामिंग

एक parallelized numerical ऑपरेशन

दस लाख संख्याओं के square roots parallel में

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 से 10,00,000 तक संख्याओं के square roots को parallel में निकालने का flow chart.

R में पैरेलल प्रोग्रामिंग

उतनी तेज नहीं जितनी उम्मीद थी

Parallel execution में कई extra tasks होते हैं. पहला है डेटा को split करना.

R में पैरेलल प्रोग्रामिंग

उतनी तेज नहीं जितनी उम्मीद थी

Split के बाद, डेटा के हर subgroup को cluster के cores पर copy करना पड़ता है.

R में पैरेलल प्रोग्रामिंग

उतनी तेज नहीं जितनी उम्मीद थी

कम्प्यूटेशन के बाद, हर core का आउटपुट इकट्ठा कर अंतिम परिणाम बनाया जाता है.

R में पैरेलल प्रोग्रामिंग

उतनी तेज नहीं जितनी उम्मीद थी

पूरी प्रक्रिया के संचालन में कुछ computational resources खर्च होते हैं.

R में पैरेलल प्रोग्रामिंग

तो, क्या हमें parallelize करना चाहिए?

किसी पर्याप्त जटिल task के लिए विचार करें:

Pros

  • Sequential से तेज
  • लंबे समय में अधिक cost-efficient

 

Cons

  • खास programming skills चाहिए (पर आप तैयार हैं!)
  • High memory usage
R में पैरेलल प्रोग्रामिंग

अभ्यास करते हैं!

R में पैरेलल प्रोग्रामिंग

Preparing Video For Download...