LINUX.ORG.RU

GNU Scientific Library (GSL) 1.15

 , , , , , , pdl, pspp,


0

4

6 мая 2011 года была анонсирована версия 1.15 GNU Scientific Library (GSL) - библиотеки для вычислений в прикладной математике и науке.

GSL является частью проекта GNU и распространяется на условиях GNU GPL.

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

Ознакомиться со списком категорий вычислений можно на википедии или скачав архив с исходными кодами.

В очередной версии, вышедшей через 14 месяцев после предыдущей версии 1.14, появился ряд новых функций, а также были исправлены некоторые ошибки. С подробным списком изменений можно ознакомиться в архиве с исходными кодами или он-лайн в репозитарии GSL на bzr.savannah.gnu.org/lh/gsl/

GSL используется такими проектами как PDL (Perl Data Language), MathGL, PSPP.
Библиотека может оказаться полезной как студентам, аспирантам, преподавателям в учебных и научных целях, так и разработчикам специализированного программного обеспечения.

На странице GSL на gnu.org можно найти информацию о поддерживаемых платформах, руководства, информацию о расширениях и связанных проектах.

>>> Исходный код GSL

>>> Страница GSL на gnu.org

★★★

Проверено: annoynimous ()
Последнее исправление: adriano32 (всего исправлений: 2)

Ответ на: комментарий от abalakin

> Ой! А вот тут можно здорово обжечься на гетерогенных кластерах.

Можно. Но когда думаешь об эффективности, часто пренебрегаешь понятностью. Это пример того, что люди такое делают. А мне выбирать не приходится - вот проект, надо работать.

VIT
()
Ответ на: комментарий от abalakin

> Никто не отменял union. Только зачем? он довольно редко

Короче будем городить огород вместо простого и понятного COMMON. Это как в одном проекте программист нагородил в цикле кучу сложнейших условий и на вопрос «зачем?» - чтобы goto из цикла не использовать.

Плохо, когда программистом движет религия, а не опыт и здравый смысл.

VIT
()
Ответ на: комментарий от VIT

>> Ой! А вот тут можно здорово обжечься на гетерогенных кластерах.

Можно. Но когда думаешь об эффективности, часто пренебрегаешь понятностью. Это пример того, что люди такое делают.

Люди много глупостей делают, но это же не повод всем им следовать.

Использование common block тем способом как вы показали является не безопасным и может приводить к непредсказуемым и плохо отлавливаемым ошибкам. Хорошо если это приведет просто к вылету программы. Однако скорее всего это будет мусор в результатах, который может быть выдан за физический результат.

А мне выбирать не приходится - вот проект, надо работать.

А за достоверность результата кто отвечает? или как мартышка: только на кнопки нажимать?

abalakin ★★
()
Ответ на: комментарий от VIT

> Короче будем городить огород вместо простого и понятного COMMON. Это как в одном проекте программист нагородил в цикле кучу сложнейших условий и на вопрос «зачем?» - чтобы goto из цикла не использовать.

Про COMMON см. выше. А про GOTO — это, наверное, единственная инструкция которая ставит современные процессоры в ступор. Хотите писать быстрые программы не используйте GOTO. Ну а уж дальше Вам решать ...

abalakin ★★
()
Ответ на: комментарий от buddha

>+: очень удобен если вы работаете с численными массивами.

Ничего особенного. Сравните с синтаксисом Matlab - там действительно удобно.

+: более высокого уровня чем С (но более низкого чем С++)

Есть как плюсы так и минусы, часть уже обсуждалось.

+: быстрее С (попробуйте примеры, что идут с Интеловским компилятором: при абсолютно одинаковом примере и компиляторе фортран оказывается быстрее на ~10%)

Бенчмаки где? Уже давно не встречал вменяемых сравнений - только очень давние.

+: хорошее взаимодействие с С.

Это плюс Си, а не Фортрана. Попробуйте программу Фортрана запустить из-под другого языка, посмотрите проблемы у того же cfortran.

-: не популярен - это самый большой минус, по большому счету, все остальные являются следствием этого.

На деле - уже отработанная технология, которую уже практически догнали C/C++. Последние выигрывают в удобстве, наличии стандартных и прочих библиотек.

-: компиляторы не спешат реализовывать последние стандарты.

Что-то сложно реализовать, а что-то и не надо. Тенденция на усложнение языка мне не нравится.

-: будущее не ясно

В ближайшем - ничего хорошего. Стандарт Фортран 90 с его матрицами - вещь в себе, использовать в связке с Си и другими языками - очень проблематично. Поскольку в программах, как правило, нужен не только расчет, то тенденция искоренения Фортрана понятна.

hulk
()
Ответ на: комментарий от VIT

>А мне выбирать не приходится - вот проект, надо работать.

Одно дело заниматься профессионально, другое дело - для личных нужд. Поверьте, если бы за это платили, то мне было бы все равно - Фортран, Кобол или что-то еще. К счастью, у других людей есть выбор.

hulk
()
Ответ на: комментарий от abalakin

> Люди много глупостей делают, но это же не повод всем им следовать.

Вы не понимаете сути примера. Давайте оставим эту тему.

А за достоверность результата кто отвечает?

За достоверность отвечает тестовый прогон на базовой платформе. Я должен гарантировать этот результат на новой платформе. Изменения в исходниках обычно не разрешаются.

VIT
()
Ответ на: комментарий от abalakin

> Хотите писать быстрые программы не используйте GOTO.

Неожиданная фраза.

VIT
()
Ответ на: комментарий от hulk

> Одно дело заниматься профессионально, другое дело - для личных нужд.

А я про личные нужды вообще ни слова не говорил. Если говорить про личные интересы, я бы вообще BLAS писал на ассемблере.

VIT
()
Ответ на: комментарий от hulk

Кстати насчет GSL, она к сожалению медленная до безобразия. Даже если ее компилировать интеловским компилятором. Я конечно ее дергаю часто, но вот например функции Бесселя для действительного аргумента и порядка тормозят безбожно по сравнению со старенькими фортрановскими версиями. С нелинейной оптимизацией там давно проблемы, точнее ее там совсем нет.Хорошо что Джонсон nlopt допилил - очень приличная вещь, рекоммендую. У нас по специфике работы используется на выбор или вместе lapack/MKL/ACML, arpack, nag, imsl,и кучу всего остального, a китайские мазохисты еще и numerical recepies дергают ( сам иногда грешу) :) О GSL знают, и с ней через fgsl работать достаточно удобно. Но есть просто огромный выбор альтернативы.

К счастью, у других людей есть выбор.

Ну вот у меня есть как бы выбор, так как никому почти не интересно как считалось, а намного важнее результаты. Но почему то выбираю фортран в 80% случаев вот уже как 8 лет, хотя первые три года работал исключительно в С/C++. Что перевешивает в моем случае? Лаконичность и простота. А если почитать 2008 стандарт и подождать чтобы компиляторы подтянулись - совсем ляпота настанет. Я конечно не пишу программы-монстры и всего два проекта где у меня есть больше 10000 строк. Да и с классами не слишком балуюсь ибо MPI и OpenMP с ними не очень дружат. Все АМО-физика. Но ради прикола переписал когда-то несколько программок в C. Так сказать чтобы вспомнить молодость. Число строк как бы внезапно сразу возростало в ~1.5 раза! И в процессе чуствуешь как нехватает всех плюшек фортрана, о которых уже упоминалось. Приходится либо изобретать велосипеды либо выходить за пределы стандартных библиотек. Да, о скорости можно на фортране не переживать. Если не наделать очевидных глупостей в алгоритмах то реализация выходит сразу устойчиво быстрая.

terminat0r
()
Ответ на: комментарий от VIT

>А я про личные нужды вообще ни слова не говорил. Если говорить про личные интересы, я бы вообще BLAS писал на ассемблере.

Ну вот, опять передергиваете. Речь не о переписывании BLAS на ассемблере, чем вы и никогда заниматься не будете. Речь шла о решении насущных задач. Вы тут иронизируете по поводу того, что тут не знают Фортран так, как знаете вы. Наверное, просто другие им не занимаются профессионально? Спорите о достоинствах самих языков, что очень напоминает сферического коня в вакууме. Мы можете сколько угодно тестировать COMMON блоки на своих платформах - здесь от этого никому ни холодно, ни жарко. Все же в основе выбора языка лежит нечто большее, чем просто достоинство языковых конструкций. Приводите огромные проекты на Фортран как доказательство, что данный язык лучше. Но удерживает эти огромные проекты от переноса на другие сложность самого переноса. При чем здесь достоинства языка?

hulk
()
Ответ на: комментарий от terminat0r

nag, imsl

Вы их купили? Вы можете установить их на кластер, другим людям? Тот же IMSL только на Windows, в комплекте Intel Fortran Compiler 9. В 11 версии уже, увы, его нет. Так что и смысла использовать более как для себя их и нет. Где тут кроссплатформенность и переносимость, как делиться результатами с другими? GSL не коммерческий проект, и конечно уступает им.

Кстати насчет GSL, она к сожалению медленная до безобразия. Даже если ее компилировать интеловским компилятором. Я конечно ее дергаю часто, но вот например функции Бесселя для действительного аргумента и порядка тормозят безбожно по сравнению со старенькими фортрановскими версиями.

Но ради прикола переписал когда-то несколько программок в C.

Здесь, простите, не понял. Или часто, или по приколу - выберите что-то одно.

hulk
()
Ответ на: комментарий от terminat0r

>Я конечно ее дергаю часто, но вот например функции Бесселя для действительного аргумента и порядка тормозят безбожно по сравнению со старенькими фортрановскими версиями.

Вариантов вычисления функций Бесселя множество. Может быть, дело в алгоритме? Речь одет о функциях Бесселя целого порядка или произвольного (действительного, комплексного)? Уточните, пожалуйста.

hulk
()
Ответ на: комментарий от hulk

Ничего особенного. Сравните с синтаксисом Matlab - там действительно удобно.


Не знаю как вам сказать, но МАТЛАБ «спер» свой синтаксис с Фортрана.


Бенчмаки где? Уже давно не встречал вменяемых сравнений - только очень давние.


Я ведь написал - самое простое: возьмите примеры что идут с Интеловским компилятором. Там есть *одинаковые* примеры на С и на Фортране. Те, где вычисления занимают значительную часть - Фортран выигрывает. На вскидку, только что проверил int_sin.{c,f90}

+: хорошее взаимодействие с С.

Это плюс Си, а не Фортрана. Попробуйте программу Фортрана запустить из-под другого языка, посмотрите проблемы у того же cfortran.


Нет, это именно плюс Фортрана, после того как туда добавили bind(c) Фортрановские программы могут выглядеть (почти) как С-шные. Так что все, что может использовать библиотеку на С может использовать и библиотеку на Фортране.

Что-то сложно реализовать, а что-то и не надо. Тенденция на усложнение языка мне не нравится.


Мне, лично, не хватает саб-модулей из Ф2008. Интел обещал их сделать в 12-ом компиляторе, но не сделал :(. Ну и модульные функции в качестве аргумента - очень приятная вещь, но она и раньше у Интела была.

тенденция искоренения Фортрана понятна.

Очень надеюсь, что этого не случится.

buddha
()
Ответ на: комментарий от buddha

Не знаю как вам сказать, но МАТЛАБ «спер» свой синтаксис с Фортрана.

Бред. matmul(A,B) - произведение в Фортране, A*B - в Матлабе (поэлементное A.*B). Где спертый синтаксис? Приведите пример.

Я ведь написал - самое простое: возьмите примеры что идут с Интеловским компилятором. Там есть *одинаковые* примеры на С и на Фортране. Те, где вычисления занимают значительную часть - Фортран выигрывает. На вскидку, только что проверил int_sin.{c,f90}

Самые простые примеры - самые необъективные. Прочтите это.

Нет, это именно плюс Фортрана, после того как туда добавили bind(c) Фортрановские программы могут выглядеть (почти) как С-шные. Так что все, что может использовать библиотеку на С может использовать и библиотеку на Фортране.

Вы не путаете Фортран 90 с Фортран 77? Типов, аналогичным, фортрановсим матрицам в Си нет. Читайте про проект cfortran. Вот здесь явно указано:

NAG f90

The FORTRAN 77 subset of FORTRAN 90 is supported. Extending cfortran.h to interface C with all of FORTRAN 90 has not yet been examined.

hulk
()
Ответ на: комментарий от hulk

> Ну вот, опять передергиваете. Речь не о переписывании BLAS на ассемблере, чем вы и никогда заниматься не будете.

Хмм. Люди говорят, что у меня неплохо получается. Где-то от двух до трёх раз по-сравнению с ESSL.

Давайте ещё раз и спокойно. Всё, что я пытаюсь сказать можно уложить в две фразы. Плохих языков программирования не бывает. Каждой задаче - свой инструмент. Вот и всё.

VIT
()
Ответ на: комментарий от VIT

>Давайте ещё раз и спокойно. Всё, что я пытаюсь сказать можно уложить в две фразы. Плохих языков программирования не бывает. Каждой задаче - свой инструмент. Вот и всё.

В общем согласен. Хотя, конечно, «плюрализм он и есть плюрализм».

hulk
()

Мои 5 копеек.

Использовал Фортран 7 лет для научных расчётов. На основе фортрановских программ написал 6 статей, кандидатскую, патент на изобретение.

2 года назад перешёл на использование Python+numpy, затем стал также потихоньку осваивать scipy и matplotlib (сначала использовал для построения графиков gnuplot). Реально в науке обыкновенно надо иметь идею. Если идея хороша, она оправдывается обыкновенно и при небольшом объёме данных, дальнейшие расчёты --- только подтверждение и уточнение.

Поэтому важно написать программу быстро и удобно, для чего Питон подит гораздо лучше. По этой же причине многие учёные используют Матлаб.

Vudod ★★★★★
()
Ответ на: комментарий от hulk

>Вариантов вычисления функций Бесселя множество. Может быть, дело в алгоритме? Речь одет о функциях Бесселя целого порядка или произвольного (действительного, комплексного)? Уточните, пожалуйста.

a я и уточнил сразу: функции Бесселя для действительного аргумента и порядка.

Здесь, простите, не понял. Или часто, или по приколу - выберите что-то одно.

часто с фортрана (GSL + fgsl), по приколу с C.

terminat0r
()
Ответ на: комментарий от terminat0r

>часто с фортрана (GSL + fgsl), по приколу с C.

А разве законно судить о скорости GSL по обертке FGSL? Я понимаю, что последняя до ума еще не доведена и разрабатывается чуть ли не одним человеком. Ее нет в репозитории генты, думаю, у большинства дистрибутивов - тоже. Так что это никакое не сравнение, уж простите. Если только GSL без обертки, но тогда никаких матриц. Так что использование для Фортрана, действительно, смысла большого не имеет. А честное сравнение, когда с одной стороны C + GSL, с другой - Fortran + фортрановские либы.

hulk
()
Ответ на: комментарий от terminat0r

Еще хочу спросить (чтобы лучше понять как проводились сравнения), вы работаете в Виндовс или Линукс?

hulk
()
Ответ на: комментарий от hulk

>А разве законно судить о скорости GSL по обертке FGSL?

не знаю, не думаю что там fgsl дает такие задержки. Там по сути обыкновенные врапpеры. я и не говорил что сравниваю gsl с fgsl, я сказал что старая реализация на фортране с нетлиба например http://www.netlib.org/specfun/rjbesl быстрее реализации в gsl. Дело в алгоритме, но это не мои проблемы. Править GSL у меня времени и gnu-опыта к сожалению нет. Возможно там проблемы и с лицензией.

Еще хочу спросить (чтобы лучше понять как проводились сравнения), вы работаете в Виндовс или Линукс?

Мне непонятно что выхотите сравнивать если вы вообще не поняли о чем я говорил?

terminat0r
()
Ответ на: комментарий от terminat0r

>Мне непонятно что выхотите сравнивать если вы вообще не поняли о чем я говорил?

Вас, действительно, сложно понять. Вы не знаете, что GSL есть как под Винду, так и под Линукс? Но думаю, что он заточен под Линукс и собирается GCC. Для Фортрана обычно выбирается Винда, там есть тот же IMSL. FGSL, наверное, нет, но вы разъяснили это только в данном посте.

hulk
()
Ответ на: комментарий от hulk

>Вас, действительно, сложно понять.

У нас с вами вектора мозга наверно перпендикулярные. Какой виндовс, при чем здесь эта ОС. Вы где находитесь?

Для Фортрана обычно выбирается Винда, там есть тот же IMSL.

Это что-то, что вообще тяжело комментировать. Откуда такие мысли?

Вы не знаете, что GSL есть как под Винду, так и под Линукс?

Я компилировал GSL на десятках разных машин и подбор параметров компиляции и оптимизации для не-gnu компилятора это целая наука в GSL. Именно чтобы пройти внутренние тесты. Прошлая версия вообще не собиралась правильно с пом. интела. Но извините, виндовс меня последний десяток лет интересует только как система под которой работает наш институтский навороченой сканнер от кенона в корридоре. И все.

terminat0r
()
Ответ на: комментарий от terminat0r

>У нас с вами вектора мозга наверно перпендикулярные. Какой виндовс, при чем здесь эта ОС. Вы где находитесь?

Извините, если чем вас обидел. Однако, бурная у вас реакция на простой вопрос. Тут люди бывают разные, и дуалбутщики, и такие виндофилы как Reset.

hulk
()
Ответ на: комментарий от terminat0r

>я сказал что старая реализация на фортране с нетлиба например http://www.netlib.org/specfun/rjbesl быстрее реализации в gsl. Дело в алгоритме, но это не мои проблемы.

Эта программа на Фортран 77. Можно перегнать ее при помощи f2c и использовать в своих сишных программах. Думаю, эффективность будет практически та же.

hulk
()
Ответ на: комментарий от Vudod

>Поэтому важно написать программу быстро и удобно, для чего Питон подит гораздо лучше. По этой же причине многие учёные используют Матлаб.

Это все хорошо если считать несколько минут или часов. Но на некоторые задачи на это уходит недели и даже месяцы. Поэтому если программа на 10% быстрее то получаем несколько свободных дней работы кластера на сотни процессоров.

Конечно попробовать модель намного проще например в матлабе. Или как в моем случае я чаще беру все-таки мепл или математику.

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

terminat0r
()
Ответ на: комментарий от terminat0r

Это все хорошо если считать несколько минут или часов. Но на некоторые задачи на это уходит недели и даже месяцы.

...

Я знаю профессора который говорит что он не берется за задачи которые не может решить математика за время большее чем скажем 12 часов.

Из известных мне профессоров (да и не только) подобным образом поступают практически все.

Поэтому если программа на 10% быстрее то получаем несколько свободных дней работы кластера на сотни процессоров.

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

Есть специфические задачи, для которых огромные объёмы вычислений --- непреложная необходимость. Приходят на ум геном и прогнозы погоды (вообще все задачи, где есть уравнения в частных производных).

Но большинство важных научных результатов получены почти на коленке. Вспомните Фейгенбаума, открывшего названную в его честь закономерность на калькуляторе, хотя суперкомпьютеры в 70-ые уже существовали.

Vudod ★★★★★
()
Ответ на: комментарий от Vudod

>>Я знаю профессора который говорит что он не берется за задачи которые не может решить математика за время большее чем скажем 12 часов.

Из известных мне профессоров (да и не только) подобным образом поступают практически все.

Потому что у практически всех профессоров есть студенты/аспиранты/постдоки для подобной работы. У профессора, как правило, задачи другие.

Но большинство важных научных результатов получены почти на коленке. Вспомните Фейгенбаума, открывшего названную в его честь закономерность на калькуляторе, хотя суперкомпьютеры в 70-ые уже существовали.

Чтобы завладеть умами общественности, закон должен быть простым. Сложные законы, которые понятны только автору, обычно признания не получают.

hulk
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.