Очень вероятно, потому что векторизация означает, что у вас могут быть разные результаты, или может означать, что вы пропускаете сигналы / исключения с плавающей запятой.
Если вы компилируете для 32-битной x86, тогда gcc и g ++ по умолчанию используют x87 для математики с плавающей запятой, в 64-битной - по умолчанию sse, однако x87 может и будет выдавать разные значения для одного и того же вычисления, поэтому это маловероятно g ++ рассмотрит векторизацию, если не сможет гарантировать, что вы получите те же результаты, если вы не используете -ffast-math или некоторые из включенных флагов.
В основном все сводится к среде с плавающей запятой для векторизованного кода, который может отличаться от среды для векторизованного кода, иногда важными способами, если различия не имеют значения для вас, что-то вроде
-fno-math-errno -fno-trapping-math -fno-signaling-nans -fno-rounding-math
, но сначала посмотрите эти параметры и убедитесь, что они не повлияют на правильность вашей программы. -ffinite-math-only
может также помочь