2010-09-14 3 views
4

Я собираю некоторый научный код в Fortran 77, и у меня есть дискуссия о том, что будет быстрее.Передать в BLAS или сделать это самостоятельно?

В принципе, у меня есть матрица MxN, назовем ее A. M больше N. Позже в коде мне нужно умножить транспонирование (A) на кучу векторов.

Мой вопрос: было бы быстрее взять A, перенести его самостоятельно и сохранить это, или когда я позвоню BLAS, просто дайте ему флаг транспонирования?

Спасибо! -Patrick

+0

вместо умножения на кучу векторов, можете ли вы объединить эти векторы в матрицу? – Anycorn

+0

Это зависит от ситуации. В основном это алгоритм, который сжимает матрицу. После сжатия вы можете быстро применить его к векторам, и именно здесь A 'умножается. В любом случае, это будет зависеть от того, сколько векторов вам дал пользователь. – Patrick

ответ

6

мое чувство кишки говорит мне использовать флаг транспонирования. в этом случае вы делаете много точечных продуктов с шагом одного.

В действительности, это очень сложно сказать без реально действующих кодов. Современный блас использует методы блокировки кеша, которые в лучшем случае затрудняют простой анализ.

+0

Спасибо! У меня было ощущение, что на этот вопрос не будет прямого ответа. Это не будет слишком сложно проверить, вероятно, зависит от размера A и сколько раз я в конечном итоге умножаю A '... – Patrick

+0

@Patrick, если вы проводите тест, вы можете поместить свои результаты в качестве ответа. – Anycorn

Смежные вопросы