标价机厂家
免费服务热线

Free service

hotline

010-00000000
标价机厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

云都来了并行计算还远吗

发布时间:2021-01-22 06:29:20 阅读: 来源:标价机厂家

现在硬件设备越来越强大,单单一个线程真的很难有效的利用。而且云计算的流行,更有效地利用云资源成为大势所趋。并行计算带来的对传统编程模式革命,使更有效的挖掘机器资源成为可能。下边就对并行计算做一些介绍:

1. 什么是并行计算?

并行计算的基本思想就是把复杂的工作进行分解, 分解成可以同时进行的多个子任务, 来缩短任务的完成时间,提升系统的吞吐性能。 就如下图所示, A, B, C 三个子任务同时进行,当然要比三个子任务串行要快的多了。

2.为什么要选择并行计算?

·提升系统的吞吐量

处理单个任务的速度快了,单位时间相应的请求就多了,当然吞吐量也就就上去了。

·提升系统的相应速度

系统处理快了, 就不会有太多的堵塞线程, 这样系统就有富余的资源来响应新的请求。

·更大的挖掘出单个机器的性能

单线程独占模式下的程序需要等待一个任务完成, 才会启动另一个任务,如果一个任务在进行大量的I\O操作,其他任务也没有办法开始,只能等待。而这时CPU可闲的发慌了,对高主频的CPU闲着不用那  可以极大地犯罪。如果你要把你的服务架到云上,空闲着系统CPU, 那就不单单是犯罪,那可还是在浪费Money呀。所以多线程并发就表现出了很好的资源利用能力, 一个线程在I\O操作,另一个就可  以利用CPU资源。

3.并行子任务的载体

并行任务的载体可分为两类:

·线程: 同时启动启动多个线程, 每个线程负责执行一个或多个任务, 通过线程并行来达到多个子任务的并行处理。当选择这种方式进行并发处理时,并行程序的处理能力非常依赖机器的性能, 尤其是CPU 核的数量。

·进程: 对于多进程并行,现在应用最多的就是基于网络的分布式系统

4.是不是只要并行, 就可以提高系统性能

·提升性能的情况: 合理的把复杂任务进行拆解, 需要考虑拆解后的并行子任务的个数和机器处理核的个数关系, 以及每个子任务处理的时间, 对之上的数据进行平衡处理。提升比较明显的是那种处理的数据量很大,或者要执行的数据处理任务繁重,并且这些任务本身就可以分解为互不相关的子任务时,使用并行计算是合适的。

·降低性能的情况: 如果在一个单核的机器上跑多线程并行的程序,性能的提升是非常有限的,有时可能会降低性能。因为多个线程在争抢一个CPU资源, 并且线程的开启,初始化以及销毁都有不小的性能消耗。但从最近几年的计算机硬件发展来看, 已经开始了多核趋势, 现在随便买个机器都是2核4核, 而主频的提升已经非常缓慢(硬件发展限制)。 所以最近几年并行计算火了起来, 并行可以最大限度的应用计算机资源。

5.并行的问题

·开发复杂性增高:这是一定的了,需要考虑子任务的协调,以及彼此间的通信,而且还要基于机器性能考虑开线程个数

·死锁:有并行,就必然存在死锁的可能

·利用代码覆盖很难测试出系统隐藏的bug

·调试困难:尽管VS2010增加了对多线程调试的支持,但调试还是有一定的难度,常常会看的眼花缭乱。

4.0 Parallel Framework

我们知道微软在.NET 4.0里加入了对并行计算的支持, 引入了一些类库可以让开发人员更快更稳定的编写出并行代码。 下面简单介绍一下.NET 4.0 里对并行计算的支持:

·TPL: 以前开发并行程序, 开发人员通常会直接操作Thread, 并且利用lock机制和信号量机制。这种开发方式使程序变得复杂难懂。 TPL 是把开发人员从对Thread的关注提升到Task级别, 这样开发人员不需要过分关注线程的创建以及同步问题。也不需要手动进行多线程之间的调度, 以及线程数量等的管理, TPL会把一切在底层完成

·Scheduler: 任务调度器, 负责任务的调度\启动\停止\暂停, 它是parallel framework 的核心

·Thread Pool: 4.0对threadPool作了很大的改进,并且和任务调度器进行了集成

·PLINQ: 让查询操作可以并行执行, 目前版本只支持linq to object

·r\reach: 可以非常简单的把for 或foreach 子句里的代码并行起来

总之,多线程并行计算绝对是有美好的前景的!

(责任编辑:蒙遗善)

誓约之剑(仗剑天涯)游戏

水浒群英传

笑狂沙