774得票11回答
你的CPU支持一些指令,但这个TensorFlow二进制文件没有编译使用:AVX AVX2。

我最近安装了tensorflow(Windows CPU版),并收到以下信息: 成功安装了tensorflow-1.4.0和tensorflow-tensorboard-0.4.0rc2 然后当我尝试运行时import tensorflow as tf hello = tf.constan...

85得票2回答
如何在编译时检测SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI的可用性?

我正在尝试优化一些矩阵计算,想知道是否能够在编译时检测到编译器是否启用了 SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI[1]。最好是针对 GCC 和 Clang,但如果只能使用其中一个也可以。我不确定这是否可能,也许我会使用自己的宏,但我更喜欢检测它,而...

76得票7回答
如何检查CPU是否支持SSE3指令集?

以下代码是否可以用来检查CPU是否支持SSE3指令集? 使用IsProcessorFeaturePresent()函数,显然在Windows XP上无法使用。bool CheckSSE3() { int CPUInfo[4] = {-1}; //-- Get number o...

76得票1回答
C#和SIMD:高速和低速提升。发生了什么?

问题介绍 我正在尝试加速我正在编写的(2d)光线追踪器的交点代码。我正在使用C#和System.Numerics库来提高SIMD指令的速度。 问题是,我得到了奇怪的结果,有些速度飙升,而有些则相对较低。我的问题是,为什么一个速度飙升,而另一个速度相对较低? 背景: RayPack结构...

63得票2回答
为什么Skylake处理器上没有使用VZEROUPPER指令会使得这个SSE代码运行速度慢6倍?

我一直在尝试解决一个应用程序的性能问题,并最终将其缩小到了一个非常奇怪的问题。如果注释掉 VZEROUPPER 指令,下面的代码块在 Skylake CPU(i5-6500)上运行速度会慢 6 倍。我已经测试过 Sandy Bridge 和 Ivy Bridge CPU,两个版本都可以在相同的...

61得票10回答
优化const非整数幂的pow()函数?

我的代码中有一些热点,其中的pow()函数占用了大约10-20%的执行时间。 我传递给pow(x,y)函数的输入非常具体,所以我想知道是否有一种方法可以使用更高效的方法来进行两个pow()函数的近似(每个指数一个): 我有两个固定的指数:2.4和1/2.4。 当指数为2.4时,x将在范围...

60得票2回答
Sandy Bridge和Haswell SSE2/AVX/AVX2每个时钟周期的FLOPS

我对Sandy-Bridge和Haswell每个核心每周期可以完成多少Flops感到困惑。 据我所知,使用SSE应该是每个核心每个周期4个Flops,而使用AVX/AVX2应该是每个核心每个周期8个Flops。 这在以下链接中得到了验证, 如何达到每个周期的理论最大值4 FLOPs? 以及...

59得票2回答
使用AVX CPU指令:没有"/arch:AVX"会导致性能不佳

我的C++代码使用了SSE,现在我想改进它以支持AVX(如果可用)。因此,我会检测AVX是否可用,并调用使用AVX指令的函数。我使用Win7 SP1 + VS2010 SP1和一个支持AVX的CPU。 要使用AVX,必须包含以下内容:#include "immintrin.h" 然后您可以使用...

59得票2回答
如何选择AVX比较谓词变体

在高级矢量扩展(AVX)中,比较指令(例如_m256_cmp_ps)的最后一个参数是比较谓词。我对谓词的选择感到不知所措。它们似乎是类型、排序、信号的三元组。例如,_CMP_LE_OS表示“小于等于、有序、信号”。 首先,选择信号或非信号是否有性能原因?同样,有序还是无序比另一个更快? 那...

56得票5回答
如何判断Linux机器是否支持AVX/AVX2指令?

我正在使用SUSE Linux Enterprise 10/11操作系统。我将我的测试程序运行到一组安装了Intel处理器的机器上。由于我的工具程序依赖的库需要AVX/AVX2指令集支持,因此一些测试失败了,我收到了“非法异常”错误。 在Linux中,有没有可以用来确定CPU代码/系列名称的...