Программирование вычислительных задач

Версия для печатиВерсия для печати

Аннотация

Основная цель курса — обучение эффективному использованию программного обеспечения общего и специального назначения для решения больших научно-исследовательских задач, требующих интенсивного применения методов вычислительной математики и мощных вычислительных ресурсов. Материал курса готовит слушателя к профессиональной самостоятельной работе на всех основных этапах решения сложной вычислительной задачи: выбор вычислительной среды и алгоритмического языка; программирование ресурсоемких алгоритмов, включая организацию параллельных вычислений; использование средств автоматизации программирования, проведения вычислительного эксперимента, визуализации и анализа данных; представление результатов исследований. Освещены вопросы самостоятельного построения производительной вычислительной системы на основе легко доступных, в том числе бесплатных, программных средств и широко распространенной компьютерной техники. Изложены принципы программирования численных методов, выработанные практикой за последние десятилетия, разобраны созданные профессионалами классические примеры программ на языках Фортран и Си. Во всех разделах курса акцент поставлен на стороны, открывающие новые возможности для повышения эффективности работы исследователя-программиста. Предусматривается постоянная адаптация курса к современному состоянию дел в области разработки программного обеспечения и технологий для решения больших вычислительных задач.

Общая информация

Курс 3
Семестр 5
Форма контроля Экзамен в 5 семестре, зачет в 5 семестре
Аудиторных часов Лекции — 36 часов, семинары — 36 часов
Лектор 2007/08 уч.г. профессор Зайцев Ф. С.
Автор учебного курса профессор Зайцев Ф. С.

Тематический план курса

Название темы Лекции
(час.)
Семинары
(час.)
Самостоят.
работа (час.)
1 Введение. Общая характеристика технологии решения вычислительных задач на ЭВМ. 1 0 1
2 Использование UNIX для решения прикладных задач. 8 8 16
3 Программирование численных алгоритмов. 12 13 25
4 Создание ресурсоемких вычислительных программ. 8 8 16
5 Средства автоматизации решения больших вычислительных задач. 5 5 10
6 Публикация результатов исследований. 2 2 4
Итого: 36 36 72
Всего: 144

Содержание курса

  • Введение. Общая характеристика технологии решения вычислительных задач на ЭВМ. Математическое моделирование и вычислительный эксперимент. Основные этапы технологической цепочки решения больших задач на ЭВМ. Общее и специальное программное обеспечение.
  • Использование Linux для решения прикладных задач. Краткий обзор и сравнение операционных систем (ОС) с точки зрения пользователя-вычислителя. Самостоятельная установка ОС Linux и настройка ее основных служб и компонент, включая организацию сетевых соединений. Элементы системного администрирования. Использование программного обеспечения, входящего в дистрибутивы Linux и поставляемого отдельно: редакторы, компиляторы, системы для разработки, отладки и испытания программ, графика, эмуляторы других ОС. Способы организации длительных расчетов средствами OC Linux. Основное внимание уделено обсуждению программного обеспечения, близкие версии которого работают, как на персональных компьютерах, так и на больших машинах.
  • Программирование численных алгоритмов. Основные вопросы технологии программирования численных алгоритмов. Приемы, позволяющие повысить эффективность разработки, поддержки и применения программного обеспечения. Обзор языков программирования. Рекомендации по использованию. Элементы технологии программирования. Типичные ошибки при программировании. Специфика программирования численных методов и язык Фортран. Структурное программирование и Фортран. Некоторые соглашения в Фортране для научных расчетов. Типичные ошибки в программах на Фортране. Специфика программирования численных методов и язык Си. Структурное программирование и Си. Некоторые соглашения в Си для научных расчетов. Об ошибках в программах на Си. Примеры программирования численных алгоритмов. Задача о приближении функций многочленами Чебышева, теоретические сведения, оптимизация вычислений. Программы на Cи, Фортране 77, 95, 2003. Анализ и сравнение программ. Разбор программ по стилю, эффективности, расширяемости, возможным ошибкам, удобству использования. Другие примеры численных алгоритмов и их программной реализации. Объектно-ориентированный подход в программировании численных алгоритмов. Обзор коммерческих и свободно распространяемых библиотек программ, реализующих численные методы. Ресурсы в Internet.
  • Особенности программирования на Фортране 2003. Основные возможности современных версий языка Фортран, позволяющие эффективно решать большие вычислительные задачи, как на последовательных, так и на параллельных и конвейерных архитектурах. Особенности языков Фортран 95 и 2003: концепции языка, массивы и сечения, встроенные процедуры, расширенные возможности, реализация основных принципов объектного подхода. Фортран 95/2003 и параллельные архитектуры. Параллелизм данных: массивы и встроенные процедуры. Примеры. Обзор и краткая характеристика компиляторов Фортран (g95, Compaq Visual Fortran, Intel Fortran, Absoft Fortran, High Performance Fortran, f2c).
  • Системы автоматизации разработки, отладки и испытания программ. MS Developer Studio для MS Windows (или аналог). C-Forge для Linux (или аналог). Настройка. Приемы работы. Поиск ошибок. Примеры. Методы анализа ресурсоемкости программ. Методы повышения скорости работы программы и оптимизации использования оперативной памяти.
  • MPI-распараллеливание алгоритмов. Краткий обзор параллельных вычислительных систем. Законы Амдала. Общая характеристика технологии MPI: концепция и основные приемы использования. Опыт применения технологии MPI для решения больших практических задач, основные принципы. Оптимальная пересылка многомерных массивов. Примеры и анализ программ. Работа с MPI-пакетом MPITCH в Linux и MS Windows: установка, настройка, использование. Самостоятельная организация MPI-вычислений в сети разнотипных компьютеров. Использование технологии распределенных вычислений Grid.
  • Средства автоматизации решения больших вычислительных задач. Пакетная технология. Объектная технология. Основные понятия. Классификация пакетов прикладных программ. Пакеты-конструкторы прикладных программ. Графические интерфейсы. Возможности JAVA. Распределение независимых вычислений. Хранение данных расчетов, пакеты NetCDF, IDA. Представление данных. Развитие систем автоматизации. Современные средства визуализации данных: общая характеристика и примеры работы с пакетами Gnuplot, Grapher, Surfer, Array Visualizer, IDL, Origin и другими. Компьютерные средства автоматизации численных и аналитических расчетов: MathCAD, MathLab, Mapple — общая характеристика и особенности. Приложение к большим вычислительным задачам. Анимация данных. Представление данных в Internet.
  • Публикация результатов исследований. Подготовка научных публикаций. Структура научной статьи. Краткая характеристика системы Latex и ее программных реализаций. Пример типичного Latex-документа. Пакеты: MikTex, Gsview, WinEdt, Scientific Word. Установка, настройка, русификация. Технология продвижения научно-технической информации в Internet.

Практические занятия

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

Литература

Основная литература:

  1. Такет. Д., Гантер Д. Использование Linux. Полное справочное руководство. - М.: Изд-во "Вильямс", 1998 (3-е издание), 1999 (4-е издание).
  2. Карлинг М., Деглер С., Деннис Д. Системное администрирование Linux. - М.: Изд-во "Вильямс", 2000.
  3. Press W.H., et. al. Numerical Recipes in Fortran 77: The Art of Scientific Computing. Vol. 1 of Fortran Numerical Recipes. Cambridge University Press. 1997.
  4. Press W.H., et. al. Numerical Recipes in Fortran 90: The Art of Parallel Scientific Computing. Vol. 2 of Fortran Numerical Recipes. Cambridge University Press. 1997.
  5. Press W.H., et. al. Numerical Recipes. The Art of Scientific Computing. C version. Cambridge University Press. 1990.
  6. Ф.С. Зайцев. Математическое моделирование эволюции тороидальной плазмы. - Москва: МАКС Пресс, 2005.
  7. Немнюгин М.А., Стесик О.Л. Современный Фортран. Самоучитель. - Санкт-Петербург: БХВ-Петербург, 2004.
  8. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. - М.: Мир, 1985.
  9. Шнейдерман Б. Психология программирования. - М.: Радио и связь, 1984.
  10. Боровин Г.К., Комаров М.М., Ярошевский В.С. Ошибки-ловушки при программировании на ФОРТРАНе. - М.: Наука, 1987.
  11. Т. Бадд. Объектно-ориентированное программирование в действии. - Санкт-Петербург: Питер, 1997.
  12. Информатика. Под ред. Н.В. Макаровой. - М: Финансы и статистика, 1997.
  13. В.В. Воеводин, Вл.В. Воеводин. Параллельные вычисления. БХВ-Петербург, 2002.
  14. A portable MPI implementation MPICH: http://www-unix.mcs.anl.gov/mpi/mpich/.
  15. Горбунов-Посадов М.М., Корягин Д.А., Мартынюк В.В. Системное обеспечение пакетов прикладных программ. - М.: Наука, 1990.
  16. Горбунов-Посадов М.М.. Расширяемые программы. - М.: МАЛИП, 1994.
  17. Легоньков В.И. О построении программного обеспечения вычислительного эксперимента // Алгоритмы и алгоритмические языки. Пакеты прикладных программ. Вычислительный эксперимент. - М.: Наука, 1983, с. 86-101.
  18. Дьяконов В.П. Справочник по MathCAD PlUS 7.0 PRO. - М.: СК Пресс, 1998.
  19. Плис А.И., Сливина Н.А. MATHCAD: математический практикум. - М.: Финансы и статистика, 1999.
  20. Дьяконов В.П. Абраменкова И.В. Mathlab5. Система символьной математики - М.: Нолидж, 1999.
  21. Говорухин В.Н., Цибулин. Введение в Maple. Математический пакет для всех. - М.: Мир, 1997.
  22. Дьяконов В.П. Математическая система Maple V R3/R4/R5. - М.: Солон, 1998.
  23. Львовский С.М. Набор и верстка в пакете LaTeX. - М: Космосинформ, 1994.
  24. Котельников И., Чеботаев П. Издательская система LaTeX 2e. - Новосибирск: Сибирский хронограф, 1998.

Дополнительная литература:

  1. Рейчард. К., Фолькердинг П. Linux. Справочник. - Санкт-Петербург: Изд-во "Питер", 1999.
  2. Немет. Э. и др. UNIX. Руководство системного администратора. - Киев: Изд-во BHV, 1997.
  3. Ивановский С. Операционная система Linux. Справочное руководство пользователя ПК. - М.: Изд-во "Познавательная книга плюс", 2000.
  4. Керниган Б.В., Пайк Р. UNIX - универсальная среда программирования. - М.: Финансы и статистика, 1992.
  5. Баурн С. Операционная система UNIX. - М.: Мир, 1986.
  6. Светоглазова Г.И., Козловский А.В., Сигитов Е.В. Современные методы программирования в примерах и задачах. - М.: Наука. Физматлит, 1995.
  7. Меткалф М., Рид Дж. Описание языка программирования ФОРТРАН 90. - М.: Мир, 1995.
  8. ФОРТРАН 90. Международный стандарт. - М.: Финансы и статистика, 1998.
  9. Керниган Б.В., Ритчи Д. Язык программирования Си. - М.: Финансы и статистика, 1992.
  10. Страутструп Б. Язык программирования Си++. - М.: Радио и связь, 1991.
  11. Шаммас Н.К. Си++ и объектно-ориентированное программирование. - Киев: Диалектика, 1996.
  12. Lamport L. LaTeX: A Document Preparation System. Addison-Wesley Publishing Company, 1986.
  13. Кнут Д.Е. Все про TeХ . - Протвино: АО RDTeX, 1993.