Николай Варанкин - Программы - Мыслитель™
 Кратко   Программы   Контакты   Обо мне   Новости   LinkedIn™   Quora™ 

📚 Вычисления

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

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

Поскольку Мыслитель является приложением Java¹, его параллельные вычисления основаны на технологии ExecutorService этого языка. Это позволяет использовать столько виртуальных процессоров, сколько необходимо. Соотношение доступных математических аппаратных ядер и количества активных потоков определяет степень параллелизма во время выполнения. Предполагается, что некоторые процессы выполняются параллельно, а другие остаются в очереди в ожидании доступного оборудования.

В среде выполнения Мыслителя по умолчанию всегда имеется доступная служба ExecutorService. Кроме того, модель может включать в себя столько отдельных сервисов (называемых в модели «процессорами»), сколько необходимо для любой части иерархии проекта. Как основной, так и дополнительный процессоры имеют средства управления выполнением сервисов. Назначенный сервис Java может запускать (перезапускать) вычисления, быть приостанавленным или полностью завершенным. Все дополнительные процессоры управляются независимо. Элементы управления основным процессором воздействуют на весь набор процессоров. То же самое делают и элементы управления проектом в рамках его собственного содержимого.

Каждый процессор Мыслителя работает по принципу², напоминающему обслуживание официантом в ресторане. Он принимает «заказы» от выделенных вычислительных точек, помещает их в очередь и возвращает результат в порядке выполнения. Эту стандартную политику можно изменить, если используется класс процессора по умолчанию. Заказы, что естественно, могут дублироваться в очереди. Настройки процессора позволяют объединять одни и те же заказы в один до тех пор, пока не встретится другой заказ. Или все дублированные заказы можно удалить из всей очереди. Эти отклонения могут значительно улучшить производительность, если такая политика приемлема с точки зрения логики модели. Другая функция позволяет отложить момент фактической обработки до тех пор, пока не произойдет определенное событие: истечет тайм-аут или в очереди накопится достаточно заказов. Это позволяет компенсировать часто встречающееся на практике десинхронизированное поступление значений в аргументы функции.

Настольный вариант Мыслителя создает модель времени выполнения со всеми наблюдаемыми элементами. Когда конкретный элемент получает новое значение или меняет свой статус, все слушатели элемента немедленно получат это обновление. График временной шкалы на вкладке «Анализатор» и всплывающее окно «Свойства» являются примерами таких слушателей. Для особых случаев применения Мыслитель может генерировать ненаблюдаемую модель времени выполнения с целью повышения общей производительности обработки. В любом случае, эта модель по-прежнему может взаимодействовать с внешним миром через специальные классы Java, прикрепленные к элементу field.

 

 

Примечания:

  1. Программное обеспечение версии 2.X создано с использованием SDK Java версии 15, что в основном является ограничением, унаследованным от используемой версии базы данных Neo4j.
  2. Ожидается получение патента ЕС.

Разделы
Заказать
Учебники