जब मैं एक कर्नेल से निकाल प्रदर्शन के अंतिम बिट निचोड़ करने के लिए नीचे हूँ, मैं आम तौर पर लगता है कि बिटवाइज़ ऑपरेटर्स (&
और |
) के साथ तार्किक ऑपरेटरों (&&
और ||
) की जगह गिरी बनाता है एक छोटा सा तेजी । यह CUDA विजुअल प्रोफाइलर में कर्नेल समय सारणी को देखकर देखा गया था।CUDA: लॉजिकल ऑपरेटरों की तुलना में कभी-कभी बिटवाई ऑपरेटर क्यों तेज होते हैं?
तो, सीयूडीए में तार्किक ऑपरेटरों की तुलना में बिटवाई ऑपरेटरों तेज क्यों हैं? मुझे यह स्वीकार करना होगा कि वे हमेशा तेज नहीं हैं, लेकिन कई बार वे हैं। मुझे आश्चर्य है कि जादू इस गति को क्या दे सकता है।
अस्वीकरण: मुझे पता है कि लॉजिकल ऑपरेटर शॉर्ट-सर्किट और बिटवाई ऑपरेटर नहीं करते हैं। मुझे अच्छी तरह पता है कि इन ऑपरेटरों का दुरुपयोग कैसे किया जा सकता है जिसके परिणामस्वरूप गलत कोड होता है। मैं इस प्रतिस्थापन का केवल तभी देखभाल करता हूं जब परिणामस्वरूप तर्क समान रहता है, वहां एक गति है और इस प्रकार गतिशीलता ने मुझे मामलों को प्राप्त किया :-)
एक महान अनुकूलन युक्ति के लिए धन्यवाद! –
रोजर: मदद करने में खुशी हुई! मुझे आश्चर्य हुआ जब मैंने यह भी खोजा :-) –