170 похожих чатов

Подскажите почему MSVС не может векторизовать данный цикл?

world.system<Weight>("ClearWeight")
.kind<stocks::phases::Update>()
.iter([](flecs::iter it, Weight* weight) {
const std::size_t loop_size = it.count();
//не хочет это векторизовать
for (std::size_t i = 0; i < loop_size; ++i) {
weight[i].weight = 0.0;
}
});

Структура Weight
struct Weight {
double weight = 0;
double max_weight = std::numeric_limits<float>::infinity();
};

При включенном
add_compile_options(/arch:AVX2 /Qvec-report:2)

Пишет код ошибки 1200, что значит:
Цикл содержит зависимости данных, переносимые циклом, которые препятствуют векторизации. Различные итерации цикла препятствуют друг другу, таким образом, что векторизация цикла создаст неправильные ответы, и автовектор не может доказать себе, что такие зависимости данных отсутствуют.

7 ответов

17 просмотров

Возможно не может из-за отсутствия хинта на выравнивание? Из-за того что в памяти оно представлено как [weight, max_weight, weight, ...] (т.е. ему мешает max_weight)?

А что если сохранить weight в локальную переменную?

Александр- Автор вопроса
Alexander Karaev
А что если сохранить weight в локальную переменную...

Типа такого? world.system<Weight>("ClearWeight") .kind<stocks::phases::Update>() .iter([](flecs::iter it, Weight* weight) { const std::size_t loop_size = it.count(); //for(auto i : it) { double w = 0.0; for (std::size_t i = 0; i < loop_size; ++i) { weight[i].weight = w; } }); Без изменений

Александр
Типа такого? world.system<Weight>("ClearWe...

Нет, auto w = weight; и использовать внутри цикла вместо weight

Пессимизирующий компилятор как обычно

Пора уже переходить на SOA :)

Александр- Автор вопроса

Похожие вопросы

Обсуждают сегодня

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта