का उपयोग कर लुक-अप टेबल मेरे पास एक बड़ा पिक्सेल प्रोसेसिंग फ़ंक्शन है जिसे मैं वर्तमान में आंतरिक कार्यों का उपयोग करके अनुकूलित करने का प्रयास कर रहा हूं।सिमड
एसएसई नौसिखिया होने के नाते, मुझे यकीन नहीं है कि कोड के भाग से कैसे निपटें, जिसमें लुकअप टेबल शामिल हैं। मैं क्या कोशिश कर रहा हूँ
//outside loop
const float LUT_RATIO = 1000.0F;
//in loop
float v = ... //input value
v = myLookupTable[static_cast<int>(v * LUT_RATIO)];
:
असल में, मैं निम्नलिखित वेनिला सी ++ कोड vectorize करने के लिए कोशिश कर रहा हूँ
//outside loop
const __m128 LUT_RATIO = _mm_set1_ps(1000.0F);
//in loop
__m128 v = _mm_set_ps(v1, v2, v3, v4); //input values
__m128i vI = _mm_cvtps_epi32(_mm_mul_ps(v, LUT_RATIO)); //multiply and convert to integers
v = ??? // how to get vI indices of myLookupTable?
संपादित करें: ildjarn एक मुद्दा यह है कि अपनी ओर से स्पष्टीकरण की मांग करता है। मैं लुकअप टेबल कोड के लिए स्पीडअप हासिल करने की कोशिश नहीं कर रहा हूं, मैं बस रजिस्टरों को विशेष रूप से लुकअप करने के लिए तैरने के लिए स्टोर करने से बचने की कोशिश कर रहा हूं, क्योंकि यह हिस्सा 2 अन्य हिस्सों के बीच सैंडविच किया गया है जो एसएसई से सैद्धांतिक रूप से लाभ उठा सकता है।
आप किसने आश्वस्त किया है कि आप 'myLookupTable [static_cast (v) * LUT_RATIO]' में सुधार कर सकते हैं? यहां कोई गणना नहीं की जा रही है, एसएसई क्यों लागू होगा? –
ildjarn
@ildjarn मुझे पूरा यकीन है कि मैं इस भाग में सुधार नहीं कर सकता, लेकिन मैं समारोह के अन्य हिस्सों में सुधार करने की उम्मीद कर रहा हूं, और '__m128' और 'फ्लोट [4]' के बीच आगे बढ़ने के दंड से बचने के लिए मुझे यह कोड भी सदिश करना होगा। – Rotem