2009-12-02 8 views
4

Существует ли эквивалент dgemm (от BLAS) для интегральных типов? Я знаю только о dgemm, sgemm для матриц двойной точности/одиночной точности, но хотел бы иметь его для матриц, которые имеют интегральный тип, такой как int (или short int ...).матричное умножение для интегральных типов с использованием BLAS

Примечание: Я не ищу решение, которое включает преобразование в float/double, и я ищу реализацию быстрой библиотеки.

Также, тот же вопрос для dgemms (с использованием алгоритма strassen).

ответ

2

Алгоритмы BLAS не поддерживают целые типы.

+0

Это то, что я подозревал, но есть ли другая библиотека для этого? Даже наивная реализация на unisgned chars без проверки переполнения ~ 10 раз медленнее, чем dgemm с использованием удвоений. Я надеюсь, что будет один способ: 1) избежать нехватки памяти и времени, участвующих в преобразовании в промежуточные типы с плавающей точкой. – spirov

+1

http://portal.acm.org/citation.cfm?id=1073899&dl=GUIDE&coll=GUIDE&CFID=64924169&CFTOKEN=87018353 Это ссылка на некоторые исследования, опубликованные acm на точной линейной алгебре для blas. Вы можете запросить авторов о том, как получить библиотеки, которые они разработали. – Paul

3

Вы не указали язык программирования. В C++ вы можете взаимодействовать с матричной библиотекой, такой как Eigen (отказ от ответственности: я связан с этим проектом). Eigen использует векторию, поэтому она должна быть довольно быстрой - убедитесь, что вы enable vectorization - но я не делал никаких экспериментов, поэтому я не уверен. Есть некоторые сложные alignment issues, которые могут быть проблемой для вас, но я не знаком с ними.

This SO question обсуждает различные библиотеки матриц C++, в основном в контексте компьютерной графики.