умножение на матрици за интегрални типове с помощта на BLAS

Има ли еквивалент на dgemm (от BLAS) за интегрални типове? Знам само за dgemm, sgemm за матрици с двойна точност / единична точност, но бих искал да го имам за матрици, които са от интегрален тип като int (или short int...).

Забележка: Не търся решение, което включва преобразуване в float/double, и търся бърза реализация на библиотека.

Също така, същия въпрос за dgemms (използвайки алгоритъм на strassen).


person spirov    schedule 02.12.2009    source източник


Отговори (2)


Алгоритмите BLAS не поддържат изначално цели числа.

person Paul    schedule 02.12.2009
comment
Това подозирах, но има ли друга библиотека, която да направи това? Дори наивна реализация на неподписани символи без проверка на препълване е ~10 пъти по-бавна от dgemm, използвайки двойни. Надявам се, че ще има начин за 1) избягване на затрудненията в паметта + времето, свързани с преобразуването към междинни типове с плаваща запетая. - person spirov; 02.12.2009
comment
portal.acm.org/ Това е връзка към някои изследвания, публикувани от acm относно точната линейна алгебра за blas. Можете да попитате авторите как да получите разработените от тях библиотеки. - person Paul; 03.12.2009

Не сте посочили език за програмиране. В C++ бихте могли да се свържете с матрична библиотека като Eigen (отказ от отговорност: Аз съм свързан с този проект). Eigen използва векторизация, така че трябва да е доста бърза - уверете се, че сте разрешили векторизацията - но не съм правил никакви експерименти, така че не съм сигурен. Има някои сложни проблеми с подравняването, които може да са проблем за вас, но аз съм не е запознат с тях.

Този SO въпрос обсъжда различни C++ матрични библиотеки, главно в контекста на компютърната графика.

person Jitse Niesen    schedule 02.12.2009
comment
Но eigen поддържа ли аритметика с целочислена матрица? - person user1271772; 14.09.2019