2014 dxdy logo

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

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




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

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

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

 
 
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:25 
Фантом в сообщении #268282 писал(а):
А Вы Фортран знаете?

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

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

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

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

 
 
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:39 
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 
Фантом в сообщении #268515 писал(а):
добство работы с матричными и векторными операциями (а это 99% вычислительной математики) - это, в конечном счете, возможность быстро написать на Фортране программу, которая будет работать как минимум не медленнее куда более сложной программы на C. А при примерно равных затратах времени на написание вычислительная программа на Фортране почти всегда будет работать быстрее.
Ок. Мы на самом деле говорили про одно и то же. Только мне не понравилось, что вы это называете этот момент "скоростью" и настаивал на том, что это "удобство".

 
 
 
 Re: Изучение С++ с уклоном на численные методы
Сообщение06.12.2009, 19:53 
nestoklon в сообщении #268518 писал(а):
Ок. Мы на самом деле говорили про одно и то же. Только мне не понравилось, что вы это называете этот момент "скоростью" и настаивал на том, что это "удобство".

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

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


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