सबसे पहले, मैं अंतर्निहित कार्यों का उपयोग करने की अनुशंसा नहीं करता - वे पोर्टेबल नहीं हैं (उसी आर्क के कंपाइलर्स में)।
intrinsics, जीसीसी does a wonderful job एसएसई इंट्रिनिक्स को और भी अनुकूलित कोड में अनुकूलित करने का उपयोग करें। आप असेंबली में हमेशा एक झलक देख सकते हैं और एसएसई का पूर्ण क्षमता में इसका उपयोग कैसे करें।
intrinsics आसान है - बस सामान्य कार्य कॉल की तरह:
#include <xmmintrin.h>
__m128 vector1 = _mm_set1_ps(4, 3, 2, 1); // Little endian, stored in 'reverse'
__m128 vector2 = _mm_set1_ps(7, 8, 9, 0);
// Addition
__m128 result = _mm_add_ps(vector1, vector2); // result = vector1 + vector 2
// A more advanced function, called shuffle
vector1 = _mm_shuf_ps(vector1, vector1, _MM_SHUFFLE(0,1,2,3));
// vector1 is now (1, 2, 3, 4) (above shuffle reversed it)
बेशक वहाँ जिस तरह से अधिक विकल्प हैं, SSE अपेक्षाकृत आसान जानने के लिए वास्तव में शक्तिशाली है और मेरी राय में।
क्या आप int32 तत्वों के दो सरणी के डॉट उत्पाद को गर्म करने के लिए गर्म जानते हैं? – psihodelia
इसके लिए एक प्रश्न बनाएं, और मैं मदद करने के लिए सुनिश्चित करूँगा :) – LiraNuna