Percursos
/
C++
C++
/
Exercícios
/
Frequência de letras em paralelo
Frequência de letras em paralelo

Frequência de letras em paralelo

Médio

Instruções

Conta a frequência das letras em textos recorrendo a computação paralela.

O paralelismo consiste em fazer em paralelo coisas que também podem ser feitas sequencialmente. Um exemplo comum é contar a frequência de letras. Usa o paralelismo para calcular a frequência total de cada letra numa lista de textos.

Notas adicionais para a implementação em C++

Há várias formas de alcançar paralelismo em C++. O executor online do Exercism suporta C++17, por isso podes usar políticas de execução da biblioteca de algoritmos. Outra opção é gerires as threads manualmente. No entanto, tem em conta que criar uma thread é bastante dispendioso (usar um thread pool ajudaria).

Quando trabalhas localmente, podes, claro, usar o que quiseres. No entanto, é muito provável que uma solução que use bibliotecas não padrão não funcione com o executor online do Exercism.

Benchmark

Quando trabalhas localmente, podes, se quiseres, correr um benchmark para teres uma ideia do ganho de velocidade das diferentes implementações. Ativar a flag do CMake EXERCISM_INCLUDE_BENCHMARK ativa o benchmark:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

Suporte do compilador para algoritmos paralelos

A implementação da biblioteca padrão do C++ (libstdc++) do GCC depende da TBB. Se a TBB não estiver disponível, será usada uma versão sequencial como alternativa, mesmo quando for pedida execução paralela.

No Ubuntu, tens de instalar o pacote libtbb-dev:

apt-get install libtbb-dev

No macOS, podes usar o Homebrew para instalar a TBB:

brew install tbb

O libc++ do Clang, a partir da versão 17, tem suporte experimental e parcial para algoritmos paralelos. Para o ativar, é preciso passar a flag de compilador -fexperimental-library.

O Apple Clang 15 e anteriores não suportam algoritmos paralelos.

No Linux e no macOS, recomendamos usar o GCC (juntamente com o libstdc++ padrão) para este exercício.

O MSVC da Microsoft suporta algoritmos paralelos pelo menos desde o VS 2017 15.7, sem ser preciso instalar nenhuma biblioteca adicional.

Editar via GitHub A ligação abre numa nova janela ou separador
C++ Exercism

Estás pronto para começar Frequência de letras em paralelo?

Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.

Mergulha a fundo em Frequência de letras em paralelo!

Exploramos as diferenças entre concorrência e paralelismo, analisando as diferentes abordagens adotadas por linguagens como JavaScript, Go, Elixir e Rust.