太乙峰下格纳秒

2023-10-13 19:10
文章标签 太乙峰 下格 纳秒

本文主要是介绍太乙峰下格纳秒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在盛格塾小程序里,曾经有一门独特的课,题目叫《低延迟设计与优化》,它的最初价格是3600。这门课上线本来是给一家企业客户的,他们年底预算剩余,预购课程。但是课程上线后,一些个人用户也下了单。因为内容还未上线,为了避免更多人下单,后来就把价格调整到了9万8(^_^)。

今年春季杭州研习班上,几位老朋友又谈起这门课,促使我下定决心在今年开这门课。

DAY 0

上周四一大早,我带着一大箱装备,从上海南站奔赴九江,就为了上这门课。

a1e80ae8c0302a62bd494a227613f8c1.jpeg

与我同一趟动车的还有三个人和我是完全相同的目的地,他们也是从上海出发,参加研习班。我们四个人,有三位在一号车厢,有一位在八号车厢。

下午三点半,火车准时到达九江站,几分钟后,我们在出站口与前来接站的寒啸会合,一共五个人,刚好一辆车。

寒啸是登山圈里的名人,曾登顶珠峰,穿越四大无人区,我与他在微信中认识多年,这一次是第一次见面。微信群里,大家喜欢称他为韩队,我也用这个称呼。

车子很快出了九江市,进入连接九江市和庐山市(原来的星子县)的庐山大道。此时左侧是鄱阳湖,右侧是五老峰,路两边的风景让人目不暇接。

为了让我们更好地领略五老峰的风采,到了白鹿镇后,韩队特别把车转到白鹿洞书院方向,过书院售票处后左转,上了新修好的绕庐山绿道。

五老峰太迷人了,我如此说,韩队也如此说。于是我们禁不住五老峰的诱惑,把车停下来,在茶园边的摄影框附近拍了些照片。

cd8122eb75ab58f52f06f1817e381355.jpeg

车子过了观音桥景区后,山路就变得更狭窄了,只允许6坐以下车行驶。

大约在下午五点钟,我们到了韩队的登山基地。以前我看过很多基地的照片,这一次终于到了实地。基地有1、2号两栋楼,1号楼就在太乙公路路边,靠近林场的一个进山检查站。2号楼在山坡上面,更临近太乙峰。

韩队直接把我们带到2号楼,那里有会议室,我们把东西放到会议室后,韩队还特别带我们到楼顶,向北看,太乙峰就在眼前,连山顶的石门形状巨石都看得清楚。向西看,可以遥望庐山第一高峰——大汉阳峰。东面是白鹿洞书院方向,可以看到五老峰。向南,则可以遥望鄱阳湖。

d5907305e227dc898d0bc98248a18dfb.jpeg

当晚,我们就住在韩队的登山基地。三位年轻的小伙伴在桂花树下聊到深夜,我考虑到第二天会很忙,十点多便睡了。

010660ccd8c75ea0999d9230b961c64f.jpeg

DAY 1 

第二天一早6点多,我从鸟鸣中醒来,走到园中,看到他们昨晚喝茶的茶具还在石桌上。

9f447d79b3f29f9d3084a294804a5e51.jpeg

抬头天气晴朗,周围的山峰清晰可见。 

ba11eab1614ccb0103f1a2f618a6b026.jpeg

6496273a29a9f40164d7922453870f22.jpeg

早上9点40左右,余下的同行乘坐三辆车几乎在相同时间到了基地。大家稍事休整后,课程在10点钟正式开始。

整个课程分为五篇:中枢、发微、法门、噪声和匠心,每一篇3-4章。

8518fe81c30917d4485b5298f127f967.png

我介绍课程大纲后,便开始第一讲《IA大局观》。

在庐山上的每一秒时间都很宝贵,首要的任务是学习,同时又想抽时间爬山和欣赏庐山的美景,另外,还要考虑大家旅途劳顿,要休息好。

趁着课间休息时间,我为大家安排好了就寝的房间,为午睡做好准备。

在介绍了Intel CPU的大局观、Core和UnCore后,进入第二篇,大家一起深入讨论测量时间的RDTSC指令后,进入充满不确定的CPU的工作频率,我把它比喻为人的心率,不同时间不一样,不同人不一样,高低范围不一样,几乎每时每刻都在变化。

580e8e3531213cb2a9199d2f2a7a17a4.png

午饭后,进入第三篇:发微,记忆系统。从寄存器开始,介绍了INTEL今年夏天刚推出的APX。

吃过晚饭,第一天挑灯野战的内容是DRAM,回顾内存的发展经过,深究DRAM的原理和组织方法,目的是让大家认识到内存很愚蠢,是优化的关键目标。

aed80ea5379bfc3d58e2a86bb36c19c6.png

DAY 2 

按最初的行程安排,爬山活动安排在第二天上午。但根据韩队的建议,调整为第二天上午。

因为从基地到爬山的步行路,还有2公里多的车程,但是不允许走6坐以上车,我们一辆车不够,只好分为几批。我和翅膀决定先出发,步行一段。不想我们走了不到500米,就有一辆轿车停下来,主动要我们搭车,我们坐上去,很快就到了太乙公路的尽头。

坐车的大部队一路上看不见我们两个以为我们走错方向了。打电话信号不好,我们说我们到了,他们还不信,坚持说我们走错方向了。

韩队不愧是专业的登山家和登山向导。在上山前,先给我们培训了登山杖的用法,登山的步伐,用腿的方法,还有呼吸的技巧。大家听了受益匪浅。后来证明,韩队的方法的确好,登山一圈回来,很少有人感到腿酸。

爬到差不多半程时,大家停下来休息,在队伍最后面压阵的翅膀抓住时机,拍了下面这张照片。

424e21ccadc1ddf07289f9d14ac7dbc1.jpeg

我很早就听说从太乙峰有一条路上含鄱口,是最近的上山路但是一直没有机会体验。这一次实地走一次,果然很近,用了一个多小时,大家就都到了山顶。

3702eef47118e134ea665917c916e4f3.jpeg

下山午饭后,大家小睡片刻,开始下午课程。

按照讲义的顺序,第二篇有一讲:《CPU工厂的硬指标》,我故意将其延后,结合试验来讲。下午上课时,我先花了几分钟时间修复perf工具,然后便带领大家一起使用perf来测量CPI/IPC。

1314f7f816417a7723be550610a01836.png

IPC的基本含义是每个时钟执行的指令数,是衡量CPU工厂效率的关键指标。在Intel的VTune工具里,有个类似的指标,叫CPI,Cycles Per Instruction,刚好是IPC的倒数。

0945e0206f94d7690a09544df01c16cd.png

在VTune关于CPI指标的提示里,说CPI的理论最好值是0.25,转换成IPC就是4。但我觉得这个描述过时了,需要更新。

f3562f44ce4f65ce3cdfe443313ec298.png

上课的小伙伴使用我提供的geipc代码到他的强大机器上测试,果然测试出了IPC为5,证明了我的推测。bc1751795493ed85075dbbba98c789d2.png

后来,还有同学在他的XEON系统上测出了IPC大于6的情况。进一步说明了VTune的提示信息亟待更新。

第二天晚上,我带着大家一起写代码,构造特别的跨行访问实例,然后使用perf record等工具进行各种测试。因为白天一起登山,彼此已经很熟悉,起初的陌生感消失,大家相互开玩笑,课堂上常常笑声一片。大家兴趣高昂,一直挑灯夜战到夜里十点。

10点后,大家一起下楼,到太乙公路上避开灯光,关闭手电筒,调整视觉,抬头看星星。白天大家还担心看不到,事实证明不然,仰望夜空,满天星斗,有的暗一些,有的很亮。

DAY 3 

第三天一早,开讲第四篇:《噪声》,首先讲中断和异常的干扰,特别是顽固不化的TLB Shooting down中断,关于这个中断机制,大家还进行了一场小小的辩论,一方觉得硬件做好,另一方觉得硬件实现有无法克服的困难,必须由系统软件做。

考虑到有同学需要提前离开,所以我故意把第五篇进程间通信的内容提前来讲。使用烽火戏诸侯的故事建模,设计了两个小程序:一个叫uking,一个叫noble。诸侯可以运行很多个,uking发信息,看哪个诸侯先收到,用时多久。

c5789db1a6010fdad7b8b3e33abd4656.png

经过不同环境的实测,双方通信的最快速度可以达到几十个时钟,有经验的同学觉得已经很快了。

3be1d8a4137dfc530d2b1bdcce6d1ee4.png

下午三点,预定的课程内容刚好按计划结束,问答环节里,老朋友Horizon希望演示一下VTune。对于这个要求,我欣然答应,用Nano Display将试验机的小盒子界面显示到Windows上,然后打开终端窗口,准备启动VTune的图形界面。

起初,忙中出错,走错了目录,找不到合适的脚本文件。

后来,切换到/opt/intel/oneapi下,source setvars.sh,再vtune-gui,熟悉的界面出现了。

但是在配置优化项目时,VTune还是报了几个错。于是,先按VTune提示设置虚文件,又手工构建和加载了VTune的驱动。

6631f7da8a74a7fe35021ee42d4686dd.png

终于VTune顺利开始采集数据,并分析数据,给出了结果。

a4292e7f4cfd709cf3c00caf310ec71d.png

VTune的演示不算顺利,但在紧张中仍然以成功的结果完成,也给三天两晚的研习班画上了句话。我宣布课程结束后,大家快速行动,准备返程。

大多数格友都乘车下山后,我独自返回教室,收拾东西,把带来的装备放在一起,拍照留念。

7e7bef54cdb2727bb01b4a407dc8be43.jpeg

DAY 4 

第四天上午,上午和韩队一起看了七彩瀑布和太乙村民国将领别墅群。吃过午饭又一起探访了基地附近的古万寿寺遗迹。在竹林中寻访了清代大学者顾贞观题写的“万寿”二字。

韩队把我送到九江站后,我找了个座位,写了下面这条朋友圈。

f9a1ab0b17bc4d12f421e1eb6d7e62b7.jpeg

酝酿多年,延迟许久的“纳秒级优化训练营”终于完成了,非常感谢参加的小伙伴们,也感谢韩队的全力相助。与韩队一见如故,在基地的大桂花树下,我们相互激发,很快想出了一个新的活动计划。这便是将在国庆长假举行的《LINUX平台高级调试与优化》国庆特别版。在庐山太乙峰下安营扎寨,四天三晚,文武二“教头”通力合作,言传身教,与大家一起劳逸结合,修炼身心。

01245d77f05fcceb611a38e1984168f3.png

(写文章很辛苦,恳请各位读者点击“在看”,也欢迎转发)

*************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生

扫描下方二维码或者在微信中搜索“盛格塾”小程序,可以文章和有声读物

23bd0400a2bed7e9eb34c5f8f9d7e31c.png

也欢迎关注格友公众号

892baec5735e1bc1693c6a889700dd4d.jpeg

这篇关于太乙峰下格纳秒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/205260

相关文章

1秒等于1000毫秒, 1毫秒等于1000微秒,1微秒等于1000纳秒

常用时间单位转换指南 在计算机科学、物理学以及其他领域中,我们经常需要处理不同量级的时间单位。了解这些单位之间的转换关系,可以帮助我们更准确地进行计算和分析。下面是一些常用的时间单位及其相互之间的转换。 时间单位概述 秒(Second, s):基本时间单位,定义为铯-133原子基态的两个超精细能级间跃迁对应辐射的9,192,631,770个周期的持续时间。毫秒(Millisecond, ms

京准电钟|基于纳秒级的GPS北斗卫星授时服务器

京准电钟|基于纳秒级的GPS北斗卫星授时服务器 京准电钟|基于纳秒级的GPS北斗卫星授时服务器 你有没有思考过这样一个问题:火车站内,熙熙攘攘,旅客排队进站、列车停靠发车,一切井然有序。一旦有个别时间出现错误,便会造成运行混乱——这些时钟如何能做到精准统一、不差分毫? 答案便是车站里的“时间管理大师”——时间同步系统。这是一种能接收外部卫星时间基准信号,并按照要求的时间精度向外输出时间同步信号

达摩院重大“遗产”!fluxonium量子比特初始化300纳秒且保真度超过99%

通用量子计算机开发的主要挑战之一是制备量子比特。十多年来,研究人员在构建量子计算机的过程中主要使用了transmon量子比特,这也是迄今为止商业上最成功的超导量子比特。 但与业界多数选择transmon量子比特不同,(前)阿里巴巴达摩院量子实验室选择了fluxonium新型量子比特作为未来量子计算探索的方向。作为一种相对较新的超导量子比特,fluxoniu量子比特在理论上可获得高操控精度

NTP授时服务器同步精度被推至亚纳秒级

NTP授时服务器同步精度被推至亚纳秒级 NTP授时服务器同步精度被推至亚纳秒级 时间与每个人息息相关,当我们熟悉的时间被压缩到10-10量级(亚纳秒级),意味着什么?“新一代同步时间信息网络”究竟是什么?为什么说未来物联网、5G、人工智能等新兴领域的实现离不开精准时间技术?   来自中国科学技术大学、中国科学院合肥分院、科大国盾量子技术有限公司、国防科技大学、合肥中科离子医学技术装备有限公

linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒)(转载)

1、用gettimeofday()可获得微妙级(0.000001秒)的系统时间,调用两次gettimeofday(),前后做减法,从而达到定时或者计算时间的目的。 原型:int gettimeofday(struct timeval *tv,struct timezone *tz),会把目前的时间tv所指的结构返回,当地时区的信息则放到tz所指的结构中。这两个结构都放在/usr/inclu

Go 纳秒级unix时间戳 格式化

调用UnixNanoTimeFormat函数时传入一个纳秒级时间戳和一个时间格式字符串,以获取格式化后的时间字符串。 // 带纳秒的Unix Time格式化func UnixNanoTimeFormat(unitNanoTimestamp int64, timeFormat string) string {seconds := unitNanoTimeStamp / int64(time.S

20130408-[转]微秒, 纳秒,毫秒, 时间单位换算

秒,时间单位,符号s(英语:second): 0.000 000 001 毫秒 = 1皮秒 0.000 001 毫秒 = 1纳秒 0.001 毫秒 = 1微秒 1毫秒=0.001秒 60秒=1分钟 60分钟=1小时 24小时=1天 7天=1星期 30,31,28或29天=1月 12月=1年 100年=1世纪。   微秒,时间单位,符号μs(英语:microsecond

AP考试-某内存的带宽16bit,刷新周期为80纳秒,可以连续运行。请问该内存的传送速度为 多少MB/秒?此处,简化为 1MB=10^6 B。

1,第一种思路 此题很容易认为是 16bit/80纳秒,从而算出200MB/s。   2,第二种思路 但另外一个思考方法算出的数据截然不同。 80纳秒一个刷新周期,那么一秒会刷新多少次呢? 1秒/80纳秒 /次= 1/(80* 10^-9) 次。 每次可以传送16bit,即为2Byte 所以1秒的传送量= 2 B/次 * 1/(80*10^-9)次 = 200 / 8  MB =

【DB笔试面试625】在Oracle中,如何获取timestamp类型的精度到纳秒级?

♣ 题目部分 在Oracle中,如何获取timestamp类型的精度到纳秒级?       ♣ 答案部分 秒(s)的单位都有毫秒(ms,millisecond),微秒(μs,microsecond),纳秒(ns,nanosecond),它们之间的换算单位为千进制,1s(秒)=10^3ms(毫秒)=10^6μs(微秒)=10^9ns(纳秒)。

awk计算到纳秒级的bug

在对日志信息进行实时监控分析时,需要对日志中纳秒级的时间进行计算,逻辑比较简单:找出开始时间、结束时间,遇到结束时间后输出时间间隔。日志中的部分数据如下: 1 2 2016 - 01 - 30 19 : 37 : 30 1454153850967748663 remove alive file 2016 - 01 - 30 19 : 37 : 34 14541538