2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 17:44 
Заслуженный участник


09/08/09
3438
С.Петербург
Фантом в сообщении #268451 писал(а):
А там этим явно занимались люди, не знающие того, что они сравнивали.
Присоединяюсь.
Посмотрел на тест reverse-complement. Фортрановская версия работает не только медленнее всех остальных компиляторов, но и медленнее, чем Ruby, PHP, Perl и т.п. Даже не представляю, как этого удалось добиться. Ну и разница в 10 раз по сравнению с С++ внушает большие сомнения.
В общем, очень похоже на тестирование с заранее запланированным результатом.

 Профиль  
                  
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:06 
Заслуженный участник


19/07/08
1266
Фантом в сообщении #268451 писал(а):
При этом самое важное, что такая конструкция при больших N (при маленьких, понятно, все равно, но это и неинтересно - слишком мал объем вычислений) будет работать заметно быстрее, чем реализованный авторами тестируемых программ тривиальный вариант матричного умножения.

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

 Профиль  
                  
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:25 


06/04/09
156
Воронеж
Фантом в сообщении #268282 писал(а):
А Вы Фортран знаете?

А вы С++ знаете?

Фантом в сообщении #268451 писал(а):
А для достижения аналогичной производительности на C++ придется написать сравнительно большую реализацию какой-то более быстрой схемы умножения (потратив на это заметно больше времени).

Вы проводили сравнения? Есть результаты?

Т.е. по вашему ограничение С++, что в нем нет matmul (и т.п.)? Т.е. вы считаете преимуществом жестко зафиксированные алгоритмы для умножения, сложения матриц?
Например, пусть мне надо работать с матрицами спец. вида (блочная, диагональная...), для которых существуют более лучшие алгоритмы. matmul сама "догадается"? :?

 Профиль  
                  
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:39 


17/01/09
119
nestoklon в сообщении #268504 писал(а):
А если пользоваться, как надо, BLAS, то разницы не будет и с питоном.

А она (хотя и не вся) уже встроена в Фортран. Тот же matmul - это не просто умножение в два цикла. :D

nestoklon в сообщении #268504 писал(а):
Кстати, в приведённом вами сравнении даже код посмотреть нельзя. Может, там сишная версия написана очень криво?..

В принципе, конечно, не исключено, но личность автора делает это предположение маловероятным.

nestoklon в сообщении #268504 писал(а):
То, что фортран быстрее -- это распространённый миф, который появился из-за того, что старые компиляторы си не умели хорошо оптимизировать код. Потом разница понемногу сошла на нет, а миф остался.

Это не такой уж миф. У C есть как минимум одна особенность, принципиальо ограничивающая оптимизацию - работа с указателями. Из-за нее почти всегда невозможно гарантировать отсутствие побочных эффектов у тех или иных участков кода.

nestoklon в сообщении #268504 писал(а):
Да, на фортране гораздо удобнее писать всякие матричные вычисления и комплексную алгебру так как это всё есть в языке. Но скорость работы -- это миф.

Бессмысленно оценивать скорость работы "просто так". Как я уже писал выше, выжать максимальную производительность из C/C++, безусловно, можно, и спорить с этим никто не пытается. Вопрос в том, какой ценой это будет сделано. Удобство работы с матричными и векторными операциями (а это 99% вычислительной математики) - это, в конечном счете, возможность быстро написать на Фортране программу, которая будет работать как минимум не медленнее куда более сложной программы на C. А при примерно равных затратах времени на написание вычислительная программа на Фортране почти всегда будет работать быстрее.

-- Вс дек 06, 2009 19:44:33 --

p51x в сообщении #268510 писал(а):
А вы С++ знаете?

Да. :)

p51x в сообщении #268510 писал(а):
Т.е. по вашему ограничение С++, что в нем нет matmul (и т.п.)?

Я не называл это "ограничениями". Скорее это неудобство - но да, именно оно. И собственно matmul - это только один небольшой элемент. Я им попользовался, разбирая пример c N-body, но даже там же был и еще один - векторные вычисления.

p51x в сообщении #268510 писал(а):
Например, пусть мне надо работать с матрицами спец. вида (блочная, диагональная...), для которых существуют более лучшие алгоритмы. matmul сама "догадается"?

Конкретно для блочных и диагональных - нет. А вот выбор оптимального варианта для матрицы общего вида (в зависимости от размера, возможности параллелизации и т.д.) - да.

 Профиль  
                  
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:46 
Заслуженный участник


19/07/08
1266
Фантом в сообщении #268515 писал(а):
добство работы с матричными и векторными операциями (а это 99% вычислительной математики) - это, в конечном счете, возможность быстро написать на Фортране программу, которая будет работать как минимум не медленнее куда более сложной программы на C. А при примерно равных затратах времени на написание вычислительная программа на Фортране почти всегда будет работать быстрее.
Ок. Мы на самом деле говорили про одно и то же. Только мне не понравилось, что вы это называете этот момент "скоростью" и настаивал на том, что это "удобство".

 Профиль  
                  
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:53 


17/01/09
119
nestoklon в сообщении #268518 писал(а):
Ок. Мы на самом деле говорили про одно и то же. Только мне не понравилось, что вы это называете этот момент "скоростью" и настаивал на том, что это "удобство".

Хорошо, договорились. Но в конечном счете это все-таки именно скорость - скорость получения результата. Такие программы прогоняются не миллионы раз, и стоимость времени разработчика для них обычно больше, чем стоимость времени пользователей.

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

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



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

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


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

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