Тут у меня выдалось немного свободного времени и я написал некоторый текст
http://matrixprogramming.com/MatrixMultiply/
Буду рад услышать ваши комментарии.
Евгений
> Мне понравилась ваша статья.
> Было любопытно узнать, что в такой рутинной математической проблеме,
> как умножение матриц, фортран практически не имеет преимуществ перед С+
> +.
Было бы хорошо сравнить с другими компиляторами. Однако, для больших
матриц это проблема не компилятора, а обмена с памятью. Компилятор это не
оптимизирует.
> Второй вопрос в том, можно ли некоторым усложнением программы еще
> ускорить
> вычисление произведения матриц без использования библиотек.
Надо оптимизировать использование кэш процессора, а для этого
соответствующим образом изменить порядок обмена данных, то есть поменять
алгоритм. Это и делается в оптимизированной 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