编写并行编程的伪代码

编写并行编程的伪代码

“如何为并行编程编写伪代码?特别是,如何区分局部变量和共享变量?如何表示分散、聚集、减少、广播和点对点通信等操作?是否有一些相关标准?”

请注意最初的问题是这里但仍然没有一个好的、可以接受的答案。

重新阐述其他问题,总结并保持事情简单:有没有用伪代码表达“同时做所有这些事情“?

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 上为类似的问题添加了几乎相同的解决方案。答案和问题可以在这里

使用定义关键字的策略来用你喜欢的细节描述你的算法,这应该总是可行的。考虑到:

  1. 更多细节→您将更加接近您的编程语言。
  2. 更少的细节→更多地它可以被看作是伪代码。

结论:这始终是一个权衡的问题:你决定极限在哪里(考虑到你所指的目标人群)。

期刊论文中也使用了同样的策略(例如,参见这篇 IEEE 期刊论文)。

相关内容