Logo icon

Ускорение процедуры расчета матрицы GLCM

Разработано для: Amberg Technologies AG, Швейцария, Регенсдорф

Назначение: ускорение процедуры расчёта матрицы смежности уровней серого тона GLCM (Gray-Level Co-Occurrence Matrix)

Наша задача заключалась в том, чтобы ускорить процедуру расчёта матрицы смежности уровней серого тона GLCM (Gray-Level Co-Occurrence Matrix). Профилировка приложения показала, что проблема связана преимущественно с организацией доступа к данным, которые часто не попадали в кэш. Применение оптимизаций, описанных в литературе, не давало ускорения из-за того, что размер наших матриц и битность серого тона были значительно ниже, чем использованные в статьях, поэтому накладные расходы превышали выигрыш, полученный от более последовательного обращения к данным.

Внимательное изучение алгоритма показало, что некоторые циклы можно развернуть и вынести инициализацию, и вместе с выравниванием данных это позволило достичь примерно двукратного ускорения. Оптимизации следующего уровня касались распараллеливания алгоритма на CPU и сокращения количества обращений к выходному массиву при сохранении корректности результатов. Дополнительное ускорение составило 1.8 раза. Анализ результатов показал, что выравнивание массивов, оптимизация работы с памятью и распараллеливание на Intel Core i5 4-го поколения уменьшило Wall Time примерно в 3.3 раза, а CPU Time в 1.6 раза, что является значительным ускорением в достаточно ресурсоёмком приложении заказчика.

 

Спецификация

Заказчик: Amberg Technologies AG, Швейцария, Регенсдорф
Сфера применения: расчет матрицы смежности уровней серого тона GLCM (Gray-Level Co-Occurrence Matrix)
Тип (платформа): Intel® Сore i5
Технологии и алгоритмы: C/C++, CPU parallel programming

оптимизация умножения матриц по алгоритму Штрассена на системах построенных по архитектуре MIC

портирование Caffe на OpenCL