не хватает одного параметра: static void Main(string[] args) |
Программные проекты на C#
Предлагаемые программные проекты на C# построены по материалам курса по "Параллельным вычислениям". Проекты написаны по завершении работы над текстом курса и поэтому реализация может отличаться от той, что дана в тексте курса. В некоторых проектах появились методы, не описанные в тексте лекций. С другой стороны не все задачи, рассмотренные в ходе лекций, нашли отражение в предлагаемых проектах.
Проекты являются важным дополнительным материалом к курсу лекций. Размещение их на сайте преследует три цели:
- Дают возможность изучать работающий код. Для программистов код зачастую важнее текста.
- Позволяют проводить исследование эффективности последовательных и параллельных алгоритмов в разных условиях и на разных компьютерах.
- Являются источником для модификации кода и написания собственных проектов. По согласованию с автором интересные проекты, разработанные читателями курса, могут быть размещены на сайте, способствуя развитию курса.
Проекты, связанные единой тематикой, объединены в Решения (Solution):
- Решение Sum объединяет проекты по теме суммирования;
- Решение Integral связано с задачей вычисления определенного интеграла;
- Решение Sorting объединяет проекты, реализующие различные методы сортировки;
- Решение TasksAndInstruments объединяет проекты, позволяющие анализировать проблемы гонки данных, клинча и способы преодоления этих проблем.
- Решение Game15 исследует важную тему взаимодействия управляющего и управляемого процессов, работающих в разных потоках. Оно представляет реализацию известной игры 15 и обладает чертами полноценного приложения с развитым интерфейсом, меню, файлами и другими атрибутами реальных приложений.
Суммирование. Описание Решения (Solution) Sum
Задача суммирования
Задача вычисления суммы является классической задачей математики и программирования. При рассмотрении параллельных вычислений ей уделяется большое внимание.
Решение Sum содержит проекты, позволяющие провести сравнительный анализ эффективности последовательных и параллельных алгоритмов вычисления суммы. Построенные проекты позволяют также оценить эффективность инструментальных средств, реализующих в программах на C# параллельные вычисления.
В проектах рассматриваются три варианта вычисления суммы, где это :
- элементы массива;
- элементы бесконечного сходящегося ряда;
- элементы конечного ряда, представляющие значение некоторой функции .
Анализируются три варианта параллельных алгоритмов вычисления суммы – пирамидальный, сегментный и шаговый. Рассматриваются также различные вариации инструментария, реализующего параллельные вычисления:
- метод For класса Parallel;
- потоки – объекты класса Thtead;
- задачи – объекты класса Task.
Проекты, включенные в Решение Sum, следует рассматривать как дополнение, полезное при изучении материалов главы 3 (раздел "Суммирование") и глав 4 -7 учебника "Параллельные вычисления и многопоточное программирование.
Структура Решения Sum
Решение Sum содержит 5 проектов. Следуя принципу разделения интерфейса и бизнес-логики, содержательная часть реализована в проекте ClassLibrarySum, представляющего динамическую библиотеку классов. Эта библиотека содержит три класса – Massiv, Infinite_Series, Function_Sum. Каждый из этих классов содержит методы , реализующие последовательные и параллельные алгоритмы для трех изучаемых проблем – суммирования элементов массива, сходящихся рядов и конечных сумм, элементы которых заданы значениями функций.
Четыре проекта, входящие в Решение Sum, являются интерфейсными проектами. Три из них – ConsoleMassive_Sum, ConsoleArcSin и ConsoleFunction_Sum реализуют консольный интерфейс. Каждый из этих трех проектов позволяет в консоли анализировать три изучаемые проблемы. Четвертый интерфейсный проект – WindowsFormSum представляет классическое Windows Form приложение с главной формой и тремя формами, спроектированными для анализа рассматриваемых проблем.