करने के लिए एक विस्तार के रूप moyner का जवाब , पर चिप sqrt
आम तौर पर एक है rsqrt
, यानी एक पारस्परिक वर्गमूल कि computes । इसलिए यदि आपके कोड में आप केवल1/rका उपयोग करने जा रहे हैं(यदि आप आणविक गतिशीलता कर रहे हैं, तो आप हैं), आपसीधेगणना कर सकतेहैं और अपने आप को विभाजन को बचासकते हैं। इसकेबजाय गणनाक्योंकी जातीहै, इसका न्यूटन पुनरावृत्ति में कोई विभाजन नहीं है, केवल जोड़ और गुणा है।a→1/a−−√1/rr = rsqrt(r2)
rsqrt
sqrt
एक साइड-नोट के रूप में, डिवीजनों को भी पुनरावृत्त रूप से गणना की जाती है और rsqrt
हार्डवेयर में लगभग धीमी गति से होती है। यदि आप दक्षता की तलाश कर रहे हैं, तो आप बेहतर विभाजन को हटाने की कोशिश कर रहे हैं।
कुछ और आधुनिक आर्किटेक्चर जैसे आईबीएम के पावर आर्किटेक्चरrsqrt
प्रति-से, प्रदान नहीं करते हैं , लेकिन कुछ बिट्स जैसे सटीक सटीक, जैसे FRSQRTE । जब कोई उपयोगकर्ता कॉल करता है rsqrt
, तो यह एक अनुमान उत्पन्न करता है और फिर नियमित रूप से गुणा और परिवर्धन का उपयोग करके न्यूटन या गोल्डस्मिथिड के एल्गोरिथ्म के पुनरावृत्तियों में से एक या दो (जितनी आवश्यकता हो)। इस दृष्टिकोण का लाभ यह है कि FPU को अवरुद्ध किए बिना अन्य निर्देशों के साथ पुनरावृति कदमों को पाइपलाइज़ और इंटरलेय किया जा सकता है (इस अवधारणा के बहुत अच्छे अवलोकन के लिए, पुराने आर्किटेक्चर पर यद्यपि, रॉल्फ स्ट्रेबेल की पीएचडी थीसिस देखें )।
इंटरैक्शन पोटेंशिअल के लिए, sqrt
संभावित फ़ंक्शन के एक बहुपद इंटरपोलेंट का उपयोग करके ऑपरेशन को पूरी तरह से टाला जा सकता है, लेकिन इस क्षेत्र में मेरे अपने काम (कार्यान्वित mdcore
) से पता चलता है कि, कम से कम x86- प्रकार के आर्किटेक्चर पर, sqrt
निर्देश काफी तेज है।
अद्यतन करें
चूँकि यह उत्तर काफी हद तक ध्यान देने वाला प्रतीत होता है, इसलिए मैं आपके प्रश्न के दूसरे भाग को भी संबोधित करना चाहूंगा, जैसे कि बुनियादी कार्यों को बेहतर बनाने / समाप्त करने का प्रयास करना वास्तव में इसके लायक है sqrt
?
आणविक गतिशीलता सिमुलेशन, या कटऑफ-सीमित इंटरैक्शन के साथ किसी भी कण-आधारित सिमुलेशन के संदर्भ में, पड़ोसी खोजने के लिए बेहतर एल्गोरिदम से प्राप्त करने के लिए बहुत कुछ है। यदि आप सेल सूचियों , या समान कुछ का उपयोग कर रहे हैं , तो पड़ोसियों को खोजने के लिए या एक वर्लेट सूची बनाने के लिए , आप बड़ी संख्या में संयमी जोड़ीदार दूरी की गणना करेंगे। भोले के मामले में, केवल 16% कण जोड़े का निरीक्षण वास्तव में एक दूसरे के कटऑफ की दूरी के भीतर होगा। हालांकि इस तरह के जोड़े के लिए कोई बातचीत की गणना नहीं की जाती है, कण डेटा तक पहुंच और संयोजी युग्मय दूरी की गणना बड़ी लागत वहन करती है।
इस क्षेत्र में मेरा अपना काम ( यहां , यहां , और यहां ), साथ ही दूसरों का (जैसे यहां ), दिखाते हैं कि कैसे इन सहज गणनाओं से बचा जा सकता है। ये पड़ोसी-खोजने वाले एल्गोरिदम यहां तक कि यहां बताए अनुसार वेरलेट सूचियों का भी प्रदर्शन करते हैं ।
मैं जिस बात पर जोर देना चाहता हूं वह यह है कि यद्यपि अंतर्निहित हार्डवेयर आर्किटेक्चर को बेहतर जानने / शोषण करने से कुछ सुधार हो सकते हैं, उच्च-स्तरीय एल्गोरिदम को फिर से सोचने में संभावित रूप से बड़े लाभ भी हैं।
rsqrtps
और एवीएक्सvrsqrtps
भी अनुमान हैं, उन्हें पहले 11 से 12 बिट्स सही मिलते हैं और यदि आपको अधिक सटीकता चाहिए तो आपको न्यूटन के पुनरावृत्ति या दो के साथ परिशोधित करना चाहिए। ये सैंडी ब्रिज पर 5/1 और 7/1 (लेटेंसी / इनवर्स थ्रूपुट) निर्देश हैं (इंटेल डॉक्स या एग्नर फॉग के इंस्ट्रक्शन टेबल देखें जो गुणा करने के लिए तुलनीय है। इसके विपरीत, पूर्ण सटीकता(v)sqrtps
(या दोहरी सटीकता(v)sqrtpd
) 10-43 /। 10-43 (विवरण के लिए निर्देश तालिका देखें)।