Я обнаружил программирование с векторизованными типами данных для SIMD-инструкций (с в этом руководстве ). Из того, что я понимаю, вектор имеет фиксированный размер 16 байтов. Эта схема c подробно описывает это и, кажется, отвечает на мой вопрос:
Набор инструкций, включая основные операции c (но также предоставлены еще некоторые подробности c.
Тем не менее, просто из любопытства я хотел бы знать, существует ли способ векторизации «пользовательских данных», и под этим я подразумеваю в основном структуры. Я предполагаю, что если размер структуры находится в пределах 16-байтового диапазона, это возможно, потому что, в конце концов, типы являются только байтовыми размерами, однако набор команд, по-видимому, не позволяет работать непосредственно со структурами, например, для получить поле.
Итак, у меня следующий вопрос: ограничены ли мы простыми стандартными типами C при векторизации и SIMD-операциях? Если нет, как мы будем действовать? Если да, существуют ли методы распараллеливания (кроме многопоточности) для одновременной работы с векторами / массивами структур?