2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 По поводу алгоритма Штрассена быстрого умножения матриц
Сообщение11.01.2008, 11:09 


05/08/07

194
В 1969 году Штрассен опубликовал, а затем Виноград косметически подкорректировал алгоритм быстрого умножения м-ц. Вот что по этому поводу пишет Дж. Деммель: "Недостатками данного метода являются большие затраты памяти и несколько худшая численная устойчивость". Возможно ли бороться с эти недостатками (см. ответ на моей странице в интернете, посвященной Core 2 Duo под IA32)?

 Профиль  
                  
 
 По поводу алгоритмов умножения матриц
Сообщение18.03.2008, 13:26 


05/08/07

194
На первый взгляд, элементарная, но очень важная для многих приложений задача умножения матриц, получила дальнейшее развитие в пакете Inel MKL.16 февраля сего года в последнем Update Intel MKL (Intel® MKL 10.0 Update 2:
http://softwarecommunity.intel.com/isn/ ... 49675.aspx ) появилась быстрая версия dgemm под IA32 (их так расперло от гордости, что они сначала написали, что скорость увеличилась на 80%, потом эту цифру снизили до 25% - на самом деле прирост скорости составил примерно 38%). История вопроса примерно такова: несколько лет назад я на своей странице говорил о низкой скорости современных алгоритмов умножения матриц (и не только) под IA32. Мне мало кто поверил. В числе них оказался и Грановский (создатель квантовохимической программы PC GAMESS). В конце прошлого года он на своей странице сообщил о реализации новой версии программы умножения матриц, скорость которой для лучших результатов достигает 83% от теоретически возможной. Сравнительный анализ алгоритмов Intel и Грановского говорит о том, что в основе алгоритма Intel MKL лежит алгоритм Грановского. Опять показали мы эти буржуям ...(шутка).

 Профиль  
                  
 
 
Сообщение18.03.2008, 13:43 
Модератор
Аватара пользователя


11/01/06
5710
 !  abc_qmost, не плодите однообразные темы. Присоединяю к вашей старой теме про алгоритмы умножения матриц.

 Профиль  
                  
 
 
Сообщение18.03.2008, 15:40 


05/08/07

194
maxal писал(а):
abc_qmost, не плодите однообразные темы. Присоединяю к вашей старой теме про алгоритмы умножения матриц.

Вообще говоря, алгоритмы быстрого умножения и,собственно говоря, просто умножения м-ц - две совершенно разные песни.

 Профиль  
                  
 
 
Сообщение19.05.2008, 11:15 


05/08/07

194
На новых 45 нм. процессорах (конкретно: q9450) при грамотном подходе к реализации алгоритма перемножения матриц практически исчезает грань в скоростях перемножения матриц для IA32 и EM64T. Максимальные скорости перемножения для квадратных матриц на одном ядре: 96.2% для IA32 и 97.7% для EM64T (100% - это теоретически достижимая скорость). Интересно отметить, что на 45 нм. процессорах скорость умножения матриц на IA32 выше, чем на предыдущих 65 нм. процессорах для EM64T! Если кто-либо пользуется пакетом Intekl MKL, имеет 45 нм. процессор и использует ОС IA32, следите за появлением версии 10.1. Как я понимаю, скорость многих функций для IA32 в этом пакете должна значительно возрасти (на сколько - не знаю, во всяком случае разработчики Intel интересовались моей реализацией под IA32: http://softwarecommunity-rus.intel.com/ ... 21215.aspx ), да и функции, реализованные под EM64T, немного должны подтянуться.

 Профиль  
                  
 
 Re: По поводу алгоритма Штрассена быстрого умножения матриц
Сообщение09.07.2008, 18:53 


05/08/07

194
Доработан алгоритм быстрого умножения м-ц, описанный на моей странице, посвященной Core 2 Duo для IA32. Он требует относительно небольшого объема дополнительной оперативной памяти и позволяет перемножать м-цы вплоть до размера 11500*11500 при 4 GB оперативной памяти. Для EM64T на процессоре q9450 для одного ядра получены интересные результаты: например, для м-ц 480*480 скорость равна 4.21 ops/cycle (dgemm Interl MKL - 3.70 ops/cycle), для м-ц 960*960 скорость равна 4.25 ops/cycle (dgemm Interl MKL - 3.75 ops/cycle), а для м-ц 11264*11264 скорость равна 5.98 ops/cycle (dgemm Interl MKL - 3.80 ops/cycle). Особенно хочется отметить результаты для малых матриц - даже близких к ним результатов я еще не встречал и в помине, а м-цы такого размера важны в некоторых приложениях. Алгоритм получился очень сложным (ведь кроме значительного увеличения скорости был минимизирован и объем используемой дополнительной памяти, что позволяет перемножать м-цы очень большого порядка, т.е. я убил сразу двух зайцев !) и я им горжусь. К распараллеливанию пока не приступал, а получил оценку сверху, пропустив один экземпляр программы одновременно на 4-х ядрах (например, для м-ц 480*480 я получил 3.65 ops/cycle), что является очень грубой оценкой для неканонических dgemm, т.к. на время расчета велико влияние квадратичных операций. При распараллеливании моего алгоритма результаты должны быть значительно лучше. Появится свободное время - займусь распараллеливанием.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group