「並列プログラミング用の疑似コードはどのように記述しますか? 特に、ローカル変数と共有変数をどのように区別しますか? 分散、収集、削減、ブロードキャスト、ポイントツーポイント通信などの操作をどのように表現しますか? これに関する標準はありますか?」
ご注意ください元々の質問はここしかし、まだ受け入れられる良い答えはありません。
他の質問を再度詳しく説明し、要約して物事を簡単に保つ: 擬似コードで言う方法はありますか?これらすべてを並行して行う「?」
パッケージ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ジャーナル論文)。