Треки
/
C++
C++
/
Вправи
/
Паралельний підрахунок частоти літер
Паралельний підрахунок частоти літер

Паралельний підрахунок частоти літер

Середня

Вказівки

Порахуйте частоту літер у текстах за допомогою паралельних обчислень.

Паралелізм полягає в тому, щоб виконувати паралельно те, що також можна виконати послідовно. Поширений приклад - підрахунок частоти літер. Застосуйте паралелізм, щоб обчислити загальну частоту кожної літери в масиві текстів.

Додаткові нотатки для реалізації мовою C++

Існує кілька способів досягти паралелізму в C++. Онлайн-виконавець Exercism підтримує C++17, тож можна скористатися політиками виконання з бібліотеки алгоритмів. Ще один варіант - керувати потоками вручну. Однак зауважмо: створення потоку коштує досить дорого (тут допомогло б використання пулу потоків).

Працюючи локально, можна, звісно, використовувати будь-що. Однак рішення, яке використовує нестандартні бібліотеки, найімовірніше, не працюватиме з онлайн-виконавцем Exercism.

Бенчмарк

Працюючи локально, можна за бажанням запустити бенчмарк, щоб оцінити прискорення різних реалізацій. Увімкнення прапорця CMake EXERCISM_INCLUDE_BENCHMARK активує бенчмарк:

cmake -DEXERCISM_RUN_ALL_TESTS=1 -DEXERCISM_INCLUDE_BENCHMARK=1 .

Підтримка паралельних алгоритмів компіляторами

Реалізація стандартної бібліотеки C++ у GCC (libstdc++) спирається на TBB. Якщо TBB недоступна, використовується послідовна версія, навіть коли запитано паралельне виконання.

В Ubuntu потрібно встановити пакет libtbb-dev:

apt-get install libtbb-dev

На macOS можна скористатися Homebrew, щоб встановити TBB:

brew install tbb

Clang libc++ починаючи з версії 17 має експериментальну часткову підтримку паралельних алгоритмів. Щоб її увімкнути, потрібно вказати прапорець компілятора -fexperimental-library.

Apple Clang 15 і раніші версії не підтримують паралельних алгоритмів.

На Linux і macOS радимо для цієї вправи використовувати GCC (разом із типовим libstdc++).

MSVC від Microsoft підтримує паралельні алгоритми щонайменше від VS 2017 15.7, без потреби встановлювати додаткові бібліотеки.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
C++ Exercism

Час розпочати Паралельний підрахунок частоти літер?

Зареєструйтеся на Exercism, щоб вивчати й опановувати C++, а також 19 концепцій100 вправ та справжнє наставництво від людей, і все це безкоштовно.

Глибоке занурення у Паралельний підрахунок частоти літер!

Ми дослідимо різницю між конкурентністю і паралелізмом, розглянувши різні підходи, які застосовують такі мови, як JavaScript, Go, Elixir і Rust.