我一直在与使用OpenCL的多核CPU线程进行GPU线程同步.我确实看到了一些CUDA示例,但是,如果有人能够在OpenCL方面给我一些关于同步部分的提示,我会更清楚这个概念.提前感谢您对此事的任何帮助.
我正在开发一个性能关键型应用程序,它必须移植到Intel Atom处理器,它只支持MMX,SSE,SSE2和SSE3.我以前的应用程序支持SSSE3以及AVX,现在我想将它降级到Intel Atom处理器(MMX,SSE,SSE2,SSE3).
当我更换ssse3指令时,特别是_mm_hadd_epi16使用此代码,会严重降低性能
RegTemp1 = _mm_setr_epi16(RegtempRes1.m128i_i16[0], RegtempRes1.m128i_i16[2],
RegtempRes1.m128i_i16[4], RegtempRes1.m128i_i16[6],
Regfilter.m128i_i16[0], Regfilter.m128i_i16[2],
Regfilter.m128i_i16[4], Regfilter.m128i_i16[6]);
RegTemp2 = _mm_setr_epi16(RegtempRes1.m128i_i16[1], RegtempRes1.m128i_i16[3],
RegtempRes1.m128i_i16[5], RegtempRes1.m128i_i16[7],
Regfilter.m128i_i16[1], Regfilter.m128i_i16[3],
Regfilter.m128i_i16[5], Regfilter.m128i_i16[7]);
RegtempRes1 = _mm_add_epi16(RegTemp1, RegTemp2);
Run Code Online (Sandbox Code Playgroud)
这是我能够为这个特定指令提出的最佳转换.但这种变化严重影响了整个计划的表现.
任何人都可以在MMX,SSE,SSE2和SSE3指令中建议更好的性能效率替代_mm_hadd_epi16指令.提前致谢.
最近几天,我一直在尝试生成共享库。我也有头文件,源文件和asm文件。我试图安静地解决许多类似的问题,但是我找不到一个指定从多个源文件,头文件和asm文件生成.so文件所需的步骤的问题。我在生成.so文件时遇到了许多问题。如果有人可以帮助我逐步生成.so文件,我将不胜感激。另外,制作正确的make文件的一些技巧也会有所帮助。