



AMD hipThreads: теперь C++-потоки можно запускать прямо на видеокарте, ускоряя код до 6×
Говорят, настоящий программист должен уметь писать под GPU. Но каждый раз, когда дело доходит до изучения всех grid/block-семантик, kernel launch и ad-hoc-синхронизации...
Похоже, в AMD это поняли и решили сделать шаг к соединению двух миров. hipThreads – библиотека, которая позволяет переносить многопоточный C++-код с CPU на GPU, меняя std::thread на hip::thread и добавляя пару строк обвязки. Остальное – магия ROCm и persistent-планировщика.
Исходный код уже доступен на GitHub, а подробный разбор с примерами опубликован в официальном блоге AMD.
hipThreads – это C++‑библиотека параллелизма для AMD GPU, которая приносит знакомую потоковую абстракцию в мир видеокарт. Вместо того чтобы осваивать конфигурацию ядер и модель блоков, разработчик просто пишет hip::thread, hip::mutex, hip::lock_guard, hip::condition_variable – совсем как в выражении std::thread. Библиотека заполняет нишу между мощными, но высокоуровневыми инструментами вроде rocThrust и низкоуровневыми примитивами libhipcxx.
С точки зрения архитектуры hipThreads запускает на GPU один долгоживущий поток-менеджер, который ставит в очередь виртуальные потоки и выполняет их совместно. Каждый такой hip::thread может содержать несколько фибр – параллельных исполнительных линий, использующих SIMD‑ширину GPU. Если вы знакомы с AVX‑512, представьте, что теперь у вас не 16, а 32 слота для данных и всё это упаковано в привычный потоковый интерфейс.
Чтобы оценить простоту, достаточно взглянуть на пример SAXPY (одинарной точности α·X + Y), который авторы блога разобрали по шагам. Сначала идёт обычный CPU‑код с std::thread, разбивающий массивы на чанки. Затем – минимальные правки: включаем <hip/thread> вместо <thread>, добавляем управление памятью через thrust::unique_ptr и
Читать на habr.com