Быстрое управление изображениями с использованием инструкций SSE?
-
05-07-2019 - |
Вопрос
Я пишу графическую библиотеку на C, и я хотел бы использовать инструкции SSE для ускорения некоторых функций.Как бы я это сделал на твоем месте?Я использую компилятор GCC, поэтому могу полагаться на встроенные функции компилятора.Я также хотел бы знать, должен ли я изменить способ хранения данных изображения (в настоящее время я просто использую массив с плавающей точкой) - нужно ли мне использовать массив типа float __attribute__ ((vector_size (16)))
?
Редактировать:тип манипулирования / обработки изображений, который меня интересует, включает аффинные преобразования, геометрию и фильтрацию в частотной области (анализ Фурье)
Буду очень признателен за любые ссылки или советы о том, как мне следует использовать SSE для обработки изображений на C.
Спасибо
Решение
Я работал над некоторой обработкой изображений с помощью SSE на Microsoft Visual C ++.Я обнаружил, что проще всего выровнять все данные изображения (в Visual C ++ это делается с помощью _aligned_malloc и _aligned_free) с самого начала.Однако выравнивание - это настоящая проблема, вот почему я использовал SSE только для арифметических операций (сложение, вычитание, точечное произведение и тому подобное).Если мне приходилось делать более сложные вещи, я обычно просто использовал указатели.