c++ - CUDA conditional thread synchronization -
CUDA प्रोग्रामिंग गाइड बताता है कि __ सिंकट्रेड () को सशर्त कोड में अनुमति है, लेकिन केवल यदि सशर्त संपूर्ण धागे ब्लॉक में समान रूप से मूल्यांकन करता है, अन्यथा कोड निष्पादन अनचाही दुष्प्रभावों को लटका या उत्पादन करने की संभावना है। इसलिए यदि मुझे एक ब्लॉक में सशर्त शाखाओं के साथ धागे को सिंक्रनाइज़ करने की आवश्यकता है , जिनमें से कुछ धागे शाखा को नहीं ले सकते हैं या नहीं कर सकते हैं जिसमें __ सिंकट्रेड () कॉल शामिल है, इसका क्या मतलब है कि यह काम नहीं करेगा? मैं सोच रहा हूं कि वहां सभी प्रकार के मामलों में हो सकता है जिसमें आपको ऐसा करने की आवश्यकता हो सकती है; उदाहरण के लिए, यदि आपके पास बाइनरी मुखौटा है और पिक्सल पर एक निश्चित ऑपरेशन को सशर्त रूप से लागू करने की आवश्यकता है कहें, यदि (मुखौटा (एक्स, वाई)! = 0) तब कोड को निष्पादित करें जिसमें __ सिंकट्रेड () शामिल है, अन्यथा कुछ भी नहीं। यह कैसे किया जाएगा? यदि आपको इस मार्ग पर जाने की आवश्यकता है तो आप शरीर को दो चरणों में विभाजित कर सकते हैं : यदि (शर्त) {// सिंक करने से पहले कोड} __सिंक्टट्रेड (); यदि (स्थ...