对 Intel Sandybridge 系列 CPU 中的管道进行去优化
此作业的目标是修改给定的程序以使其运行速度较慢,同时保持相同的算法。这是为了更深入地了解英特尔 i7 流水线的运行方式以及指令路径如何重新排序以引入危险。
程序概述
该程序是对欧洲普通看涨期权和看跌期权进行定价的蒙特卡罗模拟。它使用 Box-Muller 算法生成高斯随机数并执行大量模拟来估计期权价格。
恶魔般的无能
目标是故意创建会减慢程序执行速度的不合格代码。以下是一些用“恶魔般的无能”来证明这种方法的合理性的想法:
错误共享
- 创建由多个线程访问的共享数据结构,但未正确同步。这可能会导致缓存行乒乓球和内存顺序错误推测管道清除。
存储转发停顿
- 避免使用浮点变量的“-”运算符。相反,将高字节与 0x80 进行异或以翻转符号位,从而导致存储转发停顿。
过多的时间测量
- 每次迭代的时间具有 CPUID/RDTSC 等繁重操作的主循环,它会序列化指令并停止
不利的数学运算
- 将常量乘法替换为倒数除法(“为了便于阅读”)。除法较慢且未完全流水线化。
矢量化效率低下
- 使用 AVX 对乘/平方运算进行向量化,但在调用之前无法使用 vzeroupper标量数学库函数,导致 AVXSSE 转换
数据结构
- 将 RNG 输出存储在链表或乱序遍历的数组中。对每次迭代的结果执行相同的操作并在最后求和。这引入了指针追逐加载并破坏了缓存局部性。
多线程误用
- 多线程程序,但强制两个线程共享相同的循环计数器(具有原子增量)来创建错误的共享和争用。这也引入了原子操作不必要的开销。
其他建议
- 引入不可预测的分支来创建错误预测和管道刷新。
- 使用恶魔般无能的理由来增加循环携带的依赖链的长度。
- 引入非连续内存访问模式最大限度地减少缓存利用率。
- 额外费用学分:编写自己的平方根算法来替换作业中提供的算法。
修改的影响
这些修改预计会显着通过引入管道停顿、缓存未命中和其他性能瓶颈来减慢程序的执行速度。该作业鼓励创造力和愿意探索悲观化代码同时保持原始算法的不同方法的意愿。
以上是我们如何取消优化蒙特卡洛模拟以暴露英特尔 Sandybridge 管道瓶颈?的详细内容。更多信息请关注PHP中文网其他相关文章!

C 中有四种常用的XML库:TinyXML-2、PugiXML、Xerces-C 和RapidXML。1.TinyXML-2适合资源有限的环境,轻量但功能有限。2.PugiXML快速且支持XPath查询,适用于复杂XML结构。3.Xerces-C 功能强大,支持DOM和SAX解析,适用于复杂处理。4.RapidXML专注于性能,解析速度极快,但不支持XPath查询。

C 通过第三方库(如TinyXML、Pugixml、Xerces-C )与XML交互。1)使用库解析XML文件,将其转换为C 可处理的数据结构。2)生成XML时,将C 数据结构转换为XML格式。3)在实际应用中,XML常用于配置文件和数据交换,提升开发效率。

C#和C 的主要区别在于语法、性能和应用场景。1)C#语法更简洁,支持垃圾回收,适用于.NET框架开发。2)C 性能更高,需手动管理内存,常用于系统编程和游戏开发。

C#和C 的历史与演变各有特色,未来前景也不同。1.C 由BjarneStroustrup在1983年发明,旨在将面向对象编程引入C语言,其演变历程包括多次标准化,如C 11引入auto关键字和lambda表达式,C 20引入概念和协程,未来将专注于性能和系统级编程。2.C#由微软在2000年发布,结合C 和Java的优点,其演变注重简洁性和生产力,如C#2.0引入泛型,C#5.0引入异步编程,未来将专注于开发者的生产力和云计算。

C#和C 的学习曲线和开发者体验有显着差异。 1)C#的学习曲线较平缓,适合快速开发和企业级应用。 2)C 的学习曲线较陡峭,适用于高性能和低级控制的场景。

C#和C 在面向对象编程(OOP)中的实现方式和特性上有显着差异。 1)C#的类定义和语法更为简洁,支持如LINQ等高级特性。 2)C 提供更细粒度的控制,适用于系统编程和高性能需求。两者各有优势,选择应基于具体应用场景。

从XML转换到C 并进行数据操作可以通过以下步骤实现:1)使用tinyxml2库解析XML文件,2)将数据映射到C 的数据结构中,3)使用C 标准库如std::vector进行数据操作。通过这些步骤,可以高效地处理和操作从XML转换过来的数据。

C#使用自动垃圾回收机制,而C 采用手动内存管理。1.C#的垃圾回收器自动管理内存,减少内存泄漏风险,但可能导致性能下降。2.C 提供灵活的内存控制,适合需要精细管理的应用,但需谨慎处理以避免内存泄漏。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

WebStorm Mac版
好用的JavaScript开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

记事本++7.3.1
好用且免费的代码编辑器