我正在编写一个程序,其中我将需要进行大量的数值计算.但是因为我在Qt Creator中开发程序的前端,所以我还在处理MinGW.
因此,有没有办法将英特尔C++编译器与QT Creator集成或使用?
目前使用IC++ 11.0和QtCreator 1.2.1
过去十年中的所有英特尔CPU(至少)都包括一组可以计算各种事件的性能监视器.最新的Intel CPU,Core i3,i5和i7(又名Nehalem)是否提供计算每时钟指令(IPC)的机制?如果是这样,他们是如何使用的?
如果这是可能的,我可能会在汇编中为此编写代码,但Windows或Linux系统调用也可能有用.
我一直在阅读有关虚拟内存(分段+分页)的英特尔手册.据我所知,有一个特殊的寄存器,其中包含全局描述符表(GDT).GDT包含NULL描述符,本地描述符表,TSS和段描述符.此外,几乎所有操作系统(OS)都有一个GDT,并且在启动时加载并且无法更改(可能!!!).我的问题是:
我正在研究构建面向HPC(FLOP)计算的强大机器集群的可能性,因此我一直在审查顶级Intel Xeon模型,并且惊讶地发现Xeon E7型号不支持AVX矢量化,而Xeon E5则支持AVX矢量化.另一方面,E7支持SSE 4.2,它似乎是与FLOP计算和HPC无关的优化,而是适合加速字符计算,例如XML解析.
为了确保我得到正确的差异,我想问一下是否是这种情况E7 Xeon型号不支持AVX并且面向"系统"而E5 Xeon型号支持AVX并且面向HPC密集型FLOP计算.
从理论上讲,mesa 10.0.1应该支持OpenGL 3.3,但目前我只获得3.0支持.
glxinfo给出了一些令人困惑的结果......
[pdel@architect build]$ glxinfo | grep -i opengl
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.0.1
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.0.1
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions: …Run Code Online (Sandbox Code Playgroud) 一直在阅读Agner Fog的"Intel,AMD和VIA CPU的微架构"和第34页,他描述了"返回地址预测":
http://www.agner.org/optimize/microarchitecture.pdf
3.15返回(除P1外的所有处理器)
返回使用更好的方法.每次执行调用指令时,一个称为返回堆栈缓冲区的后进先出缓冲区会记住返回地址,并使用它来预测相应返回的去向.当从几个不同的位置调用相同的子例程时,此机制可确保正确预测返回指令.
鉴于返回地址仍然存储在堆栈中,我有点不清楚对此的需求是什么?
那么如果还有这种技术,在堆栈上存储返回地址的目的是什么?堆栈存储值是否仅在此预测技术不起作用时使用?
intel core i5处理器属于哪个系列?x86_64或i686.
我正在安装MinGW.我知道它会自动选择i686.但是i686都是32位吗?而intel i5实际上是一款64位处理器.这引发了对它属于哪个家族的怀疑?
谢谢
我正在开发SBC(其中有Intel I7 3ed或4ed,并且没有外置GPU)我正在使用linux.我想利用英特尔处理器显卡的优势.我想用Cuda或OpenCl来学习开发.我读过一些旧帖子(几年前)(我不确定现在有更好的技术):
我希望对zmm 0-31寄存器组的四字字元素执行整数运算操作,并保留这些操作产生的进位.看起来这只有在数据在通用寄存器集中处理时才有可能.
因此,我想将信息从一个zmm 0-31寄存器复制到一个通用寄存器.在处理通用寄存器中的64位数据之后,我想将数据返回到它来自的相同QuadWord位置的原始zmm 0-31寄存器.我知道我可以使用命令将数据从通用寄存器rax移动到AVX512寄存器zmm26 QuadWord位置5
vpbroadcastq zmm26{k5}{z},rax
Run Code Online (Sandbox Code Playgroud)
其中8位掩码k5 =十进制32,允许将数据广播到zmm26的第5个QuadWord,z = 1表示zmm26中没有其他QWord受影响,rax是数据源自的位置.
但是我找不到一个反向命令,它将寄存器zmm26,四字5中的数据写入rax寄存器.看来我只能使用vmovq rax,xmm1命令将最不重要的QuadWord从AVX寄存器复制到通用寄存器.并且没有使用掩码zmm 0-31源的广播命令.
我很高兴知道我的命令选项是从zmm 0-31寄存器到rax寄存器获得特定的QuadWord.此外,除了英特尔手册之外,AVX512指令集还有其他任何描述性信息来源吗?
生成的操作码:
or ebx, 0ffffffffh
Run Code Online (Sandbox Code Playgroud)
与NASM是:
83CBFF
Run Code Online (Sandbox Code Playgroud)
但在英特尔说明手册中:
81 /1 id OR r/m32, imm32
83 /1 ib OR r/m32, imm8
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么NASM使用操作码83代替81,以及如何生成操作码81?
这是NASM的命令行: nasm -fwin32 file.asm -l list.lst