Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2015, 13:28   #1
DedocSV
Новичок
Джуниор
 
Регистрация: 02.10.2015
Сообщений: 1
По умолчанию Юниты. Инструмент параллельного программирования

Юниты
Юнит есть исполняющаяся в потоке на физически отдельном ядре совокупность методов, подчиняющаяся правилам взаимодействия и существования в системе как целое. Юнит является отдельным потоком, циклически реализующим в системе несколько методов. Методы передаются юниту в качестве входных параметров метода инициации юнита. Параметры функции инициализации юнита должны быть уникальными; два любых юнита не могут исполнять один и тот же экземпляр метода. Для исполнения одного метода в нескольких юнитах одновременно следует создать оператором new соответствующее количество экземпляров этого метода.




Логические особенности исполняющей системы

Юниты выполняются только в связанной системе, методы одиночного юнита (без связей) не исполняются. Для выполнения одиночного юнита, его следует определить как юнит чистый сервер и добавить связь с незаполненным функциональностью юнитом клиентом (заглушку). С логической точки зрения инициация взаимодействия сети юнитов выполняется клиентом. Однако, логика работы клиента построена так, что функционирование начинается при наличии сигнала готовности сервера. Это приводит к тому, что реально инициацию выполнит юнит чистый сервер. При отсутствии методов у юнита, логика его работы определенная статусом юнита не изменяется, пропускается только функциональная часть работы юнита.





Юнит сервер, связанный с несколькими клиентами перед выполнением метода F3 ожидает сигналов готовности от всех клиентов. Выполнение метода начинается после того как каждый клиент передаст сигнал готовности. Синхронизация подобного исполнения методов реализуется исполняющей системой и прозрачна для пользователя.




Технические особенности исполняющей системыФизически каждый юнит исполняется строго на одном ядре многоядерного процессора. Операционная система не в состоянии перебросить исполнение методов юнита на другое ядро. Юниты выполняются на многоядерных процессорах таким образом, что не занимают ядро процессора с номером - 0. Такой подход принят в намерение добиться максимальной производительности исполняющей системы. В случае если исполнение методов могло бы осуществляться операционной системой на различных ядрах процессора, происходила бы потеря данных хранящихся в кеш L2. Возобновление исполнения методов потребует затрат времени на воссоздание информационной обвязки метода применительно к новому ядру, что неминуемо повлияет на производительность системы в целом.





Загрузка ЦП без перемещения потоков



Загрузка ЦП с перемещением потоков.

Потребность - не занимать исполняющей системой нулевое ядро процессора - обусловлена соображением обеспечения максимальной реактивности операционной системы относительно возникающих в исполнительной среде программных и аппаратных прерываний. Операционная система всегда должна иметь в своем распоряжении одно физическое ядро. На рисунках графически показан характер занятости ядер ЦП при отсутствии перемещения потоков и со свободным перемещением между ядрами в условиях одинаковой вычислительной нагрузки. Потоки, реализуемые исполнительной системой, не занимают нулевое ядро, однако, главный поток программы (точка входа метода main)может использовать нулевое ядро.

Исполняющая среда для ОС Windows способна задействовать от 8 до 64 ядер процессора. Ограничение на количество юнитов не налагается и определяется практической целесообразностью. Современные процессоры способны одновременно выполнять методы нескольких тысяч юнитов.

Программное обеспечение исполняющей среды представлено классами пространства имен – BindingAndServiceParallel.

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

Полная документация, библиотека классов и пример хранятся
sites.google.com/site/algonauts/Home/fajly
в файлах DocCoreParallel.docx, BindingAndServiceCoreParallel_dll.d ll, main.cs.

Пример компилируется в среде Visual Studio 2010 Express на 64-х битной платформе. При компиляции проекта следует добавить ссылки:

BindingAndServiseCoreParallel_dll
PresentationCore
PresentationFramework
System
System.Xaml
WindowsBase

Библиотеку классов BindingAndServisCoreParallel_dll версия сборки 0.0.0.1 можно использовать без ограничения в любых целях.
DedocSV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аппроксимация сплайнами с использованием параллельного программирования(Delphi) + отчет Deathcube Помощь студентам 0 14.02.2012 06:09
средства параллельного программирования в Win32 ELL Помощь студентам 4 22.01.2010 19:14
Разбить dpr на юниты Alex Cones Общие вопросы Delphi 5 08.11.2009 16:40