Собственная поддержка векторизации s390x? - PullRequest
0 голосов
/ 13 января 2019

Я попробовал простой пример использования собственных векторных функций на обеих платформах: Intel и s390x. Справка: http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization
На Intel код может компилироваться с векторизацией (по умолчанию -msse2) и генерировать вывод.

На s390x компиляция завершилась с ошибкой: __builtin_s390_vfi was not declared in this scope.

Ошибка: In file included from /usr/include/eigen3/Eigen/Core:385:0, from /usr/include/eigen3/Eigen/Dense:1, from mypgm.cpp:2: /usr/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h: In function âPacket Eigen::internal::pmin(const Packet&, const Packet&) [with Packet = __vector(2) double]â: /usr/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h:567:115: error: â__builtin_s390_vec_minâ matching variant requires z14 or higher template<> EIGEN_STRONG_INLINE Packet2d pmin<Packet2d>(const Packet2d& a, const Packet2d& b) { return vec_min(a, b); } ^ In file included from /usr/include/eigen3/Eigen/Core:220:0, from /usr/include/eigen3/Eigen/Dense:1, from mypgm.cpp:2: /usr/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h: In function âPacket Eigen::internal::pround(const Packet&) [with Packet = Eigen::internal::Packet4f]â: /usr/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h:629:16: error: â__builtin_s390_vfiâ was not declared in this scope res.v4f[0] = vec_round(a.v4f[0]);

Та же проблема наблюдается при сборке TensorFlow с векторизацией на z14 vm.

Я использовал флаги -march = z14 -mzvector на z14 s390x vm.

Eigen поддерживает векторизацию для s390x?

...