История изменений
Исправление AKonia, (текущая версия) :
ИМХО сейчас компиляторы(gcc8+, clang) шикарно такое векторизуют сами, я бы рекомендовал попрактиковать их оптимизации, код придётся возможно лучть подадаптировать и заспать прагмами, например можно взять прагму из OpenMP #pragma omp simd
или похожие, как результат вы получите ускоренный код и не придётся переписывать под каждую платформу, минус такого подхода в следующем: не очень высокое качество векторизации под ARM и всё-таки не идеальная оптимизация, но она касается не непосредственно векторизованных вычислений, с этим как раз всё ок, а с тем что на современном x86-64 в случае малых матриц важна оптимизация не только по векторизации а по load/store загрузки и выгрузки данных, а это порой целое искусство и чтобы это делать более менее толково, нужно очень хорошо знать архитектуру платформы и сидеть с жирными профилировщиками типо оного от интел.
Поэтому кратко - забейте, просто научитесь заставлять компилятор делать векторизацию за вас. Ускорение он вам даст достаточное, а вот временем и переносимостью жертвовать не придётся
Либо сразу возьмите glm или Eigen, это ускорит разработку и к тому же под капотом обеих библиотек уже есть все оптимизации и к тому же они более менее переносимы
Исходная версия AKonia, :
ИМХО сейчас компиляторы(gcc8+, clang) шикарно такое векторизуют сами, я бы рекомендовал попрактиковать их оптимизации, код придётся возможно лучть подадаптировать и заспать прагмами, например можно взять прагму из OpenMP #pragma omp simd
или похожие, как результат вы получите ускоренный код и не придётся переписывать под каждую платформу, минус такого подхода в следующем: не очень высокое качество векторизации под ARM и всё-таки не идеальная оптимизация, но она касается не непосредственно векторизованных вычислений, с этим как раз всё ок, а с тем что на современном x86-64 в случае малых матриц важна оптимизация не только по векторизации а по load/store закгрузки и выгрузки данных, а это порой целое искусство и чтобы это делать более менее толково, нужно очень хорошо знать архитектуру платформы и сидеть с жирными профилировщиками типо оного от интел.
Поэтому кратко - забейте, просто научитесь заставлять компилятор делать векторизацию за вас. Ускорение он вам даст достаточное, а вот временем и переносимостью жертвовать не придётся