Технологические аспекты разработки программного комплекса для решения нестационарных задач математического программирования большой размерности Л.Б. Соколинский.

Презентация:



Advertisements
Похожие презентации
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Advertisements

Лекция 2Лекция 2Структура программы Директивы препроцессора main () { Описания переменных Операторы }
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Часть 1: «Основы программирования». Содержание Основные понятия. Структура программы. Ввод-вывод Программирование циклов. Операторы цикла while, for и.
Время жизни и области видимости программных объектов Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 2 Время жизни и области видимости программных объектов (весенний семестр 2012 г.) Доцент Кафедры вычислительных.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Лекция 1 Введение в программирование и язык C. Машинный код Машинный код или машинный язык система команд (набор кодов операций) конкретной вычислительной.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
В языках высокого уровня обращение к ячейкам памяти происходит не через числовые адреса, а посредством описательных имен. Такие имена называются переменными.
Элементы языка СИ Средства для написания простейших программ.
Лекция 14 Динамические данные. Виды памяти Существует три вида памяти: статическая, стековая и динамическая. Статическая память выделяется еще до начала.
Язык Python Универсальный язык программирования Интерпретируемый язык.
Знакомство с интерфейсом программы Delphi. Отладка простейших программ.
С++ Язык программирования С++ был разработан на основе языка С Бьярном Страуструпом (Bjarne Stroustrup).
ЛЕКЦИЯ 7 КЛАССЫ ПАМЯТИ И ОБЛАСТЬ ДЕЙСТВИЯ ОБЪЕКТОВ.
Методика распараллеливания программ в модели DVM Институт прикладной математики им. М.В.Келдыша РАН
Информационные технологии Классы памяти auto static extern register Автоматические переменные создаются при входе в функцию и уничтожаются при.
Транксрипт:

Технологические аспекты разработки программного комплекса для решения нестационарных задач математического программирования большой размерности Л.Б. Соколинский Челябинский государственный университет

2Проблематика 1. Выбор языка программирования 2. Выбор программно-аппаратной платформы 3. Технология программирования

3 С++ и Си против Фортрана в Windows NT: сравнение быстродействия компиляторов (в секундах)* Windows NT (Pentium III, 700 MHz) * J. M. Bull, L. A. Smith, L. Pottage, R. Freeman Benchmarking Java against C and Fortran for scientific applications // Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande, Palo Alto, California, United States P

4 Си против Фортрана в Linux: сравнение быстродействия компиляторов (в секундах) Linux (Pentium III, 700 MHz)

5 Windows NT против Linux: сравнение быстродействия компиляторов Cи (в секундах) Pentium III, 700 MHz

6 Результаты анализа 1. С++ проигрывает в быстродействии Си в раза 2. Си и Фортран демонстрируют примерно одинаковое быстродействие 3. Си в Linux проигрывает в быстродействии Си в Windows NT (5 - 40%)

7 Программно-аппаратная платформа Язык программирования: Си Платформа: a) кластер под Windows + MPI б) кластер под Linux + MPI в) МВС-1000 (Linux + MPI)

8Проектирование Строгая иерархия (идеал) Нестрогая иерархия (реальность) М1 М11М12М13 М111М112М121М131М132 М1 М11М12М13 М111 М112 М121 М131 М132 + Технологический цикл: –проектирование «сверху-вниз» –кодирование «снизу-вверх» –тестирование «модулями-драйверами» + Допускает эффективный алгоритм локализации ошибок на основе алгоритмов обхода дерева + Хорошая управляемость коллективной разработкой Тест М11

9 Виды модулей Динамические классы используют динамическое выделение памяти (malloc) при создании экземпляров класса. Оптимальны для больших долгоживущих объектов (стек, таблица). Статические классы используют статическое выделение памяти (static) при создании экземпляров класса. Оптимальны для небольших короткоживущих объектов (дескриптор, запись). Модули ОбъектыКлассы СтатическиеДинамические

10 Состав модуля Интерфейс (md_module.h) содержит: –определения экспортируемых констант #define; –определения экспортируемых типов (typedef); –экспортируемые макро-определения #define; –прототипы экспортируемых функций. Реализация (md_module.с) содержит: –#include md_module.h –определения внутренних глобальных констант #define; –определения внутренних типов (typedef); –определения внутренних глобальных static переменных; –прототипы внутренних функций. –внутренние глобальные макро-определения #define; –определения экспортируемых функций. –определения внутренних функций. Импорт модуля: #include md_module.h Интерфейс: md_module.h Реализация: md_module.c

11 Именование модуля nick_name md_module nick – краткое имя модуля (1-2 символа) name – полное имя модуля Примеры: st_stack, tr_tree

12 Примеры модулей 1. Класс stock (склад) Интерфейс st_stock.hst_stock.h Реализация st_stock.сst_stock.с 2. Объект queue (очередь) Реализация q_queue.сq_queue.с

13Идентификаторы ОбъектЭкспортируемый Внутренний ГлобальныйЛокальный Константа #define MD_WRD 1 _WRD 2 _WRD 1 _WRD 2 WRD 1 _WRD 2 1) Макро #define MD_WRD 1 _WRD 2 ( )_WRD 1 _WRD 2 ( )WRD 1 _WRD 2 ( ) 1) Переменная _wrd 1 Wrd 2 2) wrd 1 Wrd 2 Функцияmd_wrd 1 Wrd 2 ( )_wrd 1 Wrd 2 ( ) 2) Типmd_wrd 1 Wrd 2 _t_wrd 1 Wrd 2 _t 1) Обязательно использовать в паре с #undef 2) Описывается как static md – краткое имя модуля, содержащего определение объекта wrd – английское слово (допускаются сокращения)

14 Использование макросов #define MAX(x,y) (? x>y : x, y) /* Вычисление максимума двух целых чисел */ int max(int x, int y){ if (x>y) return x; else return y; }; Используется для реализации простых функций, которые вызываются многократно (в циклах или рекурсии) + эффективность - проблемы при использования отладчика

15 Аномалии при использовании #define #define DIV(x,y) x-y a=3; b=1; c= DIV(3,1)*0; /* получим c=3 */ Решение проблемы: #define DIV(x,y) (x-y) a=3; b=1; c= a-b*0; /* получим c=3 */

16Лесенка Отступ для вложенных операторов – 3 позиции [tab] Элементы одного и того же оператора начинаются с одной и той же позиции. Примеры.