簡體   English   中英

SSE內在函數 - 邏輯非優化

[英]SSE Intrinsics - Logical NOT Optimization

我使用SSE對圖像中的像素執行按位NOT操作。

我有一些疑問:

  1. 可以使用OpenMP進一步優化嗎?
  2. 我的算法中是否存在可以優化的瓶頸?

這是我的代碼:

unsigned int iSSE2Size = (SrcImage1.GetHeight() * (SrcImage1.GetStepBytes() >> 1)) >> 3;
__m128i *m_ucSrcPtr = (__m128i *)SrcImage1.GetWordPtr();
__m128i *m_ucDstPtr = (__m128i *)DestImage.GetWordPtr();
__m128i iMaxVal = _mm_set1_epi16(0xFFFF); 
unsigned short *srcRowPtr, *dstRowPtr;
while (iSSE2Size-- > 0)
{
    *m_ucDstPtr = _mm_andnot_si128(*m_ucSrcPtr, iMaxVal );
    m_ucSrcPtr++;
    m_ucDstPtr++;
}
  1. 是的,您可以嘗試循環展開並使用OpenMP來優化您的代碼。

     #pragma omp parallel for for (;iSSE2Size-=2 > 0;) { *m_ucDstPtr = _mm_andnot_si128(*m_ucSrcPtr, iMaxVal ); m_ucSrcPtr++; m_ucDstPtr++; *m_ucDstPtr = _mm_andnot_si128(*m_ucSrcPtr, iMaxVal ); m_ucSrcPtr++; m_ucDstPtr++; } 

    請注意,您可以多次展開以提高性能。

  2. 我沒有看到您提供的代碼段中存在任何瓶頸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM