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