मैं इंटेल इंट्रिनिक्स का उपयोग कर एक प्रोग्राम लिख रहा हूं। मैं _mm_permute_pd
आंतरिक का उपयोग करना चाहता हूं, जो केवल एवीएक्स के साथ सीपीयू पर उपलब्ध है। AVX के बिना CPUs के लिए मैं _mm_shuffle_pd
का उपयोग कर सकता हूं लेकिन चश्मा के अनुसार यह _mm_permute_pd
से बहुत धीमा है।यदि एवीएक्स एक्सटेंशन सीपीयू द्वारा समर्थित है तो इंटेल इंट्रिनिक्स के साथ कैसे जांचें?
#ifdef __IS_AVX_SUPPORTED__ // is there sth like this defined?
// use _mm_permute_pd
# else
// use _mm_shuffle_pd
#endif
: इतना है कि मैं इस तरह sth लिख सकते हैं इंटेल intrinsics के लिए शीर्षक फ़ाइलें स्थिरांक है कि मुझे AVX समर्थित है या नहीं पहचान करने में सहायता परिभाषित करते हैं? मुझे this tutorial मिला है, जो दिखाता है कि रनटाइम चेक कैसे करें लेकिन मुझे वर्तमान मशीन के लिए एक स्थिर, संकलन-समय की जांच करने की आवश्यकता है।
'_mm_permute_pd' (' vpermilpd') 'shufpd dest, same, same' से तेज़ नहीं है, जब तक कि यह स्मृति स्रोत ऑपरेंड को निर्देश में फोल्ड करने की अनुमति न दे। निर्देश तालिकाओं के लिए http://agner.org/optimize/ देखें। –