«Как написать псевдокод для параллельного программирования? В частности, как вы различаете локальные и общие переменные? Как вы представляете такие операции, как рассеивание, сбор, сокращение, трансляция и связь точка-точка? Есть ли какие-то стандарты на этот счет?»
Пожалуйста, обрати вниманиепервоначальный вопрос был заданздесьно на него все еще НЕТ приемлемого ответа.
Повторная проработка других вопросов, обобщение и упрощение изложения: есть ли способ сказать в псевдокоде "ДЕЛАЙТЕ ВСЕ ЭТИ ВЕЩИ ПАРАЛЛЕЛЬНО"?
Я использую пакет 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. Ответ и вопрос можно найтиздесь.
Используя стратегию определения ключевых слов для описания вашего алгоритма с теми подробностями, которые вы предпочитаете, это всегда должно быть возможно. Примите во внимание, что:
- подробнее → вы будете ближе к своим языкам программирования.
- меньше деталей → больше его можно рассматривать как псевдокод.
Заключение: это всегда вопрос компромиссов: вы сами решаете, где находится предел (принимая во внимание целевую аудиторию, на которую вы ссылаетесь).
Та же стратегия использовалась в журнальных статьях (например, см. Алгоритм 3 и 4эта статья журнала IEEE).