-
- Ура! В Jambase поменял умолчание CFLAGS с -O2 на -O0. Заработало
как надо. Nikolay_Po(1 знак., 03.11.2023 23:50, картинка)
- Даже -O1 даёт дефект. - Nikolay_Po(04.11.2023 01:31)
- Увы, не удалось найти ключика, чтобы хотя бы с -O1, не было дефекта
в вычислениях. Смотрел вывод компилятора с ключом -v. Нет изменений
в ключах, разница только в -O0 и -O1. И дефект появляется, начиная
с -O1. Nikolay_Po(343 знак., 04.11.2023 02:49)
- Вот небольшое пояснение: SciFi(1 знак., 04.11.2023 08:39, ссылка)
- Спасибо. Пишут примерно о том, что я сам выяснил с экспериментами. - Nikolay_Po(04.11.2023 14:48)
- Искать косяк. Это может и не связано с math или float. Судя по
графикам наблюдается интересный эфект. Величина пиков и направление
зависит от производной а еще в тех самых местах для разных цветов.
Такое впечатление что, что-то с интерполяцией неладное. Посмотрел в
исходники там есть для этого библиотека xicc. framer(329 знак., 04.11.2023 08:30)
- Ещё, проблема может быть в ошибках указателей или индексов. При
включении LTO, есть предупреждения вроде: Nikolay_Po(147 знак., 04.11.2023 16:17)
- Не понимаю, в чём дело с предупреждениями. При включении
оптимизации, жалуется на доступ функции icmMul3x3() к области
меньшего размера, чем аргумент функции. При этом, оба аргумента при
вызове функции имеют тип double[3][3]. Первый - элемент структуры
по указателю на структуру, второй - просто массив в теле функци
set_view(): Nikolay_Po(465 знак., 04.11.2023 17:59)
- Попробовал собрать у себя. Не видел таких предупреждений в этих
местах. Выхлоп сборки framer(330 знак., 05.11.2023 09:35, ссылка, картинка)
- Спасибо за участие. Попробуйте включить оптимизацию 3 и LTO вместе.
Для проверки, вот пробный файл (из реальных данных, только
количество узлов в сетке снижено для уменьшения размера). Nikolay_Po(2644 знак., 05.11.2023 23:18, ссылка, картинка)
- Удалось получить желаемый результат при оптимизации О2 . Виноваты
флаги framer(163 знак., 06.11.2023 00:16, картинка)
- Спасибо! Попробую копнуть глубже. Если получится, напишу в mailing list ArgyllCMS. - Nikolay_Po(06.11.2023 07:43)
- Удалось получить желаемый результат при оптимизации О2 . Виноваты
флаги framer(163 знак., 06.11.2023 00:16, картинка)
- Оптимизацию -O3 -flto пробовали включать? И для линкера тоже? Nikolay_Po(126 знак., 05.11.2023 22:09)
- Да теже предуреждения. Но тесты также работают. А как получить
картинку, что с косякями? что запустить и с какими параметрами? - framer(05.11.2023 22:37)
- Только что составил инструкцию и приложил файл для теста, см. выше. Nikolay_Po(1 знак., 05.11.2023 23:17, ссылка)
- Да теже предуреждения. Но тесты также работают. А как получить
картинку, что с косякями? что запустить и с какими параметрами? - framer(05.11.2023 22:37)
- Спасибо за участие. Попробуйте включить оптимизацию 3 и LTO вместе.
Для проверки, вот пробный файл (из реальных данных, только
количество узлов в сетке снижено для уменьшения размера). Nikolay_Po(2644 знак., 05.11.2023 23:18, ссылка, картинка)
- Да странно. А что с оптимализацией? в xicc и в icc одинаковая?
Может попробовать в xicc/cam02.c в строке 408 сделать так framer(331 знак., 04.11.2023 23:03)
- Оптимизация одинаковая. В папке каждой библиотеки лежит свой Jamfile, в нём просто копируются общие параметры, заданные переменной из Jambase. Не помогает. Попробовал объявить tm как volatile, всё равно ругается так же. Ошибок в коде не нашёл. Всё довольно прямолинейно, с явной индексацией, без вычисления указателей. Nikolay_Po(147 знак., 04.11.2023 23:36)
- Попробовал собрать у себя. Не видел таких предупреждений в этих
местах. Выхлоп сборки framer(330 знак., 05.11.2023 09:35, ссылка, картинка)
- Не понимаю, в чём дело с предупреждениями. При включении
оптимизации, жалуется на доступ функции icmMul3x3() к области
меньшего размера, чем аргумент функции. При этом, оба аргумента при
вызове функции имеют тип double[3][3]. Первый - элемент структуры
по указателю на структуру, второй - просто массив в теле функци
set_view(): Nikolay_Po(465 знак., 04.11.2023 17:59)
- Спасибо. Да, именно в этой библиотеке, в этих функциях проявляется
проблема. Поищу, как выключить оптимизацию отдельно для части кода.
Но, с другой стороны, именно оптимизация этой части меня интересует
больше всего. Она напрямую влияет на время построения профилей и
большая скорость позволяет мне проверить больше вариантов профилей
при тонкой настройке параметров последних. - Nikolay_Po(04.11.2023 14:47)
- а ты argyllcms сам пересобираешь или тупо линкуеш в проект? - klen(05.11.2023 01:25)
- Расставить скобки в выражениях даже когда они не обязательны. При
оптимизпции выше O0 переупорядочиваются вычисления и где то
теряется разрядность. - 3m_co_cмapтфoнa(04.11.2023 12:15,
)
- Ещё, проблема может быть в ошибках указателей или индексов. При
включении LTO, есть предупреждения вроде: Nikolay_Po(147 знак., 04.11.2023 16:17)
- Вот небольшое пояснение: SciFi(1 знак., 04.11.2023 08:39, ссылка)
- Увы, не удалось найти ключика, чтобы хотя бы с -O1, не было дефекта
в вычислениях. Смотрел вывод компилятора с ключом -v. Нет изменений
в ключах, разница только в -O0 и -O1. И дефект появляется, начиная
с -O1. Nikolay_Po(343 знак., 04.11.2023 02:49)
- Попробовал наоборот, увеличить степень оптимизации до -O3 -
результат точно с таким же дефектом, как и при -O2. Разницы в
выходных данных нет. - Nikolay_Po(04.11.2023 00:02)
- поэксперементируй -fexcess-precision=standard
-fexcess-precision=fast. ключики должны стаять крайними в командной
строке за любыми другими которые могут повлиять на оптимизацию. - klen(04.11.2023 00:19)
- -fexcess-precision=fast не поменяло ситуации. Дефект в точности тот же. Вроде бы, других флагов, кроме того места, где задаю параметры CFLAGS, не добавляется. Наверное, можно проверить, включив вывод диагностики компилятора, чтобы увидеть все флаги. Каким ключиком это лучше сделать? - Nikolay_Po(04.11.2023 00:42)
- -fexcess-precision=standard не поменяло ситуации. Дефект сохраняется. Пробую fast. - Nikolay_Po(04.11.2023 00:35)
- Может это выключить -fschedule-insns (-fno-schedule-insns)? framer(407 знак., 04.11.2023 00:15)
- Выключил обе: -O2 -fno-schedule-insns -fno-schedule-insns2. Не помогло. - Nikolay_Po(04.11.2023 00:30)
- поэксперементируй -fexcess-precision=standard
-fexcess-precision=fast. ключики должны стаять крайними в командной
строке за любыми другими которые могут повлиять на оптимизацию. - klen(04.11.2023 00:19)
- Даже -O1 даёт дефект. - Nikolay_Po(04.11.2023 01:31)
- Нужно ещё понять, как поменять флаги для сборки. Проект собирается при помощи ftjam, в файле Jambase нашёл: Nikolay_Po(417 знак., 03.11.2023 23:27)
- Ура! В Jambase поменял умолчание CFLAGS с -O2 на -O0. Заработало
как надо. Nikolay_Po(1 знак., 03.11.2023 23:50, картинка)