“如何为并行编程编写伪代码?特别是,如何区分局部变量和共享变量?如何表示分散、聚集、减少、广播和点对点通信等操作?是否有一些相关标准?”
请注意最初的问题是这里但仍然没有一个好的、可以接受的答案。
重新阐述其他问题,总结并保持事情简单:有没有用伪代码表达“同时做所有这些事情“?
algorithm2e
我正在使用带有的包TeXStudio
。如何使用它们排版并行代码?
答案1
经过一些网络研究,我意识到一种“标准”仍然不存在。因此,这是我的个人解决方案algorithm2e
:
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
...
\begin{algorithm}
\DontPrintSemicolon
\SetKwBlock{DoParallel}{do in parallel}{end}
\KwIn{Some inputs}
\KwOut{The ouput}
\DoParallel{
Compute a \;
Compute b \;
Compute c \;
}
\DoParallel{
a1\;
b1\;
c1\;
}
\Return{the solution}\;
\caption{Parallel Algo}
\label{algo:parallelAlgorithm}
\end{algorithm}
结果是:
它基于使用表达式定义新命令\SetKwBlock
。包的手册可以在这里找到这里。此外,我刚刚在 StackOverflow 上为类似的问题添加了几乎相同的解决方案。答案和问题可以在这里。
使用定义关键字的策略来用你喜欢的细节描述你的算法,这应该总是可行的。考虑到:
- 更多细节→您将更加接近您的编程语言。
- 更少的细节→更多地它可以被看作是伪代码。
结论:这始终是一个权衡的问题:你决定极限在哪里(考虑到你所指的目标人群)。
期刊论文中也使用了同样的策略(例如,参见这篇 IEEE 期刊论文)。