Intel多核培训感想
今天是参加Intel多核和多线程培训的第一天,感触颇深。因为目前我们正在开发一个分布式的多线程系统,前不久也做过一些优化,听了今天的课程,能产生一点点共鸣。
在培训之前,Intel就已经将教材发给了我们,当时看了一下student book的内容,都是针对于它们的多核CPU、编译器和分析工具的一些实验,这些工具都没有接触过,浏览了一遍也没有看出一个所以然来,由于不是自己掏钱,所以也就没有重视这个培训。课程一开始,就开始为这种想法感到自责。
本来是四天的课程,由于我们不做实验(其实还是做了的,只是老师通过远程桌面连上上海的机器,为我们示范和分析实验内容),所以压缩为三天的课程,培训讲师都是来自一线的开发人员,其中一位是编译器开发人员,另外一位是什么研究小组的,当时打了个岔,没有听清楚。感觉他们的思路很开阔,知识面很广。
今天主要讲了以下内容:
1. 多核CPU架构以及相关的特性
如果对多核CPU的架构以及特性有一些了解,那么对我们开发系统还是有好处的,我个人还是比较赞同《深入理解计算机系统》一书的观点,只有对计算机系统有足够的了解,才能写出优秀的代码,唉,俺的功力还不够啊。
2. 编译器的优化选项
这是最常用的一种优化手段,通常在debug版本时,编译和链接时都不会添加优化选项,让编译器尽量忠实于代码本身的语义,以便于调试。当发布release版本时,才开始加入优化选项。
3. 优化的方法学
真是人类一思考,上帝就会微笑。只要什么东西都上升到理论高度,从哲学的角度来思考问题,说出来的东西就是不同。都是见之人所见,思之人未思,来一个归纳总结,就成了设计模式以及方法学。
4. 如何从代码级做优化以及优化手段
前不久在为系统做优化时,看了一下《深入理解计算机系统》的第5章,这节的内容主要是针对于单核的系统来做一些代码级的优化,而今天所讲的内容是针对于多核系统的。在实际的开发项目中,很难做这样的优化。为了赶进度,只要系统能运行,不出错,写的很ugly也没有人会管。
不难看出,这些课程都是经过Intel专门精心设计过的。唯一不足的是,今天的实验都是针对于windows平台的,由于我们是在linux下面做开发,不能体验与gcc编译器的差别。
但这并不影响课程的完整性,在课堂上都给出了在linux下相对应的选项。其中有些优化内容,与平台无关,加选项与不加该选项时系统性能有多大的提升空间,让我们有一个感性的认识。