python - Parallelizing a Numpy vector operation -
का उपयोग करें, उदाहरण के लिए, निम्नलिखित कोड सरणी के प्रत्येक मान के लिए मूल्य वापस करेगा लेकिन मेरी मशीन में 32 कोर हैं, इसलिए मैं उनका उपयोग करना चाहता हूं। (ओवरहेड, क्या यह सबसे अच्छा है (पढ़ें: सबसे तेज या सबसे तेज) विधि: या ऐसा करने का एक बेहतर तरीका है? वहां एक बेहतर तरीका है उनके मुख्य पृष्ठ से थोड़ा सा शब्द बदल गया: यह एक बहु-थ्रेडेड वीएम लिखित है सी में जो अभिव्यक्तियों का विश्लेषण करता है, उन्हें अधिक कुशलता से दोबारा लिखता है, और उन्हें मक्खी पर कोड में जो कि दोनों स्मृति और सीपीयू बाध्य परिचालनों के लिए इष्टतम समानांतर प्रदर्शन के निकट बनाता है। उदाहरण के लिए, मेरी 4 कोर मशीन में, मूल्यांकन एक साइन केवल numpy की तुलना में 4 गुना अधिक से थोड़ा कम है। दस्तावेज़ीकरण, समर्थित कार्यों सहित आपको अधिक जांच के लिए या हमें अधिक जानकारी देने के लिए यह देखने के लिए होगा कि क्या आपका अधिक जटिल फ़ंक्शन का उपयोग numexpr। द्वारा किया जा सकता है। numpy.sin ()
a :
आयात करें numpy a = numpy.arange (1000000) परिणाम = numpy.sin ( ए)
numpy.sin () जैसे कुछ के लिए सार्थक नहीं हो सकता है, लेकिन जो फ़ंक्शन मैं वास्तव में उपयोग करना चाहता हूं वह काफी अधिक जटिल है, और मैं बहुत अधिक डेटा के साथ काम करूँगा।)
मल्टीप्रोसेसिंग आयात से पूल अगर __name__ == '__main__': पूल = पूल () परिणाम = पूल .map (numpy.sin, a)
में [1]: np में np आयात करें [2]: आयात numexpr के रूप में ne में [3]: a = np.arange (1000000) में [4]: टाइमिट ne.evaluate ('sin (a)') 100 loops, सबसे अच्छा 3: 15.6 एमएस प्रति पाश में [5]: timeit np .सिन (ए) 10 छोरों, सबसे अच्छा 3: 54 एमएस प्रति लूप
Comments
Post a Comment