LINUX.ORG.RU

История изменений

Исправление 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 закгрузки и выгрузки данных, а это порой целое искусство и чтобы это делать более менее толково, нужно очень хорошо знать архитектуру платформы и сидеть с жирными профилировщиками типо оного от интел.

Поэтому кратко - забейте, просто научитесь заставлять компилятор делать векторизацию за вас. Ускорение он вам даст достаточное, а вот временем и переносимостью жертвовать не придётся