多核多线程技术编程

 

几年之前,CPU的性能还主要取决于CPU的主频,经过超摩尔定律的发展后,没过多长时间CPU的主频速度就已接近“极限”,使得单单靠提高CPU的主频来提升性能变得非常困难。
    目前,Intel、AMD等CPU生产商都转而采用了多核技术来提升CPU性能,甚至提出了群核CPU的概念。这意味着,要充分发挥多核CPU的性能,程序就必须采用多线程并发计算的方式,传统的串行程序将会极大地浪费多核CPU的运算能力!

C++是上世纪80年代诞生的语言,它的前身是同样风靡全球的C语言。一直以来它都以代码效率卓越著称,进入多核时代后,因为C++标准库没有提供多线程支持,要用C++开发出充分利用多核CPU的程序将面临很大挑战。
    于是,在C++社区出现了不少优秀的库以支持并行编程,如各种跨平台的线程库,OpenMP,Clik++等。另一方面,微软也从Win2K开始不断地加入线程池API(如QueueUserWorkItem),C++09标准也明确地表示要加入多线程的支持。

使用线程库编写并行程序的优点是可以精确调度各个线程,并且可以在所有C++编译器里使用。不过要充分发挥多核CPU的性能,还要考虑很多因素,主要难点有:

·         死锁    编写多线程必然会遇到同步问题,如果同步控制出现问题,就可能出现死锁或脏数据。

·         线程之间通信    使用何种机制在多个线程之间通信?即要保证通信数据同步又要保证效率。

·         负载平衡    分配到每个线程的工作量要尽量平衡,避免一个线程忙一个线程闲的情形发生。

·         资源匹配    程序应该使用多少个线程?过少的线程不能充分利用CPU的多核优势,而过多的线程会造成线程调度过于频繁同样会降低效率。

 

为了使大学生或软件开发人员在面对多核体系结构,以及需要多线程编程时有一本好的参考手册,同时为高等学校计算机专业的师生进行多核多线程程序教学时提供一本有价值的参考书,英特尔软件学院联合大学教师编纂了这本《英特尔多核/多线程技术》。以下是该书的提纲供您参考,我们将陆续提供此书各个章节的下载。

原文阅览地址:http://software.intel.com/zh-cn/articles/32067

intel 多核程序设计PPT地址:http://wenku.baidu.com/view/8ac56c86ec3a87c24028c4ce.html

openMP的例子:http://www.techpot.net/archives/48939

 

  • 请参考书籍《多核程序设计技术》,了解更多关于多线程设计的理念
  • 请参考书籍《软件优化技术》,了解更多关于软件优化的技术
  • 请参考书籍《UNIX编程艺术》, 了解更多关于软件架构方面的知识
  • 参考文章《CPU Affinity》,了解更多关于CPU亲和力的信息
  • 参考文章《管理处理器的亲和性(affinity)》,了解更多关于CPU亲和力的信息

 

你可能感兴趣的:(多线程,技术,多核,处理器)