Имея две матрицы int A и B с более чем 1000 строк и 10K столбцов, мне часто приходится преобразовывать их в матрицы с плавающей точкой, чтобы получить ускорение (4x или более).
Мне интересно, почему это так? Я понимаю, что существует много оптимизаций и векторизации, таких как AVX и т.д., С умножением на флоат-матрицу. Но все же есть инструкции, такие как AVX2, для целых чисел (если я не ошибаюсь). И нельзя ли использовать SSE и AVX для целых чисел?
Почему нет эвристики под библиотеками матричных алгебр, таких как Numpy или Eigen, чтобы захватить это и выполнить умножение целочисленной матрицы быстрее, как float?
О принятом ответе: Хотя ответ @sascha очень информативен и уместен, ответ @chatz является фактической причиной того, что int путем умножения int медленнее, независимо от того, существуют ли операции целочисленной матрицы BLAS.