Intel多核程序设计培训的基本体系

myan myan 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
上周去上海Intel参加了一个多核程序设计的技术培训。一般来说大公司的专项技术培训都经过精心的设计,体系比较完整,知识点覆盖比较全,强调实验和动手环节。Intel这次的多核技术培训也是这样,从线程基础知识到多线程程序设计的方法模型,从OpenMP到VTune工具,体系还是很完整的,试验环节设计得很到位,PPT很用心。当然因为时间毕竟只有两天,所以不可能非常深入。不过总体上我对这个培训的质量是很满意的,毕竟师傅领进门,修行在个人,深入的东西还要靠个人钻研。

跟很多其他的技术不同,多线程程序设计这样的主题是需要专门突击的,光靠一般性的实践解决不了根本问题。很多人可能写多年程序都搞不清楚这个领域,一碰到多线程就发憷,或者自以为OK,其实写出来的代码问题很多。解决的办法就是专门抽出一段时间来研究这个领域的理论、方法和工具,一次性入门,然后在实践中磨砺。培训的目的也就是让人入这个门。自学当然也可以,其实相关的资料和书籍很多,自学难度也不大。不过自学最大的问题是不知道要学些什么,而且进度不容易把握。有的人学得太慢,毕竟业余时间是有限的,所以很快就疲了,知识体系还没有覆盖完整。有的人学得太快,囫囵吞枣,事后忘光光。更多的人不知道知识体系的全貌,所以用力不均衡,在某些点上花了很大的工夫,学得很深,却对另一些重要问题几乎没有涉及,一条腿长一条腿短,实践中还是难免出问题。


虽然Intel的课程内容我不能透露,不过这个课程体系的整体架构,并非秘密。我想在这里公布出来,对于想自学多核程序设计的朋友是有帮助的。起码你应该知道,学习这个主题要覆盖那些点才算完整。

1. 线程和进程的基本知识。这个不必多说。但是要弄清楚多线程与多核的关系。一般来说,想要用好多核的威力,就要写多线程程序,但是多核上的多线程,与单核上的多线程,目的有所差别,因此技术手段也就有所不同。这个要搞清楚。

2. 流行的Threading API。应该说有两个体系,Win32和pthread。一般来说了解一个就可以了。这其中的重点是一系列的同步机制。以Win32来说(我对pthread几乎一无所知),critical section, mutex, semaphore,event各自的应用场合是应该清楚的。更基本的能力是识别哪些变量需要保护,在什么地方需要保护,如何保护对性能的冲击最小。

3. OpenMP。OpenMP是专门针对共享地址空间的平行计算机提供的并行计算库,在Intel C++和Visual C++ 8.0里通过#pragma支持。用OpenMP,可以不必去写诸如CreateThread之类的线程管理代码,多线程程序写起来比较简洁。而且OpenMP提供了很丰富的指令,对于同步共享变量、合理分配负载等任务,都提供了有效的支持,很值得一学。不过因为这个东西用起来很轻松,稍一疏忽就能酿成愚蠢错误,所以肯定是要经常用才能驾驭好的。一开始用它,犯错误是难免的。培训课上有人说,还不如用粗笨的Win32 API来做,起码精神高度紧张,不会犯愚蠢错误,虽然是玩笑,也不无道理。不过长远来讲,OpenMP的优势是明显的。

4. 多线程程序的设计理论和方法。包括任务的合理划分,动态划分的几个基本模型,性能提升方面的理论和测量标准等等。Intel有人总结出一个多线程程序设计的方法学,教你怎样一步步从单线程变成高性能的多线程。课上是没讲的,网上应该能找到一个文档,有兴趣的人可以自己到Intel的网站去搜一搜。

5. 工具的使用。这一部分当然跟Intel自己的软件工具挂钩,主要是VTune/Thread Checker/Thread Profiler三个工具。现在后面两个工具被融入了VTune之中,所以从产品来讲,就只有一个VTune。平心而论,VTune确实是非常好的调优工具,真正要搞产品开发,恐怕离不开这样的工具。任你是多厉害的程序员,写出东西来总要在实践中检验,所以调优工具是不可少的。VTune与Thread Checker/Thread Profiler结合,其意义远远超过了调优工具,对于多核程序开发来说,这种工具的意义实在是太大了。

大致就是这些。
...全文

相关推荐

本科毕业设计-基于深度强化学习的云工作流调度详细文档+全部资料+源码.zip

【资源说明】 本科毕业设计-基于深度强化学习的云工作流调度详细文档+全部资料+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Yuki-^_^

基于深度强化学习的云工作流调度python源码+详细注释+数据+项目说明.zip

基于深度强化学习的云工作流调度python源码+详细注释+数据+项目说明.zip

不会仰游的河马君

基于深度强化学习的原神自动钓鱼AI详细文档+全部资料+源码.zip

【资源说明】 基于深度强化学习的原神自动钓鱼AI详细文档+全部资料+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Yuki-^_^

基于联邦深度强化学习的无人驾驶决策与控制代码详细文档+全部资料+源码.zip

【资源说明】 基于联邦深度强化学习的无人驾驶决策与控制代码详细文档+全部资料+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Yuki-^_^

本科毕业设计 基于python招聘岗位数据爬虫及可视化分析详细文档+全部资料.zip

【资源说明】 本科毕业设计 基于python招聘岗位数据爬虫及可视化分析详细文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

Yuki-^_^
评论 3
收藏 已收藏
分享
返回顶部