Улучшают ли умноженные маскированные ФП производительность в AVX512? - PullRequest
0 голосов
/ 18 октября 2018

AVX512 имеет несколько / большинство инструкций с плавающей запятой, доступных в замаскированной форме, где вы можете выбрать, какие результаты будут изменены / обнулены.Действительно ли ЦП используют этот информационный график, в котором говорится, что умножения должны быть выполнены, или это просто устанавливает, какие результаты перезаписываются, а немаскированные вычисляются в любом случае, а затем отбрасываются?

На практике это может быть полезно для обработки дляЭкземпляр:

for (int i=0; i<27; i++) a[i] *= b[i];

27 не делится на 8, поэтому будут некоторые оставшиеся элементы.Можно создать отдельный цикл обработки один за другим.Или используйте AVX, если есть хотя бы 4, а затем обработайте оставшиеся один за другим.Множество возможностей.

Этот специальный цикл хорошо бы векторизовал хороший компилятор, но это всего лишь пример для более сложных случаев, когда я хочу векторизовать вручную, но есть еще неиспользуемые элементы или, например,Я знаю, что некоторые результаты умножения бесполезны.

Редактировать: Проверено экспериментально, и кажется, что маскированные операции на самом деле медленнее.

...