Использование компиляторов языка Фортран при решении вычислительных задач (Вячеслав Стародумов, OSEDUCONF-2018) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
В очень многих вычислительных задачах необходимо выполнять матричные операции. Самой затратной матричной операцией является операция умножение матриц\footnote{Частным случаем матричного умножения являются "--- умножение матрицы на вектор и скалярное произведение векторов.}. Авторами была проанализирована эффективность умножения матриц на современном Фортране. В Фортране присутствует встроенная подпрограмма умножения матриц matmul, в последней версии gfortran (gfortran-7) функция значительно оптимизирована. В таблице~\ref{aer-tbl00} приведены результаты времени выполнения программ, реализующих классический и блочный алгоритмы умножения матриц и подпрограммы matmul. \begin{table} \begin{center} \tabcolsep=0.2em\scriptsize \caption{\scriptsize Быстродействие программ (время, с), реализующих классический и блочный алгоритмы на Фортране с использованием свободных и проприетарных компиляторов}\label{aer-tbl00} \begin{tabular}{|l|p{0.13\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.12\textwidth}|p{0.12\textwidth}|}\hline & &\multicolumn{6}{p{0.42\textwidth}|}{Классический алгоритм, порядок выполнения циклов} &\multicolumn{1}{p{0.12\textwidth}|}{Блочный алгоритм (размер блока 16)} &\multicolumn{1}{p{0.12\textwidth}|}{matmul} При написании последовательных приложений решения задач вычислительной математики использование конвейерных операций позволяет значительно повысить быстродействие приложений. Авторами было проведено тестирование метода Зейделя и метода простой итерации (см. табл.~3, k "--- количество итераций, 1 "--- программа с использованием циклов, 2 "--- программа с использованием конвейерных операций). \begin{table} \begin{center} \tabcolsep=0.2em\scriptsize \caption{\scriptsize Время счёта программ решения СЛАУ итерационными методами.}\label{aer-tbl02} \begin{tabular}{|p{0.15\textwidth}|p{0.15\textwidth}|p{0.06\textwidth}|p{0.06\textwidth}|p{0.06\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|p{0.1\textwidth}|} \hline Размерность системы &Компилятор &\multicolumn{3}{c|}{Метод Зейделя} &\multicolumn{3}{c|}{Метод простой итерации}\\\hhline{~~------} & &\multicolumn{1}{c|}{k} &\multicolumn{1}{c|}{1} &\multicolumn{1}{c|}{2} &\multicolumn{1}{c|}{k} &\multicolumn{1}{c|}{1} &\multicolumn{1}{c|}{2}\\\hline Однако можно ускорить алгоритм Зейделя при написании кода на Фортране, используя операцию матричного умножения matmul.
На каждой итерации можно предварительно умножать фрагмент матрицы на вектор $x$. Это позволит сократить время счёта.
Платой за это будет память для хранения второй матрицы размерности $n\times n$. Ниже приведены результаты сравнения
быстродействия обычного и усовершенствованного метода Зейделя и метода простой итерации.
\begin{table}
\begin{center}
\tabcolsep=0.2em\scriptsize
\caption{\scriptsize Быстродействие метода Зейделя, усовершенствованного метода Зейделя и метода простой итерации.}\label{aer-tbl03}
\begin{tabular}{|p{0.17\textwidth}|p{0.2\textwidth}|p{0.17\textwidth}|p{0.17\textwidth}|p{0.17\textwidth}|}\hline
Размерность системы &Компилятор &\multicolumn{2}{c|}{Метод Зейделя} &Метод простой итерации\\\hhline{~~--~}
& &обычный &\multicolumn{1}{p{0.2\textwidth}|}{усовершенство\-ванный} &\\\hline
10000 &gfortran &3.57 &2.61 &2.32\\\hhline{~----} Современные компиляторы Фортрана позволяют разрабатывать высокоэффективный код решения вычислительных задач с использованием современных технологий. Самые новые технологии параллельного программирования полноценно поддерживаются на сегодняшний день только проприетарными компиляторами. При разработке последовательных и параллельных приложений имеет смысл использовать последние версии свободного компилятора gfortran, который генерирует самый быстрый код при работе с матрицами. </latex> {{LinksSection}} <!-- <blockquote>[©]</blockquote> --> <references/> {{stats|disqus_comments=0|refresh_time=2021-08-31T17:08:23.735260|vimeo_plays=47|youtube_comments=1|youtube_plays=1055}} [[Категория:OSEDUCONF-2018]] [[Категория:Open-source projects]] [[Категория:Fortran]] [[Категория:СПО в образовании]]науке]] [[Категория:High Performace Computing]] |
Текущая версия на 14:33, 5 сентября 2021
- Докладчик
- Вячеслав Стародумов
Представлен обзор основных возможностей современных компиляторов (gfortran, ifort) языка Фортрана при решении вычислительных задач.
Содержание
Видео
Посмотрели доклад? Понравился? Напишите комментарий! Не согласны? Тем более напишите.
Презентация
Thesis
Примечания и ссылки
Plays:1102
Comments:1