2009-08-01 126 views
3

“并行软件”的含义是什么,“并行软件”和“普通软件”有什么区别?并行软件?

它有什么优点和缺点?

编写“并行软件”是否需要特定的硬件或编程语言?

回答

0

http://en.wikipedia.org/wiki/Thread_(computer_science)

在计算机科学,从一个 计算机程序的叉 执行结果为两个或更多 同时运行任务的线程。 执行线程和 进程不同于运行 系统到另一个进程,但在大多数情况下, 线程包含在 进程中。 多个线程可以在同一进程内共享 资源和内存等,而 不同进程不共享这些资源。

大多数现代编程语言都以各种方式支持多线程(甚至是最新版本的Javascript)。 :-)

优点和缺点可以取决于任务。如果你需要做很多处理,那么多线程可以帮助你把它分解成更小的工作单元,每个CPU可以同时独立工作。但是,多线程代码的编写和维护通常比单线程代码更复杂。

您仍然可以在只有一个处理器的机器上编写/运行多线程代码。尽管只有一个处理器来执行这些任务,但操作系统将通过快速切换上下文并一次为每个线程执行一些指令来确保它们同时发生。

您可能熟悉的并行任务的一些专用硬件是可在大多数新计算机上找到的GPU。在这段视频中,流言终结者展示出一种单线程CPU上绘制之间的差异,以及多线程GPU:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded

+0

并行性!=并发性。当使用并发时,单核上的性能不会有任何提高(并发可能包括并行性,但并不总是) – Wes 2012-03-18 20:39:50

0

并行软件可以本机利用计算机上的多个内核/ cpus或有时跨多台计算机。例子包括图形渲染软件和电路设计软件。

对于多处理器感知软件以外的其他缺点并不确定是否会导致CPU浪费。

2

是“并行软件”需要一个特定的硬件或编程语言?

是和是。

第一个很简单。大多数现代CPU(比m6800更新)具有硬件功能,可以一次执行多个任务,但不一定同时执行两个任务。例如,当定时器中断关闭时,CPU可以保存它正在做的事情,然后开始做其他事情。这些任务同时运行。即使没有这些,你也可以让两台机器之间进行某种连接(比如通过一个空调制解调器适配器进行简单的串行连接),并且它们都可以并行工作在同一个任务上。

大多数新型CPU(不仅仅是现代但最新)的CPU都具有内置的并行计算资源。这些多核CPU实际上可以同时处理两个或多个任务,每个核心有一个任务,并且具有特殊功能使这些任务合作更有效率。

第二个需要特殊的软件工具,如并行语言,在某些方面是并行计算最难的部分。如果您是厨房中唯一的人,那么从一开始到下一个接一个的烹饪方法,直到所有的菜都煮熟为止,做饭时很容易。如果你想通过增加更多的厨师来加快速度,你必须小心一点,不要踩在彼此的脚趾上。

处理这种最简单的方法是使用一个线程库,它提供了一些工具,以便多个任务可以安排不会互相打开。这并不像标记程序那么简单,系统负责处理其余部分,相反,您必须编写每个任务,以便在每个可能会干扰其他任务的地方与任何其他任务进行通信。