x86 – 我可以将SIMD内在函数用于在云上运行的软件吗?

            只考虑将某些软件迁移到云时必须完成的工作.
            该软件使用了很多从SSE3到AVX的SIMD内在函数(英特尔).它在本地服务器上运行良好.
            我想知道将它迁移到云应该做些什么样的改变.
            当然希望能够尽可能少地使用SIMD功能.
            但是,似乎无法预测在云上运行时将使用哪种CPU.我怀疑当软件在某种虚拟机或容器上运行时是否可以使用特定CPU的低级功能.
            是的,在云服务器上使用SIMD比在将要分发给人们桌面的应用程序中更容易,因为您通常可以更好地控制代码运行的硬件. (根据哪个云托管,您可以完全了解,就像在当前的私有服务器上运行一样.)

            在虚拟机内部,已编译的可执行文件中的机器代码仍然在(通常)x86 CPU上运行,通常是Intel Xeon,但可能是AMD服务器.

            某些VM软件可能设置为不暴露AVX,但任何x86云主机至少会有SSE4.2. SSE2是x86-64的基线,因此不能公开这不是一个选项.如此老的CPU,它们只有SSE4.1或SSSE3可能很久以前已经退役,因为不值得运行它们所需的功率.

            大多数虚拟机/云托管中缺少的主要功能是硬件性能计数器.因此,您将很难通过Linux性能记录来调整云服务器,或者针对任何事件(如缓存未命中)甚至周期进行性能分析. perf可能有一些基于时间的采样,其他分析工具设计用于基于时间的采样而不是HW perf计数器.

            例如,Google云端计算服务器可让您选择运行实例的硬件类型,例如: Haswell或Skylake-X.无论是哪种,都可以使用AVX2和FMA. (和BMI2,popcnt等).使用Skylake-X,您还可以使用AVX512BW / AVX512DQ /其他一些AVX512口味.用clang / gcc -O3 -march = skylake-avx512或-march = haswell编译.

            如果能够假设AVX FMA对您的软件很重要,我假设其他云主机具有类似的机制,允许您选择至少一组最小的ISA扩展基线.我希望能够很容易地找到AVX,并且很容易找到Haswell. (AVX2 FMA BMI1 / BMI2). -march = haswell是一个有用的基线编译目标.

            VM支持在物理机之间迁移VM,但它们永远不会迁移到丢弃guest虚拟机启动的某些功能的主机. (这是不通过AVX,或者像CPU那样广告最近的SSE或AVX版本的一个原因.)

            AVX和AVX512添加了新的架构状态(新的/更宽的寄存器),因此需要在上下文切换上提供新的保存/恢复支持.如果控制寄存器中没有OS / VM设置的正确位,AVX指令将发生故障.因此,VM可以完全阻止访客使用AVX.但是,由于必须启用SSE2,如果硬件支持它,它们不能阻止您使用SSE4.2.可能会设置来宾VM,因此CPUID仅广告SSE2但不高,但在SSE2指令有效时,它们无法使SSE4.2指令出错.对于AVX2 FMA也是如此:如果启用了AVX1,则只有真正不支持AVX2或FMA的底层CPU才能使它们出错,而不是CPUID人为限制.但是,不宣传FMA可能意味着您的VM可能随时迁移到不支持它的硬件.

            英特尔仍在Silvermont / Goldmont系列中生产没有AVX的CPU.其中一些用于低功耗服务器,但我认为这对于大多数云计算来说都是罕见的. (英特尔还销售没有AVX的Skylake Celeron / Pentium CPU,但你不会在云主机中找到它们.)

            除此之外,Sandybridge在2011年左右是新的,而AMD大约在同一时间推出了Bulldozer.因此,任何物理上缺乏AVX支持的主流CPU都已经过时了,并且没有内存带宽和CPU功率值得大多数托管商的电费.

            相关文章
            相关标签/搜索
            王中王鉄算盘开奖结果小说 壶关县| 萨迦县| 辛集市| 穆棱市| 西吉县| 清苑县| 江陵县| 辽宁省| 遂川县| 修文县| 嘉峪关市| 平乐县| 名山县| 宜兴市| 延川县| 泸溪县| 垦利县| 定日县| 安多县| 玉龙| 横山县| 东丽区| 茂名市| 金沙县| 威信县| 新和县| 茶陵县| 玉环县| 赞皇县| 四川省| 巴彦淖尔市| 三江| 衡水市| 蛟河市| 府谷县| 建阳市| 遵义县| http://fa.hz0j1r5vo.fun http://fa.hz0j0r2vo.fun http://fa.hz0j1r8vo.fun http://fa.hz0j0r1vo.fun http://fa.hz0j1r4vo.fun