2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 о программном ускорении матричных операций
Сообщение18.09.2010, 09:56 
Заблокирован


18/09/10

183
Вот натолкнулся на интересное исправление кода известного пакета CLAPACK: http://software.intel.com/ru-ru/forums/ ... p?p=128709
Но не понял, почему код ускоряется. Может здесь есть гуру, которые это объяснят?

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 12:57 
Заблокирован


18/09/10

183
y_nikolaenko в сообщении #353628 писал(а):
Вот натолкнулся на интересное исправление кода известного пакета CLAPACK: http://software.intel.com/ru-ru/forums/ ... p?p=128709
Но не понял, почему код ускоряется. Может здесь есть гуру, которые это объяснят?

Да, вот англоязычная версия: я там сначала нашел это сообщение: http://software.intel.com/en-us/forums/ ... 1&o=d&s=lr

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 15:17 
Заслуженный участник


04/05/09
4582
Обычное рапараллеливание вычислений на нескольких процессорах. Для этого используется поддержка компилятором директив OpenMP. Вот ключевая строчка:
Код:
#pragma omp parallel for num_threads(4) private(j, i__)

Данная директива говорит компилятору исполнять следующий цикл for на 4-рёх процессорах параллельно.
Читайте описание OpenMP: http://openmp.org/wp/

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 15:55 
Заблокирован


18/09/10

183
venco в сообщении #353768 писал(а):
Обычное рапараллеливание вычислений на нескольких процессорах. Для этого используется поддержка компилятором директив OpenMP. Вот ключевая строчка:
Код:
#pragma omp parallel for num_threads(4) private(j, i__)

Данная директива говорит компилятору исполнять следующий цикл for на 4-рёх процессорах параллельно.
Читайте описание OpenMP: http://openmp.org/wp/

Вы не поняли: я не про OpenMP: это мне понятно, но данный кусок кода занимает ничтожную часть времени от общего времени расчета. Я про все остальное. Я сам на C не программирую и думал, что автор прикалывается: перевел исправления на FORTRAN (соответствующую функцию взял из LAPACK) и к своему удивлению обнаружил, что он сказок не рассказывает: код даже быстрей, чем в Intel MKL.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 16:05 


26/01/10
959
По-моему, автор этого кода - Dongara с этого форума. Но его, кажется, забанили по очевидным для меня причинам. В жизни его зовут Сиголаев Юрий. Можете погуглить и связаться лично с ним (у него есть статьи по линейной алгебре в интернете). Только осторожно, может послать.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 16:09 
Заблокирован


18/09/10

183
Zealint в сообщении #353784 писал(а):
По-моему, автор этого кода - Dongara с этого форума. Но его, кажется, забанили по очевидным для меня причинам. В жизни его зовут Сиголаев Юрий. Можете погуглить и связаться лично с ним (у него есть статьи по линейной алгебре в интернете). Только осторожно, может послать.

Вы думаете, я ему не написал: написал приватно, а он мне ответил, что азбуку учить надо.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 18:25 
Заслуженный участник


04/05/09
4582
y_nikolaenko в сообщении #353782 писал(а):
Вы не поняли: я не про OpenMP: это мне понятно, но данный кусок кода занимает ничтожную часть времени от общего времени расчета.
Возможно, это просто единственная разница, которую я заметил без внимательного разглядывания кода.
Честно говоря, вникать лень, особенно учитывая, что комментарии перестали соответствовать коду.
Тем не менее, второе впечатление - перестановка операций, возможно для лучшей работы кеша. Подобные изменения могут ускорить на порядок.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 18:42 
Заблокирован


18/09/10

183
venco в сообщении #353841 писал(а):
y_nikolaenko в сообщении #353782 писал(а):
Вы не поняли: я не про OpenMP: это мне понятно, но данный кусок кода занимает ничтожную часть времени от общего времени расчета.
Возможно, это просто единственная разница, которую я заметил без внимательного разглядывания кода.
Честно говоря, вникать лень, особенно учитывая, что комментарии перестали соответствовать коду.
Тем не менее, второе впечатление - перестановка операций, возможно для лучшей работы кеша. Подобные изменения могут ускорить на порядок.

Понятно. Но, вообще говоря, уже самые первые строчки отличаются, так что разницу трудно не заметить. Тем не менее спасибо за проявленный интерес: все-таки прагму заметили. Дело в том, что я использую эту функцию для совсем иных задач, нежели диагонализация, и мне надо вносить изменения в другие участки кода. А без понимания, что, как и почему это трудно сделать, хотя для yuriisig, возможно, это и легко: он ведь об этом пишет. Может он и сам не знает?

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение19.09.2010, 13:57 
Заблокирован


18/09/10

183
Может кто-нибудь подскажет толковый англоязычный ресурс или наш приличный ресурс: можно в личку - буду очень признателен.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение21.09.2010, 12:37 
Заблокирован


18/09/10

183
y_nikolaenko в сообщении #353782 писал(а):
venco в сообщении #353768 писал(а):
Обычное рапараллеливание вычислений на нескольких процессорах. Для этого используется поддержка компилятором директив OpenMP. Вот ключевая строчка:
Код:
#pragma omp parallel for num_threads(4) private(j, i__)

Данная директива говорит компилятору исполнять следующий цикл for на 4-рёх процессорах параллельно.
Читайте описание OpenMP: http://openmp.org/wp/

Вы не поняли: я не про OpenMP: это мне понятно, но данный кусок кода занимает ничтожную часть времени от общего времени расчета. Я про все остальное. Я сам на C не программирую и думал, что автор прикалывается: перевел исправления на FORTRAN (соответствующую функцию взял из LAPACK) и к своему удивлению обнаружил, что он сказок не рассказывает: код даже быстрей, чем в Intel MKL.

Да, код быстрей, но только при расчете ересь получаю. Может кто пробовал внести изменения согласно опубликованным исправлениям? Да и про прагму автор тоже загнул: она никакого отношения к пакету LAPACK не имеет.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение24.09.2010, 16:03 
Заблокирован


18/09/10

183
y_nikolaenko в сообщении #353628 писал(а):
Вот натолкнулся на интересное исправление кода известного пакета CLAPACK: http://software.intel.com/ru-ru/forums/ ... p?p=128709
Но не понял, почему код ускоряется. Может здесь есть гуру, которые это объяснят?

Всем спасибо: разобрался.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение25.09.2010, 17:38 
Заслуженный участник


04/05/09
4582
Почитал немного упомянутый форум. Увидел несколько упоминаний таинственного алгоритма Грановского. Есть ли где его описание? Можно на английском.

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение25.09.2010, 18:41 
Заблокирован


18/09/10

183
venco в сообщении #356116 писал(а):
Почитал немного упомянутый форум. Увидел несколько упоминаний таинственного алгоритма Грановского. Есть ли где его описание? Можно на английском.

Что Вы имеете в виду? Ссылку можете дать?

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение25.09.2010, 23:33 
Заслуженный участник


04/05/09
4582
Например, http://software.intel.com/ru-ru/forums/showpost.php?p=75700

 Профиль  
                  
 
 Re: о программном ускорении матричных операций
Сообщение26.09.2010, 00:17 
Заблокирован


18/09/10

183
venco в сообщении #356254 писал(а):

И чем я могу помочь? И по-моему, фраза: "не вписывается в концепцию блочной обработки пакета LAPACK " - бред. Во всяком случае, для меня.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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



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

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


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

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