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