Влияние оборудования на результаты моделирования - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть код моделирования, написанный на C ++ с использованием стандартных библиотек вместе с библиотекой Eigen для линейной алгебры и матриц, и наблюдал следующий эффект:

Если я запускаю его на своем персональном ноутбуке, который является Macbook с OS X, я получаю результаты, отличные от того, что получаю, если я запускаю его на своем офисе P C с Ubutuntu OS

Разница в среднем результате составляет приблизительно 20%.

Я уверен, что это один и тот же код, потому что оба используют обновленную версию одного и того же репозитория.

Код слишком сложен, чтобы предоставить его здесь, и имеет много сложных механизмов внутри.

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

Как мне это интерпретировать? Что мой код ошибочен? Или такие эффекты нормальны?

Заранее спасибо!

Edit1: Я использую qmake, но когда я запускаю команду make, это пример строки для компиляции моего main. cpp на моем Ubuntu P C:

g++ -c -pipe -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_CORE_LIB -I. -ICommon -INetwork -IEigen -I../../../Qt/5.10.0/gcc_64/include -I../../../Qt/5.10.0/gcc_64/include/QtCore -Imocs -I../../../Qt/5.10.0/gcc_64/mkspecs/linux-g++ -o objs/main.o main.cpp

Эта же строка выглядит на моем ноутбуке с OS X следующим образом:

/Library/Developer/CommandLineTools/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11  -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -mmacosx-version-min=10.13 -Wall -Wextra -fPIC -DQT_DEPRECATED_WARNINGS -DQT_CORE_LIB -I. -ICommon -INetwork -IEigen -I../../../opt/Qt5.14/lib/QtCore.framework/Headers -Imocs -I../../../opt/Qt5.14/mkspecs/macx-clang -F/Users/XXX/opt/Qt5.14/lib -o objs/main.o main.cpp

Edit2: У меня есть массив парных чисел, который рассчитывается в автономном режиме с использованием библиотек Eigen. Оффлайн означает здесь, что элементы массива имеют значения c, то есть справочную таблицу. Итак, я сравнил контент на обеих платформах, и (печатный) контент полностью идентичен.

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