Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
По умолчанию - это без оптимизации. С точки зрения оценки производительности - бесполезные сведения.
Dmitriy40
Re: Зловещие циклы
02.05.2020, 20:24
Код внутреннего цикла (с метки L4) не то чтобы совсем ужасный, но и до хорошего ему ещё пахать и пахать. Из очевидного: - все переменные хранить в регистрах, включая и [rbp-8]; - отказаться от cdqe заменив тип переменных; - отказаться от lea rdx,[0+rax*8] изменив величину инкремента; - векторизовать операции с xmm хотя бы вдвое за счёт ширины регистров (а лучше в 8 раз, развернув цикл вчетверо для учёта латентности операций); - использовать имеющийся AVX и ещё вдвое увеличить параллелизм за счёт ширины регистров. В идеале код внутреннего цикла (с метки L4) без векторизации и разворота цикла должен уложиться в 6-8 команд, 3-4 из которых вычислительные (movsd, movsd (может и отсутствовать), mulsd, addsd), одна условного перехода и остальные скалярные изменения указателей и счётчиков. Причём на скорость выполнения метод обхода массивов (по столбцам или по строкам) влиять не должен (пока массивы целиком помещаются в L1d). Скорость выполнения для массивов 2048 элементов составила 1.7мкс для скалярного цикла без разворота, 0.78мкс с разворотом цикла вчетверо, 0.36мкс с разворотом цикла вчетверо и векторизацией вдвое, 0.24мкс с разворотом цикла вчетверо и векторизацией вчетверо (AVX), 0.5мкс с векторизацией вчетверо (AVX). Это при одном плавающем блоке вычислений, у процессора ТС их два и скорость будет ещё выше.
Andrey_Kireew
Re: Зловещие циклы
02.05.2020, 23:42
Следуя полученным советам, установил полировщик. Перепробовал много всего, пока остановился на Visual Studio 2010 Ultimate. Только его мне удалось приспособить под все свои задачи. Единственный минус - версия старовата. Как нибудь, планирую опробовать MSVC 2012.
В целом, новые возможности радуют. Удобнее, быстрее, да и наверное точнее
Mihaylo
Re: Зловещие циклы
03.05.2020, 08:40
Выложу сюда код, который я подсовываю в https://godbolt.org для просмотра компилированного кода.