У меня есть небольшой минимальный алгоритм выборки (пожалуйста, игнорируйте, если сам алгоритм не имеет смысла и может быть изменен, чтобы быть другим, это просто надуманная образец, чтобы продемонстрировать то, что я вижу).
Когда я составляю его в любом недавнем GCC с соответствующими флагами, он не является автоеккторизацией (https://godbolt.org/z/kvhkp9bse).
Если я добавлю какие -либо из:
-fvect-cost-model=dynamic -fvect-cost-model = cheap -fvect-cost-model = очень дешевый -fvect-cost-model = Unlimited
Тогда это делает векторизацию, но это не имеет смысла для меня, потому что -fvect-cost-model = dynamic -это значение по умолчанию, которое уже следует подразумеваться, поэтому я не понимаю, почему настройки, которые что-то изменит . < /p>
Почему этот аутография без этого флага и почему этот флаг меняет? Пожалуйста, помогите мне понять!-std=c++20 -O3 -fopt-info-all-vec -ffast-math -march=core-avx2
< /code>
Алгоритм: < /p>
void foo(const size_t n, float * __restrict__ a, float * __restrict__ b, float * __restrict__ c)
{
float total=0.0f;
float sum=0.0f;
float max=0.0f;
size_t count=0;
for (size_t i = 0; i < n; ++i) {
float temp = *b;
const bool not_zero = temp != 0.0;
if (i % 4 == 0) {
sum += *b * not_zero;
count += not_zero;
}
max = std::max(temp, max);
*b = temp * *c;
total += *b;
*a *= *b;
a += 1;
b += 1;
c += 1;
}
std::cout
Подробнее здесь: https://stackoverflow.com/questions/794 ... y-of-the-p
Почему GCC не является аутографизированием этого кода, если я не указал какую -либо из возможных моделей затрат? ⇐ C++
Программы на C++. Форум разработчиков
1738420056
Anonymous
У меня есть небольшой минимальный алгоритм выборки (пожалуйста, игнорируйте, если сам алгоритм не имеет смысла и может быть изменен, чтобы быть другим, это просто надуманная образец, чтобы продемонстрировать то, что я вижу).
Когда я составляю его в любом недавнем GCC с соответствующими флагами, он не является автоеккторизацией (https://godbolt.org/z/kvhkp9bse).
Если я добавлю какие -либо из:
-fvect-cost-model=dynamic -fvect-cost-model = cheap -fvect-cost-model = очень дешевый -fvect-cost-model = Unlimited
Тогда это делает векторизацию, но это не имеет смысла для меня, потому что -fvect-cost-model = dynamic -это значение по умолчанию, которое уже следует подразумеваться, поэтому я не понимаю, почему настройки, которые что-то изменит . < /p>
Почему этот аутография без этого флага и почему этот флаг меняет? Пожалуйста, помогите мне понять!-std=c++20 -O3 -fopt-info-all-vec -ffast-math -march=core-avx2
< /code>
Алгоритм: < /p>
void foo(const size_t n, float * __restrict__ a, float * __restrict__ b, float * __restrict__ c)
{
float total=0.0f;
float sum=0.0f;
float max=0.0f;
size_t count=0;
for (size_t i = 0; i < n; ++i) {
float temp = *b;
const bool not_zero = temp != 0.0;
if (i % 4 == 0) {
sum += *b * not_zero;
count += not_zero;
}
max = std::max(temp, max);
*b = temp * *c;
total += *b;
*a *= *b;
a += 1;
b += 1;
c += 1;
}
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79404988/why-is-gcc-not-autovectorising-this-code-unless-i-expicitly-specify-any-of-the-p[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия