首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计并行体系结构的工作流

设计并行体系结构的工作流
EN

Software Engineering用户
提问于 2018-12-21 20:45:02
回答 2查看 115关注 0票数 0

我最近对并行计算很感兴趣,我只是想看看是否有某种标准或工作流来设计并行架构。

特别是,我对以下问题的答案感兴趣:如果您需要编写您知道将被并行化的代码,那么最好先编写串行代码并确保其正确实现,然后将其并行化,还是应该从一开始就编写并行化?我想这可能是特定的应用程序?例如,一些用串行方式编写的代码可能需要进行显着修改才能被并行化?

我只是在寻找一个通用的工作流,以便进入正确的设计并行软件的思维模式。

EN

回答 2

Software Engineering用户

发布于 2018-12-21 22:21:14

我想这可能是特定的应用程序?例如,一些用串行方式编写的代码可能需要进行显着修改才能被并行化?

这个,非常喜欢。

事实上,我想说,从根本上说,从代码的角度来考虑它是一种糟糕的方法。您必须首先从数据的角度考虑并行体系结构:

  • 输入的数据是什么?
  • 中间结果是什么?
  • 最终的结果是什么?
  • 其中哪些需要在并行实例之间共享?
  • 哪些数据必然是可变的?
  • 在哪里需要并行实例来协调(基本上相当于对共享的可变状态数据的读写访问)?

因为并行执行代码很简单。让它变得困难的是访问数据(如果你把它搞砸了,会导致比赛条件或糟糕的性能)。

看看任何一个著名的并行架构的例子,以及它是如何回答这些问题的,应该可以认识到,这些答案告诉了你关于这个体系结构的非常基本的事实。

票数 6
EN

Software Engineering用户

发布于 2018-12-21 21:59:51

通常,您需要依次编写代码,然后在性能不够好的情况下添加对线程的支持。这也确保了代码是正确的,因为如果它不能在一个线程上正确工作,那么它就不会在多个线程上工作。在编写串行代码时,您需要记住,您最终可能会将其并行化。除其他外,这意味着将数据分离为只读或常量数据(可以在最终线程之间共享)和可写数据(每个线程都需要一个副本)。

有时,您会事先知道您需要运行多个线程,然后您可以以这种方式编写它。写入它之后,您应该只在一个线程上运行和调试它。一旦成功,在两个线程上运行它,并验证获得的结果与单个线程运行的结果相同。

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

https://softwareengineering.stackexchange.com/questions/384431

复制
相关文章

相似问题

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