Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016) — различия между версиями

Материал из 0x1.tv

(Тезисы)
(Batch edit: replace PCRE (\n\n)+(\n) with \2)
 
(не показано 40 промежуточных версий этого же участника)
== Аннотация ==
;Докладчик: {{Speaker|Пётр Демин}}
<blockquote>
Представлен опыт совместного использования компиляторов g++, gfortran и свободных математических библиотек для решения вычислительных задач. Особое внимание уделено решению вычислительных задач высокой точности. Рассмотрены возможности библиотек mpfr и c-xsc. Также представлены программные средства, позволяющие использовать графические возможности gnuplot.
</blockquote>

== Видео ==

{{vimeoembed|156812638|800|450}}
{{youtubelink|}}|cKKJLnkLyjg}}{{letscomment}}
{{oseduconf-2016-draft}}

== Слайды ==
Довольно сложной проблемой при решении инженерных и математических задач является проблема точности вычислений.
Встроенные в язык типы данных не позволяют гарантировать правильность вычислений при арифметических операциях с числами разных порядков.

На сегодняшний день существует несколько подходов для решения этой проблемы.

Авторами рассмотрены два подхода:
* использование  интервального  анализа  для  вычислений,  существует несколько библиотек на С(С++) для реализации интервального анализа [1,2]<ref>Кулиш У., Рац Д., Хаммер Р., Хокс М. Достоверные вычисления. Базовые численные методы.  Москва-Ижевск: РХД, 2005.  496с.
</ref><ref>Шарый С. П.  Конечномерный  интервальный  анализ.  URL:  http://www.nsc.ru/interval/Library/InteBooks/SharyBook.pdf</ref>, одной из них является [http://www.xsc.de C-XSC]. Библиотека имеет открытый исходный код. Имеет возможность работы с комплексными числами, матрицами и векторами. Также имеет ряд типов данных с префиксом <tt>l_</tt>, реализующих вычисления с повышенной точностью в интервалах. Имеется возможность распараллеливания некоторых функций с помощью OpenMP.
* использование  вещественных  чисел  произвольной  точности  — ([http://www.mpfr.org MPFR]) — библиотеки языков С и С++, основанные на GMP. Поддерживает стандарт IEEE-754 для арифметических операций  с  числами  с  плавающей  точкой.  Позволяет  инициализировать переменные с большой точностью, производить с ними арифметические операции, возводить их в степень, находить корень, вычислять логарифм и экспоненту, а также тригонометрические функции и константы. За счет возможности выбора количества бит, отводимое на хранение переменной, можно регулировать точность вычислений.

Одной из проблем при написании вычислительных консольных приложений на С(С++) и Фортране является вывод графиков с результатами работы программы. Для решения этой проблемы предлагается использовать возможности программы GNUPlot. Для этого необходим интерфейс между gfortran, g++, gcc и GNUPlot. В качестве интерфейса между Фортраном и GNUPlot можно предложить [http://www.math.yorku.ca/~akuznets/gnufor2/ gnufor2],
а между С и [https://code.google.com/p/gnuplot-cpp Gnuplot] — gnuplot-cpp.

== Примечания и отзывы ==
<!-- <blockquote>[©]</blockquote> -->

{{fblink|1697329383853409}}                                          
{{vklink|173}}                                          
<references/>

[[Category<!-- topub -->
{{stats|disqus_comments=0|refresh_time=2021-08-31T18:20:33.287745|vimeo_comments=0|vimeo_plays=43|youtube_comments=0|youtube_plays=22}}

[[Категория:OSEDUCONF-2016]]
[[CategoryКатегория:ОбразованиеIT-образование]]
[[CategoryКатегория:Open-source]]

 projects]]
[[Категория:Fortran]]

Текущая версия на 12:23, 4 сентября 2021

Аннотация

Докладчик
Пётр Демин.jpg
Пётр Демин

Представлен опыт совместного использования компиляторов g++, gfortran и свободных математических библиотек для решения вычислительных задач. Особое внимание уделено решению вычислительных задач высокой точности. Рассмотрены возможности библиотек mpfr и c-xsc. Также представлены программные средства, позволяющие использовать графические возможности gnuplot.

Видео

on youtube

Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.


Слайды

Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf Свободные библиотеки в вычислительных задачах (Пётр Демин, OSEDUCONF-2016).pdf

Тезисы

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

Кроме стандартных средств языков программирования, в этих языках реализованы современные технологии параллельного программирования. Это позволяет использовать С и Фортран не только для решения задач на локальном персональном компьютере, но и при реализации задач на вычислительных кластерах.

В современных свободных компиляторах (gcc, g++, gfortran) реализованы все возможности современных языков С и Фортран. Компиляторы gcc, gfortran используются на всех современных кластерах наряду с компиляторами Intel. При решении вычислительных задач пользователь может столкнуться с несколькими проблемами:

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

Имеет смысл использовать свободную научную библиотеку языка С GSL[1] при реализации алгоритмов вычислительной математики.

Библиотека позволяет решать:

  • некоторые задачи линейной алгебры (арифметические операции с матрицами (векторами) и поэлементное произведение, LU- и QR-разложение, нахождение собственных чисел и векторов);
  • задачи локальной оптимизации (метод золотого сечения, метод Брента одномерной оптимизации и градиентные методы многомерной оптимизации Флетчера-Ривса, Полак-Райбьера и др.);
  • задачи статистики (генерация и работа со случайными и квазислучайными последовательностями, нормальное распределение, распределение Пуассона и др);
  • задачи численного интегрирования (в основе метод Гаусса-Кронрода с различным количеством точек, есть алгоритм с исключением особых точек, функция вычисления интеграла для колебательных функций, функция вычисления интеграла Фурье и др.);
  • задачи с комплексными числами(арифметические операции, модуль, аргумент, поиск сопряженного, обратного, противоположного по знаку, возведение в степень, вычисление тригонометрических функций от комплексного числа и др);
  • производить сортировку(пирамидальная сортировка) элементов массива (вектора).

Библиотека GSL предоставляет свой интерфейс для доступа к базовой библиотеке векторных и матричных операций blas. Существует интерфейс для использования библиотеки при написании программ на Фортране.

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

На сегодняшний день существует несколько подходов для решения этой проблемы.

Авторами рассмотрены два подхода:

  • использование интервального анализа для вычислений, существует несколько библиотек на С(С++) для реализации интервального анализа [2][3], одной из них является C-XSC. Библиотека имеет открытый исходный код. Имеет возможность работы с комплексными числами, матрицами и векторами. Также имеет ряд типов данных с префиксом l_, реализующих вычисления с повышенной точностью в интервалах. Имеется возможность распараллеливания некоторых функций с помощью OpenMP.
  • использование вещественных чисел произвольной точности — (MPFR) — библиотеки языков С и С++, основанные на GMP. Поддерживает стандарт IEEE-754 для арифметических операций с числами с плавающей точкой. Позволяет инициализировать переменные с большой точностью, производить с ними арифметические операции, возводить их в степень, находить корень, вычислять логарифм и экспоненту, а также тригонометрические функции и константы. За счет возможности выбора количества бит, отводимое на хранение переменной, можно регулировать точность вычислений.

Одной из проблем при написании вычислительных консольных приложений на С(С++) и Фортране является вывод графиков с результатами работы программы. Для решения этой проблемы предлагается использовать возможности программы GNUPlot. Для этого необходим интерфейс между gfortran, g++, gcc и GNUPlot. В качестве интерфейса между Фортраном и GNUPlot можно предложить gnufor2, а между С и Gnuplot — gnuplot-cpp.

Примечания и отзывы

  1. GNU Scientific Library — http://www.gnu.org/software/gsl/
  2. Кулиш У., Рац Д., Хаммер Р., Хокс М. Достоверные вычисления. Базовые численные методы. — Москва-Ижевск: РХД, 2005. — 496с.
  3. Шарый С. П. Конечномерный интервальный анализ. — URL: http://www.nsc.ru/interval/Library/InteBooks/SharyBook.pdf

Plays:65   Comments:0