这两天参加公司引进的外部课程《Intel多核编程》的培训,邀请的是Intel中国的两位专家,其中一位是《软件调试》的作者张银奎老师,现将基本内容小结如下,以便自己日后回顾。
(1)多核编程基本理念:任务分解,常用方法是给不同的子任务进行编号,然后,将线程各个子任务一一映射;
(2)编译器选项对程序性能优化的意义:一般在release版本中,建议选择-O2选项;
(3)Intel编译器特有编译优化功能:PGO;
(4)在Intel x86性能优化常用方法:自动并行化,自动向量化;
(5)windows多线程编程基本知识回顾,重点介绍了线程同步对象关键区、互斥量、信号量、事件;
(6)关键区Entercritticalsection和Leavecriticalsection之间不要抛异常或return,否则会造成死锁,要求这之间的代码尽可能简单;
(7)信号量一般用于多个线程对象的同步,即线程资源数往往大于1时,如:线程池中控制线程的分配同步,而互斥量和关键区均只用于单个资源的线程同步;
(9)关键区在作线程同步时,不进入到系统内核态,所以,其同步效率较信号量与互斥量要高,而对于某个临界资源数值(如:全局变量)进行加、减操作,则推荐用Interlock的系列函数作同步,性能最高;
(10)OpenMP编程基本知识讲解与练习,初步感觉,OpenMP编程简单易学,功能强大;
(11)Intel的性能优化工具VTune使用练习;
(12)Intel的线程检查工具thread chcker讲解与练习;