“并行软件”的含义是什么?“并行软件”和“常规软件”有什么区别?
它的优点和缺点是什么?
编写“并行软件”是否需要特定的硬件或编程语言?
答案 0 :(得分:2)
“并行软件”是否需要指定的硬件或编程语言?
是的,是的。
第一个很简单。大多数现代CPU(比m6800更新)具有硬件功能,可以一次完成多项操作,但不一定同时进行。例如,当定时器中断关闭时,CPU可以保存它正在做的事情,然后开始做其他事情。这些任务同时运行。
即使没有它,你也可以让两台机器彼此之间有某种连接(比如通过Null调制解调器适配器的简单串行连接),它们可以并行处理同一个任务。
大多数新的(不仅仅是现代的,但最近的)CPU都内置了并行计算资源。这些多核CPU实际上可以同时处理两个或更多任务,每个核心一个任务,并具有特殊功能这些任务合作更有效率。
第二个需要特殊软件工具(如并行启用语言),在某些方面是并行计算中最难的部分。如果你是厨房里唯一的人,那就很容易做饭,从开始到结束,一个接一个地跟着每个食谱,直到所有菜都煮熟。如果你想通过增加更多的厨师加快速度,你必须要小心谨慎,不要踩到对方的脚趾。
处理这个问题最简单的方法是使用一个提供一些工具的线程库,这样多个任务可以安排不互相破坏。这并不像将程序标记为并行那样容易,系统负责其余部分,而是必须编写每个任务,以便在可能存在干扰的每个地方与其他任务进行通信。
答案 1 :(得分:0)
除了多处理器感知软件之外,其他缺点往往不太确定是CPU占用的。
答案 2 :(得分:0)
http://en.wikipedia.org/wiki/Thread_(computer_science)
在计算机科学中,一个主题 执行结果来自一个分支 计算机程序分为两个或更多 同时运行任务。该 线程的实现和 流程与一个流程不同 系统到另一个,但在大多数情况下, 一个线程包含在一个 处理。可以存在多个线程 在同一过程中共享 内存等资源 不同的流程不共享这些 资源。
大多数现代编程语言都支持以某种方式进行多线程处理(即使是最新版本的Javascript)。 : - )
优点和缺点可能取决于任务。如果您需要进行大量处理,那么多线程可以帮助您将其分解为每个CPU可以同时独立工作的较小工作单元。但是,多线程代码的编写和维护通常比单线程代码更复杂。
您仍然可以在只有一个处理器的计算机上编写/运行多线程代码。虽然只有一个处理器来执行任务,但操作系统将通过快速切换上下文并一次为每个线程执行一些指令来确保它们同时发生。
您可能熟悉的一些专门用于并行任务的硬件是可以在大多数新计算机上找到的GPU。在这个视频中,流言终结者展示了绘制单线程CPU和多线程GPU之间的区别:
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded