小谈:并行程序设计必要知识和并行程序的应用
小谈多线程编程必须要学习的一系列知识
紧迫性
按照Intel技术官的话,“今后的处理器发展是内部优化与集成多核而不是单纯的提升处理器的频率,采用多线程的软件也将会是今后软件的主流。但是,目前大多数程序员都没有受过开发并行程序软件的培训......"
我们不得不面对的:今后,要让软件性能最优化,就必须充分发挥多核处理器的优势。如何协调多个处理器共同完成一个任务,是优化软件过程中的最重要的问题。
并行程序设计所需知识
1.图论,计算机专业(硕士)的必修课程,讲的是多个事物(任务)之间的相互关系,是并行程序设计的基础知识。只有很好的从数学的角度去考虑各个任务的分配,规划,才可能将软件性能优化到最优。
2.多线程编程的知识和操作。不仅要熟悉一般的线程操作,更要掌握线程之间的通信与同步。
3.库:OpenMP,主要作用是协调处理器之间的通信。这是一个非常流行的库,现在很多的编译器都支持OpenMP。
由于开发并行软件需要大量的时间,并且大幅提升软件的复杂度,降低其可靠性,我认为现有的一般信息管理软件,单核处理已经足够,并不需要采用并行程序进行优化,或者说简单的优化就可以了。
真正需要用到多核的地方,是涉及大量运算的地方,比如数字图像处理,视频处理,3D设计软件,3D游戏,还有数据库,电子设计软件的仿真模拟等。
以上是我近期学习的一些心得体会,不足之处还请指教。