2014 dxdy logo

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

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




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

 
 
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 12:57 
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 
Обычное рапараллеливание вычислений на нескольких процессорах. Для этого используется поддержка компилятором директив OpenMP. Вот ключевая строчка:
Код:
#pragma omp parallel for num_threads(4) private(j, i__)

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

 
 
 
 Re: о программном ускорении матричных операций
Сообщение18.09.2010, 15:55 
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 
По-моему, автор этого кода - Dongara с этого форума. Но его, кажется, забанили по очевидным для меня причинам. В жизни его зовут Сиголаев Юрий. Можете погуглить и связаться лично с ним (у него есть статьи по линейной алгебре в интернете). Только осторожно, может послать.

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

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

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

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

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

 
 
 
 Re: о программном ускорении матричных операций
Сообщение19.09.2010, 13:57 
Может кто-нибудь подскажет толковый англоязычный ресурс или наш приличный ресурс: можно в личку - буду очень признателен.

 
 
 
 Re: о программном ускорении матричных операций
Сообщение21.09.2010, 12:37 
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 
y_nikolaenko в сообщении #353628 писал(а):
Вот натолкнулся на интересное исправление кода известного пакета CLAPACK: http://software.intel.com/ru-ru/forums/ ... p?p=128709
Но не понял, почему код ускоряется. Может здесь есть гуру, которые это объяснят?

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

 
 
 
 Re: о программном ускорении матричных операций
Сообщение25.09.2010, 17:38 
Почитал немного упомянутый форум. Увидел несколько упоминаний таинственного алгоритма Грановского. Есть ли где его описание? Можно на английском.

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

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

 
 
 
 Re: о программном ускорении матричных операций
Сообщение25.09.2010, 23:33 
Например, http://software.intel.com/ru-ru/forums/showpost.php?p=75700

 
 
 
 Re: о программном ускорении матричных операций
Сообщение26.09.2010, 00:17 
venco в сообщении #356254 писал(а):

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

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group