python - Parallelizing a Numpy vector operation -


का उपयोग करें, उदाहरण के लिए, numpy.sin ()

निम्नलिखित कोड सरणी के प्रत्येक मान के लिए मूल्य वापस करेगा a :

  आयात करें numpy a = numpy.arange (1000000) परिणाम = numpy.sin ( ए)   

लेकिन मेरी मशीन में 32 कोर हैं, इसलिए मैं उनका उपयोग करना चाहता हूं। (ओवरहेड, numpy.sin () जैसे कुछ के लिए सार्थक नहीं हो सकता है, लेकिन जो फ़ंक्शन मैं वास्तव में उपयोग करना चाहता हूं वह काफी अधिक जटिल है, और मैं बहुत अधिक डेटा के साथ काम करूँगा।)

क्या यह सबसे अच्छा है (पढ़ें: सबसे तेज या सबसे तेज) विधि:

  मल्टीप्रोसेसिंग आयात से पूल अगर __name__ == '__main__': पूल = पूल () परिणाम = पूल .map (numpy.sin, a)   

या ऐसा करने का एक बेहतर तरीका है?

वहां एक बेहतर तरीका है

उनके मुख्य पृष्ठ से थोड़ा सा शब्द बदल गया:

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

उदाहरण के लिए, मेरी 4 कोर मशीन में, मूल्यांकन एक साइन केवल numpy की तुलना में 4 गुना अधिक से थोड़ा कम है।

  में [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 एमएस प्रति लूप   

दस्तावेज़ीकरण, समर्थित कार्यों सहित आपको अधिक जांच के लिए या हमें अधिक जानकारी देने के लिए यह देखने के लिए होगा कि क्या आपका अधिक जटिल फ़ंक्शन का उपयोग numexpr। द्वारा किया जा सकता है।

Comments

Popular posts from this blog

java - NullPointerException for a 2d Array -

python - Django @staticmethod sum of two fields -

java - Getting values in Multimaps - Guava -