小编Aro*_*ler的帖子

使用AVX指令禁用exp()优化?

我正在使用AVX内在函数在VC++中编写一个前馈网络.我在C#中通过PInvoke调用此代码.调用计算包含函数exp()的大循环的函数时,我的性能对于160M的循环大小是~1000ms.一旦我调用任何使用AVX内在函数的函数,然后使用exp(),我的性能就会下降到大约~8000ms进行相同的操作.请注意,计算exp()的函数是标准C,并且使用AVX内在函数的调用在处理的数据方面可能完全不相关.某种标志在运行时会在某处绊倒.

换一种说法,

A(); // 1000ms calculates 160M exp() 
B(); // completely unrelated but contains AVX
A(); // 8000ms
Run Code Online (Sandbox Code Playgroud)

或者,奇怪的是,

C(); // contains 128 bit SSE SIMD expressions
A(); // 1000ms
Run Code Online (Sandbox Code Playgroud)

我很遗憾这里有什么可能的机制,或者如何追求一个解决方案.我在英特尔2500K cpu\Win 7. Express版本的VS.

谢谢.

x86 avx visual-c++ exp

6
推荐指数
1
解决办法
1774
查看次数

标签 统计

avx ×1

exp ×1

visual-c++ ×1

x86 ×1