首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行编程是==多线程编程吗?

并行编程是==多线程编程吗?
EN

Stack Overflow用户
提问于 2010-02-18 18:03:25
回答 3查看 11.5K关注 0票数 44

并行编程是==多线程编程吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-18 19:48:31

多线程编程是并行的,但并行编程不一定是多线程的。

除非多线程发生在单个核上,在这种情况下,它只是并发的。

票数 31
EN

Stack Overflow用户

发布于 2010-02-18 18:05:22

不一定。您可以在多个进程甚至多台机器之间分配作业-我不会将其归类为“多线程”编程,因为每个进程可能只使用一个线程,但它肯定是并行编程。无可否认,你可能会争辩说,对于多个进程,系统中作为一个整体有多个线程……

归根结底,像这样的定义只在上下文中有用。在你的特殊情况下,这会有什么不同呢?或者这只是出于兴趣?

票数 28
EN

Stack Overflow用户

发布于 2010-02-18 18:06:54

不是的。多线程编程意味着你只有一个进程,而这个进程会生成一堆线程。所有线程同时运行,但它们都在相同的进程空间下:它们可以访问相同的内存,具有相同的打开文件描述符,等等。

作为一种定义,并行编程有点“泛化”。在MPI中,您可以通过多次运行同一进程来执行并行编程,不同之处在于每个进程都会获得不同的“标识符”,因此,如果您愿意,可以区分每个进程,但这并不是必需的。此外,这些进程彼此独立,它们必须通过管道或网络/unix套接字进行通信。MPI库提供了以同步或异步方式在节点之间来回移动数据的特定函数。

相比之下,OpenMP通过多线程和共享内存实现了并行化。您为编译器指定了特殊指令,它会自动为您执行并行执行。

OpenMP的优点是它非常透明。有循环需要并行化吗?只需添加几个指令,编译器就会将其分成块,并将循环的每一块分配给不同的处理器。不幸的是,您需要一个共享内存架构。具有基于节点的体系结构的群集无法在群集级别使用OpenMP。MPI允许您在基于节点的体系结构上工作,但您必须付出更复杂且不透明的使用的代价。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2287695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档