c语言并行编程是什么?怎么使用(c语言并行运算指令)

网友投稿 400 2022-06-13


在我们使用C语言构建高性能应用时,并行编程是我们经常采用的一种形式,高端台式机一般是多内核, 甚至移动手机也有多核处理芯片. 虽然使每个内核运行变快已经变得很难, 但是添加一个内核却容易得多. 内核更多并不一定意味着程序运行更快, 因为还有很多别的因素会左右计算机的性能. 内核数量只是其中之一, 而软件系统也同样重要. 如果程序不能很好利用多核, 那么它可能跟单核运行时是一样的速度。

编写并行程序有很多方式. 并行程序可以实现同时运行多个操作, 通常被分成如下:

1、SIMD: 单指令多数据. 该模式常用于信号处理, 比如处理数组中的数据. 当两数组相加时, 同一指令将同时用于操作所有的数组元素.

2、MISD: 多指令单数据. 多条指令对同一片数据进行操作. 如, 人口普查数据被用于不同的用途. 同一数据可能被不同的执行线程同时处理, 比如同时计算人口年龄的平均值和中位数.

3、MIMD: 多指令多数据. 最常见的情况, 多指令同时操作多片数据. 串行程序一般是SISD: 程序在任何时刻总是运行一条指令操作一片数据.

虽然说并行程序是为了充分利用计算机的多核处理, 但是并不代表并行程序就不能再单核处理器中运行. 操作系统是运行程序和内核之间的联系层, 并提供一层抽象层, 这样就可以保证程序运行时不需要知道系统内核的数量. 操作系统会为每个程序提供一个短暂时间区间(几毫秒), 此时程序可以在内核中运行并得到一些进展. 之后操作系统会挂起该程序, 然后让下一个程序运行. 通过给每个程序提供短暂的时间区间以取得进展, 操作系统就会给用户产生一种全部程序都在同时运行的错觉.

如果处理器只有一个内核, 那么就只有一个程序可以在指定的时间运行. 这就是多任务处理.


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:c语言数据类型有哪几种?怎么区分
下一篇:Python入门难?这几个python编程例子直接入门(这些Python基础题让你查漏补缺)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~