jjzjj

windows - 我怎么知道 CPU 是不是 Haswell

要知道,haswell是英特尔作为IvyBridge微架构的“第四代核心”继承者而开发的一种处理器微架构的代号。1英特尔正式发布了基于这种微架构的CPU...More但是,我想知道如何通过在Windows中使用PowerShell来显示我的CPU是否正常?在这种情况下,我有一个脚本来解决这个问题,但它可能对每个人都不合法:$cpuname=(Get-CimInstanceCIM_Processor).Name$splcpuall=@($cpuname-csplit"")$splcpu=$splcpuall[20]$ishaswell=if($splcpu-gt3){Write-Outp

c++ - 可以在 macOS 上启用的最低支持 SSE 标志是什么?

最近我使用的大多数硬件都支持SSE2。在Windows和Linux上,我有一些代码来测试SSE支持。我在某处看到macOS很早就支持SSE了,但我不知道最低版本可以启用。最终的二进制文件将被复制到其他macOS平台,因此我不能像使用GCC那样使用-march=native。如果所有构建都默认启用它,我是否必须在构建代码时传递-msse或-msse2标志?这是我的编译器版本:AppleLLVMversion6.0(clang-600.0.56)(basedonLLVM3.5svn)Target:x86_64-apple-darwin14.1.0Threadmodel:posix这是una

c++ - 使用 haswell tsx 的神秘 rtm 中止

我正在haswell中试验tsx扩展,通过调整现有的中型(1000行)代码库以使用GCC事务内存扩展(在native中间接使用haswelltsx)而不是粗粒度锁。我正在使用GCC的transactional_memory扩展,而不是直接编写我自己的_xbegin/_xend。我正在使用ITM_DEFAULT_METHOD=htm我在让它足够快地工作时遇到了问题,因为由于神秘的原因,我的硬件事务中止率很高。如下所示,这些中止不是由于冲突,也不是由于容量限制。下面是我用来量化故障率和根本原因的perf命令:perfstat\-ecpu/event=0x54,umask=0x2,name=

c++ - 等同于 PEXT Haswell 指令的标准 C++11 代码(并且可能会被编译器优化)

Haswell架构提供了几个新的指令。其中之一是PEXT(parallelbitsextract),这张图片解释了它的功能(来源here):它接受一个值r2和一个掩码r3并将提取的r2位放入r1中。我的问题如下:纯标准C++11中优化模板函数的等效代码是什么,将来编译器可能会针对该指令进行优化. 最佳答案 这里是somecode来自MatthewFioravante的stdcxx-bitopsGitHubrepo那是floatedtothestd-proposals邮件列表作为为C++添加constexpr位运算库的初步建议。#if

c++ - AVX2 在 Haswell 上比 SSE 慢

我有以下代码(正常、SSE和AVX):inttestSSE(constaligned_vector&ghs,constaligned_vector&lhs){intresult[4]__attribute__((aligned(16)))={0};__m128ivresult=_mm_set1_epi32(0);__m128iv1,v2,vmax;for(intk=0;kmymax){mymax=result[k];}}returnmymax;}inttestAVX(constaligned_vector&ghs,constaligned_vector&lhs){intresult[8

c++ - 使用 Ivy Bridge 和 Haswell 循环展开以实现最大吞吐量

我正在使用AVX一次计算八个点积。在我当前的代码中,我做了这样的事情(在展开之前):Ivy桥/沙桥__m256areg0=_mm256_set1_ps(a[m]);for(inti=0;i哈斯韦尔__m256areg0=_mm256_set1_ps(a[m]);for(inti=0;i我需要为每个案例展开多少次循环以确保最大吞吐量?对于使用FMA3的Haswell,我认为答案就在这里FLOPSpercycleforsandy-bridgeandhaswellSSE2/AVX/AVX2.我需要展开循环10次。对于IvyBridge,我认为是8。这是我的逻辑。AVX加法的延迟为3,乘法的延