Умножение Матриц

11 views
Skip to first unread message

Evgenii Rudnyi

unread,
Jan 1, 2008, 12:30:12 PM1/1/08
to matrixprog...@googlegroups.com
Я поздравляю вас с наступившим Новым Годом!

Тут у меня выдалось немного свободного времени и я написал некоторый текст

http://matrixprogramming.com/MatrixMultiply/

Буду рад услышать ваши комментарии.

Евгений

LG

unread,
Jan 4, 2008, 6:01:41 AM1/4/08
to matrixprogramming_ru
С Новым Годом, Евгений!

Мне понравилась ваша статья.
Было любопытно узнать, что в такой рутинной математической проблеме,
как умножение матриц, фортран практически не имеет преимуществ перед С+
+.
А его недостатки хорошо известны.
Второй вопрос в том, можно ли некоторым усложнением программы еще
ускорить
вычисление произведения матриц без использования библиотек.
Еще меня удивил разброс данных по разным компьютерам. Нельзя ли
детализировать
их характеристики. Если вы с ними давно работаете, то вероятно как то
можете
обяснить разницу в производительности.

Леонид

Evgenii Rudnyi

unread,
Jan 4, 2008, 3:25:57 PM1/4/08
to matrixprog...@googlegroups.com
Добрый вечер,

> Мне понравилась ваша статья.
> Было любопытно узнать, что в такой рутинной математической проблеме,
> как умножение матриц, фортран практически не имеет преимуществ перед С+
> +.

Было бы хорошо сравнить с другими компиляторами. Однако, для больших
матриц это проблема не компилятора, а обмена с памятью. Компилятор это не
оптимизирует.

> Второй вопрос в том, можно ли некоторым усложнением программы еще
> ускорить
> вычисление произведения матриц без использования библиотек.

Надо оптимизировать использование кэш процессора, а для этого
соответствующим образом изменить порядок обмена данных, то есть поменять
алгоритм. Это и делается в оптимизированной DGEMM.

> Еще меня удивил разброс данных по разным компьютерам. Нельзя ли
> детализировать
> их характеристики. Если вы с ними давно работаете, то вероятно как то
> можете
> обяснить разницу в производительности.

На ноутбуке стоит Intel Dual Core T7400, второй компьютер Athlon XP 2000+,
а третий Athlon 64 X2 5000+ (Dual Core). Мои программы используют только
один процессор.

Но дело в процессоре, а в памяти. На самом деле производительность при
умножении матриц размерностью тысяча пропорциональна скорости обмена с
памятью, а при использовании ATLAS - частоте процессора. По-моему, здесь
все логично.

Евгений

P.S. Тут также есть дискуссия на

http://groups.google.com/group/sci.math.num-analysis/topics

см. Matrix Multiplication


Reply all
Reply to author
Forward
0 new messages