Метод автоматизації розробки багатопоточної програми мовою C++ на прикладі конвертації зображень у DDS текстури
DOI:
https://doi.org/10.20535/1560-8956.42.2023.279168Ключові слова:
С , стандартна бібліотека С , багатопоточністьАнотація
На сьогоднішній день використання багатопоточності є одним з основних методів оптимізації програмного забезпечення. Не в останню чергу це спричинено тим, що персональні комп’ютери, ноутбуки та навіть смартфони
отримують все потужніше апаратне забезпечення, у тому числі процесори, кількість і потужність ядер яких ще кілька десятиліть назад вважалися абсолютно недосяжними. Під час розробки програмного забезпечення необхідно враховувати, які ресурси наявні у кінцевого користувача, і відповідно використовувати їх для найшвидшого отримання
результату. У даному дослідженні пропонується метод автоматизації розробки багатопоточної програми мовою С++, що дає змогу організувати виконання задач пулом потоків з можливістю задати порядок виконання задач відносно одна одної, за допомогою механізму залежностей. Дослідження ефективності запропонованого методу виконано на прикладі розробки багатопоточної програми конвертації зображень у DDS текстури.
Бібл. 10, іл. 5.
Посилання
NVIDIA CUDA. NVIDIA Documentation Center | NVIDIA Developer. URL: https://docs.nvidia.com/cuda/ (дата звернення: 07.02.2023).
C++ Thread Pool. EDUCBA. URL: https://www.educba.com/c-plus-plusthread-pool/ (дата звернення: 07.02.2023).
C++ Concurrency support library. cppreference.com. URL: https://en.cppreference.com/w/cpp/thread (date of access: 07.02.2023).
C++ Parallel execution. cppreference.com. URL: https://en.cppreference. com/w/cpp/algorithm/execution_policy_tag_t (дата звернення: 07.02.2023).
Modern multithreading and concurrency in C++. Educative. URL: https://www.educative.io/blog/modern-multithreading-and-concurrency-in-cpp (date of access: 07.02.2023).
Boost.Threads. Boost C++ Libraries. URL: https://www.boost.org/doc/libs/1_31_0/libs/thread/doc/overview.html (дата звернення: 07.02.2023).
GitHub - David-Haim/concurrencpp. GitHub. URL: https://github.com/David-Haim/concurrencpp (дата звернення: 07.02.2023).
An Empirical Study on C++ Concurrency Constructs / D. Wu et al. IEEE Xplore. URL: https://ieeexplore.ieee.org/document/7321187 (date of access: 07.02.2023).
Structured Concurrency in C++. ACCU. URL: https://accu.org/journals/overload/30/168/teodorescu/ (дата звернення: 07.02.2023).
Block Compression. Microsoft Learn. URL: https://learn.microsoft.com/en-us/windows/win32/direct3d10/d3d10-graphics-programming-guide-resourcesblock-compression#bc1 (дата звернення: 07.02.2023).
##submission.downloads##
Опубліковано
Номер
Розділ
Ліцензія
Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution License, котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у нашому журналі.
2. Автори мають право укладати самостійні додаткові угоди щодо неексклюзивного розповсюдження роботи у тому вигляді, в якому вона була опублікована нашим журналом (наприклад, розміщувати роботу в електронному сховищі установи або публікувати у складі монографії), за умови збереження посилання на першу публікацію роботи у нашому журналі.
3. Політика журналу дозволяє і заохочує розміщення рукопису роботи авторами в мережі Інтернет (наприклад, на arXiv.org або на особистих веб-сайтах). Причому рукописи статей можуть бути розміщенні у відкритих архівах як до подання рукопису до редакції, так і під час його редакційного опрацювання. Це сприяє виникненню продуктивної наукової дискусії, позитивно позначається на оперативності ознайомлення наукової спільноти з результатами Ваших досліджень і як наслідок на динаміці цитування вже опублікованої у журналі роботи. Детальніше про це: The Effect of Open Access.