Ошибка использования Ceres вместе с библиотекой с помощью sse / avx - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть шаблонная библиотека, в которой некоторые функции специализируются для типов с плавающей запятой и двойных типов.Эта специализация использует sse / avx, следовательно, эта библиотека имеет флаги компилятора -march=native -mavx2.Когда я пытаюсь использовать некоторую функцию (которая не является специализированной) этой библиотеки, я получаю следующую ошибку времени выполнения от Ceres:

test_ceres: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<double, 4, 0, 32>::plain_array() [T = double, Size = 4, MatrixOrArrayOptions = 0, Alignment = 32]: Assertion `(internal::UIntPtr(array) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.

Мне удалось воспроизвести ошибку с гораздо более простым кодом: здесь .По сути, этот пример работает, когда флаги -mavx2 -march=native удалены, и не работает (выдает предыдущую ошибку), когда они присутствуют (комментарий и раскомментирование из CmakeLists.txt).В этом примере отсутствуют функции, использующие avx / sse, но помните, что в моей библиотеке они есть, поэтому удаление флагов -mavx2 -march=native не вариант.Есть идеи, что делать, чтобы решить эту проблему?Когда я скомпилировал Ceres, я добавил флаг -DCMAKE_CXX_FLAGS="-march=native", как указано в документации .

Чтение веб-страницы , указанной в сообщении об ошибке , не помогло.

Некоторая полезная информация о моей системе:

  • компилятор: clang ++
    • clang версия 6.0.0-1ubuntu2 (теги / RELEASE_600 / final)
    • Цель: x86_64-pc-linux-gnu
    • Модель потока: posix
  • Версия Ceres: 2.0 (на самом деле у меня есть git-репозиторий, и я обновил его через несколько минутназад:)
  • Процессор: процессор Intel® Core ™ TM i7-4770 @ 3,40 ГГц

1 Ответ

0 голосов
/ 29 января 2019

Подумайте об этом в списке рассылки eigen.Это не проблема решения Цереры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...