OpenCL, SYCL и матрицы

В данной статье я описываю свой опыт разработки приложений с OpenCL/SYCL.
Вычисления на видеокартах ассоциируются преимущественно с графикой, научными ��ычислениями и с недавних пор с нейросетями. Но чаще всего с графикой.
Тем не менее, графические процессоры обладают свойствами, за счёт которых их очень удобно использовать в задачах, напрямую не связанных с перечисленным выше. И главное из этих свойств – массовый параллелизм.
Самый краткий ввод в гетерогенное программирование: у нас есть две роли — хост и девайс, задача хоста – формировать задачи и отдавать их на девайс, в то время как задача девайса обработать их и вернуть результат. При этом хост и девайс могут быть одним вычислительным устройством (это не обязательно CPU + GPU, так как CPU может отдавать задачи сам себе).















