वितरित बनाम समानांतर कंप्यूटिंग


60

मैं अक्सर लोगों को समानांतर कंप्यूटिंग और वितरित कंप्यूटिंग के बारे में बात करते हुए सुनता हूं , लेकिन मैं इस धारणा के तहत हूं कि 2 के बीच कोई स्पष्ट सीमा नहीं है, और लोग बहुत आसानी से भ्रमित करते हैं, जबकि मेरा मानना ​​है कि यह बहुत अलग है:

  • समानांतर कंप्यूटिंग मल्टी-थ्रेडिंग के लिए अधिक कसकर युग्मित है, या एकल सीपीयू का पूर्ण उपयोग कैसे करें।
  • वितरित कंप्यूटिंग में विभिन्न मशीनों पर उप-कार्यों को निष्पादित करने और फिर परिणामों को मर्ज करने, विभाजन और जीत की धारणा को संदर्भित किया गया है।

हालाँकि, जब से हमने बिग डेटा युग में कदम रखा है , ऐसा लगता है कि यह अंतर वास्तव में पिघल रहा है, और अधिकांश सिस्टम आज समानांतर और वितरित कंप्यूटिंग के संयोजन का उपयोग करते हैं।

एक उदाहरण जो मैं अपने दिन-प्रतिदिन के काम में उपयोग करता हूं, वह है मैप / कम पैराडाइम के साथ हाडोप, विभिन्न मशीनों पर कार्यों को निष्पादित करने वाले श्रमिकों के साथ एक स्पष्ट रूप से वितरित प्रणाली, लेकिन कुछ समानांतर कंप्यूटिंग के साथ प्रत्येक मशीन का पूरा लाभ भी ले रहा है।

मैं यह समझने के लिए कुछ सलाह लेना चाहता हूं कि आज की दुनिया में भेद कैसे बनाया जाए, और अगर हम अभी भी समानांतर कंप्यूटिंग के बारे में बात कर सकते हैं या अब कोई स्पष्ट अंतर नहीं है। मेरे लिए ऐसा लगता है कि वितरित कंप्यूटिंग पिछले वर्षों में बहुत बढ़ गई है, जबकि समानांतर कंप्यूटिंग स्थिर हो रही है, जो शायद यह समझा सकती है कि मैं समानांतर की तुलना में कम्प्यूटिंग वितरण के बारे में अधिक बात क्यों सुनता हूं।


5
समानांतर कंप्यूटिंग का मतलब जरूरी नहीं है कि सिंगल सीपीयू: ऐसे सिस्टम हों जिनमें कई भौतिक सीपीयू हों।
svick

2
इसके अलावा, वितरित कंप्यूटिंग को प्रति विभाजित और जीतना प्रतिबंधित नहीं है। मुझे कंसीडर और पैरेलिज्म को भ्रमित करने वाले लोगों से ज्यादा परेशानी है।
राफेल

1
यदि आप स्पष्ट रूप से वितरित कंप्यूटिंग को संबोधित कर रहे हैं, तो आपको बहुत गहरी विफलता के मामलों को संभालने की आवश्यकता होगी। बहुत सी चीजें केवल भौगोलिक कारणों से वितरित की जाती हैं। कुछ वितरित सिस्टम समानांतर में बहुत कम चल रहे हैं क्योंकि नेटवर्क में एक केंद्रीय नोड एक अड़चन है।
रोब

संबंधित: cs.stackexchange.com/q/51099/755
DW

जवाबों:


56

यह आंशिक रूप से शब्दावली का मामला है, और इस तरह, केवल यह आवश्यक है कि आप और आप जिस व्यक्ति से बात कर रहे हैं, उसे पहले ही स्पष्ट कर दें। हालाँकि, अलग-अलग विषय हैं जो अधिक दृढ़ता से समानतावाद , संगामिति या वितरित प्रणालियों से जुड़े हैं

समानांतरवाद आमतौर पर एक विशेष गणना को जितनी जल्दी हो सके पूरा करने के साथ संबंधित है, कई प्रोसेसर का शोषण करता है। कई कंप्यूटरों पर कम्प्यूटेशन को वितरित करने के लिए प्रोसेसर का पैमाना एक प्रोसेसर के अंदर कई अंकगणितीय इकाइयों से लेकर मेमोरी को साझा करने वाले कई प्रोसेसर तक हो सकता है। गणना के मॉडल के पक्ष में, समानांतरवाद आमतौर पर गणना के कई युगपत सूत्र का आंतरिक रूप से उपयोग करने के बारे में होता है, ताकि अंतिम परिणाम की गणना की जा सके। समानांतरवाद का उपयोग कभी - कभी वास्तविक समय प्रतिक्रियाशील प्रणालियों के लिए भी किया जाता है , जिसमें कई प्रोसेसर होते हैं जो एक एकल मास्टर घड़ी साझा करते हैं; इस तरह के सिस्टम पूरी तरह से निर्धारक होते हैं

कॉनक्यूरेन्सी , अभिकलन के कई धागों के साथ संगणना का अध्ययन है। Concurrency हार्डवेयर के आर्किटेक्चर के बजाय सॉफ्टवेयर के आर्किटेक्चर से आती है। हार्डवेयर समानता का फायदा उठाने के लिए सॉफ्टवेयर को संगामिति का उपयोग करने के लिए लिखा जा सकता है, लेकिन अक्सर विभिन्न असिंक्रोनस घटनाओं (उदाहरण के लिए एक कम्प्यूटेशन थ्रेड जो उपयोगकर्ता इंटरफ़ेस थ्रेड के स्वतंत्र रूप से काम करता है, या एक प्रोग्राम जो प्रतिक्रिया करता है, के लिए प्रतिक्रिया करने के लिए सॉफ़्टवेयर के व्यवहार में निहित है) हार्डवेयर एक बाधा हैंडलर धागे पर स्विच करके बाधित होता है)।

वितरित कंप्यूटिंग अध्ययन संचार लिंक द्वारा जुड़े अलग-अलग प्रोसेसर का अध्ययन करता है। जबकि समानांतर प्रसंस्करण मॉडल अक्सर (लेकिन हमेशा नहीं) साझा स्मृति मान लेते हैं, वितरित सिस्टम संदेश पासिंग पर मौलिक रूप से भरोसा करते हैं। वितरित सिस्टम स्वाभाविक रूप से समवर्ती हैं। संगोष्ठी की तरह, वितरण अक्सर लक्ष्य का हिस्सा होता है, केवल समाधान का हिस्सा नहीं होता है: यदि संसाधन भौगोलिक रूप से अलग-अलग स्थानों पर हैं, तो सिस्टम स्वाभाविक रूप से वितरित किया जाता है। ऐसी प्रणालियाँ जिनमें आंशिक विफलताएँ (प्रोसेसर नोड्स या संचार लिंक की) इस डोमेन के अंतर्गत संभव हैं।


2
अच्छा उत्तर। किसी को तनाव देना चाहिए कि वितरित कंप्यूटिंग समानांतर कंप्यूटिंग का एक सबसेट है।
राफेल

6
@ राफेल: मुझे नहीं लगता कि यह दो क्षेत्रों के फोकस का सही प्रतिनिधित्व करता है। दरअसल, उन्हें अक्सर पूरी तरह से अलग क्षेत्र माना जाता है, क्योंकि वे पूरी तरह से अलग मुद्दों से निपटते हैं। MPI का उपयोग करते हुए एक समानांतर कंप्यूटर की प्रोग्रामिंग करते समय, कोई भी वास्तव में आंशिक विफलताओं से चिंतित नहीं होता है, क्योंकि इन कंप्यूटरों में ऐसा होने की संभावना कम होती है। दूसरी ओर, वितरित कंप्यूटिंग वितरण के मुद्दों के साथ अधिक चिंतित है, जैसे कि आंशिक विफलताएं, और उपलब्ध मशीनों से हर सीपीयू चक्र को निचोड़ने के बारे में बहुत कम चिंतित हैं।
डेव क्लार्क

4
@ राफेल इसके विपरीत, वितरित कंप्यूटिंग समानांतर कंप्यूटिंग से बहुत स्वतंत्र है। वितरित प्रणालियों के अध्ययन में, समानांतर कंप्यूटिंग अक्सर उबाऊ मामला है (कोई दिलचस्प स्थानीय संसाधन, कोई विफलता नहीं)।
गाइल्स

मैं शब्दों का प्रयोग वस्तुतः कर रहा था; बहुत बुरा है अगर शर्तों को विनियोजित किया गया है और इस प्रकार विचलन किया गया है।
राफेल

आपके उत्तर के लिए धन्यवाद @Gilles, ऐसा लगता है जैसे मैं वितरित कंप्यूटिंग के प्रति थोड़ा सा पक्षपाती था, किसी ऐसे व्यक्ति को देखकर खुशी हुई जो उचित शर्तों द्वारा किसी चीज़ को संदर्भित करता है!
बजे चार्ल्स मेंग्यू

17

जैसा कि @ राफेल ने कहा, वितरित कम्प्यूटिंग समानांतर कम्प्यूटिंग का सबसेट है; बदले में, समानांतर कम्प्यूटिंग समवर्ती कम्प्यूटिंग का एक सबसेट है।

कॉनएरेबिलिटी शेयरिंग को संदर्भित करता हैएक ही समय सीमा में संसाधनों का। उदाहरण के लिए, कई प्रक्रियाएं एक ही सीपीयू (या सीपीयू कोर) या साझा मेमोरी या एक आई / ओ डिवाइस साझा करती हैं। ऑपरेटिंग सिस्टम साझा संसाधनों का प्रबंधन करते हैं। मल्टीप्रोसेसर मशीनें और वितरित सिस्टम आर्किटेक्चर हैं जिसमें कंसीलर कंट्रोल महत्वपूर्ण भूमिका निभाता है। Concurrency हार्डवेयर और सॉफ्टवेयर दोनों स्तरों पर होती है। एक ही समय में कई डिवाइस संचालित होते हैं, प्रोसेसर में आंतरिक समानता होती है और एक साथ कई निर्देशों पर काम होता है, सिस्टम में कई प्रोसेसर होते हैं, और सिस्टम नेटवर्क संचार के माध्यम से बातचीत करते हैं। कॉनएरेबिलिटी सिग्नल हैंडलिंग, आई / ओ के ओवरलैप और संचार में, और प्रक्रियाओं के बीच संसाधनों के बंटवारे में या एक ही प्रक्रिया में थ्रेड्स के बीच अनुप्रयोगों के स्तर पर होती है।

एक ही सिस्टम पर निष्पादित होने वाली दो प्रक्रियाएं (या थ्रेड्स) ताकि उनके निष्पादन को समय में समाहित किया जाए वे समवर्ती हैं: प्रक्रियाएं (थ्रेड्स) सीपीयू संसाधन साझा कर रही हैं। मुझे निम्नलिखित परिभाषा पसंद है: एक ही सिस्टम पर निष्पादित होने वाली दो प्रक्रियाएं (थ्रेड्स) समवर्ती होती हैं यदि और केवल तभी दूसरी प्रक्रिया (थ्रेड) शुरू होती है जब पहली प्रक्रिया (थ्रेड) ने अभी तक इसके निष्पादन को समाप्त नहीं किया है।

विभिन्न सीपीयू (या एक ही सीपीयू के कोर ) पर प्रक्रियाएं (या थ्रेड्स) निष्पादित होने पर कंज्यूरेबिलिटी समानता बन जाती है । इस मामले में समानता "आभासी" नहीं बल्कि "वास्तविक" है।

जब वे सीपीयू एक ही मशीन से संबंधित होते हैं, तो हम गणना को "समानांतर" के रूप में संदर्भित करते हैं; जब सीपीयू विभिन्न मशीनों से संबंधित होते हैं , तो भौगोलिक रूप से फैल सकते हैं, हम गणना को "वितरित" के रूप में संदर्भित करते हैं।

इसलिए, वितरित कम्प्यूटिंग समानांतर कंप्यूटिंग का एक सबसेट है, जो समवर्ती कम्प्यूटिंग का एक सबसेट है।

बेशक, यह सच है कि, सामान्य तौर पर, समानांतर और वितरित कंप्यूटिंग को अलग-अलग माना जाता है। समानांतर कंप्यूटिंग कसकर-युग्मित अनुप्रयोगों से संबंधित है, और इसका उपयोग निम्नलिखित लक्ष्यों में से एक को प्राप्त करने के लिए किया जाता है:

  1. गणना-गहन समस्याओं को तेजी से हल करें;
  2. उसी समय में बड़ी समस्याओं को हल करें;
  3. एक ही आकार की समस्याओं को एक ही समय में उच्च सटीकता के साथ हल करें।

अतीत में, पहला लक्ष्य समानांतर कंप्यूटिंग का मुख्य कारण था: समस्या के समाधान में तेजी लाना। अभी, और जब संभव हो, वैज्ञानिक मुख्य रूप से दूसरे लक्ष्य को प्राप्त करने के लिए समानांतर कंप्यूटिंग का उपयोग करते हैं (उदाहरण के लिए, वे उसी समय के समान राशि खर्च करने को तैयार हैं जो उन्होंने पिछले दिनों हल करने में की समस्या के समानांतर हल किया था। आकार के ) या तीसरे एक (यानी, वे समय की एक ही राशि खर्च करने को तैयार हैं वे के आकार समानांतर एक समस्या में अतीत को हल करने में खर्च अब के आकार एक समस्या को हल करनेTx5xTxxलेकिन अधिक सटीकता के साथ अधिक जटिल मॉडल, अधिक समीकरणों, चर और बाधाओं का उपयोग करके)। समानांतर कंप्यूटिंग साझा-मेमोरी, संदेश-पासिंग या दोनों का उपयोग कर सकते हैं (जैसे, ओपन-एमपी का उपयोग करके साझा-मेमोरी-इंट्रा-नोड, एमपीआई का उपयोग करके संदेश-गुजर इंटर-नोड); यह GPU त्वरक का उपयोग कर सकता है। चूंकि एप्लिकेशन एक समानांतर सुपर कंप्यूटर पर चलता है, इसलिए हम आम तौर पर विफलताओं, नेटवर्क विभाजन आदि जैसे मुद्दों पर ध्यान नहीं देते हैं, क्योंकि इन घटनाओं की संभावना व्यावहारिक उद्देश्यों के लिए शून्य के करीब है। हालाँकि, जलवायु परिवर्तन सिमुलेशन जैसे बड़े समानांतर अनुप्रयोग, जो कई महीनों तक चल सकते हैं, आमतौर पर विफलताओं से संबंधित होते हैं, और समस्या उत्पन्न होने पर फिर से सिमुलेशन शुरू करने से बचने के लिए चेकपॉइंटिंग / पुनरारंभ तंत्र का उपयोग करते हैं।

वितरित कंप्यूटिंग शिथिल-युग्मित अनुप्रयोगों से संबंधित है, जिसमें लक्ष्य ( वितरित सुपरकंप्यूटिंग के लिए ) समस्याओं को हल करना है अन्यथा बहुत बड़े या जिनके निष्पादन को विभिन्न घटकों पर विभाजित किया जा सकता है जो विभिन्न आर्किटेक्चर पर निष्पादन से लाभान्वित हो सकते हैं। क्लाइंट-सर्वर, पीयर-टू-पीयर आदि सहित कई मॉडल हैं। वितरित कंप्यूटिंग में उत्पन्न होने वाले मुद्दे, जैसे कि सुरक्षा, विफलताओं, नेटवर्क विभाजन आदि को डिजाइन समय पर ध्यान में रखा जाना चाहिए, क्योंकि इस संदर्भ में विफलता नियम और हैं अपवाद नहीं।

अंत में, ग्रिड और क्लाउड कंप्यूटिंग दोनों वितरित कंप्यूटिंग के सबसेट हैं। ग्रिड कंप्यूटिंग प्रतिमान बड़े पैमाने पर संसाधन साझाकरण और नवीन उच्च प्रदर्शन अनुप्रयोगों पर ध्यान केंद्रित करने के कारण पारंपरिक वितरित कंप्यूटिंग से अलग एक नए क्षेत्र के रूप में उभरा। साझा किए जा रहे संसाधन, आमतौर पर कई, विभिन्न प्रशासनिक डोमेन (तथाकथित वर्चुअल ऑर्गेनाइजेशन ) से संबंधित होते हैं। ग्रिड कम्प्यूटिंग, जबकि पिछले दशक में वैज्ञानिकों द्वारा भारी उपयोग किया जा रहा है, पारंपरिक रूप से आम उपयोगकर्ताओं के लिए मुश्किल है। वर्चुअल मशीनों के उपयोग के माध्यम से क्लाउड कंप्यूटिंग अंतर को पाटने की कोशिश करती है, जिससे आम उपयोगकर्ता आसानी से कई मशीनों का उपयोग कर सकते हैं, जो एक ही डेटा सेंटर में सह-स्थित होते हैं और भौगोलिक रूप से वितरित नहीं होते हैं।कि उपयोगकर्ताओं द्वारा अपने अनुप्रयोगों को चलाने के लिए इकट्ठा किया जा सकता है। हार्डवेयर के कारण, विशेष रूप से एक उच्च-प्रदर्शन नेटवर्क इंटरकनेक्ट की सामान्य कमी (जैसे कि इन्फिनिबैंड आदि), समानांतर MPI एप्लिकेशन चलाने के लिए बादलों को लक्षित नहीं किया जाता है। बादलों पर चलने वाले वितरित अनुप्रयोगों को आमतौर पर मानचित्र / प्रतिमान को कम करने के लिए कार्यान्वित किया जाता है। वैसे, बहुत से लोग मैप के बारे में सोचते हैं / समानांतर डेटा प्रवाह मॉडल के रूप में कम करते हैं।


2
मुझे लगता है कि यह उत्तर थोड़ा भ्रामक है; यह वितरित उच्च प्रदर्शन कंप्यूटिंग (जो वास्तव में समानांतर उच्च प्रदर्शन कंप्यूटिंग से निकटता से संबंधित है) पर केंद्रित है, जबकि वितरित कंप्यूटिंग का पूरा क्षेत्र बहुत व्यापक है।
जुका सूमेला

मैं असहमत हूं: जवाब में उच्च-प्रदर्शन कंप्यूटिंग भी शामिल है , जो कि, आमतौर पर वितरित कंप्यूटिंग से बाहर है। वास्तव में, मैंने क्लाइंट-सर्वर और पीयर-टू-पीयर मॉडल, सुरक्षा, विफलताओं और नेटवर्क विभाजन समस्याओं पर चर्चा की जो वितरित कंप्यूटिंग के दायरे हैं।
मासिमो काफ़ारो

+1। अच्छा जवाब! मुझे आश्चर्य है कि वितरित कंप्यूटिंग का उपयोग समानांतर कंप्यूटिंग के अलावा अन्य उद्देश्यों के लिए किया जाता है? दूसरे शब्दों में, कंप्यूटिंग को समानांतर कंप्यूटिंग के सबसेट के रूप में वितरित किया जाता है, यानी वितरित कंप्यूटिंग समानांतर कंप्यूटिंग से संबंधित है? Btw, यहाँ मेरा सवाल है cs.stackexchange.com/questions/20064
टिम

1
@Tim, वितरित कंप्यूटिंग का उपयोग प्रति se, स्वतंत्र रूप से समानांतर कंप्यूटिंग के लिए भी किया जाता है। उदाहरण के लिए, नेता चुनाव, सर्वसम्मति आदि जैसे शास्त्रीय वितरित एल्गोरिदम के बारे में सोचें
मास्सिमो कैफ़रो

7

मुझे यकीन नहीं है कि मैं सवाल समझ रहा हूँ। समानांतर और वितरित प्रसंस्करण के बीच का अंतर अभी भी है। तथ्य यह है कि आप एक ही संगणना में दोनों का लाभ उठा सकते हैं, यह नहीं बदलता है कि अवधारणाओं का क्या मतलब है।

और मुझे नहीं पता कि आप किस समाचार का अनुसरण कर रहे हैं, लेकिन मुझे यकीन है कि समानांतर प्रसंस्करण स्थिर नहीं है, खासकर जब से मुझे लगता है कि यह बहुत अधिक उपयोगी है।

यदि आपको डेटा की टेराबाइट्स को संसाधित करने की आवश्यकता है, तो वितरित कंप्यूटिंग (संभवतः समानांतर कंप्यूटिंग के साथ संयुक्त) जाने का रास्ता है। लेकिन अगर आपको डेस्कटॉप या स्मार्टफोन पर कुछ गणना करने की आवश्यकता है, तो अकेले समानांतर कंप्यूटिंग आपको शायद सबसे अच्छा परिणाम देगा, यह देखते हुए कि इंटरनेट कनेक्शन हमेशा उपलब्ध नहीं हो सकता है और जब यह होता है, तो यह धीमा हो सकता है।


-1, क्योंकि यह उत्तर वास्तव में प्रश्न का उत्तर नहीं देता है (यानी, शर्तों को समझाएं)।
जुका सूमेला

@JukkaSuomela, यह सवाल शर्तों को समझाने के बारे में नहीं है, लेकिन उनके बीच का अंतर है।
svick

6

यहाँ एक हालिया पेपर है जो पढ़ने लायक है:

मिशेल Raynal: "समानांतर कम्प्यूटिंग बनाम वितरित कम्प्यूटिंग: एक महान भ्रम?" , प्रोक। यूरो-पार 2015 , डोई: 10.1007 / 978-3-319-27308-2_4

सार:

यह लघु स्थिति पेपर इस तथ्य पर चर्चा करता है कि, शिक्षण के दृष्टिकोण से, समानता और वितरित कंप्यूटिंग अक्सर भ्रमित होते हैं, जबकि, जब वे अपनी गहरी प्रकृति को देखते हैं, तो वे अलग मौलिक मुद्दों को संबोधित करते हैं। इसलिए, उनमें से प्रत्येक के लिए उपयुक्त पाठ्यक्रम तैयार किया जाना चाहिए। "सब कुछ सब कुछ है (और पारस्परिक रूप से)" रवैया छात्रों को महत्वपूर्ण अवधारणाओं को सिखाने के लिए एक प्रासंगिक दृष्टिकोण नहीं लगता है जो एक तरफ समानता की विशेषता रखते हैं, और दूसरी तरफ कंप्यूटिंग वितरित करते हैं।


4

पुस्तक के परिचय अनुभाग में [1], वितरित कंप्यूटिंग और समानांतर कंप्यूटिंग के बीच तुलना पर लेखक एक और परिप्रेक्ष्य (अन्य उत्तरों में लोगों से अलग) प्रदान करते हैं।

व्यापक रूप से, एक बड़े कार्य को करने के लिए सभी प्रोसेसरों को नियोजित करना समानांतर प्रसंस्करण का लक्ष्य है। इसके विपरीत, एक वितरित प्रणाली में प्रत्येक प्रोसेसर का आमतौर पर अपना अर्ध-स्वतंत्र एजेंडा होता है, लेकिन विभिन्न कारणों से, संसाधनों की उपलब्धता, उपलब्धता और दोष सहिष्णुता सहित, प्रोसेसर को अपने कार्यों का समन्वय करने की आवश्यकता होती है।

इस दृष्टिकोण से, मानचित्र / प्रतिमान मुख्य रूप से समानांतर कंप्यूटिंग संदर्भ में आता है। हालांकि, यदि हम चाहते हैं कि शामिल नोड्स एक आम नेता पर आम सहमति तक पहुंचें, उदाहरण के लिए, पैक्सोस (विकी) एल्गोरिथ्म, तो हम वितरित कंप्यूटिंग में एक विशिष्ट समस्या पर विचार कर रहे हैं।

[१] वितरित कम्प्यूटिंग। बुनियादी बातों, सिमुलेशन, और उन्नत विषय। हैगिट अटिया और जेनिफर वेल्च। 2004।


0

नहीं है इस सवाल का जवाब है जो यहाँ अधिक उपयुक्त है। मूल रूप से, parallelसंदर्भित करता है memory-shared multiprocessorजबकि distributedइसके लिए संदर्भित करता है private-memory multicomputers। यही है, पहला एक एकल मल्टीकोर या सुपरसेलकर मशीन है जबकि दूसरा कंप्यूटर का भौगोलिक रूप से वितरित नेटवर्क है। उत्तरार्द्ध का मतलब कम युग्मन है और इस प्रकार, कम प्रदर्शन की कीमत पर अधिक उपलब्धता और दोष सहिष्णुता। प्रदर्शन को भुगतना पड़ता है क्योंकि आपको प्रत्येक राउंड-ट्रिप में डेटा (डी-) क्रमबद्धता और लंबी दूरी पर इसकी डिलीवरी की आवश्यकता होती है, जबकि आप समानांतर प्रोसेसर में किसी अन्य सीपीयू को पास करने के लिए बस इन-मेमोरी ऑब्जेक्ट को संदर्भित कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.