"Como você escreve pseudocódigo para programação paralela? Especialmente, como você diferencia variáveis locais e compartilhadas? Como você representa operações como dispersão, coleta, redução, transmissão e comunicações ponto a ponto? Existem alguns padrões sobre que?"
Observea pergunta original foi feitaaquimas ainda NÃO tem uma boa resposta aceitável.
Reelaborar outras questões, resumindo e mantendo as coisas fáceis: existe uma maneira de dizer em pseudocódigo "FAÇA TODAS ESTAS COISAS EM PARALELO"?
Estou usando o pacote algorithm2e
com TeXStudio
. Como compor o código paralelo usando-os?
Responder1
Depois de algumas pesquisas na web, percebi que ainda não existe uma espécie de "padrão". Então aqui está minha solução pessoal usando 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}
O resultado é:
Baseia-se na definição de um novo comando usando a expressão \SetKwBlock
. O manual do pacote pode ser encontradoaqui. Além disso, acabei de adicionar quase a mesma solução para uma pergunta semelhante no StackOverflow. A resposta e a pergunta podem ser encontradasaqui.
Usar a estratégia de definir suas palavras-chave para descrever seu algoritmo com os detalhes que você preferir deve ser sempre possível. Leve em consideração que:
- mais detalhes → mais você estará próximo de suas linguagens de programação.
- menos detalhes → mais pode ser visto como um pseudocódigo.
Concluindo: é sempre uma questão de trade-offs: você decide onde está o limite (levando em consideração as pessoas-alvo a quem se refere).
A mesma estratégia tem sido usada em artigos científicos (por exemplo, ver Algoritmo 3 e 4 doeste artigo da revista IEEE).