![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
为什么在mapreduce计算模型之为什么在mapreduce计算模型之外还需要图并行计算模型
1个回答
关注
![](https://wyw-base.cdn.bcebos.com/pc-content/follow.gif)
展开全部
传统的并行计算模型与多线程模型在逻辑上相似,其最大的问题是程序的行为难以控制。为了保证正确的执行结果,需要小心控制共享资源的访问。由此发展出了互斥量、信号量、锁等一系列同步技术,但同时也带来了争抢、饥饿、死锁等问题。
在使用传统并行计算模型编程时,程序员不仅要考虑要做什么(即“what to do”:使用并行模型描述需要解决的问题),还要考虑程序执行的细节(即“how to do”,程序执行中的诸多同步、通信问题)。这使得并行编程变得十分困难。
现有的编程模型,例如MPI、OpenCL、CUDA,只是在较低的层次进行了封装,需要处理的程序执行细节仍然很多。
相比之下,MapReduce不仅包含编程模型,还提供了一个运行时环境,用于执行MapReduce程序。并行程序执行的诸多细节,如分发、合并、同步、监测等功能,均由执行框架负责。使用MapReduce,程序员只需考虑如何使用MapReduce模型描述问题(what),而不必关心程序如何执行(how)。这使得MapReduce易学易用。
咨询记录 · 回答于2024-01-18
为什么在mapreduce计算模型之为什么在mapreduce计算模型之外还需要图并行计算模型
传统的并行计算模型与多线程模型有类似的逻辑。这种编程模型的最大问题是程序的行为难以控制。为了保证正确的执行结果,需要小心控制共享资源的访问。由此发展出了互斥量、信号量、锁等一系列同步技术,但同时也带来了诸如争抢、饥饿、死锁等问题。
在使用传统并行计算模型编程时,程序员不仅要考虑要做什么(即“what to do”:使用并行模型描述需要解决的问题),还要考虑程序执行的细节(即“how to do”,程序执行中的诸多同步、通信问题)。这使得并行编程变得十分困难。现有的编程模型,如MPI、OpenCL、CUDA等,也仅仅在较低的层次进行了封装,仍需处理许多程序执行细节。
相比之下,MapReduce提供了更多便利:不仅包含编程模型,还提供了一个运行时环境,用于执行MapReduce程序。并行程序执行的诸多细节,如分发、合并、同步、监测等,均由执行框架负责处理。使用MapReduce,程序员只需考虑如何使用该模型描述问题(即“what”),而不必关心程序如何执行(即“how”),这使得MapReduce更易于学习和使用。
扩展资料
软件(中国大陆及香港用语,台湾称作软体,英文:software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。
软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。
另也泛指社会结构中的管理系统、思想意识形态、思想政治觉悟、法律法规等等。