Trilhas
/
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

Conte a frequência das letras em textos usando computação paralela.

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

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

Existem várias formas de alcançar paralelismo em C++. O executor online do Exercism oferece suporte a C++17, então você pode usar políticas de execução da biblioteca de algoritmos. Outra opção é gerenciar threads manualmente. No entanto, lembre-se de que criar uma thread é bastante custoso (usar um pool de threads ajudaria).

Ao trabalhar localmente, você pode, é claro, usar o que quiser. No entanto, uma solução que use bibliotecas não padrão provavelmente não vai funcionar com o executor online do Exercism.

Benchmark

Ao trabalhar localmente, você pode, opcionalmente, rodar um benchmark para ter uma ideia do ganho de velocidade de diferentes implementações. Ativar a flag EXERCISM_INCLUDE_BENCHMARK do CMake habilita o benchmark:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

Suporte do compilador a algoritmos paralelos

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

No Ubuntu, você precisa instalar o pacote libtbb-dev:

apt-get install libtbb-dev

No macOS, você pode 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 a algoritmos paralelos. Para ativá-lo, é preciso passar a flag -fexperimental-library para o compilador.

O Apple Clang 15 e versões anteriores não oferecem suporte a algoritmos paralelos.

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

O MSVC da Microsoft oferece suporte a algoritmos paralelos pelo menos desde o VS 2017 15.7, sem precisar instalar nenhuma biblioteca adicional.

Editar via GitHub O link abre em uma nova janela ou aba
C++ Exercism

Tudo pronto para começar Frequência de Letras em Paralelo?

Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.

Mergulho profundo em Frequência de Letras em Paralelo!

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