小谈:并行程序设计必要知识和并行程序的应用
小谈多线程编程必须要学习的一系列知识
紧迫性
按照Intel技术官的话,“今后的处理器发展是内部优化与集成多核而不是单纯的提升处理器的频率,采用多线程的软件也将会是今后软件的主流。但是,目前大多数程序员都没有受过开发并行程序软件的培训......"
我们不得不面对的:今后,要让软件性能最优化,就必须充分发挥多核处理器的优势。如何协调多个处理器共同完成一个任务,是优化软件过程中的最重要的问题。
并行程序设计所需知识
1.图论,计算机专业(硕士)的必修课程,讲的是多个事物(任务)之间的相互关系,是并行程序设计的基础知识。只有很好的从数学的角度去考虑各个任务的分配,规划,才可能将软件性能优化到最优。
2.多线程编程的知识和操作。不仅要熟悉一般的线程操作,更要掌握线程之间的通信与同步。
3.库:OpenMP,主要作用是协调处理器之间的通信。这是一个非常流行的库,现在很多的编译器都支持OpenMP。
由于开发并行软件需要大量的时间,并且大幅提升软件的复杂度,降低其可靠性,我认为现有的一般信息管理软件,单核处理已经足够,并不需要采用并行程序进行优化,或者说简单的优化就可以了。
真正需要用到多核的地方,是涉及大量运算的地方,比如数字图像处理,视频处理,3D设计软件,3D游戏,还有数据库,电子设计软件的仿真模拟等。
以上是我近期学习的一些心得体会,不足之处还请指教。
问题点数:200、回复次数:23Top
1 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-08-02 01:34:28 得分 10
顶Top
2 楼leo2003(【健者天行】谁伴我闯荡)回复于 2006-08-02 09:06:13 得分 5
2.多线程编程的知识和操作。不仅要熟悉一般的线程操作,更要掌握线程之间的通信与同步。
在.net里,似乎只要知道这点就可以了吧。
Top
3 楼aceouter(outer)回复于 2006-08-02 09:23:20 得分 10
有个方向就好做了。Top
4 楼sncp_pluto()回复于 2006-08-02 09:32:12 得分 10
OpenMP好像不是库吧,是一个规范。当然里面定义了一些库函数。并且好像是协调线程之间的配合,还没有直接关系到处理器上。Top
5 楼celineshi()回复于 2006-08-02 09:47:57 得分 25
说的不错,相信能够给不太了解多核技术的朋友一些启发,楼主继续Top
6 楼fellowcheng(鹰击长空)回复于 2006-08-02 10:04:11 得分 10
学习下Top
7 楼lishidong(软件开发者)回复于 2006-08-02 14:03:14 得分 0
感谢英特尔 感谢版主
书已经收到 无比激动Top
8 楼lserlohn()回复于 2006-08-03 17:30:11 得分 0
OpenMP好像不是库吧,是一个规范。当然里面定义了一些库函数。并且好像是协调线程之间的配合,还没有直接关系到处理器上。
------------------------------------------
OpenMP是 pragma(编译指示)、API 函数,及环境变量的集合,能够支持以相对较高的级别将线程放入应用中。它确实是协调线程之间的配合,但是这里说的“多线程”的确是分布在多个处理器上执行的。Top
9 楼vividw(vividw)回复于 2006-08-07 22:43:39 得分 10
线程通信 ? 没有必要。。。。
参照pram模型 (parellel random access machine) 处理就好了
也称共享存储器模型。。Top
10 楼lc_mtt(柠檬把大飞猪裤子一脱...被大飞猪投诉了)回复于 2006-08-09 10:56:00 得分 0
多线程不是并行Top
11 楼goldencode()回复于 2006-08-09 13:00:33 得分 20
楼上的说什么?
楼主说的不错.
Top
12 楼wswqwps(孔子曰:打架用砖乎,不宜乱乎,照头乎,乎不死再乎.佛说:胡扯,我佛慈悲,不亦多乎,一砖乎死,减轻痛苦)回复于 2006-08-11 17:18:57 得分 10
楼主不要光说体会,你看了什么书,看到了什么资料,在哪些网上看到哪些资源都分享一下啊!Top
13 楼shuaizhen(object Net)回复于 2006-08-11 19:10:15 得分 10
学习中,个人感受。多核后多线程编程越来越重要了。Top
14 楼theforever(碧海情天)回复于 2006-08-14 18:56:01 得分 10
好
然后多帖些有关的技术文章啊Top
15 楼song_09(song)回复于 2006-08-22 19:16:13 得分 10
恩,有道理!Top
16 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2006-08-25 12:56:51 得分 10
先不管几核心,并发编程先学好再说.Top
17 楼tl0(超级厨师(MSTC.Your Potential,Our Passion))回复于 2006-08-28 14:41:28 得分 10
.net中已经封装好现成的类库了。可以很方便的进行线程同步。Top
18 楼OnlyFor_love(『勾勾手指头 一辈子不分手』)回复于 2006-08-29 08:11:10 得分 0
顶一个 关注Top
19 楼nkwesley(江南丝竹)回复于 2006-08-30 09:07:06 得分 10
好贴Top
20 楼theforever(碧海情天)回复于 2006-09-13 17:38:50 得分 0
体会都易流于空泛,不如详细实用的资料有用
主要来接分Top
21 楼ilvpc()回复于 2006-09-20 15:33:24 得分 10
学习了Top
22 楼RasWin(小刀)回复于 2006-09-20 21:02:04 得分 10
要真正使用好多核,我认为必须可以直接对CPU进行操作;如果只是建立在操作系统上的应用开发,则很难进行并行的算法设计Top
23 楼tokyo3th()回复于 2006-09-22 16:34:16 得分 10
关于多核,还要观察段时间,但是学习本身并不需等待
貌似并行算法在上海是本科要学的说,顶楼主Top




